projen-pipelines 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -105,7 +105,7 @@
105
105
  },
106
106
  "name": "projen-pipelines",
107
107
  "readme": {
108
- "markdown": "# Projen Pipelines\n\n[![npm version](https://badge.fury.io/js/projen-pipelines.svg)](https://www.npmjs.com/package/projen-pipelines)\n\nProjen Pipelines is an open-source project that automates the generation of CI/CD pipelines using Projen,\na project configuration tool created by the inventor of AWS CDK.\nIt provides high-level abstractions for defining continuous delivery (CD) pipelines for applications,\nspecifically designed to work with the projen project configuration engine.\n\n### Key Features\n\n* Automates code generation for CI/CD pipelines\n* Supports multiple CI/CD platforms (currently GitHub Actions and GitLab CI, with more in development)\n* Provides baked-in proven defaults for pipeline configurations\n* Enables compliance-as-code integration\n* Allows easy switching between different CI/CD platforms without rewriting pipeline configurations\n* Handles complex deployment scenarios with less code\n* Manages AWS infrastructure more efficiently and straightforwardly\n\n### Benefits\n\n* Reduces repetitive work in writing and maintaining pipeline configurations\n* Ensures consistency across projects by using proven defaults\n* Simplifies compliance management by integrating it directly into pipeline definitions\n* Facilitates platform migrations (e.g., from GitHub to GitLab) by abstracting pipeline definitions\n\n## Beyond AWS CDK: A Vision for Universal CI/CD Pipeline Generation\n\nWhile Projen Pipelines currently focuses on AWS CDK applications, our vision extends far beyond this initial scope.\nWe aim to evolve into a universal CI/CD pipeline generator capable of supporting a wide variety of application types and deployment targets.\n\n### Future Direction:\n\n1. Diverse Application Support: We plan to expand our capabilities to generate pipelines for various application types, including but not limited to:\n * Traditional web applications\n * Terraform / OpenTOFU projects\n * Winglang applications\n1. Multi-Cloud Deployment: While we started with AWS, we aim to support deployments to other major cloud providers like Azure, Google Cloud Platform, and others.\n1. On-Premises and Hybrid Scenarios: We recognize the importance of on-premises and hybrid cloud setups and plan to cater to these deployment models.\n1. Framework Agnostic: Our goal is to make Projen Pipelines adaptable to work with various development frameworks and tools, not just those related to AWS or cloud deployments.\n1. Extensibility: We're designing the system to be easily extensible, allowing the community to contribute modules for new application types, deployment targets, or CI/CD platforms.\n\nBy broadening our scope, we aim to create a tool that can standardize and simplify CI/CD pipeline creation across the entire spectrum of modern application development and deployment scenarios.\nWe invite the community to join us in this journey, contributing ideas, use cases, and code to help realize this vision.\n\n## How Projen Pipelines work\n![High level Projen Pipelines Overview](documentation/overview.png)\n\nUnder the hood, after you define the pipeline and select the target engine you want to work on, we use code generation methods to create the required CI/CD pipeline in your project.\n\nWe are considering allowing the selection of multiple engines going forward - please let us know if this is a feature you would use!\n\n## Getting Started\n\n### Installation\n\nTo install the package, add the package `projen-pipelines` to your projects devDeps in your projen configuration file.\n\nAfter installing the package, you can import and use the constructs to define your CDK Pipelines.\n\nYou will also have to setup an IAM role that can be used by GitHub Actions. You can find a tutorial on how set this up here: [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)\n\n### Usage with AWS CDK\n\nYou can start using the constructs provided by Projen Pipelines in your AWS CDK applications. Here's a brief example:\n\n```typescript\nimport { awscdk } from 'projen';\nimport { GithubCDKPipeline } from 'projen-pipelines';\n\n// Define your AWS CDK TypeScript App\nconst app = new awscdk.AwsCdkTypeScriptApp({\n cdkVersion: '2.150.0',\n name: 'my-awesome-app',\n defaultReleaseBranch: 'main',\n devDeps: [\n 'projen-pipelines',\n ],\n});\n\n// Create the pipeline\nnew GithubCDKPipeline(app, {\n stackPrefix: 'MyApp',\n iamRoleArns: {\n default: 'arn:aws:iam::123456789012:role/GithubDeploymentRole',\n },\n pkgNamespace: '@company-assemblies',\n useGithubPackagesForAssembly: true,\n stages: [\n {\n name: 'dev',\n env: { account: '123456789012', region: 'eu-central-1' },\n }, {\n name: 'prod',\n manualApproval: true,\n env: {account: '123456789012', region: 'eu-central-1' },\n }],\n});\n```\n\nAfter running projen (`npx projen`) a new file called `src/app.ts` will be created and contain a specialized CDK App class for your project.\n\nYou can then use this in your `main.ts` to configure your deployment.\n\n```typescript\nimport { PipelineApp } from './app';\nimport { BackendStack } from './stack';\n\nconst app = new PipelineApp({\n provideDevStack: (scope, id, props) => {\n return new BackendStack(scope, id, {\n ...props,\n apiHostname: 'api-dev',\n myConfigSetting: 'value-for-dev',\n });\n },\n provideProdStack: (scope, id, props) => {\n return new BackendStack(scope, id, {\n ...props,\n apiHostname: 'api',\n myConfigSetting: 'value-for-prod',\n });\n },\n providePersonalStack: (scope, id, props) => {\n return new BackendStack(scope, id, {\n ...props,\n apiHostname: `api-${props.stageName}`,\n myConfigSetting: 'value-for-personal-stage',\n });\n },\n});\n\napp.synth();\n```\n\n### Setting Up Trust Relationships Between Accounts\n\nWhen planning to manage multiple staging environments, you will need to establish trust relationships. This process centralizes deployment control, improving operational efficiency and security by consolidating deployment management through a singular, monitored channel. Here is a simplified diagram for the setup:\n\n![Trust relationship](documentation/trust.svg)\n\n#### Step 1: Bootstrapping Each Account\n\nBootstrapping initializes the AWS CDK environment in each account. It prepares the account to work with AWS CDK apps deployed from other accounts. Use the `cdk bootstrap` command for this purpose. Replace `<deployment_account_id>` with the actual AWS account ID of your deployment account.\n\nYou can use the [CloudShell](https://aws.amazon.com/cloudshell/) to bootstrap each staging account:\n\n```bash\ncdk bootstrap --trust <deployment_account_id> --cloudformation-execution-policies \"arn:aws:iam::aws:policy/AdministratorAccess\"\n```\n\n**Note:**\n\nWhile `AdministratorAccess` grants full access to all AWS services and resources, it's not recommended for production environments due to security risks. Instead, create custom IAM policies that grant only the necessary permissions required for deployment operations.\n\n### Deployment\n\nThe `<Engine>CDKPipeline` class creates and adds several tasks to the projen project that then can be used in your pipeline to deploy your application to AWS.\n\nHere's a brief description of each one:\n\n1. **deploy:personal** - This task deploys the application's personal stage, which is a distinct, isolated deployment of the application. The personal stage is intended for personal use, such as testing and development.\n\n2. **watch:personal** - This task deploys the personal stage of the application in watch mode. In this mode, the AWS CDK monitors your application source files for changes, automatically re-synthesizing and deploying when it detects any changes.\n\n3. **diff:personal** - This task compares the deployed personal stage with the current state of the application code. It's used to understand what changes would be made if the application were deployed.\n\n4. **destroy:personal** - This task destroys the resources created for the personal stage of the application.\n\n5. **deploy:feature** - This task deploys the application's feature stage. The feature stage is used for new features testing before these are merged into the main branch.\n\n6. **diff:feature** - This task is similar to `diff:personal`, but for the feature stage.\n\n7. **destroy:feature** - This task destroys the resources created for the feature stage of the application.\n\n8. **deploy:<stageName>** - This task deploys a specific stage of the application (like 'dev' or 'prod').\n\n9. **diff:<stageName>** - This task compares the specified application stage with the current state of the application code.\n\n10. **publish:assets** - This task publishes the CDK assets to all accounts. This is useful when the CDK application uses assets like Docker images or files from the S3 bucket.\n\n11. **bump** - This task bumps the version based on the latest git tag and pushes the updated tag to the git repository.\n\n12. **release:push-assembly** - This task creates a manifest, bumps the version without creating a git tag, and publishes the cloud assembly to your registry.\n\nRemember that these tasks are created and managed automatically by the `CDKPipeline` class. You can run these tasks using the `npx projen TASK_NAME` command.\n\n## Current Status\n\nProjen-Pipelines is currently in version 0.x, awaiting Projen's 1.0 release. Despite its pre-1.0 status, it's being used in several production environments.\n\n## Contributing\n\n### By raising feature requests or issues\n\nUse the Github integrated \"[Issues](https://github.com/taimos/projen-pipelines/issues/new)\" view to create an item that you would love to have added to our open source project.\n\n***No request is too big or too small*** - get your thoughts created and we'll get back to you if we have questions!\n\n### By committing code\n\nWe welcome all contributions to Projen Pipelines! Here's how you can get started:\n\n1. **Fork the Repository**: Click the 'Fork' button at the top right of this page to duplicate this repository in your GitHub account.\n\n2. **Clone your Fork**: Clone the forked repository to your local machine.\n\n```bash\ngit clone https://github.com/<your_username>/projen-pipelines.git\n```\n\n3. **Create a Branch**: To keep your work organized, create a branch for your contribution.\n\n```bash\ngit checkout -b my-branch\n```\n\n4. **Make your Changes**: Make your changes, additions, or fixes to the codebase. Remember to follow the existing code style.\n\n5. **Test your Changes**: Before committing your changes, make sure to test them to ensure they work as expected and do not introduce bugs.\n\n6. **Commit your Changes**: Commit your changes with a descriptive commit message using conventional commit messages.\n\n```bash\ngit commit -m \"feat: Your descriptive commit message\"\n```\n\n7. **Push to your Fork**: Push your commits to the branch in your forked repository.\n\n```bash\ngit push -u origin my-branch\n```\n\n8. **Submit a Pull Request**: Once your changes are ready to be reviewed, create a pull request from your forked repository's branch into the `main` branch of this repository.\n\nYour pull request will be reviewed and hopefully merged quickly. Thanks for contributing!\n\n### How to test changes?\nThe best way currently is to test things locally or - if you have a working stall of all supported CI/CD tools - manually test the functionalities there in diferent projects.\n\n_For local testing:_\nUsing `yalc push` you can install the project locally to your local yalc package manager. You can also use `npm run local-push` instead of this.\n\nWith `yalc add projen-pipelines` you can then use it in a local project.\n\n\n## Future Plans\n\n* Move the project to the Open Construct Foundation for broader community involvement\n* Continue expanding support for different CI/CD platforms and project types\n\nJoin us in elevating CI/CD pipeline discussions from implementation details to fundamental building blocks, and help create a more efficient, standardized approach to pipeline development!\n\n## Known issues\n\n### Environment variable not recognized during `npx projen`\n\nWhen attempting to run `npx projen`, users may encounter an error related to environment variable substitution within configuration files. Specifically, the `${GITHUB_TOKEN}` placeholder fails to be replaced.\n\n#### Solution\n\nTo resolve this issue, prefix the `npx projen` command with the `GITHUB_TOKEN=` environment variable:\n\n```bash\nGITHUB_TOKEN= npx projen\n```\n"
108
+ "markdown": "# Projen Pipelines\n\n[![npm version](https://badge.fury.io/js/projen-pipelines.svg)](https://www.npmjs.com/package/projen-pipelines)\n\nProjen Pipelines is an open-source project that automates the generation of CI/CD pipelines using Projen,\na project configuration tool created by the inventor of AWS CDK.\nIt provides high-level abstractions for defining continuous delivery (CD) pipelines for applications,\nspecifically designed to work with the projen project configuration engine.\n\n### Key Features\n\n* Automates code generation for CI/CD pipelines\n* Supports multiple CI/CD platforms (currently GitHub Actions and GitLab CI, with more in development)\n* Provides baked-in proven defaults for pipeline configurations\n* Enables compliance-as-code integration\n* Allows easy switching between different CI/CD platforms without rewriting pipeline configurations\n* Handles complex deployment scenarios with less code\n* Manages AWS infrastructure more efficiently and straightforwardly\n\n### Benefits\n\n* Reduces repetitive work in writing and maintaining pipeline configurations\n* Ensures consistency across projects by using proven defaults\n* Simplifies compliance management by integrating it directly into pipeline definitions\n* Facilitates platform migrations (e.g., from GitHub to GitLab) by abstracting pipeline definitions\n\n## Beyond AWS CDK: A Vision for Universal CI/CD Pipeline Generation\n\nWhile Projen Pipelines currently focuses on AWS CDK applications, our vision extends far beyond this initial scope.\nWe aim to evolve into a universal CI/CD pipeline generator capable of supporting a wide variety of application types and deployment targets.\n\n### Future Direction:\n\n1. Diverse Application Support: We plan to expand our capabilities to generate pipelines for various application types, including but not limited to:\n * Traditional web applications\n * Terraform / OpenTOFU projects\n * Winglang applications\n1. Multi-Cloud Deployment: While we started with AWS, we aim to support deployments to other major cloud providers like Azure, Google Cloud Platform, and others.\n1. On-Premises and Hybrid Scenarios: We recognize the importance of on-premises and hybrid cloud setups and plan to cater to these deployment models.\n1. Framework Agnostic: Our goal is to make Projen Pipelines adaptable to work with various development frameworks and tools, not just those related to AWS or cloud deployments.\n1. Extensibility: We're designing the system to be easily extensible, allowing the community to contribute modules for new application types, deployment targets, or CI/CD platforms.\n\nBy broadening our scope, we aim to create a tool that can standardize and simplify CI/CD pipeline creation across the entire spectrum of modern application development and deployment scenarios.\nWe invite the community to join us in this journey, contributing ideas, use cases, and code to help realize this vision.\n\n## How Projen Pipelines work\n![High level Projen Pipelines Overview](documentation/overview.png)\n\nUnder the hood, after you define the pipeline and select the target engine you want to work on, we use code generation methods to create the required CI/CD pipeline in your project.\n\nWe are considering allowing the selection of multiple engines going forward - please let us know if this is a feature you would use!\n\n## Getting Started\n\n### Installation\n\nTo install the package, add the package `projen-pipelines` to your projects devDeps in your projen configuration file.\n\nAfter installing the package, you can import and use the constructs to define your CDK Pipelines.\n\nYou will also have to setup an IAM role that can be used by GitHub Actions. For example, create a role named `GithubDeploymentRole` in your deployment account (`123456789012`) with a policy like this to assume the CDK roles of the pipeline stages (AWS account IDs `123456789013` and `123456789014`):\n```json\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"Statement1\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Resource\": [\n \"arn:aws:iam::123456789013:role/cdk-*-123456789013-*\",\n \"arn:aws:iam::123456789014:role/cdk-*-123456789014-*\"\n ]\n }\n ]\n}\n```\n\nAdd a trust policy to this role as described in this tutorial: [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)\n\n### Usage with AWS CDK\n\nYou can start using the constructs provided by Projen Pipelines in your AWS CDK applications. Here's a brief example:\n\n```typescript\nimport { awscdk } from 'projen';\nimport { GithubCDKPipeline } from 'projen-pipelines';\n\n// Define your AWS CDK TypeScript App\nconst app = new awscdk.AwsCdkTypeScriptApp({\n cdkVersion: '2.150.0',\n name: 'my-awesome-app',\n defaultReleaseBranch: 'main',\n devDeps: [\n 'projen-pipelines',\n ],\n});\n\n// Create the pipeline\nnew GithubCDKPipeline(app, {\n stackPrefix: 'MyApp',\n iamRoleArns: {\n default: 'arn:aws:iam::123456789012:role/GithubDeploymentRole',\n },\n pkgNamespace: '@company-assemblies',\n useGithubPackagesForAssembly: true,\n stages: [\n {\n name: 'dev',\n env: { account: '123456789013', region: 'eu-central-1' },\n }, {\n name: 'prod',\n manualApproval: true,\n env: { account: '123456789014', region: 'eu-central-1' },\n }],\n});\n```\n\nAfter running projen (`npx projen`) a new file called `src/app.ts` will be created and contain a specialized CDK App class for your project.\n\nYou can then use this in your `main.ts` to configure your deployment.\n\n```typescript\nimport { PipelineApp } from './app';\nimport { BackendStack } from './stack';\n\nconst app = new PipelineApp({\n provideDevStack: (scope, id, props) => {\n return new BackendStack(scope, id, {\n ...props,\n apiHostname: 'api-dev',\n myConfigSetting: 'value-for-dev',\n });\n },\n provideProdStack: (scope, id, props) => {\n return new BackendStack(scope, id, {\n ...props,\n apiHostname: 'api',\n myConfigSetting: 'value-for-prod',\n });\n },\n providePersonalStack: (scope, id, props) => {\n return new BackendStack(scope, id, {\n ...props,\n apiHostname: `api-${props.stageName}`,\n myConfigSetting: 'value-for-personal-stage',\n });\n },\n});\n\napp.synth();\n```\n\n### Setting Up Trust Relationships Between Accounts\n\nWhen planning to manage multiple staging environments, you will need to establish trust relationships. This process centralizes deployment control, improving operational efficiency and security by consolidating deployment management through a singular, monitored channel. Here is a simplified diagram for the setup:\n\n![Trust relationship](documentation/trust.svg)\n\n#### Step 1: Bootstrapping Each Account\n\nBootstrapping initializes the AWS CDK environment in each account. It prepares the account to work with AWS CDK apps deployed from other accounts. Use the `cdk bootstrap` command for this purpose. Replace `<deployment_account_id>` with the actual AWS account ID of your deployment account.\n\nYou can use the [CloudShell](https://aws.amazon.com/cloudshell/) to bootstrap each staging account:\n\n```bash\ncdk bootstrap --trust <deployment_account_id> --cloudformation-execution-policies \"arn:aws:iam::aws:policy/AdministratorAccess\"\n```\n\n**Note:**\n\nWhile `AdministratorAccess` grants full access to all AWS services and resources, it's not recommended for production environments due to security risks. Instead, create custom IAM policies that grant only the necessary permissions required for deployment operations.\n\n### Deployment\n\nThe `<Engine>CDKPipeline` class creates and adds several tasks to the projen project that then can be used in your pipeline to deploy your application to AWS.\n\nHere's a brief description of each one:\n\n1. **deploy:personal** - This task deploys the application's personal stage, which is a distinct, isolated deployment of the application. The personal stage is intended for personal use, such as testing and development.\n\n2. **watch:personal** - This task deploys the personal stage of the application in watch mode. In this mode, the AWS CDK monitors your application source files for changes, automatically re-synthesizing and deploying when it detects any changes.\n\n3. **diff:personal** - This task compares the deployed personal stage with the current state of the application code. It's used to understand what changes would be made if the application were deployed.\n\n4. **destroy:personal** - This task destroys the resources created for the personal stage of the application.\n\n5. **deploy:feature** - This task deploys the application's feature stage. The feature stage is used for new features testing before these are merged into the main branch.\n\n6. **diff:feature** - This task is similar to `diff:personal`, but for the feature stage.\n\n7. **destroy:feature** - This task destroys the resources created for the feature stage of the application.\n\n8. **deploy:<stageName>** - This task deploys a specific stage of the application (like 'dev' or 'prod').\n\n9. **diff:<stageName>** - This task compares the specified application stage with the current state of the application code.\n\n10. **publish:assets** - This task publishes the CDK assets to all accounts. This is useful when the CDK application uses assets like Docker images or files from the S3 bucket.\n\n11. **bump** - This task bumps the version based on the latest git tag and pushes the updated tag to the git repository.\n\n12. **release:push-assembly** - This task creates a manifest, bumps the version without creating a git tag, and publishes the cloud assembly to your registry.\n\nRemember that these tasks are created and managed automatically by the `CDKPipeline` class. You can run these tasks using the `npx projen TASK_NAME` command.\n\n## Current Status\n\nProjen-Pipelines is currently in version 0.x, awaiting Projen's 1.0 release. Despite its pre-1.0 status, it's being used in several production environments.\n\n## Contributing\n\n### By raising feature requests or issues\n\nUse the Github integrated \"[Issues](https://github.com/taimos/projen-pipelines/issues/new)\" view to create an item that you would love to have added to our open source project.\n\n***No request is too big or too small*** - get your thoughts created and we'll get back to you if we have questions!\n\n### By committing code\n\nWe welcome all contributions to Projen Pipelines! Here's how you can get started:\n\n1. **Fork the Repository**: Click the 'Fork' button at the top right of this page to duplicate this repository in your GitHub account.\n\n2. **Clone your Fork**: Clone the forked repository to your local machine.\n\n```bash\ngit clone https://github.com/<your_username>/projen-pipelines.git\n```\n\n3. **Create a Branch**: To keep your work organized, create a branch for your contribution.\n\n```bash\ngit checkout -b my-branch\n```\n\n4. **Make your Changes**: Make your changes, additions, or fixes to the codebase. Remember to follow the existing code style.\n\n5. **Test your Changes**: Before committing your changes, make sure to test them to ensure they work as expected and do not introduce bugs.\n\n6. **Commit your Changes**: Commit your changes with a descriptive commit message using conventional commit messages.\n\n```bash\ngit commit -m \"feat: Your descriptive commit message\"\n```\n\n7. **Push to your Fork**: Push your commits to the branch in your forked repository.\n\n```bash\ngit push -u origin my-branch\n```\n\n8. **Submit a Pull Request**: Once your changes are ready to be reviewed, create a pull request from your forked repository's branch into the `main` branch of this repository.\n\nYour pull request will be reviewed and hopefully merged quickly. Thanks for contributing!\n\n### How to test changes?\nThe best way currently is to test things locally or - if you have a working stall of all supported CI/CD tools - manually test the functionalities there in diferent projects.\n\n_For local testing:_\nUsing `yalc push` you can install the project locally to your local yalc package manager. You can also use `npm run local-push` instead of this.\n\nWith `yalc add projen-pipelines` you can then use it in a local project.\n\n\n## Future Plans\n\n* Move the project to the Open Construct Foundation for broader community involvement\n* Continue expanding support for different CI/CD platforms and project types\n\nJoin us in elevating CI/CD pipeline discussions from implementation details to fundamental building blocks, and help create a more efficient, standardized approach to pipeline development!\n\n## Known issues\n\n### Environment variable not recognized during `npx projen`\n\nWhen attempting to run `npx projen`, users may encounter an error related to environment variable substitution within configuration files. Specifically, the `${GITHUB_TOKEN}` placeholder fails to be replaced.\n\n#### Solution\n\nTo resolve this issue, prefix the `npx projen` command with the `GITHUB_TOKEN=` environment variable:\n\n```bash\nGITHUB_TOKEN= npx projen\n```\n"
109
109
  },
110
110
  "repository": {
111
111
  "type": "git",
@@ -166,7 +166,7 @@
166
166
  },
167
167
  "locationInModule": {
168
168
  "filename": "src/steps/aws-assume-role.step.ts",
169
- "line": 59
169
+ "line": 60
170
170
  },
171
171
  "name": "toBash",
172
172
  "overrides": "projen-pipelines.PipelineStep",
@@ -184,7 +184,7 @@
184
184
  },
185
185
  "locationInModule": {
186
186
  "filename": "src/steps/aws-assume-role.step.ts",
187
- "line": 67
187
+ "line": 68
188
188
  },
189
189
  "name": "toCodeCatalyst",
190
190
  "overrides": "projen-pipelines.PipelineStep",
@@ -202,7 +202,7 @@
202
202
  },
203
203
  "locationInModule": {
204
204
  "filename": "src/steps/aws-assume-role.step.ts",
205
- "line": 40
205
+ "line": 41
206
206
  },
207
207
  "name": "toGithub",
208
208
  "overrides": "projen-pipelines.PipelineStep",
@@ -1717,7 +1717,7 @@
1717
1717
  },
1718
1718
  "locationInModule": {
1719
1719
  "filename": "src/awscdk/github.ts",
1720
- "line": 317
1720
+ "line": 325
1721
1721
  },
1722
1722
  "name": "createIndependentDeployment",
1723
1723
  "parameters": [
@@ -2127,7 +2127,7 @@
2127
2127
  },
2128
2128
  "locationInModule": {
2129
2129
  "filename": "src/awscdk/gitlab.ts",
2130
- "line": 179
2130
+ "line": 161
2131
2131
  },
2132
2132
  "name": "createAssetUpload",
2133
2133
  "protected": true
@@ -2140,7 +2140,7 @@
2140
2140
  },
2141
2141
  "locationInModule": {
2142
2142
  "filename": "src/awscdk/gitlab.ts",
2143
- "line": 212
2143
+ "line": 194
2144
2144
  },
2145
2145
  "name": "createDeployment",
2146
2146
  "parameters": [
@@ -2163,7 +2163,7 @@
2163
2163
  },
2164
2164
  "locationInModule": {
2165
2165
  "filename": "src/awscdk/gitlab.ts",
2166
- "line": 271
2166
+ "line": 253
2167
2167
  },
2168
2168
  "name": "createIndependentDeployment",
2169
2169
  "parameters": [
@@ -2186,7 +2186,7 @@
2186
2186
  },
2187
2187
  "locationInModule": {
2188
2188
  "filename": "src/awscdk/gitlab.ts",
2189
- "line": 152
2189
+ "line": 134
2190
2190
  },
2191
2191
  "name": "createSynth",
2192
2192
  "protected": true
@@ -2197,7 +2197,7 @@
2197
2197
  },
2198
2198
  "locationInModule": {
2199
2199
  "filename": "src/awscdk/gitlab.ts",
2200
- "line": 301
2200
+ "line": 283
2201
2201
  },
2202
2202
  "name": "engineType",
2203
2203
  "overrides": "projen-pipelines.CDKPipeline",
@@ -3552,6 +3552,6 @@
3552
3552
  "symbolId": "src/steps/artifact-steps:UploadArtifactStepConfig"
3553
3553
  }
3554
3554
  },
3555
- "version": "0.2.4",
3556
- "fingerprint": "eSpM6ij5GTTPcNpgJoGcVPz0yiM1Eb4zc4aevsBBaAA="
3555
+ "version": "0.2.6",
3556
+ "fingerprint": "kYz26c2TBmtTZU6lovEMeEKMsI4iO3DaUCDhdJlt0Co="
3557
3557
  }
package/README.md CHANGED
@@ -58,7 +58,25 @@ To install the package, add the package `projen-pipelines` to your projects devD
58
58
 
59
59
  After installing the package, you can import and use the constructs to define your CDK Pipelines.
60
60
 
61
- You will also have to setup an IAM role that can be used by GitHub Actions. You can find a tutorial on how set this up here: [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
61
+ You will also have to setup an IAM role that can be used by GitHub Actions. For example, create a role named `GithubDeploymentRole` in your deployment account (`123456789012`) with a policy like this to assume the CDK roles of the pipeline stages (AWS account IDs `123456789013` and `123456789014`):
62
+ ```json
63
+ {
64
+ "Version": "2012-10-17",
65
+ "Statement": [
66
+ {
67
+ "Sid": "Statement1",
68
+ "Effect": "Allow",
69
+ "Action": "sts:AssumeRole",
70
+ "Resource": [
71
+ "arn:aws:iam::123456789013:role/cdk-*-123456789013-*",
72
+ "arn:aws:iam::123456789014:role/cdk-*-123456789014-*"
73
+ ]
74
+ }
75
+ ]
76
+ }
77
+ ```
78
+
79
+ Add a trust policy to this role as described in this tutorial: [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
62
80
 
63
81
  ### Usage with AWS CDK
64
82
 
@@ -89,11 +107,11 @@ new GithubCDKPipeline(app, {
89
107
  stages: [
90
108
  {
91
109
  name: 'dev',
92
- env: { account: '123456789012', region: 'eu-central-1' },
110
+ env: { account: '123456789013', region: 'eu-central-1' },
93
111
  }, {
94
112
  name: 'prod',
95
113
  manualApproval: true,
96
- env: {account: '123456789012', region: 'eu-central-1' },
114
+ env: { account: '123456789014', region: 'eu-central-1' },
97
115
  }],
98
116
  });
99
117
  ```
@@ -416,5 +416,5 @@ ${appCode}
416
416
  }
417
417
  exports.CDKPipeline = CDKPipeline;
418
418
  _a = JSII_RTTI_SYMBOL_1;
419
- CDKPipeline[_a] = { fqn: "projen-pipelines.CDKPipeline", version: "0.2.4" };
419
+ CDKPipeline[_a] = { fqn: "projen-pipelines.CDKPipeline", version: "0.2.6" };
420
420
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFxRDtBQUNyRCw4Q0FBa0Q7QUFDbEQsc0RBQTJEO0FBRTNELG9DQUE4RztBQXVCOUcsTUFBTTtBQUNOLHlEQUF5RDtBQUN6RCxNQUFNO0FBQ04sK0JBQStCO0FBQy9CLDZFQUE2RTtBQUM3RSwyQkFBMkI7QUFDM0IsNEVBQTRFO0FBQzVFLHlCQUF5QjtBQUN6QixJQUFJO0FBRUosSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLDRCQUE0QjtJQUM1Qiw2Q0FBSSxDQUFBO0lBQ0osb0RBQW9EO0lBQ3BELDZDQUFJLENBQUE7SUFDSix1REFBdUQ7SUFDdkQsNkNBQUksQ0FBQTtBQUNOLENBQUMsRUFQVyxXQUFXLDJCQUFYLFdBQVcsUUFPdEI7QUFrSUQ7OztHQUdHO0FBQ0gsTUFBc0IsV0FBWSxTQUFRLGtCQUFTO0lBSWpELFlBQXNCLEdBQStCLEVBQVksV0FBK0I7UUFDOUYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRFMsUUFBRyxHQUFILEdBQUcsQ0FBNEI7UUFBWSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFHOUYsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUNqQix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLFlBQVksQ0FDYixDQUFDO1FBQ0Ysb0JBQW9CO1FBQ3BCLEtBQUs7UUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLENBQUMsK0NBQStDO1FBRW5HLHdE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QkFBa0IsQ0FBQyxLQUFhO1FBQ3hDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM1QixHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzFKLENBQUM7O0FBNWFILGtDQTZhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVGV4dEZpbGUsIGF3c2NkayB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBQUk9KRU5fTUFSS0VSIH0gZnJvbSAncHJvamVuL2xpYi9jb21tb24nO1xuaW1wb3J0IHsgTm9kZVBhY2thZ2VNYW5hZ2VyIH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFBpcGVsaW5lRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IEF3c0Fzc3VtZVJvbGVTdGVwLCBQaXBlbGluZVN0ZXAsIFByb2plblNjcmlwdFN0ZXAsIFNpbXBsZUNvbW1hbmRTdGVwLCBTdGVwU2VxdWVuY2UgfSBmcm9tICcuLi9zdGVwcyc7XG5cbi8qKlxuICogVGhlIEVudmlyb25tZW50IGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBob2xkIEFXUyByZWxhdGVkIGluZm9ybWF0aW9uXG4gKiBmb3IgYSBzcGVjaWZpYyBkZXBsb3ltZW50IGVudmlyb25tZW50IHdpdGhpbiB5b3VyIGluZnJhc3RydWN0dXJlLlxuICogRWFjaCBlbnZpcm9ubWVudCByZXF1aXJlcyBhIHNwZWNpZmljIGFjY291bnQgYW5kIHJlZ2lvbiBmb3IgaXRzIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIEFjY291bnQgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbnZpcm9ubWVudC4gSXQncyBpbXBvcnRhbnQgYmVjYXVzZVxuICAgKiBkaWZmZXJlbnQgc2VydmljZXMgb3IgZmVhdHVyZXMgY291bGQgaGF2ZSBkaXN0aW5jdCBwZXJtaXNzaW9ucyBhbmQgc2V0dGluZ3NcbiAgICogaW4gZGlmZmVyZW50IGFjY291bnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIFJlZ2lvbiBmb3IgdGhlIGVudmlyb25tZW50LiBUaGlzIGRldGVybWluZXMgd2hlcmUgeW91ciByZXNvdXJjZXNcbiAgICogYXJlIGNyZWF0ZWQgYW5kIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBydW4uIEl0IGNhbiBhZmZlY3QgbGF0ZW5jeSxcbiAgICogYXZhaWxhYmlsaXR5LCBhbmQgcHJpY2luZy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vLyAvKipcbi8vICAqIERlc2NyaWJlcyB0aGUgdHlwZSBvZiBwaXBlbGluZSB0aGF0IHdpbGwgYmUgY3JlYXRlZFxuLy8gICovXG4vLyBleHBvcnQgZW51bSBEZXBsb3ltZW50VHlwZSB7XG4vLyAgIC8qKiBEZXBsb3kgZXZlcnkgY29tbWl0IGFzIGZhciBhcyBwb3NzaWJsZTsgaG9wZWZ1bGx5IGludG8gcHJvZHVjdGlvbiAqL1xuLy8gICBDT05USU5VT1VTX0RFUExPWU1FTlQsXG4vLyAgIC8qKiBCdWlsZCBldmVyeSBjb21taXQgYW5kIHByZXBhcmUgYWxsIGFzc2V0cyBmb3IgYSBsYXRlciBkZXBsb3ltZW50ICovXG4vLyAgIENPTlRJTlVPVVNfREVMSVZFUlksXG4vLyB9XG5cbmV4cG9ydCBlbnVtIENka0RpZmZUeXBlIHtcbiAgLyoqIERvIG5vdCBwZXJmb3JtIGEgZGlmZiAqL1xuICBOT05FLFxuICAvKiogUGVyZm9ybSBhIGZhc3QgdGVtcGxhdGUgZGlmZiAoLS1uby1jaGFuZ2VzZXQpICovXG4gIEZBU1QsXG4gIC8qKiBQZXJmb3JtIGEgZnVsbCBDbG91ZEZvcm1hdGlvbiBkaWZmICgtLWNoYW5nZXNldCkgKi9cbiAgRlVMTCxcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzdGFnZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgcGlwZWxpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhZ2UgZXh0ZW5kcyBOYW1lZFN0YWdlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG1hbnVhbEFwcHJvdmFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzdGFnZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHBpcGVsaW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXBlbmRlbnRTdGFnZSBleHRlbmRzIE5hbWVkU3RhZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN0YWdlIHNob3VsZCBiZSBkZXBsb3llZCBvbiBwdXNoXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lPblB1c2g/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGEgQ0RLIHN0YWdlIHdpdGggYSBuYW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZWRTdGFnZU9wdGlvbnMgZXh0ZW5kcyBTdGFnZU9wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdhdGNoYWJsZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRpZmZUeXBlPzogQ2RrRGlmZlR5cGU7XG4gIHJlYWRvbmx5IHBvc3REaWZmU3RlcHM/OiBQaXBlbGluZVN0ZXBbXTtcbiAgcmVhZG9ubHkgcG9zdERlcGxveVN0ZXBzPzogUGlwZWxpbmVTdGVwW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSBDREsgc3RhZ2UgbGlrZSB0aGUgdGFyZ2V0IGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudDtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgSUFNIHJvbGVzIHVzZWQgaW4gdGhlIENESyBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJYW1Sb2xlQ29uZmlnIHtcblxuICAvKiogRGVmYXVsdCBJQU0gcm9sZSBBUk4gdXNlZCBpZiBubyBzcGVjaWZpYyByb2xlIGlzIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBkZWZhdWx0Pzogc3RyaW5nO1xuICAvKiogSUFNIHJvbGUgQVJOIGZvciB0aGUgc3ludGhlc2lzIHN0ZXAuICovXG4gIHJlYWRvbmx5IHN5bnRoPzogc3RyaW5nO1xuICAvKiogSUFNIHJvbGUgQVJOIGZvciB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGVwLiAqL1xuICByZWFkb25seSBhc3NldFB1Ymxpc2hpbmc/OiBzdHJpbmc7XG4gIC8qKiBJQU0gcm9sZSBBUk4gZm9yIHRoZSBhc3NldCBwdWJsaXNoaW5nIHN0ZXAgZm9yIGEgc3BlY2lmaWMgc3RhZ2UuICovXG4gIHJlYWRvbmx5IGFzc2V0UHVibGlzaGluZ1BlclN0YWdlPzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKiogSUFNIHJvbGUgQVJOcyBmb3IgZGlmZmVyZW50IGRpZmYgc3RhZ2VzLiAqL1xuICByZWFkb25seSBkaWZmPzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKiogSUFNIHJvbGUgQVJOcyBmb3IgZGlmZmVyZW50IGRlcGxveW1lbnQgc3RhZ2VzLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50PzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBDREtQaXBlbGluZU9wdGlvbnMgaW50ZXJmYWNlIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvblxuICogb3B0aW9ucyBmb3IgYSBDREsgKENsb3VkIERldmVsb3BtZW50IEtpdCkgcGlwZWxpbmUuIEl0IGFsbG93cyB0aGUgZGVmaW5pdGlvblxuICogb2Ygc2V0dGluZ3Mgc3VjaCBhcyB0aGUgc3RhY2sgcHJlZml4IGFuZCBwYWNrYWdlIG5hbWVzcGFjZSB0byBiZSB1c2VkIGluIHRoZVxuICogQVdTIHN0YWNrLCBhbG9uZyB3aXRoIHRoZSBlbnZpcm9ubWVudHMgY29uZmlndXJhdGlvbiB0byBiZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENES1BpcGVsaW5lT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBicmFuY2ggdG8gZGVwbG95IGZyb21cbiAgICogQGRlZmF1bHQgbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBmaWVsZCBpcyB1c2VkIHRvIGRlZmluZSBhIHByZWZpeCBmb3IgdGhlIEFXUyBTdGFjayByZXNvdXJjZXMgY3JlYXRlZFxuICAgKiBkdXJpbmcgdGhlIHBpcGVsaW5lJ3Mgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9qZWN0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSBhbGwgQ0RLIGFjdGlvbnMgd2lsbCBhbHNvIGluY2x1ZGUgPHN0YWNrTmFtZT4vKiB0byBkZXBsb3kvZGlmZi9kZXN0cm95IHN1YiBzdGFja3Mgb2YgdGhlIG1haW4gc3RhY2suXG4gICAqIFlvdSBjYW4gdXNlIHRoaXMgdG8gZGVwbG95IENEayBhcHBsaWNhdGlvbnMgY29udGFpbmluZyBtdWx0aXBsZSBzdGFja3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lTdWJTdGFja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGZpZWxkIGRldGVybWluZXMgdGhlIE5QTSBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHBhY2thZ2luZyBDREsgY2xvdWRcbiAgICogYXNzZW1ibGllcy4gQSBuYW1lc3BhY2UgaGVscHMgZ3JvdXAgcmVsYXRlZCByZXNvdXJjZXMgdG9nZXRoZXIsIHByb3ZpZGluZ1xuICAgKiBiZXR0ZXIgb3JnYW5pemF0aW9uIGFuZCBlYXNlIG9mIG1hbmFnZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBwa2dOYW1lc3BhY2U6IHN0cmluZztcblxuICAvKiogSUFNIGNvbmZpZyAqL1xuICByZWFkb25seSBpYW1Sb2xlQXJuczogSWFtUm9sZUNvbmZpZztcblxuICAvKipcbiAgICogVGhpcyBmaWVsZCBzcGVjaWZpZXMgYSBsaXN0IG9mIHN0YWdlcyB0aGF0IHNob3VsZCBiZSBkZXBsb3llZCB1c2luZyBhIENJL0NEIHBpcGVsaW5lXG4gICAqL1xuICByZWFkb25seSBzdGFnZXM6IERlcGxveW1lbnRTdGFnZVtdO1xuXG4gIC8qKiBUaGlzIHNwZWNpZmllcyBkZXRhaWxzIGZvciBpbmRlcGVuZGVudCBzdGFnZXMgKi9cbiAgcmVhZG9ubHkgaW5kZXBlbmRlbnRTdGFnZXM/OiBJbmRlcGVuZGVudFN0YWdlW107XG5cbiAgLyoqIFRoaXMgc3BlY2lmaWVzIGRldGFpbHMgZm9yIGEgcGVyc29uYWwgc3RhZ2UgKi9cbiAgcmVhZG9ubHkgcGVyc29uYWxTdGFnZT86IFN0YWdlT3B0aW9ucztcblxuICAvKiogVGhpcyBzcGVjaWZpZXMgZGV0YWlscyBmb3IgZmVhdHVyZSBzdGFnZXMgKi9cbiAgcmVhZG9ubHkgZmVhdHVyZVN0YWdlcz86IFN0YWdlT3B0aW9ucztcblxuICAvLyAvKipcbiAgLy8gICogVGhpcyBmaWVsZCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgcGlwZWxpbmUgdG8gY3JlYXRlLiBJZiBzZXQgdG8gQ09OVElOVU9VU19ERVBMT1lNRU5ULFxuICAvLyAgKiBldmVyeSBjb21taXQgaXMgZGVwbG95ZWQgYXMgZmFyIGFzIHBvc3NpYmxlLCBob3BlZnVsbHkgaW50byBwcm9kdWN0aW9uLiBJZiBzZXQgdG9cbiAgLy8gICogQ09OVElOVU9VU19ERUxJVkVSWSwgZXZlcnkgY29tbWl0IGlzIGJ1aWx0IGFuZCBhbGwgYXNzZXRzIGFyZSBwcmVwYXJlZCBmb3IgYSBsYXRlciBkZXBsb3ltZW50LlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCBDT05USU5VT1VTX0RFTElWRVJZXG4gIC8vICAqL1xuICAvLyByZWFkb25seSBkZXBsb3ltZW50VHlwZT86IERlcGxveW1lbnRUeXBlO1xuXG4gIHJlYWRvbmx5IHByZUluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuICByZWFkb25seSBwcmVTeW50aENvbW1hbmRzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHBvc3RTeW50aENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgcmVhZG9ubHkgcHJlSW5zdGFsbFN0ZXBzPzogUGlwZWxpbmVTdGVwW107XG4gIHJlYWRvbmx5IHByZVN5bnRoU3RlcHM/OiBQaXBlbGluZVN0ZXBbXTtcbiAgcmVhZG9ubHkgcG9zdFN5bnRoU3RlcHM/OiBQaXBlbGluZVN0ZXBbXTtcbn1cblxuLyoqXG4gKiBUaGUgQ0RLUGlwZWxpbmUgY2xhc3MgZXh0ZW5kcyB0aGUgQ29tcG9uZW50IGNsYXNzIGFuZCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBmb3IgZGVwbG95aW5nIEFXUyBDREsgKENsb3VkIERldmVsb3BtZW50IEtpdCkgYXBwbGljYXRpb25zIGFjcm9zcyBtdWx0aXBsZSBzdGFnZXMuXG4gKiBJdCBhbHNvIG1hbmFnZXMgdGFza3Mgc3VjaCBhcyBwdWJsaXNoaW5nIENESyBhc3NldHMsIGJ1bXBpbmcgdmVyc2lvbiBiYXNlZCBvbiBnaXQgdGFncywgYW5kIGNsZWFuaW5nIHVwIGNvbmZsaWN0aW5nIHRhc2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tQcmVmaXg6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGJyYW5jaE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXBwOiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJvdGVjdGVkIGJhc2VPcHRpb25zOiBDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHApO1xuXG4gICAgLy8gQWRkIGRldmVsb3BtZW50IGRlcGVuZGVuY2llc1xuICAgIHRoaXMuYXBwLmFkZERldkRlcHMoXG4gICAgICAnQHR5cGVzL3N0YW5kYXJkLXZlcnNpb24nLFxuICAgICAgJ3N0YW5kYXJkLXZlcnNpb24nLFxuICAgICAgJ2Nkay1hc3NldHMnLFxuICAgICk7XG4gICAgLy8gdGhpcy5hcHAuYWRkRGVwcyhcbiAgICAvLyApO1xuICAgIHRoaXMucHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZSgnL2Nkay1vdXRwdXRzLSouanNvbicpO1xuXG4gICAgdGhpcy5zdGFja1ByZWZpeCA9IGJhc2VPcHRpb25zLnN0YWNrUHJlZml4ID8/IGFwcC5uYW1lO1xuICAgIHRoaXMuYnJhbmNoTmFtZSA9IGJhc2VPcHRpb25zLmJyYW5jaE5hbWUgPz8gJ21haW4nOyAvLyBUT0RPIHVzZSBkZWZhdWx0UmVsZWFzZUJyYW5jaCBvZiBOb2RlUHJvamVjdFxuXG4gICAgLy8gUmVtb3ZlcyB0aGUgY29tcGlsZWQgY2xvdWQgYXNzZW1ibHkgYmVmb3JlIGVhY2ggc3ludGhcbiAgICB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZCgnc3ludGgnKT8ucHJlcGVuZEV4ZWMoYHJtIC1yZiAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9YCk7XG4gICAgdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoJ3N5bnRoOnNpbGVudCcpPy5wcmVwZW5kRXhlYyhgcm0gLXJmICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH1gKTtcblxuICAgIC8vIFJlbW92ZSB0YXNrcyB0aGF0IG1pZ2h0IGNvbmZsaWN0IHdpdGggdGhlIHBpcGVsaW5lIHByb2Nlc3NcbiAgICB0aGlzLnByb2plY3QucmVtb3ZlVGFzaygnZGVwbG95Jyk7XG4gICAgdGhpcy5wcm9qZWN0LnJlbW92ZVRhc2soJ2RpZmYnKTtcbiAgICB0aGlzLnByb2plY3QucmVtb3ZlVGFzaygnZGVzdHJveScpO1xuICAgIHRoaXMucHJvamVjdC5yZW1vdmVUYXNrKCd3YXRjaCcpO1xuXG4gICAgLy8gQ3JlYXRlcyBkaWZmZXJlbnQgZGVwbG95bWVudCBzdGFnZXNcbiAgICBpZiAoYmFzZU9wdGlvbnMucGVyc29uYWxTdGFnZSkge1xuICAgICAgdGhpcy5jcmVhdGVQZXJzb25hbFN0YWdlKCk7XG4gICAgfVxuICAgIGlmIChiYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZlYXR1cmVTdGFnZSgpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIGJhc2VPcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVQaXBlbGluZVN0YWdlKHN0YWdlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAoYmFzZU9wdGlvbnMuaW5kZXBlbmRlbnRTdGFnZXMgPz8gW10pKSB7XG4gICAgICB0aGlzLmNyZWF0ZUluZGVwZW5kZW50U3RhZ2Uoc3RhZ2UpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgdGFza3MgdG8gaGFuZGxlIHRoZSByZWxlYXNlIHByb2Nlc3NcbiAgICB0aGlzLmNyZWF0ZVJlbGVhc2VUYXNrcygpO1xuXG4gICAgLy8gQ3JlYXRlcyBhIHNwZWNpYWxpemVkIENESyBBcHAgY2xhc3NcbiAgICB0aGlzLmNyZWF0ZUFwcGxpY2F0aW9uRW50cnlwb2ludCgpO1xuXG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZW5naW5lVHlwZSgpOiBQaXBlbGluZUVuZ2luZTtcblxuICBwcm90ZWN0ZWQgcHJvdmlkZUluc3RhbGxTdGVwKCk6IFBpcGVsaW5lU3RlcCB7XG4gICAgY29uc3Qgc2VxID0gbmV3IFN0ZXBTZXF1ZW5jZSh0aGlzLnByb2plY3QsIHRoaXMuYmFzZU9wdGlvbnMucHJlSW5zdGFsbFN0ZXBzID8/IFtdKTtcbiAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5wcmVJbnN0YWxsQ29tbWFuZHMpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLmJhc2VPcHRpb25zLnByZUluc3RhbGxDb21tYW5kcykpO1xuICAgIH1cbiAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCB0aGlzLmFwcC5wYWNrYWdlLmluc3RhbGxDaVRhc2submFtZSkpO1xuICAgIHJldHVybiBzZXE7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvdmlkZVN5bnRoU3RlcCgpOiBQaXBlbGluZVN0ZXAge1xuICAgIGNvbnN0IHNlcSA9IG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCBbXSk7XG5cbiAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucz8uc3ludGgpIHtcbiAgICAgIHNlcS5hZGRTdGVwcyhuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuc3ludGgsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgc2VxLmFkZFN0ZXBzKC4uLnRoaXMuYmFzZU9wdGlvbnMucHJlU3ludGhTdGVwcyA/PyBbXSk7XG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMucHJlU3ludGhDb21tYW5kcykge1xuICAgICAgc2VxLmFkZFN0ZXBzKG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIHRoaXMuYmFzZU9wdGlvbnMucHJlU3ludGhDb21tYW5kcykpO1xuICAgIH1cblxuICAgIHNlcS5hZGRTdGVwcyhuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsICdidWlsZCcpKTtcblxuICAgIHNlcS5hZGRTdGVwcyguLi50aGlzLmJhc2VPcHRpb25zLnBvc3RTeW50aFN0ZXBzID8/IFtdKTtcbiAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5wb3N0U3ludGhDb21tYW5kcykge1xuICAgICAgc2VxLmFkZFN0ZXBzKG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIHRoaXMuYmFzZU9wdGlvbnMucG9zdFN5bnRoQ29tbWFuZHMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlcTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm92aWRlQXNzZXRVcGxvYWRTdGVwKHN0YWdlTmFtZT86IHN0cmluZyk6IFBpcGVsaW5lU3RlcCB7XG4gICAgY29uc3Qgc2VxID0gbmV3IFN0ZXBTZXF1ZW5jZSh0aGlzLnByb2plY3QsIFtdKTtcblxuICAgIGNvbnN0IGdsb2JhbFB1Ymxpc2hSb2xlID0gdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5hc3NldFB1Ymxpc2hpbmcgPz8gdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5kZWZhdWx0ITtcbiAgICBpZiAoc3RhZ2VOYW1lKSB7XG4gICAgICBzZXEuYWRkU3RlcHMobmV3IEF3c0Fzc3VtZVJvbGVTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICByb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmFzc2V0UHVibGlzaGluZ1BlclN0YWdlID9cbiAgICAgICAgICAodGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5hc3NldFB1Ymxpc2hpbmdQZXJTdGFnZVtzdGFnZU5hbWVdID8/IGdsb2JhbFB1Ymxpc2hSb2xlKSA6XG4gICAgICAgICAgZ2xvYmFsUHVibGlzaFJvbGUsXG4gICAgICB9KSk7XG4gICAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCBgcHVibGlzaDphc3NldHM6JHtzdGFnZU5hbWV9YCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5hc3NldFB1Ymxpc2hpbmdQZXJTdGFnZSkge1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBbLi4udGhpcy5iYXNlT3B0aW9ucy5zdGFnZXMsIC4uLnRoaXMuYmFzZU9wdGlvbnMuaW5kZXBlbmRlbnRTdGFnZXMgPz8gW11dO1xuICAgICAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHN0YWdlcykge1xuICAgICAgICAgIHNlcS5hZGRTdGVwcyhuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgICByb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zLmFzc2V0UHVibGlzaGluZ1BlclN0YWdlW3N0YWdlLm5hbWVdID8/IGdsb2JhbFB1Ymxpc2hSb2xlLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCBgcHVibGlzaDphc3NldHM6JHtzdGFnZS5uYW1lfWApKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VxLmFkZFN0ZXBzKG5ldyBBd3NBc3N1bWVSb2xlU3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICByb2xlQXJuOiBnbG9iYWxQdWJsaXNoUm9sZSxcbiAgICAgICAgfSkpO1xuICAgICAgICBzZXEuYWRkU3RlcHMobmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAncHVibGlzaDphc3NldHMnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm92aWRlQXNzZW1ibHlVcGxvYWRTdGVwKCk6IFBpcGVsaW5lU3RlcCB7XG4gICAgcmV0dXJuIG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCBbXG4gICAgICBuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsICdidW1wJyksXG4gICAgICBuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsICdyZWxlYXNlOnB1c2gtYXNzZW1ibHknKSxcbiAgICBdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm92aWRlRGVwbG95U3RlcChzdGFnZTogTmFtZWRTdGFnZU9wdGlvbnMpOiBQaXBlbGluZVN0ZXAge1xuICAgIHJldHVybiBuZXcgU3RlcFNlcXVlbmNlKHRoaXMucHJvamVjdCwgW1xuICAgICAgbmV3IEF3c0Fzc3VtZVJvbGVTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICByb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zPy5kZXBsb3ltZW50Py5bc3RhZ2UubmFtZV0gPz8gdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucz8uZGVmYXVsdCEsXG4gICAgICAgIHJlZ2lvbjogc3RhZ2UuZW52LnJlZ2lvbixcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCBgZGVwbG95OiR7c3RhZ2UubmFtZX1gKSxcbiAgICAgIC4uLnN0YWdlLnBvc3REZXBsb3lTdGVwcyA/PyBbXSxcbiAgICBdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm92aWRlRGlmZlN0ZXAoc3RhZ2U6IE5hbWVkU3RhZ2VPcHRpb25zLCBmYXN0PzogYm9vbGVhbik6IFBpcGVsaW5lU3RlcCB7XG4gICAgcmV0dXJuIG5ldyBTdGVwU2VxdWVuY2UodGhpcy5wcm9qZWN0LCBbXG4gICAgICBuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRpZmY/LltzdGFnZS5uYW1lXSA/P1xuICAgICAgICAgIHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/P1xuICAgICAgICAgIHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlZmF1bHQhLFxuICAgICAgICByZWdpb246IHN0YWdlLmVudi5yZWdpb24sXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9qZW5TY3JpcHRTdGVwKHRoaXMucHJvamVjdCwgZmFzdCA/IGBmYXN0ZGlmZjoke3N0YWdlLm5hbWV9YCA6IGBkaWZmOiR7c3RhZ2UubmFtZX1gKSxcbiAgICAgIC4uLnN0YWdlLnBvc3REaWZmU3RlcHMgPz8gW10sXG4gICAgXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVySW5zdGFsbFBhY2thZ2VDb21tYW5kcyhwYWNrYWdlTmFtZTogc3RyaW5nLCBydW5QcmVJbnN0YWxsQ29tbWFuZHM6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjb21tYW5kcyA9IHJ1blByZUluc3RhbGxDb21tYW5kcyA/IHRoaXMuYmFzZU9wdGlvbnMucHJlSW5zdGFsbENvbW1hbmRzID8/IFtdIDogW107XG5cbiAgICBzd2l0Y2ggKHRoaXMuYXBwLnBhY2thZ2UucGFja2FnZU1hbmFnZXIpIHtcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk46XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOMjpcbiAgICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQkVSUlk6XG4gICAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUM6XG4gICAgICAgIGNvbW1hbmRzLnB1c2goYHlhcm4gYWRkICR7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuTlBNOlxuICAgICAgICBjb21tYW5kcy5wdXNoKGBucG0gaW5zdGFsbCAke3BhY2thZ2VOYW1lfWApO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gaW5zdGFsbCBzY3JpcHRzIGZvciBwYWNrYWdlTWFuYWdlcjogJyArIHRoaXMuYXBwLnBhY2thZ2UucGFja2FnZU1hbmFnZXIpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZHM7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlU2FmZVN0YWdlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFJlbW92ZSBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHNwbGl0IGludG8gd29yZHNcbiAgICBjb25zdCB3b3JkcyA9IG5hbWUucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCAnICcpLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgLy8gQ2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCBhbmQgam9pbiB0aGVtXG4gICAgcmV0dXJuIHdvcmRzLm1hcCgod29yZCkgPT4ge1xuICAgICAgcmV0dXJuIHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgfSkuam9pbignJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgZ2VuZXJhdGVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgaW50ZXJmYWNlcyBhbmQgY2xhc3Nlc1xuICAgKiBuZWNlc3NhcnkgdG8gc2V0IHVwIHRoZSBwaXBlbGluZSBhbmQgZGVmaW5lIHRoZSBBV1MgQ0RLIHN0YWNrcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVBcHBsaWNhdGlvbkVudHJ5cG9pbnQoKSB7XG4gICAgbGV0IHByb3BzQ29kZSA9ICcnO1xuICAgIGxldCBhcHBDb2RlID0gJyc7XG4gICAgbGV0IHNlcCA9ICctJztcbiAgICBpZiAodGhpcy5zdGFja1ByZWZpeCA9PT0gJycpIHtcbiAgICAgIHNlcCA9ICcnO1xuICAgIH1cblxuXG4gICAgaWYgKHRoaXMuYmFzZU9wdGlvbnMucGVyc29uYWxTdGFnZSkge1xuICAgICAgcHJvcHNDb2RlICs9IGAgIC8qKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSBhIHBlcnNvbmFsIHN0YWNrLiAqL1xuICBwcm92aWRlUGVyc29uYWxTdGFjazogKGFwcDogQXBwLCBzdGFja0lkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUFwcFN0YWNrUHJvcHMpID0+IFN0YWNrO1xuYDtcbiAgICAgIGFwcENvZGUgKz0gYCAgICAvLyBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgVVNFUiBpcyBzZXQgYW5kIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGNyZWF0aW5nIGEgcGVyc29uYWwgc3RhY2ssIGl0IGlzIGNhbGxlZCB3aXRoIG5lY2Vzc2FyeSBhcmd1bWVudHMuXG4gICAgaWYgKHByb3BzLnByb3ZpZGVQZXJzb25hbFN0YWNrICYmIHByb2Nlc3MuZW52LlVTRVIpIHtcbiAgICAgIGNvbnN0IHN0YWdlTmFtZSA9ICdwZXJzb25hbC0nICsgcHJvY2Vzcy5lbnYuVVNFUi50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcXFxcXC8vZywgJy0nKTtcbiAgICAgIHByb3BzLnByb3ZpZGVQZXJzb25hbFN0YWNrKHRoaXMsICcke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9cGVyc29uYWwnLCB7IGVudjogeyBhY2NvdW50OiAnJHt0aGlzLmJhc2VPcHRpb25zLnBlcnNvbmFsU3RhZ2UuZW52LmFjY291bnR9JywgcmVnaW9uOiAnJHt0aGlzLmJhc2VPcHRpb25zLnBlcnNvbmFsU3RhZ2UuZW52LnJlZ2lvbn0nIH0sIHN0YWNrTmFtZTogXFxgJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfVxcJHtzdGFnZU5hbWV9XFxgLCBzdGFnZU5hbWUgfSk7XG4gICAgfVxuYDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzKSB7XG4gICAgICBwcm9wc0NvZGUgKz0gYCAgLyoqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgZmVhdHVyZSBzdGFjay4gKi9cbiAgcHJvdmlkZUZlYXR1cmVTdGFjazogKGFwcDogQXBwLCBzdGFja0lkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUFwcFN0YWNrUHJvcHMpID0+IFN0YWNrO1xuYDtcbiAgICAgIGFwcENvZGUgKz0gYCAgICAvLyBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQlJBTkNIIGlzIHNldCBhbmQgYSBmdW5jdGlvbiBpcyBwcm92aWRlZCBmb3IgY3JlYXRpbmcgYSBmZWF0dXJlIHN0YWNrLCBpdCBpcyBjYWxsZWQgd2l0aCBuZWNlc3NhcnkgYXJndW1lbnRzLlxuICAgIGlmIChwcm9wcy5wcm92aWRlRmVhdHVyZVN0YWNrICYmIHByb2Nlc3MuZW52LkJSQU5DSCkge1xuICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gJ2ZlYXR1cmUtJyArIHByb2Nlc3MuZW52LkJSQU5DSC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcXFxcXC8vZywgJy0nKTtcbiAgICAgIHByb3BzLnByb3ZpZGVGZWF0dXJlU3RhY2sodGhpcywgJyR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH1mZWF0dXJlJywgeyBlbnY6IHsgYWNjb3VudDogJyR7dGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzLmVudi5hY2NvdW50fScsIHJlZ2lvbjogJyR7dGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzLmVudi5yZWdpb259JyB9LCBzdGFja05hbWU6IFxcYCR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH1cXCR7c3RhZ2VOYW1lfVxcYCwgc3RhZ2VOYW1lIH0pO1xuICAgIH1cbmA7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiB0aGlzLmJhc2VPcHRpb25zLnN0YWdlcykge1xuICAgICAgY29uc3QgbmFtZVVwcGVyRmlyc3QgPSB0aGlzLmNyZWF0ZVNhZmVTdGFnZU5hbWUoc3RhZ2UubmFtZSk7XG5cbiAgICAgIHByb3BzQ29kZSArPSBgICAvKiogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYSAke3N0YWdlLm5hbWV9IHN0YWNrLiAqL1xuICBwcm92aWRlJHtuYW1lVXBwZXJGaXJzdH1TdGFjazogKGFwcDogQXBwLCBzdGFja0lkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUFwcFN0YWNrUHJvcHMpID0+IFN0YWNrO1xuYDtcbiAgICAgIGFwcENvZGUgKz0gYCAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGZvciBjcmVhdGluZyBhICR7c3RhZ2UubmFtZX0gc3RhY2ssIGl0IGlzIGNhbGxlZCB3aXRoIG5lY2Vzc2FyeSBhcmd1bWVudHMuXG4gICAgaWYgKHByb3BzLnByb3ZpZGUke25hbWVVcHBlckZpcnN0fVN0YWNrKSB7XG4gICAgICBwcm9wcy5wcm92aWRlJHtuYW1lVXBwZXJGaXJzdH1TdGFjayh0aGlzLCAnJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfSR7c3RhZ2UubmFtZX0nLCB7IGVudjogeyBhY2NvdW50OiAnJHtzdGFnZS5lbnYuYWNjb3VudH0nLCByZWdpb246ICcke3N0YWdlLmVudi5yZWdpb259JyB9LCBzdGFja05hbWU6ICcke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9JHtzdGFnZS5uYW1lfScsIHN0YWdlTmFtZTogJyR7c3RhZ2UubmFtZX0nIH0pO1xuICAgIH1cbmA7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAodGhpcy5iYXNlT3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIGNvbnN0IG5hbWVVcHBlckZpcnN0ID0gdGhpcy5jcmVhdGVTYWZlU3RhZ2VOYW1lKHN0YWdlLm5hbWUpO1xuXG4gICAgICBwcm9wc0NvZGUgKz0gYCAgLyoqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgJHtzdGFnZS5uYW1lfSBzdGFjay4gKi9cbiAgcHJvdmlkZSR7bmFtZVVwcGVyRmlyc3R9U3RhY2s6IChhcHA6IEFwcCwgc3RhY2tJZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVBcHBTdGFja1Byb3BzKSA9PiBTdGFjaztcbmA7XG4gICAgICBhcHBDb2RlICs9IGAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBwcm92aWRlZCBmb3IgY3JlYXRpbmcgYSAke3N0YWdlLm5hbWV9IHN0YWNrLCBpdCBpcyBjYWxsZWQgd2l0aCBuZWNlc3NhcnkgYXJndW1lbnRzLlxuICAgIGlmIChwcm9wcy5wcm92aWRlJHtuYW1lVXBwZXJGaXJzdH1TdGFjaykge1xuICAgICAgcHJvcHMucHJvdmlkZSR7bmFtZVVwcGVyRmlyc3R9U3RhY2sodGhpcywgJyR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH0ke3N0YWdlLm5hbWV9JywgeyBlbnY6IHsgYWNjb3VudDogJyR7c3RhZ2UuZW52LmFjY291bnR9JywgcmVnaW9uOiAnJHtzdGFnZS5lbnYucmVnaW9ufScgfSwgc3RhY2tOYW1lOiAnJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfSR7c3RhZ2UubmFtZX0nLCBzdGFnZU5hbWU6ICcke3N0YWdlLm5hbWV9JyB9KTtcbiAgICB9XG5gO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcEZpbGUgPSBuZXcgVGV4dEZpbGUodGhpcy5wcm9qZWN0LCBgJHt0aGlzLmFwcC5zcmNkaXJ9L2FwcC50c2ApO1xuICAgIGFwcEZpbGUuYWRkTGluZShgLy8gJHtQUk9KRU5fTUFSS0VSfVxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEFwcCwgQXBwUHJvcHMsIFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vKipcbiAqIFBpcGVsaW5lQXBwUHJvcHMgaXMgYW4gZXh0ZW5zaW9uIG9mIEFwcFByb3BzLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBBV1MgQ0RLIGNvcmUuXG4gKiBJdCBpbmNsdWRlcyBvcHRpb25hbCBmdW5jdGlvbnMgdG8gcHJvdmlkZSBBV1MgU3RhY2tzIGZvciBkaWZmZXJlbnQgc3RhZ2VzLlxuICpcbiAqIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gaW5zdGFudGlhdGUgeW91ciBhcHBsaWNhdGlvbiBzdGFja3Mgd2l0aCB0aGUgcGFyYW1ldGVycyBmb3JcbiAqIGVhY2ggc3RhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUFwcFByb3BzIGV4dGVuZHMgQXBwUHJvcHMge1xuJHtwcm9wc0NvZGV9XG59XG5cbi8qKlxuICogUGlwZWxpbmVBcHBTdGFja1Byb3BzIGlzIGFuIGV4dGVuc2lvbiBvZiBTdGFja1Byb3BzLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBBV1MgQ0RLIGNvcmUuXG4gKiBJdCBpbmNsdWRlcyBhbiBhZGRpdGlvbmFsIHByb3BlcnR5IHRvIHNwZWNpZnkgdGhlIHN0YWdlIG5hbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVBcHBTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBQaXBlbGluZUFwcCBjbGFzcyBleHRlbmRzIHRoZSBBcHAgY2xhc3MgZnJvbSBBV1MgQ0RLIGFuZCBvdmVycmlkZXMgdGhlIGNvbnN0cnVjdG9yIHRvIHN1cHBvcnRcbiAqIGRpZmZlcmVudCBzdGFnZXMgb2YgdGhlIGFwcGxpY2F0aW9uIChkZXZlbG9wbWVudCwgcHJvZHVjdGlvbiwgcGVyc29uYWwsIGZlYXR1cmUpIGJ5IGludm9raW5nIHRoZSBwcm92aWRlZFxuICogc3RhY2stcHJvdmlkaW5nIGZ1bmN0aW9ucyBmcm9tIHRoZSBwcm9wcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lQXBwIGV4dGVuZHMgQXBwIHtcbiAgY29uc3RydWN0b3IocHJvcHM6IFBpcGVsaW5lQXBwUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiR7YXBwQ29kZX1cblxuICB9XG59XG5gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHVwIHRhc2tzIHRvIHB1Ymxpc2ggQ0RLIGFzc2V0cyB0byBhbGwgYWNjb3VudHMgYW5kIGhhbmRsZSB2ZXJzaW9uaW5nLCBpbmNsdWRpbmcgYnVtcGluZyB0aGUgdmVyc2lvblxuICAgKiBiYXNlZCBvbiB0aGUgbGF0ZXN0IGdpdCB0YWcgYW5kIHB1c2hpbmcgdGhlIENESyBhc3NlbWJseSB0byB0aGUgcGFja2FnZSByZXBvc2l0b3J5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlbGVhc2VUYXNrcygpIHtcbiAgICBjb25zdCBzdGFnZXMgPSBbLi4udGhpcy5iYXNlT3B0aW9ucy5zdGFnZXMsIC4uLnRoaXMuYmFzZU9wdGlvbnMuaW5kZXBlbmRlbnRTdGFnZXMgPz8gW11dO1xuICAgIGxldCBzZXAgPSAnLSc7XG4gICAgaWYgKHRoaXMuc3RhY2tQcmVmaXggPT09ICcnKSB7XG4gICAgICBzZXAgPSAnJztcbiAgICB9XG4gICAgLy8gVGFzayB0byBwdWJsaXNoIHRoZSBDREsgYXNzZXRzIHRvIGFsbCBhY2NvdW50c1xuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgcHVibGlzaDphc3NldHM6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgICAgc3RlcHM6IFt7XG4gICAgICAgICAgZXhlYzogYG5weCBjZGstYXNzZXRzIC1wICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfSR7c3RhZ2UubmFtZX0uYXNzZXRzLmpzb24gcHVibGlzaGAsXG4gICAgICAgIH1dLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdwdWJsaXNoOmFzc2V0cycsIHtcbiAgICAgIHN0ZXBzOiBzdGFnZXMubWFwKHN0YWdlID0+ICh7XG4gICAgICAgIHNwYXduOiBgcHVibGlzaDphc3NldHM6JHtzdGFnZS5uYW1lfWAsXG4gICAgICB9KSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnYnVtcCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQnVtcHMgdmVyc2lvbiBiYXNlZCBvbiBsYXRlc3QgZ2l0IHRhZycsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogJ3BpcGVsaW5lcy1yZWxlYXNlIGJ1bXAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogJ2dpdCBwdXNoIC0tdGFncycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdyZWxlYXNlOnB1c2gtYXNzZW1ibHknLCB7XG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogYHBpcGVsaW5lcy1yZWxlYXNlIGNyZWF0ZS1tYW5pZmVzdCBcIiR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH1cIiAgXCIke3RoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlfVwiYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGN3ZDogdGhpcy5hcHAuY2RrQ29uZmlnLmNka291dCxcbiAgICAgICAgICBleGVjOiAnbnBtIHZlcnNpb24gLS1uby1naXQtdGFnLXZlcnNpb24gZnJvbS1naXQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY3dkOiB0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0LFxuICAgICAgICAgIGV4ZWM6ICducG0gcHVibGlzaCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdXAgdGFza3MgZm9yIHRoZSBwZXJzb25hbCBkZXBsb3ltZW50IHN0YWdlLCBpbmNsdWRpbmcgZGVwbG95bWVudCwgd2F0Y2hpbmcgZm9yIGNoYW5nZXMsXG4gICAqIGNvbXBhcmluZyBjaGFuZ2VzIChkaWZmKSwgYW5kIGRlc3Ryb3lpbmcgdGhlIHN0YWNrIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVQZXJzb25hbFN0YWdlKCkge1xuICAgIGNvbnN0IHN0YWNrSWQgPSB0aGlzLmdldENsaVN0YWNrUGF0dGVybigncGVyc29uYWwnKTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnZGVwbG95OnBlcnNvbmFsJywge1xuICAgICAgZXhlYzogYGNkayBkZXBsb3kgLS1vdXRwdXRzLWZpbGUgY2RrLW91dHB1dHMtcGVyc29uYWwuanNvbiAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnd2F0Y2g6cGVyc29uYWwnLCB7XG4gICAgICBleGVjOiBgY2RrIGRlcGxveSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy1wZXJzb25hbC5qc29uIC0td2F0Y2ggLS1ob3Rzd2FwICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdkaWZmOnBlcnNvbmFsJywge1xuICAgICAgZXhlYzogYGNkayBkaWZmICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdmYXN0ZGlmZjpwZXJzb25hbCcsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGlmZiAtLW5vLWNoYW5nZXNldCAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnZGVzdHJveTpwZXJzb25hbCcsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGVzdHJveSAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHVwIHRhc2tzIGZvciB0aGUgZmVhdHVyZSBkZXBsb3ltZW50IHN0YWdlLCBpbmNsdWRpbmcgZGVwbG95bWVudCwgY29tcGFyaW5nIGNoYW5nZXMgKGRpZmYpLFxuICAgKiBhbmQgZGVzdHJveWluZyB0aGUgc3RhY2sgd2hlbiBubyBsb25nZXIgbmVlZGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUZlYXR1cmVTdGFnZSgpIHtcbiAgICBjb25zdCBzdGFja0lkID0gdGhpcy5nZXRDbGlTdGFja1BhdHRlcm4oJ2ZlYXR1cmUnKTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnZGVwbG95OmZlYXR1cmUnLCB7XG4gICAgICBleGVjOiBgY2RrIC0tb3V0cHV0cy1maWxlIGNkay1vdXRwdXRzLWZlYXR1cmUuanNvbiAtLXByb2dyZXNzIGV2ZW50cyAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgZGVwbG95ICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKCdkaWZmOmZlYXR1cmUnLCB7XG4gICAgICBleGVjOiBgY2RrIGRpZmYgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soJ2Zhc3RkaWZmOmZlYXR1cmUnLCB7XG4gICAgICBleGVjOiBgY2RrIGRpZmYgLS1uby1jaGFuZ2VzZXQgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soJ2Rlc3Ryb3k6ZmVhdHVyZScsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGVzdHJveSAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzaygnd2F0Y2g6ZmVhdHVyZScsIHtcbiAgICAgIGV4ZWM6IGBjZGsgZGVwbG95IC0tb3V0cHV0cy1maWxlIGNkay1vdXRwdXRzLWZlYXR1cmUuanNvbiAtLXdhdGNoIC0taG90c3dhcCAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHVwIHRhc2tzIGZvciB0aGUgZ2VuZXJhbCBwaXBlbGluZSBzdGFnZXMgKGRldiwgcHJvZCksIGluY2x1ZGluZyBkZXBsb3ltZW50IGFuZCBjb21wYXJpbmcgY2hhbmdlcyAoZGlmZikuXG4gICAqIEBwYXJhbSB7RGVwbG95U3RhZ2VPcHRpb25zfSBzdGFnZSAtIFRoZSBzdGFnZSB0byBjcmVhdGVcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVQaXBlbGluZVN0YWdlKHN0YWdlOiBEZXBsb3ltZW50U3RhZ2UpIHtcbiAgICBjb25zdCBzdGFja0lkID0gdGhpcy5nZXRDbGlTdGFja1BhdHRlcm4oc3RhZ2UubmFtZSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soYGRlcGxveToke3N0YWdlLm5hbWV9YCwge1xuICAgICAgZXhlYzogYGNkayAtLWFwcCAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9IC0tb3V0cHV0cy1maWxlIGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbiAtLXByb2dyZXNzIGV2ZW50cyAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgZGVwbG95ICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKGBkaWZmOiR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBleGVjOiBgY2RrIC0tYXBwICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0gZGlmZiAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgZmFzdGRpZmY6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgIGV4ZWM6IGBjZGsgLS1hcHAgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fSBkaWZmIC0tbm8tY2hhbmdlc2V0ICR7c3RhY2tJZH1gLFxuICAgIH0pO1xuICAgIGlmIChzdGFnZS53YXRjaGFibGUpIHtcbiAgICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKGB3YXRjaDoke3N0YWdlLm5hbWV9YCwge1xuICAgICAgICBleGVjOiBgY2RrIGRlcGxveSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb24gLS13YXRjaCAtLWhvdHN3YXAgJHtzdGFja0lkfWAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgc2V0cyB1cCB0YXNrcyBmb3IgdGhlIGluZGVwZW5kZW50IHN0YWdlcyBpbmNsdWRpbmcgZGVwbG95bWVudCBhbmQgY29tcGFyaW5nIGNoYW5nZXMgKGRpZmYpLlxuICAgKiBAcGFyYW0ge05hbWVkU3RhZ2VPcHRpb25zfSBzdGFnZSAtIFRoZSBzdGFnZSB0byBjcmVhdGVcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbmRlcGVuZGVudFN0YWdlKHN0YWdlOiBJbmRlcGVuZGVudFN0YWdlKSB7XG4gICAgY29uc3Qgc3RhY2tJZCA9IHRoaXMuZ2V0Q2xpU3RhY2tQYXR0ZXJuKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMucHJvamVjdC5hZGRUYXNrKGBkZXBsb3k6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgIGV4ZWM6IGBjZGsgLS1hcHAgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fSAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb24gLS1wcm9ncmVzcyBldmVudHMgLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyIGRlcGxveSAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgZGlmZjoke3N0YWdlLm5hbWV9YCwge1xuICAgICAgZXhlYzogYGNkayAtLWFwcCAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9IGRpZmYgJHtzdGFja0lkfWAsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soYGZhc3RkaWZmOiR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBleGVjOiBgY2RrIC0tYXBwICR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0gZGlmZiAtLW5vLWNoYW5nZXNldCAke3N0YWNrSWR9YCxcbiAgICB9KTtcbiAgICBpZiAoc3RhZ2Uud2F0Y2hhYmxlKSB7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhgd2F0Y2g6JHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgICAgZXhlYzogYGNkayBkZXBsb3kgLS1vdXRwdXRzLWZpbGUgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uIC0td2F0Y2ggLS1ob3Rzd2FwICR7c3RhY2tJZH1gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldENsaVN0YWNrUGF0dGVybihzdGFnZTogc3RyaW5nKSB7XG4gICAgbGV0IHNlcCA9ICctJztcbiAgICBpZiAodGhpcy5zdGFja1ByZWZpeCA9PT0gJycpIHtcbiAgICAgIHNlcCA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYXNlT3B0aW9ucy5kZXBsb3lTdWJTdGFja3MgPyBgJHt0aGlzLnN0YWNrUHJlZml4fSR7c2VwfSR7c3RhZ2V9ICR7dGhpcy5zdGFja1ByZWZpeH0ke3NlcH0ke3N0YWdlfS8qYCA6IGAke3RoaXMuc3RhY2tQcmVmaXh9JHtzZXB9JHtzdGFnZX1gO1xuICB9XG59XG4iXX0=
@@ -70,5 +70,5 @@ class BashCDKPipeline extends base_1.CDKPipeline {
70
70
  }
71
71
  exports.BashCDKPipeline = BashCDKPipeline;
72
72
  _a = JSII_RTTI_SYMBOL_1;
73
- BashCDKPipeline[_a] = { fqn: "projen-pipelines.BashCDKPipeline", version: "0.2.4" };
73
+ BashCDKPipeline[_a] = { fqn: "projen-pipelines.BashCDKPipeline", version: "0.2.6" };
74
74
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYmFzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUEwQztBQUMxQyxpQ0FBc0U7QUFDdEUsc0NBQTJDO0FBTTNDLE1BQWEsZUFBZ0IsU0FBUSxrQkFBVztJQUU5QyxZQUFZLEdBQStCLEVBQUUsT0FBK0I7UUFDMUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5CLE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUs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QUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXJCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyx1QkFBYyxDQUFDLElBQUksQ0FBQztJQUM3QixDQUFDOztBQXJFSCwwQ0F1RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RmlsZSwgYXdzY2RrIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENka0RpZmZUeXBlLCBDREtQaXBlbGluZSwgQ0RLUGlwZWxpbmVPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFBpcGVsaW5lRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNoQ0RLUGlwZWxpbmVPcHRpb25zIGV4dGVuZHMgQ0RLUGlwZWxpbmVPcHRpb25zIHtcbiAgLy9cbn1cblxuZXhwb3J0IGNsYXNzIEJhc2hDREtQaXBlbGluZSBleHRlbmRzIENES1BpcGVsaW5lIHtcblxuICBjb25zdHJ1Y3RvcihhcHA6IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwLCBvcHRpb25zOiBCYXNoQ0RLUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwLCBvcHRpb25zKTtcblxuICAgIGNvbnN0IHJlYWRtZSA9IG5ldyBUZXh0RmlsZSh0aGlzLCAncGlwZWxpbmUubWQnLCB7IGxpbmVzOiBbXSB9KTtcblxuICAgIHJlYWRtZS5hZGRMaW5lKCcjIEhvdyB0byBydW4geW91ciBwaXBlbGluZScpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnIyMgQnVpbGQgcGhhc2UnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnJyk7XG5cbiAgICByZWFkbWUuYWRkTGluZSgnU3ludGhlc2l6ZSB5b3VyIENESyBwcm9qZWN0OicpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdgYGBiYXNoJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoYCR7dGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJycpO1xuXG4gICAgcmVhZG1lLmFkZExpbmUoJ1B1Ymxpc2ggYWxsIHlvdXIgQ0RLIGFzc2V0cyBsaWtlIExhbWJkYSBmdW5jdGlvbiBjb2RlIGFuZCBjb250YWluZXIgaW1hZ2VzOicpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdgYGBiYXNoJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoYCR7dGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVBc3NldFVwbG9hZFN0ZXAoKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJycpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdJZiB5b3Ugd2FudCB0byBzdG9yZSB5b3VyIGNsb3VkIGFzc2VtYmx5IGFuZCBhc3NldHMgZm9yIGZ1dHVyZSB1c2Ugb3IgY29tcGxpYW5jZSByZWFzb25zLCB1c2U6Jyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYGJhc2gnKTtcbiAgICByZWFkbWUuYWRkTGluZShgJHt0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKGAke3RoaXMucHJvdmlkZUFzc2V0VXBsb2FkU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKGAke3RoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpLnRvQmFzaCgpLmNvbW1hbmRzLmpvaW4oJ1xcbicpfWApO1xuICAgIHJlYWRtZS5hZGRMaW5lKCdgYGAnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJyMjIERlcGxveW1lbnQgcGhhc2UnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ0ZvciBldmVyeSBzdGFnZSBzb21lIHNjcmlwdHMgYXJlIGdlbmVyYXRlZCBmb3IgZGlmZiBhbmQgZGVwbG95Jyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJycpO1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgcmVhZG1lLmFkZExpbmUoYFN0YWdlOiAke3N0YWdlLm5hbWV9YCk7XG4gICAgICByZWFkbWUuYWRkTGluZSgnYGBgYmFzaCcpO1xuICAgICAgaWYgKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSB7XG4gICAgICAgIHJlYWRtZS5hZGRMaW5lKGAke3RoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PSBDZGtEaWZmVHlwZS5GQVNUKS50b0Jhc2goKS5jb21tYW5kcy5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgcmVhZG1lLmFkZExpbmUoJycpO1xuICAgICAgfVxuICAgICAgcmVhZG1lLmFkZExpbmUoYCR7dGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSkudG9CYXNoKCkuY29tbWFuZHMuam9pbignXFxuJyl9YCk7XG4gICAgICByZWFkbWUuYWRkTGluZSgnYGBgJyk7XG4gICAgICByZWFkbWUuYWRkTGluZSgnJyk7XG4gICAgfVxuXG4gICAgcmVhZG1lLmFkZExpbmUoJ1RoZSBzdGFnZSBgcGVyc29uYWxgIGlzIG1lYW50IHRvIGJlIGRlcGxveWVkIG1hbnVhbGx5IGJ5IHRoZSBkZXZlbG9wZXIgYW5kIGFsc28gaGFzIGEgd2F0Y2ggc2NyaXB0IGZvciBsaXZlIHVwZGF0ZXMuJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYGJhc2gnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnbnB4IHByb2plbiBkaWZmOnBlcnNvbmFsJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ25weCBwcm9qZW4gZGVwbG95OnBlcnNvbmFsJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ25weCBwcm9qZW4gZGVzdHJveTpwZXJzb25hbCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCducHggcHJvamVuIHdhdGNoOnBlcnNvbmFsJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcbiAgICByZWFkbWUuYWRkTGluZSgnVGhlIHN0YWdlIGBmZWF0dXJlYCBpcyBtZWFudCB0byBiZSBkZXBsb3llZCBmb3IgZmVhdHVyZSBicmFuY2hlcy4nKTtcbiAgICByZWFkbWUuYWRkTGluZSgnYGBgYmFzaCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCducHggcHJvamVuIGRpZmY6ZmVhdHVyZScpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCducHggcHJvamVuIGRlcGxveTpmZWF0dXJlJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ25weCBwcm9qZW4gZGVzdHJveTpmZWF0dXJlJyk7XG4gICAgcmVhZG1lLmFkZExpbmUoJ2BgYCcpO1xuICAgIHJlYWRtZS5hZGRMaW5lKCcnKTtcblxuICB9XG5cbiAgcHVibGljIGVuZ2luZVR5cGUoKTogUGlwZWxpbmVFbmdpbmUge1xuICAgIHJldHVybiBQaXBlbGluZUVuZ2luZS5CQVNIO1xuICB9XG5cbn1cbiJdfQ==
@@ -186,6 +186,10 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
186
186
  ...this.options.useGithubEnvironments && {
187
187
  environment: stage.name,
188
188
  },
189
+ concurrency: {
190
+ group: `deploy-${stage.name}`,
191
+ cancelInProgress: false,
192
+ },
189
193
  env: {
190
194
  CI: 'true',
191
195
  ...steps.reduce((acc, step) => ({ ...acc, ...step.env }), {}),
@@ -231,6 +235,10 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
231
235
  ...this.options.useGithubEnvironments && {
232
236
  environment: stage.name,
233
237
  },
238
+ concurrency: {
239
+ group: `deploy-${stage.name}`,
240
+ cancelInProgress: false,
241
+ },
234
242
  needs: ['assetUpload', ...steps.flatMap(s => s.needs), ...jobDependencies],
235
243
  runsOn: this.options.runnerTags ?? DEFAULT_RUNNER_TAGS,
236
244
  env: {
@@ -282,6 +290,10 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
282
290
  name: `Release stage ${stage.name} to AWS`,
283
291
  needs: steps.flatMap(s => s.needs),
284
292
  runsOn: this.options.runnerTags ?? DEFAULT_RUNNER_TAGS,
293
+ concurrency: {
294
+ group: `deploy-${stage.name}`,
295
+ cancelInProgress: false,
296
+ },
285
297
  env: {
286
298
  CI: 'true',
287
299
  ...steps.reduce((acc, step) => ({ ...acc, ...step.env }), {}),
@@ -307,5 +319,5 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
307
319
  }
308
320
  exports.GithubCDKPipeline = GithubCDKPipeline;
309
321
  _a = JSII_RTTI_SYMBOL_1;
310
- GithubCDKPipeline[_a] = { fqn: "projen-pipelines.GithubCDKPipeline", version: "0.2.4" };
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx1RUFBa0Y7QUFDbEYsaUNBQTRIO0FBQzVILHNDQUEyQztBQUMzQyx3Q0FBaUQ7QUFDakQsb0NBQTJEO0FBQzNELDREQUFtRjtBQUNuRixvREFBOEQ7QUFFOUQsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBNkI5Qzs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFhaEQ7Ozs7T0FJRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsR0FBRyxPQUFPO1lBQ1YsR0FBRyxPQUFPLENBQUMsNEJBQTRCLElBQUk7Z0JBQ3pDLGVBQWUsRUFBRTtvQkFDZixJQUFJLG9DQUF1QixDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDbEQsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUU7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFUZ0QsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFYdEYsa0RBQWtEO1FBQzFDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQXFCdEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUM1QjtZQUNELGdCQUFnQixFQUFFLEVBQUU7U0FDckIsQ0FBQyxDQUFDO1FBRUgsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENB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ckM7aUJBQ0Y7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMO3dCQUNFLElBQUksRUFBRSxVQUFVO3dCQUNoQixJQUFJLEVBQUUscUJBQXFCO3FCQUM1QjtvQkFDRCxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2lCQUMvQjthQUNGLENBQUMsQ0FBQztRQUVMLENBQUM7SUFDSCxDQUFDOztBQWpVSCw4Q0FrVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGsgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0aHViV29ya2Zsb3cgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uLCBKb2JQZXJtaXNzaW9ucyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBDZGtEaWZmVHlwZSwgQ0RLUGlwZWxpbmUsIENES1BpcGVsaW5lT3B0aW9ucywgRGVwbG95bWVudFN0YWdlLCBJbmRlcGVuZGVudFN0YWdlLCBOYW1lZFN0YWdlT3B0aW9ucyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBQaXBlbGluZUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBtZXJnZUpvYlBlcm1pc3Npb25zIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBQaXBlbGluZVN0ZXAsIFNpbXBsZUNvbW1hbmRTdGVwIH0gZnJvbSAnLi4vc3RlcHMnO1xuaW1wb3J0IHsgRG93bmxvYWRBcnRpZmFjdFN0ZXAsIFVwbG9hZEFydGlmYWN0U3RlcCB9IGZyb20gJy4uL3N0ZXBzL2FydGlmYWN0LXN0ZXBzJztcbmltcG9ydCB7IEdpdGh1YlBhY2thZ2VzTG9naW5TdGVwIH0gZnJvbSAnLi4vc3RlcHMvcmVnaXN0cmllcyc7XG5cbmNvbnN0IERFRkFVTFRfUlVOTkVSX1RBR1MgPSBbJ3VidW50dS1sYXRlc3QnXTtcblxuXG4vKipcbiAqIEV4dGVuc2lvbiBvZiB0aGUgYmFzZSBDREtQaXBlbGluZSBvcHRpb25zIGluY2x1ZGluZyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgR2l0SHViLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGh1YkNES1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIENES1BpcGVsaW5lT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIHJ1bm5lciB0YWdzIHRvIHVzZSB0byBzZWxlY3QgcnVubmVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCBbJ3VidW50dS1sYXRlc3QnXVxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmVyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiB1c2UgR2l0SHViIFBhY2thZ2VzIHRvIHN0b3JlIHZlc2lvbmVkIGFydGlmYWN0cyBvZiBjbG91ZCBhc3NlbWJseTsgYWxzbyBuZWVkZWQgZm9yIG1hbnVhbCBhcHByb3ZhbHMgKi9cbiAgcmVhZG9ubHkgdXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHdoZXRoZXIgdG8gdXNlIEdpdEh1YiBlbnZpcm9ubWVudHMgZm9yIGRlcGxveW1lbnQgc3RhZ2VzXG4gICAqXG4gICAqIElORk86IFdoZW4gdXNpbmcgZW52aXJvbm1lbnRzIGNvbnNpZGVyIHByb3RlY3Rpb24gcnVsZXMgaW5zdGVhZCBvZiB1c2luZyB0aGUgbWFudWFsIG9wdGlvbiBvZiBwcm9qZW4tcGlwZWxpbmVzIGZvciBzdGFnZXNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVzZUdpdGh1YkVudmlyb25tZW50cz86IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgQ0RLIFBpcGVsaW5lIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciBHaXRIdWIgd29ya2Zsb3dzLlxuICovXG5leHBvcnQgY2xhc3MgR2l0aHViQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDREtQaXBlbGluZSB7XG5cbiAgLyoqIEluZGljYXRlcyBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSBuZWVkZWQgYmFzZWQgb24gbWFudWFsIGFwcHJvdmFsIHJlcXVpcmVtZW50cy4gKi9cbiAgcHVibGljIHJlYWRvbmx5IG5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgR2l0SHViIHdvcmtmbG93IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGlwZWxpbmUuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFdvcmtmbG93OiBHaXRodWJXb3JrZmxvdztcbiAgLyoqIExpc3Qgb2YgZGVwbG95bWVudCBzdGFnZXMgZm9yIHRoZSBwaXBlbGluZS4gKi9cbiAgcHJpdmF0ZSBkZXBsb3ltZW50U3RhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByb3RlY3RlZCB1c2VHaXRodWJQYWNrYWdlczogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIG1pbk5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgR2l0aHViQ0RLUGlwZWxpbmUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgQ0RLIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhpcyBwaXBlbGluZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwcDogYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByaXZhdGUgb3B0aW9uczogR2l0aHViQ0RLUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLi4ub3B0aW9ucy51c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5ICYmIHtcbiAgICAgICAgcHJlSW5zdGFsbFN0ZXBzOiBbXG4gICAgICAgICAgbmV3IEdpdGh1YlBhY2thZ2VzTG9naW5TdGVwKGFwcCwgeyB3cml0ZTogZmFsc2UgfSksXG4gICAgICAgICAgLi4ub3B0aW9ucy5wcmVJbnN0YWxsU3RlcHMgPz8gW10sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVwbG95bWVudCB3b3JrZmxvdyBvbiBHaXRIdWIuXG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cgPSB0aGlzLmFwcC5naXRodWIhLmFkZFdvcmtmbG93KCdkZXBsb3knKTtcbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5vbih7XG4gICAgICBwdXNoOiB7XG4gICAgICAgIGJyYW5jaGVzOiBbdGhpcy5icmFuY2hOYW1lXSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICB9KTtcblxuICAgIC8vIERldGVybWluZSBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSBuZWNlc3NhcnkuXG4gICAgdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyA9IG9wdGlvbnMuc3RhZ2VzLmZpbmQocyA9PiBzLm1hbnVhbEFwcHJvdmFsID09PSB0cnVlKSAhPT0gdW5kZWZpbmVkOztcbiAgICB0aGlzLnVzZUdpdGh1YlBhY2thZ2VzID0gdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAob3B0aW9ucy51c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLm1pbk5vZGVWZXJzaW9uID0gYXBwLm1pbk5vZGVWZXJzaW9uO1xuXG4gICAgaWYgKHRoaXMudXNlR2l0aHViUGFja2FnZXMpIHtcbiAgICAgIGFwcC5ucG1yYy5hZGRSZWdpc3RyeSgnaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20nLCB0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZSk7XG4gICAgICBhcHAubnBtcmMuYWRkQ29uZmlnKCcvL25wbS5wa2cuZ2l0aHViLmNvbS86X2F1dGhUb2tlbicsICcke0dJVEhVQl9UT0tFTn0nKTtcbiAgICAgIGFwcC5ucG1yYy5hZGRDb25maWcoJy8vbnBtLnBrZy5naXRodWIuY29tLzphbHdheXMtYXV0aCcsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGpvYnMgZm9yIHN5bnRoZXNpemluZywgYXNzZXQgdXBsb2FkaW5nLCBhbmQgZGVwbG95bWVudC5cbiAgICB0aGlzLmNyZWF0ZVN5bnRoKCk7XG5cbiAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKCk7XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIG9wdGlvbnMuc3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZURlcGxveW1lbnQoc3RhZ2UpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIChvcHRpb25zLmluZGVwZW5kZW50U3RhZ2VzID8/IFtdKSkge1xuICAgICAgdGhpcy5jcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiB0aGUgdHlwZSBvZiBlbmdpbmUgdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBDREtQaXBlbGluZSBpcyBmb3IgKi9cbiAgcHVibGljIGVuZ2luZVR5cGUoKTogUGlwZWxpbmVFbmdpbmUge1xuICAgIHJldHVybiBQaXBlbGluZUVuZ2luZS5HSVRIVUI7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN5bnRoZXNpcyBqb2IgZm9yIHRoZSBwaXBlbGluZSB1c2luZyBHaXRIdWIgQWN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW107XG4gICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpKTtcbiAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpKTtcblxuICAgIHN0ZXBzLnB1c2gobmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgIG5hbWU6ICdjbG91ZC1hc3NlbWJseScsXG4gICAgICBwYXRoOiBgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fS9gLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGdpdGh1YlN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93LmFkZEpvYignc3ludGgnLCB7XG4gICAgICBuYW1lOiAnU3ludGggQ0RLIGFwcGxpY2F0aW9uJyxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5naXRodWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIG5lZWRzOiBbLi4uZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpXSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sIC4uLihnaXRodWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnLFxuICAgICAgICB9LFxuICAgICAgICAuLi5naXRodWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gdXBsb2FkIGFzc2V0cyB0byBBV1MgYXMgcGFydCBvZiB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQXNzZXRVcGxvYWQoKTogdm9pZCB7XG5cbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIFsnZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCJnaXRodWItYWN0aW9uc1wiICYmIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcImdpdGh1Yi1hY3Rpb25zQGdpdGh1Yi5jb21cIiddKSxcbiAgICAgIG5ldyBEb3dubG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgbmFtZTogJ2Nsb3VkLWFzc2VtYmx5JyxcbiAgICAgICAgcGF0aDogYCR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vYCxcbiAgICAgIH0pLFxuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZUFzc2V0VXBsb2FkU3RlcCgpLFxuICAgIF07XG5cbiAgICBpZiAodGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cykge1xuICAgICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVBc3NlbWJseVVwbG9hZFN0ZXAoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2hTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5hZGRKb2IoJ2Fzc2V0VXBsb2FkJywge1xuICAgICAgbmFtZTogJ1B1Ymxpc2ggYXNzZXRzIHRvIEFXUycsXG4gICAgICBuZWVkczogWydzeW50aCcsIC4uLmdoU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpXSxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5naFN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICBjb250ZW50czogdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyA/IEpvYlBlcm1pc3Npb24uV1JJVEUgOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIC4uLnRoaXMudXNlR2l0aHViUGFja2FnZXMgJiYge1xuICAgICAgICAgIHBhY2thZ2VzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgfSwgLi4uKGdoU3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAnZmV0Y2gtZGVwdGgnOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmdoU3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIGRlcGxveSB0aGUgQ0RLIGFwcGxpY2F0aW9uIHRvIEFXUy5cbiAgICogQHBhcmFtIHN0YWdlIC0gVGhlIGRlcGxveW1lbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZURlcGxveW1lbnQoc3RhZ2U6IERlcGxveW1lbnRTdGFnZSk6IHZvaWQge1xuXG4gICAgaWYgKHN0YWdlLm1hbnVhbEFwcHJvdmFsID09PSB0cnVlKSB7XG4gICAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgICAgbmV3IFNpbXBsZUNvbW1hbmRTdGVwKHRoaXMucHJvamVjdCwgdGhpcy5yZW5kZXJJbnN0YWxsUGFja2FnZUNvbW1hbmRzKGAke3RoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlfS8ke3RoaXMuYXBwLm5hbWV9QFxcJHt7Z2l0aHViLmV2ZW50LmlucHV0cy52ZXJzaW9ufX1gKSksXG4gICAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIFtgbXYgLi9ub2RlX21vZHVsZXMvJHt0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZX0vJHt0aGlzLmFwcC5uYW1lfSAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9YF0pLFxuICAgICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICBuYW1lOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgcGF0aDogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmAsXG4gICAgICAgIH0pLFxuICAgICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgICAvLyBDcmVhdGUgbmV3IHdvcmtmbG93IGZvciBkZXBsb3ltZW50XG4gICAgICBjb25zdCBzdGFnZVdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdyhgcmVsZWFzZS0ke3N0YWdlLm5hbWV9YCk7XG4gICAgICBzdGFnZVdvcmtmbG93Lm9uKHtcbiAgICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgdmVyc2lvbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BhY2thZ2UgdmVyc2lvbicsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBzdGFnZVdvcmtmbG93LmFkZEpvYignZGVwbG95Jywge1xuICAgICAgICBuYW1lOiBgUmVsZWFzZSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAgIG5lZWRzOiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cyAmJiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3lKb2IodGhpcy5kZXBsb3ltZW50V29ya2Zsb3csIFsuLi4odGhpcy5kZXBsb3ltZW50U3RhZ2VzLmxlbmd0aCA+IDAgPyBbYGRlcGxveS0ke3RoaXMuZGVwbG95bWVudFN0YWdlcy5hdCgtMSkhfWBdIDogW10pXSwgc3RhZ2UpO1xuICAgICAgdGhpcy5kZXBsb3ltZW50U3RhZ2VzLnB1c2goc3RhZ2UubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZXBsb3lKb2Iod29ya2Zsb3c6IEdpdGh1YldvcmtmbG93LCBqb2JEZXBlbmRlbmNpZXM6IHN0cmluZ1tdLCBzdGFnZTogTmFtZWRTdGFnZU9wdGlvbnMpIHtcbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIG5ldyBEb3dubG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgbmFtZTogJ2Nsb3VkLWFzc2VtYmx5JyxcbiAgICAgICAgcGF0aDogYCR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vYCxcbiAgICAgIH0pLFxuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgbmFtZTogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICBwYXRoOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uYCxcbiAgICAgIH0pLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIC8vIEFkZCBkZXBsb3ltZW50IHRvIENJL0NEIHdvcmtmbG93XG4gICAgd29ya2Zsb3cuYWRkSm9iKGBkZXBsb3ktJHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgIG5hbWU6IGBEZXBsb3kgc3RhZ2UgJHtzdGFnZS5uYW1lfSB0byBBV1NgLFxuICAgICAgLi4udGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cyAmJiB7XG4gICAgICAgIGVudmlyb25tZW50OiBzdGFnZS5uYW1lLFxuICAgICAgfSxcbiAgICAgIG5lZWRzOiBbJ2Fzc2V0VXBsb2FkJywgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLCAuLi5qb2JEZXBlbmRlbmNpZXNdLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgZW52OiB7XG4gICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NCcsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBpbmRlcGVuZGVudCBzdGFnZSB0byBjcmVhdGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlOiBJbmRlcGVuZGVudFN0YWdlKTogdm9pZCB7XG4gICAgaWYgKHN0YWdlLmRlcGxveU9uUHVzaCB8fCB0aGlzLm9wdGlvbnMudXNlR2l0aHViRW52aXJvbm1lbnRzKSB7XG4gICAgICB0aGlzLmNyZWF0ZURlcGxveUpvYih0aGlzLmRlcGxveW1lbnRXb3JrZmxvdywgW10sIHN0YWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgICAuLi4oKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSA/IFt0aGlzLnByb3ZpZGVEaWZmU3RlcChzdGFnZSwgc3RhZ2UuZGlmZlR5cGUgPT09IENka0RpZmZUeXBlLkZBU1QpXSA6IFtdKSxcbiAgICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG5cbiAgICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICBuYW1lOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgcGF0aDogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmAsXG4gICAgICAgIH0pLFxuICAgICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgICAvLyBDcmVhdGUgbmV3IHdvcmtmbG93IGZvciBkZXBsb3ltZW50XG4gICAgICBjb25zdCBzdGFnZVdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdyhgZGVwbG95LSR7c3RhZ2UubmFtZX1gKTtcbiAgICAgIHN0YWdlV29ya2Zsb3cub24oe1xuICAgICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICAgIH0pO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5hZGRKb2IoJ2RlcGxveScsIHtcbiAgICAgICAgbmFtZTogYFJlbGVhc2Ugc3RhZ2UgJHtzdGFnZS5uYW1lfSB0byBBV1NgLFxuICAgICAgICBuZWVkczogc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
322
+ GithubCDKPipeline[_a] = { fqn: "projen-pipelines.GithubCDKPipeline", version: "0.2.6" };
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx1RUFBa0Y7QUFDbEYsaUNBQTRIO0FBQzVILHNDQUEyQztBQUMzQyx3Q0FBaUQ7QUFDakQsb0NBQTJEO0FBQzNELDREQUFtRjtBQUNuRixvREFBOEQ7QUFFOUQsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBNkI5Qzs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFhaEQ7Ozs7T0FJRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsR0FBRyxPQUFPO1lBQ1YsR0FBRyxPQUFPLENBQUMsNEJBQTRCLElBQUk7Z0JBQ3pDLGVBQWUsRUFBRTtvQkFDZixJQUFJLG9DQUF1QixDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDbEQsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUU7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFUZ0QsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFYdEYsa0RBQWtEO1FBQzFDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQXFCdEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUM1QjtZQUNELGdCQUFnQixFQUFFLEVBQUU7U0FDckIsQ0FBQyxDQUFDO1FBRUgsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENB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LDZCQUFtQixFQUFDO29CQUMvQixRQUFRLEVBQUUsK0JBQWEsQ0FBQyxJQUFJO2lCQUM3QixFQUFFLEdBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFzQixDQUFDO2dCQUMxRixLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUk7cUJBQ3JDO2lCQUNGO2dCQUNELEtBQUssRUFBRTtvQkFDTDt3QkFDRSxJQUFJLEVBQUUsVUFBVTt3QkFDaEIsSUFBSSxFQUFFLHFCQUFxQjtxQkFDNUI7b0JBQ0QsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDL0I7YUFDRixDQUFDLENBQUM7UUFFTCxDQUFDO0lBQ0gsQ0FBQzs7QUE3VUgsOENBOFVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEdpdGh1YldvcmtmbG93IH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiwgSm9iUGVybWlzc2lvbnMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrRGlmZlR5cGUsIENES1BpcGVsaW5lLCBDREtQaXBlbGluZU9wdGlvbnMsIERlcGxveW1lbnRTdGFnZSwgSW5kZXBlbmRlbnRTdGFnZSwgTmFtZWRTdGFnZU9wdGlvbnMgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUGlwZWxpbmVFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHsgbWVyZ2VKb2JQZXJtaXNzaW9ucyB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgUGlwZWxpbmVTdGVwLCBTaW1wbGVDb21tYW5kU3RlcCB9IGZyb20gJy4uL3N0ZXBzJztcbmltcG9ydCB7IERvd25sb2FkQXJ0aWZhY3RTdGVwLCBVcGxvYWRBcnRpZmFjdFN0ZXAgfSBmcm9tICcuLi9zdGVwcy9hcnRpZmFjdC1zdGVwcyc7XG5pbXBvcnQgeyBHaXRodWJQYWNrYWdlc0xvZ2luU3RlcCB9IGZyb20gJy4uL3N0ZXBzL3JlZ2lzdHJpZXMnO1xuXG5jb25zdCBERUZBVUxUX1JVTk5FUl9UQUdTID0gWyd1YnVudHUtbGF0ZXN0J107XG5cblxuLyoqXG4gKiBFeHRlbnNpb24gb2YgdGhlIGJhc2UgQ0RLUGlwZWxpbmUgb3B0aW9ucyBpbmNsdWRpbmcgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIEdpdEh1Yi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRodWJDREtQaXBlbGluZU9wdGlvbnMgZXh0ZW5kcyBDREtQaXBlbGluZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBydW5uZXIgdGFncyB0byB1c2UgdG8gc2VsZWN0IHJ1bm5lcnNcbiAgICpcbiAgICogQGRlZmF1bHQgWyd1YnVudHUtbGF0ZXN0J11cbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogdXNlIEdpdEh1YiBQYWNrYWdlcyB0byBzdG9yZSB2ZXNpb25lZCBhcnRpZmFjdHMgb2YgY2xvdWQgYXNzZW1ibHk7IGFsc28gbmVlZGVkIGZvciBtYW51YWwgYXBwcm92YWxzICovXG4gIHJlYWRvbmx5IHVzZUdpdGh1YlBhY2thZ2VzRm9yQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRvIHVzZSBHaXRIdWIgZW52aXJvbm1lbnRzIGZvciBkZXBsb3ltZW50IHN0YWdlc1xuICAgKlxuICAgKiBJTkZPOiBXaGVuIHVzaW5nIGVudmlyb25tZW50cyBjb25zaWRlciBwcm90ZWN0aW9uIHJ1bGVzIGluc3RlYWQgb2YgdXNpbmcgdGhlIG1hbnVhbCBvcHRpb24gb2YgcHJvamVuLXBpcGVsaW5lcyBmb3Igc3RhZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1c2VHaXRodWJFbnZpcm9ubWVudHM/OiBib29sZWFuO1xufVxuXG5cbi8qKlxuICogSW1wbGVtZW50cyBhIENESyBQaXBlbGluZSBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1YkNES1BpcGVsaW5lIGV4dGVuZHMgQ0RLUGlwZWxpbmUge1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVlZGVkIGJhc2VkIG9uIG1hbnVhbCBhcHByb3ZhbCByZXF1aXJlbWVudHMuICovXG4gIHB1YmxpYyByZWFkb25seSBuZWVkc1ZlcnNpb25lZEFydGlmYWN0czogYm9vbGVhbjtcblxuICAvKiogVGhlIEdpdEh1YiB3b3JrZmxvdyBhc3NvY2lhdGVkIHdpdGggdGhlIHBpcGVsaW5lLiAqL1xuICBwcml2YXRlIGRlcGxveW1lbnRXb3JrZmxvdzogR2l0aHViV29ya2Zsb3c7XG4gIC8qKiBMaXN0IG9mIGRlcGxveW1lbnQgc3RhZ2VzIGZvciB0aGUgcGlwZWxpbmUuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFN0YWdlczogc3RyaW5nW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgdXNlR2l0aHViUGFja2FnZXM6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBtaW5Ob2RlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEdpdGh1YkNES1BpcGVsaW5lIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIENESyBhcHAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcHA6IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwLCBwcml2YXRlIG9wdGlvbnM6IEdpdGh1YkNES1BpcGVsaW5lT3B0aW9ucykge1xuICAgIHN1cGVyKGFwcCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMudXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSAmJiB7XG4gICAgICAgIHByZUluc3RhbGxTdGVwczogW1xuICAgICAgICAgIG5ldyBHaXRodWJQYWNrYWdlc0xvZ2luU3RlcChhcHAsIHsgd3JpdGU6IGZhbHNlIH0pLFxuICAgICAgICAgIC4uLm9wdGlvbnMucHJlSW5zdGFsbFN0ZXBzID8/IFtdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cgb24gR2l0SHViLlxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93ID0gdGhpcy5hcHAuZ2l0aHViIS5hZGRXb3JrZmxvdygnZGVwbG95Jyk7XG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cub24oe1xuICAgICAgcHVzaDoge1xuICAgICAgICBicmFuY2hlczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVjZXNzYXJ5LlxuICAgIHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPSBvcHRpb25zLnN0YWdlcy5maW5kKHMgPT4gcy5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkgIT09IHVuZGVmaW5lZDs7XG4gICAgdGhpcy51c2VHaXRodWJQYWNrYWdlcyA9IHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgJiYgKG9wdGlvbnMudXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseSA/PyBmYWxzZSk7XG4gICAgdGhpcy5taW5Ob2RlVmVyc2lvbiA9IGFwcC5taW5Ob2RlVmVyc2lvbjtcblxuICAgIGlmICh0aGlzLnVzZUdpdGh1YlBhY2thZ2VzKSB7XG4gICAgICBhcHAubnBtcmMuYWRkUmVnaXN0cnkoJ2h0dHBzOi8vbnBtLnBrZy5naXRodWIuY29tJywgdGhpcy5iYXNlT3B0aW9ucy5wa2dOYW1lc3BhY2UpO1xuICAgICAgYXBwLm5wbXJjLmFkZENvbmZpZygnLy9ucG0ucGtnLmdpdGh1Yi5jb20vOl9hdXRoVG9rZW4nLCAnJHtHSVRIVUJfVE9LRU59Jyk7XG4gICAgICBhcHAubnBtcmMuYWRkQ29uZmlnKCcvL25wbS5wa2cuZ2l0aHViLmNvbS86YWx3YXlzLWF1dGgnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBqb2JzIGZvciBzeW50aGVzaXppbmcsIGFzc2V0IHVwbG9hZGluZywgYW5kIGRlcGxveW1lbnQuXG4gICAgdGhpcy5jcmVhdGVTeW50aCgpO1xuXG4gICAgdGhpcy5jcmVhdGVBc3NldFVwbG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAob3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKiogdGhlIHR5cGUgb2YgZW5naW5lIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgQ0RLUGlwZWxpbmUgaXMgZm9yICovXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUSFVCO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzeW50aGVzaXMgam9iIGZvciB0aGUgcGlwZWxpbmUgdXNpbmcgR2l0SHViIEFjdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVN5bnRoKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzOiBQaXBlbGluZVN0ZXBbXSA9IFtdO1xuICAgIHN0ZXBzLnB1c2godGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSk7XG4gICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSk7XG5cbiAgICBzdGVwcy5wdXNoKG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICBuYW1lOiAnY2xvdWQtYXNzZW1ibHknLFxuICAgICAgcGF0aDogYCR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vYCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBnaXRodWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5hZGRKb2IoJ3N5bnRoJywge1xuICAgICAgbmFtZTogJ1N5bnRoIENESyBhcHBsaWNhdGlvbicsXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uZ2l0aHViU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICBuZWVkczogWy4uLmdpdGh1YlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICB9LCAuLi4oZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIHVwbG9hZCBhc3NldHMgdG8gQVdTIGFzIHBhcnQgb2YgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFzc2V0VXBsb2FkKCk6IHZvaWQge1xuXG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICBuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCBbJ2dpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiZ2l0aHViLWFjdGlvbnNcIiAmJiBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCJnaXRodWItYWN0aW9uc0BnaXRodWIuY29tXCInXSksXG4gICAgICBuZXcgRG93bmxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6ICdjbG91ZC1hc3NlbWJseScsXG4gICAgICAgIHBhdGg6IGAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9L2AsXG4gICAgICB9KSxcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVBc3NldFVwbG9hZFN0ZXAoKSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMpIHtcbiAgICAgIHN0ZXBzLnB1c2godGhpcy5wcm92aWRlQXNzZW1ibHlVcGxvYWRTdGVwKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGdoU3RlcHMgPSBzdGVwcy5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cuYWRkSm9iKCdhc3NldFVwbG9hZCcsIHtcbiAgICAgIG5hbWU6ICdQdWJsaXNoIGFzc2V0cyB0byBBV1MnLFxuICAgICAgbmVlZHM6IFsnc3ludGgnLCAuLi5naFN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uZ2hTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgY29udGVudHM6IHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAuLi50aGlzLnVzZUdpdGh1YlBhY2thZ2VzICYmIHtcbiAgICAgICAgICBwYWNrYWdlczogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgIH0sIC4uLihnaFN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ2ZldGNoLWRlcHRoJzogMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5naFN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBkZXBsb3ltZW50IHN0YWdlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVEZXBsb3ltZW50KHN0YWdlOiBEZXBsb3ltZW50U3RhZ2UpOiB2b2lkIHtcblxuICAgIGlmIChzdGFnZS5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIHRoaXMucmVuZGVySW5zdGFsbFBhY2thZ2VDb21tYW5kcyhgJHt0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZX0vJHt0aGlzLmFwcC5uYW1lfUBcXCR7e2dpdGh1Yi5ldmVudC5pbnB1dHMudmVyc2lvbn19YCkpLFxuICAgICAgICBuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCBbYG12IC4vbm9kZV9tb2R1bGVzLyR7dGhpcy5iYXNlT3B0aW9ucy5wa2dOYW1lc3BhY2V9LyR7dGhpcy5hcHAubmFtZX0gJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fWBdKSxcbiAgICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgbmFtZTogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgIHBhdGg6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb25gLFxuICAgICAgICB9KSxcbiAgICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgICAgLy8gQ3JlYXRlIG5ldyB3b3JrZmxvdyBmb3IgZGVwbG95bWVudFxuICAgICAgY29uc3Qgc3RhZ2VXb3JrZmxvdyA9IHRoaXMuYXBwLmdpdGh1YiEuYWRkV29ya2Zsb3coYHJlbGVhc2UtJHtzdGFnZS5uYW1lfWApO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5vbih7XG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHtcbiAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgIHZlcnNpb246IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQYWNrYWdlIHZlcnNpb24nLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5hZGRKb2IoJ2RlcGxveScsIHtcbiAgICAgICAgbmFtZTogYFJlbGVhc2Ugc3RhZ2UgJHtzdGFnZS5uYW1lfSB0byBBV1NgLFxuICAgICAgICBuZWVkczogc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHMgJiYge1xuICAgICAgICAgIGVudmlyb25tZW50OiBzdGFnZS5uYW1lLFxuICAgICAgICB9LFxuICAgICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAgIGdyb3VwOiBgZGVwbG95LSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgIGNhbmNlbEluUHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICAgIHRvb2xzOiB7XG4gICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlRGVwbG95Sm9iKHRoaXMuZGVwbG95bWVudFdvcmtmbG93LCBbLi4uKHRoaXMuZGVwbG95bWVudFN0YWdlcy5sZW5ndGggPiAwID8gW2BkZXBsb3ktJHt0aGlzLmRlcGxveW1lbnRTdGFnZXMuYXQoLTEpIX1gXSA6IFtdKV0sIHN0YWdlKTtcbiAgICAgIHRoaXMuZGVwbG95bWVudFN0YWdlcy5wdXNoKHN0YWdlLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVwbG95Sm9iKHdvcmtmbG93OiBHaXRodWJXb3JrZmxvdywgam9iRGVwZW5kZW5jaWVzOiBzdHJpbmdbXSwgc3RhZ2U6IE5hbWVkU3RhZ2VPcHRpb25zKSB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICBuZXcgRG93bmxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6ICdjbG91ZC1hc3NlbWJseScsXG4gICAgICAgIHBhdGg6IGAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9L2AsXG4gICAgICB9KSxcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgcGF0aDogYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmAsXG4gICAgICB9KSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAvLyBBZGQgZGVwbG95bWVudCB0byBDSS9DRCB3b3JrZmxvd1xuICAgIHdvcmtmbG93LmFkZEpvYihgZGVwbG95LSR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBuYW1lOiBgRGVwbG95IHN0YWdlICR7c3RhZ2UubmFtZX0gdG8gQVdTYCxcbiAgICAgIC4uLnRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHMgJiYge1xuICAgICAgICBlbnZpcm9ubWVudDogc3RhZ2UubmFtZSxcbiAgICAgIH0sXG4gICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICBncm91cDogYGRlcGxveS0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgY2FuY2VsSW5Qcm9ncmVzczogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbmVlZHM6IFsnYXNzZXRVcGxvYWQnLCAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksIC4uLmpvYkRlcGVuZGVuY2llc10sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIGRlcGxveSB0aGUgQ0RLIGFwcGxpY2F0aW9uIHRvIEFXUy5cbiAgICogQHBhcmFtIHN0YWdlIC0gVGhlIGluZGVwZW5kZW50IHN0YWdlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2U6IEluZGVwZW5kZW50U3RhZ2UpOiB2b2lkIHtcbiAgICBpZiAoc3RhZ2UuZGVwbG95T25QdXNoIHx8IHRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRGVwbG95Sm9iKHRoaXMuZGVwbG95bWVudFdvcmtmbG93LCBbXSwgc3RhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICAgIC4uLigoc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUpID8gW3RoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PT0gQ2RrRGlmZlR5cGUuRkFTVCldIDogW10pLFxuICAgICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcblxuICAgICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIG5hbWU6IGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICBwYXRoOiBgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uYCxcbiAgICAgICAgfSksXG4gICAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAgIC8vIENyZWF0ZSBuZXcgd29ya2Zsb3cgZm9yIGRlcGxveW1lbnRcbiAgICAgIGNvbnN0IHN0YWdlV29ya2Zsb3cgPSB0aGlzLmFwcC5naXRodWIhLmFkZFdvcmtmbG93KGBkZXBsb3ktJHtzdGFnZS5uYW1lfWApO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5vbih7XG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgfSk7XG4gICAgICBzdGFnZVdvcmtmbG93LmFkZEpvYignZGVwbG95Jywge1xuICAgICAgICBuYW1lOiBgUmVsZWFzZSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAgIG5lZWRzOiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgICBncm91cDogYGRlcGxveS0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICBjYW5jZWxJblByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgICB0b29sczoge1xuICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxufVxuIl19
@@ -77,24 +77,6 @@ class GitlabCDKPipeline extends base_1.CDKPipeline {
77
77
  CI: 'true',
78
78
  // NPM_REGISTRY: 'xxx'
79
79
  },
80
- beforeScript: [
81
- `check_variables_defined() {
82
- for var in "$@"; do
83
- if [ -z "$(eval "echo \\$$var")" ]; then
84
- log_fatal "\${var} not defined";
85
- fi
86
- done
87
- }
88
-
89
- awslogin() {
90
- roleArn=\${1: -\${AWS_ROLE_ARN}}
91
- sessionName=\${2:-GitLabRunner-\${CI_PROJECT_ID}-\${CI_PIPELINE_ID}}
92
- check_variables_defined roleArn AWS_TOKEN
93
- export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" $(aws sts assume-role-with-web-identity --role-arn \${roleArn} --role-session-name "\${sessionName}" --web-identity-token \${AWS_TOKEN} --duration-seconds 3600 --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text))
94
- # TODO CODE ARTIFACT
95
- }
96
- `,
97
- ],
98
80
  },
99
81
  });
100
82
  }
@@ -244,5 +226,5 @@ awslogin() {
244
226
  }
245
227
  exports.GitlabCDKPipeline = GitlabCDKPipeline;
246
228
  _a = JSII_RTTI_SYMBOL_1;
247
- GitlabCDKPipeline[_a] = { fqn: "projen-pipelines.GitlabCDKPipeline", version: "0.2.4" };
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRsYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsaUNBQXlHO0FBQ3pHLHNDQUEyQztBQWdDM0M7Ozs7R0FJRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFjaEQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxHQUErQixFQUFVLE9BQWlDO1FBQ3BGLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEK0IsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFWdEYsNENBQTRDO1FBQ3BDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQVl0Qyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEVBQUU7WUFDVixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7UUFDbkYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLDZDQUE2QyxDQUFDO1FBRS9FLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxD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QUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN0RTtTQUNGLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyx1QkFBYyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDOztBQXZRSCw4Q0F5UUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGdpdGxhYiB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBDZGtEaWZmVHlwZSwgQ0RLUGlwZWxpbmUsIENES1BpcGVsaW5lT3B0aW9ucywgRGVwbG95bWVudFN0YWdlLCBJbmRlcGVuZGVudFN0YWdlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFBpcGVsaW5lRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IFBpcGVsaW5lU3RlcCB9IGZyb20gJy4uL3N0ZXBzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBHaXRMYWIgcnVubmVyIHRhZ3MgdXNlZCB3aXRoaW4gdGhlIENJL0NEIHBpcGVsaW5lIGZvciB2YXJpb3VzIHN0YWdlcy5cbiAqIFRoaXMgYWxsb3dzIGZvciBzcGVjaWZ5aW5nIGRpZmZlcmVudCBydW5uZXJzIGJhc2VkIG9uIHRoZSB0YWdzIGZvciBkaWZmZXJlbnQgc3RhZ2VzIG9mIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRsYWJSdW5uZXJUYWdzIHtcbiAgLyoqIERlZmF1bHQgcnVubmVyIHRhZ3MgdXNlZCBpZiBzcGVjaWZpYyBzdGFnZSB0YWdzIGFyZSBub3QgcHJvdmlkZWQuICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBzdHJpbmdbXTtcbiAgLyoqIFJ1bm5lciB0YWdzIGZvciB0aGUgc3ludGhlc2lzIHN0YWdlLiAqL1xuICByZWFkb25seSBzeW50aD86IHN0cmluZ1tdO1xuICAvKiogUnVubmVyIHRhZ3MgZm9yIHRoZSBhc3NldCBwdWJsaXNoaW5nIHN0YWdlLiAqL1xuICByZWFkb25seSBhc3NldFB1Ymxpc2hpbmc/OiBzdHJpbmdbXTtcbiAgLyoqIEEgbWFwIG9mIHN0YWdlIG5hbWVzIHRvIHJ1bm5lciB0YWdzIGZvciB0aGUgZGlmZiBvcGVyYXRpb24uICovXG4gIHJlYWRvbmx5IGRpZmY/OiB7IFtzdGFnZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgLyoqIEEgbWFwIG9mIHN0YWdlIG5hbWVzIHRvIHJ1bm5lciB0YWdzIGZvciB0aGUgZGVwbG95bWVudCBvcGVyYXRpb24uICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnQ/OiB7IFtzdGFnZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgR2l0TGFiIENESyBwaXBlbGluZSwgZXh0ZW5kaW5nIHRoZSBiYXNlIENESyBwaXBlbGluZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGxhYkNES1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIENES1BpcGVsaW5lT3B0aW9ucyB7XG4gIC8qKiBSdW5uZXIgdGFncyBjb25maWd1cmF0aW9uIGZvciB0aGUgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHJ1bm5lclRhZ3M/OiBHaXRsYWJSdW5uZXJUYWdzO1xuICAvKiogVGhlIERvY2tlciBpbWFnZSB0byB1c2UgZm9yIHJ1bm5pbmcgdGhlIHBpcGVsaW5lIGpvYnMuICovXG4gIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8vIHJlYWRvbmx5IHB1Ymxpc2hlZENsb3VkQXNzZW1ibGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIEdpdGxhYkNES1BpcGVsaW5lIGNsYXNzIGV4dGVuZHMgQ0RLUGlwZWxpbmUgdG8gcHJvdmlkZSBhIHdheSB0byBjb25maWd1cmUgYW5kIGV4ZWN1dGVcbiAqIEFXUyBDREsgZGVwbG95bWVudCBwaXBlbGluZXMgd2l0aGluIEdpdExhYiBDSS9DRCBlbnZpcm9ubWVudHMuIEl0IGludGVncmF0ZXMgSUFNIHJvbGUgbWFuYWdlbWVudCxcbiAqIHJ1bm5lciBjb25maWd1cmF0aW9uLCBhbmQgZGVmaW5lcyBzdGFnZXMgYW5kIGpvYnMgZm9yIHRoZSBkZXBsb3ltZW50IHdvcmtmbG93LlxuICovXG5leHBvcnQgY2xhc3MgR2l0bGFiQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDREtQaXBlbGluZSB7XG5cbiAgLyoqIEluZGljYXRlcyBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSByZXF1aXJlZC4gQ3VycmVudGx5IHNldCB0byBmYWxzZSAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgRG9ja2VyIGltYWdlIHVzZWQgZm9yIHBpcGVsaW5lIGpvYnMuIERlZmF1bHRzIHRvIGEgc3BlY2lmaWVkIGltYWdlIG9yIGEgZGVmYXVsdCB2YWx1ZS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGpvYkltYWdlOiBzdHJpbmc7XG5cbiAgLyoqIEdpdExhYiBDSS9DRCBjb25maWd1cmF0aW9uIG9iamVjdC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqIExpc3Qgb2YgZGVwbG95bWVudCBzdGFnZXMgYXMgc3RyaW5ncy4gKi9cbiAgcHJpdmF0ZSBkZXBsb3ltZW50U3RhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGluc3RhbmNlIG9mIEdpdGxhYkNES1BpcGVsaW5lLCBpbml0aWFsaXppbmcgdGhlIEdpdExhYiBDSS9DRCBjb25maWd1cmF0aW9uXG4gICAqIGFuZCBzZXR0aW5nIHVwIHRoZSBuZWNlc3Nhcnkgc3RhZ2VzIGFuZCBqb2JzIGZvciBBV1MgQ0RLIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7YXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHB9IGFwcCAtIFRoZSBBV1MgQ0RLIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhlIHBpcGVsaW5lLlxuICAgKiBAcGFyYW0ge0dpdGxhYkNES1BpcGVsaW5lT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBwOiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJpdmF0ZSBvcHRpb25zOiBHaXRsYWJDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHAsIG9wdGlvbnMpO1xuXG4gICAgLy8gVE9ETyB1c2UgZXhpc3RpbmcgY29uZmlnIGlmIHBvc3NpYmxlXG4gICAgdGhpcy5jb25maWcgPSBuZXcgZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb24oYXBwLCB7XG4gICAgICBzdGFnZXM6IFtdLFxuICAgICAgam9iczoge30sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzID0gZmFsc2U7IC8vIG9wdGlvbnMucHVibGlzaGVkQ2xvdWRBc3NlbWJsaWVzID8/IGZhbHNlO1xuICAgIHRoaXMuam9iSW1hZ2UgPSBvcHRpb25zLmltYWdlID8/ICdpbWFnZToganNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW0tbm9kZTE4JztcblxuICAgIHRoaXMuc2V0dXBTbmlwcGV0cygpO1xuXG4gICAgdGhpcy5jcmVhdGVTeW50aCgpO1xuXG4gICAgdGhpcy5jcmVhdGVBc3NldFVwbG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIChvcHRpb25zLmluZGVwZW5kZW50U3RhZ2VzID8/IFtdKSkge1xuICAgICAgdGhpcy5jcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGJhc2Ugam9iIHNuaXBwZXRzIGZvciBhcnRpZmFjdCBoYW5kbGluZyBhbmQgQVdTIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGRlZmluZXMgcmV1c2FibGUgam9iIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGV4dGVuZGVkIGJ5IHNwZWNpZmljIHBpcGVsaW5lIGpvYnMsXG4gICAqIGZhY2lsaXRhdGluZyBhcnRpZmFjdCBjYWNoaW5nIGFuZCBBV1MgYXV0aGVudGljYXRpb24gc2V0dXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0dXBTbmlwcGV0cygpIHtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgICcuYXJ0aWZhY3RzX2Nkayc6IHtcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkNhY2hlV2hlbi5PTl9TVUNDRVNTLFxuICAgICAgICAgIGV4cGlyZUluOiAnMzAgZGF5cycsXG4gICAgICAgICAgbmFtZTogJ0NESyBBc3NlbWJseSAtICRDSV9KT0JfTkFNRS0kQ0lfQ09NTUlUX1JFRl9TTFVHJyxcbiAgICAgICAgICB1bnRyYWNrZWQ6IGZhbHNlLFxuICAgICAgICAgIHBhdGhzOiBbJ2Nkay5vdXQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnLmFydGlmYWN0c19jZGtkZXBsb3knOiB7XG4gICAgICAgIGFydGlmYWN0czoge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5DYWNoZVdoZW4uT05fU1VDQ0VTUyxcbiAgICAgICAgICBleHBpcmVJbjogJzMwIGRheXMnLFxuICAgICAgICAgIG5hbWU6ICdDREsgT3V0cHV0cyAtICRDSV9KT0JfTkFNRS0kQ0lfQ09NTUlUX1JFRl9TTFVHJyxcbiAgICAgICAgICB1bnRyYWNrZWQ6IGZhbHNlLFxuICAgICAgICAgIHBhdGhzOiBbJ2Nkay1vdXRwdXRzLSouanNvbiddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICcuYXdzX2Jhc2UnOiB7XG4gICAgICAgIGltYWdlOiB7IG5hbWU6IHRoaXMuam9iSW1hZ2UgfSxcbiAgICAgICAgaWRUb2tlbnM6IHtcbiAgICAgICAgICBBV1NfVE9LRU46IHtcbiAgICAgICAgICAgIGF1ZDogJ2h0dHBzOi8vc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLy8gTlBNX1JFR0lTVFJZOiAneHh4J1xuICAgICAgICB9LFxuICAgICAgICBiZWZvcmVTY3JpcHQ6IFtcbiAgICAgICAgICBgY2hlY2tfdmFyaWFibGVzX2RlZmluZWQoKSB7XG4gIGZvciB2YXIgaW4gXCIkQFwiOyBkb1xuICAgIGlmIFsgLXogXCIkKGV2YWwgXCJlY2hvIFxcXFwkJHZhclwiKVwiIF07IHRoZW5cbiAgICAgIGxvZ19mYXRhbCBcIlxcJHt2YXJ9IG5vdCBkZWZpbmVkXCI7XG4gICAgZmlcbiAgZG9uZVxufVxuXG5hd3Nsb2dpbigpIHtcbiAgcm9sZUFybj1cXCR7MTogLVxcJHtBV1NfUk9MRV9BUk59fVxuICBzZXNzaW9uTmFtZT1cXCR7MjotR2l0TGFiUnVubmVyLVxcJHtDSV9QUk9KRUNUX0lEfS1cXCR7Q0lfUElQRUxJTkVfSUR9fVxuICBjaGVja192YXJpYWJsZXNfZGVmaW5lZCByb2xlQXJuIEFXU19UT0tFTlxuICBleHBvcnQgJChwcmludGYgXCJBV1NfQUNDRVNTX0tFWV9JRD0lcyBBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JXMgQVdTX1NFU1NJT05fVE9LRU49JXNcIiAkKGF3cyBzdHMgYXNzdW1lLXJvbGUtd2l0aC13ZWItaWRlbnRpdHkgLS1yb2xlLWFybiBcXCR7cm9sZUFybn0gLS1yb2xlLXNlc3Npb24tbmFtZSBcIlxcJHtzZXNzaW9uTmFtZX1cIiAtLXdlYi1pZGVudGl0eS10b2tlbiBcXCR7QVdTX1RPS0VOfSAtLWR1cmF0aW9uLXNlY29uZHMgMzYwMCAtLXF1ZXJ5ICdDcmVkZW50aWFscy5bQWNjZXNzS2V5SWQsU2VjcmV0QWNjZXNzS2V5LFNlc3Npb25Ub2tlbl0nIC0tb3V0cHV0IHRleHQpKVxuICAjIFRPRE8gQ09ERSBBUlRJRkFDVFxufVxuYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgJ3N5bnRoJyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUgdG8gc3ludGhlc2l6ZSBBV1MgQ0RLIGFwcGxpY2F0aW9ucy5cbiAgICogVGhpcyBtZXRob2QgY29uZmlndXJlcyB0aGUgam9iIHRvIGV4ZWN1dGUgQ0RLIHN5bnRoZXNpcywgYXBwbHlpbmcgdGhlIGFwcHJvcHJpYXRlIElBTSByb2xlXG4gICAqIGZvciBBV1MgY29tbWFuZHMgYW5kIHNwZWNpZnlpbmcgcnVubmVyIHRhZ3MgZm9yIGpvYiBleGVjdXRpb24uIFRoZSBzeW50aGVzaXplZCBvdXRwdXRzIGFyZVxuICAgKiBjb25maWd1cmVkIHRvIGJlIGNhY2hlZCBhcyBhcnRpZmFjdHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgIF07XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3N5bnRoJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBzeW50aDoge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsICcuYXJ0aWZhY3RzX2NkaycsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgbmVlZHM6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc3RhZ2U6ICdzeW50aCcsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5zeW50aCA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgc2NyaXB0OiBnaXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgIHZhcmlhYmxlczogZ2l0bGFiU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUuXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSBqb2IgdG8gdXBsb2FkIHN5bnRoZXNpemVkIGFzc2V0cyB0byBBV1MsIGhhbmRsaW5nIElBTSByb2xlXG4gICAqIGF1dGhlbnRpY2F0aW9uIGFuZCBzcGVjaWZ5aW5nIHJ1bm5lciB0YWdzLiBJdCBkZXBlbmRzIG9uIHRoZSBzdWNjZXNzZnVsIGNvbXBsZXRpb25cbiAgICogb2YgdGhlICdzeW50aCcgc3RhZ2UsIGVuc3VyaW5nIGFzc2V0cyBhcmUgb25seSBwdWJsaXNoZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzeW50aGVzaXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQXNzZXRVcGxvYWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKCksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzKSB7XG4gICAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3B1Ymxpc2hfYXNzZXRzJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBwdWJsaXNoX2Fzc2V0czoge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgc3RhZ2U6ICdwdWJsaXNoX2Fzc2V0cycsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5hc3NldFB1Ymxpc2hpbmcgPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgIG5lZWRzOiBbeyBqb2I6ICdzeW50aCcsIGFydGlmYWN0czogdHJ1ZSB9LCAuLi5naXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyldLFxuICAgICAgICBzY3JpcHQ6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBnaXRsYWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBjcmVhdGVzIGRlcGxveW1lbnQgc3RhZ2VzIGJhc2VkIG9uIHRoZSBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqIEZvciBlYWNoIHByb3ZpZGVkIGRlcGxveW1lbnQgc3RhZ2UsIHRoaXMgbWV0aG9kIHNldHMgdXAgam9icyBmb3IgJ2RpZmYnIGFuZCAnZGVwbG95JyBhY3Rpb25zLFxuICAgKiBhcHBseWluZyB0aGUgY29ycmVjdCBJQU0gcm9sZXMgYW5kIHJ1bm5lciB0YWdzLiBJdCBzdXBwb3J0cyBjb25kaXRpb25hbCBtYW51YWwgYXBwcm92YWwgZm9yXG4gICAqIGRlcGxveW1lbnQgc3RhZ2VzLCBwcm92aWRpbmcgZmxleGliaWxpdHkgaW4gdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB7RGVwbG95bWVudFN0YWdlfSBzdGFnZSAtIFRoZSBkZXBsb3ltZW50IHN0YWdlIGNvbmZpZ3VyYXRpb24gdG8gc2V0IHVwLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZURlcGxveW1lbnQoc3RhZ2U6IERlcGxveW1lbnRTdGFnZSk6IHZvaWQge1xuICAgIGNvbnN0IGRpZmZTdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEaWZmU3RlcChzdGFnZSwgc3RhZ2UuZGlmZlR5cGUgPT09IENka0RpZmZUeXBlLkZBU1QpLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuXG4gICAgY29uc3QgZGVwbG95U3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG4gICAgdGhpcy5jb25maWcuYWRkU3RhZ2VzKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSAmJiB7XG4gICAgICAgIFtgZGlmZi0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsIC4uLmRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgICAgc3RhZ2U6IHN0YWdlLm5hbWUsXG4gICAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRpZmY/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAgIG9ubHk6IHtcbiAgICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICAgIHsgam9iOiAnc3ludGgnLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICAgIHsgam9iOiAncHVibGlzaF9hc3NldHMnIH0sXG4gICAgICAgICAgICAuLi5kaWZmU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2NyaXB0OiBkaWZmU3RlcHMuZmxhdE1hcChzID0+IHMuY29tbWFuZHMpLFxuICAgICAgICAgIHZhcmlhYmxlczogZGlmZlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgW2BkZXBsb3ktJHtzdGFnZS5uYW1lfWBdOiB7XG4gICAgICAgIGV4dGVuZHM6IFsnLmF3c19iYXNlJywgJy5hcnRpZmFjdHNfY2RrZGVwbG95JywgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgLi4uc3RhZ2UubWFudWFsQXBwcm92YWwgJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgb25seToge1xuICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICB9LFxuICAgICAgICBuZWVkczogW1xuICAgICAgICAgIHsgam9iOiAnc3ludGgnLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICB7IGpvYjogJ3B1Ymxpc2hfYXNzZXRzJyB9LFxuICAgICAgICAgIC4uLihzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSkgPyBbeyBqb2I6IGBkaWZmLSR7c3RhZ2UubmFtZX1gIH1dIDogW10sXG4gICAgICAgICAgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBdLFxuICAgICAgICBzY3JpcHQ6IGRlcGxveVN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBkZXBsb3lTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlcGxveW1lbnRTdGFnZXMucHVzaChzdGFnZS5uYW1lKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gZGVwbG95IHRoZSBDREsgYXBwbGljYXRpb24gdG8gQVdTLlxuICAgKiBAcGFyYW0gc3RhZ2UgLSBUaGUgaW5kZXBlbmRlbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZTogSW5kZXBlbmRlbnRTdGFnZSk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FID8gW3RoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PSBDZGtEaWZmVHlwZS5GQVNUKV0gOiBbXSksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoc3RhZ2UubmFtZSk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBbYGRlcGxveS0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgZXh0ZW5kczogWycuYXdzX2Jhc2UnLCAnLmFydGlmYWN0c19jZGtkZXBsb3knLCAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIHN0YWdlOiBzdGFnZS5uYW1lLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAuLi5zdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIG9ubHk6IHtcbiAgICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLiFzdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc2NyaXB0OiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgIHZhcmlhYmxlczogc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUTEFCO1xuICB9XG5cbn1cblxuIl19
229
+ GitlabCDKPipeline[_a] = { fqn: "projen-pipelines.GitlabCDKPipeline", version: "0.2.6" };
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRsYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsaUNBQXlHO0FBQ3pHLHNDQUEyQztBQWdDM0M7Ozs7R0FJRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFjaEQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxHQUErQixFQUFVLE9BQWlDO1FBQ3BGLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEK0IsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFWdEYsNENBQTRDO1FBQ3BDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQVl0Qyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEVBQUU7WUFDVixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7UUFDbkYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLDZDQUE2QyxDQUFDO1FBRS9FLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxD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LEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdEU7U0FDRixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sdUJBQWMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQzs7QUFyUEgsOENBdVBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrLCBnaXRsYWIgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQ2RrRGlmZlR5cGUsIENES1BpcGVsaW5lLCBDREtQaXBlbGluZU9wdGlvbnMsIERlcGxveW1lbnRTdGFnZSwgSW5kZXBlbmRlbnRTdGFnZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBQaXBlbGluZUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBQaXBlbGluZVN0ZXAgfSBmcm9tICcuLi9zdGVwcyc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgR2l0TGFiIHJ1bm5lciB0YWdzIHVzZWQgd2l0aGluIHRoZSBDSS9DRCBwaXBlbGluZSBmb3IgdmFyaW91cyBzdGFnZXMuXG4gKiBUaGlzIGFsbG93cyBmb3Igc3BlY2lmeWluZyBkaWZmZXJlbnQgcnVubmVycyBiYXNlZCBvbiB0aGUgdGFncyBmb3IgZGlmZmVyZW50IHN0YWdlcyBvZiB0aGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0bGFiUnVubmVyVGFncyB7XG4gIC8qKiBEZWZhdWx0IHJ1bm5lciB0YWdzIHVzZWQgaWYgc3BlY2lmaWMgc3RhZ2UgdGFncyBhcmUgbm90IHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBkZWZhdWx0Pzogc3RyaW5nW107XG4gIC8qKiBSdW5uZXIgdGFncyBmb3IgdGhlIHN5bnRoZXNpcyBzdGFnZS4gKi9cbiAgcmVhZG9ubHkgc3ludGg/OiBzdHJpbmdbXTtcbiAgLyoqIFJ1bm5lciB0YWdzIGZvciB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGFnZS4gKi9cbiAgcmVhZG9ubHkgYXNzZXRQdWJsaXNoaW5nPzogc3RyaW5nW107XG4gIC8qKiBBIG1hcCBvZiBzdGFnZSBuYW1lcyB0byBydW5uZXIgdGFncyBmb3IgdGhlIGRpZmYgb3BlcmF0aW9uLiAqL1xuICByZWFkb25seSBkaWZmPzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZ1tdIH07XG4gIC8qKiBBIG1hcCBvZiBzdGFnZSBuYW1lcyB0byBydW5uZXIgdGFncyBmb3IgdGhlIGRlcGxveW1lbnQgb3BlcmF0aW9uLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50PzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIEdpdExhYiBDREsgcGlwZWxpbmUsIGV4dGVuZGluZyB0aGUgYmFzZSBDREsgcGlwZWxpbmUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRsYWJDREtQaXBlbGluZU9wdGlvbnMgZXh0ZW5kcyBDREtQaXBlbGluZU9wdGlvbnMge1xuICAvKiogUnVubmVyIHRhZ3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBpcGVsaW5lLiAqL1xuICByZWFkb25seSBydW5uZXJUYWdzPzogR2l0bGFiUnVubmVyVGFncztcbiAgLyoqIFRoZSBEb2NrZXIgaW1hZ2UgdG8gdXNlIGZvciBydW5uaW5nIHRoZSBwaXBlbGluZSBqb2JzLiAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvLyByZWFkb25seSBwdWJsaXNoZWRDbG91ZEFzc2VtYmxpZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBHaXRsYWJDREtQaXBlbGluZSBjbGFzcyBleHRlbmRzIENES1BpcGVsaW5lIHRvIHByb3ZpZGUgYSB3YXkgdG8gY29uZmlndXJlIGFuZCBleGVjdXRlXG4gKiBBV1MgQ0RLIGRlcGxveW1lbnQgcGlwZWxpbmVzIHdpdGhpbiBHaXRMYWIgQ0kvQ0QgZW52aXJvbm1lbnRzLiBJdCBpbnRlZ3JhdGVzIElBTSByb2xlIG1hbmFnZW1lbnQsXG4gKiBydW5uZXIgY29uZmlndXJhdGlvbiwgYW5kIGRlZmluZXMgc3RhZ2VzIGFuZCBqb2JzIGZvciB0aGUgZGVwbG95bWVudCB3b3JrZmxvdy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGxhYkNES1BpcGVsaW5lIGV4dGVuZHMgQ0RLUGlwZWxpbmUge1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgcmVxdWlyZWQuIEN1cnJlbnRseSBzZXQgdG8gZmFsc2UgICovXG4gIHB1YmxpYyByZWFkb25seSBuZWVkc1ZlcnNpb25lZEFydGlmYWN0czogYm9vbGVhbjtcblxuICAvKiogVGhlIERvY2tlciBpbWFnZSB1c2VkIGZvciBwaXBlbGluZSBqb2JzLiBEZWZhdWx0cyB0byBhIHNwZWNpZmllZCBpbWFnZSBvciBhIGRlZmF1bHQgdmFsdWUuICovXG4gIHB1YmxpYyByZWFkb25seSBqb2JJbWFnZTogc3RyaW5nO1xuXG4gIC8qKiBHaXRMYWIgQ0kvQ0QgY29uZmlndXJhdGlvbiBvYmplY3QuICovXG4gIHB1YmxpYyByZWFkb25seSBjb25maWc6IGdpdGxhYi5HaXRsYWJDb25maWd1cmF0aW9uO1xuXG4gIC8qKiBMaXN0IG9mIGRlcGxveW1lbnQgc3RhZ2VzIGFzIHN0cmluZ3MuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFN0YWdlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBpbnN0YW5jZSBvZiBHaXRsYWJDREtQaXBlbGluZSwgaW5pdGlhbGl6aW5nIHRoZSBHaXRMYWIgQ0kvQ0QgY29uZmlndXJhdGlvblxuICAgKiBhbmQgc2V0dGluZyB1cCB0aGUgbmVjZXNzYXJ5IHN0YWdlcyBhbmQgam9icyBmb3IgQVdTIENESyBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge2F3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwfSBhcHAgLSBUaGUgQVdTIENESyBhcHAgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaXBlbGluZS5cbiAgICogQHBhcmFtIHtHaXRsYWJDREtQaXBlbGluZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwcDogYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByaXZhdGUgb3B0aW9uczogR2l0bGFiQ0RLUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwLCBvcHRpb25zKTtcblxuICAgIC8vIFRPRE8gdXNlIGV4aXN0aW5nIGNvbmZpZyBpZiBwb3NzaWJsZVxuICAgIHRoaXMuY29uZmlnID0gbmV3IGdpdGxhYi5HaXRsYWJDb25maWd1cmF0aW9uKGFwcCwge1xuICAgICAgc3RhZ2VzOiBbXSxcbiAgICAgIGpvYnM6IHt9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyA9IGZhbHNlOyAvLyBvcHRpb25zLnB1Ymxpc2hlZENsb3VkQXNzZW1ibGllcyA/PyBmYWxzZTtcbiAgICB0aGlzLmpvYkltYWdlID0gb3B0aW9ucy5pbWFnZSA/PyAnaW1hZ2U6IGpzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltLW5vZGUxOCc7XG5cbiAgICB0aGlzLnNldHVwU25pcHBldHMoKTtcblxuICAgIHRoaXMuY3JlYXRlU3ludGgoKTtcblxuICAgIHRoaXMuY3JlYXRlQXNzZXRVcGxvYWQoKTtcblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygb3B0aW9ucy5zdGFnZXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRGVwbG95bWVudChzdGFnZSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAob3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBiYXNlIGpvYiBzbmlwcGV0cyBmb3IgYXJ0aWZhY3QgaGFuZGxpbmcgYW5kIEFXUyBjb25maWd1cmF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBkZWZpbmVzIHJldXNhYmxlIGpvYiBjb25maWd1cmF0aW9ucyB0byBiZSBleHRlbmRlZCBieSBzcGVjaWZpYyBwaXBlbGluZSBqb2JzLFxuICAgKiBmYWNpbGl0YXRpbmcgYXJ0aWZhY3QgY2FjaGluZyBhbmQgQVdTIGF1dGhlbnRpY2F0aW9uIHNldHVwLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldHVwU25pcHBldHMoKSB7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICAnLmFydGlmYWN0c19jZGsnOiB7XG4gICAgICAgIGFydGlmYWN0czoge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5DYWNoZVdoZW4uT05fU1VDQ0VTUyxcbiAgICAgICAgICBleHBpcmVJbjogJzMwIGRheXMnLFxuICAgICAgICAgIG5hbWU6ICdDREsgQXNzZW1ibHkgLSAkQ0lfSk9CX05BTUUtJENJX0NPTU1JVF9SRUZfU0xVRycsXG4gICAgICAgICAgdW50cmFja2VkOiBmYWxzZSxcbiAgICAgICAgICBwYXRoczogWydjZGsub3V0J10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgJy5hcnRpZmFjdHNfY2RrZGVwbG95Jzoge1xuICAgICAgICBhcnRpZmFjdHM6IHtcbiAgICAgICAgICB3aGVuOiBnaXRsYWIuQ2FjaGVXaGVuLk9OX1NVQ0NFU1MsXG4gICAgICAgICAgZXhwaXJlSW46ICczMCBkYXlzJyxcbiAgICAgICAgICBuYW1lOiAnQ0RLIE91dHB1dHMgLSAkQ0lfSk9CX05BTUUtJENJX0NPTU1JVF9SRUZfU0xVRycsXG4gICAgICAgICAgdW50cmFja2VkOiBmYWxzZSxcbiAgICAgICAgICBwYXRoczogWydjZGstb3V0cHV0cy0qLmpzb24nXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAnLmF3c19iYXNlJzoge1xuICAgICAgICBpbWFnZTogeyBuYW1lOiB0aGlzLmpvYkltYWdlIH0sXG4gICAgICAgIGlkVG9rZW5zOiB7XG4gICAgICAgICAgQVdTX1RPS0VOOiB7XG4gICAgICAgICAgICBhdWQ6ICdodHRwczovL3N0cy5hbWF6b25hd3MuY29tJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAgIC8vIE5QTV9SRUdJU1RSWTogJ3h4eCdcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgJ3N5bnRoJyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUgdG8gc3ludGhlc2l6ZSBBV1MgQ0RLIGFwcGxpY2F0aW9ucy5cbiAgICogVGhpcyBtZXRob2QgY29uZmlndXJlcyB0aGUgam9iIHRvIGV4ZWN1dGUgQ0RLIHN5bnRoZXNpcywgYXBwbHlpbmcgdGhlIGFwcHJvcHJpYXRlIElBTSByb2xlXG4gICAqIGZvciBBV1MgY29tbWFuZHMgYW5kIHNwZWNpZnlpbmcgcnVubmVyIHRhZ3MgZm9yIGpvYiBleGVjdXRpb24uIFRoZSBzeW50aGVzaXplZCBvdXRwdXRzIGFyZVxuICAgKiBjb25maWd1cmVkIHRvIGJlIGNhY2hlZCBhcyBhcnRpZmFjdHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgIF07XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3N5bnRoJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBzeW50aDoge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsICcuYXJ0aWZhY3RzX2NkaycsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgbmVlZHM6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc3RhZ2U6ICdzeW50aCcsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5zeW50aCA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgc2NyaXB0OiBnaXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgIHZhcmlhYmxlczogZ2l0bGFiU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUuXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSBqb2IgdG8gdXBsb2FkIHN5bnRoZXNpemVkIGFzc2V0cyB0byBBV1MsIGhhbmRsaW5nIElBTSByb2xlXG4gICAqIGF1dGhlbnRpY2F0aW9uIGFuZCBzcGVjaWZ5aW5nIHJ1bm5lciB0YWdzLiBJdCBkZXBlbmRzIG9uIHRoZSBzdWNjZXNzZnVsIGNvbXBsZXRpb25cbiAgICogb2YgdGhlICdzeW50aCcgc3RhZ2UsIGVuc3VyaW5nIGFzc2V0cyBhcmUgb25seSBwdWJsaXNoZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzeW50aGVzaXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQXNzZXRVcGxvYWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKCksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzKSB7XG4gICAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3B1Ymxpc2hfYXNzZXRzJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBwdWJsaXNoX2Fzc2V0czoge1xuICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgc3RhZ2U6ICdwdWJsaXNoX2Fzc2V0cycsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5hc3NldFB1Ymxpc2hpbmcgPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgIG5lZWRzOiBbeyBqb2I6ICdzeW50aCcsIGFydGlmYWN0czogdHJ1ZSB9LCAuLi5naXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyldLFxuICAgICAgICBzY3JpcHQ6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBnaXRsYWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBjcmVhdGVzIGRlcGxveW1lbnQgc3RhZ2VzIGJhc2VkIG9uIHRoZSBkZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqIEZvciBlYWNoIHByb3ZpZGVkIGRlcGxveW1lbnQgc3RhZ2UsIHRoaXMgbWV0aG9kIHNldHMgdXAgam9icyBmb3IgJ2RpZmYnIGFuZCAnZGVwbG95JyBhY3Rpb25zLFxuICAgKiBhcHBseWluZyB0aGUgY29ycmVjdCBJQU0gcm9sZXMgYW5kIHJ1bm5lciB0YWdzLiBJdCBzdXBwb3J0cyBjb25kaXRpb25hbCBtYW51YWwgYXBwcm92YWwgZm9yXG4gICAqIGRlcGxveW1lbnQgc3RhZ2VzLCBwcm92aWRpbmcgZmxleGliaWxpdHkgaW4gdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB7RGVwbG95bWVudFN0YWdlfSBzdGFnZSAtIFRoZSBkZXBsb3ltZW50IHN0YWdlIGNvbmZpZ3VyYXRpb24gdG8gc2V0IHVwLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZURlcGxveW1lbnQoc3RhZ2U6IERlcGxveW1lbnRTdGFnZSk6IHZvaWQge1xuICAgIGNvbnN0IGRpZmZTdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEaWZmU3RlcChzdGFnZSwgc3RhZ2UuZGlmZlR5cGUgPT09IENka0RpZmZUeXBlLkZBU1QpLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuXG4gICAgY29uc3QgZGVwbG95U3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG4gICAgdGhpcy5jb25maWcuYWRkU3RhZ2VzKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSAmJiB7XG4gICAgICAgIFtgZGlmZi0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgICBleHRlbmRzOiBbJy5hd3NfYmFzZScsIC4uLmRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgICAgc3RhZ2U6IHN0YWdlLm5hbWUsXG4gICAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRpZmY/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAgIG9ubHk6IHtcbiAgICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICAgIHsgam9iOiAnc3ludGgnLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICAgIHsgam9iOiAncHVibGlzaF9hc3NldHMnIH0sXG4gICAgICAgICAgICAuLi5kaWZmU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2NyaXB0OiBkaWZmU3RlcHMuZmxhdE1hcChzID0+IHMuY29tbWFuZHMpLFxuICAgICAgICAgIHZhcmlhYmxlczogZGlmZlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgW2BkZXBsb3ktJHtzdGFnZS5uYW1lfWBdOiB7XG4gICAgICAgIGV4dGVuZHM6IFsnLmF3c19iYXNlJywgJy5hcnRpZmFjdHNfY2RrZGVwbG95JywgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgLi4uc3RhZ2UubWFudWFsQXBwcm92YWwgJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgb25seToge1xuICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICB9LFxuICAgICAgICBuZWVkczogW1xuICAgICAgICAgIHsgam9iOiAnc3ludGgnLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICB7IGpvYjogJ3B1Ymxpc2hfYXNzZXRzJyB9LFxuICAgICAgICAgIC4uLihzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSkgPyBbeyBqb2I6IGBkaWZmLSR7c3RhZ2UubmFtZX1gIH1dIDogW10sXG4gICAgICAgICAgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBdLFxuICAgICAgICBzY3JpcHQ6IGRlcGxveVN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSxcbiAgICAgICAgdmFyaWFibGVzOiBkZXBsb3lTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlcGxveW1lbnRTdGFnZXMucHVzaChzdGFnZS5uYW1lKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gZGVwbG95IHRoZSBDREsgYXBwbGljYXRpb24gdG8gQVdTLlxuICAgKiBAcGFyYW0gc3RhZ2UgLSBUaGUgaW5kZXBlbmRlbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZTogSW5kZXBlbmRlbnRTdGFnZSk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FID8gW3RoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PSBDZGtEaWZmVHlwZS5GQVNUKV0gOiBbXSksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoc3RhZ2UubmFtZSk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBbYGRlcGxveS0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgZXh0ZW5kczogWycuYXdzX2Jhc2UnLCAnLmFydGlmYWN0c19jZGtkZXBsb3knLCAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIHN0YWdlOiBzdGFnZS5uYW1lLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAuLi5zdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIG9ubHk6IHtcbiAgICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLiFzdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc2NyaXB0OiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcyksXG4gICAgICAgIHZhcmlhYmxlczogc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUTEFCO1xuICB9XG5cbn1cblxuIl19
@@ -45,7 +45,7 @@ class DownloadArtifactStep extends step_1.PipelineStep {
45
45
  }
46
46
  exports.DownloadArtifactStep = DownloadArtifactStep;
47
47
  _a = JSII_RTTI_SYMBOL_1;
48
- DownloadArtifactStep[_a] = { fqn: "projen-pipelines.DownloadArtifactStep", version: "0.2.4" };
48
+ DownloadArtifactStep[_a] = { fqn: "projen-pipelines.DownloadArtifactStep", version: "0.2.6" };
49
49
  class UploadArtifactStep extends step_1.PipelineStep {
50
50
  constructor(project, config) {
51
51
  super(project);
@@ -78,5 +78,5 @@ class UploadArtifactStep extends step_1.PipelineStep {
78
78
  }
79
79
  exports.UploadArtifactStep = UploadArtifactStep;
80
80
  _b = JSII_RTTI_SYMBOL_1;
81
- UploadArtifactStep[_b] = { fqn: "projen-pipelines.UploadArtifactStep", version: "0.2.4" };
81
+ UploadArtifactStep[_b] = { fqn: "projen-pipelines.UploadArtifactStep", version: "0.2.6" };
82
82
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc3RlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvYXJ0aWZhY3Qtc3RlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxpQ0FBa0c7QUFPbEcsTUFBYSxvQkFBcUIsU0FBUSxtQkFBWTtJQUVwRCxZQUFZLE9BQWdCLEVBQW1CLE1BQWtDO1FBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUQ4QixXQUFNLEdBQU4sTUFBTSxDQUE0QjtJQUVqRixDQUFDO0lBRU0sUUFBUTtRQUNiLHdEQUF3RDtRQUN4RCxPQUFPO1lBQ0wsR0FBRyxFQUFFLEVBQUU7WUFDUCxVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUNNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsSUFBSSxFQUFFLDhCQUE4QjtvQkFDcEMsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7d0JBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7cUJBQ3ZCO2lCQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsRUFBRTtZQUNULEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFLEVBQUUsbUJBQW1CO1lBQzlCLFFBQVEsRUFBRSxFQUFFLEVBQUUseURBQXlEO1lBQ3ZFLEdBQUcsRUFBRSxFQUFFLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUM7SUFDSixDQUFDOztBQXZDSCxvREF3Q0M7OztBQVFELE1BQWEsa0JBQW1CLFNBQVEsbUJBQVk7SUFFbEQsWUFBWSxPQUFnQixFQUFtQixNQUFnQztRQUM3RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEOEIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7SUFFL0UsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLGdDQUFnQztvQkFDdEMsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7d0JBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7cUJBQ3ZCO2lCQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsRUFBRTtZQUNULEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFLEVBQUUsbUJBQW1CO1lBQzlCLFFBQVEsRUFBRSxFQUFFLEVBQUUseURBQXlEO1lBQ3ZFLEdBQUcsRUFBRSxFQUFFLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUM7SUFDSixDQUFDOztBQTlCSCxnREFnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENvZGVDYXRhbHlzdFN0ZXBDb25maWcsIEdpdGh1YlN0ZXBDb25maWcsIEdpdGxhYlN0ZXBDb25maWcsIFBpcGVsaW5lU3RlcCB9IGZyb20gJy4vc3RlcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRBcnRpZmFjdFN0ZXBDb25maWcge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERvd25sb2FkQXJ0aWZhY3RTdGVwIGV4dGVuZHMgUGlwZWxpbmVTdGVwIHtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogRG93bmxvYWRBcnRpZmFjdFN0ZXBDb25maWcpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0dpdGxhYigpOiBHaXRsYWJTdGVwQ29uZmlnIHtcbiAgICAvLyBOb3RoaW5nIHRvIGRvOyBhcnRpZmFjdCBpcyBhbHJlYWR5IGRvd25sb2FkZWQgZm9yIHlvdVxuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHt9LFxuICAgICAgZXh0ZW5zaW9uczogW10sXG4gICAgICBuZWVkczogW10sXG4gICAgICBjb21tYW5kczogW10sXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0ZXBzOiBbe1xuICAgICAgICBuYW1lOiAnRG93bmxvYWQgQXJ0aWZhY3QnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2NCcsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmNvbmZpZy5uYW1lLFxuICAgICAgICAgIHBhdGg6IHRoaXMuY29uZmlnLnBhdGgsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICAgIGVudjoge30sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgc3RlcCBpbnRvIGEgQ29kZUNhdGFseXN0IEFjdGlvbnMgc3RlcCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHRvQ29kZUNhdGFseXN0KCk6IENvZGVDYXRhbHlzdFN0ZXBDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBuZWVkczogW10sIC8vIE5vIGRlcGVuZGVuY2llcy5cbiAgICAgIGNvbW1hbmRzOiBbXSwgLy8gTWFwcyBlYWNoIGNvbW1hbmQgaW50byBhIENvZGVDYXRhbHlzdCBBY3Rpb24gam9iIHN0ZXAuXG4gICAgICBlbnY6IHt9LCAvLyBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgfTtcbiAgfVxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkQXJ0aWZhY3RTdGVwQ29uZmlnIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWRBcnRpZmFjdFN0ZXAgZXh0ZW5kcyBQaXBlbGluZVN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBVcGxvYWRBcnRpZmFjdFN0ZXBDb25maWcpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0dpdGh1YigpOiBHaXRodWJTdGVwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RlcHM6IFt7XG4gICAgICAgIG5hbWU6ICdVcGxvYWQgQXJ0aWZhY3QnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjQuMy42JyxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnLm5hbWUsXG4gICAgICAgICAgcGF0aDogdGhpcy5jb25maWcucGF0aCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgZW52OiB7fSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBzdGVwIGludG8gYSBDb2RlQ2F0YWx5c3QgQWN0aW9ucyBzdGVwIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgdG9Db2RlQ2F0YWx5c3QoKTogQ29kZUNhdGFseXN0U3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5lZWRzOiBbXSwgLy8gTm8gZGVwZW5kZW5jaWVzLlxuICAgICAgY29tbWFuZHM6IFtdLCAvLyBNYXBzIGVhY2ggY29tbWFuZCBpbnRvIGEgQ29kZUNhdGFseXN0IEFjdGlvbiBqb2Igc3RlcC5cbiAgICAgIGVudjoge30sIC8vIE5vIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICB9O1xuICB9XG5cbn0iXX0=
@@ -14,12 +14,13 @@ class AwsAssumeRoleStep extends step_1.PipelineStep {
14
14
  this.config = config;
15
15
  }
16
16
  toGitlab() {
17
+ const sessionName = this.config.sessionName ?? 'GitLabRunner-\${CI_PROJECT_ID}-\${CI_PIPELINE_ID}}';
17
18
  return {
18
19
  env: {
19
20
  ...this.config.region ? { AWS_REGION: this.config.region } : {},
20
21
  },
21
22
  commands: [
22
- `awslogin ${this.config.roleArn} ${this.config.sessionName ?? ''}`,
23
+ `export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" $(aws sts assume-role-with-web-identity --role-arn "${this.config.roleArn}" --role-session-name "${sessionName}" --web-identity-token \${AWS_TOKEN} --duration-seconds 3600 --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text))`,
23
24
  ],
24
25
  extensions: [],
25
26
  needs: [],
@@ -61,5 +62,5 @@ class AwsAssumeRoleStep extends step_1.PipelineStep {
61
62
  }
62
63
  exports.AwsAssumeRoleStep = AwsAssumeRoleStep;
63
64
  _a = JSII_RTTI_SYMBOL_1;
64
- AwsAssumeRoleStep[_a] = { fqn: "projen-pipelines.AwsAssumeRoleStep", version: "0.2.4" };
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFzc3VtZS1yb2xlLnN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvYXdzLWFzc3VtZS1yb2xlLnN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx1RUFBa0U7QUFDbEUsaUNBQWtIO0FBZWxIOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxtQkFBWTtJQUVqRCxZQUFZLE9BQWdCLEVBQW1CLE1BQStCO1FBQzVFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUQ4QixXQUFNLEdBQU4sTUFBTSxDQUF5QjtJQUU5RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU87WUFDTCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUNoRTtZQUNELFFBQVEsRUFBRTtnQkFDUixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRTthQUNuRTtZQUNELFVBQVUsRUFBRSxFQUFFO1lBQ2QsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLDBDQUEwQztvQkFDaEQsSUFBSSxFQUFFO3dCQUNKLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzt3QkFDckMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksY0FBYzt3QkFDOUQsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFO3FCQUM3RjtpQkFDRixDQUFDO1lBQ0YsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLEVBQUUsRUFBRTtZQUNQLFdBQVcsRUFBRTtnQkFDWCxPQUFPLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO2FBQzdCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixpQ0FBaUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGVBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksV0FBVyxHQUFHO2FBQ3hHO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLGdDQUFnQztRQUNoQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLEVBQUU7WUFDWixHQUFHLEVBQUUsRUFBRTtZQUNQLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7O0FBckRILDhDQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBCYXNoU3RlcENvbmZpZywgQ29kZUNhdGFseXN0U3RlcENvbmZpZywgR2l0aHViU3RlcENvbmZpZywgR2l0bGFiU3RlcENvbmZpZywgUGlwZWxpbmVTdGVwIH0gZnJvbSAnLi9zdGVwJztcblxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIEFXUyBBc3N1bWVSb2xlU3RlcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Fzc3VtZVJvbGVTdGVwQ29uZmlnIHtcbiAgLyoqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdG8gYXNzdW1lICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgLyoqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbiAqL1xuICByZWFkb25seSBzZXNzaW9uTmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBBV1MgcmVnaW9uIHRoYXQgc2hvdWxkIGJlIHNldCAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzdGVwIHRoYXQgYXNzdW1lcyBhIHJvbGUgaW4gQVdTXG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NBc3N1bWVSb2xlU3RlcCBleHRlbmRzIFBpcGVsaW5lU3RlcCB7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEF3c0Fzc3VtZVJvbGVTdGVwQ29uZmlnKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgdG9HaXRsYWIoKTogR2l0bGFiU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5yZWdpb24gPyB7IEFXU19SRUdJT046IHRoaXMuY29uZmlnLnJlZ2lvbiB9IDoge30sXG4gICAgICB9LFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgYGF3c2xvZ2luICR7dGhpcy5jb25maWcucm9sZUFybn0gJHt0aGlzLmNvbmZpZy5zZXNzaW9uTmFtZSA/PyAnJ31gLFxuICAgICAgXSxcbiAgICAgIGV4dGVuc2lvbnM6IFtdLFxuICAgICAgbmVlZHM6IFtdLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0ZXBzOiBbe1xuICAgICAgICBuYW1lOiAnQVdTIENyZWRlbnRpYWxzJyxcbiAgICAgICAgdXNlczogJ2F3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjQnLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogdGhpcy5jb25maWcucm9sZUFybixcbiAgICAgICAgICAncm9sZS1zZXNzaW9uLW5hbWUnOiB0aGlzLmNvbmZpZy5zZXNzaW9uTmFtZSA/PyAnR2l0SHViQWN0aW9uJyxcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZy5yZWdpb24gPyB7ICdhd3MtcmVnaW9uJzogdGhpcy5jb25maWcucmVnaW9uIH0gOiB7ICdhd3MtcmVnaW9uJzogJ3VzLWVhc3QtMScgfSxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgZW52OiB7fSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9CYXNoKCk6IEJhc2hTdGVwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgYGVjaG8gXCJMb2dpbiB0byBBV1MgdXNpbmcgcm9sZSAke3RoaXMuY29uZmlnLnJvbGVBcm59IGZvciByZWdpb24gJHt0aGlzLmNvbmZpZy5yZWdpb24gPz8gJ3VuZGVmaW5lZCd9XCJgLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvQ29kZUNhdGFseXN0KCk6IENvZGVDYXRhbHlzdFN0ZXBDb25maWcge1xuICAgIC8vRklYTUUgdXNlIENDIGVudmlyb25tZW50cyBoZXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmRzOiBbXSxcbiAgICAgIGVudjoge30sXG4gICAgICBuZWVkczogW10sXG4gICAgfTtcbiAgfVxuXG59Il19
65
+ AwsAssumeRoleStep[_a] = { fqn: "projen-pipelines.AwsAssumeRoleStep", version: "0.2.6" };
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFzc3VtZS1yb2xlLnN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvYXdzLWFzc3VtZS1yb2xlLnN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx1RUFBa0U7QUFDbEUsaUNBQWtIO0FBZWxIOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxtQkFBWTtJQUVqRCxZQUFZLE9BQWdCLEVBQW1CLE1BQStCO1FBQzVFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUQ4QixXQUFNLEdBQU4sTUFBTSxDQUF5QjtJQUU5RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLG9EQUFvRCxDQUFDO1FBQ3BHLE9BQU87WUFDTCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUNoRTtZQUNELFFBQVEsRUFBRTtnQkFDUiw0SUFBNEksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLDBCQUEwQixXQUFXLCtJQUErSTthQUNwVjtZQUNELFVBQVUsRUFBRSxFQUFFO1lBQ2QsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLDBDQUEwQztvQkFDaEQsSUFBSSxFQUFFO3dCQUNKLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzt3QkFDckMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksY0FBYzt3QkFDOUQsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFO3FCQUM3RjtpQkFDRixDQUFDO1lBQ0YsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLEVBQUUsRUFBRTtZQUNQLFdBQVcsRUFBRTtnQkFDWCxPQUFPLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO2FBQzdCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixpQ0FBaUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGVBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksV0FBVyxHQUFHO2FBQ3hHO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLGdDQUFnQztRQUNoQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLEVBQUU7WUFDWixHQUFHLEVBQUUsRUFBRTtZQUNQLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7O0FBdERILDhDQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBCYXNoU3RlcENvbmZpZywgQ29kZUNhdGFseXN0U3RlcENvbmZpZywgR2l0aHViU3RlcENvbmZpZywgR2l0bGFiU3RlcENvbmZpZywgUGlwZWxpbmVTdGVwIH0gZnJvbSAnLi9zdGVwJztcblxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIEFXUyBBc3N1bWVSb2xlU3RlcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Fzc3VtZVJvbGVTdGVwQ29uZmlnIHtcbiAgLyoqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdG8gYXNzdW1lICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgLyoqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbiAqL1xuICByZWFkb25seSBzZXNzaW9uTmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBBV1MgcmVnaW9uIHRoYXQgc2hvdWxkIGJlIHNldCAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzdGVwIHRoYXQgYXNzdW1lcyBhIHJvbGUgaW4gQVdTXG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NBc3N1bWVSb2xlU3RlcCBleHRlbmRzIFBpcGVsaW5lU3RlcCB7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEF3c0Fzc3VtZVJvbGVTdGVwQ29uZmlnKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgdG9HaXRsYWIoKTogR2l0bGFiU3RlcENvbmZpZyB7XG4gICAgY29uc3Qgc2Vzc2lvbk5hbWUgPSB0aGlzLmNvbmZpZy5zZXNzaW9uTmFtZSA/PyAnR2l0TGFiUnVubmVyLVxcJHtDSV9QUk9KRUNUX0lEfS1cXCR7Q0lfUElQRUxJTkVfSUR9fSc7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5yZWdpb24gPyB7IEFXU19SRUdJT046IHRoaXMuY29uZmlnLnJlZ2lvbiB9IDoge30sXG4gICAgICB9LFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgYGV4cG9ydCAkKHByaW50ZiBcIkFXU19BQ0NFU1NfS0VZX0lEPSVzIEFXU19TRUNSRVRfQUNDRVNTX0tFWT0lcyBBV1NfU0VTU0lPTl9UT0tFTj0lc1wiICQoYXdzIHN0cyBhc3N1bWUtcm9sZS13aXRoLXdlYi1pZGVudGl0eSAtLXJvbGUtYXJuIFwiJHt0aGlzLmNvbmZpZy5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke3Nlc3Npb25OYW1lfVwiIC0td2ViLWlkZW50aXR5LXRva2VuIFxcJHtBV1NfVE9LRU59IC0tZHVyYXRpb24tc2Vjb25kcyAzNjAwIC0tcXVlcnkgJ0NyZWRlbnRpYWxzLltBY2Nlc3NLZXlJZCxTZWNyZXRBY2Nlc3NLZXksU2Vzc2lvblRva2VuXScgLS1vdXRwdXQgdGV4dCkpYCxcbiAgICAgIF0sXG4gICAgICBleHRlbnNpb25zOiBbXSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvR2l0aHViKCk6IEdpdGh1YlN0ZXBDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBzdGVwczogW3tcbiAgICAgICAgbmFtZTogJ0FXUyBDcmVkZW50aWFscycsXG4gICAgICAgIHVzZXM6ICdhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQHY0JyxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHRoaXMuY29uZmlnLnJvbGVBcm4sXG4gICAgICAgICAgJ3JvbGUtc2Vzc2lvbi1uYW1lJzogdGhpcy5jb25maWcuc2Vzc2lvbk5hbWUgPz8gJ0dpdEh1YkFjdGlvbicsXG4gICAgICAgICAgLi4udGhpcy5jb25maWcucmVnaW9uID8geyAnYXdzLXJlZ2lvbic6IHRoaXMuY29uZmlnLnJlZ2lvbiB9IDogeyAnYXdzLXJlZ2lvbic6ICd1cy1lYXN0LTEnIH0sXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICAgIGVudjoge30sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvQmFzaCgpOiBCYXNoU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgIGBlY2hvIFwiTG9naW4gdG8gQVdTIHVzaW5nIHJvbGUgJHt0aGlzLmNvbmZpZy5yb2xlQXJufSBmb3IgcmVnaW9uICR7dGhpcy5jb25maWcucmVnaW9uID8/ICd1bmRlZmluZWQnfVwiYCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b0NvZGVDYXRhbHlzdCgpOiBDb2RlQ2F0YWx5c3RTdGVwQ29uZmlnIHtcbiAgICAvL0ZJWE1FIHVzZSBDQyBlbnZpcm9ubWVudHMgaGVyZVxuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kczogW10sXG4gICAgICBlbnY6IHt9LFxuICAgICAgbmVlZHM6IFtdLFxuICAgIH07XG4gIH1cblxufSJdfQ==
@@ -25,7 +25,7 @@ class GithubPackagesLoginStep extends step_1.PipelineStep {
25
25
  }
26
26
  exports.GithubPackagesLoginStep = GithubPackagesLoginStep;
27
27
  _a = JSII_RTTI_SYMBOL_1;
28
- GithubPackagesLoginStep[_a] = { fqn: "projen-pipelines.GithubPackagesLoginStep", version: "0.2.4" };
28
+ GithubPackagesLoginStep[_a] = { fqn: "projen-pipelines.GithubPackagesLoginStep", version: "0.2.6" };
29
29
  class CodeArtifactLoginStep extends step_1.StepSequence {
30
30
  constructor(project, options) {
31
31
  super(project, [
@@ -40,5 +40,5 @@ class CodeArtifactLoginStep extends step_1.StepSequence {
40
40
  }
41
41
  exports.CodeArtifactLoginStep = CodeArtifactLoginStep;
42
42
  _b = JSII_RTTI_SYMBOL_1;
43
- CodeArtifactLoginStep[_b] = { fqn: "projen-pipelines.CodeArtifactLoginStep", version: "0.2.4" };
43
+ CodeArtifactLoginStep[_b] = { fqn: "projen-pipelines.CodeArtifactLoginStep", version: "0.2.6" };
44
44
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9yZWdpc3RyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsdUVBQWtFO0FBQ2xFLGlFQUEyRDtBQUMzRCxpREFBNEM7QUFDNUMsaUNBQXNFO0FBV3RFLE1BQWEsdUJBQXdCLFNBQVEsbUJBQVk7SUFFdkQsWUFBWSxPQUFnQixFQUFVLE9BQXVDO1FBQzNFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURxQixZQUFPLEdBQVAsT0FBTyxDQUFnQztJQUU3RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU87WUFDTCxHQUFHLEVBQUUsRUFBRTtZQUNQLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLENBQUM7b0JBQ04sR0FBRyxFQUFFLGdFQUFnRTtpQkFDdEUsQ0FBQztZQUNGLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsK0JBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLCtCQUFhLENBQUMsSUFBSSxFQUFFO1NBQ3pGLENBQUM7SUFDSixDQUFDOztBQWZILDBEQWdCQzs7O0FBU0QsTUFBYSxxQkFBc0IsU0FBUSxtQkFBWTtJQUNyRCxZQUFZLE9BQWdCLEVBQVksT0FBcUM7UUFDM0UsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNiLElBQUksd0NBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ3RGLElBQUkseUJBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSx5QkFBeUI7Z0JBQy9CLE9BQU8sRUFBRSxxREFBcUQsT0FBTyxDQUFDLFVBQVUsYUFBYSxPQUFPLENBQUMsTUFBTSxtQkFBbUIsT0FBTyxDQUFDLFlBQVksMkNBQTJDO2FBQzlMLENBQUM7U0FDSCxDQUFDLENBQUM7UUFQbUMsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7SUFRN0UsQ0FBQzs7QUFUSCxzREFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBBd3NBc3N1bWVSb2xlU3RlcCB9IGZyb20gJy4vYXdzLWFzc3VtZS1yb2xlLnN0ZXAnO1xuaW1wb3J0IHsgU2V0RW52U3RlcCB9IGZyb20gJy4vc2V0LWVudi5zdGVwJztcbmltcG9ydCB7IEdpdGh1YlN0ZXBDb25maWcsIFBpcGVsaW5lU3RlcCwgU3RlcFNlcXVlbmNlIH0gZnJvbSAnLi9zdGVwJztcblxuZXhwb3J0IGludGVyZmFjZSBHaXRodWJQYWNrYWdlc0xvZ2luU3RlcE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZ3JhbnQgdGhlIHN0ZXAgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAgZXh0ZW5kcyBQaXBlbGluZVN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByaXZhdGUgb3B0aW9uczogR2l0aHViUGFja2FnZXNMb2dpblN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjoge30sXG4gICAgICBuZWVkczogW10sXG4gICAgICBzdGVwczogW3tcbiAgICAgICAgcnVuOiAnZWNobyBcIkdJVEhVQl9UT0tFTj0ke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIiA+PiAkR0lUSFVCX0VOVicsXG4gICAgICB9XSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IHBhY2thZ2VzOiB0aGlzLm9wdGlvbnMud3JpdGUgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdExvZ2luU3RlcE9wdGlvbnMge1xuICByZWFkb25seSBvd25lckFjY291bnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcm9sZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0TG9naW5TdGVwIGV4dGVuZHMgU3RlcFNlcXVlbmNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJvdGVjdGVkIG9wdGlvbnM6IENvZGVBcnRpZmFjdExvZ2luU3RlcE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBbXG4gICAgICBuZXcgQXdzQXNzdW1lUm9sZVN0ZXAocHJvamVjdCwgeyByb2xlQXJuOiBvcHRpb25zLnJvbGUsIHNlc3Npb25OYW1lOiAnQ29kZUFydGlmYWN0JyB9KSxcbiAgICAgIG5ldyBTZXRFbnZTdGVwKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogJ0NPREVBUlRJRkFDVF9BVVRIX1RPS0VOJyxcbiAgICAgICAgY29tbWFuZDogYGF3cyBjb2RlYXJ0aWZhY3QgZ2V0LWF1dGhvcml6YXRpb24tdG9rZW4gLS1kb21haW4gJHtvcHRpb25zLmRvbWFpbk5hbWV9IC0tcmVnaW9uICR7b3B0aW9ucy5yZWdpb259IC0tZG9tYWluLW93bmVyICR7b3B0aW9ucy5vd25lckFjY291bnR9IC0tcXVlcnkgYXV0aG9yaXphdGlvblRva2VuIC0tb3V0cHV0IHRleHRgLFxuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxufSJdfQ==
package/lib/steps/step.js CHANGED
@@ -43,7 +43,7 @@ class PipelineStep {
43
43
  }
44
44
  exports.PipelineStep = PipelineStep;
45
45
  _a = JSII_RTTI_SYMBOL_1;
46
- PipelineStep[_a] = { fqn: "projen-pipelines.PipelineStep", version: "0.2.4" };
46
+ PipelineStep[_a] = { fqn: "projen-pipelines.PipelineStep", version: "0.2.6" };
47
47
  /**
48
48
  * Concrete implementation of PipelineStep that executes simple commands.
49
49
  */
@@ -99,7 +99,7 @@ class SimpleCommandStep extends PipelineStep {
99
99
  }
100
100
  exports.SimpleCommandStep = SimpleCommandStep;
101
101
  _b = JSII_RTTI_SYMBOL_1;
102
- SimpleCommandStep[_b] = { fqn: "projen-pipelines.SimpleCommandStep", version: "0.2.4" };
102
+ SimpleCommandStep[_b] = { fqn: "projen-pipelines.SimpleCommandStep", version: "0.2.6" };
103
103
  class ProjenScriptStep extends SimpleCommandStep {
104
104
  constructor(project, scriptName, args) {
105
105
  super(project, [`npx projen ${scriptName}${args ? ` ${args}` : ''}`]);
@@ -107,7 +107,7 @@ class ProjenScriptStep extends SimpleCommandStep {
107
107
  }
108
108
  exports.ProjenScriptStep = ProjenScriptStep;
109
109
  _c = JSII_RTTI_SYMBOL_1;
110
- ProjenScriptStep[_c] = { fqn: "projen-pipelines.ProjenScriptStep", version: "0.2.4" };
110
+ ProjenScriptStep[_c] = { fqn: "projen-pipelines.ProjenScriptStep", version: "0.2.6" };
111
111
  // Add class that is a sequence of pipleine steps but is a pipeline step in itself
112
112
  class StepSequence extends PipelineStep {
113
113
  /**
@@ -204,5 +204,5 @@ class StepSequence extends PipelineStep {
204
204
  }
205
205
  exports.StepSequence = StepSequence;
206
206
  _d = JSII_RTTI_SYMBOL_1;
207
- StepSequence[_d] = { fqn: "projen-pipelines.StepSequence", version: "0.2.4" };
207
+ StepSequence[_d] = { fqn: "projen-pipelines.StepSequence", version: "0.2.6" };
208
208
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esd0NBQWlEO0FBK0RqRDs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFFaEM7OztPQUdHO0lBQ0gsWUFBc0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNwQywyREFBMkQ7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQzs7QUFwQ0gsb0NBcUNDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsWUFBWTtJQUlqRDs7OztPQUlHO0lBQ0gsWUFBWSxPQUFnQixFQUFFLFFBQWtCO1FBQzlDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPO1lBQ0wsVUFBVSxFQUFFLEVBQUUsRUFBRSw2Q0FBNkM7WUFDN0QsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsc0JBQXNCO1lBQy9DLEtBQUssRUFBRSxFQUFFLEVBQUUsbUJBQW1CO1lBQzlCLEdBQUcsRUFBRSxFQUFFLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUM7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Q0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsUUFBUTtZQUNSLEdBQUc7U0FDSixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFHLEtBQXFCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFlBQVksQ0FBQyxHQUFHLEtBQXFCO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7QUFwR0gsb0NBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9ucywgSm9iU3RlcCB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBOZWVkIH0gZnJvbSAncHJvamVuL2xpYi9naXRsYWInO1xuaW1wb3J0IHsgbWVyZ2VKb2JQZXJtaXNzaW9ucyB9IGZyb20gJy4uL2VuZ2luZXMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBhIEdpdExhYiBDSSBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGxhYlN0ZXBDb25maWcge1xuXG4gIC8qKiBMaXN0IG9mIGpvYiBleHRlbnNpb25zIHJlbGF0ZWQgdG8gdGhlIHN0ZXAuICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbnM6IHN0cmluZ1tdO1xuXG4gIC8qKiBEZXBlbmRlbmNpZXMgd2hpY2ggbmVlZCB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoaXMgc3RlcC4gKi9cbiAgcmVhZG9ubHkgbmVlZHM6IE5lZWRbXTtcblxuICAvKiogU2hlbGwgY29tbWFuZHMgdG8gZXhlY3V0ZSBpbiB0aGlzIHN0ZXAuICovXG4gIHJlYWRvbmx5IGNvbW1hbmRzOiBzdHJpbmdbXTtcblxuICAvKiogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGZvciB0aGlzIHN0ZXAuICovXG4gIHJlYWRvbmx5IGVudjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgYSBHaXRIdWIgQWN0aW9ucyBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGh1YlN0ZXBDb25maWcge1xuXG4gIC8qKiBEZXBlbmRlbmNpZXMgd2hpY2ggbmVlZCB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoaXMgc3RlcC4gKi9cbiAgcmVhZG9ubHkgbmVlZHM6IHN0cmluZ1tdO1xuXG4gIC8qKiBDb21tYW5kcyB3cmFwcGVkIGFzIEdpdEh1YiBBY3Rpb24gam9iIHN0ZXBzLiAqL1xuICByZWFkb25seSBzdGVwczogSm9iU3RlcFtdO1xuXG4gIC8qKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgZm9yIHRoaXMgc3RlcC4gKi9cbiAgcmVhZG9ubHkgZW52OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKiBBZGRpdGlvbmFsIGpvYiBwZXJtaXNzaW9ucyBuZWVkZWQgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnM/OiBKb2JQZXJtaXNzaW9ucztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgYSBDb2RlQ2F0YWx5c3QgQWN0aW9ucyBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVDYXRhbHlzdFN0ZXBDb25maWcge1xuXG4gIC8qKiBEZXBlbmRlbmNpZXMgd2hpY2ggbmVlZCB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoaXMgc3RlcC4gKi9cbiAgcmVhZG9ubHkgbmVlZHM6IHN0cmluZ1tdO1xuXG4gIC8qKiBDb21tYW5kcyB3cmFwcGVkIGFzIEdpdEh1YiBBY3Rpb24gam9iIHN0ZXBzLiAqL1xuICByZWFkb25seSBjb21tYW5kczogc3RyaW5nW107XG5cbiAgLyoqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBmb3IgdGhpcyBzdGVwLiAqL1xuICByZWFkb25seSBlbnY6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgYSBiYXNoIHNjcmlwdCBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2hTdGVwQ29uZmlnIHtcblxuICAvKiogU2hlbGwgY29tbWFuZHMgdG8gZXhlY3V0ZS4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGRlZmluaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgYSBwaXBlbGluZSBzdGVwLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGlwZWxpbmVTdGVwIHtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYSBQaXBlbGluZVN0ZXAgd2l0aCBhIHJlZmVyZW5jZSB0byBhIHByb2plbiBwcm9qZWN0LlxuICAgKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBwcm9qZW4gcHJvamVjdCByZWZlcmVuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcHJvamVjdDogUHJvamVjdCkge1xuICAgIC8vIENvbnN0cnVjdG9yIGNhbiBiZSBleHRlbmRlZCB0byBpbmNsdWRlIG1vcmUgc2V0dXAgbG9naWMuXG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgY29uZmlndXJhdGlvbiBmb3IgYSBHaXRMYWIgQ0kgc3RlcC4gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqL1xuICBwdWJsaWMgdG9HaXRsYWIoKTogR2l0bGFiU3RlcENvbmZpZyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGNvbmZpZ3VyYXRpb24gZm9yIGEgR2l0SHViIEFjdGlvbnMgc3RlcC4gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqL1xuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGNvbmZpZ3VyYXRpb24gZm9yIGEgQ29kZUNhdGFseXN0IEFjdGlvbnMgc3RlcC4gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqL1xuICBwdWJsaWMgdG9Db2RlQ2F0YWx5c3QoKTogQ29kZUNhdGFseXN0U3RlcENvbmZpZyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGNvbmZpZ3VyYXRpb24gZm9yIGEgYmFzaCBzY3JpcHQgc3RlcC4gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqL1xuICBwdWJsaWMgdG9CYXNoKCk6IEJhc2hTdGVwQ29uZmlnIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBQaXBlbGluZVN0ZXAgdGhhdCBleGVjdXRlcyBzaW1wbGUgY29tbWFuZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVDb21tYW5kU3RlcCBleHRlbmRzIFBpcGVsaW5lU3RlcCB7XG5cbiAgcHJvdGVjdGVkIGNvbW1hbmRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHNpbXBsZSBjb21tYW5kIHN0ZXAgd2l0aCBhIHNwZWNpZmllZCBzZXQgb2YgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIHByb2plbiBwcm9qZWN0IHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gU2hlbGwgY29tbWFuZHMgdG8gZXhlY3V0ZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIGNvbW1hbmRzOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMuY29tbWFuZHMgPSBbLi4uY29tbWFuZHNdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBzdGVwIGludG8gYSBHaXRMYWIgQ0kgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyB0b0dpdGxhYigpOiBHaXRsYWJTdGVwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXh0ZW5zaW9uczogW10sIC8vIE5vIGpvYiBleHRlbnNpb25zIHNwZWNpZmllZCBmb3IgdGhpcyBzdGVwLlxuICAgICAgY29tbWFuZHM6IHRoaXMuY29tbWFuZHMsIC8vIENvbW1hbmRzIHRvIGJlIHJ1bi5cbiAgICAgIG5lZWRzOiBbXSwgLy8gTm8gZGVwZW5kZW5jaWVzLlxuICAgICAgZW52OiB7fSwgLy8gTm8gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHN0ZXAgaW50byBhIEJhc2ggc2NyaXB0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgdG9CYXNoKCk6IEJhc2hTdGVwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tbWFuZHM6IHRoaXMuY29tbWFuZHMsIC8vIENvbW1hbmRzIHRvIGJlIHJ1bi5cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBzdGVwIGludG8gYSBHaXRIdWIgQWN0aW9ucyBzdGVwIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5lZWRzOiBbXSwgLy8gTm8gZGVwZW5kZW5jaWVzLlxuICAgICAgc3RlcHM6IHRoaXMuY29tbWFuZHMubWFwKGMgPT4gKHsgcnVuOiBjIH0pKSwgLy8gTWFwcyBlYWNoIGNvbW1hbmQgaW50byBhIEdpdEh1YiBBY3Rpb24gam9iIHN0ZXAuXG4gICAgICBlbnY6IHt9LCAvLyBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgc3RlcCBpbnRvIGEgQ29kZUNhdGFseXN0IEFjdGlvbnMgc3RlcCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHRvQ29kZUNhdGFseXN0KCk6IENvZGVDYXRhbHlzdFN0ZXBDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBuZWVkczogW10sIC8vIE5vIGRlcGVuZGVuY2llcy5cbiAgICAgIGNvbW1hbmRzOiB0aGlzLmNvbW1hbmRzLm1hcChjID0+IChjKSksIC8vIE1hcHMgZWFjaCBjb21tYW5kIGludG8gYSBDb2RlQ2F0YWx5c3QgQWN0aW9uIGpvYiBzdGVwLlxuICAgICAgZW52OiB7fSwgLy8gTm8gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2plblNjcmlwdFN0ZXAgZXh0ZW5kcyBTaW1wbGVDb21tYW5kU3RlcCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHNjcmlwdE5hbWU6IHN0cmluZywgYXJncz86IHN0cmluZykge1xuICAgIHN1cGVyKHByb2plY3QsIFtgbnB4IHByb2plbiAke3NjcmlwdE5hbWV9JHthcmdzID8gYCAke2FyZ3N9YCA6ICcnfWBdKTtcbiAgfVxufVxuXG4vLyBBZGQgY2xhc3MgdGhhdCBpcyBhIHNlcXVlbmNlIG9mIHBpcGxlaW5lIHN0ZXBzIGJ1dCBpcyBhIHBpcGVsaW5lIHN0ZXAgaW4gaXRzZWxmXG5leHBvcnQgY2xhc3MgU3RlcFNlcXVlbmNlIGV4dGVuZHMgUGlwZWxpbmVTdGVwIHtcblxuICBwcm90ZWN0ZWQgc3RlcHM6IFBpcGVsaW5lU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgc2VxdWVuY2Ugb2YgcGlwZWxpbmUgc3RlcHMuXG4gICAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIHByb2plbiBwcm9qZWN0IHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHN0ZXBzIC0gVGhlIHNlcXVlbmNlIG9mIHBpcGVsaW5lIHN0ZXBzLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgc3RlcHM6IFBpcGVsaW5lU3RlcFtdKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5zdGVwcyA9IFsuLi5zdGVwc107XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHNlcXVlbmNlIG9mIHN0ZXBzIGludG8gYSBHaXRMYWIgQ0kgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyB0b0dpdGxhYigpOiBHaXRsYWJTdGVwQ29uZmlnIHtcbiAgICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG5lZWRzOiBOZWVkW10gPSBbXTtcbiAgICBjb25zdCBlbnY6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgdGhpcy5zdGVwcykge1xuICAgICAgY29uc3Qgc3RlcENvbmZpZyA9IHN0ZXAudG9HaXRsYWIoKTtcbiAgICAgIGV4dGVuc2lvbnMucHVzaCguLi5zdGVwQ29uZmlnLmV4dGVuc2lvbnMpO1xuICAgICAgY29tbWFuZHMucHVzaCguLi5zdGVwQ29uZmlnLmNvbW1hbmRzKTtcbiAgICAgIG5lZWRzLnB1c2goLi4uc3RlcENvbmZpZy5uZWVkcyk7XG4gICAgICBPYmplY3QuYXNzaWduKGVudiwgc3RlcENvbmZpZy5lbnYpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgIGNvbW1hbmRzLFxuICAgICAgbmVlZHM6IEFycmF5LmZyb20obmV3IFNldChuZWVkcykpLFxuICAgICAgZW52LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHNlcXVlbmNlIG9mIHN0ZXBzIGludG8gYSBCYXNoIHNjcmlwdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHRvQmFzaCgpOiBCYXNoU3RlcENvbmZpZyB7XG4gICAgY29uc3QgY29tbWFuZHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBzdGVwIG9mIHRoaXMuc3RlcHMpIHtcbiAgICAgIGNvbnN0IHN0ZXBDb25maWcgPSBzdGVwLnRvQmFzaCgpO1xuICAgICAgY29tbWFuZHMucHVzaCguLi5zdGVwQ29uZmlnLmNvbW1hbmRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgY29tbWFuZHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgc2VxdWVuY2Ugb2Ygc3RlcHMgaW50byBhIEdpdEh1YiBBY3Rpb25zIHN0ZXAgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyB0b0dpdGh1YigpOiBHaXRodWJTdGVwQ29uZmlnIHtcbiAgICBjb25zdCBuZWVkczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzdGVwczogSm9iU3RlcFtdID0gW107XG4gICAgY29uc3QgZW52OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgY29uc3QgcGVybWlzc2lvbnM6IEpvYlBlcm1pc3Npb25zW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgdGhpcy5zdGVwcykge1xuICAgICAgY29uc3Qgc3RlcENvbmZpZyA9IHN0ZXAudG9HaXRodWIoKTtcbiAgICAgIG5lZWRzLnB1c2goLi4uc3RlcENvbmZpZy5uZWVkcyk7XG4gICAgICBzdGVwcy5wdXNoKC4uLnN0ZXBDb25maWcuc3RlcHMpO1xuICAgICAgaWYgKHN0ZXBDb25maWcucGVybWlzc2lvbnMpIHtcbiAgICAgICAgcGVybWlzc2lvbnMucHVzaChzdGVwQ29uZmlnLnBlcm1pc3Npb25zKTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5hc3NpZ24oZW52LCBzdGVwQ29uZmlnLmVudik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuZWVkczogQXJyYXkuZnJvbShuZXcgU2V0KG5lZWRzKSksXG4gICAgICBzdGVwcyxcbiAgICAgIGVudixcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKC4uLnBlcm1pc3Npb25zKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBzZXF1ZW5jZSBvZiBzdGVwcyBpbnRvIGEgQ29kZUNhdGFseXN0IEFjdGlvbnMgc3RlcCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHRvQ29kZUNhdGFseXN0KCk6IENvZGVDYXRhbHlzdFN0ZXBDb25maWcge1xuICAgIGNvbnN0IG5lZWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGVudjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XG4gICAgICBjb25zdCBzdGVwQ29uZmlnID0gc3RlcC50b0NvZGVDYXRhbHlzdCgpO1xuICAgICAgbmVlZHMucHVzaCguLi5zdGVwQ29uZmlnLm5lZWRzKTtcbiAgICAgIGNvbW1hbmRzLnB1c2goLi4uc3RlcENvbmZpZy5jb21tYW5kcyk7XG4gICAgICBPYmplY3QuYXNzaWduKGVudiwgc3RlcENvbmZpZy5lbnYpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmVlZHM6IEFycmF5LmZyb20obmV3IFNldChuZWVkcykpLFxuICAgICAgY29tbWFuZHMsXG4gICAgICBlbnYsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRTdGVwcyguLi5zdGVwczogUGlwZWxpbmVTdGVwW10pIHtcbiAgICB0aGlzLnN0ZXBzLnB1c2goLi4uc3RlcHMpO1xuICB9XG5cbiAgcHVibGljIHByZXBlbmRTdGVwcyguLi5zdGVwczogUGlwZWxpbmVTdGVwW10pIHtcbiAgICB0aGlzLnN0ZXBzLnVuc2hpZnQoLi4uc3RlcHMpO1xuICB9XG59Il19
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "version": "0.2.4",
85
+ "version": "0.2.6",
86
86
  "jest": {
87
87
  "coverageProvider": "v8",
88
88
  "testMatch": [