projen 0.103.27 → 0.104.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 (173) hide show
  1. package/.jsii +375 -83
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/awscdk/private/feature-flags-v2.const.d.ts +1 -1
  18. package/lib/awscdk/private/feature-flags-v2.const.js +2 -2
  19. package/lib/build/build-workflow.js +1 -1
  20. package/lib/cdk/auto-discover-base.js +2 -2
  21. package/lib/cdk/construct-lib.js +1 -1
  22. package/lib/cdk/integration-test-base.js +1 -1
  23. package/lib/cdk/jsii-build.js +1 -1
  24. package/lib/cdk/jsii-docgen.js +1 -1
  25. package/lib/cdk/jsii-project.js +1 -1
  26. package/lib/cdk8s/auto-discover.js +2 -2
  27. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  28. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  29. package/lib/cdk8s/cdk8s-construct.js +1 -1
  30. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  31. package/lib/cdk8s/cdk8s-deps.js +1 -1
  32. package/lib/cdk8s/integration-test.js +1 -1
  33. package/lib/cdktf/cdktf-construct.js +1 -1
  34. package/lib/cdktn/cdktn-app-ts.js +1 -1
  35. package/lib/cdktn/cdktn-config.js +1 -1
  36. package/lib/cdktn/cdktn-construct.js +1 -1
  37. package/lib/cdktn/cdktn-deps.js +1 -1
  38. package/lib/cdktn/cdktn-tasks.js +1 -1
  39. package/lib/circleci/circleci.js +1 -1
  40. package/lib/circleci/model.d.ts +5 -2
  41. package/lib/circleci/model.js +1 -1
  42. package/lib/component.js +2 -2
  43. package/lib/dependencies.js +1 -1
  44. package/lib/dev-env.js +1 -1
  45. package/lib/docker-compose/docker-compose-service.js +1 -1
  46. package/lib/docker-compose/docker-compose.js +1 -1
  47. package/lib/file.js +1 -1
  48. package/lib/gitattributes.js +1 -1
  49. package/lib/github/actions-provider.js +1 -1
  50. package/lib/github/actions.const.js +1 -1
  51. package/lib/github/auto-approve.d.ts +41 -1
  52. package/lib/github/auto-approve.js +66 -17
  53. package/lib/github/auto-merge.js +1 -1
  54. package/lib/github/auto-queue.js +1 -1
  55. package/lib/github/dependabot.js +1 -1
  56. package/lib/github/dependency-review.js +1 -1
  57. package/lib/github/github-credentials.js +1 -1
  58. package/lib/github/github-project.js +1 -1
  59. package/lib/github/github.js +1 -1
  60. package/lib/github/index.d.ts +1 -0
  61. package/lib/github/index.js +2 -1
  62. package/lib/github/merge-queue.js +1 -1
  63. package/lib/github/mergify.js +1 -1
  64. package/lib/github/pr-template.js +1 -1
  65. package/lib/github/pull-request-backport.js +1 -1
  66. package/lib/github/pull-request-lint.js +3 -3
  67. package/lib/github/pull-request-source.d.ts +71 -0
  68. package/lib/github/pull-request-source.js +84 -0
  69. package/lib/github/stale.js +1 -1
  70. package/lib/github/task-workflow-job.js +1 -1
  71. package/lib/github/task-workflow.js +1 -1
  72. package/lib/github/workflow-actions.js +1 -1
  73. package/lib/github/workflow-jobs.js +1 -1
  74. package/lib/github/workflow-steps.js +1 -1
  75. package/lib/github/workflows.js +1 -1
  76. package/lib/gitlab/configuration.js +2 -5
  77. package/lib/gitlab/gitlab-configuration.js +1 -1
  78. package/lib/gitlab/nested-configuration.js +1 -1
  79. package/lib/gitpod.js +1 -1
  80. package/lib/ignore-file.js +1 -1
  81. package/lib/ini.js +1 -1
  82. package/lib/java/java-project.js +1 -1
  83. package/lib/java/junit.js +1 -1
  84. package/lib/java/maven-compile.js +1 -1
  85. package/lib/java/maven-packaging.js +1 -1
  86. package/lib/java/maven-sample.js +1 -1
  87. package/lib/java/pom.js +2 -2
  88. package/lib/java/projenrc.js +1 -1
  89. package/lib/javascript/biome/biome.js +1 -1
  90. package/lib/javascript/bundler.js +1 -1
  91. package/lib/javascript/eslint.js +1 -1
  92. package/lib/javascript/jest.js +4 -4
  93. package/lib/javascript/license-checker.js +1 -1
  94. package/lib/javascript/node-config-file.js +1 -1
  95. package/lib/javascript/node-native-test-runner.js +2 -2
  96. package/lib/javascript/node-package.js +1 -1
  97. package/lib/javascript/node-project.js +3 -3
  98. package/lib/javascript/npm-config.js +1 -1
  99. package/lib/javascript/pnpm-workspace-config.js +2 -2
  100. package/lib/javascript/pnpm-workspace.js +1 -1
  101. package/lib/javascript/prettier.js +1 -1
  102. package/lib/javascript/projenrc.js +1 -1
  103. package/lib/javascript/typescript-config.js +2 -2
  104. package/lib/javascript/upgrade-dependencies.js +2 -2
  105. package/lib/javascript/yarnrc.js +1 -1
  106. package/lib/json-patch.js +1 -1
  107. package/lib/json.js +1 -1
  108. package/lib/license.js +1 -1
  109. package/lib/logger.js +1 -1
  110. package/lib/makefile.js +1 -1
  111. package/lib/object-file.js +1 -1
  112. package/lib/polaris/coverity-go.js +1 -1
  113. package/lib/polaris/coverity-java.js +1 -1
  114. package/lib/polaris/coverity-javascript.js +1 -1
  115. package/lib/polaris/coverity.js +1 -1
  116. package/lib/project-build.js +1 -1
  117. package/lib/project-tree.js +1 -1
  118. package/lib/project.js +1 -1
  119. package/lib/projects.js +1 -1
  120. package/lib/projenrc-json.js +1 -1
  121. package/lib/projenrc.js +1 -1
  122. package/lib/properties-file.js +1 -1
  123. package/lib/python/pip.js +1 -1
  124. package/lib/python/poetry.js +2 -2
  125. package/lib/python/projenrc.js +1 -1
  126. package/lib/python/pyproject-toml-file.js +1 -1
  127. package/lib/python/pytest-sample.js +1 -1
  128. package/lib/python/pytest.js +1 -1
  129. package/lib/python/python-project.js +1 -1
  130. package/lib/python/python-sample.js +1 -1
  131. package/lib/python/requirements-file.js +1 -1
  132. package/lib/python/setuppy.js +1 -1
  133. package/lib/python/setuptools.js +1 -1
  134. package/lib/python/uv-config.js +1 -1
  135. package/lib/python/uv.js +1 -1
  136. package/lib/python/venv.js +1 -1
  137. package/lib/readme.js +1 -1
  138. package/lib/release/publisher.js +1 -1
  139. package/lib/release/release-trigger.js +1 -1
  140. package/lib/release/release.js +3 -2
  141. package/lib/renovatebot.js +1 -1
  142. package/lib/run-task.cjs +6 -6
  143. package/lib/sample-file.js +2 -2
  144. package/lib/script-runner.js +1 -1
  145. package/lib/sonarqube/javascript.js +1 -1
  146. package/lib/sonarqube/rust.js +1 -1
  147. package/lib/sonarqube/sonarqube.js +1 -1
  148. package/lib/sonarqube/typescript.js +1 -1
  149. package/lib/source-code.js +1 -1
  150. package/lib/task-shell.js +1 -1
  151. package/lib/task.js +1 -1
  152. package/lib/tasks.js +1 -1
  153. package/lib/testing.js +1 -1
  154. package/lib/textfile.js +1 -1
  155. package/lib/toml.js +1 -1
  156. package/lib/typescript/projenrc-ts.js +1 -1
  157. package/lib/typescript/projenrc.js +1 -1
  158. package/lib/typescript/typescript-runner.js +1 -1
  159. package/lib/typescript/typescript-typedoc.js +1 -1
  160. package/lib/typescript/typescript.js +5 -5
  161. package/lib/version.js +2 -2
  162. package/lib/vscode/devcontainer.js +1 -1
  163. package/lib/vscode/extensions.js +1 -1
  164. package/lib/vscode/launch-config.js +1 -1
  165. package/lib/vscode/settings.js +1 -1
  166. package/lib/vscode/vscode.js +1 -1
  167. package/lib/web/next.js +3 -3
  168. package/lib/web/postcss.js +1 -1
  169. package/lib/web/react.js +3 -3
  170. package/lib/web/tailwind.js +1 -1
  171. package/lib/xmlfile.js +1 -1
  172. package/lib/yaml.js +1 -1
  173. package/package.json +6 -6
@@ -45,4 +45,4 @@ var PipelineParameterType;
45
45
  PipelineParameterType["INTEGER"] = "integer";
46
46
  PipelineParameterType["ENUM"] = "enum";
47
47
  })(PipelineParameterType || (exports.PipelineParameterType = PipelineParameterType = {}));
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2lyY2xlY2kvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZEQUE2RDs7O0FBMkI3RDs7O0dBR0c7QUFDSCxJQUFZLE9BRVg7QUFGRCxXQUFZLE9BQU87SUFDakIsZ0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUZXLE9BQU8sdUJBQVAsT0FBTyxRQUVsQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLGFBT1g7QUFQRCxXQUFZLGFBQWE7SUFDdkIsZ0NBQWUsQ0FBQTtJQUNmLGtDQUFpQixDQUFBO0lBQ2pCLHdDQUF1QixDQUFBO0lBQ3ZCLG1DQUFrQixDQUFBO0lBQ2xCLHFDQUFvQixDQUFBO0lBQ3BCLDJDQUEwQixDQUFBO0FBQzVCLENBQUMsRUFQVyxhQUFhLDZCQUFiLGFBQWEsUUFPeEI7QUFFRDs7O0dBR0c7QUFDSCxJQUFZLE9BSVg7QUFKRCxXQUFZLE9BQU87SUFDakIsNEJBQWlCLENBQUE7SUFDakIsb0NBQXlCLENBQUE7SUFDekIsOEJBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLE9BQU8sdUJBQVAsT0FBTyxRQUlsQjtBQUVEOzs7R0FHRztBQUNILElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQiwwQ0FBaUIsQ0FBQTtJQUNqQiw0Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBbUIsQ0FBQTtJQUNuQixzQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBS2hDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZVxuXG4vKipcbiAqIFVzZWQgdG8gcmVwcmVzZW50IG9iamVjdHMgd2l0aCBhIGR5bmFtaWMga2V5LlxuICogRHluYW1pYyBhcmUgbWFya2VkIHdpdGggYDw+YCBpbiBjb25maWd1cmF0aW9uIHJlZmVyZW5jZSBsaWtlICc8d29ya2Zsb3dfbmFtZT4nIGFuZCAnPGpvYl9uYW1lPidcbiAqIFRoaXMgZmllbGQgaXMgcmVxdWlyZWQgZm9yIG9iamVjdHMgd2l0aCBkeW5hbWljIGtleXMuXG4gKi9cbmludGVyZmFjZSBJTmFtZWQge1xuICAvKiogbmFtZSBvZiBkeW5hbWljIGtleSAqKi9cbiAgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgZm9yIG9yY2hlc3RyYXRpbmcgYWxsIGpvYnMuIEVhY2ggd29ya2Zsb3cgY29uc2lzdHMgb2YgdGhlIHdvcmtmbG93IG5hbWUgYXMgYSBrZXkgYW5kIGEgbWFwIGFzIGEgdmFsdWUuXG4gKiBBIG5hbWUgc2hvdWxkIGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGN1cnJlbnQgY29uZmlnLnltbC5cbiAqIFRoZSB0b3AtbGV2ZWwga2V5cyBmb3IgdGhlIFdvcmtmbG93cyBjb25maWd1cmF0aW9uIGFyZSB2ZXJzaW9uIGFuZCBqb2JzLlxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jd29ya2Zsb3dzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3cgZXh0ZW5kcyBJTmFtZWQge1xuICByZWFkb25seSBqb2JzPzogV29ya2Zsb3dKb2JbXTtcbiAgcmVhZG9ubHkgdHJpZ2dlcnM/OiBUcmlnZ2Vyc1tdO1xuICAvKiogd2hlbiBpcyB0b28gZHluYW1pYyB0byBiZSBjYXN0ZWQgdG8gaW50ZXJmYWNlcy4gQ2hlY2sgRG9jdSBhcyByZWZlcmVuY2VcbiAgICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jbG9naWMtc3RhdGVtZW50LWV4YW1wbGVzXG4gICAqL1xuICByZWFkb25seSB3aGVuPzogYW55O1xufVxuXG4vKipcbiAqIEEgam9iIG1heSBoYXZlIGEgdHlwZSBvZiBhcHByb3ZhbCBpbmRpY2F0aW5nIGl0IG11c3QgYmUgbWFudWFsbHkgYXBwcm92ZWQgYmVmb3JlIGRvd25zdHJlYW0gam9icyBtYXkgcHJvY2VlZFxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jdHlwZVxuICovXG5leHBvcnQgZW51bSBKb2JUeXBlIHtcbiAgQVBQUk9WQUwgPSBcImFwcHJvdmFsXCIsXG59XG5cbi8qKlxuICogVGhlIHJlc291cmNlX2NsYXNzIGZlYXR1cmUgYWxsb3dzIGNvbmZpZ3VyaW5nIENQVSBhbmQgUkFNIHJlc291cmNlcyBmb3IgZWFjaCBqb2IuXG4gKiBEaWZmZXJlbnQgcmVzb3VyY2UgY2xhc3NlcyBhcmUgYXZhaWxhYmxlIGZvciBkaWZmZXJlbnQgZXhlY3V0b3JzLCBhcyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlcyBiZWxvdy5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3Jlc291cmNlY2xhc3NcbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VDbGFzcyB7XG4gIFNNQUxMID0gXCJzbWFsbFwiLFxuICBNRURJVU0gPSBcIm1lZGl1bVwiLFxuICBNRURJVU1fUExVUyA9IFwibWVkaXVtK1wiLFxuICBMQVJHRV9YID0gXCJ4bGFyZ2VcIixcbiAgTEFSR0VfMlggPSBcIjJ4bGFyZ2VcIixcbiAgTEFSR0VfMlhfUExVUyA9IFwiMnhsYXJnZStcIixcbn1cblxuLyoqXG4gKiBTcGVjaWZ5IHdoZW4gdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHN0ZXAuXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNzdGVwc1xuICovXG5leHBvcnQgZW51bSBKb2JXaGVuIHtcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgT05fU1VDQ0VTUyA9IFwib25fc3VjY2Vzc1wiLFxuICBPTl9GQUlMID0gXCJvbl9mYWlsXCIsXG59XG5cbi8qKlxuICogUGlwZWxpbmUgcGFyYW1ldGVyIHR5cGVzXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL3JldXNpbmctY29uZmlnI3BhcmFtZXRlci1zeW50YXhcbiAqL1xuZXhwb3J0IGVudW0gUGlwZWxpbmVQYXJhbWV0ZXJUeXBlIHtcbiAgU1RSSU5HID0gXCJzdHJpbmdcIixcbiAgQk9PTEVBTiA9IFwiYm9vbGVhblwiLFxuICBJTlRFR0VSID0gXCJpbnRlZ2VyXCIsXG4gIEVOVU0gPSBcImVudW1cIixcbn1cblxuLyoqXG4gKiBBIFdvcmtmbG93IGlzIGNvbXByaXNlZCBvZiBvbmUgb3IgbW9yZSB1bmlxdWVseSBuYW1lZCBqb2JzLiBKb2JzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGpvYnMgbWFwLFxuICogc2VlIFNhbXBsZSAyLjAgY29uZmlnLnltbCBmb3IgdHdvIGV4YW1wbGVzIG9mIGEgam9iIG1hcC5cbiAqIFRoZSBuYW1lIG9mIHRoZSBqb2IgaXMgdGhlIGtleSBpbiB0aGUgbWFwLCBhbmQgdGhlIHZhbHVlIGlzIGEgbWFwIGRlc2NyaWJpbmcgdGhlIGpvYi5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2pvYnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2IgZXh0ZW5kcyBJTmFtZWQge31cblxuLyoqXG4gKiBBIEpvYiBpcyBwYXJ0IG9mIFdvcmtmbG93LiBBIEpvYiBjYW4gYmUgY3JlYXRlZCB3aXRoIHtAbGluayBKb2J9IG9yIGl0IGNhbiBiZSBwcm92aWRlZCBieSB0aGUgb3JiXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNqb2JzLWluLXdvcmtmbG93XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dKb2IgZXh0ZW5kcyBJTmFtZWQge1xuICAvKiogQSBsaXN0IG9mIGpvYnMgdGhhdCBtdXN0IHN1Y2NlZWQgZm9yIHRoZSBqb2IgdG8gc3RhcnQuICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzPzogc3RyaW5nW107XG4gIC8qKiBBIHJlcGxhY2VtZW50IGZvciB0aGUgam9iIG5hbWUuIFVzZWZ1bCB3aGVuIGNhbGxpbmcgYSBqb2IgbXVsdGlwbGUgdGltZXMgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0KHMpLiBUaGUgaW5pdGlhbCBkZWZhdWx0IG5hbWUgaXMgb3JnLWdsb2JhbC4gRWFjaCBjb250ZXh0IG5hbWUgbXVzdCBiZSB1bmlxdWUuICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBzdHJpbmdbXTtcbiAgLyoqIEEgam9iIG1heSBoYXZlIGEgdHlwZSBvZiBhcHByb3ZhbCBpbmRpY2F0aW5nIGl0IG11c3QgYmUgbWFudWFsbHkgYXBwcm92ZWQgYmVmb3JlIGRvd25zdHJlYW0gam9icyBtYXkgcHJvY2VlZC4gKi9cbiAgcmVhZG9ubHkgdHlwZT86IEpvYlR5cGU7XG4gIC8qKiBKb2IgRmlsdGVycyBjYW4gaGF2ZSB0aGUga2V5IGJyYW5jaGVzIG9yIHRhZ3MgKi9cbiAgcmVhZG9ubHkgZmlsdGVycz86IEZpbHRlcjtcbiAgcmVhZG9ubHkgbWF0cml4PzogTWF0cml4O1xuICAvKiogUGFyYW1ldGVycyBwYXNzZWQgdG8gam9iIHdoZW4gcmVmZXJlbmNpbmcgYSBqb2IgZnJvbSBvcmIgKi9cbiAgcmVhZG9ubHkgb3JiUGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgYXJlIGRlY2xhcmVkIGJ5IG5hbWUgdW5kZXIgYSBqb2IsIGNvbW1hbmQsIG9yIGV4ZWN1dG9yLlxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9yZXVzaW5nLWNvbmZpZyN1c2luZy10aGUtcGFyYW1ldGVycy1kZWNsYXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lUGFyYW1ldGVyIHtcbiAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBvcmIuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVGhlIHBhcmFtZXRlciB0eXBlLCByZXF1aXJlZC4gKi9cbiAgcmVhZG9ubHkgdHlwZTogUGlwZWxpbmVQYXJhbWV0ZXJUeXBlO1xuICAvKiogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIuIElmIG5vdCBwcmVzZW50LCB0aGUgcGFyYW1ldGVyIGlzIGltcGxpZWQgdG8gYmUgcmVxdWlyZWQuICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBtYXRyaXggc3RhbnphIGFsbG93cyB5b3UgdG8gcnVuIGEgcGFyYW1ldGVyaXplZCBqb2IgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnRzLlxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jbWF0cml4LXJlcXVpcmVzLXZlcnNpb24tMjFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRyaXgge1xuICAvKiogQSBtYXAgb2YgcGFyYW1ldGVyIG5hbWVzIHRvIGV2ZXJ5IHZhbHVlIHRoZSBqb2Igc2hvdWxkIGJlIGNhbGxlZCB3aXRoICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IG51bWJlcltdPjtcbiAgLyoqIEFuIGFsaWFzIGZvciB0aGUgbWF0cml4LCB1c2FibGUgZnJvbSBhbm90aGVyIGpvYuKAmXMgcmVxdWlyZXMgc3RhbnphLiBEZWZhdWx0cyB0byB0aGUgbmFtZSBvZiB0aGUgam9iIGJlaW5nIGV4ZWN1dGVkICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB3aGljaCB0cmlnZ2VycyB3aWxsIGNhdXNlIHRoaXMgd29ya2Zsb3cgdG8gYmUgZXhlY3V0ZWQuXG4gKiBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHRyaWdnZXIgdGhlIHdvcmtmbG93IHdoZW4gcHVzaGluZyB0byBhIGJyYW5jaC5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3RyaWdnZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlcnMge1xuICByZWFkb25seSBzY2hlZHVsZT86IFNjaGVkdWxlO1xufVxuXG4vKipcbiAqICBBIHdvcmtmbG93IG1heSBoYXZlIGEgc2NoZWR1bGUgaW5kaWNhdGluZyBpdCBydW5zIGF0IGEgY2VydGFpbiB0aW1lLlxuICogIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3NjaGVkdWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGUge1xuICAvKiogVGhlIGNyb24ga2V5IGlzIGRlZmluZWQgdXNpbmcgUE9TSVggY3JvbnRhYiBzeW50YXguICovXG4gIHJlYWRvbmx5IGNyb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlcnM6IEZpbHRlcjtcbn1cblxuLyoqXG4gKiBUaGUgYnJhbmNoZXMga2V5IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGN1cnJlbnQgYnJhbmNoIHNob3VsZCBoYXZlIGEgc2NoZWR1bGUgdHJpZ2dlciBjcmVhdGVkIGZvciBpdCxcbiAqIHdoZXJlIGN1cnJlbnQgYnJhbmNoIGlzIHRoZSBicmFuY2ggY29udGFpbmluZyB0aGUgY29uZmlnLnltbCBmaWxlIHdpdGggdGhlIHRyaWdnZXIgc3RhbnphLlxuICogVGhhdCBpcywgYSBwdXNoIG9uIHRoZSBtYWluIGJyYW5jaCB3aWxsIG9ubHkgc2NoZWR1bGUgYSB3b3JrZmxvdyBmb3IgdGhlIG1haW4gYnJhbmNoLlxuICpcbiAqIEJyYW5jaGVzIGNhbiBoYXZlIHRoZSBrZXlzIG9ubHkgYW5kIGlnbm9yZSB3aGljaCBlaXRoZXIgbWFwIHRvIGEgc2luZ2xlIHN0cmluZyBuYW1pbmcgYSBicmFuY2guXG4gKiBZb3UgbWF5IGFsc28gdXNlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggYWdhaW5zdCBicmFuY2hlcyBieSBlbmNsb3NpbmcgdGhlbSB3aXRoIC/igJlzLCBvciBtYXAgdG8gYSBsaXN0IG9mIHN1Y2ggc3RyaW5ncy5cbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbnMgbXVzdCBtYXRjaCB0aGUgZW50aXJlIHN0cmluZy5cbiAqXG4gKiBBbnkgYnJhbmNoZXMgdGhhdCBtYXRjaCBvbmx5IHdpbGwgcnVuIHRoZSBqb2IuXG4gKiBBbnkgYnJhbmNoZXMgdGhhdCBtYXRjaCBpZ25vcmUgd2lsbCBub3QgcnVuIHRoZSBqb2IuXG4gKiBJZiBuZWl0aGVyIG9ubHkgbm9yIGlnbm9yZSBhcmUgc3BlY2lmaWVkIHRoZW4gYWxsIGJyYW5jaGVzIHdpbGwgcnVuIHRoZSBqb2IuXG4gKiBJZiBib3RoIG9ubHkgYW5kIGlnbm9yZSBhcmUgc3BlY2lmaWVkIHRoZSBvbmx5IGlzIGNvbnNpZGVyZWQgYmVmb3JlIGlnbm9yZS5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2ZpbHRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICByZWFkb25seSBicmFuY2hlcz86IEZpbHRlckNvbmZpZztcbiAgcmVhZG9ubHkgdGFncz86IEZpbHRlckNvbmZpZztcbn1cblxuLyoqXG4gKiBzZXQgYW4gaW5jbHVzaXZlIG9yIGV4Y2x1c2l2ZSBmaWx0ZXJcbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2ZpbHRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25maWcge1xuICAvKiogRWl0aGVyIGEgc2luZ2xlIGJyYW5jaCBzcGVjaWZpZXIsIG9yIGEgbGlzdCBvZiBicmFuY2ggc3BlY2lmaWVycyAqL1xuICByZWFkb25seSBvbmx5Pzogc3RyaW5nW107XG4gIC8qKiBFaXRoZXIgYSBzaW5nbGUgYnJhbmNoIHNwZWNpZmllciwgb3IgYSBsaXN0IG9mIGJyYW5jaCBzcGVjaWZpZXJzICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVhY2ggam9iIGNvbnNpc3RzIG9mIHRoZSBqb2LigJlzIG5hbWUgYXMgYSBrZXkgYW5kIGEgbWFwIGFzIGEgdmFsdWUuIEEgbmFtZSBzaG91bGQgYmUgY2FzZSBpbnNlbnNpdGl2ZSB1bmlxdWUgd2l0aGluIGEgY3VycmVudCBqb2JzIGxpc3QuXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNqb2JfbmFtZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYiB7XG4gIHJlYWRvbmx5IGRvY2tlcj86IERvY2tlcltdO1xuICByZWFkb25seSBtYWNoaW5lPzogTWFjaGluZTtcbiAgcmVhZG9ubHkgbWFjb3M/OiBNYWNvcztcbiAgLyoqIFNoZWxsIHRvIHVzZSBmb3IgZXhlY3V0aW9uIGNvbW1hbmQgaW4gYWxsIHN0ZXBzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzaGVsbCBpbiBlYWNoIHN0ZXAgKi9cbiAgcmVhZG9ubHkgc2hlbGw/OiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXJzIGZvciBtYWtpbmcgYSBqb2IgZXhwbGljaXRseSBjb25maWd1cmFibGUgaW4gYSB3b3JrZmxvdy4gKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIFBpcGVsaW5lUGFyYW1ldGVyPjtcbiAgLyoqIG5vIHR5cGUgc3VwcG9ydCBoZXJlLCBmb3Igc3ludGF4IHtAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNzdGVwc30gKi9cbiAgcmVhZG9ubHkgc3RlcHM/OiBhbnlbXTtcbiAgLyoqIEluIHdoaWNoIGRpcmVjdG9yeSB0byBydW4gdGhlIHN0ZXBzLiBXaWxsIGJlIGludGVycHJldGVkIGFzIGFuIGFic29sdXRlIHBhdGguIERlZmF1bHQ6IGB+L3Byb2plY3RgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2YgcGFyYWxsZWwgaW5zdGFuY2VzIG9mIHRoaXMgam9iIHRvIHJ1biAoZGVmYXVsdDogMSkgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gIC8qKiBBIG1hcCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzLiAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAvKioge0BsaW5rIFJlc291cmNlQ2xhc3N9ICovXG4gIHJlYWRvbmx5IHJlc291cmNlQ2xhc3M/OiBSZXNvdXJjZUNsYXNzIHwgc3RyaW5nO1xuICAvKiogRW5hYmxlcyBqb2JzIHRvIGdvIHRocm91Z2ggYSBzZXQgb2Ygd2VsbC1kZWZpbmVkIElQIGFkZHJlc3MgcmFuZ2VzICovXG4gIHJlYWRvbmx5IGNpcmNsZWNpSXBSYW5nZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGRvY2tlciBleGVjdXRvclxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jZG9ja2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyIHtcbiAgLyoqIFRoZSBuYW1lIG9mIGEgY3VzdG9tIGRvY2tlciBpbWFnZSB0byB1c2UgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIHRoZSBjb250YWluZXIgaXMgcmVhY2hhYmxlIGJ5LiBCeSBkZWZhdWx0LCBjb250YWluZXIgc2VydmljZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCBsb2NhbGhvc3QgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBjb21tYW5kIHVzZWQgYXMgZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcbiAgLyoqIFRoZSBjb21tYW5kIHVzZWQgYXMgcGlkIDEgKG9yIGFyZ3MgZm9yIGVudHJ5cG9pbnQpIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuICAvKiogV2hpY2ggdXNlciB0byBydW4gY29tbWFuZHMgYXMgd2l0aGluIHRoZSBEb2NrZXIgY29udGFpbmVyICovXG4gIHJlYWRvbmx5IHVzZXI/OiBzdHJpbmc7XG4gIC8qKiBBIG1hcCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gIC8qKiBBdXRoZW50aWNhdGlvbiBmb3IgcmVnaXN0cmllcyB1c2luZyBzdGFuZGFyZCBkb2NrZXIgbG9naW4gY3JlZGVudGlhbHMgKi9cbiAgcmVhZG9ubHkgYXV0aD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBBdXRoZW50aWNhdGlvbiBmb3IgQVdTIEVsYXN0aWMgQ29udGFpbmVyIFJlZ2lzdHJ5IChFQ1IpICovXG4gIHJlYWRvbmx5IGF3c0F1dGg/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hY2hpbmUge1xuICAvKipcbiAgICogVGhlIFZNIGltYWdlIHRvIHVzZS5cbiAgICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jYXZhaWxhYmxlLW1hY2hpbmUtaW1hZ2VzXG4gICAqL1xuICByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuICAvKiogZW5hYmxlIGRvY2tlciBsYXllciBjYWNoaW5nXG4gICAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2F2YWlsYWJsZS1tYWNoaW5lLWltYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyTGF5ZXJDYWNoaW5nPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENpcmNsZUNJIHN1cHBvcnRzIHJ1bm5pbmcgam9icyBvbiBtYWNPUywgdG8gYWxsb3cgeW91IHRvIGJ1aWxkLCB0ZXN0LFxuICogYW5kIGRlcGxveSBhcHBzIGZvciBtYWNPUywgaU9TLCB0dk9TIGFuZCB3YXRjaE9TLiBUbyBydW4gYSBqb2IgaW4gYSBtYWNPUyB2aXJ0dWFsIG1hY2hpbmUsXG4gKiB5b3UgbXVzdCBhZGQgdGhlIG1hY29zIGtleSB0byB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBqb2IgYW5kIHNwZWNpZnlcbiAqIHRoZSB2ZXJzaW9uIG9mIFhjb2RlIHlvdSB3b3VsZCBsaWtlIHRvIHVzZS5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI21hY29zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFjb3Mge1xuICAvKiogVGhlIHZlcnNpb24gb2YgWGNvZGUgdGhhdCBpcyBpbnN0YWxsZWQgb24gdGhlIHZpcnR1YWwgbWFjaGluZSAqL1xuICByZWFkb25seSB4Y29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4ZWN1dGlvbiBzdGVwcyBmb3IgSm9iXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNzdGVwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBSdW4ge1xuICByZWFkb25seSBydW4/OiBSdW47XG59XG5cbi8qKlxuICogVXNlZCBmb3IgaW52b2tpbmcgYWxsIGNvbW1hbmQtbGluZSBwcm9ncmFtcywgdGFraW5nIGVpdGhlciBhIG1hcCBvZiBjb25maWd1cmF0aW9uIHZhbHVlcyxcbiAqIG9yLCB3aGVuIGNhbGxlZCBpbiBpdHMgc2hvcnQtZm9ybSwgYSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYm90aCB0aGUgY29tbWFuZCBhbmQgbmFtZS5cbiAqIFJ1biBjb21tYW5kcyBhcmUgZXhlY3V0ZWQgdXNpbmcgbm9uLWxvZ2luIHNoZWxscyBieSBkZWZhdWx0LFxuICogc28geW91IG11c3QgZXhwbGljaXRseSBzb3VyY2UgYW55IGRvdGZpbGVzIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuXG4gKlxuICogTm90IHVzZWQgYmVjYXVzZSB0eXBlIGluY29tcGF0aWJsZSB0eXBlcyBpbiBzdGVwcyBhcnJheVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3J1blxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1biB7XG4gIC8qKiBDb21tYW5kIHRvIHJ1biB2aWEgdGhlIHNoZWxsICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFRpdGxlIG9mIHRoZSBzdGVwIHRvIGJlIHNob3duIGluIHRoZSBDaXJjbGVDSSBVSSAoZGVmYXVsdDogZnVsbCBjb21tYW5kKSAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKiogU2hlbGwgdG8gdXNlIGZvciBleGVjdXRpb24gY29tbWFuZCAqL1xuICByZWFkb25seSBzaGVsbD86IHN0cmluZztcbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMsIGxvY2FsbHkgc2NvcGVkIHRvIGNvbW1hbmQgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoaXMgc3RlcCBzaG91bGQgcnVuIGluIHRoZSBiYWNrZ3JvdW5kIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcmVhZG9ubHkgYmFja2dyb3VuZD86IHN0cmluZztcbiAgLyoqIEluIHdoaWNoIGRpcmVjdG9yeSB0byBydW4gdGhpcyBzdGVwLiBXaWxsIGJlIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nX2RpcmVjdG9yeSBvZiB0aGUgam9iKS4gKGRlZmF1bHQ6IC4pICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBFbGFwc2VkIHRpbWUgdGhlIGNvbW1hbmQgY2FuIHJ1biB3aXRob3V0IG91dHB1dCBzdWNoIGFzIOKAnDIwbeKAnSwg4oCcMS4yNWjigJ0sIOKAnDVz4oCdLiBUaGUgZGVmYXVsdCBpcyAxMCBtaW51dGVzICovXG4gIHJlYWRvbmx5IG5vT3V0cHV0VGltZW91dD86IHN0cmluZztcbiAgLyoqIFNwZWNpZnkgd2hlbiB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgc3RlcC4gKi9cbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW4gfCBzdHJpbmc7XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2lyY2xlY2kvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZEQUE2RDs7O0FBMkI3RDs7O0dBR0c7QUFDSCxJQUFZLE9BRVg7QUFGRCxXQUFZLE9BQU87SUFDakIsZ0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUZXLE9BQU8sdUJBQVAsT0FBTyxRQUVsQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLGFBT1g7QUFQRCxXQUFZLGFBQWE7SUFDdkIsZ0NBQWUsQ0FBQTtJQUNmLGtDQUFpQixDQUFBO0lBQ2pCLHdDQUF1QixDQUFBO0lBQ3ZCLG1DQUFrQixDQUFBO0lBQ2xCLHFDQUFvQixDQUFBO0lBQ3BCLDJDQUEwQixDQUFBO0FBQzVCLENBQUMsRUFQVyxhQUFhLDZCQUFiLGFBQWEsUUFPeEI7QUFFRDs7O0dBR0c7QUFDSCxJQUFZLE9BSVg7QUFKRCxXQUFZLE9BQU87SUFDakIsNEJBQWlCLENBQUE7SUFDakIsb0NBQXlCLENBQUE7SUFDekIsOEJBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLE9BQU8sdUJBQVAsT0FBTyxRQUlsQjtBQUVEOzs7R0FHRztBQUNILElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQiwwQ0FBaUIsQ0FBQTtJQUNqQiw0Q0FBbUIsQ0FBQTtJQUNuQiw0Q0FBbUIsQ0FBQTtJQUNuQixzQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBS2hDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZVxuXG4vKipcbiAqIFVzZWQgdG8gcmVwcmVzZW50IG9iamVjdHMgd2l0aCBhIGR5bmFtaWMga2V5LlxuICogRHluYW1pYyBhcmUgbWFya2VkIHdpdGggYDw+YCBpbiBjb25maWd1cmF0aW9uIHJlZmVyZW5jZSBsaWtlICc8d29ya2Zsb3dfbmFtZT4nIGFuZCAnPGpvYl9uYW1lPidcbiAqIFRoaXMgZmllbGQgaXMgcmVxdWlyZWQgZm9yIG9iamVjdHMgd2l0aCBkeW5hbWljIGtleXMuXG4gKi9cbmludGVyZmFjZSBJTmFtZWQge1xuICAvKiogbmFtZSBvZiBkeW5hbWljIGtleSAqKi9cbiAgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgZm9yIG9yY2hlc3RyYXRpbmcgYWxsIGpvYnMuIEVhY2ggd29ya2Zsb3cgY29uc2lzdHMgb2YgdGhlIHdvcmtmbG93IG5hbWUgYXMgYSBrZXkgYW5kIGEgbWFwIGFzIGEgdmFsdWUuXG4gKiBBIG5hbWUgc2hvdWxkIGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGN1cnJlbnQgY29uZmlnLnltbC5cbiAqIFRoZSB0b3AtbGV2ZWwga2V5cyBmb3IgdGhlIFdvcmtmbG93cyBjb25maWd1cmF0aW9uIGFyZSB2ZXJzaW9uIGFuZCBqb2JzLlxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jd29ya2Zsb3dzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3cgZXh0ZW5kcyBJTmFtZWQge1xuICByZWFkb25seSBqb2JzPzogV29ya2Zsb3dKb2JbXTtcbiAgcmVhZG9ubHkgdHJpZ2dlcnM/OiBUcmlnZ2Vyc1tdO1xuICAvKiogd2hlbiBpcyB0b28gZHluYW1pYyB0byBiZSBjYXN0ZWQgdG8gaW50ZXJmYWNlcy4gQ2hlY2sgRG9jdSBhcyByZWZlcmVuY2VcbiAgICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jbG9naWMtc3RhdGVtZW50LWV4YW1wbGVzXG4gICAqL1xuICByZWFkb25seSB3aGVuPzogYW55O1xufVxuXG4vKipcbiAqIEEgam9iIG1heSBoYXZlIGEgdHlwZSBvZiBhcHByb3ZhbCBpbmRpY2F0aW5nIGl0IG11c3QgYmUgbWFudWFsbHkgYXBwcm92ZWQgYmVmb3JlIGRvd25zdHJlYW0gam9icyBtYXkgcHJvY2VlZFxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jdHlwZVxuICovXG5leHBvcnQgZW51bSBKb2JUeXBlIHtcbiAgQVBQUk9WQUwgPSBcImFwcHJvdmFsXCIsXG59XG5cbi8qKlxuICogVGhlIHJlc291cmNlX2NsYXNzIGZlYXR1cmUgYWxsb3dzIGNvbmZpZ3VyaW5nIENQVSBhbmQgUkFNIHJlc291cmNlcyBmb3IgZWFjaCBqb2IuXG4gKiBEaWZmZXJlbnQgcmVzb3VyY2UgY2xhc3NlcyBhcmUgYXZhaWxhYmxlIGZvciBkaWZmZXJlbnQgZXhlY3V0b3JzLCBhcyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlcyBiZWxvdy5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3Jlc291cmNlY2xhc3NcbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VDbGFzcyB7XG4gIFNNQUxMID0gXCJzbWFsbFwiLFxuICBNRURJVU0gPSBcIm1lZGl1bVwiLFxuICBNRURJVU1fUExVUyA9IFwibWVkaXVtK1wiLFxuICBMQVJHRV9YID0gXCJ4bGFyZ2VcIixcbiAgTEFSR0VfMlggPSBcIjJ4bGFyZ2VcIixcbiAgTEFSR0VfMlhfUExVUyA9IFwiMnhsYXJnZStcIixcbn1cblxuLyoqXG4gKiBTcGVjaWZ5IHdoZW4gdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHN0ZXAuXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNzdGVwc1xuICovXG5leHBvcnQgZW51bSBKb2JXaGVuIHtcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgT05fU1VDQ0VTUyA9IFwib25fc3VjY2Vzc1wiLFxuICBPTl9GQUlMID0gXCJvbl9mYWlsXCIsXG59XG5cbi8qKlxuICogUGlwZWxpbmUgcGFyYW1ldGVyIHR5cGVzXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL3JldXNpbmctY29uZmlnI3BhcmFtZXRlci1zeW50YXhcbiAqL1xuZXhwb3J0IGVudW0gUGlwZWxpbmVQYXJhbWV0ZXJUeXBlIHtcbiAgU1RSSU5HID0gXCJzdHJpbmdcIixcbiAgQk9PTEVBTiA9IFwiYm9vbGVhblwiLFxuICBJTlRFR0VSID0gXCJpbnRlZ2VyXCIsXG4gIEVOVU0gPSBcImVudW1cIixcbn1cblxuLyoqXG4gKiBBIFdvcmtmbG93IGlzIGNvbXByaXNlZCBvZiBvbmUgb3IgbW9yZSB1bmlxdWVseSBuYW1lZCBqb2JzLiBKb2JzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGpvYnMgbWFwLFxuICogc2VlIFNhbXBsZSAyLjAgY29uZmlnLnltbCBmb3IgdHdvIGV4YW1wbGVzIG9mIGEgam9iIG1hcC5cbiAqIFRoZSBuYW1lIG9mIHRoZSBqb2IgaXMgdGhlIGtleSBpbiB0aGUgbWFwLCBhbmQgdGhlIHZhbHVlIGlzIGEgbWFwIGRlc2NyaWJpbmcgdGhlIGpvYi5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2pvYnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2IgZXh0ZW5kcyBJTmFtZWQge31cblxuLyoqXG4gKiBBIEpvYiBpcyBwYXJ0IG9mIFdvcmtmbG93LiBBIEpvYiBjYW4gYmUgY3JlYXRlZCB3aXRoIHtAbGluayBKb2J9IG9yIGl0IGNhbiBiZSBwcm92aWRlZCBieSB0aGUgb3JiXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNqb2JzLWluLXdvcmtmbG93XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dKb2IgZXh0ZW5kcyBJTmFtZWQge1xuICAvKiogQSBsaXN0IG9mIGpvYnMgdGhhdCBtdXN0IHN1Y2NlZWQgZm9yIHRoZSBqb2IgdG8gc3RhcnQuICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzPzogc3RyaW5nW107XG4gIC8qKiBBIHJlcGxhY2VtZW50IGZvciB0aGUgam9iIG5hbWUuIFVzZWZ1bCB3aGVuIGNhbGxpbmcgYSBqb2IgbXVsdGlwbGUgdGltZXMgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0KHMpLiBUaGUgaW5pdGlhbCBkZWZhdWx0IG5hbWUgaXMgb3JnLWdsb2JhbC4gRWFjaCBjb250ZXh0IG5hbWUgbXVzdCBiZSB1bmlxdWUuICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBzdHJpbmdbXTtcbiAgLyoqIEEgam9iIG1heSBoYXZlIGEgdHlwZSBvZiBhcHByb3ZhbCBpbmRpY2F0aW5nIGl0IG11c3QgYmUgbWFudWFsbHkgYXBwcm92ZWQgYmVmb3JlIGRvd25zdHJlYW0gam9icyBtYXkgcHJvY2VlZC4gKi9cbiAgcmVhZG9ubHkgdHlwZT86IEpvYlR5cGU7XG4gIC8qKlxuICAgKiBCcmFuY2gvdGFnIGZpbHRlcnMgb3IgYW4gZXhwcmVzc2lvbiBzdHJpbmcgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyBqb2IgcnVucy5cbiAgICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jZXhwcmVzc2lvbi1iYXNlZC1qb2ItZmlsdGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVycz86IEZpbHRlciB8IHN0cmluZztcbiAgcmVhZG9ubHkgbWF0cml4PzogTWF0cml4O1xuICAvKiogUGFyYW1ldGVycyBwYXNzZWQgdG8gam9iIHdoZW4gcmVmZXJlbmNpbmcgYSBqb2IgZnJvbSBvcmIgKi9cbiAgcmVhZG9ubHkgb3JiUGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgYXJlIGRlY2xhcmVkIGJ5IG5hbWUgdW5kZXIgYSBqb2IsIGNvbW1hbmQsIG9yIGV4ZWN1dG9yLlxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9yZXVzaW5nLWNvbmZpZyN1c2luZy10aGUtcGFyYW1ldGVycy1kZWNsYXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lUGFyYW1ldGVyIHtcbiAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBvcmIuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVGhlIHBhcmFtZXRlciB0eXBlLCByZXF1aXJlZC4gKi9cbiAgcmVhZG9ubHkgdHlwZTogUGlwZWxpbmVQYXJhbWV0ZXJUeXBlO1xuICAvKiogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIuIElmIG5vdCBwcmVzZW50LCB0aGUgcGFyYW1ldGVyIGlzIGltcGxpZWQgdG8gYmUgcmVxdWlyZWQuICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBtYXRyaXggc3RhbnphIGFsbG93cyB5b3UgdG8gcnVuIGEgcGFyYW1ldGVyaXplZCBqb2IgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnRzLlxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jbWF0cml4LXJlcXVpcmVzLXZlcnNpb24tMjFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRyaXgge1xuICAvKiogQSBtYXAgb2YgcGFyYW1ldGVyIG5hbWVzIHRvIGV2ZXJ5IHZhbHVlIHRoZSBqb2Igc2hvdWxkIGJlIGNhbGxlZCB3aXRoICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IG51bWJlcltdPjtcbiAgLyoqIEFuIGFsaWFzIGZvciB0aGUgbWF0cml4LCB1c2FibGUgZnJvbSBhbm90aGVyIGpvYuKAmXMgcmVxdWlyZXMgc3RhbnphLiBEZWZhdWx0cyB0byB0aGUgbmFtZSBvZiB0aGUgam9iIGJlaW5nIGV4ZWN1dGVkICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB3aGljaCB0cmlnZ2VycyB3aWxsIGNhdXNlIHRoaXMgd29ya2Zsb3cgdG8gYmUgZXhlY3V0ZWQuXG4gKiBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHRyaWdnZXIgdGhlIHdvcmtmbG93IHdoZW4gcHVzaGluZyB0byBhIGJyYW5jaC5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3RyaWdnZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlcnMge1xuICByZWFkb25seSBzY2hlZHVsZT86IFNjaGVkdWxlO1xufVxuXG4vKipcbiAqICBBIHdvcmtmbG93IG1heSBoYXZlIGEgc2NoZWR1bGUgaW5kaWNhdGluZyBpdCBydW5zIGF0IGEgY2VydGFpbiB0aW1lLlxuICogIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3NjaGVkdWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGUge1xuICAvKiogVGhlIGNyb24ga2V5IGlzIGRlZmluZWQgdXNpbmcgUE9TSVggY3JvbnRhYiBzeW50YXguICovXG4gIHJlYWRvbmx5IGNyb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlcnM6IEZpbHRlcjtcbn1cblxuLyoqXG4gKiBUaGUgYnJhbmNoZXMga2V5IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGN1cnJlbnQgYnJhbmNoIHNob3VsZCBoYXZlIGEgc2NoZWR1bGUgdHJpZ2dlciBjcmVhdGVkIGZvciBpdCxcbiAqIHdoZXJlIGN1cnJlbnQgYnJhbmNoIGlzIHRoZSBicmFuY2ggY29udGFpbmluZyB0aGUgY29uZmlnLnltbCBmaWxlIHdpdGggdGhlIHRyaWdnZXIgc3RhbnphLlxuICogVGhhdCBpcywgYSBwdXNoIG9uIHRoZSBtYWluIGJyYW5jaCB3aWxsIG9ubHkgc2NoZWR1bGUgYSB3b3JrZmxvdyBmb3IgdGhlIG1haW4gYnJhbmNoLlxuICpcbiAqIEJyYW5jaGVzIGNhbiBoYXZlIHRoZSBrZXlzIG9ubHkgYW5kIGlnbm9yZSB3aGljaCBlaXRoZXIgbWFwIHRvIGEgc2luZ2xlIHN0cmluZyBuYW1pbmcgYSBicmFuY2guXG4gKiBZb3UgbWF5IGFsc28gdXNlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggYWdhaW5zdCBicmFuY2hlcyBieSBlbmNsb3NpbmcgdGhlbSB3aXRoIC/igJlzLCBvciBtYXAgdG8gYSBsaXN0IG9mIHN1Y2ggc3RyaW5ncy5cbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbnMgbXVzdCBtYXRjaCB0aGUgZW50aXJlIHN0cmluZy5cbiAqXG4gKiBBbnkgYnJhbmNoZXMgdGhhdCBtYXRjaCBvbmx5IHdpbGwgcnVuIHRoZSBqb2IuXG4gKiBBbnkgYnJhbmNoZXMgdGhhdCBtYXRjaCBpZ25vcmUgd2lsbCBub3QgcnVuIHRoZSBqb2IuXG4gKiBJZiBuZWl0aGVyIG9ubHkgbm9yIGlnbm9yZSBhcmUgc3BlY2lmaWVkIHRoZW4gYWxsIGJyYW5jaGVzIHdpbGwgcnVuIHRoZSBqb2IuXG4gKiBJZiBib3RoIG9ubHkgYW5kIGlnbm9yZSBhcmUgc3BlY2lmaWVkIHRoZSBvbmx5IGlzIGNvbnNpZGVyZWQgYmVmb3JlIGlnbm9yZS5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2ZpbHRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICByZWFkb25seSBicmFuY2hlcz86IEZpbHRlckNvbmZpZztcbiAgcmVhZG9ubHkgdGFncz86IEZpbHRlckNvbmZpZztcbn1cblxuLyoqXG4gKiBzZXQgYW4gaW5jbHVzaXZlIG9yIGV4Y2x1c2l2ZSBmaWx0ZXJcbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2ZpbHRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25maWcge1xuICAvKiogRWl0aGVyIGEgc2luZ2xlIGJyYW5jaCBzcGVjaWZpZXIsIG9yIGEgbGlzdCBvZiBicmFuY2ggc3BlY2lmaWVycyAqL1xuICByZWFkb25seSBvbmx5Pzogc3RyaW5nW107XG4gIC8qKiBFaXRoZXIgYSBzaW5nbGUgYnJhbmNoIHNwZWNpZmllciwgb3IgYSBsaXN0IG9mIGJyYW5jaCBzcGVjaWZpZXJzICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVhY2ggam9iIGNvbnNpc3RzIG9mIHRoZSBqb2LigJlzIG5hbWUgYXMgYSBrZXkgYW5kIGEgbWFwIGFzIGEgdmFsdWUuIEEgbmFtZSBzaG91bGQgYmUgY2FzZSBpbnNlbnNpdGl2ZSB1bmlxdWUgd2l0aGluIGEgY3VycmVudCBqb2JzIGxpc3QuXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNqb2JfbmFtZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYiB7XG4gIHJlYWRvbmx5IGRvY2tlcj86IERvY2tlcltdO1xuICByZWFkb25seSBtYWNoaW5lPzogTWFjaGluZTtcbiAgcmVhZG9ubHkgbWFjb3M/OiBNYWNvcztcbiAgLyoqIFNoZWxsIHRvIHVzZSBmb3IgZXhlY3V0aW9uIGNvbW1hbmQgaW4gYWxsIHN0ZXBzLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzaGVsbCBpbiBlYWNoIHN0ZXAgKi9cbiAgcmVhZG9ubHkgc2hlbGw/OiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXJzIGZvciBtYWtpbmcgYSBqb2IgZXhwbGljaXRseSBjb25maWd1cmFibGUgaW4gYSB3b3JrZmxvdy4gKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIFBpcGVsaW5lUGFyYW1ldGVyPjtcbiAgLyoqIG5vIHR5cGUgc3VwcG9ydCBoZXJlLCBmb3Igc3ludGF4IHtAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNzdGVwc30gKi9cbiAgcmVhZG9ubHkgc3RlcHM/OiBhbnlbXTtcbiAgLyoqIEluIHdoaWNoIGRpcmVjdG9yeSB0byBydW4gdGhlIHN0ZXBzLiBXaWxsIGJlIGludGVycHJldGVkIGFzIGFuIGFic29sdXRlIHBhdGguIERlZmF1bHQ6IGB+L3Byb2plY3RgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2YgcGFyYWxsZWwgaW5zdGFuY2VzIG9mIHRoaXMgam9iIHRvIHJ1biAoZGVmYXVsdDogMSkgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gIC8qKiBBIG1hcCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzLiAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAvKioge0BsaW5rIFJlc291cmNlQ2xhc3N9ICovXG4gIHJlYWRvbmx5IHJlc291cmNlQ2xhc3M/OiBSZXNvdXJjZUNsYXNzIHwgc3RyaW5nO1xuICAvKiogRW5hYmxlcyBqb2JzIHRvIGdvIHRocm91Z2ggYSBzZXQgb2Ygd2VsbC1kZWZpbmVkIElQIGFkZHJlc3MgcmFuZ2VzICovXG4gIHJlYWRvbmx5IGNpcmNsZWNpSXBSYW5nZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGRvY2tlciBleGVjdXRvclxuICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jZG9ja2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyIHtcbiAgLyoqIFRoZSBuYW1lIG9mIGEgY3VzdG9tIGRvY2tlciBpbWFnZSB0byB1c2UgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IHN0cmluZztcbiAgLyoqIFRoZSBuYW1lIHRoZSBjb250YWluZXIgaXMgcmVhY2hhYmxlIGJ5LiBCeSBkZWZhdWx0LCBjb250YWluZXIgc2VydmljZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCBsb2NhbGhvc3QgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBjb21tYW5kIHVzZWQgYXMgZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyB0aGUgY29udGFpbmVyICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcbiAgLyoqIFRoZSBjb21tYW5kIHVzZWQgYXMgcGlkIDEgKG9yIGFyZ3MgZm9yIGVudHJ5cG9pbnQpIHdoZW4gbGF1bmNoaW5nIHRoZSBjb250YWluZXIgKi9cbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuICAvKiogV2hpY2ggdXNlciB0byBydW4gY29tbWFuZHMgYXMgd2l0aGluIHRoZSBEb2NrZXIgY29udGFpbmVyICovXG4gIHJlYWRvbmx5IHVzZXI/OiBzdHJpbmc7XG4gIC8qKiBBIG1hcCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gIC8qKiBBdXRoZW50aWNhdGlvbiBmb3IgcmVnaXN0cmllcyB1c2luZyBzdGFuZGFyZCBkb2NrZXIgbG9naW4gY3JlZGVudGlhbHMgKi9cbiAgcmVhZG9ubHkgYXV0aD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBBdXRoZW50aWNhdGlvbiBmb3IgQVdTIEVsYXN0aWMgQ29udGFpbmVyIFJlZ2lzdHJ5IChFQ1IpICovXG4gIHJlYWRvbmx5IGF3c0F1dGg/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hY2hpbmUge1xuICAvKipcbiAgICogVGhlIFZNIGltYWdlIHRvIHVzZS5cbiAgICogQHNlZSBodHRwczovL2NpcmNsZWNpLmNvbS9kb2NzLzIuMC9jb25maWd1cmF0aW9uLXJlZmVyZW5jZS8jYXZhaWxhYmxlLW1hY2hpbmUtaW1hZ2VzXG4gICAqL1xuICByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuICAvKiogZW5hYmxlIGRvY2tlciBsYXllciBjYWNoaW5nXG4gICAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI2F2YWlsYWJsZS1tYWNoaW5lLWltYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyTGF5ZXJDYWNoaW5nPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENpcmNsZUNJIHN1cHBvcnRzIHJ1bm5pbmcgam9icyBvbiBtYWNPUywgdG8gYWxsb3cgeW91IHRvIGJ1aWxkLCB0ZXN0LFxuICogYW5kIGRlcGxveSBhcHBzIGZvciBtYWNPUywgaU9TLCB0dk9TIGFuZCB3YXRjaE9TLiBUbyBydW4gYSBqb2IgaW4gYSBtYWNPUyB2aXJ0dWFsIG1hY2hpbmUsXG4gKiB5b3UgbXVzdCBhZGQgdGhlIG1hY29zIGtleSB0byB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBqb2IgYW5kIHNwZWNpZnlcbiAqIHRoZSB2ZXJzaW9uIG9mIFhjb2RlIHlvdSB3b3VsZCBsaWtlIHRvIHVzZS5cbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI21hY29zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFjb3Mge1xuICAvKiogVGhlIHZlcnNpb24gb2YgWGNvZGUgdGhhdCBpcyBpbnN0YWxsZWQgb24gdGhlIHZpcnR1YWwgbWFjaGluZSAqL1xuICByZWFkb25seSB4Y29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4ZWN1dGlvbiBzdGVwcyBmb3IgSm9iXG4gKiBAc2VlIGh0dHBzOi8vY2lyY2xlY2kuY29tL2RvY3MvMi4wL2NvbmZpZ3VyYXRpb24tcmVmZXJlbmNlLyNzdGVwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBSdW4ge1xuICByZWFkb25seSBydW4/OiBSdW47XG59XG5cbi8qKlxuICogVXNlZCBmb3IgaW52b2tpbmcgYWxsIGNvbW1hbmQtbGluZSBwcm9ncmFtcywgdGFraW5nIGVpdGhlciBhIG1hcCBvZiBjb25maWd1cmF0aW9uIHZhbHVlcyxcbiAqIG9yLCB3aGVuIGNhbGxlZCBpbiBpdHMgc2hvcnQtZm9ybSwgYSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYm90aCB0aGUgY29tbWFuZCBhbmQgbmFtZS5cbiAqIFJ1biBjb21tYW5kcyBhcmUgZXhlY3V0ZWQgdXNpbmcgbm9uLWxvZ2luIHNoZWxscyBieSBkZWZhdWx0LFxuICogc28geW91IG11c3QgZXhwbGljaXRseSBzb3VyY2UgYW55IGRvdGZpbGVzIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuXG4gKlxuICogTm90IHVzZWQgYmVjYXVzZSB0eXBlIGluY29tcGF0aWJsZSB0eXBlcyBpbiBzdGVwcyBhcnJheVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZG9jcy8yLjAvY29uZmlndXJhdGlvbi1yZWZlcmVuY2UvI3J1blxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1biB7XG4gIC8qKiBDb21tYW5kIHRvIHJ1biB2aWEgdGhlIHNoZWxsICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFRpdGxlIG9mIHRoZSBzdGVwIHRvIGJlIHNob3duIGluIHRoZSBDaXJjbGVDSSBVSSAoZGVmYXVsdDogZnVsbCBjb21tYW5kKSAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKiogU2hlbGwgdG8gdXNlIGZvciBleGVjdXRpb24gY29tbWFuZCAqL1xuICByZWFkb25seSBzaGVsbD86IHN0cmluZztcbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMsIGxvY2FsbHkgc2NvcGVkIHRvIGNvbW1hbmQgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoaXMgc3RlcCBzaG91bGQgcnVuIGluIHRoZSBiYWNrZ3JvdW5kIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcmVhZG9ubHkgYmFja2dyb3VuZD86IHN0cmluZztcbiAgLyoqIEluIHdoaWNoIGRpcmVjdG9yeSB0byBydW4gdGhpcyBzdGVwLiBXaWxsIGJlIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nX2RpcmVjdG9yeSBvZiB0aGUgam9iKS4gKGRlZmF1bHQ6IC4pICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKiBFbGFwc2VkIHRpbWUgdGhlIGNvbW1hbmQgY2FuIHJ1biB3aXRob3V0IG91dHB1dCBzdWNoIGFzIOKAnDIwbeKAnSwg4oCcMS4yNWjigJ0sIOKAnDVz4oCdLiBUaGUgZGVmYXVsdCBpcyAxMCBtaW51dGVzICovXG4gIHJlYWRvbmx5IG5vT3V0cHV0VGltZW91dD86IHN0cmluZztcbiAgLyoqIFNwZWNpZnkgd2hlbiB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgc3RlcC4gKi9cbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW4gfCBzdHJpbmc7XG59XG4iXX0=
package/lib/component.js CHANGED
@@ -16,7 +16,7 @@ const componentId = (scope) => {
16
16
  * @param id Unique id of the component. If not provided, an unstable AutoId is generated.
17
17
  */
18
18
  class Component extends constructs_1.Construct {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Component", version: "0.103.27" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Component", version: "0.104.0" };
20
20
  /**
21
21
  * Test whether the given construct is a component.
22
22
  */
@@ -175,7 +175,7 @@ function guardDetached(target) {
175
175
  * ```
176
176
  */
177
177
  class FutureComponent extends Component {
178
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FutureComponent", version: "0.103.27" };
178
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FutureComponent", version: "0.104.0" };
179
179
  newTargetName;
180
180
  attachedState = false;
181
181
  constructor() {
@@ -51,7 +51,7 @@ const json_1 = require("./json");
51
51
  * `nodeProject.addDeps()` or use the generic API of `project.deps`:
52
52
  */
53
53
  class Dependencies extends component_1.Component {
54
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.103.27" };
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.104.0" };
55
55
  /**
56
56
  * The project-relative path of the deps manifest file.
57
57
  */
package/lib/dev-env.js CHANGED
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * Options for specifying the Docker image of the container.
7
7
  */
8
8
  class DevEnvironmentDockerImage {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.103.27" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.104.0" };
10
10
  /**
11
11
  * A publicly available Docker image.
12
12
  * @example 'ubuntu:latest'
@@ -7,7 +7,7 @@ const docker_compose_1 = require("./docker-compose");
7
7
  * A docker-compose service.
8
8
  */
9
9
  class DockerComposeService {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.103.27" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.104.0" };
11
11
  /**
12
12
  * Name of the service.
13
13
  */
@@ -11,7 +11,7 @@ const yaml_1 = require("../yaml");
11
11
  * Create a docker-compose YAML file.
12
12
  */
13
13
  class DockerCompose extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.103.27" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.104.0" };
15
15
  /**
16
16
  * Depends on a service name.
17
17
  */
package/lib/file.js CHANGED
@@ -45,7 +45,7 @@ const util_1 = require("./util");
45
45
  const constructs_1 = require("./util/constructs");
46
46
  const diff_1 = require("./util/diff");
47
47
  class FileBase extends component_1.Component {
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FileBase", version: "0.103.27" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FileBase", version: "0.104.0" };
49
49
  /**
50
50
  * The file path, relative to the project's outdir.
51
51
  */
@@ -32,7 +32,7 @@ var EndOfLine;
32
32
  * @see https://git-scm.com/docs/gitattributes
33
33
  */
34
34
  class GitAttributesFile extends file_1.FileBase {
35
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.GitAttributesFile", version: "0.103.27" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.GitAttributesFile", version: "0.104.0" };
36
36
  attributes = new Map();
37
37
  /**
38
38
  * The default end of line character for text files.
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * Manage the versions used for GitHub Actions used in steps
7
7
  */
8
8
  class GitHubActionsProvider {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubActionsProvider", version: "0.103.27" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubActionsProvider", version: "0.104.0" };
10
10
  actions = new Map();
11
11
  /**
12
12
  * Define an override for a given action.
@@ -10,7 +10,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
10
10
  * reviewed action version.
11
11
  */
12
12
  class ActionRefs {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.ActionRefs", version: "0.103.27" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.ActionRefs", version: "0.104.0" };
14
14
  /** actions/checkout at v7.0.1 */
15
15
  static ACTIONS_CHECKOUT = "actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1";
16
16
  /** actions/create-github-app-token at v3.2.0 (immutable) */
@@ -1,20 +1,48 @@
1
1
  import type { GitHub } from "./github";
2
+ import { GithubCredentials } from "./github-credentials";
3
+ import { PullRequestSource } from "./pull-request-source";
2
4
  import { Component } from "../component";
3
5
  import type { RunsOnOptions } from "../runner-options";
4
6
  /**
5
7
  * Options for 'AutoApprove'
6
8
  */
7
9
  export interface AutoApproveOptions extends RunsOnOptions {
10
+ /**
11
+ * Only pull requests from one of these sources will be auto-approved.
12
+ *
13
+ * Components that create pull requests can add more sources with `AutoApprove.addSource()`.
14
+ * Providing sources, either here or with `addSource()`, replaces the default source.
15
+ *
16
+ * @default [PullRequestSource.fromUsers({ logins: ["github-actions[bot]"] })]
17
+ */
18
+ readonly sources?: PullRequestSource[];
8
19
  /**
9
20
  * Only pull requests authored by these Github usernames will be auto-approved.
10
- * @default ['github-bot']
21
+ *
22
+ * An empty list approves pull requests from any user.
23
+ *
24
+ * @default ['github-actions[bot]']
25
+ * @deprecated Use `sources` with `PullRequestSource.fromUsers({ logins })` instead.
11
26
  */
12
27
  readonly allowedUsernames?: string[];
13
28
  /**
14
29
  * Only pull requests with this label will be auto-approved.
30
+ *
31
+ * This is required in addition to matching one of the `sources`.
32
+ *
15
33
  * @default 'auto-approve'
16
34
  */
17
35
  readonly label?: string;
36
+ /**
37
+ * The credentials used to approve pull requests.
38
+ *
39
+ * Github forbids an identity to approve its own pull request.
40
+ * These credentials must belong to a different identity than the one creating the pull requests.
41
+ * Use `environment` on the credentials to restrict which branches can access them.
42
+ *
43
+ * @default - the workflow's `GITHUB_TOKEN`
44
+ */
45
+ readonly credentials?: GithubCredentials;
18
46
  /**
19
47
  * A GitHub secret name which contains a GitHub Access Token
20
48
  * with write permissions for the `pull_request` scope.
@@ -28,6 +56,7 @@ export interface AutoApproveOptions extends RunsOnOptions {
28
56
  * `NodeProjectOptions`, then you must use a different token here.
29
57
  *
30
58
  * @default "GITHUB_TOKEN"
59
+ * @deprecated Use `credentials` with `GithubCredentials.fromPersonalAccessToken({ secret })` instead.
31
60
  */
32
61
  readonly secret?: string;
33
62
  }
@@ -36,5 +65,16 @@ export interface AutoApproveOptions extends RunsOnOptions {
36
65
  */
37
66
  export declare class AutoApprove extends Component {
38
67
  readonly label: string;
68
+ private readonly workflow;
69
+ private readonly sources;
70
+ private sourcesProvided;
71
+ private readonly allowedUsernames?;
39
72
  constructor(github: GitHub, options?: AutoApproveOptions);
73
+ /**
74
+ * Auto-approve pull requests from this source, in addition to the configured sources.
75
+ *
76
+ * Adding a source replaces the default source.
77
+ */
78
+ addSource(source: PullRequestSource): void;
79
+ private renderCondition;
40
80
  }
@@ -2,46 +2,59 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AutoApprove = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const github_credentials_1 = require("./github-credentials");
6
+ const pull_request_source_1 = require("./pull-request-source");
5
7
  const workflows_model_1 = require("./workflows-model");
6
8
  const component_1 = require("../component");
9
+ const DEFAULT_USERNAMES = ["github-actions[bot]"];
10
+ const JOB_ID = "approve";
7
11
  /**
8
12
  * Auto approve pull requests that meet a criteria
9
13
  */
10
14
  class AutoApprove extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoApprove", version: "0.103.27" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoApprove", version: "0.104.0" };
12
16
  label;
17
+ workflow;
18
+ sources;
19
+ sourcesProvided;
20
+ allowedUsernames;
13
21
  constructor(github, options = {}) {
14
22
  super(github.project);
15
- this.label = options.label ?? "auto-approve";
16
- const usernames = options.allowedUsernames ?? ["github-actions[bot]"];
17
- let condition = `contains(github.event.pull_request.labels.*.name, '${this.label}')`;
18
- if (usernames.length > 0) {
19
- condition += " && (";
20
- condition += usernames
21
- .map((u) => `github.event.pull_request.user.login == '${u}'`)
22
- .join(" || ");
23
- condition += ")";
23
+ if (options.sources && options.allowedUsernames) {
24
+ throw new Error("Only one of 'sources' or 'allowedUsernames' may be specified, not both. Remove the deprecated 'allowedUsernames'.");
25
+ }
26
+ if (options.credentials && options.secret) {
27
+ throw new Error("Only one of 'credentials' or 'secret' may be specified, not both. Remove the deprecated 'secret'.");
24
28
  }
25
- const secret = options.secret ?? "GITHUB_TOKEN";
29
+ this.label = options.label ?? "auto-approve";
30
+ this.allowedUsernames = options.allowedUsernames;
31
+ this.sourcesProvided = options.sources !== undefined;
32
+ this.sources = [...(options.sources ?? [])];
33
+ const credentials = options.credentials ??
34
+ github_credentials_1.GithubCredentials.fromPersonalAccessToken({
35
+ secret: options.secret ?? "GITHUB_TOKEN",
36
+ });
26
37
  const approveJob = {
27
38
  ...github.runsOnConfig(options),
28
39
  permissions: {
29
40
  pullRequests: workflows_model_1.JobPermission.WRITE,
30
41
  },
31
- if: condition,
42
+ if: (() => this.renderCondition()),
43
+ environment: credentials.environment,
32
44
  steps: [
45
+ ...credentials.setupSteps,
33
46
  {
34
47
  run: 'gh pr review --approve "$PR_NUMBER" --repo "$GH_REPO"',
35
48
  env: {
36
- GH_TOKEN: `\${{ secrets.${secret} }}`,
49
+ GH_TOKEN: credentials.tokenRef,
37
50
  GH_REPO: "${{ github.repository }}",
38
51
  PR_NUMBER: "${{ github.event.pull_request.number }}",
39
52
  },
40
53
  },
41
54
  ],
42
55
  };
43
- const workflow = github.addWorkflow("auto-approve");
44
- workflow.on({
56
+ this.workflow = github.addWorkflow("auto-approve");
57
+ this.workflow.on({
45
58
  // The 'pull request' event gives the workflow 'read-only' permissions on some
46
59
  // pull requests (such as the ones from dependabot) when using the `GITHUB_TOKEN`
47
60
  // security token. This prevents the workflow from approving these pull requests.
@@ -62,8 +75,44 @@ class AutoApprove extends component_1.Component {
62
75
  ],
63
76
  },
64
77
  });
65
- workflow.addJobs({ approve: approveJob });
78
+ this.workflow.addJobs({ [JOB_ID]: approveJob });
79
+ }
80
+ /**
81
+ * Auto-approve pull requests from this source, in addition to the configured sources.
82
+ *
83
+ * Adding a source replaces the default source.
84
+ */
85
+ addSource(source) {
86
+ if (this.allowedUsernames) {
87
+ throw new Error("Cannot add sources while the deprecated 'allowedUsernames' is used. Replace 'allowedUsernames' with 'sources: [PullRequestSource.fromUsers({ logins })]'.");
88
+ }
89
+ this.sourcesProvided = true;
90
+ this.sources.push(source);
91
+ }
92
+ renderCondition() {
93
+ const label = `contains(github.event.pull_request.labels.*.name, '${this.label.replace(/'/g, "''")}')`;
94
+ if (this.allowedUsernames) {
95
+ if (this.allowedUsernames.length === 0) {
96
+ return label;
97
+ }
98
+ const users = this.allowedUsernames
99
+ .map((u) => `github.event.pull_request.user.login == '${u}'`)
100
+ .join(" || ");
101
+ return `${label} && (${users})`;
102
+ }
103
+ const sources = this.sourcesProvided
104
+ ? this.sources
105
+ : [pull_request_source_1.PullRequestSource.fromUsers({ logins: DEFAULT_USERNAMES })];
106
+ if (sources.length === 0) {
107
+ throw new Error("AutoApprove has no sources, so no pull request would ever be approved. Add at least one source with the 'sources' option or 'AutoApprove.addSource()'.");
108
+ }
109
+ // Keeps the rendered condition of the default source stable.
110
+ if (sources.length === 1) {
111
+ return `${label} && ${sources[0]._toCondition()}`;
112
+ }
113
+ const conditions = sources.map((s) => s._toCondition()).join(" || ");
114
+ return `${label} && (${conditions})`;
66
115
  }
67
116
  }
68
117
  exports.AutoApprove = AutoApprove;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1hcHByb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdGh1Yi9hdXRvLWFwcHJvdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLHVEQUFrRDtBQUNsRCw0Q0FBeUM7QUFvQ3pDOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEscUJBQVM7O0lBQ3hCLEtBQUssQ0FBUztJQUU5QixZQUFZLE1BQWMsRUFBRSxVQUE4QixFQUFFO1FBQzFELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLGNBQWMsQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRFLElBQUksU0FBUyxHQUFHLHNEQUFzRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDckYsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLFNBQVMsSUFBSSxPQUFPLENBQUM7WUFDckIsU0FBUyxJQUFJLFNBQVM7aUJBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsNENBQTRDLENBQUMsR0FBRyxDQUFDO2lCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEIsU0FBUyxJQUFJLEdBQUcsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUM7UUFFaEQsTUFBTSxVQUFVLEdBQVE7WUFDdEIsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUMvQixXQUFXLEVBQUU7Z0JBQ1gsWUFBWSxFQUFFLCtCQUFhLENBQUMsS0FBSzthQUNsQztZQUNELEVBQUUsRUFBRSxTQUFTO1lBQ2IsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEdBQUcsRUFBRSx1REFBdUQ7b0JBQzVELEdBQUcsRUFBRTt3QkFDSCxRQUFRLEVBQUUsZ0JBQWdCLE1BQU0sS0FBSzt3QkFDckMsT0FBTyxFQUFFLDBCQUEwQjt3QkFDbkMsU0FBUyxFQUFFLHlDQUF5QztxQkFDckQ7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDViw4RUFBOEU7WUFDOUUsaUZBQWlGO1lBQ2pGLGlGQUFpRjtZQUNqRixtRkFBbUY7WUFDbkYsbUZBQW1GO1lBQ25GLHdDQUF3QztZQUN4QyxFQUFFO1lBQ0Ysa0ZBQWtGO1lBQ2xGLHdGQUF3RjtZQUN4RixnRkFBZ0Y7WUFDaEYsaUJBQWlCLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRTtvQkFDTCxTQUFTO29CQUNULFFBQVE7b0JBQ1IsYUFBYTtvQkFDYixVQUFVO29CQUNWLGtCQUFrQjtpQkFDbkI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDOztBQTdESCxrQ0E4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdpdEh1YiB9IGZyb20gXCIuL2dpdGh1YlwiO1xuaW1wb3J0IHR5cGUgeyBKb2IgfSBmcm9tIFwiLi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tIFwiLi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUnVuc09uT3B0aW9ucyB9IGZyb20gXCIuLi9ydW5uZXItb3B0aW9uc1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yICdBdXRvQXBwcm92ZSdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQXBwcm92ZU9wdGlvbnMgZXh0ZW5kcyBSdW5zT25PcHRpb25zIHtcbiAgLyoqXG4gICAqIE9ubHkgcHVsbCByZXF1ZXN0cyBhdXRob3JlZCBieSB0aGVzZSBHaXRodWIgdXNlcm5hbWVzIHdpbGwgYmUgYXV0by1hcHByb3ZlZC5cbiAgICogQGRlZmF1bHQgWydnaXRodWItYm90J11cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRVc2VybmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT25seSBwdWxsIHJlcXVlc3RzIHdpdGggdGhpcyBsYWJlbCB3aWxsIGJlIGF1dG8tYXBwcm92ZWQuXG4gICAqIEBkZWZhdWx0ICdhdXRvLWFwcHJvdmUnXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBHaXRIdWIgc2VjcmV0IG5hbWUgd2hpY2ggY29udGFpbnMgYSBHaXRIdWIgQWNjZXNzIFRva2VuXG4gICAqIHdpdGggd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoZSBgcHVsbF9yZXF1ZXN0YCBzY29wZS5cbiAgICpcbiAgICogVGhpcyB0b2tlbiBpcyB1c2VkIHRvIGFwcHJvdmUgcHVsbCByZXF1ZXN0cy5cbiAgICpcbiAgICogR2l0aHViIGZvcmJpZHMgYW4gaWRlbnRpdHkgdG8gYXBwcm92ZSBpdHMgb3duIHB1bGwgcmVxdWVzdC5cbiAgICogSWYgeW91ciBwcm9qZWN0IHByb2R1Y2VzIGF1dG9tYXRlZCBwdWxsIHJlcXVlc3RzIHVzaW5nIHRoZSBHaXRodWIgZGVmYXVsdCB0b2tlbiAtXG4gICAqIHtAbGluayBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5jZS9hdXRoZW50aWNhdGlvbi1pbi1hLXdvcmtmbG93IGBHSVRIVUJfVE9LRU5gIH1cbiAgICogLSB0aGF0IHlvdSB3b3VsZCBsaWtlIGF1dG8gYXBwcm92ZWQsIHN1Y2ggYXMgd2hlbiB1c2luZyB0aGUgYGRlcHNVcGdyYWRlYCBwcm9wZXJ0eSBpblxuICAgKiBgTm9kZVByb2plY3RPcHRpb25zYCwgdGhlbiB5b3UgbXVzdCB1c2UgYSBkaWZmZXJlbnQgdG9rZW4gaGVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJHSVRIVUJfVE9LRU5cIlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEF1dG8gYXBwcm92ZSBwdWxsIHJlcXVlc3RzIHRoYXQgbWVldCBhIGNyaXRlcmlhXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRvQXBwcm92ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGdpdGh1YjogR2l0SHViLCBvcHRpb25zOiBBdXRvQXBwcm92ZU9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKGdpdGh1Yi5wcm9qZWN0KTtcblxuICAgIHRoaXMubGFiZWwgPSBvcHRpb25zLmxhYmVsID8/IFwiYXV0by1hcHByb3ZlXCI7XG4gICAgY29uc3QgdXNlcm5hbWVzID0gb3B0aW9ucy5hbGxvd2VkVXNlcm5hbWVzID8/IFtcImdpdGh1Yi1hY3Rpb25zW2JvdF1cIl07XG5cbiAgICBsZXQgY29uZGl0aW9uID0gYGNvbnRhaW5zKGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubGFiZWxzLioubmFtZSwgJyR7dGhpcy5sYWJlbH0nKWA7XG4gICAgaWYgKHVzZXJuYW1lcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25kaXRpb24gKz0gXCIgJiYgKFwiO1xuICAgICAgY29uZGl0aW9uICs9IHVzZXJuYW1lc1xuICAgICAgICAubWFwKCh1KSA9PiBgZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC51c2VyLmxvZ2luID09ICcke3V9J2ApXG4gICAgICAgIC5qb2luKFwiIHx8IFwiKTtcbiAgICAgIGNvbmRpdGlvbiArPSBcIilcIjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWNyZXQgPSBvcHRpb25zLnNlY3JldCA/PyBcIkdJVEhVQl9UT0tFTlwiO1xuXG4gICAgY29uc3QgYXBwcm92ZUpvYjogSm9iID0ge1xuICAgICAgLi4uZ2l0aHViLnJ1bnNPbkNvbmZpZyhvcHRpb25zKSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIHB1bGxSZXF1ZXN0czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgIH0sXG4gICAgICBpZjogY29uZGl0aW9uLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bjogJ2doIHByIHJldmlldyAtLWFwcHJvdmUgXCIkUFJfTlVNQkVSXCIgLS1yZXBvIFwiJEdIX1JFUE9cIicsXG4gICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBHSF9UT0tFTjogYFxcJHt7IHNlY3JldHMuJHtzZWNyZXR9IH19YCxcbiAgICAgICAgICAgIEdIX1JFUE86IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5IH19XCIsXG4gICAgICAgICAgICBQUl9OVU1CRVI6IFwiJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubnVtYmVyIH19XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IHdvcmtmbG93ID0gZ2l0aHViLmFkZFdvcmtmbG93KFwiYXV0by1hcHByb3ZlXCIpO1xuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIC8vIFRoZSAncHVsbCByZXF1ZXN0JyBldmVudCBnaXZlcyB0aGUgd29ya2Zsb3cgJ3JlYWQtb25seScgcGVybWlzc2lvbnMgb24gc29tZVxuICAgICAgLy8gcHVsbCByZXF1ZXN0cyAoc3VjaCBhcyB0aGUgb25lcyBmcm9tIGRlcGVuZGFib3QpIHdoZW4gdXNpbmcgdGhlIGBHSVRIVUJfVE9LRU5gXG4gICAgICAvLyBzZWN1cml0eSB0b2tlbi4gVGhpcyBwcmV2ZW50cyB0aGUgd29ya2Zsb3cgZnJvbSBhcHByb3ZpbmcgdGhlc2UgcHVsbCByZXF1ZXN0cy5cbiAgICAgIC8vIEdpdGh1YiBoYXMgcGxhY2VkIHRoaXMgZ3VhcmQgc28gYXMgdG8gcHJldmVudCBzZWN1cml0eSBhdHRhY2tzIGJ5IHNpbXBseSBvcGVuaW5nXG4gICAgICAvLyBhIHB1bGwgcmVxdWVzdCBhbmQgdHJpZ2dlcmluZyBhIHdvcmtmbG93IG9uIGEgY29tbWl0IHRoYXQgd2FzIG5vdCB2ZXR0ZWQgdG8gbWFrZVxuICAgICAgLy8gdW5pbnRlbmRlZCBjaGFuZ2VzIHRvIHRoZSByZXBvc2l0b3J5LlxuICAgICAgLy9cbiAgICAgIC8vIEluc3RlYWQgdXNlIHRoZSAncHVsbCByZXF1ZXN0IHRhcmdldCcgZXZlbnQgaGVyZSB0aGF0IGdpdmVzIHRoZSBHaXRodWIgd29ya2Zsb3dcbiAgICAgIC8vICdyZWFkLXdyaXRlJyBwZXJtaXNzaW9ucy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UsIHRoaXMgZXZlbnQsIHVubGlrZSB0aGUgJ3B1bGwgcmVxdWVzdCdcbiAgICAgIC8vIGV2ZW50IHJlZmVyZW5jZXMgdGhlIEJBU0UgY29tbWl0IG9mIHRoZSBwdWxsIHJlcXVlc3QgYW5kIG5vdCB0aGUgSEVBRCBjb21taXQuXG4gICAgICBwdWxsUmVxdWVzdFRhcmdldDoge1xuICAgICAgICB0eXBlczogW1xuICAgICAgICAgIFwibGFiZWxlZFwiLFxuICAgICAgICAgIFwib3BlbmVkXCIsXG4gICAgICAgICAgXCJzeW5jaHJvbml6ZVwiLFxuICAgICAgICAgIFwicmVvcGVuZWRcIixcbiAgICAgICAgICBcInJlYWR5X2Zvcl9yZXZpZXdcIixcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgd29ya2Zsb3cuYWRkSm9icyh7IGFwcHJvdmU6IGFwcHJvdmVKb2IgfSk7XG4gIH1cbn1cbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1hcHByb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdGh1Yi9hdXRvLWFwcHJvdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDZEQUF5RDtBQUN6RCwrREFBMEQ7QUFHMUQsdURBQWtEO0FBQ2xELDRDQUF5QztBQUd6QyxNQUFNLGlCQUFpQixHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNsRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUM7QUFnRXpCOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEscUJBQVM7O0lBQ3hCLEtBQUssQ0FBUztJQUViLFFBQVEsQ0FBaUI7SUFDekIsT0FBTyxDQUFzQjtJQUN0QyxlQUFlLENBQVU7SUFDaEIsZ0JBQWdCLENBQVk7SUFFN0MsWUFBWSxNQUFjLEVBQUUsVUFBOEIsRUFBRTtRQUMxRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRCLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxNQUFNLElBQUksS0FBSyxDQUNiLG1IQUFtSCxDQUNwSCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FDYixtR0FBbUcsQ0FDcEcsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1QyxNQUFNLFdBQVcsR0FDZixPQUFPLENBQUMsV0FBVztZQUNuQixzQ0FBaUIsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDeEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksY0FBYzthQUN6QyxDQUFDLENBQUM7UUFFTCxNQUFNLFVBQVUsR0FBUTtZQUN0QixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQy9CLFdBQVcsRUFBRTtnQkFDWCxZQUFZLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO2FBQ2xDO1lBQ0QsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFRO1lBQ3pDLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVztZQUNwQyxLQUFLLEVBQUU7Z0JBQ0wsR0FBRyxXQUFXLENBQUMsVUFBVTtnQkFDekI7b0JBQ0UsR0FBRyxFQUFFLHVEQUF1RDtvQkFDNUQsR0FBRyxFQUFFO3dCQUNILFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTt3QkFDOUIsT0FBTyxFQUFFLDBCQUEwQjt3QkFDbkMsU0FBUyxFQUFFLHlDQUF5QztxQkFDckQ7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDZiw4RUFBOEU7WUFDOUUsaUZBQWlGO1lBQ2pGLGlGQUFpRjtZQUNqRixtRkFBbUY7WUFDbkYsbUZBQW1GO1lBQ25GLHdDQUF3QztZQUN4QyxFQUFFO1lBQ0Ysa0ZBQWtGO1lBQ2xGLHdGQUF3RjtZQUN4RixnRkFBZ0Y7WUFDaEYsaUJBQWlCLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRTtvQkFDTCxTQUFTO29CQUNULFFBQVE7b0JBQ1IsYUFBYTtvQkFDYixVQUFVO29CQUNWLGtCQUFrQjtpQkFDbkI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE1BQXlCO1FBQ3hDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FDYiwySkFBMkosQ0FDNUosQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLEtBQUssR0FBRyxzREFBc0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFdkcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ2hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsNENBQTRDLENBQUMsR0FBRyxDQUFDO2lCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEIsT0FBTyxHQUFHLEtBQUssUUFBUSxLQUFLLEdBQUcsQ0FBQztRQUNsQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2QsQ0FBQyxDQUFDLENBQUMsdUNBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWpFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLHdKQUF3SixDQUN6SixDQUFDO1FBQ0osQ0FBQztRQUVELDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLEtBQUssT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sR0FBRyxLQUFLLFFBQVEsVUFBVSxHQUFHLENBQUM7SUFDdkMsQ0FBQzs7QUExSEgsa0NBMkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHaXRIdWIgfSBmcm9tIFwiLi9naXRodWJcIjtcbmltcG9ydCB7IEdpdGh1YkNyZWRlbnRpYWxzIH0gZnJvbSBcIi4vZ2l0aHViLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgeyBQdWxsUmVxdWVzdFNvdXJjZSB9IGZyb20gXCIuL3B1bGwtcmVxdWVzdC1zb3VyY2VcIjtcbmltcG9ydCB0eXBlIHsgR2l0aHViV29ya2Zsb3cgfSBmcm9tIFwiLi93b3JrZmxvd3NcIjtcbmltcG9ydCB0eXBlIHsgSm9iIH0gZnJvbSBcIi4vd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcIi4vd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJ1bnNPbk9wdGlvbnMgfSBmcm9tIFwiLi4vcnVubmVyLW9wdGlvbnNcIjtcblxuY29uc3QgREVGQVVMVF9VU0VSTkFNRVMgPSBbXCJnaXRodWItYWN0aW9uc1tib3RdXCJdO1xuY29uc3QgSk9CX0lEID0gXCJhcHByb3ZlXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgJ0F1dG9BcHByb3ZlJ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9BcHByb3ZlT3B0aW9ucyBleHRlbmRzIFJ1bnNPbk9wdGlvbnMge1xuICAvKipcbiAgICogT25seSBwdWxsIHJlcXVlc3RzIGZyb20gb25lIG9mIHRoZXNlIHNvdXJjZXMgd2lsbCBiZSBhdXRvLWFwcHJvdmVkLlxuICAgKlxuICAgKiBDb21wb25lbnRzIHRoYXQgY3JlYXRlIHB1bGwgcmVxdWVzdHMgY2FuIGFkZCBtb3JlIHNvdXJjZXMgd2l0aCBgQXV0b0FwcHJvdmUuYWRkU291cmNlKClgLlxuICAgKiBQcm92aWRpbmcgc291cmNlcywgZWl0aGVyIGhlcmUgb3Igd2l0aCBgYWRkU291cmNlKClgLCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzb3VyY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtQdWxsUmVxdWVzdFNvdXJjZS5mcm9tVXNlcnMoeyBsb2dpbnM6IFtcImdpdGh1Yi1hY3Rpb25zW2JvdF1cIl0gfSldXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VzPzogUHVsbFJlcXVlc3RTb3VyY2VbXTtcblxuICAvKipcbiAgICogT25seSBwdWxsIHJlcXVlc3RzIGF1dGhvcmVkIGJ5IHRoZXNlIEdpdGh1YiB1c2VybmFtZXMgd2lsbCBiZSBhdXRvLWFwcHJvdmVkLlxuICAgKlxuICAgKiBBbiBlbXB0eSBsaXN0IGFwcHJvdmVzIHB1bGwgcmVxdWVzdHMgZnJvbSBhbnkgdXNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgWydnaXRodWItYWN0aW9uc1tib3RdJ11cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzb3VyY2VzYCB3aXRoIGBQdWxsUmVxdWVzdFNvdXJjZS5mcm9tVXNlcnMoeyBsb2dpbnMgfSlgIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkVXNlcm5hbWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9ubHkgcHVsbCByZXF1ZXN0cyB3aXRoIHRoaXMgbGFiZWwgd2lsbCBiZSBhdXRvLWFwcHJvdmVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIGluIGFkZGl0aW9uIHRvIG1hdGNoaW5nIG9uZSBvZiB0aGUgYHNvdXJjZXNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYXV0by1hcHByb3ZlJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFscyB1c2VkIHRvIGFwcHJvdmUgcHVsbCByZXF1ZXN0cy5cbiAgICpcbiAgICogR2l0aHViIGZvcmJpZHMgYW4gaWRlbnRpdHkgdG8gYXBwcm92ZSBpdHMgb3duIHB1bGwgcmVxdWVzdC5cbiAgICogVGhlc2UgY3JlZGVudGlhbHMgbXVzdCBiZWxvbmcgdG8gYSBkaWZmZXJlbnQgaWRlbnRpdHkgdGhhbiB0aGUgb25lIGNyZWF0aW5nIHRoZSBwdWxsIHJlcXVlc3RzLlxuICAgKiBVc2UgYGVudmlyb25tZW50YCBvbiB0aGUgY3JlZGVudGlhbHMgdG8gcmVzdHJpY3Qgd2hpY2ggYnJhbmNoZXMgY2FuIGFjY2VzcyB0aGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSB3b3JrZmxvdydzIGBHSVRIVUJfVE9LRU5gXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFscz86IEdpdGh1YkNyZWRlbnRpYWxzO1xuXG4gIC8qKlxuICAgKiBBIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyBhIEdpdEh1YiBBY2Nlc3MgVG9rZW5cbiAgICogd2l0aCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGBwdWxsX3JlcXVlc3RgIHNjb3BlLlxuICAgKlxuICAgKiBUaGlzIHRva2VuIGlzIHVzZWQgdG8gYXBwcm92ZSBwdWxsIHJlcXVlc3RzLlxuICAgKlxuICAgKiBHaXRodWIgZm9yYmlkcyBhbiBpZGVudGl0eSB0byBhcHByb3ZlIGl0cyBvd24gcHVsbCByZXF1ZXN0LlxuICAgKiBJZiB5b3VyIHByb2plY3QgcHJvZHVjZXMgYXV0b21hdGVkIHB1bGwgcmVxdWVzdHMgdXNpbmcgdGhlIEdpdGh1YiBkZWZhdWx0IHRva2VuIC1cbiAgICoge0BsaW5rIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL2F1dGhlbnRpY2F0aW9uLWluLWEtd29ya2Zsb3cgYEdJVEhVQl9UT0tFTmAgfVxuICAgKiAtIHRoYXQgeW91IHdvdWxkIGxpa2UgYXV0byBhcHByb3ZlZCwgc3VjaCBhcyB3aGVuIHVzaW5nIHRoZSBgZGVwc1VwZ3JhZGVgIHByb3BlcnR5IGluXG4gICAqIGBOb2RlUHJvamVjdE9wdGlvbnNgLCB0aGVuIHlvdSBtdXN0IHVzZSBhIGRpZmZlcmVudCB0b2tlbiBoZXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIkdJVEhVQl9UT0tFTlwiXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgY3JlZGVudGlhbHNgIHdpdGggYEdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHsgc2VjcmV0IH0pYCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEF1dG8gYXBwcm92ZSBwdWxsIHJlcXVlc3RzIHRoYXQgbWVldCBhIGNyaXRlcmlhXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRvQXBwcm92ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2Zsb3c6IEdpdGh1YldvcmtmbG93O1xuICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZXM6IFB1bGxSZXF1ZXN0U291cmNlW107XG4gIHByaXZhdGUgc291cmNlc1Byb3ZpZGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRVc2VybmFtZXM/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihnaXRodWI6IEdpdEh1Yiwgb3B0aW9uczogQXV0b0FwcHJvdmVPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihnaXRodWIucHJvamVjdCk7XG5cbiAgICBpZiAob3B0aW9ucy5zb3VyY2VzICYmIG9wdGlvbnMuYWxsb3dlZFVzZXJuYW1lcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgb25lIG9mICdzb3VyY2VzJyBvciAnYWxsb3dlZFVzZXJuYW1lcycgbWF5IGJlIHNwZWNpZmllZCwgbm90IGJvdGguIFJlbW92ZSB0aGUgZGVwcmVjYXRlZCAnYWxsb3dlZFVzZXJuYW1lcycuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5jcmVkZW50aWFscyAmJiBvcHRpb25zLnNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgb25lIG9mICdjcmVkZW50aWFscycgb3IgJ3NlY3JldCcgbWF5IGJlIHNwZWNpZmllZCwgbm90IGJvdGguIFJlbW92ZSB0aGUgZGVwcmVjYXRlZCAnc2VjcmV0Jy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgPz8gXCJhdXRvLWFwcHJvdmVcIjtcbiAgICB0aGlzLmFsbG93ZWRVc2VybmFtZXMgPSBvcHRpb25zLmFsbG93ZWRVc2VybmFtZXM7XG4gICAgdGhpcy5zb3VyY2VzUHJvdmlkZWQgPSBvcHRpb25zLnNvdXJjZXMgIT09IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNvdXJjZXMgPSBbLi4uKG9wdGlvbnMuc291cmNlcyA/PyBbXSldO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPVxuICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA/P1xuICAgICAgR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oe1xuICAgICAgICBzZWNyZXQ6IG9wdGlvbnMuc2VjcmV0ID8/IFwiR0lUSFVCX1RPS0VOXCIsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IGFwcHJvdmVKb2I6IEpvYiA9IHtcbiAgICAgIC4uLmdpdGh1Yi5ydW5zT25Db25maWcob3B0aW9ucyksXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBwdWxsUmVxdWVzdHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgaWY6ICgoKSA9PiB0aGlzLnJlbmRlckNvbmRpdGlvbigpKSBhcyBhbnksXG4gICAgICBlbnZpcm9ubWVudDogY3JlZGVudGlhbHMuZW52aXJvbm1lbnQsXG4gICAgICBzdGVwczogW1xuICAgICAgICAuLi5jcmVkZW50aWFscy5zZXR1cFN0ZXBzLFxuICAgICAgICB7XG4gICAgICAgICAgcnVuOiAnZ2ggcHIgcmV2aWV3IC0tYXBwcm92ZSBcIiRQUl9OVU1CRVJcIiAtLXJlcG8gXCIkR0hfUkVQT1wiJyxcbiAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIEdIX1RPS0VOOiBjcmVkZW50aWFscy50b2tlblJlZixcbiAgICAgICAgICAgIEdIX1JFUE86IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5IH19XCIsXG4gICAgICAgICAgICBQUl9OVU1CRVI6IFwiJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubnVtYmVyIH19XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIHRoaXMud29ya2Zsb3cgPSBnaXRodWIuYWRkV29ya2Zsb3coXCJhdXRvLWFwcHJvdmVcIik7XG4gICAgdGhpcy53b3JrZmxvdy5vbih7XG4gICAgICAvLyBUaGUgJ3B1bGwgcmVxdWVzdCcgZXZlbnQgZ2l2ZXMgdGhlIHdvcmtmbG93ICdyZWFkLW9ubHknIHBlcm1pc3Npb25zIG9uIHNvbWVcbiAgICAgIC8vIHB1bGwgcmVxdWVzdHMgKHN1Y2ggYXMgdGhlIG9uZXMgZnJvbSBkZXBlbmRhYm90KSB3aGVuIHVzaW5nIHRoZSBgR0lUSFVCX1RPS0VOYFxuICAgICAgLy8gc2VjdXJpdHkgdG9rZW4uIFRoaXMgcHJldmVudHMgdGhlIHdvcmtmbG93IGZyb20gYXBwcm92aW5nIHRoZXNlIHB1bGwgcmVxdWVzdHMuXG4gICAgICAvLyBHaXRodWIgaGFzIHBsYWNlZCB0aGlzIGd1YXJkIHNvIGFzIHRvIHByZXZlbnQgc2VjdXJpdHkgYXR0YWNrcyBieSBzaW1wbHkgb3BlbmluZ1xuICAgICAgLy8gYSBwdWxsIHJlcXVlc3QgYW5kIHRyaWdnZXJpbmcgYSB3b3JrZmxvdyBvbiBhIGNvbW1pdCB0aGF0IHdhcyBub3QgdmV0dGVkIHRvIG1ha2VcbiAgICAgIC8vIHVuaW50ZW5kZWQgY2hhbmdlcyB0byB0aGUgcmVwb3NpdG9yeS5cbiAgICAgIC8vXG4gICAgICAvLyBJbnN0ZWFkIHVzZSB0aGUgJ3B1bGwgcmVxdWVzdCB0YXJnZXQnIGV2ZW50IGhlcmUgdGhhdCBnaXZlcyB0aGUgR2l0aHViIHdvcmtmbG93XG4gICAgICAvLyAncmVhZC13cml0ZScgcGVybWlzc2lvbnMuIFRoaXMgaXMgc2FmZSBiZWNhdXNlLCB0aGlzIGV2ZW50LCB1bmxpa2UgdGhlICdwdWxsIHJlcXVlc3QnXG4gICAgICAvLyBldmVudCByZWZlcmVuY2VzIHRoZSBCQVNFIGNvbW1pdCBvZiB0aGUgcHVsbCByZXF1ZXN0IGFuZCBub3QgdGhlIEhFQUQgY29tbWl0LlxuICAgICAgcHVsbFJlcXVlc3RUYXJnZXQ6IHtcbiAgICAgICAgdHlwZXM6IFtcbiAgICAgICAgICBcImxhYmVsZWRcIixcbiAgICAgICAgICBcIm9wZW5lZFwiLFxuICAgICAgICAgIFwic3luY2hyb25pemVcIixcbiAgICAgICAgICBcInJlb3BlbmVkXCIsXG4gICAgICAgICAgXCJyZWFkeV9mb3JfcmV2aWV3XCIsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMud29ya2Zsb3cuYWRkSm9icyh7IFtKT0JfSURdOiBhcHByb3ZlSm9iIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tYXBwcm92ZSBwdWxsIHJlcXVlc3RzIGZyb20gdGhpcyBzb3VyY2UsIGluIGFkZGl0aW9uIHRvIHRoZSBjb25maWd1cmVkIHNvdXJjZXMuXG4gICAqXG4gICAqIEFkZGluZyBhIHNvdXJjZSByZXBsYWNlcyB0aGUgZGVmYXVsdCBzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgYWRkU291cmNlKHNvdXJjZTogUHVsbFJlcXVlc3RTb3VyY2UpIHtcbiAgICBpZiAodGhpcy5hbGxvd2VkVXNlcm5hbWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IGFkZCBzb3VyY2VzIHdoaWxlIHRoZSBkZXByZWNhdGVkICdhbGxvd2VkVXNlcm5hbWVzJyBpcyB1c2VkLiBSZXBsYWNlICdhbGxvd2VkVXNlcm5hbWVzJyB3aXRoICdzb3VyY2VzOiBbUHVsbFJlcXVlc3RTb3VyY2UuZnJvbVVzZXJzKHsgbG9naW5zIH0pXScuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNvdXJjZXNQcm92aWRlZCA9IHRydWU7XG4gICAgdGhpcy5zb3VyY2VzLnB1c2goc291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29uZGl0aW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFiZWwgPSBgY29udGFpbnMoZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC5sYWJlbHMuKi5uYW1lLCAnJHt0aGlzLmxhYmVsLnJlcGxhY2UoLycvZywgXCInJ1wiKX0nKWA7XG5cbiAgICBpZiAodGhpcy5hbGxvd2VkVXNlcm5hbWVzKSB7XG4gICAgICBpZiAodGhpcy5hbGxvd2VkVXNlcm5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbGFiZWw7XG4gICAgICB9XG4gICAgICBjb25zdCB1c2VycyA9IHRoaXMuYWxsb3dlZFVzZXJuYW1lc1xuICAgICAgICAubWFwKCh1KSA9PiBgZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC51c2VyLmxvZ2luID09ICcke3V9J2ApXG4gICAgICAgIC5qb2luKFwiIHx8IFwiKTtcbiAgICAgIHJldHVybiBgJHtsYWJlbH0gJiYgKCR7dXNlcnN9KWA7XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlcyA9IHRoaXMuc291cmNlc1Byb3ZpZGVkXG4gICAgICA/IHRoaXMuc291cmNlc1xuICAgICAgOiBbUHVsbFJlcXVlc3RTb3VyY2UuZnJvbVVzZXJzKHsgbG9naW5zOiBERUZBVUxUX1VTRVJOQU1FUyB9KV07XG5cbiAgICBpZiAoc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBdXRvQXBwcm92ZSBoYXMgbm8gc291cmNlcywgc28gbm8gcHVsbCByZXF1ZXN0IHdvdWxkIGV2ZXIgYmUgYXBwcm92ZWQuIEFkZCBhdCBsZWFzdCBvbmUgc291cmNlIHdpdGggdGhlICdzb3VyY2VzJyBvcHRpb24gb3IgJ0F1dG9BcHByb3ZlLmFkZFNvdXJjZSgpJy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gS2VlcHMgdGhlIHJlbmRlcmVkIGNvbmRpdGlvbiBvZiB0aGUgZGVmYXVsdCBzb3VyY2Ugc3RhYmxlLlxuICAgIGlmIChzb3VyY2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGAke2xhYmVsfSAmJiAke3NvdXJjZXNbMF0uX3RvQ29uZGl0aW9uKCl9YDtcbiAgICB9XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHNvdXJjZXMubWFwKChzKSA9PiBzLl90b0NvbmRpdGlvbigpKS5qb2luKFwiIHx8IFwiKTtcbiAgICByZXR1cm4gYCR7bGFiZWx9ICYmICgke2NvbmRpdGlvbnN9KWA7XG4gIH1cbn1cbiJdfQ==
@@ -19,7 +19,7 @@ const component_1 = require("../component");
19
19
  * @see https://mergify.com/
20
20
  */
21
21
  class AutoMerge extends component_1.Component {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoMerge", version: "0.103.27" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoMerge", version: "0.104.0" };
23
23
  lazyConditions = new Array();
24
24
  constructor(github, options = {}) {
25
25
  super(github.project);
@@ -54,7 +54,7 @@ var MergeMethod;
54
54
  * PRs will be merged once they pass required checks.
55
55
  */
56
56
  class AutoQueue extends component_1.Component {
57
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoQueue", version: "0.103.27" };
57
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoQueue", version: "0.104.0" };
58
58
  constructor(scope, options = {}) {
59
59
  super(scope);
60
60
  const workflowEngine = github_1.GitHub.of(this.project);
@@ -166,7 +166,7 @@ var VersioningStrategy;
166
166
  * on the lockfile itself will be proposed.
167
167
  */
168
168
  class Dependabot extends component_1.Component {
169
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Dependabot", version: "0.103.27" };
169
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Dependabot", version: "0.104.0" };
170
170
  /**
171
171
  * The raw dependabot configuration.
172
172
  * @see https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates
@@ -15,7 +15,7 @@ const component_1 = require("../component");
15
15
  * @see https://github.com/actions/dependency-review-action
16
16
  */
17
17
  class DependencyReview extends component_1.Component {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.DependencyReview", version: "0.103.27" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.DependencyReview", version: "0.104.0" };
19
19
  constructor(github, options = {}) {
20
20
  super(github.project);
21
21
  const commentSummary = options.commentSummaryInPr ?? "always";
@@ -42,7 +42,7 @@ const actions_const_1 = require("./actions.const");
42
42
  */
43
43
  class GithubCredentials {
44
44
  options;
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GithubCredentials", version: "0.103.27" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GithubCredentials", version: "0.104.0" };
46
46
  /**
47
47
  * Provide API access through a GitHub personal access token.
48
48
  *
@@ -21,7 +21,7 @@ const vscode_1 = require("../vscode");
21
21
  * "engines" can be used to implement our CI/CD solutions.
22
22
  */
23
23
  class GitHubProject extends project_1.Project {
24
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubProject", version: "0.103.27" };
24
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubProject", version: "0.104.0" };
25
25
  /**
26
26
  * Access all github components.
27
27
  *
@@ -16,7 +16,7 @@ const workflows_1 = require("./workflows");
16
16
  const component_1 = require("../component");
17
17
  const runner_options_1 = require("../runner-options");
18
18
  class GitHub extends component_1.Component {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHub", version: "0.103.27" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHub", version: "0.104.0" };
20
20
  /**
21
21
  * Returns the `GitHub` component of a project or `undefined` if the project
22
22
  * does not have a GitHub component.
@@ -13,6 +13,7 @@ export * from "./auto-queue";
13
13
  export * from "./stale";
14
14
  export * from "./pull-request-backport";
15
15
  export * from "./pull-request-lint";
16
+ export * from "./pull-request-source";
16
17
  export * from "./github-credentials";
17
18
  export * from "./workflow-actions";
18
19
  export * from "./workflow-jobs";
@@ -52,6 +52,7 @@ __exportStar(require("./auto-queue"), exports);
52
52
  __exportStar(require("./stale"), exports);
53
53
  __exportStar(require("./pull-request-backport"), exports);
54
54
  __exportStar(require("./pull-request-lint"), exports);
55
+ __exportStar(require("./pull-request-source"), exports);
55
56
  __exportStar(require("./github-credentials"), exports);
56
57
  __exportStar(require("./workflow-actions"), exports);
57
58
  __exportStar(require("./workflow-jobs"), exports);
@@ -60,4 +61,4 @@ __exportStar(require("./task-workflow"), exports);
60
61
  __exportStar(require("./task-workflow-job"), exports);
61
62
  __exportStar(require("./github-project"), exports);
62
63
  exports.workflows = __importStar(require("./workflows-model"));
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUV6QiwrQ0FBNkI7QUFDN0Isc0RBQW9DO0FBQ3BDLDhDQUE0QjtBQUM1QixrREFBZ0M7QUFDaEMscURBQW1DO0FBQ25DLDRDQUEwQjtBQUMxQixnREFBOEI7QUFDOUIsZ0RBQThCO0FBQzlCLGlEQUErQjtBQUMvQiwrQ0FBNkI7QUFDN0IsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QiwwREFBd0M7QUFDeEMsc0RBQW9DO0FBQ3BDLHVEQUFxQztBQUNyQyxxREFBbUM7QUFDbkMsa0RBQWdDO0FBQ2hDLG1EQUFpQztBQUVqQyxrREFBZ0M7QUFDaEMsc0RBQW9DO0FBRXBDLG1EQUFpQztBQUVqQywrREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9naXRodWJcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kYWJvdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kZW5jeS1yZXZpZXdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtmbG93c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYWN0aW9ucy5jb25zdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYWN0aW9ucy1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWVyZ2lmeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWVyZ2UtcXVldWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ByLXRlbXBsYXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdXRvLWFwcHJvdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F1dG8tbWVyZ2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F1dG8tcXVldWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0YWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wdWxsLXJlcXVlc3QtYmFja3BvcnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3B1bGwtcmVxdWVzdC1saW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9naXRodWItY3JlZGVudGlhbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtmbG93LWFjdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtmbG93LWpvYnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dvcmtmbG93LXN0ZXBzXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2std29ya2Zsb3dcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2std29ya2Zsb3ctam9iXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2dpdGh1Yi1wcm9qZWN0XCI7XG5cbmV4cG9ydCAqIGFzIHdvcmtmbG93cyBmcm9tIFwiLi93b3JrZmxvd3MtbW9kZWxcIjtcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUV6QiwrQ0FBNkI7QUFDN0Isc0RBQW9DO0FBQ3BDLDhDQUE0QjtBQUM1QixrREFBZ0M7QUFDaEMscURBQW1DO0FBQ25DLDRDQUEwQjtBQUMxQixnREFBOEI7QUFDOUIsZ0RBQThCO0FBQzlCLGlEQUErQjtBQUMvQiwrQ0FBNkI7QUFDN0IsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QiwwREFBd0M7QUFDeEMsc0RBQW9DO0FBQ3BDLHdEQUFzQztBQUN0Qyx1REFBcUM7QUFDckMscURBQW1DO0FBQ25DLGtEQUFnQztBQUNoQyxtREFBaUM7QUFFakMsa0RBQWdDO0FBQ2hDLHNEQUFvQztBQUVwQyxtREFBaUM7QUFFakMsK0RBQStDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZ2l0aHViXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2RlcGVuZGFib3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlcGVuZGVuY3ktcmV2aWV3XCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3JrZmxvd3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FjdGlvbnMuY29uc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FjdGlvbnMtcHJvdmlkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21lcmdpZnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21lcmdlLXF1ZXVlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wci10ZW1wbGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0by1hcHByb3ZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdXRvLW1lcmdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdXRvLXF1ZXVlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGFsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVsbC1yZXF1ZXN0LWJhY2twb3J0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wdWxsLXJlcXVlc3QtbGludFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVsbC1yZXF1ZXN0LXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2l0aHViLWNyZWRlbnRpYWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3JrZmxvdy1hY3Rpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3JrZmxvdy1qb2JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3JrZmxvdy1zdGVwc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi90YXNrLXdvcmtmbG93XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YXNrLXdvcmtmbG93LWpvYlwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9naXRodWItcHJvamVjdFwiO1xuXG5leHBvcnQgKiBhcyB3b3JrZmxvd3MgZnJvbSBcIi4vd29ya2Zsb3dzLW1vZGVsXCI7XG4iXX0=
@@ -10,7 +10,7 @@ const github_1 = require("./github");
10
10
  */
11
11
  class MergeQueue extends component_1.Component {
12
12
  options;
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.MergeQueue", version: "0.103.27" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.MergeQueue", version: "0.104.0" };
14
14
  constructor(scope, options = {}) {
15
15
  super(scope);
16
16
  this.options = options;
@@ -6,7 +6,7 @@ const component_1 = require("../component");
6
6
  const util_1 = require("../util");
7
7
  const yaml_1 = require("../yaml");
8
8
  class Mergify extends component_1.Component {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Mergify", version: "0.103.27" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Mergify", version: "0.104.0" };
10
10
  rules = new Array();
11
11
  queues = new Array();
12
12
  // The actual YAML file will only be created if at least 1 rule is added.
@@ -7,7 +7,7 @@ const textfile_1 = require("../textfile");
7
7
  * Template for GitHub pull requests.
8
8
  */
9
9
  class PullRequestTemplate extends textfile_1.TextFile {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestTemplate", version: "0.103.27" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestTemplate", version: "0.104.0" };
11
11
  /**
12
12
  * Returns the `PullRequestTemplate` instance associated with a project or `undefined` if
13
13
  * there is no PullRequestTemplate.
@@ -10,7 +10,7 @@ const component_1 = require("../component");
10
10
  const json_1 = require("../json");
11
11
  const release_1 = require("../release");
12
12
  class PullRequestBackport extends component_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestBackport", version: "0.103.27" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestBackport", version: "0.104.0" };
14
14
  file;
15
15
  workflow;
16
16
  constructor(scope, options = {}) {