@macedon-technologies/batman 1.21.4 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -97,7 +97,7 @@
97
97
  },
98
98
  "name": "@macedon-technologies/batman",
99
99
  "readme": {
100
- "markdown": "# Platform Common Projen\n\nA baseline architecture template for new projects using Projen. This project provides a standardized foundation that includes both frontend and backend components with authentication.\n\n## Project Intention\n\nThis template serves as a starting point for new projects, providing:\n- Consistent project structure and configuration\n- Pre-configured development tooling\n- Integrated authentication system\n- Full-stack application foundation\n\n## Components Created\n\nThe BatmanProject generates:\n\n### Frontend\n- **React Application** - Modern React app with TypeScript\n- **Clerk Authentication** - Integrated user authentication and management\n\n### Backend/Infrastructure\n- **AWS Infrastructure** - CDK-based cloud resources\n- **API Gateway** - RESTful API endpoints\n- **Lambda Functions** - Serverless compute\n- **Database** - Persistent data storage\n\n## Usage Examples\n\n### Basic Project Creation\n\nCreate a `.projenrc.ts` file in your project root:\n\n```typescript\nimport { BatmanProject } from '@macedon-technologies/batman';\n\nconst project = new BatmanProject({\n name: 'my-new-app',\n defaultReleaseBranch: 'main',\n});\n\nproject.synth();\n```\n\nThen run:\n```bash\nnpx projen\n```\n\n### With Custom Configuration\n\nCreate a `.projenrc.ts` file with additional options:\n\n```typescript\nimport { BatmanProject } from '@macedon-technologies/batman';\n\nconst project = new BatmanProject({\n name: 'my-enterprise-app',\n defaultReleaseBranch: 'main',\n description: 'Enterprise application with authentication',\n authorName: 'Your Name',\n authorEmail: 'your.email@company.com',\n});\n\nproject.synth();\n```\n\nThen run:\n```bash\nnpx projen\n```\n\n### Development Workflow\n\n```bash\n# Install dependencies\nyarn install\n\n# Start development server\nyarn dev\n\n# Deploy infrastructure\nyarn deploy\n\n# Run tests\nyarn test\n```"
100
+ "markdown": "# Platform Common Projen\n\nA baseline architecture template for new projects using Projen. This project provides a standardized foundation that includes both frontend and backend components with authentication.\n\n## Project Intention\n\nThis template serves as a starting point for new projects, providing:\n- Consistent project structure and configuration\n- Pre-configured development tooling\n- Integrated authentication system\n- Full-stack application foundation\n\n## Components Created\n\nThe BatmanProject generates:\n\n### Frontend\n- **React Application** - Modern React app with TypeScript\n- **Clerk Authentication** - Integrated user authentication and management\n\n### Backend/Infrastructure\n- **AWS Infrastructure** - CDK-based cloud resources\n- **API Gateway** - RESTful API endpoints\n- **Lambda Functions** - Serverless compute\n- **Database** - Persistent data storage\n\n## Usage Examples\n\n### Basic Project Creation\n\nCreate a `.projenrc.ts` file in your project root:\n\n```typescript\nimport { BatmanProject } from '@macedon-technologies/batman';\n\nconst project = new BatmanProject({\n name: 'my-new-app',\n defaultReleaseBranch: 'main',\n});\n\nproject.synth();\n```\n\nThen run:\n```bash\nnpx projen\n```\n\n### With Custom Configuration\n\nCreate a `.projenrc.ts` file with additional options:\n\n```typescript\nimport { BatmanProject } from '@macedon-technologies/batman';\n\nconst project = new BatmanProject({\n name: 'my-enterprise-app',\n defaultReleaseBranch: 'main',\n description: 'Enterprise application with authentication',\n authorName: 'Your Name',\n authorEmail: 'your.email@company.com',\n});\n\nproject.synth();\n```\n\nThen run:\n```bash\nnpx projen\n```\n\n### Development Workflow\n\n```bash\n# Install dependencies\nyarn install\n\n# Start development server\nyarn dev\n\n# Deploy infrastructure\nyarn deploy\n\n# Run tests\nyarn test\n```\n\n## SoftwareFactoryFiles (standalone, non-Batman projects)\n\n`SoftwareFactoryFiles` is independently exported and can be attached to any\n`projen` `NodeProject` — it does not require `BatmanProject` or\n`BootcampProject`. It generates the `@swamp/software-factory` state machine,\nthe architecture rule registry, the pre-PR attestation gate, the OpenSpec\ntask-completion gate, and the swamp workflows that wire them together.\n\n```typescript\nimport { javascript } from 'projen';\nimport { SoftwareFactoryFiles } from '@macedon-technologies/batman';\n\nconst project = new javascript.NodeProject({\n name: 'my-other-project',\n defaultReleaseBranch: 'main',\n});\n\nnew SoftwareFactoryFiles(project, {\n repoName: 'my-other-project',\n githubOwner: 'my-github-org', // defaults to 'macedon-technologies' if omitted\n baseBranch: 'main', // defaults to 'main'\n});\n\nproject.synth();\n```\n\nAfter running `npx projen`, follow the printed `swamp:bootstrap` task to pull\nthe required swamp extensions and create the project's secrets vault."
101
101
  },
102
102
  "repository": {
103
103
  "type": "git",
@@ -794,7 +794,7 @@
794
794
  },
795
795
  "locationInModule": {
796
796
  "filename": "src/SoftwareFactoryFiles.ts",
797
- "line": 55
797
+ "line": 62
798
798
  },
799
799
  "parameters": [
800
800
  {
@@ -814,7 +814,7 @@
814
814
  "kind": "class",
815
815
  "locationInModule": {
816
816
  "filename": "src/SoftwareFactoryFiles.ts",
817
- "line": 54
817
+ "line": 61
818
818
  },
819
819
  "name": "SoftwareFactoryFiles",
820
820
  "symbolId": "src/SoftwareFactoryFiles:SoftwareFactoryFiles"
@@ -858,7 +858,7 @@
858
858
  "immutable": true,
859
859
  "locationInModule": {
860
860
  "filename": "src/SoftwareFactoryFiles.ts",
861
- "line": 29
861
+ "line": 36
862
862
  },
863
863
  "name": "actionVersions",
864
864
  "optional": true,
@@ -876,13 +876,31 @@
876
876
  "immutable": true,
877
877
  "locationInModule": {
878
878
  "filename": "src/SoftwareFactoryFiles.ts",
879
- "line": 24
879
+ "line": 31
880
880
  },
881
881
  "name": "baseBranch",
882
882
  "optional": true,
883
883
  "type": {
884
884
  "primitive": "string"
885
885
  }
886
+ },
887
+ {
888
+ "abstract": true,
889
+ "docs": {
890
+ "default": "'macedon-technologies'",
891
+ "stability": "stable",
892
+ "summary": "The GitHub org/user the repo lives in."
893
+ },
894
+ "immutable": true,
895
+ "locationInModule": {
896
+ "filename": "src/SoftwareFactoryFiles.ts",
897
+ "line": 24
898
+ },
899
+ "name": "githubOwner",
900
+ "optional": true,
901
+ "type": {
902
+ "primitive": "string"
903
+ }
886
904
  }
887
905
  ],
888
906
  "symbolId": "src/SoftwareFactoryFiles:SoftwareFactoryFilesOptions"
@@ -1247,6 +1265,6 @@
1247
1265
  "symbolId": "src/WorkflowAutoDiscover:WorkflowAutoDiscover"
1248
1266
  }
1249
1267
  },
1250
- "version": "1.21.4",
1251
- "fingerprint": "6iB3f3ZsGzit5sB0Hrs4Dx96OxKXwvlBsBoyIIwcFT8="
1268
+ "version": "1.22.0",
1269
+ "fingerprint": "pjrJAD2Ic1MVUDhfkfRKQERiR/9DPjte5xqYD/8bVoY="
1252
1270
  }
package/API.md CHANGED
@@ -10589,6 +10589,7 @@ const softwareFactoryFilesOptions: SoftwareFactoryFilesOptions = { ... }
10589
10589
  | <code><a href="#@macedon-technologies/batman.SoftwareFactoryFilesOptions.property.repoName">repoName</a></code> | <code>string</code> | The bare repo name (e.g. `expense-tracker`), used to derive the factory's model names (`<repoName>-factory`, `<repoName>-issues`, `<repoName>-pr`, `<repoName>-shell*`) and vault name (`<repoName>-secrets`). |
10590
10590
  | <code><a href="#@macedon-technologies/batman.SoftwareFactoryFilesOptions.property.actionVersions">actionVersions</a></code> | <code><a href="#@macedon-technologies/batman.WorkflowActionVersions">WorkflowActionVersions</a></code> | Overrides for the pinned action versions used by `verify-attestation.yml`. |
10591
10591
  | <code><a href="#@macedon-technologies/batman.SoftwareFactoryFilesOptions.property.baseBranch">baseBranch</a></code> | <code>string</code> | The branch the factory opens pull requests against. |
10592
+ | <code><a href="#@macedon-technologies/batman.SoftwareFactoryFilesOptions.property.githubOwner">githubOwner</a></code> | <code>string</code> | The GitHub org/user the repo lives in. |
10592
10593
 
10593
10594
  ---
10594
10595
 
@@ -10629,6 +10630,19 @@ The branch the factory opens pull requests against.
10629
10630
 
10630
10631
  ---
10631
10632
 
10633
+ ##### `githubOwner`<sup>Optional</sup> <a name="githubOwner" id="@macedon-technologies/batman.SoftwareFactoryFilesOptions.property.githubOwner"></a>
10634
+
10635
+ ```typescript
10636
+ public readonly githubOwner: string;
10637
+ ```
10638
+
10639
+ - *Type:* string
10640
+ - *Default:* 'macedon-technologies'
10641
+
10642
+ The GitHub org/user the repo lives in.
10643
+
10644
+ ---
10645
+
10632
10646
  ### StagingDeployWorkflowOptions <a name="StagingDeployWorkflowOptions" id="@macedon-technologies/batman.StagingDeployWorkflowOptions"></a>
10633
10647
 
10634
10648
  #### Initializer <a name="Initializer" id="@macedon-technologies/batman.StagingDeployWorkflowOptions.Initializer"></a>
package/README.md CHANGED
@@ -83,4 +83,33 @@ yarn deploy
83
83
 
84
84
  # Run tests
85
85
  yarn test
86
- ```
86
+ ```
87
+
88
+ ## SoftwareFactoryFiles (standalone, non-Batman projects)
89
+
90
+ `SoftwareFactoryFiles` is independently exported and can be attached to any
91
+ `projen` `NodeProject` — it does not require `BatmanProject` or
92
+ `BootcampProject`. It generates the `@swamp/software-factory` state machine,
93
+ the architecture rule registry, the pre-PR attestation gate, the OpenSpec
94
+ task-completion gate, and the swamp workflows that wire them together.
95
+
96
+ ```typescript
97
+ import { javascript } from 'projen';
98
+ import { SoftwareFactoryFiles } from '@macedon-technologies/batman';
99
+
100
+ const project = new javascript.NodeProject({
101
+ name: 'my-other-project',
102
+ defaultReleaseBranch: 'main',
103
+ });
104
+
105
+ new SoftwareFactoryFiles(project, {
106
+ repoName: 'my-other-project',
107
+ githubOwner: 'my-github-org', // defaults to 'macedon-technologies' if omitted
108
+ baseBranch: 'main', // defaults to 'main'
109
+ });
110
+
111
+ project.synth();
112
+ ```
113
+
114
+ After running `npx projen`, follow the printed `swamp:bootstrap` task to pull
115
+ the required swamp extensions and create the project's secrets vault.
@@ -12,7 +12,7 @@ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
12
12
  const utils_1 = require("./utils");
13
13
  const ViteReactProject_1 = require("./ViteReactProject");
14
14
  class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.21.4" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.22.0" };
16
16
  constructor(options) {
17
17
  super({
18
18
  ...options,
@@ -12,7 +12,7 @@ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
12
12
  const utils_1 = require("./utils");
13
13
  const ViteReactProject_1 = require("./ViteReactProject");
14
14
  class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.21.4" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.22.0" };
16
16
  constructor(options) {
17
17
  super({
18
18
  ...options,
@@ -4,7 +4,7 @@ exports.CodeOwnersFile = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const projen_1 = require("projen");
6
6
  class CodeOwnersFile extends projen_1.TextFile {
7
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.21.4" };
7
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.22.0" };
8
8
  constructor(project, options = {}) {
9
9
  const defaultOwners = ['* @macedon-technologies/platform', '* @macedon-technologies/ai-development-team'];
10
10
  const allOwners = [...defaultOwners, ...(options.additionalOwners || [])];
@@ -17,6 +17,10 @@ class PrCleanupWorkflow extends projen_1.YamlFile {
17
17
  types: ['closed'],
18
18
  },
19
19
  },
20
+ concurrency: {
21
+ 'group': 'pr-stack-${{ github.event.pull_request.number }}',
22
+ 'cancel-in-progress': false,
23
+ },
20
24
  permissions: {
21
25
  'id-token': 'write',
22
26
  'contents': 'read',
@@ -113,4 +117,4 @@ class PrCleanupWorkflow extends projen_1.YamlFile {
113
117
  }
114
118
  }
115
119
  exports.PrCleanupWorkflow = PrCleanupWorkflow;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJDbGVhbnVwV29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUHJDbGVhbnVwV29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWtDO0FBRWxDLG1DQUFtRDtBQUNuRCxxRUFBeUY7QUFhekYsTUFBYSxpQkFBa0IsU0FBUSxpQkFBUTtJQUM3QyxZQUFZLE9BQTRCLEVBQUUsT0FBaUM7UUFDekUsTUFBTSxjQUFjLEdBQUcsSUFBQSw4Q0FBcUIsRUFBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRTtZQUNqRCxNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxZQUFZO2dCQUNsQixFQUFFLEVBQUU7b0JBQ0YsWUFBWSxFQUFFO3dCQUNaLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQztxQkFDbEI7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLFVBQVUsRUFBRSxPQUFPO29CQUNuQixVQUFVLEVBQUUsTUFBTTtvQkFDbEIsZUFBZSxFQUFFLE9BQU87aUJBQ3pCO2dCQUNELElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUU7d0JBQ1AsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLElBQUksRUFBRSwyR0FBMkc7d0JBQ2pILE9BQU8sRUFBRTs0QkFDUDtnQ0FDRSxJQUFJLEVBQUUsVUFBVTtnQ0FDaEIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRO2dDQUM3QixJQUFJLEVBQUU7b0NBQ0oscUJBQXFCLEVBQUUsS0FBSztpQ0FDN0I7NkJBQ0Y7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLDJCQUEyQjtnQ0FDakMsSUFBSSxFQUFFLGNBQWMsQ0FBQyx1QkFBdUI7Z0NBQzVDLElBQUksRUFBRTtvQ0FDSixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsT0FBTztvQ0FDakMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxTQUFTO2lDQUNoQzs2QkFDRjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsNkJBQTZCO2dDQUNuQyxFQUFFLEVBQUUsY0FBYztnQ0FDbEIsR0FBRyxFQUFFO29DQUNILFdBQVcsRUFBRSx3QkFBd0I7aUNBQ3RDO2dDQUNELEdBQUcsRUFBRTtvQ0FDSCxnRUFBZ0U7b0NBQ2hFLHFDQUFxQztvQ0FDckMsNERBQTREO29DQUM1RCxHQUFHLElBQUEsZ0NBQXdCLEdBQUU7b0NBQzdCLHNDQUFzQztvQ0FDdEMseUNBQXlDO29DQUN6QyxlQUFlLE9BQU8sQ0FBQyxXQUFXLDBCQUEwQjtvQ0FDNUQsb0NBQW9DO29DQUNwQyxFQUFFO29DQUNGLDJCQUEyQjtvQ0FDM0IsMERBQTBEO29DQUMxRCxFQUFFO29DQUNGLHVDQUF1QztvQ0FDdkMsa0RBQWtEO29DQUNsRCx3RUFBd0U7b0NBQ3hFLEVBQUU7b0NBQ0YsOENBQThDO2lDQUMvQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7NkJBQ2I7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQ0FDNUIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxZQUFZO2dDQUNqQyxFQUFFLEVBQUUsV0FBVztnQ0FDZixHQUFHLEVBQUU7b0NBQ0gsUUFBUSxFQUFFLHdCQUF3QjtpQ0FDbkM7Z0NBQ0QsSUFBSSxFQUFFO29DQUNKLE1BQU0sRUFBRTt3Q0FDTixvQ0FBb0M7d0NBQ3BDLHVDQUF1Qzt3Q0FDdkMsOEJBQThCO3dDQUM5Qiw0QkFBNEI7d0NBQzVCLDZGQUE2Rjt3Q0FDN0YsSUFBSTtxQ0FDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUNBQ2I7NkJBQ0Y7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQ0FDNUIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxZQUFZO2dDQUNqQyxFQUFFLEVBQUUsV0FBVztnQ0FDZixHQUFHLEVBQUU7b0NBQ0gsUUFBUSxFQUFFLHdCQUF3QjtpQ0FDbkM7Z0NBQ0QsSUFBSSxFQUFFO29DQUNKLE1BQU0sRUFBRTt3Q0FDTix1R0FBdUc7d0NBQ3ZHLG9DQUFvQzt3Q0FDcEMsdUNBQXVDO3dDQUN2Qyw4QkFBOEI7d0NBQzlCLDRCQUE0Qjt3Q0FDNUIsZ0pBQWdKO3dDQUNoSixJQUFJO3FDQUNMLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQ0FDYjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0dELDhDQTJHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFlhbWxGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBzYW5pdGl6ZUJyYW5jaE5hbWVTY3JpcHQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHJlc29sdmVBY3Rpb25WZXJzaW9ucywgV29ya2Zsb3dBY3Rpb25WZXJzaW9ucyB9IGZyb20gJy4vV29ya2Zsb3dBY3Rpb25WZXJzaW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJDbGVhbnVwV29ya2Zsb3dPcHRpb25zIHtcbiAgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nO1xuICByZWFkb25seSBhd3NSZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIGZvciB0aGUgcGlubmVkIGFjdGlvbiB2ZXJzaW9ucyB1c2VkIGJ5IHRoaXMgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25WZXJzaW9ucz86IFdvcmtmbG93QWN0aW9uVmVyc2lvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBQckNsZWFudXBXb3JrZmxvdyBleHRlbmRzIFlhbWxGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCwgb3B0aW9uczogUHJDbGVhbnVwV29ya2Zsb3dPcHRpb25zKSB7XG4gICAgY29uc3QgYWN0aW9uVmVyc2lvbnMgPSByZXNvbHZlQWN0aW9uVmVyc2lvbnMob3B0aW9ucy5hY3Rpb25WZXJzaW9ucyk7XG4gICAgc3VwZXIocHJvamVjdCwgJy5naXRodWIvd29ya2Zsb3dzL3ByLWNsZWFudXAueW1sJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgbmFtZTogJ1BSIENsZWFudXAnLFxuICAgICAgICBvbjoge1xuICAgICAgICAgIHB1bGxfcmVxdWVzdDoge1xuICAgICAgICAgICAgdHlwZXM6IFsnY2xvc2VkJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAnaWQtdG9rZW4nOiAnd3JpdGUnLFxuICAgICAgICAgICdjb250ZW50cyc6ICdyZWFkJyxcbiAgICAgICAgICAncHVsbC1yZXF1ZXN0cyc6ICd3cml0ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYnM6IHtcbiAgICAgICAgICBjbGVhbnVwOiB7XG4gICAgICAgICAgICAncnVucy1vbic6ICd1YnVudHUtbGF0ZXN0JyxcbiAgICAgICAgICAgICdpZic6IFwic3RhcnRzV2l0aChnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LnRpdGxlLCAnZml4JykgfHwgc3RhcnRzV2l0aChnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LnRpdGxlLCAnZmVhdCcpXCIsXG4gICAgICAgICAgICAnc3RlcHMnOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgICAgIHVzZXM6IGFjdGlvblZlcnNpb25zLmNoZWNrb3V0LFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgICdwZXJzaXN0LWNyZWRlbnRpYWxzJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maWd1cmUgQVdTIGNyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgICAgICB1c2VzOiBhY3Rpb25WZXJzaW9ucy5jb25maWd1cmVBd3NDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBvcHRpb25zLnJvbGVBcm4sXG4gICAgICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IG9wdGlvbnMuYXdzUmVnaW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGVsZXRlIENsb3VkRm9ybWF0aW9uIHN0YWNrJyxcbiAgICAgICAgICAgICAgICBpZDogJ2RlbGV0ZS1zdGFjaycsXG4gICAgICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgICBCUkFOQ0hfTkFNRTogJyR7eyBnaXRodWIuaGVhZF9yZWYgfX0nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICAgICAnIyBTdHJpcCBjb252ZW50aW9uYWwgY29tbWl0IHByZWZpeCAoZmVhdC8sIGZpeC8sIGNob3JlLywgZXRjLiknLFxuICAgICAgICAgICAgICAgICAgJ0NMRUFOX0JSQU5DSF9OQU1FPSR7QlJBTkNIX05BTUUjKi99JyxcbiAgICAgICAgICAgICAgICAgICcjIFNhbml0aXplIGludG8gYSBsZWdhbCBDbG91ZEZvcm1hdGlvbiBzdGFjay1uYW1lIGZyYWdtZW50JyxcbiAgICAgICAgICAgICAgICAgIC4uLnNhbml0aXplQnJhbmNoTmFtZVNjcmlwdCgpLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJPcmlnaW5hbCBicmFuY2g6ICRCUkFOQ0hfTkFNRVwiJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwiQ2xlYW4gYnJhbmNoOiAkQ0xFQU5fQlJBTkNIX05BTUVcIicsXG4gICAgICAgICAgICAgICAgICBgU1RBQ0tfTkFNRT1cIiR7b3B0aW9ucy5wcm9qZWN0TmFtZX0tZGV2LSRDTEVBTl9CUkFOQ0hfTkFNRVwiYCxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwiRGVsZXRpbmcgc3RhY2s6ICRTVEFDS19OQU1FXCInLFxuICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAnIyBJbml0aWF0ZSBzdGFjayBkZWxldGlvbicsXG4gICAgICAgICAgICAgICAgICAnYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgJFNUQUNLX05BTUUnLFxuICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAnIyBXYWl0IGZvciBzdGFjayBkZWxldGlvbiB0byBjb21wbGV0ZScsXG4gICAgICAgICAgICAgICAgICAnZWNobyBcIldhaXRpbmcgZm9yIHN0YWNrIGRlbGV0aW9uIHRvIGNvbXBsZXRlLi4uXCInLFxuICAgICAgICAgICAgICAgICAgJ2F3cyBjbG91ZGZvcm1hdGlvbiB3YWl0IHN0YWNrLWRlbGV0ZS1jb21wbGV0ZSAtLXN0YWNrLW5hbWUgJFNUQUNLX05BTUUnLFxuICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAnZWNobyBcIlN0YWNrIGRlbGV0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIicsXG4gICAgICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDb21tZW50IFBSIC0gU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMuZ2l0aHViU2NyaXB0LFxuICAgICAgICAgICAgICAgIGlmOiAnc3VjY2VzcygpJyxcbiAgICAgICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICAgIEhFQURfUkVGOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgICBzY3JpcHQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJ2dpdGh1Yi5yZXN0Lmlzc3Vlcy5jcmVhdGVDb21tZW50KHsnLFxuICAgICAgICAgICAgICAgICAgICAnICBpc3N1ZV9udW1iZXI6IGNvbnRleHQuaXNzdWUubnVtYmVyLCcsXG4gICAgICAgICAgICAgICAgICAgICcgIG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsJyxcbiAgICAgICAgICAgICAgICAgICAgJyAgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sJyxcbiAgICAgICAgICAgICAgICAgICAgJyAgYm9keTogYPCfp7kgU3VjY2Vzc2Z1bGx5IGNsZWFuZWQgdXAgQVdTIHJlc291cmNlcyBmb3IgYnJhbmNoIFxcXFxgJHtwcm9jZXNzLmVudi5IRUFEX1JFRn1cXFxcYGAnLFxuICAgICAgICAgICAgICAgICAgICAnfSknLFxuICAgICAgICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0NvbW1lbnQgUFIgLSBGYWlsdXJlJyxcbiAgICAgICAgICAgICAgICB1c2VzOiBhY3Rpb25WZXJzaW9ucy5naXRodWJTY3JpcHQsXG4gICAgICAgICAgICAgICAgaWY6ICdmYWlsdXJlKCknLFxuICAgICAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgICAgSEVBRF9SRUY6ICcke3sgZ2l0aHViLmhlYWRfcmVmIH19JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgIHNjcmlwdDogW1xuICAgICAgICAgICAgICAgICAgICAnY29uc3QgcnVuVXJsID0gYCR7eyBnaXRodWIuc2VydmVyX3VybCB9fS8ke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX0vYWN0aW9ucy9ydW5zLyR7eyBnaXRodWIucnVuX2lkIH19YDsnLFxuICAgICAgICAgICAgICAgICAgICAnZ2l0aHViLnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoeycsXG4gICAgICAgICAgICAgICAgICAgICcgIGlzc3VlX251bWJlcjogY29udGV4dC5pc3N1ZS5udW1iZXIsJyxcbiAgICAgICAgICAgICAgICAgICAgJyAgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwnLFxuICAgICAgICAgICAgICAgICAgICAnICByZXBvOiBjb250ZXh0LnJlcG8ucmVwbywnLFxuICAgICAgICAgICAgICAgICAgICAnICBib2R5OiBg4p2MIEZhaWxlZCB0byBjbGVhbiB1cCBBV1MgcmVzb3VyY2VzIGZvciBicmFuY2ggXFxcXGAke3Byb2Nlc3MuZW52LkhFQURfUkVGfVxcXFxgLiBQbGVhc2UgY2hlY2sgdGhlIFt3b3JrZmxvdyBydW5dKCR7cnVuVXJsfSkgZm9yIGRldGFpbHMuYCcsXG4gICAgICAgICAgICAgICAgICAgICd9KScsXG4gICAgICAgICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJDbGVhbnVwV29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUHJDbGVhbnVwV29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWtDO0FBRWxDLG1DQUFtRDtBQUNuRCxxRUFBeUY7QUFhekYsTUFBYSxpQkFBa0IsU0FBUSxpQkFBUTtJQUM3QyxZQUFZLE9BQTRCLEVBQUUsT0FBaUM7UUFDekUsTUFBTSxjQUFjLEdBQUcsSUFBQSw4Q0FBcUIsRUFBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRTtZQUNqRCxNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxZQUFZO2dCQUNsQixFQUFFLEVBQUU7b0JBQ0YsWUFBWSxFQUFFO3dCQUNaLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQztxQkFDbEI7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLE9BQU8sRUFBRSxrREFBa0Q7b0JBQzNELG9CQUFvQixFQUFFLEtBQUs7aUJBQzVCO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxVQUFVLEVBQUUsT0FBTztvQkFDbkIsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLGVBQWUsRUFBRSxPQUFPO2lCQUN6QjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFO3dCQUNQLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixJQUFJLEVBQUUsMkdBQTJHO3dCQUNqSCxPQUFPLEVBQUU7NEJBQ1A7Z0NBQ0UsSUFBSSxFQUFFLFVBQVU7Z0NBQ2hCLElBQUksRUFBRSxjQUFjLENBQUMsUUFBUTtnQ0FDN0IsSUFBSSxFQUFFO29DQUNKLHFCQUFxQixFQUFFLEtBQUs7aUNBQzdCOzZCQUNGOzRCQUNEO2dDQUNFLElBQUksRUFBRSwyQkFBMkI7Z0NBQ2pDLElBQUksRUFBRSxjQUFjLENBQUMsdUJBQXVCO2dDQUM1QyxJQUFJLEVBQUU7b0NBQ0osZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE9BQU87b0NBQ2pDLFlBQVksRUFBRSxPQUFPLENBQUMsU0FBUztpQ0FDaEM7NkJBQ0Y7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLDZCQUE2QjtnQ0FDbkMsRUFBRSxFQUFFLGNBQWM7Z0NBQ2xCLEdBQUcsRUFBRTtvQ0FDSCxXQUFXLEVBQUUsd0JBQXdCO2lDQUN0QztnQ0FDRCxHQUFHLEVBQUU7b0NBQ0gsZ0VBQWdFO29DQUNoRSxxQ0FBcUM7b0NBQ3JDLDREQUE0RDtvQ0FDNUQsR0FBRyxJQUFBLGdDQUF3QixHQUFFO29DQUM3QixzQ0FBc0M7b0NBQ3RDLHlDQUF5QztvQ0FDekMsZUFBZSxPQUFPLENBQUMsV0FBVywwQkFBMEI7b0NBQzVELG9DQUFvQztvQ0FDcEMsRUFBRTtvQ0FDRiwyQkFBMkI7b0NBQzNCLDBEQUEwRDtvQ0FDMUQsRUFBRTtvQ0FDRix1Q0FBdUM7b0NBQ3ZDLGtEQUFrRDtvQ0FDbEQsd0VBQXdFO29DQUN4RSxFQUFFO29DQUNGLDhDQUE4QztpQ0FDL0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzZCQUNiOzRCQUNEO2dDQUNFLElBQUksRUFBRSxzQkFBc0I7Z0NBQzVCLElBQUksRUFBRSxjQUFjLENBQUMsWUFBWTtnQ0FDakMsRUFBRSxFQUFFLFdBQVc7Z0NBQ2YsR0FBRyxFQUFFO29DQUNILFFBQVEsRUFBRSx3QkFBd0I7aUNBQ25DO2dDQUNELElBQUksRUFBRTtvQ0FDSixNQUFNLEVBQUU7d0NBQ04sb0NBQW9DO3dDQUNwQyx1Q0FBdUM7d0NBQ3ZDLDhCQUE4Qjt3Q0FDOUIsNEJBQTRCO3dDQUM1Qiw2RkFBNkY7d0NBQzdGLElBQUk7cUNBQ0wsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lDQUNiOzZCQUNGOzRCQUNEO2dDQUNFLElBQUksRUFBRSxzQkFBc0I7Z0NBQzVCLElBQUksRUFBRSxjQUFjLENBQUMsWUFBWTtnQ0FDakMsRUFBRSxFQUFFLFdBQVc7Z0NBQ2YsR0FBRyxFQUFFO29DQUNILFFBQVEsRUFBRSx3QkFBd0I7aUNBQ25DO2dDQUNELElBQUksRUFBRTtvQ0FDSixNQUFNLEVBQUU7d0NBQ04sdUdBQXVHO3dDQUN2RyxvQ0FBb0M7d0NBQ3BDLHVDQUF1Qzt3Q0FDdkMsOEJBQThCO3dDQUM5Qiw0QkFBNEI7d0NBQzVCLGdKQUFnSjt3Q0FDaEosSUFBSTtxQ0FDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUNBQ2I7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQS9HRCw4Q0ErR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuaW1wb3J0IHsgc2FuaXRpemVCcmFuY2hOYW1lU2NyaXB0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyByZXNvbHZlQWN0aW9uVmVyc2lvbnMsIFdvcmtmbG93QWN0aW9uVmVyc2lvbnMgfSBmcm9tICcuL1dvcmtmbG93QWN0aW9uVmVyc2lvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByQ2xlYW51cFdvcmtmbG93T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgYXdzUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgdGhlIHBpbm5lZCBhY3Rpb24gdmVyc2lvbnMgdXNlZCBieSB0aGlzIHdvcmtmbG93LlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uVmVyc2lvbnM/OiBXb3JrZmxvd0FjdGlvblZlcnNpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgUHJDbGVhbnVwV29ya2Zsb3cgZXh0ZW5kcyBZYW1sRmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsIG9wdGlvbnM6IFByQ2xlYW51cFdvcmtmbG93T3B0aW9ucykge1xuICAgIGNvbnN0IGFjdGlvblZlcnNpb25zID0gcmVzb2x2ZUFjdGlvblZlcnNpb25zKG9wdGlvbnMuYWN0aW9uVmVyc2lvbnMpO1xuICAgIHN1cGVyKHByb2plY3QsICcuZ2l0aHViL3dvcmtmbG93cy9wci1jbGVhbnVwLnltbCcsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIG5hbWU6ICdQUiBDbGVhbnVwJyxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBwdWxsX3JlcXVlc3Q6IHtcbiAgICAgICAgICAgIHR5cGVzOiBbJ2Nsb3NlZCddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmN1cnJlbmN5OiB7XG4gICAgICAgICAgJ2dyb3VwJzogJ3ByLXN0YWNrLSR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0Lm51bWJlciB9fScsXG4gICAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgICdpZC10b2tlbic6ICd3cml0ZScsXG4gICAgICAgICAgJ2NvbnRlbnRzJzogJ3JlYWQnLFxuICAgICAgICAgICdwdWxsLXJlcXVlc3RzJzogJ3dyaXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAgam9iczoge1xuICAgICAgICAgIGNsZWFudXA6IHtcbiAgICAgICAgICAgICdydW5zLW9uJzogJ3VidW50dS1sYXRlc3QnLFxuICAgICAgICAgICAgJ2lmJzogXCJzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QudGl0bGUsICdmaXgnKSB8fCBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QudGl0bGUsICdmZWF0JylcIixcbiAgICAgICAgICAgICdzdGVwcyc6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMuY2hlY2tvdXQsXG4gICAgICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAgICAgJ3BlcnNpc3QtY3JlZGVudGlhbHMnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpZ3VyZSBBV1MgY3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgICAgIHVzZXM6IGFjdGlvblZlcnNpb25zLmNvbmZpZ3VyZUF3c0NyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IG9wdGlvbnMucm9sZUFybixcbiAgICAgICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogb3B0aW9ucy5hd3NSZWdpb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEZWxldGUgQ2xvdWRGb3JtYXRpb24gc3RhY2snLFxuICAgICAgICAgICAgICAgIGlkOiAnZGVsZXRlLXN0YWNrJyxcbiAgICAgICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICAgIEJSQU5DSF9OQU1FOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgICAgICcjIFN0cmlwIGNvbnZlbnRpb25hbCBjb21taXQgcHJlZml4IChmZWF0LywgZml4LywgY2hvcmUvLCBldGMuKScsXG4gICAgICAgICAgICAgICAgICAnQ0xFQU5fQlJBTkNIX05BTUU9JHtCUkFOQ0hfTkFNRSMqL30nLFxuICAgICAgICAgICAgICAgICAgJyMgU2FuaXRpemUgaW50byBhIGxlZ2FsIENsb3VkRm9ybWF0aW9uIHN0YWNrLW5hbWUgZnJhZ21lbnQnLFxuICAgICAgICAgICAgICAgICAgLi4uc2FuaXRpemVCcmFuY2hOYW1lU2NyaXB0KCksXG4gICAgICAgICAgICAgICAgICAnZWNobyBcIk9yaWdpbmFsIGJyYW5jaDogJEJSQU5DSF9OQU1FXCInLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJDbGVhbiBicmFuY2g6ICRDTEVBTl9CUkFOQ0hfTkFNRVwiJyxcbiAgICAgICAgICAgICAgICAgIGBTVEFDS19OQU1FPVwiJHtvcHRpb25zLnByb2plY3ROYW1lfS1kZXYtJENMRUFOX0JSQU5DSF9OQU1FXCJgLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJEZWxldGluZyBzdGFjazogJFNUQUNLX05BTUVcIicsXG4gICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICcjIEluaXRpYXRlIHN0YWNrIGRlbGV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICdhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrIC0tc3RhY2stbmFtZSAkU1RBQ0tfTkFNRScsXG4gICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICcjIFdhaXQgZm9yIHN0YWNrIGRlbGV0aW9uIHRvIGNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwiV2FpdGluZyBmb3Igc3RhY2sgZGVsZXRpb24gdG8gY29tcGxldGUuLi5cIicsXG4gICAgICAgICAgICAgICAgICAnYXdzIGNsb3VkZm9ybWF0aW9uIHdhaXQgc3RhY2stZGVsZXRlLWNvbXBsZXRlIC0tc3RhY2stbmFtZSAkU1RBQ0tfTkFNRScsXG4gICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwiU3RhY2sgZGVsZXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiJyxcbiAgICAgICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0NvbW1lbnQgUFIgLSBTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICB1c2VzOiBhY3Rpb25WZXJzaW9ucy5naXRodWJTY3JpcHQsXG4gICAgICAgICAgICAgICAgaWY6ICdzdWNjZXNzKCknLFxuICAgICAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgICAgSEVBRF9SRUY6ICcke3sgZ2l0aHViLmhlYWRfcmVmIH19JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgIHNjcmlwdDogW1xuICAgICAgICAgICAgICAgICAgICAnZ2l0aHViLnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoeycsXG4gICAgICAgICAgICAgICAgICAgICcgIGlzc3VlX251bWJlcjogY29udGV4dC5pc3N1ZS5udW1iZXIsJyxcbiAgICAgICAgICAgICAgICAgICAgJyAgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwnLFxuICAgICAgICAgICAgICAgICAgICAnICByZXBvOiBjb250ZXh0LnJlcG8ucmVwbywnLFxuICAgICAgICAgICAgICAgICAgICAnICBib2R5OiBg8J+nuSBTdWNjZXNzZnVsbHkgY2xlYW5lZCB1cCBBV1MgcmVzb3VyY2VzIGZvciBicmFuY2ggXFxcXGAke3Byb2Nlc3MuZW52LkhFQURfUkVGfVxcXFxgYCcsXG4gICAgICAgICAgICAgICAgICAgICd9KScsXG4gICAgICAgICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29tbWVudCBQUiAtIEZhaWx1cmUnLFxuICAgICAgICAgICAgICAgIHVzZXM6IGFjdGlvblZlcnNpb25zLmdpdGh1YlNjcmlwdCxcbiAgICAgICAgICAgICAgICBpZjogJ2ZhaWx1cmUoKScsXG4gICAgICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgICBIRUFEX1JFRjogJyR7eyBnaXRodWIuaGVhZF9yZWYgfX0nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAgICAgc2NyaXB0OiBbXG4gICAgICAgICAgICAgICAgICAgICdjb25zdCBydW5VcmwgPSBgJHt7IGdpdGh1Yi5zZXJ2ZXJfdXJsIH19LyR7eyBnaXRodWIucmVwb3NpdG9yeSB9fS9hY3Rpb25zL3J1bnMvJHt7IGdpdGh1Yi5ydW5faWQgfX1gOycsXG4gICAgICAgICAgICAgICAgICAgICdnaXRodWIucmVzdC5pc3N1ZXMuY3JlYXRlQ29tbWVudCh7JyxcbiAgICAgICAgICAgICAgICAgICAgJyAgaXNzdWVfbnVtYmVyOiBjb250ZXh0Lmlzc3VlLm51bWJlciwnLFxuICAgICAgICAgICAgICAgICAgICAnICBvd25lcjogY29udGV4dC5yZXBvLm93bmVyLCcsXG4gICAgICAgICAgICAgICAgICAgICcgIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCcsXG4gICAgICAgICAgICAgICAgICAgICcgIGJvZHk6IGDinYwgRmFpbGVkIHRvIGNsZWFuIHVwIEFXUyByZXNvdXJjZXMgZm9yIGJyYW5jaCBcXFxcYCR7cHJvY2Vzcy5lbnYuSEVBRF9SRUZ9XFxcXGAuIFBsZWFzZSBjaGVjayB0aGUgW3dvcmtmbG93IHJ1bl0oJHtydW5Vcmx9KSBmb3IgZGV0YWlscy5gJyxcbiAgICAgICAgICAgICAgICAgICAgJ30pJyxcbiAgICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -19,6 +19,10 @@ class PrDeployWorkflow extends projen_1.YamlFile {
19
19
  types: ['opened', 'synchronize', 'reopened'],
20
20
  },
21
21
  },
22
+ concurrency: {
23
+ 'group': 'pr-stack-${{ github.event.pull_request.number }}',
24
+ 'cancel-in-progress': false,
25
+ },
22
26
  permissions: {
23
27
  'id-token': 'write',
24
28
  'contents': 'read',
@@ -148,4 +152,4 @@ class PrDeployWorkflow extends projen_1.YamlFile {
148
152
  }
149
153
  }
150
154
  exports.PrDeployWorkflow = PrDeployWorkflow;
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJEZXBsb3lXb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QckRlcGxveVdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQUVsQyxzREFBMkQ7QUFDM0QsbUNBQXFGO0FBQ3JGLHFFQUF5RjtBQWF6RixNQUFhLGdCQUFpQixTQUFRLGlCQUFRO0lBQzVDLFlBQVksT0FBNEIsRUFBRSxPQUFnQztRQUN4RSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUN0RCxNQUFNLGNBQWMsR0FBRyxJQUFBLDhDQUFxQixFQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRSxLQUFLLENBQUMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEVBQUUsRUFBRTtvQkFDRixZQUFZLEVBQUU7d0JBQ1osS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUM7cUJBQzdDO2lCQUNGO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxVQUFVLEVBQUUsT0FBTztvQkFDbkIsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLGVBQWUsRUFBRSxPQUFPO2lCQUN6QjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osTUFBTSxFQUFFO3dCQUNOLFNBQVMsRUFBRSxlQUFlO3dCQUMxQixJQUFJLEVBQUUsMkdBQTJHO3dCQUNqSCxPQUFPLEVBQUU7NEJBQ1A7Z0NBQ0UsSUFBSSxFQUFFLFVBQVU7Z0NBQ2hCLElBQUksRUFBRSxjQUFjLENBQUMsUUFBUTtnQ0FDN0IsSUFBSSxFQUFFO29DQUNKLHFCQUFxQixFQUFFLEtBQUs7aUNBQzdCOzZCQUNGOzRCQUNELEdBQUcsQ0FBQyxjQUFjLEtBQUssK0JBQWtCLENBQUMsSUFBSSxDQUFD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OzZCQUNiO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE3SUQsNENBNklDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWWFtbEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBpbnN0YWxsQ29tbWFuZCwgcnVuU2NyaXB0Q29tbWFuZCwgc2FuaXRpemVCcmFuY2hOYW1lU2NyaXB0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyByZXNvbHZlQWN0aW9uVmVyc2lvbnMsIFdvcmtmbG93QWN0aW9uVmVyc2lvbnMgfSBmcm9tICcuL1dvcmtmbG93QWN0aW9uVmVyc2lvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByRGVwbG95V29ya2Zsb3dPcHRpb25zIHtcbiAgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nO1xuICByZWFkb25seSBhd3NSZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY2xlcmtQdWJsaXNoYWJsZUtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgZm9yIHRoZSBwaW5uZWQgYWN0aW9uIHZlcnNpb25zIHVzZWQgYnkgdGhpcyB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvblZlcnNpb25zPzogV29ya2Zsb3dBY3Rpb25WZXJzaW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIFByRGVwbG95V29ya2Zsb3cgZXh0ZW5kcyBZYW1sRmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsIG9wdGlvbnM6IFByRGVwbG95V29ya2Zsb3dPcHRpb25zKSB7XG4gICAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSBwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXI7XG4gICAgY29uc3QgYWN0aW9uVmVyc2lvbnMgPSByZXNvbHZlQWN0aW9uVmVyc2lvbnMob3B0aW9ucy5hY3Rpb25WZXJzaW9ucyk7XG4gICAgc3VwZXIocHJvamVjdCwgJy5naXRodWIvd29ya2Zsb3dzL3ByLWRlcGxveS55bWwnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiAnUFIgRGVwbG95JyxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBwdWxsX3JlcXVlc3Q6IHtcbiAgICAgICAgICAgIHR5cGVzOiBbJ29wZW5lZCcsICdzeW5jaHJvbml6ZScsICdyZW9wZW5lZCddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgJ2lkLXRva2VuJzogJ3dyaXRlJyxcbiAgICAgICAgICAnY29udGVudHMnOiAncmVhZCcsXG4gICAgICAgICAgJ3B1bGwtcmVxdWVzdHMnOiAnd3JpdGUnLFxuICAgICAgICB9LFxuICAgICAgICBqb2JzOiB7XG4gICAgICAgICAgZGVwbG95OiB7XG4gICAgICAgICAgICAncnVucy1vbic6ICd1YnVudHUtbGF0ZXN0JyxcbiAgICAgICAgICAgICdpZic6IFwic3RhcnRzV2l0aChnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LnRpdGxlLCAnZml4JykgfHwgc3RhcnRzV2l0aChnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LnRpdGxlLCAnZmVhdCcpXCIsXG4gICAgICAgICAgICAnc3RlcHMnOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgICAgIHVzZXM6IGFjdGlvblZlcnNpb25zLmNoZWNrb3V0LFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgICdwZXJzaXN0LWNyZWRlbnRpYWxzJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLi4uKHBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSA/IFt7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NldHVwIHBucG0nLFxuICAgICAgICAgICAgICAgIHVzZXM6IGFjdGlvblZlcnNpb25zLnBucG1BY3Rpb25TZXR1cCxcbiAgICAgICAgICAgICAgfV0gOiBbXSksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMuc2V0dXBOb2RlLFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgICdub2RlLXZlcnNpb24nOiAnMjQnLFxuICAgICAgICAgICAgICAgICAgJ3BhY2thZ2UtbWFuYWdlci1jYWNoZSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlndXJlIEFXUyBjcmVkZW50aWFscycsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMuY29uZmlndXJlQXdzQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogb3B0aW9ucy5yb2xlQXJuLFxuICAgICAgICAgICAgICAgICAgJ2F3cy1yZWdpb24nOiBvcHRpb25zLmF3c1JlZ2lvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgICAgICAgICBydW46IGluc3RhbGxDb21tYW5kKHBhY2thZ2VNYW5hZ2VyKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgY29uZmlnLmpzb24nLFxuICAgICAgICAgICAgICAgIHJ1bjogYGpxICcuY2xlcmtQdWJsaXNoYWJsZUtleSA9IFwiJHtvcHRpb25zLmNsZXJrUHVibGlzaGFibGVLZXl9XCInIHdlYi9wdWJsaWMvY29uZmlnLmpzb24gPiB0bXAuanNvbiAmJiBtdiB0bXAuanNvbiB3ZWIvcHVibGljL2NvbmZpZy5qc29uYCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEZXBsb3kgdG8gQVdTJyxcbiAgICAgICAgICAgICAgICBpZDogJ2RlcGxveScsXG4gICAgICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgICBCUkFOQ0hfTkFNRTogJyR7eyBnaXRodWIuaGVhZF9yZWYgfX0nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICAgICAnIyBTdHJpcCBjb252ZW50aW9uYWwgY29tbWl0IHByZWZpeCAoZmVhdC8sIGZpeC8sIGNob3JlLywgZXRjLiknLFxuICAgICAgICAgICAgICAgICAgJ0NMRUFOX0JSQU5DSF9OQU1FPSR7QlJBTkNIX05BTUUjKi99JyxcbiAgICAgICAgICAgICAgICAgICcjIFNhbml0aXplIGludG8gYSBsZWdhbCBDbG91ZEZvcm1hdGlvbiBzdGFjay1uYW1lIGZyYWdtZW50JyxcbiAgICAgICAgICAgICAgICAgIC4uLnNhbml0aXplQnJhbmNoTmFtZVNjcmlwdCgpLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJPcmlnaW5hbCBicmFuY2g6ICRCUkFOQ0hfTkFNRVwiJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwiQ2xlYW4gYnJhbmNoOiAkQ0xFQU5fQlJBTkNIX05BTUVcIicsXG4gICAgICAgICAgICAgICAgICBgJHtydW5TY3JpcHRDb21tYW5kKHBhY2thZ2VNYW5hZ2VyLCAnY2RrOmRldicpfSAtLWNvbnRleHQgbG9jYWwtZGV2LXByZWZpeD0kQ0xFQU5fQlJBTkNIX05BTUUgZGVwbG95IC0tcmVxdWlyZS1hcHByb3ZhbCBuZXZlciAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy5qc29uYCxcbiAgICAgICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0V4dHJhY3Qgb3V0cHV0cycsXG4gICAgICAgICAgICAgICAgaWQ6ICdvdXRwdXRzJyxcbiAgICAgICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgICAgICdXRUJTSVRFX1VSTD0kKGpxIC1yIFxcJy5bXSB8IC5XZWJzaXRlVXJsIC8vIGVtcHR5XFwnIGNkay1vdXRwdXRzLmpzb24pJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwid2Vic2l0ZV91cmw9JFdFQlNJVEVfVVJMXCIgPj4gJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJXZWJzaXRlIFVSTDogJFdFQlNJVEVfVVJMXCInLFxuICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29tbWVudCBQUicsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMuZ2l0aHViU2NyaXB0LFxuICAgICAgICAgICAgICAgIGlmOiAnc3VjY2VzcygpJyxcbiAgICAgICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICAgIEhFQURfUkVGOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgICAgICAgICAgICBXRUJTSVRFX1VSTDogJyR7eyBzdGVwcy5vdXRwdXRzLm91dHB1dHMud2Vic2l0ZV91cmwgfX0nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAgICAgc2NyaXB0OiBbXG4gICAgICAgICAgICAgICAgICAgICdjb25zdCB3ZWJzaXRlVXJsID0gcHJvY2Vzcy5lbnYuV0VCU0lURV9VUkw7JyxcbiAgICAgICAgICAgICAgICAgICAgJ2xldCBib2R5ID0gYOKchSBTdWNjZXNzZnVsbHkgZGVwbG95ZWQgYnJhbmNoIFxcXFxgJHtwcm9jZXNzLmVudi5IRUFEX1JFRn1cXFxcYCB0byBBV1MgZGV2IGVudmlyb25tZW50XFxcXG5cXFxcbmA7JyxcbiAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICdpZiAod2Vic2l0ZVVybCkgeycsXG4gICAgICAgICAgICAgICAgICAgICcgIGJvZHkgKz0gYPCfjJAgKipXZWJzaXRlIFVSTDoqKiAke3dlYnNpdGVVcmx9YDsnLFxuICAgICAgICAgICAgICAgICAgICAnfScsXG4gICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAnZ2l0aHViLnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoeycsXG4gICAgICAgICAgICAgICAgICAgICcgIGlzc3VlX251bWJlcjogY29udGV4dC5pc3N1ZS5udW1iZXIsJyxcbiAgICAgICAgICAgICAgICAgICAgJyAgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwnLFxuICAgICAgICAgICAgICAgICAgICAnICByZXBvOiBjb250ZXh0LnJlcG8ucmVwbywnLFxuICAgICAgICAgICAgICAgICAgICAnICBib2R5OiBib2R5JyxcbiAgICAgICAgICAgICAgICAgICAgJ30pJyxcbiAgICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdOb3RpZnkgU2xhY2snLFxuICAgICAgICAgICAgICAgIGlmOiAnYWx3YXlzKCknLFxuICAgICAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgICAgU1RBVFVTOiAnJHt7IGpvYi5zdGF0dXMgfX0nLFxuICAgICAgICAgICAgICAgICAgV0VCU0lURV9VUkw6ICcke3sgc3RlcHMub3V0cHV0cy5vdXRwdXRzLndlYnNpdGVfdXJsIH19JyxcbiAgICAgICAgICAgICAgICAgIFJFUE86ICcke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX0nLFxuICAgICAgICAgICAgICAgICAgUFJfTlVNQkVSOiAnJHt7IGdpdGh1Yi5ldmVudC5udW1iZXIgfX0nLFxuICAgICAgICAgICAgICAgICAgQ09NTUlUOiAnJHt7IGdpdGh1Yi5zaGEgfX0nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICAgICAnQ09MT1I9XCJnb29kXCInLFxuICAgICAgICAgICAgICAgICAgJ2lmIFsgXCIkU1RBVFVTXCIgIT0gXCJzdWNjZXNzXCIgXTsgdGhlbicsXG4gICAgICAgICAgICAgICAgICAnICBDT0xPUj1cImRhbmdlclwiJyxcbiAgICAgICAgICAgICAgICAgICdmaScsXG4gICAgICAgICAgICAgICAgICAnTUVTU0FHRT1cIlBSIERlcGxveTogJFNUQVRVU1xcXFxuUmVwbzogJFJFUE9cXFxcblBSOiAjJFBSX05VTUJFUlxcXFxuQ29tbWl0OiAkQ09NTUlUXCInLFxuICAgICAgICAgICAgICAgICAgJ2lmIFsgLW4gXCIkV0VCU0lURV9VUkxcIiBdOyB0aGVuJyxcbiAgICAgICAgICAgICAgICAgICcgIE1FU1NBR0U9XCIkTUVTU0FHRVxcXFxu8J+MkCBXZWJzaXRlOiA8JFdFQlNJVEVfVVJMfFZpZXcgU2l0ZT5cIicsXG4gICAgICAgICAgICAgICAgICAnZmknLFxuICAgICAgICAgICAgICAgICAgJ2N1cmwgLVggUE9TVCBodHRwczovL3NsYWNrLmNvbS9hcGkvY2hhdC5wb3N0TWVzc2FnZSBcXFxcJyxcbiAgICAgICAgICAgICAgICAgICcgIC1IIFwiQXV0aG9yaXphdGlvbjogQmVhcmVyICR7eyBzZWNyZXRzLlNMQUNLX0JPVF9UT0tFTiB9fVwiIFxcXFwnLFxuICAgICAgICAgICAgICAgICAgJyAgLUggXFwnQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uXFwnIFxcXFwnLFxuICAgICAgICAgICAgICAgICAgJyAgLS1kYXRhIFwie1xcXFxcImNoYW5uZWxcXFxcXCI6XFxcXFwiJHt7IHNlY3JldHMuU0xBQ0tfQ0hBTk5FTF9JRCB9fVxcXFxcIixcXFxcXCJhdHRhY2htZW50c1xcXFxcIjpbe1xcXFxcImNvbG9yXFxcXFwiOlxcXFxcIiRDT0xPUlxcXFxcIixcXFxcXCJ0ZXh0XFxcXFwiOlxcXFxcIiRNRVNTQUdFXFxcXFwifV19XCInLFxuICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJEZXBsb3lXb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QckRlcGxveVdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFrQztBQUVsQyxzREFBMkQ7QUFDM0QsbUNBQXFGO0FBQ3JGLHFFQUF5RjtBQWF6RixNQUFhLGdCQUFpQixTQUFRLGlCQUFRO0lBQzVDLFlBQVksT0FBNEIsRUFBRSxPQUFnQztRQUN4RSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUN0RCxNQUFNLGNBQWMsR0FBRyxJQUFBLDhDQUFxQixFQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRSxLQUFLLENBQUMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEVBQUUsRUFBRTtvQkFDRixZQUFZLEVBQUU7d0JBQ1osS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUM7cUJBQzdDO2lCQUNGO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUUsa0RBQWtEO29CQUMzRCxvQkFBb0IsRUFBRSxLQUFLO2lCQUM1QjtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsVUFBVSxFQUFFLE9BQU87b0JBQ25CLFVBQVUsRUFBRSxNQUFNO29CQUNsQixlQUFlLEVBQUUsT0FBTztpQkFDekI7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsSUFBSSxFQUFFLDJHQUEyRzt3QkFDakgsT0FBTyxFQUFFOzRCQUNQO2dDQUNFLElBQUksRUFBRSxVQUFVO2dDQUNoQixJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVE7Z0NBQzdCLElBQUksRUFBRTtvQ0FDSixxQkFBcUIs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Q3hELGdFQUFnRTtvQ0FDaEUsNENBQTRDO29DQUM1QywySUFBMkk7aUNBQzVJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs2QkFDYjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakpELDRDQWlKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFlhbWxGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuaW1wb3J0IHsgaW5zdGFsbENvbW1hbmQsIHJ1blNjcmlwdENvbW1hbmQsIHNhbml0aXplQnJhbmNoTmFtZVNjcmlwdCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgcmVzb2x2ZUFjdGlvblZlcnNpb25zLCBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBQckRlcGxveVdvcmtmbG93T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgYXdzUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsZXJrUHVibGlzaGFibGVLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIGZvciB0aGUgcGlubmVkIGFjdGlvbiB2ZXJzaW9ucyB1c2VkIGJ5IHRoaXMgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25WZXJzaW9ucz86IFdvcmtmbG93QWN0aW9uVmVyc2lvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBQckRlcGxveVdvcmtmbG93IGV4dGVuZHMgWWFtbEZpbGUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLCBvcHRpb25zOiBQckRlcGxveVdvcmtmbG93T3B0aW9ucykge1xuICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyID0gcHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyO1xuICAgIGNvbnN0IGFjdGlvblZlcnNpb25zID0gcmVzb2x2ZUFjdGlvblZlcnNpb25zKG9wdGlvbnMuYWN0aW9uVmVyc2lvbnMpO1xuICAgIHN1cGVyKHByb2plY3QsICcuZ2l0aHViL3dvcmtmbG93cy9wci1kZXBsb3kueW1sJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgbmFtZTogJ1BSIERlcGxveScsXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgcHVsbF9yZXF1ZXN0OiB7XG4gICAgICAgICAgICB0eXBlczogWydvcGVuZWQnLCAnc3luY2hyb25pemUnLCAncmVvcGVuZWQnXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAgICdncm91cCc6ICdwci1zdGFjay0ke3sgZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC5udW1iZXIgfX0nLFxuICAgICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAnaWQtdG9rZW4nOiAnd3JpdGUnLFxuICAgICAgICAgICdjb250ZW50cyc6ICdyZWFkJyxcbiAgICAgICAgICAncHVsbC1yZXF1ZXN0cyc6ICd3cml0ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYnM6IHtcbiAgICAgICAgICBkZXBsb3k6IHtcbiAgICAgICAgICAgICdydW5zLW9uJzogJ3VidW50dS1sYXRlc3QnLFxuICAgICAgICAgICAgJ2lmJzogXCJzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QudGl0bGUsICdmaXgnKSB8fCBzdGFydHNXaXRoKGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QudGl0bGUsICdmZWF0JylcIixcbiAgICAgICAgICAgICdzdGVwcyc6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMuY2hlY2tvdXQsXG4gICAgICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAgICAgJ3BlcnNpc3QtY3JlZGVudGlhbHMnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAuLi4ocGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNID8gW3tcbiAgICAgICAgICAgICAgICBuYW1lOiAnU2V0dXAgcG5wbScsXG4gICAgICAgICAgICAgICAgdXNlczogYWN0aW9uVmVyc2lvbnMucG5wbUFjdGlvblNldHVwLFxuICAgICAgICAgICAgICB9XSA6IFtdKSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgICAgICAgICB1c2VzOiBhY3Rpb25WZXJzaW9ucy5zZXR1cE5vZGUsXG4gICAgICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAgICAgJ25vZGUtdmVyc2lvbic6ICcyNCcsXG4gICAgICAgICAgICAgICAgICAncGFja2FnZS1tYW5hZ2VyLWNhY2hlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maWd1cmUgQVdTIGNyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgICAgICB1c2VzOiBhY3Rpb25WZXJzaW9ucy5jb25maWd1cmVBd3NDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBvcHRpb25zLnJvbGVBcm4sXG4gICAgICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IG9wdGlvbnMuYXdzUmVnaW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICAgICAgIHJ1bjogaW5zdGFsbENvbW1hbmQocGFja2FnZU1hbmFnZXIpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1VwZGF0ZSBjb25maWcuanNvbicsXG4gICAgICAgICAgICAgICAgcnVuOiBganEgJy5jbGVya1B1Ymxpc2hhYmxlS2V5ID0gXCIke29wdGlvbnMuY2xlcmtQdWJsaXNoYWJsZUtleX1cIicgd2ViL3B1YmxpYy9jb25maWcuanNvbiA+IHRtcC5qc29uICYmIG12IHRtcC5qc29uIHdlYi9wdWJsaWMvY29uZmlnLmpzb25gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0RlcGxveSB0byBBV1MnLFxuICAgICAgICAgICAgICAgIGlkOiAnZGVwbG95JyxcbiAgICAgICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICAgIEJSQU5DSF9OQU1FOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgICAgICcjIFN0cmlwIGNvbnZlbnRpb25hbCBjb21taXQgcHJlZml4IChmZWF0LywgZml4LywgY2hvcmUvLCBldGMuKScsXG4gICAgICAgICAgICAgICAgICAnQ0xFQU5fQlJBTkNIX05BTUU9JHtCUkFOQ0hfTkFNRSMqL30nLFxuICAgICAgICAgICAgICAgICAgJyMgU2FuaXRpemUgaW50byBhIGxlZ2FsIENsb3VkRm9ybWF0aW9uIHN0YWNrLW5hbWUgZnJhZ21lbnQnLFxuICAgICAgICAgICAgICAgICAgLi4uc2FuaXRpemVCcmFuY2hOYW1lU2NyaXB0KCksXG4gICAgICAgICAgICAgICAgICAnZWNobyBcIk9yaWdpbmFsIGJyYW5jaDogJEJSQU5DSF9OQU1FXCInLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJDbGVhbiBicmFuY2g6ICRDTEVBTl9CUkFOQ0hfTkFNRVwiJyxcbiAgICAgICAgICAgICAgICAgIGAke3J1blNjcmlwdENvbW1hbmQocGFja2FnZU1hbmFnZXIsICdjZGs6ZGV2Jyl9IC0tY29udGV4dCBsb2NhbC1kZXYtcHJlZml4PSRDTEVBTl9CUkFOQ0hfTkFNRSBkZXBsb3kgLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyIC0tb3V0cHV0cy1maWxlIGNkay1vdXRwdXRzLmpzb25gLFxuICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRXh0cmFjdCBvdXRwdXRzJyxcbiAgICAgICAgICAgICAgICBpZDogJ291dHB1dHMnLFxuICAgICAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICAgICAgJ1dFQlNJVEVfVVJMPSQoanEgLXIgXFwnLltdIHwgLldlYnNpdGVVcmwgLy8gZW1wdHlcXCcgY2RrLW91dHB1dHMuanNvbiknLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJ3ZWJzaXRlX3VybD0kV0VCU0lURV9VUkxcIiA+PiAkR0lUSFVCX09VVFBVVCcsXG4gICAgICAgICAgICAgICAgICAnZWNobyBcIldlYnNpdGUgVVJMOiAkV0VCU0lURV9VUkxcIicsXG4gICAgICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDb21tZW50IFBSJyxcbiAgICAgICAgICAgICAgICB1c2VzOiBhY3Rpb25WZXJzaW9ucy5naXRodWJTY3JpcHQsXG4gICAgICAgICAgICAgICAgaWY6ICdzdWNjZXNzKCknLFxuICAgICAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgICAgSEVBRF9SRUY6ICcke3sgZ2l0aHViLmhlYWRfcmVmIH19JyxcbiAgICAgICAgICAgICAgICAgIFdFQlNJVEVfVVJMOiAnJHt7IHN0ZXBzLm91dHB1dHMub3V0cHV0cy53ZWJzaXRlX3VybCB9fScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgICBzY3JpcHQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJ2NvbnN0IHdlYnNpdGVVcmwgPSBwcm9jZXNzLmVudi5XRUJTSVRFX1VSTDsnLFxuICAgICAgICAgICAgICAgICAgICAnbGV0IGJvZHkgPSBg4pyFIFN1Y2Nlc3NmdWxseSBkZXBsb3llZCBicmFuY2ggXFxcXGAke3Byb2Nlc3MuZW52LkhFQURfUkVGfVxcXFxgIHRvIEFXUyBkZXYgZW52aXJvbm1lbnRcXFxcblxcXFxuYDsnLFxuICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lmICh3ZWJzaXRlVXJsKSB7JyxcbiAgICAgICAgICAgICAgICAgICAgJyAgYm9keSArPSBg8J+MkCAqKldlYnNpdGUgVVJMOioqICR7d2Vic2l0ZVVybH1gOycsXG4gICAgICAgICAgICAgICAgICAgICd9JyxcbiAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICdnaXRodWIucmVzdC5pc3N1ZXMuY3JlYXRlQ29tbWVudCh7JyxcbiAgICAgICAgICAgICAgICAgICAgJyAgaXNzdWVfbnVtYmVyOiBjb250ZXh0Lmlzc3VlLm51bWJlciwnLFxuICAgICAgICAgICAgICAgICAgICAnICBvd25lcjogY29udGV4dC5yZXBvLm93bmVyLCcsXG4gICAgICAgICAgICAgICAgICAgICcgIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCcsXG4gICAgICAgICAgICAgICAgICAgICcgIGJvZHk6IGJvZHknLFxuICAgICAgICAgICAgICAgICAgICAnfSknLFxuICAgICAgICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ05vdGlmeSBTbGFjaycsXG4gICAgICAgICAgICAgICAgaWY6ICdhbHdheXMoKScsXG4gICAgICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgICBTVEFUVVM6ICcke3sgam9iLnN0YXR1cyB9fScsXG4gICAgICAgICAgICAgICAgICBXRUJTSVRFX1VSTDogJyR7eyBzdGVwcy5vdXRwdXRzLm91dHB1dHMud2Vic2l0ZV91cmwgfX0nLFxuICAgICAgICAgICAgICAgICAgUkVQTzogJyR7eyBnaXRodWIucmVwb3NpdG9yeSB9fScsXG4gICAgICAgICAgICAgICAgICBQUl9OVU1CRVI6ICcke3sgZ2l0aHViLmV2ZW50Lm51bWJlciB9fScsXG4gICAgICAgICAgICAgICAgICBDT01NSVQ6ICcke3sgZ2l0aHViLnNoYSB9fScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgICAgICdDT0xPUj1cImdvb2RcIicsXG4gICAgICAgICAgICAgICAgICAnaWYgWyBcIiRTVEFUVVNcIiAhPSBcInN1Y2Nlc3NcIiBdOyB0aGVuJyxcbiAgICAgICAgICAgICAgICAgICcgIENPTE9SPVwiZGFuZ2VyXCInLFxuICAgICAgICAgICAgICAgICAgJ2ZpJyxcbiAgICAgICAgICAgICAgICAgICdNRVNTQUdFPVwiUFIgRGVwbG95OiAkU1RBVFVTXFxcXG5SZXBvOiAkUkVQT1xcXFxuUFI6ICMkUFJfTlVNQkVSXFxcXG5Db21taXQ6ICRDT01NSVRcIicsXG4gICAgICAgICAgICAgICAgICAnaWYgWyAtbiBcIiRXRUJTSVRFX1VSTFwiIF07IHRoZW4nLFxuICAgICAgICAgICAgICAgICAgJyAgTUVTU0FHRT1cIiRNRVNTQUdFXFxcXG7wn4yQIFdlYnNpdGU6IDwkV0VCU0lURV9VUkx8VmlldyBTaXRlPlwiJyxcbiAgICAgICAgICAgICAgICAgICdmaScsXG4gICAgICAgICAgICAgICAgICAnY3VybCAtWCBQT1NUIGh0dHBzOi8vc2xhY2suY29tL2FwaS9jaGF0LnBvc3RNZXNzYWdlIFxcXFwnLFxuICAgICAgICAgICAgICAgICAgJyAgLUggXCJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHt7IHNlY3JldHMuU0xBQ0tfQk9UX1RPS0VOIH19XCIgXFxcXCcsXG4gICAgICAgICAgICAgICAgICAnICAtSCBcXCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb25cXCcgXFxcXCcsXG4gICAgICAgICAgICAgICAgICAnICAtLWRhdGEgXCJ7XFxcXFwiY2hhbm5lbFxcXFxcIjpcXFxcXCIke3sgc2VjcmV0cy5TTEFDS19DSEFOTkVMX0lEIH19XFxcXFwiLFxcXFxcImF0dGFjaG1lbnRzXFxcXFwiOlt7XFxcXFwiY29sb3JcXFxcXCI6XFxcXFwiJENPTE9SXFxcXFwiLFxcXFxcInRleHRcXFxcXCI6XFxcXFwiJE1FU1NBR0VcXFxcXCJ9XX1cIicsXG4gICAgICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
7
7
  const utils_1 = require("./utils");
8
8
  const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
9
9
  class ProductionDeployWorkflow extends projen_1.YamlFile {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.21.4" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.22.0" };
11
11
  constructor(project, options) {
12
12
  const packageManager = project.package.packageManager;
13
13
  const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
@@ -7,6 +7,12 @@ export interface SoftwareFactoryFilesOptions {
7
7
  * `<repoName>-shell*`) and vault name (`<repoName>-secrets`).
8
8
  */
9
9
  readonly repoName: string;
10
+ /**
11
+ * The GitHub org/user the repo lives in.
12
+ *
13
+ * @default 'macedon-technologies'
14
+ */
15
+ readonly githubOwner?: string;
10
16
  /**
11
17
  * The branch the factory opens pull requests against.
12
18
  *
@@ -7,7 +7,7 @@ const SoftwareFactoryAttestation_1 = require("./SoftwareFactoryAttestation");
7
7
  const SoftwareFactoryModels_1 = require("./SoftwareFactoryModels");
8
8
  const SoftwareFactoryOpenSpecGates_1 = require("./SoftwareFactoryOpenSpecGates");
9
9
  const SoftwareFactoryWorkflows_1 = require("./SoftwareFactoryWorkflows");
10
- const GITHUB_OWNER = 'macedon-technologies';
10
+ const DEFAULT_GITHUB_OWNER = 'macedon-technologies';
11
11
  /**
12
12
  * Backports exman's swamp "software factory" pattern
13
13
  * (macedon-technologies/exman#13) as generated scaffolding: a
@@ -31,9 +31,10 @@ const GITHUB_OWNER = 'macedon-technologies';
31
31
  * workflows that wire them together) is templated.
32
32
  */
33
33
  class SoftwareFactoryFiles {
34
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.21.4" };
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.22.0" };
35
35
  constructor(project, options) {
36
36
  const { repoName, actionVersions } = options;
37
+ const githubOwner = options.githubOwner || DEFAULT_GITHUB_OWNER;
37
38
  const baseBranch = options.baseBranch || 'main';
38
39
  const secretsVault = `${repoName}-secrets`;
39
40
  // A single redirect only: projen's built-in cross-platform task shell
@@ -43,7 +44,7 @@ class SoftwareFactoryFiles {
43
44
  const swampInitStep = 'command -v swamp >/dev/null && swamp init --tool claude || true';
44
45
  new SoftwareFactoryModels_1.SoftwareFactoryModels(project, {
45
46
  repoName,
46
- githubOwner: GITHUB_OWNER,
47
+ githubOwner,
47
48
  baseBranch,
48
49
  });
49
50
  new SoftwareFactoryArchitectureRules_1.SoftwareFactoryArchitectureRules(project);
@@ -99,4 +100,4 @@ class SoftwareFactoryFiles {
99
100
  }
100
101
  }
101
102
  exports.SoftwareFactoryFiles = SoftwareFactoryFiles;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU29mdHdhcmVGYWN0b3J5RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlGQUFzRjtBQUN0Riw2RUFBMEU7QUFDMUUsbUVBQWdFO0FBQ2hFLGlGQUE4RTtBQUM5RSx5RUFBc0U7QUFHdEUsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUM7QUF1QjVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLG9CQUFvQjs7SUFDL0IsWUFBWSxPQUFvQixFQUFFLE9BQW9DO1FBQ3BFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEdBQUcsUUFBUSxVQUFVLENBQUM7UUFDM0Msc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSx1RUFBdUU7UUFDdkUseUVBQXlFO1FBQ3pFLE1BQU0sYUFBYSxHQUFHLGlFQUFpRSxDQUFDO1FBRXhGLElBQUksNkNBQXFCLENBQUMsT0FBTyxFQUFFO1lBQ2pDLFFBQVE7WUFDUixXQUFXLEVBQUUsWUFBWTtZQUN6QixVQUFVO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxtRUFBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxJQUFJLHVEQUEwQixDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFdEQsSUFBSSwyREFBNEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxJQUFJLG1EQUF3QixDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUU7WUFDdkMsV0FBVyxFQUFFLHFGQUFxRjtZQUNsRyxJQUFJLEVBQUUsZ0ZBQWdGO1NBQ3ZGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxPQUFPLENBQUMsK0JBQStCLEVBQUU7WUFDL0MsV0FBVyxFQUFFLDJGQUEyRjtZQUN4RyxJQUFJLEVBQUUsdUZBQXVGO1lBQzdGLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7WUFDdEMsV0FBVyxFQUFFLHdHQUF3RztZQUNySCxJQUFJLEVBQUUscUVBQXFFO1NBQzVFLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUU7WUFDcEMsV0FBVyxFQUFFLHlIQUF5SDtZQUN0SSxJQUFJLEVBQUUsbUVBQW1FO1lBQ3pFLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDakMsV0FBVyxFQUFFLDRJQUE0STtZQUN6SixLQUFLLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsOENBQThDLEVBQUU7Z0JBQ3hELEVBQUUsSUFBSSxFQUFFLHVDQUF1QyxFQUFFO2dCQUNqRCxFQUFFLElBQUksRUFBRSx3Q0FBd0MsRUFBRTtnQkFDbEQsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLFlBQVksRUFBRSxFQUFFO2dCQUMvRDtvQkFDRSxJQUFJLEVBQUUsK0JBQStCLFlBQVksK0NBQStDO2lCQUNqRzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsd0VBQXdFO1FBQ3hFLHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRCx1RUFBdUU7UUFDdkUsd0VBQXdFO1FBQ3hFLHVFQUF1RTtRQUN2RSxtRUFBbUU7UUFDbkUsb0RBQW9EO1FBQ3BELE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDcEQsT0FBTyxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxDQUFDOztBQTdFSCxvREE4RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5QXJjaGl0ZWN0dXJlUnVsZXMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24gfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeUF0dGVzdGF0aW9uJztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeU1vZGVscyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5TW9kZWxzJztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeU9wZW5TcGVjR2F0ZXMgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeU9wZW5TcGVjR2F0ZXMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5V29ya2Zsb3dzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlXb3JrZmxvd3MnO1xuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpb25WZXJzaW9ucyB9IGZyb20gJy4vV29ya2Zsb3dBY3Rpb25WZXJzaW9ucyc7XG5cbmNvbnN0IEdJVEhVQl9PV05FUiA9ICdtYWNlZG9uLXRlY2hub2xvZ2llcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29mdHdhcmVGYWN0b3J5RmlsZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXJlIHJlcG8gbmFtZSAoZS5nLiBgZXhwZW5zZS10cmFja2VyYCksIHVzZWQgdG8gZGVyaXZlIHRoZSBmYWN0b3J5J3NcbiAgICogbW9kZWwgbmFtZXMgKGA8cmVwb05hbWU+LWZhY3RvcnlgLCBgPHJlcG9OYW1lPi1pc3N1ZXNgLCBgPHJlcG9OYW1lPi1wcmAsXG4gICAqIGA8cmVwb05hbWU+LXNoZWxsKmApIGFuZCB2YXVsdCBuYW1lIChgPHJlcG9OYW1lPi1zZWNyZXRzYCkuXG4gICAqL1xuICByZWFkb25seSByZXBvTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIHRoZSBmYWN0b3J5IG9wZW5zIHB1bGwgcmVxdWVzdHMgYWdhaW5zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21haW4nXG4gICAqL1xuICByZWFkb25seSBiYXNlQnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgZm9yIHRoZSBwaW5uZWQgYWN0aW9uIHZlcnNpb25zIHVzZWQgYnkgYHZlcmlmeS1hdHRlc3RhdGlvbi55bWxgLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uVmVyc2lvbnM/OiBXb3JrZmxvd0FjdGlvblZlcnNpb25zO1xufVxuXG4vKipcbiAqIEJhY2twb3J0cyBleG1hbidzIHN3YW1wIFwic29mdHdhcmUgZmFjdG9yeVwiIHBhdHRlcm5cbiAqIChtYWNlZG9uLXRlY2hub2xvZ2llcy9leG1hbiMxMykgYXMgZ2VuZXJhdGVkIHNjYWZmb2xkaW5nOiBhXG4gKiBgQHN3YW1wL3NvZnR3YXJlLWZhY3RvcnlgIHN0YXRlIG1hY2hpbmUgdGhhdCBkcml2ZXMgYSBHaXRIdWIgaXNzdWUgZnJvbVxuICogaW50YWtlIHRocm91Z2ggYW4gb3BlbmVkIFBSLCBlbmZvcmNpbmcgT3BlblNwZWMgdXNhZ2UsIGFuIGFyY2hpdGVjdHVyZVxuICogcnVsZSByZWdpc3RyeSwgYW5kIGEgcHJlLVBSIHZlcmlmaWNhdGlvbiBnYXRlIHdob3NlIGF0dGVzdGF0aW9uIGlzXG4gKiByZS1jaGVja2VkIGF0IG1lcmdlIHRpbWUuXG4gKlxuICogV2hhdCBzd2FtcCBpdHNlbGYgd291bGQgZ2VuZXJhdGUgKGV4dGVuc2lvbiBkb2NzIHB1bGxlZCB2aWFcbiAqIGBzd2FtcCBleHRlbnNpb24gcHVsbGAsIGAuc3dhbXAueWFtbGAsIHRoZSB2YXVsdCwgYW5kIHRoZSBcInN3YW1wIG1hbmFnZWRcbiAqIHNlY3Rpb25cIiBpbiBDTEFVREUubWQpIGlzIGRlbGliZXJhdGVseSBOT1QgaGFuZC10ZW1wbGF0ZWQgaGVyZSDigJQgdGhvc2UgYXJlXG4gKiBwcm9kdWNlZCBieSB0aGUgcmVhbCBgc3dhbXBgIENMSS4gYHN3YW1wIGluaXRgIGlzIGlkZW1wb3RlbnQgKGEgbm8tb3AgaWZcbiAqIHRoZSByZXBvIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQpLCBzbyBpdCdzIHdpcmVkIGludG8gdGhlIHByb2plY3Qnc1xuICogYGluc3RhbGxgL2BpbnN0YWxsOmNpYCB0YXNrcyBhbmQgcnVucyBhdXRvbWF0aWNhbGx5IG9uIGV2ZXJ5IGluc3RhbGwsXG4gKiBndWFyZGVkIHNvIGl0J3MgYSBzaWxlbnQgbm8tb3Agb24gYSBtYWNoaW5lIHdpdGhvdXQgYHN3YW1wYCBvbiBQQVRIIChlLmcuXG4gKiBDSSkuIFRoZSBleHRlbnNpb24gcHVsbHMgYW5kIHZhdWx0IGNyZWF0aW9uIGFyZSBvbmUtdGltZSwgbm90IGlkZW1wb3RlbnRcbiAqIGluIGEgd2F5IHRoYXQncyBzYWZlIHRvIHJlcGVhdCBvbiBldmVyeSBpbnN0YWxsLCBzbyB0aGV5IHN0YXkgaW4gdGhlXG4gKiBgc3dhbXA6Ym9vdHN0cmFwYCB0YXNrIHRoaXMgY29uc3RydWN0IGFkZHMuIE9ubHkgZXhtYW4ncyBvd24gYXV0aG9yZWRcbiAqIGNvbmZpZyAodGhlIGZhY3RvcnkncyBzdGF0ZSBtYWNoaW5lLCB0aGUgYXJjaGl0ZWN0dXJlLXJ1bGUgZW5naW5lLCB0aGVcbiAqIGF0dGVzdGF0aW9uIG1lY2hhbmlzbSwgdGhlIE9wZW5TcGVjIHRhc2stY29tcGxldGlvbiBnYXRlLCBhbmQgdGhlIDMgc3dhbXBcbiAqIHdvcmtmbG93cyB0aGF0IHdpcmUgdGhlbSB0b2dldGhlcikgaXMgdGVtcGxhdGVkLlxuICovXG5leHBvcnQgY2xhc3MgU29mdHdhcmVGYWN0b3J5RmlsZXMge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogU29mdHdhcmVGYWN0b3J5RmlsZXNPcHRpb25zKSB7XG4gICAgY29uc3QgeyByZXBvTmFtZSwgYWN0aW9uVmVyc2lvbnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgYmFzZUJyYW5jaCA9IG9wdGlvbnMuYmFzZUJyYW5jaCB8fCAnbWFpbic7XG4gICAgY29uc3Qgc2VjcmV0c1ZhdWx0ID0gYCR7cmVwb05hbWV9LXNlY3JldHNgO1xuICAgIC8vIEEgc2luZ2xlIHJlZGlyZWN0IG9ubHk6IHByb2plbidzIGJ1aWx0LWluIGNyb3NzLXBsYXRmb3JtIHRhc2sgc2hlbGxcbiAgICAvLyAoZGF4KSByZWplY3RzIGEgY29tbWFuZCB3aXRoIG1vcmUgdGhhbiBvbmUgcmVkaXJlY3QgKGUuZy4gY29tYmluaW5nXG4gICAgLy8gYD4vZGV2L251bGxgIHdpdGggYDI+JjFgKSB3aXRoIFwiTXVsdGlwbGUgcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgbm90XG4gICAgLy8gc3VwcG9ydGVkXCIg4oCUIGNvbmZpcm1lZCBieSBkb2dmb29kaW5nIHRoaXMgY29uc3RydWN0IG9uIHRoaXMgdmVyeSByZXBvLlxuICAgIGNvbnN0IHN3YW1wSW5pdFN0ZXAgPSAnY29tbWFuZCAtdiBzd2FtcCA+L2Rldi9udWxsICYmIHN3YW1wIGluaXQgLS10b29sIGNsYXVkZSB8fCB0cnVlJztcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlNb2RlbHMocHJvamVjdCwge1xuICAgICAgcmVwb05hbWUsXG4gICAgICBnaXRodWJPd25lcjogR0lUSFVCX09XTkVSLFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICB9KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyhwcm9qZWN0KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbihwcm9qZWN0LCB7IHJlcG9OYW1lIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeU9wZW5TcGVjR2F0ZXMocHJvamVjdCk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5V29ya2Zsb3dzKHByb2plY3QsIHsgcmVwb05hbWUsIGFjdGlvblZlcnNpb25zIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCd2YWxpZGF0ZTphcmNoaXRlY3R1cmUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgYXJjaGl0ZWN0dXJlIHJ1bGUgcmVnaXN0cnkgKGFyY2hpdGVjdHVyZS1ydWxlcy9ydWxlcy5qc29uKSBhZ2FpbnN0IHRoZSByZXBvJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBhcmNoaXRlY3R1cmUtcnVsZXMvdHNjb25maWcuanNvbiBhcmNoaXRlY3R1cmUtcnVsZXMvY2hlY2sudHMnLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdvcGVuc3BlYzpjaGVjay10YXNrcy1jb21wbGV0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRmFpbCB1bmxlc3MgZXZlcnkgdGFzayBpbiB0aGUgbmFtZWQgT3BlblNwZWMgY2hhbmdlIGlzIGNvbXBsZXRlICh1c2FnZTogLS0gPGNoYW5nZS1zbHVnPiknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IG9wZW5zcGVjLWdhdGVzL3RzY29uZmlnLmpzb24gb3BlbnNwZWMtZ2F0ZXMvY2hlY2stdGFza3MtY29tcGxldGUudHMnLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soJ2F0dGVzdGF0aW9uOm1hbmlmZXN0Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmludCBTSEEyNTYgY2hlY2tzdW1zIG9mIHRoZSBmaWxlcyBhIFBSIGF0dGVzdGF0aW9uIGlzIHZlcmlmaWVkIGFnYWluc3QgKHNlZSBhdHRlc3RhdGlvbi9tYW5pZmVzdC50cyknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IGF0dGVzdGF0aW9uL3RzY29uZmlnLmpzb24gYXR0ZXN0YXRpb24vbWFuaWZlc3QudHMnLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdhdHRlc3RhdGlvbjp2ZXJpZnknLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZlcmlmeSBhIFBSXFwncyBlbWJlZGRlZCBhdHRlc3RhdGlvbi1tYW5pZmVzdCBhZ2FpbnN0IHRoZSBjdXJyZW50IGNoZWNrb3V0ICh1c2FnZTogLS0gLS1ib2R5LWZpbGUgPHBhdGg+IC0tY29tbWl0IDxzaGE+KScsXG4gICAgICBleGVjOiAndHMtbm9kZSAtLXByb2plY3QgYXR0ZXN0YXRpb24vdHNjb25maWcuanNvbiBhdHRlc3RhdGlvbi92ZXJpZnkudHMnLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soJ3N3YW1wOmJvb3RzdHJhcCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnT25lLXRpbWUgc2V0dXA6IHB1bGwgdGhlIHNvZnR3YXJlLWZhY3RvcnkvZ2l0aHViIGV4dGVuc2lvbnMgYW5kIGNyZWF0ZSB0aGUgc2VjcmV0cyB2YXVsdCAoc3dhbXAgaW5pdCBpdHNlbGYgYWxyZWFkeSBydW5zIG9uIGV2ZXJ5IGluc3RhbGwpJyxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHsgZXhlYzogJ3N3YW1wIGV4dGVuc2lvbiBwdWxsIEBzd2FtcC9zb2Z0d2FyZS1mYWN0b3J5JyB9LFxuICAgICAgICB7IGV4ZWM6ICdzd2FtcCBleHRlbnNpb24gcHVsbCBAd2ViZnJhbXAvZ2l0aHViJyB9LFxuICAgICAgICB7IGV4ZWM6ICdzd2FtcCBleHRlbnNpb24gcHVsbCBAZ29vZGNyYWZ0L2dpdGh1YicgfSxcbiAgICAgICAgeyBleGVjOiBgc3dhbXAgdmF1bHQgY3JlYXRlIGxvY2FsX2VuY3J5cHRpb24gJHtzZWNyZXRzVmF1bHR9YCB9LFxuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogYGVjaG8gXCJOZXh0OiBzd2FtcCB2YXVsdCBwdXQgJHtzZWNyZXRzVmF1bHR9IEdJVEhVQl9UT0tFTiAtLXJlZnJlc2gtZnJvbSAnZ2ggYXV0aCB0b2tlbidcImAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gYHN3YW1wIGluaXRgIGlzIHNhZmUgdG8gcmUtcnVuIChpZGVtcG90ZW50IHdoZW4gYWxyZWFkeSBpbml0aWFsaXplZCksXG4gICAgLy8gc28gZXZlcnkgaW5zdGFsbCBrZWVwcyB0aGUgcmVwbyBpbml0aWFsaXplZCB3aXRob3V0IGEgc2VwYXJhdGUgbWFudWFsXG4gICAgLy8gc3RlcCDigJQgaW5jbHVkaW5nIG9uIGEgZnJlc2ggY2xvbmUgdGhhdCBoYXNuJ3QgcnVuIHN3YW1wOmJvb3RzdHJhcCB5ZXQuXG4gICAgcHJvamVjdC5wYWNrYWdlLmluc3RhbGxUYXNrLmV4ZWMoc3dhbXBJbml0U3RlcCk7XG4gICAgcHJvamVjdC5wYWNrYWdlLmluc3RhbGxDaVRhc2suZXhlYyhzd2FtcEluaXRTdGVwKTtcblxuICAgIC8vIE1pcnJvcnMgdGhlIHBhdHRlcm5zIGBzd2FtcCBpbml0YCBpdHNlbGYgd291bGQgYXBwZW5kIHRvIC5naXRpZ25vcmUuXG4gICAgLy8gcHJvamVuJ3MgSWdub3JlRmlsZSBmdWxseSByZWdlbmVyYXRlcyAuZ2l0aWdub3JlIGZyb20gaXRzIG93biB0cmFja2VkXG4gICAgLy8gZW50cmllcyBvbiBldmVyeSBzeW50aCwgc28gYW55dGhpbmcgYHN3YW1wIGluaXRgIGFwcGVuZHMgb3V0LW9mLWJhbmRcbiAgICAvLyBnZXRzIHNpbGVudGx5IHdpcGVkIGJ5IHRoZSBuZXh0IGBucHggcHJvamVuYCBydW4gKGNhdWdodCBieSBDSSdzXG4gICAgLy8gc2VsZi1tdXRhdGlvbiBjaGVjaykgdW5sZXNzIGl0J3MgYWxzbyBhZGRlZCBoZXJlLlxuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuc3dhbXAvJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5zd2FtcC1zb3VyY2VzLnlhbWwnKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS93b3JrdHJlZXMvJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvc2V0dGluZ3MubG9jYWwuanNvbicpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3NjaGVkdWxlZF90YXNrcy5sb2NrJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvc2NoZWR1bGVkX3Rhc2tzLmpzb24nKTtcbiAgfVxufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU29mdHdhcmVGYWN0b3J5RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlGQUFzRjtBQUN0Riw2RUFBMEU7QUFDMUUsbUVBQWdFO0FBQ2hFLGlGQUE4RTtBQUM5RSx5RUFBc0U7QUFHdEUsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQThCcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEsb0JBQW9COztJQUMvQixZQUFZLE9BQW9CLEVBQUUsT0FBb0M7UUFDcEUsTUFBTSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxvQkFBb0IsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxHQUFHLFFBQVEsVUFBVSxDQUFDO1FBQzNDLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLHlFQUF5RTtRQUN6RSxNQUFNLGFBQWEsR0FBRyxpRUFBaUUsQ0FBQztRQUV4RixJQUFJLDZDQUFxQixDQUFDLE9BQU8sRUFBRTtZQUNqQyxRQUFRO1lBQ1IsV0FBVztZQUNYLFVBQVU7U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLG1FQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlDLElBQUksdURBQTBCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV0RCxJQUFJLDJEQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUksbURBQXdCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFcEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtZQUN2QyxXQUFXLEVBQUUscUZBQXFGO1lBQ2xHLElBQUksRUFBRSxnRkFBZ0Y7U0FDdkYsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsRUFBRTtZQUMvQyxXQUFXLEVBQUUsMkZBQTJGO1lBQ3hHLElBQUksRUFBRSx1RkFBdUY7WUFDN0YsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtZQUN0QyxXQUFXLEVBQUUsd0dBQXdHO1lBQ3JILElBQUksRUFBRSxxRUFBcUU7U0FDNUUsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtZQUNwQyxXQUFXLEVBQUUseUhBQXlIO1lBQ3RJLElBQUksRUFBRSxtRUFBbUU7WUFDekUsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUNqQyxXQUFXLEVBQUUsNElBQTRJO1lBQ3pKLEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSw4Q0FBOEMsRUFBRTtnQkFDeEQsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLEVBQUU7Z0JBQ2pELEVBQUUsSUFBSSxFQUFFLHdDQUF3QyxFQUFFO2dCQUNsRCxFQUFFLElBQUksRUFBRSx1Q0FBdUMsWUFBWSxFQUFFLEVBQUU7Z0JBQy9EO29CQUNFLElBQUksRUFBRSwrQkFBK0IsWUFBWSwrQ0FBK0M7aUJBQ2pHO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsd0VBQXdFO1FBQ3hFLHlFQUF5RTtRQUN6RSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxELHVFQUF1RTtRQUN2RSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLG1FQUFtRTtRQUNuRSxvREFBb0Q7UUFDcEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O0FBOUVILG9EQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeUFyY2hpdGVjdHVyZVJ1bGVzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbiB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24nO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5TW9kZWxzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlNb2RlbHMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrZmxvd3MgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyc7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfT1dORVIgPSAnbWFjZWRvbi10ZWNobm9sb2dpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvZnR3YXJlRmFjdG9yeUZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFyZSByZXBvIG5hbWUgKGUuZy4gYGV4cGVuc2UtdHJhY2tlcmApLCB1c2VkIHRvIGRlcml2ZSB0aGUgZmFjdG9yeSdzXG4gICAqIG1vZGVsIG5hbWVzIChgPHJlcG9OYW1lPi1mYWN0b3J5YCwgYDxyZXBvTmFtZT4taXNzdWVzYCwgYDxyZXBvTmFtZT4tcHJgLFxuICAgKiBgPHJlcG9OYW1lPi1zaGVsbCpgKSBhbmQgdmF1bHQgbmFtZSAoYDxyZXBvTmFtZT4tc2VjcmV0c2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiBvcmcvdXNlciB0aGUgcmVwbyBsaXZlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21hY2Vkb24tdGVjaG5vbG9naWVzJ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT3duZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2ggdGhlIGZhY3Rvcnkgb3BlbnMgcHVsbCByZXF1ZXN0cyBhZ2FpbnN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFpbidcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgdGhlIHBpbm5lZCBhY3Rpb24gdmVyc2lvbnMgdXNlZCBieSBgdmVyaWZ5LWF0dGVzdGF0aW9uLnltbGAuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25WZXJzaW9ucz86IFdvcmtmbG93QWN0aW9uVmVyc2lvbnM7XG59XG5cbi8qKlxuICogQmFja3BvcnRzIGV4bWFuJ3Mgc3dhbXAgXCJzb2Z0d2FyZSBmYWN0b3J5XCIgcGF0dGVyblxuICogKG1hY2Vkb24tdGVjaG5vbG9naWVzL2V4bWFuIzEzKSBhcyBnZW5lcmF0ZWQgc2NhZmZvbGRpbmc6IGFcbiAqIGBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeWAgc3RhdGUgbWFjaGluZSB0aGF0IGRyaXZlcyBhIEdpdEh1YiBpc3N1ZSBmcm9tXG4gKiBpbnRha2UgdGhyb3VnaCBhbiBvcGVuZWQgUFIsIGVuZm9yY2luZyBPcGVuU3BlYyB1c2FnZSwgYW4gYXJjaGl0ZWN0dXJlXG4gKiBydWxlIHJlZ2lzdHJ5LCBhbmQgYSBwcmUtUFIgdmVyaWZpY2F0aW9uIGdhdGUgd2hvc2UgYXR0ZXN0YXRpb24gaXNcbiAqIHJlLWNoZWNrZWQgYXQgbWVyZ2UgdGltZS5cbiAqXG4gKiBXaGF0IHN3YW1wIGl0c2VsZiB3b3VsZCBnZW5lcmF0ZSAoZXh0ZW5zaW9uIGRvY3MgcHVsbGVkIHZpYVxuICogYHN3YW1wIGV4dGVuc2lvbiBwdWxsYCwgYC5zd2FtcC55YW1sYCwgdGhlIHZhdWx0LCBhbmQgdGhlIFwic3dhbXAgbWFuYWdlZFxuICogc2VjdGlvblwiIGluIENMQVVERS5tZCkgaXMgZGVsaWJlcmF0ZWx5IE5PVCBoYW5kLXRlbXBsYXRlZCBoZXJlIOKAlCB0aG9zZSBhcmVcbiAqIHByb2R1Y2VkIGJ5IHRoZSByZWFsIGBzd2FtcGAgQ0xJLiBgc3dhbXAgaW5pdGAgaXMgaWRlbXBvdGVudCAoYSBuby1vcCBpZlxuICogdGhlIHJlcG8gaXMgYWxyZWFkeSBpbml0aWFsaXplZCksIHNvIGl0J3Mgd2lyZWQgaW50byB0aGUgcHJvamVjdCdzXG4gKiBgaW5zdGFsbGAvYGluc3RhbGw6Y2lgIHRhc2tzIGFuZCBydW5zIGF1dG9tYXRpY2FsbHkgb24gZXZlcnkgaW5zdGFsbCxcbiAqIGd1YXJkZWQgc28gaXQncyBhIHNpbGVudCBuby1vcCBvbiBhIG1hY2hpbmUgd2l0aG91dCBgc3dhbXBgIG9uIFBBVEggKGUuZy5cbiAqIENJKS4gVGhlIGV4dGVuc2lvbiBwdWxscyBhbmQgdmF1bHQgY3JlYXRpb24gYXJlIG9uZS10aW1lLCBub3QgaWRlbXBvdGVudFxuICogaW4gYSB3YXkgdGhhdCdzIHNhZmUgdG8gcmVwZWF0IG9uIGV2ZXJ5IGluc3RhbGwsIHNvIHRoZXkgc3RheSBpbiB0aGVcbiAqIGBzd2FtcDpib290c3RyYXBgIHRhc2sgdGhpcyBjb25zdHJ1Y3QgYWRkcy4gT25seSBleG1hbidzIG93biBhdXRob3JlZFxuICogY29uZmlnICh0aGUgZmFjdG9yeSdzIHN0YXRlIG1hY2hpbmUsIHRoZSBhcmNoaXRlY3R1cmUtcnVsZSBlbmdpbmUsIHRoZVxuICogYXR0ZXN0YXRpb24gbWVjaGFuaXNtLCB0aGUgT3BlblNwZWMgdGFzay1jb21wbGV0aW9uIGdhdGUsIGFuZCB0aGUgMyBzd2FtcFxuICogd29ya2Zsb3dzIHRoYXQgd2lyZSB0aGVtIHRvZ2V0aGVyKSBpcyB0ZW1wbGF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZUZhY3RvcnlGaWxlcyB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBTb2Z0d2FyZUZhY3RvcnlGaWxlc09wdGlvbnMpIHtcbiAgICBjb25zdCB7IHJlcG9OYW1lLCBhY3Rpb25WZXJzaW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBnaXRodWJPd25lciA9IG9wdGlvbnMuZ2l0aHViT3duZXIgfHwgREVGQVVMVF9HSVRIVUJfT1dORVI7XG4gICAgY29uc3QgYmFzZUJyYW5jaCA9IG9wdGlvbnMuYmFzZUJyYW5jaCB8fCAnbWFpbic7XG4gICAgY29uc3Qgc2VjcmV0c1ZhdWx0ID0gYCR7cmVwb05hbWV9LXNlY3JldHNgO1xuICAgIC8vIEEgc2luZ2xlIHJlZGlyZWN0IG9ubHk6IHByb2plbidzIGJ1aWx0LWluIGNyb3NzLXBsYXRmb3JtIHRhc2sgc2hlbGxcbiAgICAvLyAoZGF4KSByZWplY3RzIGEgY29tbWFuZCB3aXRoIG1vcmUgdGhhbiBvbmUgcmVkaXJlY3QgKGUuZy4gY29tYmluaW5nXG4gICAgLy8gYD4vZGV2L251bGxgIHdpdGggYDI+JjFgKSB3aXRoIFwiTXVsdGlwbGUgcmVkaXJlY3RzIGFyZSBjdXJyZW50bHkgbm90XG4gICAgLy8gc3VwcG9ydGVkXCIg4oCUIGNvbmZpcm1lZCBieSBkb2dmb29kaW5nIHRoaXMgY29uc3RydWN0IG9uIHRoaXMgdmVyeSByZXBvLlxuICAgIGNvbnN0IHN3YW1wSW5pdFN0ZXAgPSAnY29tbWFuZCAtdiBzd2FtcCA+L2Rldi9udWxsICYmIHN3YW1wIGluaXQgLS10b29sIGNsYXVkZSB8fCB0cnVlJztcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlNb2RlbHMocHJvamVjdCwge1xuICAgICAgcmVwb05hbWUsXG4gICAgICBnaXRodWJPd25lcixcbiAgICAgIGJhc2VCcmFuY2gsXG4gICAgfSk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5QXJjaGl0ZWN0dXJlUnVsZXMocHJvamVjdCk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24ocHJvamVjdCwgeyByZXBvTmFtZSB9KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlPcGVuU3BlY0dhdGVzKHByb2plY3QpO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyhwcm9qZWN0LCB7IHJlcG9OYW1lLCBhY3Rpb25WZXJzaW9ucyB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygndmFsaWRhdGU6YXJjaGl0ZWN0dXJlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGFyY2hpdGVjdHVyZSBydWxlIHJlZ2lzdHJ5IChhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbikgYWdhaW5zdCB0aGUgcmVwbycsXG4gICAgICBleGVjOiAndHMtbm9kZSAtLXByb2plY3QgYXJjaGl0ZWN0dXJlLXJ1bGVzL3RzY29uZmlnLmpzb24gYXJjaGl0ZWN0dXJlLXJ1bGVzL2NoZWNrLnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnb3BlbnNwZWM6Y2hlY2stdGFza3MtY29tcGxldGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZhaWwgdW5sZXNzIGV2ZXJ5IHRhc2sgaW4gdGhlIG5hbWVkIE9wZW5TcGVjIGNoYW5nZSBpcyBjb21wbGV0ZSAodXNhZ2U6IC0tIDxjaGFuZ2Utc2x1Zz4pJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBvcGVuc3BlYy1nYXRlcy90c2NvbmZpZy5qc29uIG9wZW5zcGVjLWdhdGVzL2NoZWNrLXRhc2tzLWNvbXBsZXRlLnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdhdHRlc3RhdGlvbjptYW5pZmVzdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgU0hBMjU2IGNoZWNrc3VtcyBvZiB0aGUgZmlsZXMgYSBQUiBhdHRlc3RhdGlvbiBpcyB2ZXJpZmllZCBhZ2FpbnN0IChzZWUgYXR0ZXN0YXRpb24vbWFuaWZlc3QudHMpJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBhdHRlc3RhdGlvbi90c2NvbmZpZy5qc29uIGF0dGVzdGF0aW9uL21hbmlmZXN0LnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnYXR0ZXN0YXRpb246dmVyaWZ5Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdWZXJpZnkgYSBQUlxcJ3MgZW1iZWRkZWQgYXR0ZXN0YXRpb24tbWFuaWZlc3QgYWdhaW5zdCB0aGUgY3VycmVudCBjaGVja291dCAodXNhZ2U6IC0tIC0tYm9keS1maWxlIDxwYXRoPiAtLWNvbW1pdCA8c2hhPiknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IGF0dGVzdGF0aW9uL3RzY29uZmlnLmpzb24gYXR0ZXN0YXRpb24vdmVyaWZ5LnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdzd2FtcDpib290c3RyYXAnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ09uZS10aW1lIHNldHVwOiBwdWxsIHRoZSBzb2Z0d2FyZS1mYWN0b3J5L2dpdGh1YiBleHRlbnNpb25zIGFuZCBjcmVhdGUgdGhlIHNlY3JldHMgdmF1bHQgKHN3YW1wIGluaXQgaXRzZWxmIGFscmVhZHkgcnVucyBvbiBldmVyeSBpbnN0YWxsKScsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IGV4ZWM6ICdzd2FtcCBleHRlbnNpb24gcHVsbCBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeScgfSxcbiAgICAgICAgeyBleGVjOiAnc3dhbXAgZXh0ZW5zaW9uIHB1bGwgQHdlYmZyYW1wL2dpdGh1YicgfSxcbiAgICAgICAgeyBleGVjOiAnc3dhbXAgZXh0ZW5zaW9uIHB1bGwgQGdvb2RjcmFmdC9naXRodWInIH0sXG4gICAgICAgIHsgZXhlYzogYHN3YW1wIHZhdWx0IGNyZWF0ZSBsb2NhbF9lbmNyeXB0aW9uICR7c2VjcmV0c1ZhdWx0fWAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6IGBlY2hvIFwiTmV4dDogc3dhbXAgdmF1bHQgcHV0ICR7c2VjcmV0c1ZhdWx0fSBHSVRIVUJfVE9LRU4gLS1yZWZyZXNoLWZyb20gJ2doIGF1dGggdG9rZW4nXCJgLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIGBzd2FtcCBpbml0YCBpcyBzYWZlIHRvIHJlLXJ1biAoaWRlbXBvdGVudCB3aGVuIGFscmVhZHkgaW5pdGlhbGl6ZWQpLFxuICAgIC8vIHNvIGV2ZXJ5IGluc3RhbGwga2VlcHMgdGhlIHJlcG8gaW5pdGlhbGl6ZWQgd2l0aG91dCBhIHNlcGFyYXRlIG1hbnVhbFxuICAgIC8vIHN0ZXAg4oCUIGluY2x1ZGluZyBvbiBhIGZyZXNoIGNsb25lIHRoYXQgaGFzbid0IHJ1biBzd2FtcDpib290c3RyYXAgeWV0LlxuICAgIHByb2plY3QucGFja2FnZS5pbnN0YWxsVGFzay5leGVjKHN3YW1wSW5pdFN0ZXApO1xuICAgIHByb2plY3QucGFja2FnZS5pbnN0YWxsQ2lUYXNrLmV4ZWMoc3dhbXBJbml0U3RlcCk7XG5cbiAgICAvLyBNaXJyb3JzIHRoZSBwYXR0ZXJucyBgc3dhbXAgaW5pdGAgaXRzZWxmIHdvdWxkIGFwcGVuZCB0byAuZ2l0aWdub3JlLlxuICAgIC8vIHByb2plbidzIElnbm9yZUZpbGUgZnVsbHkgcmVnZW5lcmF0ZXMgLmdpdGlnbm9yZSBmcm9tIGl0cyBvd24gdHJhY2tlZFxuICAgIC8vIGVudHJpZXMgb24gZXZlcnkgc3ludGgsIHNvIGFueXRoaW5nIGBzd2FtcCBpbml0YCBhcHBlbmRzIG91dC1vZi1iYW5kXG4gICAgLy8gZ2V0cyBzaWxlbnRseSB3aXBlZCBieSB0aGUgbmV4dCBgbnB4IHByb2plbmAgcnVuIChjYXVnaHQgYnkgQ0knc1xuICAgIC8vIHNlbGYtbXV0YXRpb24gY2hlY2spIHVubGVzcyBpdCdzIGFsc28gYWRkZWQgaGVyZS5cbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLnN3YW1wLycpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuc3dhbXAtc291cmNlcy55YW1sJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvd29ya3RyZWVzLycpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3NldHRpbmdzLmxvY2FsLmpzb24nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zY2hlZHVsZWRfdGFza3MubG9jaycpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3NjaGVkdWxlZF90YXNrcy5qc29uJyk7XG4gIH1cbn1cbiJdfQ==
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
7
7
  const utils_1 = require("./utils");
8
8
  const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
9
9
  class StagingDeployWorkflow extends projen_1.YamlFile {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.21.4" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.22.0" };
11
11
  constructor(project, options) {
12
12
  const packageManager = project.package.packageManager;
13
13
  const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
@@ -39,7 +39,7 @@ const fs = __importStar(require("fs"));
39
39
  const path = __importStar(require("path"));
40
40
  const projen_1 = require("projen");
41
41
  class WorkflowAutoDiscover extends projen_1.Component {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.WorkflowAutoDiscover", version: "1.21.4" };
42
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.WorkflowAutoDiscover", version: "1.22.0" };
43
43
  constructor(project) {
44
44
  super(project);
45
45
  }
@@ -0,0 +1,2 @@
1
+ schema: spec-driven
2
+ created: 2026-09-09
@@ -0,0 +1,47 @@
1
+ ## Context
2
+
3
+ `PrDeployWorkflow` (`.github/workflows/pr-deploy.yml`) and `PrCleanupWorkflow` (`.github/workflows/pr-cleanup.yml`) are two independent `YamlFile` constructs, each hand-authored as a literal `obj:` in `projen/src/PrDeployWorkflow.ts` and `projen/src/PrCleanupWorkflow.ts`. Both are instantiated together in every Batman app via `Application.ts`. `pr-deploy` runs on `pull_request: [opened, synchronize, reopened]` and deploys the PR's stack (`cdk deploy`); `pr-cleanup` runs on `pull_request: [closed]` and tears the same stack down (`aws cloudformation delete-stack` + wait). Neither declares a `concurrency` block, so GitHub Actions runs them in parallel with no ordering guarantee. Issue #87 documents a concrete incident: a PR was closed while its 59-resource stack was still creating, `pr-cleanup`'s delete raced the in-flight create, and the stack ended up `DELETE_FAILED` with an orphaned bucket.
4
+
5
+ `ProjenWorkflowHardening.ts` establishes the precedent for this class of fix: workflows projen generates on its own get patched externally via `JsonPatch`, but hand-authored workflows like these two are edited directly in their source `obj:` literal. This change follows that same convention.
6
+
7
+ ## Goals / Non-Goals
8
+
9
+ **Goals:**
10
+ - Guarantee `pr-deploy` and `pr-cleanup` never execute concurrently against the same PR's stack.
11
+ - Prefer queuing over cancellation: a run that has to wait should wait, not get killed mid-`cdk deploy`/mid-delete, since a cancelled deploy can leave CloudFormation in `UPDATE_IN_PROGRESS` and break the next run.
12
+ - Keep the group key identical between the two workflows so they queue against each other, not just against themselves.
13
+
14
+ **Non-Goals:**
15
+ - Recovering a stack already stuck in `DELETE_FAILED`/`ROLLBACK_COMPLETE` (issue #87's "Fix 2"). That requires a separate spike to pick between reaper-style detection-and-repair and `--no-rollback` on PR-stack deploys, and is tracked as follow-up work, not this change.
16
+ - Changing what `pr-deploy`/`pr-cleanup` each do once it's their turn to run — this change only affects *when* they're allowed to start.
17
+ - Deduplicating/redesigning the two workflows' trigger conditions or stack-naming logic (companion issue #88).
18
+
19
+ ## Decisions
20
+
21
+ **Concurrency group key: `pr-stack-${{ github.event.pull_request.number }}`, identical in both workflows.**
22
+ The PR number is the natural join key — it's the one thing both workflows compute their stack identity from (via the PR's branch name), and it's available on the `pull_request` event both workflows already trigger on. A key scoped to the workflow name (GitHub's default when `concurrency.group` is omitted) would only serialize `pr-deploy` runs against each other and `pr-cleanup` runs against each other — it would *not* prevent the race between the two workflows, which is the actual bug. The group must be textually identical in both files for GitHub to treat them as the same queue.
23
+
24
+ **`cancel-in-progress: false` in both workflows.**
25
+ Alternative considered: `cancel-in-progress: true`, which is the more common concurrency-group pattern (e.g. superseding stale CI runs on new pushes). Rejected here because cancelling a `pr-deploy` run mid-`cdk deploy` leaves CloudFormation in `UPDATE_IN_PROGRESS`/`CREATE_IN_PROGRESS`, which fails the *next* deploy attempt against that stack — trading one class of race for another. Queuing (`false`) means a `pr-cleanup` triggered while `pr-deploy` is running simply waits for it to finish, then deletes the now-complete stack; a `pr-deploy` triggered while a prior `pr-deploy` is still running (e.g. rapid pushes) waits its turn instead of double-deploying.
26
+
27
+ **Edit the two `YamlFile` `obj:` literals directly, not a shared external patch.**
28
+ Alternative considered: a `ProjenWorkflowHardening`-style helper that patches `concurrency` onto both workflows post-construction. Rejected because both workflows are already hand-authored in this package (unlike the projen-builtin workflows `ProjenWorkflowHardening` targets), so there's no `JsonPatch`-vs-source-edit tension to resolve — adding a two-line `concurrency` key next to each `obj:`'s existing `name`/`on`/`permissions` keys is simpler and keeps the workflow's full shape in one place.
29
+
30
+ ## Risks / Trade-offs
31
+
32
+ - [A PR merge/close event and a fast-follow `pr-deploy` push (e.g. re-opening) could still queue for a while if a prior run is slow] → Acceptable: queuing bounds this to "wait", never "corrupt state"; GitHub Actions queue depth for a single PR is small in practice.
33
+ - [Non-`pull_request`-number contexts, if a workflow is ever re-triggered via `workflow_dispatch` or similar, would evaluate `github.event.pull_request.number` as empty and could collide group keys across PRs] → Out of scope: both workflows currently only trigger on `pull_request` events, so this doesn't apply today; flag it if either workflow's `on:` trigger ever expands.
34
+ - [This change doesn't fix `DELETE_FAILED` stacks that already exist from prior races] → Those are cleaned up manually per issue #87; this change only prevents new occurrences.
35
+
36
+ ## Migration Plan
37
+
38
+ 1. Add `concurrency` to `PrDeployWorkflow`'s and `PrCleanupWorkflow`'s generated `obj:`.
39
+ 2. Add/update unit tests asserting both workflows render the same `concurrency.group` string.
40
+ 3. Run `npx projen` in this package to confirm no other synthesized output changes unexpectedly.
41
+ 4. Downstream consumers (e.g. `exman`) pick up the fix the next time they bump this package version and re-run projen synth, regenerating `.github/workflows/pr-deploy.yml` / `pr-cleanup.yml` with the new `concurrency` block. No manual migration step needed beyond the normal dependency bump.
42
+
43
+ No rollback concerns: removing the `concurrency` block is a pure revert with no state to unwind.
44
+
45
+ ## Open Questions
46
+
47
+ None — issue #87's own investigation already resolved the "queue vs. cancel" question (`cancel-in-progress: false`) and identified the exact group key needed.
@@ -0,0 +1,27 @@
1
+ ## Why
2
+
3
+ `PrDeployWorkflow` and `PrCleanupWorkflow` generate independent GitHub Actions workflows that both operate on the same CloudFormation stack (`pr-deploy` creates/updates it, `pr-cleanup` deletes it) but declare no `concurrency` block. When a PR is closed while its deploy is still in flight, `pr-cleanup` issues `aws cloudformation delete-stack` against a stack that is mid-`CREATE_IN_PROGRESS`. On 2026-09-03 this raced a 59-resource stack, cancelled the create, failed the rollback, and left the stack `DELETE_FAILED` with an orphaned S3 bucket requiring manual cleanup (see issue #87). This affects every generated Batman app, and 2 of 12 `pr-cleanup` runs failed that same day, consistent with this being a recurring class of failure rather than a one-off.
4
+
5
+ ## What Changes
6
+
7
+ - Add a `concurrency` block to `PrDeployWorkflow`'s generated `pr-deploy.yml`, keyed on the PR number.
8
+ - Add the identical `concurrency` block to `PrCleanupWorkflow`'s generated `pr-cleanup.yml`, keyed on the same PR-number-derived group name.
9
+ - Use `cancel-in-progress: false` on both so a queued run waits for the in-flight run to finish rather than being cancelled mid-`cdk deploy` (which would abandon CloudFormation in `UPDATE_IN_PROGRESS` and break the next deploy).
10
+ - Regenerate/synth downstream projects (e.g. `exman`) so the emitted workflow YAML picks up the new `concurrency` block.
11
+
12
+ Out of scope: the `DELETE_FAILED`/orphaned-bucket recovery path described as "Fix 2" in issue #87 (detecting and repairing `DELETE_FAILED`/`ROLLBACK_COMPLETE` stacks, or `--no-rollback` for PR-stack deploys). The issue itself notes neither option is settled yet and calls for a separate spike; queuing via `concurrency` prevents the race that causes `DELETE_FAILED` in the first place, so it is not required to close this change.
13
+
14
+ ## Capabilities
15
+
16
+ ### New Capabilities
17
+ - `pr-workflow-concurrency`: Generated `pr-deploy.yml` and `pr-cleanup.yml` workflows share a concurrency group so that a stack delete triggered by closing a PR is queued behind, rather than raced against, an in-flight deploy of the same stack.
18
+
19
+ ### Modified Capabilities
20
+ (none — no existing specs cover PR deploy/cleanup workflow generation)
21
+
22
+ ## Impact
23
+
24
+ - `projen/src/PrDeployWorkflow.ts` — add `concurrency` to the generated workflow object.
25
+ - `projen/src/PrCleanupWorkflow.ts` — add matching `concurrency` to the generated workflow object.
26
+ - `projen/src/BatmanProject.test.ts` (or equivalent) — add coverage asserting both workflows emit the same concurrency group.
27
+ - Any downstream project generated from these projen constructs (e.g. `exman`) needs to re-run projen synth to regenerate `.github/workflows/pr-deploy.yml` and `.github/workflows/pr-cleanup.yml` with the fix.
@@ -0,0 +1,23 @@
1
+ ## ADDED Requirements
2
+
3
+ ### Requirement: Shared concurrency group across PR deploy and cleanup workflows
4
+ The generated `pr-deploy.yml` and `pr-cleanup.yml` workflows SHALL each declare a top-level `concurrency.group` keyed on the pull request number (`pr-stack-${{ github.event.pull_request.number }}`), and the group value SHALL be identical text in both files, so that GitHub Actions serializes runs of the two workflows against the same PR into a single queue.
5
+
6
+ #### Scenario: pr-cleanup triggered while pr-deploy is still running
7
+ - **WHEN** a PR is closed while its `pr-deploy` run for that same PR is still in progress
8
+ - **THEN** the `pr-cleanup` run for that PR does not start until the in-progress `pr-deploy` run for that PR finishes
9
+
10
+ #### Scenario: Concurrent pr-deploy runs on the same PR
11
+ - **WHEN** two `pr-deploy` runs are triggered for the same PR in close succession (e.g. rapid pushes)
12
+ - **THEN** the second run queues behind the first rather than executing `cdk deploy` concurrently against the same stack
13
+
14
+ #### Scenario: Group keys match between workflows
15
+ - **WHEN** the generated `pr-deploy.yml` and `pr-cleanup.yml` are compared for a given PR event
16
+ - **THEN** their `concurrency.group` values evaluate to the same string, so GitHub Actions treats them as the same queue
17
+
18
+ ### Requirement: Queue instead of cancel in-flight runs
19
+ Both `pr-deploy.yml` and `pr-cleanup.yml` SHALL set `concurrency.cancel-in-progress: false`, so that a queued run waits for the currently running workflow to finish instead of being cancelled mid-execution.
20
+
21
+ #### Scenario: Queued run does not cancel an in-flight deploy
22
+ - **WHEN** `pr-cleanup` is queued behind a running `pr-deploy` for the same PR
23
+ - **THEN** the running `pr-deploy` job is allowed to run to completion (success or failure) rather than being cancelled by GitHub Actions
@@ -0,0 +1,15 @@
1
+ ## 1. Add concurrency block to generated workflows
2
+
3
+ - [x] 1.1 In `src/PrDeployWorkflow.ts`, add `concurrency: { group: 'pr-stack-${{ github.event.pull_request.number }}', 'cancel-in-progress': false }` to the generated `obj:` (alongside `name`, `on`, `permissions`).
4
+ - [x] 1.2 In `src/PrCleanupWorkflow.ts`, add the identical `concurrency` block to its generated `obj:`.
5
+
6
+ ## 2. Test coverage
7
+
8
+ - [x] 2.1 In `test/DeployWorkflows.test.ts`, add a test (or extend an existing one) asserting `pr-deploy.yml` and `pr-cleanup.yml` both render `concurrency.group: pr-stack-${{ github.event.pull_request.number }}` and `concurrency.cancel-in-progress: false`.
9
+ - [x] 2.2 Add an assertion that the two workflows' `concurrency.group` values are textually identical, so the test fails if they ever drift apart.
10
+ - [x] 2.3 Update `test/__snapshots__/DeployWorkflows.test.ts.snap` (and any other snapshots covering `pr-deploy.yml`/`pr-cleanup.yml`, e.g. `BatmanProject.test.ts.snap`, `BootcampProject.test.ts.snap`) by running the test suite with snapshot update, then review the diff for correctness before committing.
11
+
12
+ ## 3. Verify
13
+
14
+ - [x] 3.1 Run the full `projen`/build test suite and confirm it passes with the updated snapshots.
15
+ - [x] 3.2 Run `npx projen` in this package to confirm no unrelated synthesized output changes.
package/package.json CHANGED
@@ -49,7 +49,7 @@
49
49
  "main": "lib/index.js",
50
50
  "license": "Apache-2.0",
51
51
  "stability": "stable",
52
- "version": "1.21.4",
52
+ "version": "1.22.0",
53
53
  "jest": {
54
54
  "coverageProvider": "v8",
55
55
  "testMatch": [