@macedon-technologies/batman 1.5.2 → 1.6.1
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 +2 -2
- package/README.md +1 -1
- package/lib/BatmanProject.js +134 -2
- package/lib/CodeOwnersFile.js +1 -1
- package/lib/ProductionDeployWorkflow.js +1 -1
- package/lib/StagingDeployWorkflow.js +1 -1
- package/lib/ViteReactProject.js +7 -13
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -731,6 +731,6 @@
|
|
|
731
731
|
"symbolId": "src/StagingDeployWorkflow:StagingDeployWorkflowOptions"
|
|
732
732
|
}
|
|
733
733
|
},
|
|
734
|
-
"version": "1.
|
|
735
|
-
"fingerprint": "
|
|
734
|
+
"version": "1.6.1",
|
|
735
|
+
"fingerprint": "+7f5jNEBAgArFWgEI/fne+4okjya2W4EQurPMnTFONg="
|
|
736
736
|
}
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ The BatmanProject generates:
|
|
|
18
18
|
- **React Application** - Modern React app with TypeScript
|
|
19
19
|
- **Clerk Authentication** - Integrated user authentication and management
|
|
20
20
|
|
|
21
|
-
### Backend/Infrastructure
|
|
21
|
+
### Backend/Infrastructure
|
|
22
22
|
- **AWS Infrastructure** - CDK-based cloud resources
|
|
23
23
|
- **API Gateway** - RESTful API endpoints
|
|
24
24
|
- **Lambda Functions** - Serverless compute
|
package/lib/BatmanProject.js
CHANGED
|
@@ -64,6 +64,138 @@ class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
|
64
64
|
}),
|
|
65
65
|
},
|
|
66
66
|
},
|
|
67
|
+
readme: {
|
|
68
|
+
contents: [
|
|
69
|
+
`# ${options.name}`,
|
|
70
|
+
'',
|
|
71
|
+
'This project was bootstrapped with [Batman](https://github.com/macedon-technologies/platform-common).',
|
|
72
|
+
'',
|
|
73
|
+
'## What Batman Created',
|
|
74
|
+
'',
|
|
75
|
+
'### CDK Infrastructure (`src/`)',
|
|
76
|
+
'',
|
|
77
|
+
'| File | Description |',
|
|
78
|
+
'|------|-------------|',
|
|
79
|
+
'| `src/main.ts` | CDK app entry point — instantiates dev, staging, and prod `ApplicationStack`s |',
|
|
80
|
+
'| `src/LocalDevApp.ts` | Local development CDK app — used by `yarn cdk:dev` |',
|
|
81
|
+
'| `src/GitHubRoles.ts` | CDK app for deploying the GitHub OIDC IAM role (one-time bootstrap) |',
|
|
82
|
+
'| `src/stacks/ApplicationStack.ts` | Your primary stack — extend it to add resources |',
|
|
83
|
+
'| `src/stacks/BaseApplicationStack.ts` | Base stack with VPC, API, static website, Datadog, and Route 53 wired up |',
|
|
84
|
+
'| `src/stacks/GitHubRolesStack.ts` | IAM role stack for GitHub Actions OIDC authentication |',
|
|
85
|
+
'| `src/constructs/Api.ts` | API Gateway + Lambda construct with Clerk JWT authorizer |',
|
|
86
|
+
'| `src/constructs/StaticWebsite.ts` | CloudFront + S3 + ACM + Route 53 construct |',
|
|
87
|
+
'| `src/constructs/handler/Api.Function.ts` | Lambda handler entry point |',
|
|
88
|
+
'| `src/aspects/DataDogAspect.ts` | CDK aspect that wires all Lambda functions to Datadog |',
|
|
89
|
+
'',
|
|
90
|
+
'### Frontend (`web/`)',
|
|
91
|
+
'',
|
|
92
|
+
'| File | Description |',
|
|
93
|
+
'|------|-------------|',
|
|
94
|
+
'| `web/src/main.tsx` | React app entry point with Clerk and React Query providers |',
|
|
95
|
+
'| `web/src/App.tsx` | Root application component |',
|
|
96
|
+
'| `web/src/App.css` / `web/src/index.css` | Base stylesheets (Tailwind CSS v4) |',
|
|
97
|
+
'| `web/src/config.ts` | `useConfig()` hook — loads runtime config from `config.json` |',
|
|
98
|
+
'| `web/src/services/BaseService.ts` | `useBaseQuery()` — authenticated API fetch hook |',
|
|
99
|
+
'| `web/src/services/RootService.ts` | Example service using `useBaseQuery` |',
|
|
100
|
+
'| `web/public/config.json` | Runtime config (API base URL, Clerk publishable key) |',
|
|
101
|
+
'',
|
|
102
|
+
'### GitHub Actions Workflows (`.github/workflows/`)',
|
|
103
|
+
'',
|
|
104
|
+
'| File | Trigger |',
|
|
105
|
+
'|------|---------|',
|
|
106
|
+
'| `pr-deploy.yml` | On pull request open/update — deploys a per-PR dev stack |',
|
|
107
|
+
'| `pr-cleanup.yml` | On pull request close — tears down the per-PR dev stack |',
|
|
108
|
+
'| `staging-deploy.yml` | On push to `main` — deploys to staging |',
|
|
109
|
+
'| `production-deploy.yml` | Manually triggered — deploys to production |',
|
|
110
|
+
'',
|
|
111
|
+
'---',
|
|
112
|
+
'',
|
|
113
|
+
'## Files You Can Edit',
|
|
114
|
+
'',
|
|
115
|
+
'These files are generated once and never overwritten by Batman. Modify them freely.',
|
|
116
|
+
'',
|
|
117
|
+
'| File | What to do with it |',
|
|
118
|
+
'|------|--------------------|',
|
|
119
|
+
'| `src/stacks/ApplicationStack.ts` | **Start here.** Add CDK constructs to build your infrastructure |',
|
|
120
|
+
'| `src/constructs/Api.ts` | Extend the API — add Lambda integrations, routes, or override methods |',
|
|
121
|
+
'| `src/constructs/StaticWebsite.ts` | Customize CloudFront behaviors, S3 settings, or deployment options |',
|
|
122
|
+
'| `src/constructs/handler/Api.Function.ts` | Implement your Lambda handler logic |',
|
|
123
|
+
'| `src/stacks/GitHubRolesStack.ts` | Add IAM permissions needed by GitHub Actions |',
|
|
124
|
+
'| `src/main.ts` | Adjust stack instantiation or add additional stacks |',
|
|
125
|
+
'| `web/src/App.tsx` | Build your UI here |',
|
|
126
|
+
'| `web/src/App.css` / `web/src/index.css` | Style your application |',
|
|
127
|
+
'| `web/src/main.tsx` | Adjust top-level providers or routing |',
|
|
128
|
+
'| `web/src/services/RootService.ts` | Add or replace API service hooks |',
|
|
129
|
+
'| `web/public/config.json` | Update for local development (API URL, Clerk key) |',
|
|
130
|
+
'',
|
|
131
|
+
'## Files You Cannot Edit',
|
|
132
|
+
'',
|
|
133
|
+
'These files are **managed by Batman** and will be overwritten every time `npx projen` runs. Do not edit them directly — make changes in `.projenrc.ts` instead.',
|
|
134
|
+
'',
|
|
135
|
+
'> [!IMPORTANT]',
|
|
136
|
+
'> If you have ANY changes you want to make to these files, notify #team-batman on Slack. ',
|
|
137
|
+
'> We maintain these files as part of the core Batman experience, and your feedback is crucial to ensure they meet your needs.',
|
|
138
|
+
'',
|
|
139
|
+
'| File | Why it\'s managed |',
|
|
140
|
+
'|------|-----------------|',
|
|
141
|
+
'| `src/stacks/BaseApplicationStack.ts` | Core stack wiring — updated with Batman releases |',
|
|
142
|
+
'| `src/aspects/DataDogAspect.ts` | Datadog CDK aspect |',
|
|
143
|
+
'| `web/vite.config.ts` | Vite configuration |',
|
|
144
|
+
'| `web/eslint.config.js` | ESLint configuration |',
|
|
145
|
+
'| `web/postcss.config.js` | PostCSS / Tailwind configuration |',
|
|
146
|
+
'| `web/index.html` | HTML entry point |',
|
|
147
|
+
'| `web/tsconfig.json` / `web/tsconfig.app.json` / `web/tsconfig.node.json` | TypeScript configuration |',
|
|
148
|
+
'| `web/src/vite-env.d.ts` | Vite type declarations |',
|
|
149
|
+
'| `web/src/config.ts` | Runtime config hook — shape driven by `.projenrc.ts` |',
|
|
150
|
+
'| `web/src/services/BaseService.ts` | Base authenticated fetch hook |',
|
|
151
|
+
'| `.github/CODEOWNERS` | Code ownership policy |',
|
|
152
|
+
'| `.github/workflows/*.yml` | All CI/CD workflows |',
|
|
153
|
+
'',
|
|
154
|
+
'> **Tip:** Files with a `~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". ~~` header are managed files.',
|
|
155
|
+
'',
|
|
156
|
+
'---',
|
|
157
|
+
'',
|
|
158
|
+
'## Where to Start',
|
|
159
|
+
'',
|
|
160
|
+
'1. **`src/stacks/ApplicationStack.ts`** — Add your CDK constructs here. The base stack already provides `this.api`, `this.vpc`, `this.hostedZone`, and `this.datadog` as protected properties.',
|
|
161
|
+
'',
|
|
162
|
+
'2. **`web/`** — Build your frontend. Start with `web/src/App.tsx` and add services alongside `web/src/services/RootService.ts`.',
|
|
163
|
+
'',
|
|
164
|
+
'3. **`src/constructs/handler/Api.Function.ts`** — Implement your backend Lambda handler logic here.',
|
|
165
|
+
'',
|
|
166
|
+
'---',
|
|
167
|
+
'',
|
|
168
|
+
'## Development Workflow',
|
|
169
|
+
'',
|
|
170
|
+
'```bash',
|
|
171
|
+
'# Install dependencies',
|
|
172
|
+
'yarn install',
|
|
173
|
+
'',
|
|
174
|
+
'# Start local dev server (backend Lambda + Vite frontend in parallel)',
|
|
175
|
+
'yarn dev',
|
|
176
|
+
'',
|
|
177
|
+
'# Deploy a personal dev stack to AWS',
|
|
178
|
+
'yarn cdk:dev --context local-dev-prefix=your-handle deploy',
|
|
179
|
+
'',
|
|
180
|
+
'# Run tests',
|
|
181
|
+
'yarn test',
|
|
182
|
+
'',
|
|
183
|
+
'# Re-synthesize project files after editing .projenrc.ts',
|
|
184
|
+
'npx projen',
|
|
185
|
+
'```',
|
|
186
|
+
'',
|
|
187
|
+
'---',
|
|
188
|
+
'',
|
|
189
|
+
'## Upgrading Batman',
|
|
190
|
+
'',
|
|
191
|
+
'```bash',
|
|
192
|
+
'yarn add @macedon-technologies/batman@latest',
|
|
193
|
+
'npx projen',
|
|
194
|
+
'```',
|
|
195
|
+
'',
|
|
196
|
+
'This updates all managed files to the latest Batman standards. Your editable sample files are never touched.',
|
|
197
|
+
].join('\n'),
|
|
198
|
+
},
|
|
67
199
|
});
|
|
68
200
|
// Create standard project files
|
|
69
201
|
const PRIMARY_ACCOUNT = '015955817263';
|
|
@@ -112,5 +244,5 @@ class BatmanProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
|
112
244
|
}
|
|
113
245
|
exports.BatmanProject = BatmanProject;
|
|
114
246
|
_a = JSII_RTTI_SYMBOL_1;
|
|
115
|
-
BatmanProject[_a] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0bWFuUHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXRtYW5Qcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQW9GO0FBQ3BGLDhDQUFzRDtBQUN0RCwrQ0FBMEU7QUFDMUUscURBQWtEO0FBQ2xELDJEQUF3RDtBQUN4RCx1REFBb0Q7QUFDcEQseURBQXNEO0FBK0J0RCxNQUFhLGFBQWMsU0FBUSw0QkFBbUI7SUFDcEQsWUFBWSxPQUE2QjtRQUN2QyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQzNDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNO1lBQzVELElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUUsS0FBSztZQUNwQixJQUFJLEVBQUU7Z0JBQ0osbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLFdBQVc7Z0JBQ1gsSUFBSTtnQkFDSixxQkFBcUI7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsMkJBQTJCO2dCQUMzQiwwQkFBMEI7Z0JBQzFCLG1DQUFtQztnQkFDbkMsY0FBYztnQkFDZCxpQ0FBaUM7Z0JBQ2pDLFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQixHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRTthQUN0QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxxQkFBcUI7Z0JBQ3JCLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxxQ0FBcUM7Z0JBQ3JDLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFO2FBQ3pCO1lBQ0QsU0FBUyxFQUFFO2dCQUNULG1EQUFtRDtnQkFDbkQsY0FBYztnQkFDZCxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTthQUMzQjtZQUNELFFBQVEsRUFBRTtnQkFDUixHQUFHLE9BQU8sQ0FBQyxRQUFRO2dCQUNuQixlQUFlLEVBQUU7b0JBQ2YsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLGVBQWU7b0JBQ3BDLGVBQWUsRUFBRSxJQUFJO29CQUNyQiwwQkFBMEIsRUFBRSxJQUFJO2lCQUNqQzthQUNGO1lBQ0QsVUFBVSxFQUFFLEtBQUs7WUFDakIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSTtZQUM5QyxrQkFBa0IsRUFBRTtnQkFDbEIsZUFBZSxFQUFFO29CQUNmLGlCQUFpQixFQUFFLDBCQUFpQixDQUFDLHVCQUF1QixDQUFDO3dCQUMzRCxNQUFNLEVBQUUsY0FBYztxQkFDdkIsQ0FBQztpQkFDSDthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBR0gsZ0NBQWdDO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7UUFFbkMsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRTtZQUNwQixnQkFBZ0IsRUFBRSx3QkFBd0IsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN4RCxtQkFBbUIsRUFBRSwwREFBMEQ7WUFDL0UsR0FBRyxFQUFFO2dCQUNILEdBQUcsT0FBTyxDQUFDLEdBQUc7YUFDZjtZQUNELE9BQU8sRUFBRTtnQkFDUCxHQUFHLE9BQU8sQ0FBQyxPQUFPO2FBQ25CO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLEdBQUcsT0FBTyxDQUFDLEdBQUc7YUFDZjtZQUNELGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLGlDQUFlLENBQUMsSUFBSSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLGFBQWEsRUFBRSxjQUFjO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksK0JBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDdkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLHFDQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLE1BQU0sU0FBUyxHQUFHLElBQUksbUNBQWdCLENBQUM7WUFDckMsSUFBSSxFQUFFLEtBQUs7WUFDWCxvQkFBb0IsRUFBRSxNQUFNO1lBQzVCLE1BQU0sRUFBRSxJQUFJO1lBQ1osTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRCxTQUFTLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBYyxFQUFFLEVBQUU7WUFDekMsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNsQixJQUFJLEVBQUUsWUFBWSxDQUNoQixnRkFBZ0YsRUFDaEYsU0FBUyxDQUFDLFVBQVUsQ0FDckI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLEVBQUUsZ0ZBQWdGO1lBQ3RGLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUdMLENBQUM7O0FBakhILHNDQWtIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAsIEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuaW1wb3J0IHsgR2l0aHViQ3JlZGVudGlhbHMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbiwgQXBwbGljYXRpb25FbnZpcm9ubWVudENvbmZpZyB9IGZyb20gJy4vQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29kZU93bmVyc0ZpbGUgfSBmcm9tICcuL0NvZGVPd25lcnNGaWxlJztcbmltcG9ydCB7IERhdGFEb2dBc3BlY3RGaWxlIH0gZnJvbSAnLi9EYXRhRG9nQXNwZWN0RmlsZSc7XG5pbXBvcnQgeyBHaXRIdWJSb2xlc0ZpbGUgfSBmcm9tICcuL0dpdEh1YlJvbGVzRmlsZSc7XG5pbXBvcnQgeyBWaXRlUmVhY3RQcm9qZWN0IH0gZnJvbSAnLi9WaXRlUmVhY3RQcm9qZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBCYXRtYW5Qcm9qZWN0T3B0aW9ucyBleHRlbmRzIEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zIHtcblxuICAvKipcbiAgICogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGV2OiBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nOiBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBQcm9kdWN0aW9uIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2Q6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgdGFncyB0byBhcHBseSB0byBhbGwgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29kZSBvd25lcnMgdG8gYWRkIHRvIHRoZSBDT0RFT1dORVJTIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxDb2RlT3duZXJzPzogc3RyaW5nW107XG59XG5cblxuZXhwb3J0IGNsYXNzIEJhdG1hblByb2plY3QgZXh0ZW5kcyBBd3NDZGtUeXBlU2NyaXB0QXBwIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQmF0bWFuUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY2RrVmVyc2lvbjogb3B0aW9ucy5jZGtWZXJzaW9uIHx8ICcyLjIyNC4wJyxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBvcHRpb25zLmRlZmF1bHRSZWxlYXNlQnJhbmNoIHx8ICdtYWluJyxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG4gICAgICBidWlsZFdvcmtmbG93OiBmYWxzZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgJ0B0eXBlcy9hd3MtbGFtYmRhJyxcbiAgICAgICAgJ0B0eXBlcy9leHByZXNzJyxcbiAgICAgICAgJ0B0eXBlcy9wZycsXG4gICAgICAgICdwZycsXG4gICAgICAgICdAYXdzLXNkay9yZHMtc2lnbmVyJyxcbiAgICAgICAgJ0BtYXR0aGV3Ym9uaWcvc2VjcmV0JyxcbiAgICAgICAgJ2RhdGFkb2ctY2RrLWNvbnN0cnVjdHMtdjInLFxuICAgICAgICAnQGNka2xhYnMvYXdzLWxhbWJkYS1ydXN0JyxcbiAgICAgICAgJ0Bhd3MtbGFtYmRhLXBvd2VydG9vbHMvcGFyYW1ldGVycycsXG4gICAgICAgICdqc29ud2VidG9rZW4nLFxuICAgICAgICAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcicsXG4gICAgICAgICdleHByZXNzJyxcbiAgICAgICAgJ3NlcnZlcmxlc3MtaHR0cCcsXG4gICAgICAgIC4uLm9wdGlvbnMuZGVwcyB8fCBbXSxcbiAgICAgIF0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAdHlwZXMvanNvbndlYnRva2VuJyxcbiAgICAgICAgJ25vZGVtb24nLFxuICAgICAgICAnY29uY3VycmVudGx5JyxcbiAgICAgICAgJ0BtYWNlZG9uLXRlY2hub2xvZ2llcy9iYXRtYW5AXjEuMC4wJyxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXZEZXBzIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIGdpdGlnbm9yZTogW1xuICAgICAgICAnc3JjL2NvbnN0cnVjdHMvaGFuZGxlci9jbGVyay1hdXRob3JpemVyL3RhcmdldC8qKicsXG4gICAgICAgICcqKi8uRFNfU3RvcmUnLFxuICAgICAgICAuLi5vcHRpb25zLmdpdGlnbm9yZSB8fCBbXSxcbiAgICAgIF0sXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IG9wdGlvbnMubWluTm9kZVZlcnNpb24gfHwgJzIyJyxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oe1xuICAgICAgICAgICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cblxuICAgIC8vIENyZWF0ZSBzdGFuZGFyZCBwcm9qZWN0IGZpbGVzXG4gICAgY29uc3QgUFJJTUFSWV9BQ0NPVU5UID0gJzAxNTk1NTgxNzI2Myc7XG4gICAgY29uc3QgUFJJTUFSWV9SRUdJT04gPSAndXMtZWFzdC0xJztcblxuICAgIG5ldyBBcHBsaWNhdGlvbih0aGlzLCB7XG4gICAgICBnaXRodWJSZXBvc2l0b3J5OiBgbWFjZWRvbi10ZWNobm9sb2dpZXMvJHtvcHRpb25zLm5hbWV9YCxcbiAgICAgIGNsZXJrUHVibGlzaGFibGVLZXk6ICdwa190ZXN0X2FXNTBaVzV6WlMxc1pXVmphQzB5TWk1amJHVnlheTVoWTJOdmRXNTBjeTVrWlhZaycsXG4gICAgICBkZXY6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5kZXYsXG4gICAgICB9LFxuICAgICAgc3RhZ2luZzoge1xuICAgICAgICAuLi5vcHRpb25zLnN0YWdpbmcsXG4gICAgICB9LFxuICAgICAgcHJvZDoge1xuICAgICAgICAuLi5vcHRpb25zLmRldixcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsVGFnczogb3B0aW9ucy5hZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcblxuICAgIG5ldyBHaXRIdWJSb2xlc0ZpbGUodGhpcywge1xuICAgICAgYWNjb3VudDogUFJJTUFSWV9BQ0NPVU5ULFxuICAgICAgcHJpbWFyeVJlZ2lvbjogUFJJTUFSWV9SRUdJT04sXG4gICAgfSk7XG5cbiAgICBuZXcgQ29kZU93bmVyc0ZpbGUodGhpcywge1xuICAgICAgYWRkaXRpb25hbE93bmVyczogb3B0aW9ucy5hZGRpdGlvbmFsQ29kZU93bmVycyxcbiAgICB9KTtcblxuICAgIG5ldyBEYXRhRG9nQXNwZWN0RmlsZSh0aGlzKTtcblxuICAgIGNvbnN0IHZpdGVSZWFjdCA9IG5ldyBWaXRlUmVhY3RQcm9qZWN0KHtcbiAgICAgIG5hbWU6ICd3ZWInLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6ICdtYWluJyxcbiAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgIG91dGRpcjogJ3dlYicsXG4gICAgfSk7XG4gICAgdml0ZVJlYWN0LmFkZENvbmZpZ0ZpZWxkKCdzb21ldGhpbmcnLCAnbnVtYmVyJyk7XG4gICAgdml0ZVJlYWN0LmFkZENvbmZpZ0ZpZWxkKCdzb21ldGhpbmdFbHNlJywgJ3N0cmluZycpO1xuXG4gICAgY29uc3QgY29uY3VycmVudGx5ID0gKC4uLmFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICByZXR1cm4gYGNvbmN1cnJlbnRseSAke2FyZ3MubWFwKGEgPT4gYFwiJHthfVwiYCkuam9pbignICcpfWA7XG4gICAgfTtcblxuICAgIHRoaXMuYWRkVGFzaygnZGV2Jywge1xuICAgICAgZXhlYzogY29uY3VycmVudGx5KFxuICAgICAgICAnbm9kZW1vbiAtLXdhdGNoIC4vc3JjL2NvbnN0cnVjdHMvaGFuZGxlciAtLXdhdGNoIC4vbG9jYWwvZGV2LnRzIC4vbG9jYWwvZGV2LnRzJyxcbiAgICAgICAgdml0ZVJlYWN0LmRldkNvbW1hbmQsXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdjZGs6ZGV2Jywge1xuICAgICAgZXhlYzogJ3lhcm4gY2RrIC1hIFwibnB4IHRzLW5vZGUgLVAgdHNjb25maWcuanNvbiAtLXByZWZlci10cy1leHRzIHNyYy9Mb2NhbERldkFwcC50c1wiJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG5cbiAgfVxufVxuIl19
|
|
247
|
+
BatmanProject[_a] = { fqn: "@macedon-technologies/batman.BatmanProject", version: "1.6.1" };
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0bWFuUHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXRtYW5Qcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQW9GO0FBQ3BGLDhDQUFzRDtBQUN0RCwrQ0FBMEU7QUFDMUUscURBQWtEO0FBQ2xELDJEQUF3RDtBQUN4RCx1REFBb0Q7QUFDcEQseURBQXNEO0FBK0J0RCxNQUFhLGFBQWMsU0FBUSw0QkFBbUI7SUFDcEQsWUFBWSxPQUE2QjtRQUN2QyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQzNDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNO1lBQzVELElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUUsS0FBSztZQUNwQixJQUFJLEVBQUU7Z0JBQ0osbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLFdBQVc7Z0JBQ1gsSUFBSTtnQkFDSixxQkFBcUI7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsMkJBQTJCO2dCQUMzQiwwQkFBMEI7Z0JBQzFCLG1DQUFtQztnQkFDbkMsY0FBYztnQkFDZCxpQ0FBaUM7Z0JBQ2pDLFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQixHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRTthQUN0QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxxQkFBcUI7Z0JBQ3JCLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxxQ0FBcUM7Z0JBQ3JDLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFO2FBQ3pCO1lBQ0QsU0FBUyxFQUFFO2dCQUNULG1EQUFtRDtnQkFDbkQsY0FBYztnQkFDZCxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTthQUMzQjtZQUNELFFBQVEsRUFBRTtnQkFDUixHQUFHLE9BQU8sQ0FBQyxR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WUFDNUIsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELFNBQVMsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXBELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFjLEVBQUUsRUFBRTtZQUN6QyxPQUFPLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2xCLElBQUksRUFBRSxZQUFZLENBQ2hCLGdGQUFnRixFQUNoRixTQUFTLENBQUMsVUFBVSxDQUNyQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RCLElBQUksRUFBRSxnRkFBZ0Y7WUFDdEYsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0lBR0wsQ0FBQzs7QUFyUEgsc0NBc1BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCwgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBHaXRodWJDcmVkZW50aWFscyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uLCBBcHBsaWNhdGlvbkVudmlyb25tZW50Q29uZmlnIH0gZnJvbSAnLi9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb2RlT3duZXJzRmlsZSB9IGZyb20gJy4vQ29kZU93bmVyc0ZpbGUnO1xuaW1wb3J0IHsgRGF0YURvZ0FzcGVjdEZpbGUgfSBmcm9tICcuL0RhdGFEb2dBc3BlY3RGaWxlJztcbmltcG9ydCB7IEdpdEh1YlJvbGVzRmlsZSB9IGZyb20gJy4vR2l0SHViUm9sZXNGaWxlJztcbmltcG9ydCB7IFZpdGVSZWFjdFByb2plY3QgfSBmcm9tICcuL1ZpdGVSZWFjdFByb2plY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhdG1hblByb2plY3RPcHRpb25zIGV4dGVuZHMgQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXY6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIERldmVsb3BtZW50IGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmc6IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIFByb2R1Y3Rpb24gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZDogQXBwbGljYXRpb25FbnZpcm9ubWVudENvbmZpZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB0YWdzIHRvIGFwcGx5IHRvIGFsbCBzdGFja3NcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBjb2RlIG93bmVycyB0byBhZGQgdG8gdGhlIENPREVPV05FUlMgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbENvZGVPd25lcnM/OiBzdHJpbmdbXTtcbn1cblxuXG5leHBvcnQgY2xhc3MgQmF0bWFuUHJvamVjdCBleHRlbmRzIEF3c0Nka1R5cGVTY3JpcHRBcHAge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBCYXRtYW5Qcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBjZGtWZXJzaW9uOiBvcHRpb25zLmNka1ZlcnNpb24gfHwgJzIuMjI0LjAnLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IG9wdGlvbnMuZGVmYXVsdFJlbGVhc2VCcmFuY2ggfHwgJ21haW4nLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgcHJvamVucmNUczogdHJ1ZSxcbiAgICAgIGJ1aWxkV29ya2Zsb3c6IGZhbHNlLFxuICAgICAgZGVwczogW1xuICAgICAgICAnQHR5cGVzL2F3cy1sYW1iZGEnLFxuICAgICAgICAnQHR5cGVzL2V4cHJlc3MnLFxuICAgICAgICAnQHR5cGVzL3BnJyxcbiAgICAgICAgJ3BnJyxcbiAgICAgICAgJ0Bhd3Mtc2RrL3Jkcy1zaWduZXInLFxuICAgICAgICAnQG1hdHRoZXdib25pZy9zZWNyZXQnLFxuICAgICAgICAnZGF0YWRvZy1jZGstY29uc3RydWN0cy12MicsXG4gICAgICAgICdAY2RrbGFicy9hd3MtbGFtYmRhLXJ1c3QnLFxuICAgICAgICAnQGF3cy1sYW1iZGEtcG93ZXJ0b29scy9wYXJhbWV0ZXJzJyxcbiAgICAgICAgJ2pzb253ZWJ0b2tlbicsXG4gICAgICAgICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJyxcbiAgICAgICAgJ2V4cHJlc3MnLFxuICAgICAgICAnc2VydmVybGVzcy1odHRwJyxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXBzIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIGRldkRlcHM6IFtcbiAgICAgICAgJ0B0eXBlcy9qc29ud2VidG9rZW4nLFxuICAgICAgICAnbm9kZW1vbicsXG4gICAgICAgICdjb25jdXJyZW50bHknLFxuICAgICAgICAnQG1hY2Vkb24tdGVjaG5vbG9naWVzL2JhdG1hbkBeMS4wLjAnLFxuICAgICAgICAuLi5vcHRpb25zLmRldkRlcHMgfHwgW10sXG4gICAgICBdLFxuICAgICAgZ2l0aWdub3JlOiBbXG4gICAgICAgICdzcmMvY29uc3RydWN0cy9oYW5kbGVyL2NsZXJrLWF1dGhvcml6ZXIvdGFyZ2V0LyoqJyxcbiAgICAgICAgJyoqLy5EU19TdG9yZScsXG4gICAgICAgIC4uLm9wdGlvbnMuZ2l0aWdub3JlIHx8IFtdLFxuICAgICAgXSxcbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIC4uLm9wdGlvbnMudHNjb25maWcsXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC4uLm9wdGlvbnMudHNjb25maWc/LmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICBtaW5Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5Ob2RlVmVyc2lvbiB8fCAnMjInLFxuICAgICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBHaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7XG4gICAgICAgICAgICBzZWNyZXQ6ICdHSVRIVUJfVE9LRU4nLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlYWRtZToge1xuICAgICAgICBjb250ZW50czogW1xuICAgICAgICAgIGAjICR7b3B0aW9ucy5uYW1lfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RoaXMgcHJvamVjdCB3YXMgYm9vdHN0cmFwcGVkIHdpdGggW0JhdG1hbl0oaHR0cHM6Ly9naXRodWIuY29tL21hY2Vkb24tdGVjaG5vbG9naWVzL3BsYXRmb3JtLWNvbW1vbikuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgV2hhdCBCYXRtYW4gQ3JlYXRlZCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIyBDREsgSW5mcmFzdHJ1Y3R1cmUgKGBzcmMvYCknLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICd8IEZpbGUgfCBEZXNjcmlwdGlvbiB8JyxcbiAgICAgICAgICAnfC0tLS0tLXwtLS0tLS0tLS0tLS0tfCcsXG4gICAgICAgICAgJ3wgYHNyYy9tYWluLnRzYCB8IENESyBhcHAgZW50cnkgcG9pbnQg4oCUIGluc3RhbnRpYXRlcyBkZXYsIHN0YWdpbmcsIGFuZCBwcm9kIGBBcHBsaWNhdGlvblN0YWNrYHMgfCcsXG4gICAgICAgICAgJ3wgYHNyYy9Mb2NhbERldkFwcC50c2AgfCBMb2NhbCBkZXZlbG9wbWVudCBDREsgYXBwIOKAlCB1c2VkIGJ5IGB5YXJuIGNkazpkZXZgIHwnLFxuICAgICAgICAgICd8IGBzcmMvR2l0SHViUm9sZXMudHNgIHwgQ0RLIGFwcCBmb3IgZGVwbG95aW5nIHRoZSBHaXRIdWIgT0lEQyBJQU0gcm9sZSAob25lLXRpbWUgYm9vdHN0cmFwKSB8JyxcbiAgICAgICAgICAnfCBgc3JjL3N0YWNrcy9BcHBsaWNhdGlvblN0YWNrLnRzYCB8IFlvdXIgcHJpbWFyeSBzdGFjayDigJQgZXh0ZW5kIGl0IHRvIGFkZCByZXNvdXJjZXMgfCcsXG4gICAgICAgICAgJ3wgYHNyYy9zdGFja3MvQmFzZUFwcGxpY2F0aW9uU3RhY2sudHNgIHwgQmFzZSBzdGFjayB3aXRoIFZQQywgQVBJLCBzdGF0aWMgd2Vic2l0ZSwgRGF0YWRvZywgYW5kIFJvdXRlIDUzIHdpcmVkIHVwIHwnLFxuICAgICAgICAgICd8IGBzcmMvc3RhY2tzL0dpdEh1YlJvbGVzU3RhY2sudHNgIHwgSUFNIHJvbGUgc3RhY2sgZm9yIEdpdEh1YiBBY3Rpb25zIE9JREMgYXV0aGVudGljYXRpb24gfCcsXG4gICAgICAgICAgJ3wgYHNyYy9jb25zdHJ1Y3RzL0FwaS50c2AgfCBBUEkgR2F0ZXdheSArIExhbWJkYSBjb25zdHJ1Y3Qgd2l0aCBDbGVyayBKV1QgYXV0aG9yaXplciB8JyxcbiAgICAgICAgICAnfCBgc3JjL2NvbnN0cnVjdHMvU3RhdGljV2Vic2l0ZS50c2AgfCBDbG91ZEZyb250ICsgUzMgKyBBQ00gKyBSb3V0ZSA1MyBjb25zdHJ1Y3QgfCcsXG4gICAgICAgICAgJ3wgYHNyYy9jb25zdHJ1Y3RzL2hhbmRsZXIvQXBpLkZ1bmN0aW9uLnRzYCB8IExhbWJkYSBoYW5kbGVyIGVudHJ5IHBvaW50IHwnLFxuICAgICAgICAgICd8IGBzcmMvYXNwZWN0cy9EYXRhRG9nQXNwZWN0LnRzYCB8IENESyBhc3BlY3QgdGhhdCB3aXJlcyBhbGwgTGFtYmRhIGZ1bmN0aW9ucyB0byBEYXRhZG9nIHwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyMgRnJvbnRlbmQgKGB3ZWIvYCknLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICd8IEZpbGUgfCBEZXNjcmlwdGlvbiB8JyxcbiAgICAgICAgICAnfC0tLS0tLXwtLS0tLS0tLS0tLS0tfCcsXG4gICAgICAgICAgJ3wgYHdlYi9zcmMvbWFpbi50c3hgIHwgUmVhY3QgYXBwIGVudHJ5IHBvaW50IHdpdGggQ2xlcmsgYW5kIFJlYWN0IFF1ZXJ5IHByb3ZpZGVycyB8JyxcbiAgICAgICAgICAnfCBgd2ViL3NyYy9BcHAudHN4YCB8IFJvb3QgYXBwbGljYXRpb24gY29tcG9uZW50IHwnLFxuICAgICAgICAgICd8IGB3ZWIvc3JjL0FwcC5jc3NgIC8gYHdlYi9zcmMvaW5kZXguY3NzYCB8IEJhc2Ugc3R5bGVzaGVldHMgKFRhaWx3aW5kIENTUyB2NCkgfCcsXG4gICAgICAgICAgJ3wgYHdlYi9zcmMvY29uZmlnLnRzYCB8IGB1c2VDb25maWcoKWAgaG9vayDigJQgbG9hZHMgcnVudGltZSBjb25maWcgZnJvbSBgY29uZmlnLmpzb25gIHwnLFxuICAgICAgICAgICd8IGB3ZWIvc3JjL3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzYCB8IGB1c2VCYXNlUXVlcnkoKWAg4oCUIGF1dGhlbnRpY2F0ZWQgQVBJIGZldGNoIGhvb2sgfCcsXG4gICAgICAgICAgJ3wgYHdlYi9zcmMvc2VydmljZXMvUm9vdFNlcnZpY2UudHNgIHwgRXhhbXBsZSBzZXJ2aWNlIHVzaW5nIGB1c2VCYXNlUXVlcnlgIHwnLFxuICAgICAgICAgICd8IGB3ZWIvcHVibGljL2NvbmZpZy5qc29uYCB8IFJ1bnRpbWUgY29uZmlnIChBUEkgYmFzZSBVUkwsIENsZXJrIHB1Ymxpc2hhYmxlIGtleSkgfCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIyBHaXRIdWIgQWN0aW9ucyBXb3JrZmxvd3MgKGAuZ2l0aHViL3dvcmtmbG93cy9gKScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3wgRmlsZSB8IFRyaWdnZXIgfCcsXG4gICAgICAgICAgJ3wtLS0tLS18LS0tLS0tLS0tfCcsXG4gICAgICAgICAgJ3wgYHByLWRlcGxveS55bWxgIHwgT24gcHVsbCByZXF1ZXN0IG9wZW4vdXBkYXRlIOKAlCBkZXBsb3lzIGEgcGVyLVBSIGRldiBzdGFjayB8JyxcbiAgICAgICAgICAnfCBgcHItY2xlYW51cC55bWxgIHwgT24gcHVsbCByZXF1ZXN0IGNsb3NlIOKAlCB0ZWFycyBkb3duIHRoZSBwZXItUFIgZGV2IHN0YWNrIHwnLFxuICAgICAgICAgICd8IGBzdGFnaW5nLWRlcGxveS55bWxgIHwgT24gcHVzaCB0byBgbWFpbmAg4oCUIGRlcGxveXMgdG8gc3RhZ2luZyB8JyxcbiAgICAgICAgICAnfCBgcHJvZHVjdGlvbi1kZXBsb3kueW1sYCB8IE1hbnVhbGx5IHRyaWdnZXJlZCDigJQgZGVwbG95cyB0byBwcm9kdWN0aW9uIHwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICctLS0nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBGaWxlcyBZb3UgQ2FuIEVkaXQnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGVzZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIG9uY2UgYW5kIG5ldmVyIG92ZXJ3cml0dGVuIGJ5IEJhdG1hbi4gTW9kaWZ5IHRoZW0gZnJlZWx5LicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3wgRmlsZSB8IFdoYXQgdG8gZG8gd2l0aCBpdCB8JyxcbiAgICAgICAgICAnfC0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwnLFxuICAgICAgICAgICd8IGBzcmMvc3RhY2tzL0FwcGxpY2F0aW9uU3RhY2sudHNgIHwgKipTdGFydCBoZXJlLioqIEFkZCBDREsgY29uc3RydWN0cyB0byBidWlsZCB5b3VyIGluZnJhc3RydWN0dXJlIHwnLFxuICAgICAgICAgICd8IGBzcmMvY29uc3RydWN0cy9BcGkudHNgIHwgRXh0ZW5kIHRoZSBBUEkg4oCUIGFkZCBMYW1iZGEgaW50ZWdyYXRpb25zLCByb3V0ZXMsIG9yIG92ZXJyaWRlIG1ldGhvZHMgfCcsXG4gICAgICAgICAgJ3wgYHNyYy9jb25zdHJ1Y3RzL1N0YXRpY1dlYnNpdGUudHNgIHwgQ3VzdG9taXplIENsb3VkRnJvbnQgYmVoYXZpb3JzLCBTMyBzZXR0aW5ncywgb3IgZGVwbG95bWVudCBvcHRpb25zIHwnLFxuICAgICAgICAgICd8IGBzcmMvY29uc3RydWN0cy9oYW5kbGVyL0FwaS5GdW5jdGlvbi50c2AgfCBJbXBsZW1lbnQgeW91ciBMYW1iZGEgaGFuZGxlciBsb2dpYyB8JyxcbiAgICAgICAgICAnfCBgc3JjL3N0YWNrcy9HaXRIdWJSb2xlc1N0YWNrLnRzYCB8IEFkZCBJQU0gcGVybWlzc2lvbnMgbmVlZGVkIGJ5IEdpdEh1YiBBY3Rpb25zIHwnLFxuICAgICAgICAgICd8IGBzcmMvbWFpbi50c2AgfCBBZGp1c3Qgc3RhY2sgaW5zdGFudGlhdGlvbiBvciBhZGQgYWRkaXRpb25hbCBzdGFja3MgfCcsXG4gICAgICAgICAgJ3wgYHdlYi9zcmMvQXBwLnRzeGAgfCBCdWlsZCB5b3VyIFVJIGhlcmUgfCcsXG4gICAgICAgICAgJ3wgYHdlYi9zcmMvQXBwLmNzc2AgLyBgd2ViL3NyYy9pbmRleC5jc3NgIHwgU3R5bGUgeW91ciBhcHBsaWNhdGlvbiB8JyxcbiAgICAgICAgICAnfCBgd2ViL3NyYy9tYWluLnRzeGAgfCBBZGp1c3QgdG9wLWxldmVsIHByb3ZpZGVycyBvciByb3V0aW5nIHwnLFxuICAgICAgICAgICd8IGB3ZWIvc3JjL3NlcnZpY2VzL1Jvb3RTZXJ2aWNlLnRzYCB8IEFkZCBvciByZXBsYWNlIEFQSSBzZXJ2aWNlIGhvb2tzIHwnLFxuICAgICAgICAgICd8IGB3ZWIvcHVibGljL2NvbmZpZy5qc29uYCB8IFVwZGF0ZSBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgKEFQSSBVUkwsIENsZXJrIGtleSkgfCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIEZpbGVzIFlvdSBDYW5ub3QgRWRpdCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RoZXNlIGZpbGVzIGFyZSAqKm1hbmFnZWQgYnkgQmF0bWFuKiogYW5kIHdpbGwgYmUgb3ZlcndyaXR0ZW4gZXZlcnkgdGltZSBgbnB4IHByb2plbmAgcnVucy4gRG8gbm90IGVkaXQgdGhlbSBkaXJlY3RseSDigJQgbWFrZSBjaGFuZ2VzIGluIGAucHJvamVucmMudHNgIGluc3RlYWQuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnPiBbIUlNUE9SVEFOVF0nLFxuICAgICAgICAgICc+IElmIHlvdSBoYXZlIEFOWSBjaGFuZ2VzIHlvdSB3YW50IHRvIG1ha2UgdG8gdGhlc2UgZmlsZXMsIG5vdGlmeSAjdGVhbS1iYXRtYW4gb24gU2xhY2suICcsXG4gICAgICAgICAgJz4gV2UgbWFpbnRhaW4gdGhlc2UgZmlsZXMgYXMgcGFydCBvZiB0aGUgY29yZSBCYXRtYW4gZXhwZXJpZW5jZSwgYW5kIHlvdXIgZmVlZGJhY2sgaXMgY3J1Y2lhbCB0byBlbnN1cmUgdGhleSBtZWV0IHlvdXIgbmVlZHMuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnfCBGaWxlIHwgV2h5IGl0XFwncyBtYW5hZ2VkIHwnLFxuICAgICAgICAgICd8LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfCcsXG4gICAgICAgICAgJ3wgYHNyYy9zdGFja3MvQmFzZUFwcGxpY2F0aW9uU3RhY2sudHNgIHwgQ29yZSBzdGFjayB3aXJpbmcg4oCUIHVwZGF0ZWQgd2l0aCBCYXRtYW4gcmVsZWFzZXMgfCcsXG4gICAgICAgICAgJ3wgYHNyYy9hc3BlY3RzL0RhdGFEb2dBc3BlY3QudHNgIHwgRGF0YWRvZyBDREsgYXNwZWN0IHwnLFxuICAgICAgICAgICd8IGB3ZWIvdml0ZS5jb25maWcudHNgIHwgVml0ZSBjb25maWd1cmF0aW9uIHwnLFxuICAgICAgICAgICd8IGB3ZWIvZXNsaW50LmNvbmZpZy5qc2AgfCBFU0xpbnQgY29uZmlndXJhdGlvbiB8JyxcbiAgICAgICAgICAnfCBgd2ViL3Bvc3Rjc3MuY29uZmlnLmpzYCB8IFBvc3RDU1MgLyBUYWlsd2luZCBjb25maWd1cmF0aW9uIHwnLFxuICAgICAgICAgICd8IGB3ZWIvaW5kZXguaHRtbGAgfCBIVE1MIGVudHJ5IHBvaW50IHwnLFxuICAgICAgICAgICd8IGB3ZWIvdHNjb25maWcuanNvbmAgLyBgd2ViL3RzY29uZmlnLmFwcC5qc29uYCAvIGB3ZWIvdHNjb25maWcubm9kZS5qc29uYCB8IFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiB8JyxcbiAgICAgICAgICAnfCBgd2ViL3NyYy92aXRlLWVudi5kLnRzYCB8IFZpdGUgdHlwZSBkZWNsYXJhdGlvbnMgfCcsXG4gICAgICAgICAgJ3wgYHdlYi9zcmMvY29uZmlnLnRzYCB8IFJ1bnRpbWUgY29uZmlnIGhvb2sg4oCUIHNoYXBlIGRyaXZlbiBieSBgLnByb2plbnJjLnRzYCB8JyxcbiAgICAgICAgICAnfCBgd2ViL3NyYy9zZXJ2aWNlcy9CYXNlU2VydmljZS50c2AgfCBCYXNlIGF1dGhlbnRpY2F0ZWQgZmV0Y2ggaG9vayB8JyxcbiAgICAgICAgICAnfCBgLmdpdGh1Yi9DT0RFT1dORVJTYCB8IENvZGUgb3duZXJzaGlwIHBvbGljeSB8JyxcbiAgICAgICAgICAnfCBgLmdpdGh1Yi93b3JrZmxvd3MvKi55bWxgIHwgQWxsIENJL0NEIHdvcmtmbG93cyB8JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnPiAqKlRpcDoqKiBGaWxlcyB3aXRoIGEgYH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi4gfn5gIGhlYWRlciBhcmUgbWFuYWdlZCBmaWxlcy4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICctLS0nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBXaGVyZSB0byBTdGFydCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJzEuICoqYHNyYy9zdGFja3MvQXBwbGljYXRpb25TdGFjay50c2AqKiDigJQgQWRkIHlvdXIgQ0RLIGNvbnN0cnVjdHMgaGVyZS4gVGhlIGJhc2Ugc3RhY2sgYWxyZWFkeSBwcm92aWRlcyBgdGhpcy5hcGlgLCBgdGhpcy52cGNgLCBgdGhpcy5ob3N0ZWRab25lYCwgYW5kIGB0aGlzLmRhdGFkb2dgIGFzIHByb3RlY3RlZCBwcm9wZXJ0aWVzLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJzIuICoqYHdlYi9gKiog4oCUIEJ1aWxkIHlvdXIgZnJvbnRlbmQuIFN0YXJ0IHdpdGggYHdlYi9zcmMvQXBwLnRzeGAgYW5kIGFkZCBzZXJ2aWNlcyBhbG9uZ3NpZGUgYHdlYi9zcmMvc2VydmljZXMvUm9vdFNlcnZpY2UudHNgLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJzMuICoqYHNyYy9jb25zdHJ1Y3RzL2hhbmRsZXIvQXBpLkZ1bmN0aW9uLnRzYCoqIOKAlCBJbXBsZW1lbnQgeW91ciBiYWNrZW5kIExhbWJkYSBoYW5kbGVyIGxvZ2ljIGhlcmUuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnLS0tJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgRGV2ZWxvcG1lbnQgV29ya2Zsb3cnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBiYXNoJyxcbiAgICAgICAgICAnIyBJbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgICAgICAgJ3lhcm4gaW5zdGFsbCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMgU3RhcnQgbG9jYWwgZGV2IHNlcnZlciAoYmFja2VuZCBMYW1iZGEgKyBWaXRlIGZyb250ZW5kIGluIHBhcmFsbGVsKScsXG4gICAgICAgICAgJ3lhcm4gZGV2JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyBEZXBsb3kgYSBwZXJzb25hbCBkZXYgc3RhY2sgdG8gQVdTJyxcbiAgICAgICAgICAneWFybiBjZGs6ZGV2IC0tY29udGV4dCBsb2NhbC1kZXYtcHJlZml4PXlvdXItaGFuZGxlIGRlcGxveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMgUnVuIHRlc3RzJyxcbiAgICAgICAgICAneWFybiB0ZXN0JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyBSZS1zeW50aGVzaXplIHByb2plY3QgZmlsZXMgYWZ0ZXIgZWRpdGluZyAucHJvamVucmMudHMnLFxuICAgICAgICAgICducHggcHJvamVuJyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnLS0tJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgVXBncmFkaW5nIEJhdG1hbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYGJhc2gnLFxuICAgICAgICAgICd5YXJuIGFkZCBAbWFjZWRvbi10ZWNobm9sb2dpZXMvYmF0bWFuQGxhdGVzdCcsXG4gICAgICAgICAgJ25weCBwcm9qZW4nLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGlzIHVwZGF0ZXMgYWxsIG1hbmFnZWQgZmlsZXMgdG8gdGhlIGxhdGVzdCBCYXRtYW4gc3RhbmRhcmRzLiBZb3VyIGVkaXRhYmxlIHNhbXBsZSBmaWxlcyBhcmUgbmV2ZXIgdG91Y2hlZC4nLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgfSxcbiAgICB9KTtcblxuXG4gICAgLy8gQ3JlYXRlIHN0YW5kYXJkIHByb2plY3QgZmlsZXNcbiAgICBjb25zdCBQUklNQVJZX0FDQ09VTlQgPSAnMDE1OTU1ODE3MjYzJztcbiAgICBjb25zdCBQUklNQVJZX1JFR0lPTiA9ICd1cy1lYXN0LTEnO1xuXG4gICAgbmV3IEFwcGxpY2F0aW9uKHRoaXMsIHtcbiAgICAgIGdpdGh1YlJlcG9zaXRvcnk6IGBtYWNlZG9uLXRlY2hub2xvZ2llcy8ke29wdGlvbnMubmFtZX1gLFxuICAgICAgY2xlcmtQdWJsaXNoYWJsZUtleTogJ3BrX3Rlc3RfYVc1MFpXNXpaUzFzWldWamFDMHlNaTVqYkdWeWF5NWhZMk52ZFc1MGN5NWtaWFlrJyxcbiAgICAgIGRldjoge1xuICAgICAgICAuLi5vcHRpb25zLmRldixcbiAgICAgIH0sXG4gICAgICBzdGFnaW5nOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuc3RhZ2luZyxcbiAgICAgIH0sXG4gICAgICBwcm9kOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZGV2LFxuICAgICAgfSxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBvcHRpb25zLmFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuXG4gICAgbmV3IEdpdEh1YlJvbGVzRmlsZSh0aGlzLCB7XG4gICAgICBhY2NvdW50OiBQUklNQVJZX0FDQ09VTlQsXG4gICAgICBwcmltYXJ5UmVnaW9uOiBQUklNQVJZX1JFR0lPTixcbiAgICB9KTtcblxuICAgIG5ldyBDb2RlT3duZXJzRmlsZSh0aGlzLCB7XG4gICAgICBhZGRpdGlvbmFsT3duZXJzOiBvcHRpb25zLmFkZGl0aW9uYWxDb2RlT3duZXJzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFEb2dBc3BlY3RGaWxlKHRoaXMpO1xuXG4gICAgY29uc3Qgdml0ZVJlYWN0ID0gbmV3IFZpdGVSZWFjdFByb2plY3Qoe1xuICAgICAgbmFtZTogJ3dlYicsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogJ21haW4nLFxuICAgICAgcGFyZW50OiB0aGlzLFxuICAgICAgb3V0ZGlyOiAnd2ViJyxcbiAgICB9KTtcbiAgICB2aXRlUmVhY3QuYWRkQ29uZmlnRmllbGQoJ3NvbWV0aGluZycsICdudW1iZXInKTtcbiAgICB2aXRlUmVhY3QuYWRkQ29uZmlnRmllbGQoJ3NvbWV0aGluZ0Vsc2UnLCAnc3RyaW5nJyk7XG5cbiAgICBjb25zdCBjb25jdXJyZW50bHkgPSAoLi4uYXJnczogc3RyaW5nW10pID0+IHtcbiAgICAgIHJldHVybiBgY29uY3VycmVudGx5ICR7YXJncy5tYXAoYSA9PiBgXCIke2F9XCJgKS5qb2luKCcgJyl9YDtcbiAgICB9O1xuXG4gICAgdGhpcy5hZGRUYXNrKCdkZXYnLCB7XG4gICAgICBleGVjOiBjb25jdXJyZW50bHkoXG4gICAgICAgICdub2RlbW9uIC0td2F0Y2ggLi9zcmMvY29uc3RydWN0cy9oYW5kbGVyIC0td2F0Y2ggLi9sb2NhbC9kZXYudHMgLi9sb2NhbC9kZXYudHMnLFxuICAgICAgICB2aXRlUmVhY3QuZGV2Q29tbWFuZCxcbiAgICAgICksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ2NkazpkZXYnLCB7XG4gICAgICBleGVjOiAneWFybiBjZGsgLWEgXCJucHggdHMtbm9kZSAtUCB0c2NvbmZpZy5qc29uIC0tcHJlZmVyLXRzLWV4dHMgc3JjL0xvY2FsRGV2QXBwLnRzXCInLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cblxuICB9XG59XG4iXX0=
|
package/lib/CodeOwnersFile.js
CHANGED
|
@@ -16,5 +16,5 @@ class CodeOwnersFile extends projen_1.TextFile {
|
|
|
16
16
|
}
|
|
17
17
|
exports.CodeOwnersFile = CodeOwnersFile;
|
|
18
18
|
_a = JSII_RTTI_SYMBOL_1;
|
|
19
|
-
CodeOwnersFile[_a] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.
|
|
19
|
+
CodeOwnersFile[_a] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.6.1" };
|
|
20
20
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZU93bmVyc0ZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29kZU93bmVyc0ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFPbEMsTUFBYSxjQUFlLFNBQVEsaUJBQVE7SUFDMUMsWUFBWSxPQUE0QixFQUFFLFVBQWlDLEVBQUU7UUFDM0UsTUFBTSxhQUFhLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzNELE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUU7WUFDbkMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDOztBQVRILHdDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlT3duZXJzRmlsZU9wdGlvbnMge1xuICByZWFkb25seSBhZGRpdGlvbmFsT3duZXJzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlT3duZXJzRmlsZSBleHRlbmRzIFRleHRGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCwgb3B0aW9uczogQ29kZU93bmVyc0ZpbGVPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBkZWZhdWx0T3duZXJzID0gWycqIEBtYWNlZG9uLXRlY2hub2xvZ2llcy9wbGF0Zm9ybSddO1xuICAgIGNvbnN0IGFsbE93bmVycyA9IFsuLi5kZWZhdWx0T3duZXJzLCAuLi4ob3B0aW9ucy5hZGRpdGlvbmFsT3duZXJzIHx8IFtdKV07XG5cbiAgICBzdXBlcihwcm9qZWN0LCAnLmdpdGh1Yi9DT0RFT1dORVJTJywge1xuICAgICAgbGluZXM6IGFsbE93bmVycyxcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -93,5 +93,5 @@ class ProductionDeployWorkflow extends projen_1.YamlFile {
|
|
|
93
93
|
}
|
|
94
94
|
exports.ProductionDeployWorkflow = ProductionDeployWorkflow;
|
|
95
95
|
_a = JSII_RTTI_SYMBOL_1;
|
|
96
|
-
ProductionDeployWorkflow[_a] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.
|
|
96
|
+
ProductionDeployWorkflow[_a] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.6.1" };
|
|
97
97
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZHVjdGlvbkRlcGxveVdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1Byb2R1Y3Rpb25EZXBsb3lXb3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQVVsQyxNQUFhLHdCQUF5QixTQUFRLGlCQUFRO0lBQ3BELFlBQVksT0FBNEIsRUFBRSxPQUF3QztRQUNoRixLQUFLLENBQUMsT0FBTyxFQUFFLHlDQUF5QyxFQUFFO1lBQ3hELE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsRUFBRSxFQUFFO29CQUNGLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUM7cUJBQ1o7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLFVBQVUsRUFBRSxPQUFPO29CQUNuQixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsT0FBTyxFQUFFOzRCQUNQO2dDQUNFLElBQUksRUFBRSxVQUFVO2dDQUNoQixJQUFJLEVBQUUscUJBQXFCOzZCQUM1Qjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsZUFBZTtnQ0FDckIsSUFBSSxFQUFFLHVCQUF1QjtnQ0FDN0IsSUFBSSxFQUFFO29DQUNKLGNBQWMsRUFBRSxJQUFJO2lDQUNyQjs2QkFDRjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsMkJBQTJCO2dDQUNqQyxJQUFJLEVBQUUsMENBQTBDO2dDQUNoRCxJQUFJLEVBQUU7b0NBQ0osZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE9BQU87b0NBQ2pDLFlBQVksRUFBRSxPQUFPLENBQUMsU0FBUztpQ0FDaEM7NkJBQ0Y7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQ0FDNUIsR0FBRyxFQUFFLGdDQUFnQzs2QkFDdEM7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLG9CQUFvQjtnQ0FDMUIsR0FBRyxFQUFFLCtCQUErQixPQUFPLENBQUMsbUJBQW1CLDRFQUE0RTs2QkFDNUk7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLHNCQUFzQjtnQ0FDNUIsRUFBRSxFQUFFLFFBQVE7Z0NBQ1osR0FBRyxFQUFFLHNCQUFzQixPQUFPLENBQUMsV0FBVyxnRUFBZ0U7NkJBQy9HOzRCQUNEO2dDQUNFLElBQUksRUFBRSxpQkFBaUI7Z0NBQ3ZCLEVBQUUsRUFBRSxTQUFTO2dDQUNiLEdBQUcsRUFBRTtvQ0FDSCxzRUFBc0U7b0NBQ3RFLG1EQUFtRDtvQ0FDbkQsa0NBQWtDO2lDQUNuQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7NkJBQ2I7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLGNBQWM7Z0NBQ3BCLEVBQUUsRUFBRSxVQUFVO2dDQUNkLEdBQUcsRUFBRTtvQ0FDSCw0QkFBNEI7b0NBQzVCLGNBQWM7b0NBQ2QscUNBQXFDO29DQUNyQyxrQkFBa0I7b0NBQ2xCLElBQUk7b0NBQ0osd0RBQXdEO29DQUN4RCxpSUFBaUk7b0NBQ2pJLGdDQUFnQztvQ0FDaEMsNkRBQTZEO29DQUM3RCxJQUFJO29DQUNKLHVEQUF1RDtvQ0FDdkQsMEZBQTBGO29DQUMxRixnQ0FBZ0M7aUNBQ2pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs2QkFDYjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFyRkgsNERBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWWFtbEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0aW9uRGVwbG95V29ya2Zsb3dPcHRpb25zIHtcbiAgcmVhZG9ubHkgcm9sZUFybjogc3RyaW5nO1xuICByZWFkb25seSBhd3NSZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xlcmtQdWJsaXNoYWJsZUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvZHVjdGlvbkRlcGxveVdvcmtmbG93IGV4dGVuZHMgWWFtbEZpbGUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLCBvcHRpb25zOiBQcm9kdWN0aW9uRGVwbG95V29ya2Zsb3dPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgJy5naXRodWIvd29ya2Zsb3dzL3Byb2R1Y3Rpb24tZGVwbG95LnltbCcsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIG5hbWU6ICdQcm9kdWN0aW9uIERlcGxveScsXG4gICAgICAgIG9uOiB7XG4gICAgICAgICAgcHVzaDoge1xuICAgICAgICAgICAgdGFnczogWycqJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICAnaWQtdG9rZW4nOiAnd3JpdGUnLFxuICAgICAgICAgICdjb250ZW50cyc6ICdyZWFkJyxcbiAgICAgICAgfSxcbiAgICAgICAgam9iczoge1xuICAgICAgICAgIGRlcGxveToge1xuICAgICAgICAgICAgJ3J1bnMtb24nOiAndWJ1bnR1LWxhdGVzdCcsXG4gICAgICAgICAgICAnc3RlcHMnOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY1JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9zZXR1cC1ub2RlQHY1JyxcbiAgICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogJzI0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpZ3VyZSBBV1MgY3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgICAgIHVzZXM6ICdhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQHY0JyxcbiAgICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBvcHRpb25zLnJvbGVBcm4sXG4gICAgICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IG9wdGlvbnMuYXdzUmVnaW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICAgICAgIHJ1bjogJ3lhcm4gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnVXBkYXRlIGNvbmZpZy5qc29uJyxcbiAgICAgICAgICAgICAgICBydW46IGBqcSAnLmNsZXJrUHVibGlzaGFibGVLZXkgPSBcIiR7b3B0aW9ucy5jbGVya1B1Ymxpc2hhYmxlS2V5fVwiJyB3ZWIvcHVibGljL2NvbmZpZy5qc29uID4gdG1wLmpzb24gJiYgbXYgdG1wLmpzb24gd2ViL3B1YmxpYy9jb25maWcuanNvbmAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGVwbG95IHRvIHByb2R1Y3Rpb24nLFxuICAgICAgICAgICAgICAgIGlkOiAnZGVwbG95JyxcbiAgICAgICAgICAgICAgICBydW46IGB5YXJuIGNkayBkZXBsb3kgLWUgJHtvcHRpb25zLnByb2plY3ROYW1lfS1wcm9kIC0tcmVxdWlyZS1hcHByb3ZhbCBuZXZlciAtLW91dHB1dHMtZmlsZSBjZGstb3V0cHV0cy5qc29uYCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdFeHRyYWN0IG91dHB1dHMnLFxuICAgICAgICAgICAgICAgIGlkOiAnb3V0cHV0cycsXG4gICAgICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICAgICAnV0VCU0lURV9VUkw9JChqcSAtciBcXCcuW10gfCAuV2Vic2l0ZVVybCAvLyBlbXB0eVxcJyBjZGstb3V0cHV0cy5qc29uKScsXG4gICAgICAgICAgICAgICAgICAnZWNobyBcIndlYnNpdGVfdXJsPSRXRUJTSVRFX1VSTFwiID4+ICRHSVRIVUJfT1VUUFVUJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwiV2Vic2l0ZSBVUkw6ICRXRUJTSVRFX1VSTFwiJyxcbiAgICAgICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ05vdGlmeSBTbGFjaycsXG4gICAgICAgICAgICAgICAgaWY6ICdhbHdheXMoKScsXG4gICAgICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICAgICAnU1RBVFVTPVwiJHt7IGpvYi5zdGF0dXMgfX1cIicsXG4gICAgICAgICAgICAgICAgICAnQ09MT1I9XCJnb29kXCInLFxuICAgICAgICAgICAgICAgICAgJ2lmIFsgXCIkU1RBVFVTXCIgIT0gXCJzdWNjZXNzXCIgXTsgdGhlbicsXG4gICAgICAgICAgICAgICAgICAnICBDT0xPUj1cImRhbmdlclwiJyxcbiAgICAgICAgICAgICAgICAgICdmaScsXG4gICAgICAgICAgICAgICAgICAnV0VCU0lURV9VUkw9XCIke3sgc3RlcHMub3V0cHV0cy5vdXRwdXRzLndlYnNpdGVfdXJsIH19XCInLFxuICAgICAgICAgICAgICAgICAgJ01FU1NBR0U9XCJQcm9kdWN0aW9uIERlcGxveTogJFNUQVRVU1xcXFxuUmVwbzogJHt7IGdpdGh1Yi5yZXBvc2l0b3J5IH19XFxcXG5UYWc6ICR7eyBnaXRodWIucmVmX25hbWUgfX1cXFxcbkNvbW1pdDogJHt7IGdpdGh1Yi5zaGEgfX1cIicsXG4gICAgICAgICAgICAgICAgICAnaWYgWyAtbiBcIiRXRUJTSVRFX1VSTFwiIF07IHRoZW4nLFxuICAgICAgICAgICAgICAgICAgJyAgTUVTU0FHRT1cIiRNRVNTQUdFXFxcXG7wn4yQIFdlYnNpdGU6IDwkV0VCU0lURV9VUkx8VmlldyBTaXRlPlwiJyxcbiAgICAgICAgICAgICAgICAgICdmaScsXG4gICAgICAgICAgICAgICAgICAnY3VybCAtWCBQT1NUIC1IIFxcJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvblxcJyBcXFxcJyxcbiAgICAgICAgICAgICAgICAgICcgIC0tZGF0YSBcIntcXFxcXCJhdHRhY2htZW50c1xcXFxcIjpbe1xcXFxcImNvbG9yXFxcXFwiOlxcXFxcIiRDT0xPUlxcXFxcIixcXFxcXCJ0ZXh0XFxcXFwiOlxcXFxcIiRNRVNTQUdFXFxcXFwifV19XCIgXFxcXCcsXG4gICAgICAgICAgICAgICAgICAnICAke3sgc2VjcmV0cy5TTEFDS19DSEFOTkVMIH19JyxcbiAgICAgICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -93,5 +93,5 @@ class StagingDeployWorkflow extends projen_1.YamlFile {
|
|
|
93
93
|
}
|
|
94
94
|
exports.StagingDeployWorkflow = StagingDeployWorkflow;
|
|
95
95
|
_a = JSII_RTTI_SYMBOL_1;
|
|
96
|
-
StagingDeployWorkflow[_a] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.
|
|
96
|
+
StagingDeployWorkflow[_a] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.6.1" };
|
|
97
97
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2luZ0RlcGxveVdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1N0YWdpbmdEZXBsb3lXb3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQVVsQyxNQUFhLHFCQUFzQixTQUFRLGlCQUFRO0lBQ2pELFlBQVksT0FBNEIsRUFBRSxPQUFxQztRQUM3RSxLQUFLLENBQUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFO1lBQ3JELE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsRUFBRSxFQUFFO29CQUNGLElBQUksRUFBRTt3QkFDSixRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ25CO2lCQUNGO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxVQUFVLEVBQUUsT0FBTztvQkFDbkIsVUFBVSxFQUFFLE1BQU07aUJBQ25CO2dCQUNELElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUU7d0JBQ04sU0FBUyxFQUFFLGVBQWU7d0JBQzFCLE9BQU8sRUFBRTs0QkFDUDtnQ0FDRSxJQUFJLEVBQUUsVUFBVTtnQ0FDaEIsSUFBSSxFQUFFLHFCQUFxQjs2QkFDNUI7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLGVBQWU7Z0NBQ3JCLElBQUksRUFBRSx1QkFBdUI7Z0NBQzdCLElBQUksRUFBRTtvQ0FDSixjQUFjLEVBQUUsSUFBSTtpQ0FDckI7NkJBQ0Y7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLDJCQUEyQjtnQ0FDakMsSUFBSSxFQUFFLDBDQUEwQztnQ0FDaEQsSUFBSSxFQUFFO29DQUNKLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxPQUFPO29DQUNqQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFNBQVM7aUNBQ2hDOzZCQUNGOzRCQUNEO2dDQUNFLElBQUksRUFBRSxzQkFBc0I7Z0NBQzVCLEdBQUcsRUFBRSxnQ0FBZ0M7NkJBQ3RDOzRCQUNEO2dDQUNFLElBQUksRUFBRSxvQkFBb0I7Z0NBQzFCLEdBQUcsRUFBRSwrQkFBK0IsT0FBTyxDQUFDLG1CQUFtQiw0RUFBNEU7NkJBQzVJOzRCQUNEO2dDQUNFLElBQUksRUFBRSxtQkFBbUI7Z0NBQ3pCLEVBQUUsRUFBRSxRQUFRO2dDQUNaLEdBQUcsRUFBRSxzQkFBc0IsT0FBTyxDQUFDLFdBQVcsbUVBQW1FOzZCQUNsSDs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsaUJBQWlCO2dDQUN2QixFQUFFLEVBQUUsU0FBUztnQ0FDYixHQUFHLEVBQUU7b0NBQ0gsc0VBQXNFO29DQUN0RSxtREFBbUQ7b0NBQ25ELGtDQUFrQztpQ0FDbkMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzZCQUNiOzRCQUNEO2dDQUNFLElBQUksRUFBRSxjQUFjO2dDQUNwQixFQUFFLEVBQUUsVUFBVTtnQ0FDZCxHQUFHLEVBQUU7b0NBQ0gsNEJBQTRCO29DQUM1QixjQUFjO29DQUNkLHFDQUFxQztvQ0FDckMsa0JBQWtCO29DQUNsQixJQUFJO29DQUNKLHdEQUF3RDtvQ0FDeEQsaUlBQWlJO29DQUNqSSxnQ0FBZ0M7b0NBQ2hDLDZEQUE2RDtvQ0FDN0QsSUFBSTtvQ0FDSix1REFBdUQ7b0NBQ3ZELDBGQUEwRjtvQ0FDMUYsZ0NBQWdDO2lDQUNqQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7NkJBQ2I7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBckZILHNEQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFlhbWxGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2luZ0RlcGxveVdvcmtmbG93T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgYXdzUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsZXJrUHVibGlzaGFibGVLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFN0YWdpbmdEZXBsb3lXb3JrZmxvdyBleHRlbmRzIFlhbWxGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCwgb3B0aW9uczogU3RhZ2luZ0RlcGxveVdvcmtmbG93T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsICcuZ2l0aHViL3dvcmtmbG93cy9zdGFnaW5nLWRlcGxveS55bWwnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiAnU3RhZ2luZyBEZXBsb3knLFxuICAgICAgICBvbjoge1xuICAgICAgICAgIHB1c2g6IHtcbiAgICAgICAgICAgIGJyYW5jaGVzOiBbJ21haW4nXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgICdpZC10b2tlbic6ICd3cml0ZScsXG4gICAgICAgICAgJ2NvbnRlbnRzJzogJ3JlYWQnLFxuICAgICAgICB9LFxuICAgICAgICBqb2JzOiB7XG4gICAgICAgICAgZGVwbG95OiB7XG4gICAgICAgICAgICAncnVucy1vbic6ICd1YnVudHUtbGF0ZXN0JyxcbiAgICAgICAgICAgICdzdGVwcyc6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NldHVwIE5vZGUuanMnLFxuICAgICAgICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL3NldHVwLW5vZGVAdjUnLFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgICdub2RlLXZlcnNpb24nOiAnMjQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlndXJlIEFXUyBjcmVkZW50aWFscycsXG4gICAgICAgICAgICAgICAgdXNlczogJ2F3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjQnLFxuICAgICAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IG9wdGlvbnMucm9sZUFybixcbiAgICAgICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogb3B0aW9ucy5hd3NSZWdpb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgICAgICAgICAgICAgcnVuOiAneWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgY29uZmlnLmpzb24nLFxuICAgICAgICAgICAgICAgIHJ1bjogYGpxICcuY2xlcmtQdWJsaXNoYWJsZUtleSA9IFwiJHtvcHRpb25zLmNsZXJrUHVibGlzaGFibGVLZXl9XCInIHdlYi9wdWJsaWMvY29uZmlnLmpzb24gPiB0bXAuanNvbiAmJiBtdiB0bXAuanNvbiB3ZWIvcHVibGljL2NvbmZpZy5qc29uYCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEZXBsb3kgdG8gc3RhZ2luZycsXG4gICAgICAgICAgICAgICAgaWQ6ICdkZXBsb3knLFxuICAgICAgICAgICAgICAgIHJ1bjogYHlhcm4gY2RrIGRlcGxveSAtZSAke29wdGlvbnMucHJvamVjdE5hbWV9LXN0YWdpbmcgLS1yZXF1aXJlLWFwcHJvdmFsIG5ldmVyIC0tb3V0cHV0cy1maWxlIGNkay1vdXRwdXRzLmpzb25gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0V4dHJhY3Qgb3V0cHV0cycsXG4gICAgICAgICAgICAgICAgaWQ6ICdvdXRwdXRzJyxcbiAgICAgICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgICAgICdXRUJTSVRFX1VSTD0kKGpxIC1yIFxcJy5bXSB8IC5XZWJzaXRlVXJsIC8vIGVtcHR5XFwnIGNkay1vdXRwdXRzLmpzb24pJyxcbiAgICAgICAgICAgICAgICAgICdlY2hvIFwid2Vic2l0ZV91cmw9JFdFQlNJVEVfVVJMXCIgPj4gJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJXZWJzaXRlIFVSTDogJFdFQlNJVEVfVVJMXCInLFxuICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnTm90aWZ5IFNsYWNrJyxcbiAgICAgICAgICAgICAgICBpZjogJ2Fsd2F5cygpJyxcbiAgICAgICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgICAgICdTVEFUVVM9XCIke3sgam9iLnN0YXR1cyB9fVwiJyxcbiAgICAgICAgICAgICAgICAgICdDT0xPUj1cImdvb2RcIicsXG4gICAgICAgICAgICAgICAgICAnaWYgWyBcIiRTVEFUVVNcIiAhPSBcInN1Y2Nlc3NcIiBdOyB0aGVuJyxcbiAgICAgICAgICAgICAgICAgICcgIENPTE9SPVwiZGFuZ2VyXCInLFxuICAgICAgICAgICAgICAgICAgJ2ZpJyxcbiAgICAgICAgICAgICAgICAgICdXRUJTSVRFX1VSTD1cIiR7eyBzdGVwcy5vdXRwdXRzLm91dHB1dHMud2Vic2l0ZV91cmwgfX1cIicsXG4gICAgICAgICAgICAgICAgICAnTUVTU0FHRT1cIlN0YWdpbmcgRGVwbG95OiAkU1RBVFVTXFxcXG5SZXBvOiAke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX1cXFxcbkJyYW5jaDogJHt7IGdpdGh1Yi5yZWZfbmFtZSB9fVxcXFxuQ29tbWl0OiAke3sgZ2l0aHViLnNoYSB9fVwiJyxcbiAgICAgICAgICAgICAgICAgICdpZiBbIC1uIFwiJFdFQlNJVEVfVVJMXCIgXTsgdGhlbicsXG4gICAgICAgICAgICAgICAgICAnICBNRVNTQUdFPVwiJE1FU1NBR0VcXFxcbvCfjJAgV2Vic2l0ZTogPCRXRUJTSVRFX1VSTHxWaWV3IFNpdGU+XCInLFxuICAgICAgICAgICAgICAgICAgJ2ZpJyxcbiAgICAgICAgICAgICAgICAgICdjdXJsIC1YIFBPU1QgLUggXFwnQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uXFwnIFxcXFwnLFxuICAgICAgICAgICAgICAgICAgJyAgLS1kYXRhIFwie1xcXFxcImF0dGFjaG1lbnRzXFxcXFwiOlt7XFxcXFwiY29sb3JcXFxcXCI6XFxcXFwiJENPTE9SXFxcXFwiLFxcXFxcInRleHRcXFxcXCI6XFxcXFwiJE1FU1NBR0VcXFxcXCJ9XX1cIiBcXFxcJyxcbiAgICAgICAgICAgICAgICAgICcgICR7eyBzZWNyZXRzLlNMQUNLX0NIQU5ORUwgfX0nLFxuICAgICAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
package/lib/ViteReactProject.js
CHANGED
|
@@ -306,30 +306,24 @@ class ConfigJsonFile extends projen_1.SampleFile {
|
|
|
306
306
|
/**
|
|
307
307
|
* Creates the index.html file
|
|
308
308
|
*/
|
|
309
|
-
class IndexHtml extends projen_1.
|
|
309
|
+
class IndexHtml extends projen_1.SampleFile {
|
|
310
310
|
constructor(project, options) {
|
|
311
311
|
super(project, 'index.html', {
|
|
312
|
-
|
|
313
|
-
readonly: true,
|
|
314
|
-
});
|
|
315
|
-
this.title = options.title;
|
|
316
|
-
this.srcdir = options.srcdir;
|
|
317
|
-
}
|
|
318
|
-
synthesizeContent() {
|
|
319
|
-
return `<!doctype html>
|
|
312
|
+
contents: `<!doctype html>
|
|
320
313
|
<html lang="en">
|
|
321
314
|
<head>
|
|
322
315
|
<meta charset="UTF-8" />
|
|
323
316
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
324
317
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
325
|
-
<title>${
|
|
318
|
+
<title>${options.title}</title>
|
|
326
319
|
</head>
|
|
327
320
|
<body>
|
|
328
321
|
<div id="root"></div>
|
|
329
|
-
<script type="module" src="/${
|
|
322
|
+
<script type="module" src="/${options.srcdir}/main.tsx"></script>
|
|
330
323
|
</body>
|
|
331
324
|
</html>
|
|
332
|
-
|
|
325
|
+
`,
|
|
326
|
+
});
|
|
333
327
|
}
|
|
334
328
|
}
|
|
335
329
|
/**
|
|
@@ -651,4 +645,4 @@ html, body, #root {
|
|
|
651
645
|
});
|
|
652
646
|
}
|
|
653
647
|
}
|
|
654
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZVJlYWN0UHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlUmVhY3RQcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUEwQztBQUMxQyxtQ0FBc0Y7QUFDdEYsc0RBQXVGO0FBNEJ2Rjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsaUNBQW9CO0lBTXhELFlBQVksT0FBZ0M7UUFDMUMsTUFBTSxFQUNKLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLE1BQU0sR0FBRyxLQUFLLEVBQ2QsU0FBUyxHQUFHLFFBQVEsRUFDcEIsS0FBSyxFQUNMLEdBQUcsV0FBVyxFQUNmLEdBQUcsT0FBTyxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQ0osR0FBRyxXQUFXO1lBQ2QsVUFBVSxFQUFFLEtBQUssRUFBRSxxQ0FBcUM7WUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxtQ0FBbUM7WUFDbEQsSUFBSSxFQUFFLEtBQUssRUFBRSw2QkFBNkI7WUFDMUMsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsSUFBSSxFQUFFLGtDQUFrQztZQUN6RCxJQUFJLEVBQUU7Z0JBQ0osb0JBQW9CO2dCQUNwQix1QkFBdUI7Z0JBQ3ZCLHNCQUFzQjtnQkFDdEIsY0FBYztnQkFDZCxTQUFTO2dCQUNULGFBQWE7YUFDZDtTQUNGLENBQUMsQ0FBQztRQUVILG1DQUFtQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBRTlDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLHFCQUFxQjtRQUNyQixJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdDZjtTQUNJLENBQUMsQ0FBQztRQUVILGtCQUFrQjtRQUNsQixJQUFJLG1CQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sV0FBVyxFQUFFO1lBQ3BELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMENmO1NBQ0ksQ0FBQyxDQUFDO1FBRUgsbUJBQW1CO1FBQ25CLElBQUksbUJBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxZQUFZLEVBQUU7WUFDckQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdEZjtTQUNJLENBQUMsQ0FBQztJQUVMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbGF0aXZlLCBiYXNlbmFtZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBGaWxlQmFzZSwgSnNvbkZpbGUsIFByb2plY3QsIFNhbXBsZUZpbGUsIFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tICdwcm9qZW4vbGliL3R5cGVzY3JpcHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpdGVSZWFjdFByb2plY3RPcHRpb25zIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZ2VuZXJhdGUgc2FtcGxlIGNvZGVcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvdXJjZSBkaXJlY3RvcnlcbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgZGlyZWN0b3J5IGZvciBzdGF0aWMgYXNzZXRzXG4gICAqIEBkZWZhdWx0IFwicHVibGljXCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0Rpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGl0bGUgZm9yIHRoZSBIVE1MIHBhZ2VcbiAgICogQGRlZmF1bHQgcHJvamVjdCBuYW1lXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBWaXRlICsgUmVhY3QgVHlwZVNjcmlwdCBwcm9qZWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBWaXRlUmVhY3RQcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwdWJsaWNEaXI6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGRldkNvbW1hbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdGaWVsZHM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogVml0ZVJlYWN0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzYW1wbGVDb2RlID0gdHJ1ZSxcbiAgICAgIHNyY2RpciA9ICdzcmMnLFxuICAgICAgcHVibGljRGlyID0gJ3B1YmxpYycsXG4gICAgICB0aXRsZSxcbiAgICAgIC4uLnJlc3RPcHRpb25zXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ucmVzdE9wdGlvbnMsXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSwgLy8gV2UnbGwgaGFuZGxlIHNhbXBsZSBjb2RlIG91cnNlbHZlc1xuICAgICAgZXNsaW50OiBmYWxzZSwgLy8gV2UnbGwgY29uZmlndXJlIGVzbGludCBvdXJzZWx2ZXNcbiAgICAgIGplc3Q6IGZhbHNlLCAvLyBWaXRlIHVzZXMgdml0ZXN0IHR5cGljYWxseVxuICAgICAgcGFja2FnZTogdHJ1ZSxcbiAgICAgIGRpc2FibGVUc2NvbmZpZzogdHJ1ZSwgLy8gV2UnbGwgbWFuYWdlIHRzY29uZmlnIG91cnNlbHZlc1xuICAgICAgZGVwczogW1xuICAgICAgICAnQGNsZXJrL2NsZXJrLXJlYWN0JyxcbiAgICAgICAgJ0B0YW5zdGFjay9yZWFjdC1xdWVyeScsXG4gICAgICAgICdAdGFpbHdpbmRjc3MvcG9zdGNzcycsXG4gICAgICAgICdhdXRvcHJlZml4ZXInLFxuICAgICAgICAncG9zdGNzcycsXG4gICAgICAgICd0YWlsd2luZGNzcycsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjb25maWcgZmllbGRzIHN0b3JhZ2VcbiAgICB0aGlzLmNvbmZpZ0ZpZWxkcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICB0aGlzLnNyY2RpciA9IHNyY2RpcjtcbiAgICB0aGlzLnB1YmxpY0RpciA9IHB1YmxpY0RpcjtcblxuICAgIC8vIEFkZCBWaXRlIGNvbXBvbmVudFxuICAgIG5ldyBWaXRlQ29tcG9uZW50KHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgRVNMaW50IGNvbmZpZ3VyYXRpb25cbiAgICBuZXcgVml0ZUVzbGludENvbmZpZyh0aGlzKTtcblxuICAgIC8vIEFkZCBpbmRleC5odG1sXG4gICAgbmV3IEluZGV4SHRtbCh0aGlzLCB7XG4gICAgICB0aXRsZTogdGl0bGUgPz8gdGhpcy5uYW1lLFxuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGNvbmZpZ3NcbiAgICBuZXcgVml0ZVRzQ29uZmlncyh0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIC5naXRpZ25vcmUgZW50cmllc1xuICAgIHRoaXMuZ2l0aWdub3JlPy5hZGRQYXR0ZXJucygnZGlzdCcsICdkaXN0LXNzcicsICcqLmxvY2FsJyk7XG5cbiAgICAvLyBBZGQgdml0ZS1lbnYuZC50cyBmb3IgdHlwZSBkZWNsYXJhdGlvbnNcbiAgICBuZXcgVml0ZUVudkR0cyh0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFBvc3RDU1MgY29uZmlnIGZvciBUYWlsd2luZFxuICAgIG5ldyBQb3N0Q1NTQ29uZmlnRmlsZSh0aGlzKTtcblxuICAgIC8vIEFkZCBjb25maWcudHMgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvblxuICAgIG5ldyBDb25maWdGaWxlKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgc2FtcGxlIGNvbmZpZy5qc29uXG4gICAgbmV3IENvbmZpZ0pzb25GaWxlKHRoaXMsIHsgfSk7XG5cblxuICAgIC8vIEFkZCBzYW1wbGUgY29kZSBpZiByZXF1ZXN0ZWRcbiAgICBpZiAoc2FtcGxlQ29kZSkge1xuICAgICAgbmV3IFZpdGVTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgICAgcHVibGljRGlyOiB0aGlzLnB1YmxpY0RpcixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVzZSByZWxhdGl2ZSBwYXRoIGZvciBkZXZDb21tYW5kXG4gICAgY29uc3QgcmVsYXRpdmVPdXRkaXIgPSB0aGlzLnBhcmVudFxuICAgICAgPyByZWxhdGl2ZSh0aGlzLnBhcmVudC5vdXRkaXIsIHRoaXMub3V0ZGlyKVxuICAgICAgOiBiYXNlbmFtZSh0aGlzLm91dGRpcik7XG4gICAgdGhpcy5kZXZDb21tYW5kID0gYGNkICR7cmVsYXRpdmVPdXRkaXJ9ICYmIHlhcm4gZGV2YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gZmllbGQgdG8gdGhlIENvbmZpZyB0eXBlXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZFR5cGUgVGhlIFR5cGVTY3JpcHQgdHlwZSBvZiB0aGUgZmllbGQgKGUuZy4sICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnc3RyaW5nW10nKVxuICAgKiBAcmV0dXJucyB0aGlzIHByb2plY3QgaW5zdGFuY2UgZm9yIGNoYWluaW5nXG4gICAqL1xuICBhZGRDb25maWdGaWVsZChmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZ0ZpZWxkcy5zZXQoZmllbGROYW1lLCBmaWVsZFR5cGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29uZmlnIGZpZWxkcyBtYXAgKGZvciBpbnRlcm5hbCB1c2UgYnkgQ29uZmlnRmlsZSlcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXRDb25maWdGaWVsZHMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnRmllbGRzO1xuICB9XG59XG5cbmludGVyZmFjZSBWaXRlQ29tcG9uZW50T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgVml0ZSBkZXBlbmRlbmNpZXMgYW5kIHNjcmlwdHNcbiAqL1xuY2xhc3MgVml0ZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBfb3B0aW9uczogVml0ZUNvbXBvbmVudE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHRzUHJvamVjdCA9IHByb2plY3QgYXMgVHlwZVNjcmlwdEFwcFByb2plY3Q7XG5cbiAgICAvLyBTZXQgcGFja2FnZSB0eXBlIHRvIG1vZHVsZSBmb3IgRVNNIHN1cHBvcnRcbiAgICB0c1Byb2plY3QucGFja2FnZS5hZGRGaWVsZCgndHlwZScsICdtb2R1bGUnKTtcblxuICAgIC8vIEFkZCBSZWFjdCBkZXBlbmRlbmNpZXNcbiAgICB0c1Byb2plY3QuYWRkRGVwcygncmVhY3RAXjE5LjIuMCcsICdyZWFjdC1kb21AXjE5LjIuMCcpO1xuXG4gICAgLy8gQWRkIGRldiBkZXBlbmRlbmNpZXNcbiAgICB0c1Byb2plY3QuYWRkRGV2RGVwcyhcbiAgICAgICdAdHlwZXMvcmVhY3RAXjE5LjIuMicsXG4gICAgICAnQHR5cGVzL3JlYWN0LWRvbUBeMTkuMi4yJyxcbiAgICAgICdAdml0ZWpzL3BsdWdpbi1yZWFjdEBeNS4xLjAnLFxuICAgICAgJ3ZpdGVAXjUuNC4wJyxcbiAgICAgICd0eXBlc2NyaXB0QH41LjkuMycsXG4gICAgICAnQGVzbGludC9qc0BeOS4zOS4xJyxcbiAgICAgICdlc2xpbnRAXjkuMzkuMScsXG4gICAgICAnZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rc0BeNS4yLjAnLFxuICAgICAgJ2VzbGludC1wbHVnaW4tcmVhY3QtcmVmcmVzaEBeMC40LjI0JyxcbiAgICAgICdnbG9iYWxzQF4xNi41LjAnLFxuICAgICAgJ3R5cGVzY3JpcHQtZXNsaW50QF44LjQ2LjMnLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgdml0ZS5jb25maWcudHMgYXMgYSBtYW5hZ2VkIGZpbGVcbiAgICBuZXcgVml0ZUNvbmZpZ0ZpbGUocHJvamVjdCk7XG5cbiAgICAvLyBBZGQgc2NyaXB0c1xuICAgIHRzUHJvamVjdC5hZGRUYXNrKCdkZXYnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0IGRldmVsb3BtZW50IHNlcnZlcicsXG4gICAgICBleGVjOiAndml0ZScsXG4gICAgfSk7XG5cbiAgICAvLyBSZW1vdmUgYW5kIHJlY3JlYXRlIGJ1aWxkIHRhc2sgdG8gY3VzdG9taXplIGl0IGZvciBWaXRlXG4gICAgdHNQcm9qZWN0LnJlbW92ZVRhc2soJ2J1aWxkJyk7XG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2J1aWxkJywge1xuICAgICAgZGVzY3JpcHRpb246ICdCdWlsZCBmb3IgcHJvZHVjdGlvbicsXG4gICAgICBleGVjOiAndHNjIC1iICYmIHZpdGUgYnVpbGQnLFxuICAgIH0pO1xuXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ3ByZXZpZXcnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZXZpZXcgcHJvZHVjdGlvbiBidWlsZCcsXG4gICAgICBleGVjOiAndml0ZSBwcmV2aWV3JyxcbiAgICB9KTtcblxuICAgIHRzUHJvamVjdC5hZGRUYXNrKCdsaW50Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdMaW50IGNvZGUnLFxuICAgICAgZXhlYzogJ2VzbGludCAuJyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEVTTGludCBjb25maWd1cmF0aW9uIGZvciBWaXRlICsgUmVhY3RcbiAqL1xuY2xhc3MgVml0ZUVzbGludENvbmZpZyBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsICdlc2xpbnQuY29uZmlnLmpzJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgaW1wb3J0IGpzIGZyb20gJ0Blc2xpbnQvanMnXG5pbXBvcnQgZ2xvYmFscyBmcm9tICdnbG9iYWxzJ1xuaW1wb3J0IHJlYWN0SG9va3MgZnJvbSAnZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rcydcbmltcG9ydCByZWFjdFJlZnJlc2ggZnJvbSAnZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoJ1xuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50J1xuXG5leHBvcnQgZGVmYXVsdCBbXG4gIHsgaWdub3JlczogWydkaXN0J10gfSxcbiAge1xuICAgIGZpbGVzOiBbJyoqLyoue3RzLHRzeH0nXSxcbiAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgIGVjbWFWZXJzaW9uOiAyMDIwLFxuICAgICAgZ2xvYmFsczogZ2xvYmFscy5icm93c2VyLFxuICAgIH0sXG4gICAgcGx1Z2luczoge1xuICAgICAgJ3JlYWN0LWhvb2tzJzogcmVhY3RIb29rcyxcbiAgICAgICdyZWFjdC1yZWZyZXNoJzogcmVhY3RSZWZyZXNoLFxuICAgIH0sXG4gICAgcnVsZXM6IHtcbiAgICAgIC4uLnJlYWN0SG9va3MuY29uZmlncy5yZWNvbW1lbmRlZC5ydWxlcyxcbiAgICAgICdyZWFjdC1yZWZyZXNoL29ubHktZXhwb3J0LWNvbXBvbmVudHMnOiBbXG4gICAgICAgICd3YXJuJyxcbiAgICAgICAgeyBhbGxvd0NvbnN0YW50RXhwb3J0OiB0cnVlIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG4gIGpzLmNvbmZpZ3MucmVjb21tZW5kZWQsXG4gIC4uLnRzZXNsaW50LmNvbmZpZ3MucmVjb21tZW5kZWQsXG5dXG5gO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgdml0ZS5jb25maWcudHMgZmlsZVxuICovXG5jbGFzcyBWaXRlQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsICd2aXRlLmNvbmZpZy50cycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYGltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgcmVhY3QgZnJvbSAnQHZpdGVqcy9wbHVnaW4tcmVhY3QnXG5cbi8vIGh0dHBzOi8vdml0ZS5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW3JlYWN0KCldLFxufSlcbmA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBwb3N0Y3NzLmNvbmZpZy5qcyBmaWxlIGZvciBUYWlsd2luZCBDU1MgdjRcbiAqL1xuY2xhc3MgUG9zdENTU0NvbmZpZ0ZpbGUgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAncG9zdGNzcy5jb25maWcuanMnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHN5bnRoZXNpemVDb250ZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGBleHBvcnQgZGVmYXVsdCB7XG4gIHBsdWdpbnM6IHtcbiAgICBcIkB0YWlsd2luZGNzcy9wb3N0Y3NzXCI6IHt9LFxuICAgIGF1dG9wcmVmaXhlcjoge30sXG4gIH0sXG59XG5gO1xuICB9XG59XG5cbmludGVyZmFjZSBWaXRlRW52RHRzT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHZpdGUtZW52LmQudHMgZmlsZSBmb3IgdHlwZSBkZWNsYXJhdGlvbnNcbiAqL1xuY2xhc3MgVml0ZUVudkR0cyBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogVml0ZUVudkR0c09wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vdml0ZS1lbnYuZC50c2AsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYC8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZS9jbGllbnRcIiAvPlxuYDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ29uZmlnRmlsZU9wdGlvbnMge1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb25maWcudHMgZmlsZSBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uXG4gKi9cbmNsYXNzIENvbmZpZ0ZpbGUgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IENvbmZpZ0ZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L2NvbmZpZy50c2AsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBHZXQgY3VzdG9tIGNvbmZpZyBmaWVsZHMgZnJvbSBwYXJlbnQgcHJvamVjdFxuICAgIGNvbnN0IHZpdGVQcm9qZWN0ID0gdGhpcy5wcm9qZWN0IGFzIFZpdGVSZWFjdFByb2plY3Q7XG4gICAgY29uc3QgY3VzdG9tRmllbGRzID0gdml0ZVByb2plY3QuZ2V0Q29uZmlnRmllbGRzKCk7XG5cbiAgICAvLyBHZW5lcmF0ZSBiYXNlIGNvbmZpZyB0eXBlXG4gICAgY29uc3QgYmFzZUNvbmZpZ1R5cGUgPSBgdHlwZSBCYXNlQ29uZmlnID0ge1xuICBjbGVya1B1Ymxpc2hhYmxlS2V5OiBzdHJpbmc7XG4gIGFwaUJhc2VVcmw6IHN0cmluZztcbiAgdGltZW91dDogbnVtYmVyO1xufWA7XG5cbiAgICAvLyBHZW5lcmF0ZSBjdXN0b20gZmllbGRzIHR5cGUgaWYgYW55IGV4aXN0XG4gICAgbGV0IGNvbmZpZ1R5cGVEZWZpbml0aW9uOiBzdHJpbmc7XG4gICAgaWYgKGN1c3RvbUZpZWxkcy5zaXplID4gMCkge1xuICAgICAgY29uc3QgZmllbGREZWZpbml0aW9ucyA9IEFycmF5LmZyb20oY3VzdG9tRmllbGRzLmVudHJpZXMoKSlcbiAgICAgICAgLm1hcCgoW25hbWUsIHR5cGVdKSA9PiBgICAke25hbWV9OiAke3R5cGV9O2ApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgICAgY29uc3QgY3VzdG9tRmllbGRzVHlwZSA9IGB0eXBlIEN1c3RvbUNvbmZpZyA9IHtcbiR7ZmllbGREZWZpbml0aW9uc31cbn1gO1xuXG4gICAgICBjb25maWdUeXBlRGVmaW5pdGlvbiA9IGAke2N1c3RvbUZpZWxkc1R5cGV9XG5cbmV4cG9ydCB0eXBlIENvbmZpZyA9IEJhc2VDb25maWcgJiBDdXN0b21Db25maWc7YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnVHlwZURlZmluaXRpb24gPSAnZXhwb3J0IHR5cGUgQ29uZmlnID0gQmFzZUNvbmZpZzsnO1xuICAgIH1cblxuICAgIHJldHVybiBgaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuJHtiYXNlQ29uZmlnVHlwZX1cblxuJHtjb25maWdUeXBlRGVmaW5pdGlvbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbmZpZygpIHtcbiAgY29uc3QgW2xvYWRlZENvbmZpZywgc2V0TG9hZGVkQ29uZmlnXSA9IHVzZVN0YXRlPENvbmZpZ3x1bmRlZmluZWQ+KCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxvYWRlZENvbmZpZykge1xuICAgICAgZmV0Y2goJy9jb25maWcuanNvbicsIHsgY2FjaGU6ICduby1zdG9yZScgfSkudGhlbihyZXNwb25zZT0+e1xuICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoY29uZmlnKSA9PiB7XG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHNldExvYWRlZENvbmZpZyhjb25maWcpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB9XG4gIH0sIFtsb2FkZWRDb25maWddKTtcblxuICByZXR1cm4geyBjb25maWc6IGxvYWRlZENvbmZpZywgaXNMb2FkaW5nIH07XG59XG5gO1xuICB9XG59XG5cbmludGVyZmFjZSBDb25maWdKc29uRmlsZU9wdGlvbnMge31cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb25maWcuanNvbiBzYW1wbGUgZmlsZSBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uXG4gKi9cbmNsYXNzIENvbmZpZ0pzb25GaWxlIGV4dGVuZHMgU2FtcGxlRmlsZSB7XG4gIHBhdGg6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHJvamVjdDogVml0ZVJlYWN0UHJvamVjdCwgX29wdGlvbnM6IENvbmZpZ0pzb25GaWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIGAke3Byb2plY3QucHVibGljRGlyfS9jb25maWcuanNvbmAsIHtcbiAgICAgIGNvbnRlbnRzOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGFwaUJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpJyxcbiAgICAgICAgY2xlcmtQdWJsaXNoYWJsZUtleTogJ3RiZCcsXG4gICAgICB9LCBudWxsLCAyKSxcbiAgICB9KTtcbiAgICB0aGlzLnBhdGggPSBgJHtwcm9qZWN0LnB1YmxpY0Rpcn0vY29uZmlnLmpzb25gO1xuICB9XG59XG5cbmludGVyZmFjZSBJbmRleEh0bWxPcHRpb25zIHtcbiAgcmVhZG9ubHkgdGl0bGU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgaW5kZXguaHRtbCBmaWxlXG4gKi9cbmNsYXNzIEluZGV4SHRtbCBleHRlbmRzIEZpbGVCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEluZGV4SHRtbE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnaW5kZXguaHRtbCcsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy50aXRsZSA9IG9wdGlvbnMudGl0bGU7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcbiAgfVxuXG4gIHN5bnRoZXNpemVDb250ZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGA8IWRvY3R5cGUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuICA8aGVhZD5cbiAgICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIiAvPlxuICAgIDxsaW5rIHJlbD1cImljb25cIiB0eXBlPVwiaW1hZ2Uvc3ZnK3htbFwiIGhyZWY9XCIvdml0ZS5zdmdcIiAvPlxuICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCIgLz5cbiAgICA8dGl0bGU+JHt0aGlzLnRpdGxlfTwvdGl0bGU+XG4gIDwvaGVhZD5cbiAgPGJvZHk+XG4gICAgPGRpdiBpZD1cInJvb3RcIj48L2Rpdj5cbiAgICA8c2NyaXB0IHR5cGU9XCJtb2R1bGVcIiBzcmM9XCIvJHt0aGlzLnNyY2Rpcn0vbWFpbi50c3hcIj48L3NjcmlwdD5cbiAgPC9ib2R5PlxuPC9odG1sPlxuYDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgVml0ZVRzQ29uZmlnc09wdGlvbnMge1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIFZpdGVcbiAqL1xuY2xhc3MgVml0ZVRzQ29uZmlncyBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFZpdGVUc0NvbmZpZ3NPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyBNYWluIHRzY29uZmlnLmpzb24gKHByb2plY3QgcmVmZXJlbmNlcylcbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgJ3RzY29uZmlnLmpzb24nLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBmaWxlczogW10sXG4gICAgICAgIHJlZmVyZW5jZXM6IFtcbiAgICAgICAgICB7IHBhdGg6ICcuL3RzY29uZmlnLmFwcC5qc29uJyB9LFxuICAgICAgICAgIHsgcGF0aDogJy4vdHNjb25maWcubm9kZS5qc29uJyB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIHRzY29uZmlnLmFwcC5qc29uIChmb3IgYXBwbGljYXRpb24gY29kZSlcbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgJ3RzY29uZmlnLmFwcC5qc29uJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgdGFyZ2V0OiAnRVMyMDIwJyxcbiAgICAgICAgICB1c2VEZWZpbmVGb3JDbGFzc0ZpZWxkczogdHJ1ZSxcbiAgICAgICAgICBsaWI6IFsnRVMyMDIwJywgJ0RPTScsICdET00uSXRlcmFibGUnXSxcbiAgICAgICAgICBtb2R1bGU6ICdFU05leHQnLFxuICAgICAgICAgIHNraXBMaWJDaGVjazogdHJ1ZSxcblxuICAgICAgICAgIC8vIEJ1bmRsZXIgbW9kZVxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246ICdidW5kbGVyJyxcbiAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgbW9kdWxlRGV0ZWN0aW9uOiAnZm9yY2UnLFxuICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcbiAgICAgICAgICBqc3g6ICdyZWFjdC1qc3gnLFxuXG4gICAgICAgICAgLy8gTGludGluZ1xuICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICBub1VudXNlZExvY2FsczogdHJ1ZSxcbiAgICAgICAgICBub1VudXNlZFBhcmFtZXRlcnM6IHRydWUsXG4gICAgICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IHRydWUsXG4gICAgICAgICAgbm9VbmNoZWNrZWRTaWRlRWZmZWN0SW1wb3J0czogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5jbHVkZTogW29wdGlvbnMuc3JjZGlyXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyB0c2NvbmZpZy5ub2RlLmpzb24gKGZvciBWaXRlIGNvbmZpZylcbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgJ3RzY29uZmlnLm5vZGUuanNvbicsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHRhcmdldDogJ0VTMjAyMicsXG4gICAgICAgICAgbGliOiBbJ0VTMjAyMyddLFxuICAgICAgICAgIG1vZHVsZTogJ0VTTmV4dCcsXG4gICAgICAgICAgc2tpcExpYkNoZWNrOiB0cnVlLFxuXG4gICAgICAgICAgLy8gQnVuZGxlciBtb2RlXG4gICAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogJ2J1bmRsZXInLFxuICAgICAgICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICAgIGlzb2xhdGVkTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgICBtb2R1bGVEZXRlY3Rpb246ICdmb3JjZScsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgICAgICAgLy8gTGludGluZ1xuICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICBub1VudXNlZExvY2FsczogdHJ1ZSxcbiAgICAgICAgICBub1VudXNlZFBhcmFtZXRlcnM6IHRydWUsXG4gICAgICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluY2x1ZGU6IFsndml0ZS5jb25maWcudHMnXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVTYW1wbGVDb2RlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuICByZWFkb25seSBwdWJsaWNEaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgc2FtcGxlIGNvZGUgZm9yIGEgVml0ZSArIFJlYWN0IHByb2plY3RcbiAqL1xuY2xhc3MgVml0ZVNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlU2FtcGxlQ29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8vIENyZWF0ZSBBcHAudHN4XG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L0FwcC50c3hgLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCAnLi9BcHAuY3NzJ1xuaW1wb3J0IHsgU2lnbmVkSW4sIFVzZXJCdXR0b24gfSBmcm9tICdAY2xlcmsvY2xlcmstcmVhY3QnO1xuaW1wb3J0IHsgdXNlQmFzZVF1ZXJ5IH0gZnJvbSBcIi4vc2VydmljZXMvQmFzZVNlcnZpY2UudHNcIjtcblxuXG5mdW5jdGlvbiBBcHAoKSB7XG4gIGNvbnN0IHtkYXRhLCBpc0xvYWRpbmd9ID0gdXNlQmFzZVF1ZXJ5KCcvJywge3JldHJ5T25Nb3VudDogdHJ1ZX0pO1xuXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgICA8aGVhZGVyPlxuXG4gICAgICAgICAgPFNpZ25lZEluPlxuICAgICAgICAgICAgPFVzZXJCdXR0b24vPlxuICAgICAgICAgIDwvU2lnbmVkSW4+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmRcIj5cbiAgICAgICAgICB7IGlzTG9hZGluZyA/ICdMb2FkaW5nLi4uJyA6IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwgLCl9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcFxuYCxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBCYXNlU2VydmljZS50c1xuICAgIG5ldyBUZXh0RmlsZShwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vc2VydmljZXMvQmFzZVNlcnZpY2UudHNgLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgICdpbXBvcnQgeyB1c2VRdWVyeSwgVXNlUXVlcnlPcHRpb25zIH0gZnJvbSBcXCdAdGFuc3RhY2svcmVhY3QtcXVlcnlcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IHVzZUF1dGggfSBmcm9tIFxcJ0BjbGVyay9jbGVyay1yZWFjdFxcJzsnLFxuICAgICAgICAnaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSBcXCcuLi9jb25maWdcXCc7JyxcbiAgICAgICAgJycsXG4gICAgICAgICdleHBvcnQgZnVuY3Rpb24gdXNlQmFzZVF1ZXJ5PFREYXRhID0gdW5rbm93bj4oJyxcbiAgICAgICAgJyAgcGF0aDogc3RyaW5nLCcsXG4gICAgICAgICcgIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxURGF0YT4sIFxcJ3F1ZXJ5S2V5XFwnIHwgXFwncXVlcnlGblxcJz4nLFxuICAgICAgICAnKSB7JyxcbiAgICAgICAgJyAgY29uc3QgeyBjb25maWcgfSA9IHVzZUNvbmZpZygpOycsXG4gICAgICAgICcgIGNvbnN0IHsgZ2V0VG9rZW4gfSA9IHVzZUF1dGgoKTsnLFxuICAgICAgICAnJyxcbiAgICAgICAgJyAgcmV0dXJuIHVzZVF1ZXJ5PFREYXRhPih7JyxcbiAgICAgICAgJyAgICBxdWVyeUtleTogW1xcJ2Jhc2VcXCddLCcsXG4gICAgICAgICcgICAgcXVlcnlGbjogYXN5bmMgKCkgPT4geycsXG4gICAgICAgICcgICAgICBpZiAoIWNvbmZpZz8uYXBpQmFzZVVybCkgeycsXG4gICAgICAgICcgICAgICAgIHRocm93IG5ldyBFcnJvcihcXCdBUEkgYmFzZSBVUkwgbm90IGNvbmZpZ3VyZWRcXCcpOycsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldFRva2VuKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgICAvLyBOb3JtYWxpemUgVVJMIGJ5IHJlbW92aW5nIHRyYWlsaW5nIHNsYXNoIGZyb20gYmFzZVVybCBhbmQgZW5zdXJpbmcgcGF0aCBzdGFydHMgd2l0aCBzbGFzaCcsXG4gICAgICAgICcgICAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnLmFwaUJhc2VVcmwucmVwbGFjZSgvXFxcXC8rJC8sIFxcJ1xcJyk7JyxcbiAgICAgICAgJyAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gcGF0aC5zdGFydHNXaXRoKFxcJy9cXCcpID8gcGF0aCA6IGAvJHtwYXRofWA7JyxcbiAgICAgICAgJyAgICAgICcsXG4gICAgICAgICcgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9JHtub3JtYWxpemVkUGF0aH1gLCB7JyxcbiAgICAgICAgJyAgICAgICAgaGVhZGVyczogeycsXG4gICAgICAgICcgICAgICAgICAgXFwnQXV0aG9yaXphdGlvblxcJzogYEJlYXJlciAke3Rva2VufWAsJyxcbiAgICAgICAgJyAgICAgICAgfSwnLFxuICAgICAgICAnICAgICAgfSk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7JyxcbiAgICAgICAgJyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApOycsXG4gICAgICAgICcgICAgICB9JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOycsXG4gICAgICAgICcgICAgfSwnLFxuICAgICAgICAnICAgIGVuYWJsZWQ6ICEhY29uZmlnPy5hcGlCYXNlVXJsLCcsXG4gICAgICAgICcgICAgLi4ub3B0aW9ucywnLFxuICAgICAgICAnICB9KTsnLFxuICAgICAgICAnfScsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFJvb3RTZXJ2aWNlLnRzXG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L3NlcnZpY2VzL1Jvb3RTZXJ2aWNlLnRzYCwge1xuICAgICAgY29udGVudHM6IGBpbXBvcnQgeyBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgdXNlQmFzZVF1ZXJ5IH0gZnJvbSAnLi9CYXNlU2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VSb290UXVlcnk8VERhdGEgPSB1bmtub3duPihcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFREYXRhPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlQmFzZVF1ZXJ5PFREYXRhPignLycsIG9wdGlvbnMpO1xufVxuYCxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBBcHAuY3NzXG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L0FwcC5jc3NgLCB7XG4gICAgICBjb250ZW50czogYCNyb290IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmxvZ28ge1xuICBoZWlnaHQ6IDZlbTtcbiAgcGFkZGluZzogMS41ZW07XG4gIHdpbGwtY2hhbmdlOiBmaWx0ZXI7XG4gIHRyYW5zaXRpb246IGZpbHRlciAzMDBtcztcbn1cbi5sb2dvOmhvdmVyIHtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMmVtICM2NDZjZmZhYSk7XG59XG4ubG9nby5yZWFjdDpob3ZlciB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDJlbSAjNjFkYWZiYWEpO1xufVxuXG5Aa2V5ZnJhbWVzIGxvZ28tc3BpbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xuICBhOm50aC1vZi10eXBlKDIpIC5sb2dvIHtcbiAgICBhbmltYXRpb246IGxvZ28tc3BpbiBpbmZpbml0ZSAyMHMgbGluZWFyO1xuICB9XG59XG5cbi5jYXJkIHtcbiAgcGFkZGluZzogMmVtO1xufVxuXG4ucmVhZC10aGUtZG9jcyB7XG4gIGNvbG9yOiAjODg4O1xufVxuYCxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBtYWluLnRzeFxuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9tYWluLnRzeGAsIHtcbiAgICAgIGNvbnRlbnRzOiBgaW1wb3J0IHsgU3RyaWN0TW9kZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnXG5pbXBvcnQgJy4vaW5kZXguY3NzJ1xuaW1wb3J0IEFwcCBmcm9tICcuL0FwcC50c3gnXG5pbXBvcnQgeyBDbGVya1Byb3ZpZGVyLCBTaWduZWRJbiwgU2lnbmVkT3V0LCBTaWduSW5CdXR0b24gfSBmcm9tICdAY2xlcmsvY2xlcmstcmVhY3QnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuL2NvbmZpZydcbmltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiXG5cbmZ1bmN0aW9uIEFwcFdyYXBwZXIoKSB7XG4gIGNvbnN0IHsgY29uZmlnLCBpc0xvYWRpbmcgfSA9IHVzZUNvbmZpZygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpXG4gIGlmIChpc0xvYWRpbmcgfHwgIWNvbmZpZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvYWRpbmctc2NyZWVuXCI+XG4gICAgICAgIExvYWRpbmcuLi5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDbGVya1Byb3ZpZGVyIHB1Ymxpc2hhYmxlS2V5PXtjb25maWcuY2xlcmtQdWJsaXNoYWJsZUtleX0+XG4gICAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCI+XG4gICAgICAgICAgPFNpZ25lZE91dD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgbWluLWgtc2NyZWVuXCI+XG4gICAgICAgICAgICAgIDxTaWduSW5CdXR0b24vPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9TaWduZWRPdXQ+XG4gICAgICAgICAgPFNpZ25lZEluPlxuICAgICAgICAgICAgPEFwcC8+XG4gICAgICAgICAgPC9TaWduZWRJbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1F1ZXJ5Q2xpZW50UHJvdmlkZXI+XG4gICAgPC9DbGVya1Byb3ZpZGVyPlxuICApO1xufVxuXG5jcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JykhKS5yZW5kZXIoXG4gIDxTdHJpY3RNb2RlPlxuICAgIDxBcHBXcmFwcGVyLz5cbiAgPC9TdHJpY3RNb2RlPlxuKVxuYCxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBpbmRleC5jc3NcbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vaW5kZXguY3NzYCwge1xuICAgICAgY29udGVudHM6IGBAaW1wb3J0IFwidGFpbHdpbmRjc3NcIjtcblxuQHRoZW1lIHtcbiAgLS1jb2xvci1zY2hlbWU6IGxpZ2h0IGRhcms7XG59XG5cbjpyb290IHtcbiAgZm9udC1mYW1pbHk6IEludGVyLCBzeXN0ZW0tdWksIEF2ZW5pciwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICBjb2xvci1zY2hlbWU6IGxpZ2h0IGRhcms7XG5cbiAgZm9udC1zeW50aGVzaXM6IG5vbmU7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5hIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICM2NDZjZmY7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbn1cbmE6aG92ZXIge1xuICBjb2xvcjogIzUzNWJmMjtcbn1cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbiAgbWluLXdpZHRoOiAzMjBweDtcbiAgbWluLWhlaWdodDogMTAwdmg7XG59XG5cbmgxIHtcbiAgZm9udC1zaXplOiAzLjJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbn1cblxuYnV0dG9uIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmxvYWRpbmctc2NyZWVuIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwdmg7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xufVxuXG5odG1sLCBib2R5LCAjcm9vdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5gLFxuICAgIH0pO1xuXG4gIH1cbn1cbiJdfQ==
|
|
648
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZVJlYWN0UHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlUmVhY3RQcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUEwQztBQUMxQyxtQ0FBc0Y7QUFDdEYsc0RBQXVGO0FBNEJ2Rjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsaUNBQW9CO0lBTXhELFlBQVksT0FBZ0M7UUFDMUMsTUFBTSxFQUNKLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLE1BQU0sR0FBRyxLQUFLLEVBQ2QsU0FBUyxHQUFHLFFBQVEsRUFDcEIsS0FBSyxFQUNMLEdBQUcsV0FBVyxFQUNmLEdBQUcsT0FBTyxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQ0osR0FBRyxXQUFXO1lBQ2QsVUFBVSxFQUFFLEtBQUssRUFBRSxxQ0FBcUM7WUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxtQ0FBbUM7WUFDbEQsSUFBSSxFQUFFLEtBQUssRUFBRSw2QkFBNkI7WUFDMUMsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsSUFBSSxFQUFFLGtDQUFrQztZQUN6RCxJQUFJLEVBQUU7Z0JBQ0osb0JBQW9CO2dCQUNwQix1QkFBdUI7Z0JBQ3ZCLHNCQUFzQjtnQkFDdEIsY0FBYztnQkFDZCxTQUFTO2dCQUNULGFBQWE7YUFDZDtTQUNGLENBQUMsQ0FBQztRQUVILG1DQUFtQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBRTlDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLHFCQUFxQjtRQUNyQixJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCxtQkFBbUI7UUFDbkIsSUFBSSxtQkFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLFlBQVksRUFBRTtZQUNyRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0RmO1NBQ0ksQ0FBQyxDQUFDO0lBRUwsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUsIGJhc2VuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEZpbGVCYXNlLCBKc29uRmlsZSwgUHJvamVjdCwgU2FtcGxlRmlsZSwgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZVJlYWN0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBnZW5lcmF0ZSBzYW1wbGUgY29kZVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzYW1wbGVDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU291cmNlIGRpcmVjdG9yeVxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBkaXJlY3RvcnkgZm9yIHN0YXRpYyBhc3NldHNcbiAgICogQGRlZmF1bHQgXCJwdWJsaWNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBmb3IgdGhlIEhUTUwgcGFnZVxuICAgKiBAZGVmYXVsdCBwcm9qZWN0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZpdGUgKyBSZWFjdCBUeXBlU2NyaXB0IHByb2plY3RcbiAqL1xuZXhwb3J0IGNsYXNzIFZpdGVSZWFjdFByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY0Rpcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZGV2Q29tbWFuZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZpZWxkczogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBWaXRlUmVhY3RQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IHtcbiAgICAgIHNhbXBsZUNvZGUgPSB0cnVlLFxuICAgICAgc3JjZGlyID0gJ3NyYycsXG4gICAgICBwdWJsaWNEaXIgPSAncHVibGljJyxcbiAgICAgIHRpdGxlLFxuICAgICAgLi4ucmVzdE9wdGlvbnNcbiAgICB9ID0gb3B0aW9ucztcbiAgICBzdXBlcih7XG4gICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLCAvLyBXZSdsbCBoYW5kbGUgc2FtcGxlIGNvZGUgb3Vyc2VsdmVzXG4gICAgICBlc2xpbnQ6IGZhbHNlLCAvLyBXZSdsbCBjb25maWd1cmUgZXNsaW50IG91cnNlbHZlc1xuICAgICAgamVzdDogZmFsc2UsIC8vIFZpdGUgdXNlcyB2aXRlc3QgdHlwaWNhbGx5XG4gICAgICBwYWNrYWdlOiB0cnVlLFxuICAgICAgZGlzYWJsZVRzY29uZmlnOiB0cnVlLCAvLyBXZSdsbCBtYW5hZ2UgdHNjb25maWcgb3Vyc2VsdmVzXG4gICAgICBkZXBzOiBbXG4gICAgICAgICdAY2xlcmsvY2xlcmstcmVhY3QnLFxuICAgICAgICAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JyxcbiAgICAgICAgJ0B0YWlsd2luZGNzcy9wb3N0Y3NzJyxcbiAgICAgICAgJ2F1dG9wcmVmaXhlcicsXG4gICAgICAgICdwb3N0Y3NzJyxcbiAgICAgICAgJ3RhaWx3aW5kY3NzJyxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbmZpZyBmaWVsZHMgc3RvcmFnZVxuICAgIHRoaXMuY29uZmlnRmllbGRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIHRoaXMuc3JjZGlyID0gc3JjZGlyO1xuICAgIHRoaXMucHVibGljRGlyID0gcHVibGljRGlyO1xuXG4gICAgLy8gQWRkIFZpdGUgY29tcG9uZW50XG4gICAgbmV3IFZpdGVDb21wb25lbnQodGhpcywge1xuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBFU0xpbnQgY29uZmlndXJhdGlvblxuICAgIG5ldyBWaXRlRXNsaW50Q29uZmlnKHRoaXMpO1xuXG4gICAgLy8gQWRkIGluZGV4Lmh0bWxcbiAgICBuZXcgSW5kZXhIdG1sKHRoaXMsIHtcbiAgICAgIHRpdGxlOiB0aXRsZSA/PyB0aGlzLm5hbWUsXG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFR5cGVTY3JpcHQgY29uZmlnc1xuICAgIG5ldyBWaXRlVHNDb25maWdzKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgLmdpdGlnbm9yZSBlbnRyaWVzXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKCdkaXN0JywgJ2Rpc3Qtc3NyJywgJyoubG9jYWwnKTtcblxuICAgIC8vIEFkZCB2aXRlLWVudi5kLnRzIGZvciB0eXBlIGRlY2xhcmF0aW9uc1xuICAgIG5ldyBWaXRlRW52RHRzKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgUG9zdENTUyBjb25maWcgZm9yIFRhaWx3aW5kXG4gICAgbmV3IFBvc3RDU1NDb25maWdGaWxlKHRoaXMpO1xuXG4gICAgLy8gQWRkIGNvbmZpZy50cyBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uXG4gICAgbmV3IENvbmZpZ0ZpbGUodGhpcywge1xuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBzYW1wbGUgY29uZmlnLmpzb25cbiAgICBuZXcgQ29uZmlnSnNvbkZpbGUodGhpcywgeyB9KTtcblxuXG4gICAgLy8gQWRkIHNhbXBsZSBjb2RlIGlmIHJlcXVlc3RlZFxuICAgIGlmIChzYW1wbGVDb2RlKSB7XG4gICAgICBuZXcgVml0ZVNhbXBsZUNvZGUodGhpcywge1xuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBwdWJsaWNEaXI6IHRoaXMucHVibGljRGlyLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVXNlIHJlbGF0aXZlIHBhdGggZm9yIGRldkNvbW1hbmRcbiAgICBjb25zdCByZWxhdGl2ZU91dGRpciA9IHRoaXMucGFyZW50XG4gICAgICA/IHJlbGF0aXZlKHRoaXMucGFyZW50Lm91dGRpciwgdGhpcy5vdXRkaXIpXG4gICAgICA6IGJhc2VuYW1lKHRoaXMub3V0ZGlyKTtcbiAgICB0aGlzLmRldkNvbW1hbmQgPSBgY2QgJHtyZWxhdGl2ZU91dGRpcn0gJiYgeWFybiBkZXZgO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSBmaWVsZCB0byB0aGUgQ29uZmlnIHR5cGVcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgbmFtZSBvZiB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkVHlwZSBUaGUgVHlwZVNjcmlwdCB0eXBlIG9mIHRoZSBmaWVsZCAoZS5nLiwgJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbicsICdzdHJpbmdbXScpXG4gICAqIEByZXR1cm5zIHRoaXMgcHJvamVjdCBpbnN0YW5jZSBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGFkZENvbmZpZ0ZpZWxkKGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZFR5cGU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnRmllbGRzLnNldChmaWVsZE5hbWUsIGZpZWxkVHlwZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb25maWcgZmllbGRzIG1hcCAoZm9yIGludGVybmFsIHVzZSBieSBDb25maWdGaWxlKVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldENvbmZpZ0ZpZWxkcygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdGaWVsZHM7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVDb21wb25lbnRPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyBWaXRlIGRlcGVuZGVuY2llcyBhbmQgc2NyaXB0c1xuICovXG5jbGFzcyBWaXRlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QsIF9vcHRpb25zOiBWaXRlQ29tcG9uZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgdHNQcm9qZWN0ID0gcHJvamVjdCBhcyBUeXBlU2NyaXB0QXBwUHJvamVjdDtcblxuICAgIC8vIFNldCBwYWNrYWdlIHR5cGUgdG8gbW9kdWxlIGZvciBFU00gc3VwcG9ydFxuICAgIHRzUHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKCd0eXBlJywgJ21vZHVsZScpO1xuXG4gICAgLy8gQWRkIFJlYWN0IGRlcGVuZGVuY2llc1xuICAgIHRzUHJvamVjdC5hZGREZXBzKCdyZWFjdEBeMTkuMi4wJywgJ3JlYWN0LWRvbUBeMTkuMi4wJyk7XG5cbiAgICAvLyBBZGQgZGV2IGRlcGVuZGVuY2llc1xuICAgIHRzUHJvamVjdC5hZGREZXZEZXBzKFxuICAgICAgJ0B0eXBlcy9yZWFjdEBeMTkuMi4yJyxcbiAgICAgICdAdHlwZXMvcmVhY3QtZG9tQF4xOS4yLjInLFxuICAgICAgJ0B2aXRlanMvcGx1Z2luLXJlYWN0QF41LjEuMCcsXG4gICAgICAndml0ZUBeNS40LjAnLFxuICAgICAgJ3R5cGVzY3JpcHRAfjUuOS4zJyxcbiAgICAgICdAZXNsaW50L2pzQF45LjM5LjEnLFxuICAgICAgJ2VzbGludEBeOS4zOS4xJyxcbiAgICAgICdlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzQF41LjIuMCcsXG4gICAgICAnZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoQF4wLjQuMjQnLFxuICAgICAgJ2dsb2JhbHNAXjE2LjUuMCcsXG4gICAgICAndHlwZXNjcmlwdC1lc2xpbnRAXjguNDYuMycsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSB2aXRlLmNvbmZpZy50cyBhcyBhIG1hbmFnZWQgZmlsZVxuICAgIG5ldyBWaXRlQ29uZmlnRmlsZShwcm9qZWN0KTtcblxuICAgIC8vIEFkZCBzY3JpcHRzXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2RldicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgZGV2ZWxvcG1lbnQgc2VydmVyJyxcbiAgICAgIGV4ZWM6ICd2aXRlJyxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSBhbmQgcmVjcmVhdGUgYnVpbGQgdGFzayB0byBjdXN0b21pemUgaXQgZm9yIFZpdGVcbiAgICB0c1Byb2plY3QucmVtb3ZlVGFzaygnYnVpbGQnKTtcbiAgICB0c1Byb2plY3QuYWRkVGFzaygnYnVpbGQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIGZvciBwcm9kdWN0aW9uJyxcbiAgICAgIGV4ZWM6ICd0c2MgLWIgJiYgdml0ZSBidWlsZCcsXG4gICAgfSk7XG5cbiAgICB0c1Byb2plY3QuYWRkVGFzaygncHJldmlldycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJldmlldyBwcm9kdWN0aW9uIGJ1aWxkJyxcbiAgICAgIGV4ZWM6ICd2aXRlIHByZXZpZXcnLFxuICAgIH0pO1xuXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2xpbnQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0xpbnQgY29kZScsXG4gICAgICBleGVjOiAnZXNsaW50IC4nLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gZm9yIFZpdGUgKyBSZWFjdFxuICovXG5jbGFzcyBWaXRlRXNsaW50Q29uZmlnIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ2VzbGludC5jb25maWcuanMnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHN5bnRoZXNpemVDb250ZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGBpbXBvcnQganMgZnJvbSAnQGVzbGludC9qcydcbmltcG9ydCBnbG9iYWxzIGZyb20gJ2dsb2JhbHMnXG5pbXBvcnQgcmVhY3RIb29rcyBmcm9tICdlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzJ1xuaW1wb3J0IHJlYWN0UmVmcmVzaCBmcm9tICdlc2xpbnQtcGx1Z2luLXJlYWN0LXJlZnJlc2gnXG5pbXBvcnQgdHNlc2xpbnQgZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnXG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgeyBpZ25vcmVzOiBbJ2Rpc3QnXSB9LFxuICB7XG4gICAgZmlsZXM6IFsnKiovKi57dHMsdHN4fSddLFxuICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgZWNtYVZlcnNpb246IDIwMjAsXG4gICAgICBnbG9iYWxzOiBnbG9iYWxzLmJyb3dzZXIsXG4gICAgfSxcbiAgICBwbHVnaW5zOiB7XG4gICAgICAncmVhY3QtaG9va3MnOiByZWFjdEhvb2tzLFxuICAgICAgJ3JlYWN0LXJlZnJlc2gnOiByZWFjdFJlZnJlc2gsXG4gICAgfSxcbiAgICBydWxlczoge1xuICAgICAgLi4ucmVhY3RIb29rcy5jb25maWdzLnJlY29tbWVuZGVkLnJ1bGVzLFxuICAgICAgJ3JlYWN0LXJlZnJlc2gvb25seS1leHBvcnQtY29tcG9uZW50cyc6IFtcbiAgICAgICAgJ3dhcm4nLFxuICAgICAgICB7IGFsbG93Q29uc3RhbnRFeHBvcnQ6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAganMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgLi4udHNlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCxcbl1cbmA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB2aXRlLmNvbmZpZy50cyBmaWxlXG4gKi9cbmNsYXNzIFZpdGVDb25maWdGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ3ZpdGUuY29uZmlnLnRzJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCByZWFjdCBmcm9tICdAdml0ZWpzL3BsdWdpbi1yZWFjdCdcblxuLy8gaHR0cHM6Ly92aXRlLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBwbHVnaW5zOiBbcmVhY3QoKV0sXG59KVxuYDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHBvc3Rjc3MuY29uZmlnLmpzIGZpbGUgZm9yIFRhaWx3aW5kIENTUyB2NFxuICovXG5jbGFzcyBQb3N0Q1NTQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsICdwb3N0Y3NzLmNvbmZpZy5qcycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYGV4cG9ydCBkZWZhdWx0IHtcbiAgcGx1Z2luczoge1xuICAgIFwiQHRhaWx3aW5kY3NzL3Bvc3Rjc3NcIjoge30sXG4gICAgYXV0b3ByZWZpeGVyOiB7fSxcbiAgfSxcbn1cbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVFbnZEdHNPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgdml0ZS1lbnYuZC50cyBmaWxlIGZvciB0eXBlIGRlY2xhcmF0aW9uc1xuICovXG5jbGFzcyBWaXRlRW52RHRzIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlRW52RHRzT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS92aXRlLWVudi5kLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlL2NsaWVudFwiIC8+XG5gO1xuICB9XG59XG5cbmludGVyZmFjZSBDb25maWdGaWxlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbmZpZy50cyBmaWxlIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQ29uZmlnRmlsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vY29uZmlnLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEdldCBjdXN0b20gY29uZmlnIGZpZWxkcyBmcm9tIHBhcmVudCBwcm9qZWN0XG4gICAgY29uc3Qgdml0ZVByb2plY3QgPSB0aGlzLnByb2plY3QgYXMgVml0ZVJlYWN0UHJvamVjdDtcbiAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB2aXRlUHJvamVjdC5nZXRDb25maWdGaWVsZHMoKTtcblxuICAgIC8vIEdlbmVyYXRlIGJhc2UgY29uZmlnIHR5cGVcbiAgICBjb25zdCBiYXNlQ29uZmlnVHlwZSA9IGB0eXBlIEJhc2VDb25maWcgPSB7XG4gIGNsZXJrUHVibGlzaGFibGVLZXk6IHN0cmluZztcbiAgYXBpQmFzZVVybDogc3RyaW5nO1xuICB0aW1lb3V0OiBudW1iZXI7XG59YDtcblxuICAgIC8vIEdlbmVyYXRlIGN1c3RvbSBmaWVsZHMgdHlwZSBpZiBhbnkgZXhpc3RcbiAgICBsZXQgY29uZmlnVHlwZURlZmluaXRpb246IHN0cmluZztcbiAgICBpZiAoY3VzdG9tRmllbGRzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBmaWVsZERlZmluaXRpb25zID0gQXJyYXkuZnJvbShjdXN0b21GaWVsZHMuZW50cmllcygpKVxuICAgICAgICAubWFwKChbbmFtZSwgdHlwZV0pID0+IGAgICR7bmFtZX06ICR7dHlwZX07YClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHNUeXBlID0gYHR5cGUgQ3VzdG9tQ29uZmlnID0ge1xuJHtmaWVsZERlZmluaXRpb25zfVxufWA7XG5cbiAgICAgIGNvbmZpZ1R5cGVEZWZpbml0aW9uID0gYCR7Y3VzdG9tRmllbGRzVHlwZX1cblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gQmFzZUNvbmZpZyAmIEN1c3RvbUNvbmZpZztgO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWdUeXBlRGVmaW5pdGlvbiA9ICdleHBvcnQgdHlwZSBDb25maWcgPSBCYXNlQ29uZmlnOyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG4ke2Jhc2VDb25maWdUeXBlfVxuXG4ke2NvbmZpZ1R5cGVEZWZpbml0aW9ufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29uZmlnKCkge1xuICBjb25zdCBbbG9hZGVkQ29uZmlnLCBzZXRMb2FkZWRDb25maWddID0gdXNlU3RhdGU8Q29uZmlnfHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGVkQ29uZmlnKSB7XG4gICAgICBmZXRjaCgnL2NvbmZpZy5qc29uJywgeyBjYWNoZTogJ25vLXN0b3JlJyB9KS50aGVuKHJlc3BvbnNlPT57XG4gICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChjb25maWcpID0+IHtcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0TG9hZGVkQ29uZmlnKGNvbmZpZylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH1cbiAgfSwgW2xvYWRlZENvbmZpZ10pO1xuXG4gIHJldHVybiB7IGNvbmZpZzogbG9hZGVkQ29uZmlnLCBpc0xvYWRpbmcgfTtcbn1cbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENvbmZpZ0pzb25GaWxlT3B0aW9ucyB7fVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbmZpZy5qc29uIHNhbXBsZSBmaWxlIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29uZmlnSnNvbkZpbGUgZXh0ZW5kcyBTYW1wbGVGaWxlIHtcbiAgcGF0aDogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBWaXRlUmVhY3RQcm9qZWN0LCBfb3B0aW9uczogQ29uZmlnSnNvbkZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgYCR7cHJvamVjdC5wdWJsaWNEaXJ9L2NvbmZpZy5qc29uYCwge1xuICAgICAgY29udGVudHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgYXBpQmFzZVVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGknLFxuICAgICAgICBjbGVya1B1Ymxpc2hhYmxlS2V5OiAndGJkJyxcbiAgICAgIH0sIG51bGwsIDIpLFxuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IGAke3Byb2plY3QucHVibGljRGlyfS9jb25maWcuanNvbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEluZGV4SHRtbE9wdGlvbnMge1xuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBpbmRleC5odG1sIGZpbGVcbiAqL1xuY2xhc3MgSW5kZXhIdG1sIGV4dGVuZHMgU2FtcGxlRmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEluZGV4SHRtbE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnaW5kZXguaHRtbCcsIHtcbiAgICAgIGNvbnRlbnRzOiBgPCFkb2N0eXBlIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbiAgPGhlYWQ+XG4gICAgPG1ldGEgY2hhcnNldD1cIlVURi04XCIgLz5cbiAgICA8bGluayByZWw9XCJpY29uXCIgdHlwZT1cImltYWdlL3N2Zyt4bWxcIiBocmVmPVwiL3ZpdGUuc3ZnXCIgLz5cbiAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgPHRpdGxlPiR7b3B0aW9ucy50aXRsZX08L3RpdGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICAgIDxkaXYgaWQ9XCJyb290XCI+PC9kaXY+XG4gICAgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwiLyR7b3B0aW9ucy5zcmNkaXJ9L21haW4udHN4XCI+PC9zY3JpcHQ+XG4gIDwvYm9keT5cbjwvaHRtbD5cbmAsXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVUc0NvbmZpZ3NPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBWaXRlXG4gKi9cbmNsYXNzIFZpdGVUc0NvbmZpZ3MgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlVHNDb25maWdzT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLy8gTWFpbiB0c2NvbmZpZy5qc29uIChwcm9qZWN0IHJlZmVyZW5jZXMpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5qc29uJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICByZWZlcmVuY2VzOiBbXG4gICAgICAgICAgeyBwYXRoOiAnLi90c2NvbmZpZy5hcHAuanNvbicgfSxcbiAgICAgICAgICB7IHBhdGg6ICcuL3RzY29uZmlnLm5vZGUuanNvbicgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyB0c2NvbmZpZy5hcHAuanNvbiAoZm9yIGFwcGxpY2F0aW9uIGNvZGUpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5hcHAuanNvbicsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHRhcmdldDogJ0VTMjAyMCcsXG4gICAgICAgICAgdXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHM6IHRydWUsXG4gICAgICAgICAgbGliOiBbJ0VTMjAyMCcsICdET00nLCAnRE9NLkl0ZXJhYmxlJ10sXG4gICAgICAgICAgbW9kdWxlOiAnRVNOZXh0JyxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG5cbiAgICAgICAgICAvLyBCdW5kbGVyIG1vZGVcbiAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiAnYnVuZGxlcicsXG4gICAgICAgICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZURldGVjdGlvbjogJ2ZvcmNlJyxcbiAgICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgICAganN4OiAncmVhY3QtanN4JyxcblxuICAgICAgICAgIC8vIExpbnRpbmdcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIG5vVW5jaGVja2VkU2lkZUVmZmVjdEltcG9ydHM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluY2x1ZGU6IFtvcHRpb25zLnNyY2Rpcl0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gdHNjb25maWcubm9kZS5qc29uIChmb3IgVml0ZSBjb25maWcpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5ub2RlLmpzb24nLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICB0YXJnZXQ6ICdFUzIwMjInLFxuICAgICAgICAgIGxpYjogWydFUzIwMjMnXSxcbiAgICAgICAgICBtb2R1bGU6ICdFU05leHQnLFxuICAgICAgICAgIHNraXBMaWJDaGVjazogdHJ1ZSxcblxuICAgICAgICAgIC8vIEJ1bmRsZXIgbW9kZVxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246ICdidW5kbGVyJyxcbiAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgbW9kdWxlRGV0ZWN0aW9uOiAnZm9yY2UnLFxuICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgICAgICAgIC8vIExpbnRpbmdcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmNsdWRlOiBbJ3ZpdGUuY29uZmlnLnRzJ10sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBWaXRlU2FtcGxlQ29kZU9wdGlvbnMge1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgcHVibGljRGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHNhbXBsZSBjb2RlIGZvciBhIFZpdGUgKyBSZWFjdCBwcm9qZWN0XG4gKi9cbmNsYXNzIFZpdGVTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogVml0ZVNhbXBsZUNvZGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyBDcmVhdGUgQXBwLnRzeFxuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9BcHAudHN4YCwge1xuICAgICAgY29udGVudHM6IGBpbXBvcnQgJy4vQXBwLmNzcydcbmltcG9ydCB7IFNpZ25lZEluLCBVc2VyQnV0dG9uIH0gZnJvbSAnQGNsZXJrL2NsZXJrLXJlYWN0JztcbmltcG9ydCB7IHVzZUJhc2VRdWVyeSB9IGZyb20gXCIuL3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzXCI7XG5cblxuZnVuY3Rpb24gQXBwKCkge1xuICBjb25zdCB7ZGF0YSwgaXNMb2FkaW5nfSA9IHVzZUJhc2VRdWVyeSgnLycsIHtyZXRyeU9uTW91bnQ6IHRydWV9KTtcblxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgICAgPGhlYWRlcj5cblxuICAgICAgICAgIDxTaWduZWRJbj5cbiAgICAgICAgICAgIDxVc2VyQnV0dG9uLz5cbiAgICAgICAgICA8L1NpZ25lZEluPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgICAgeyBpc0xvYWRpbmcgPyAnTG9hZGluZy4uLicgOiBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsICwpfVxuICAgICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHBcbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQmFzZVNlcnZpY2UudHNcbiAgICBuZXcgVGV4dEZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucyB9IGZyb20gXFwnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XFwnOycsXG4gICAgICAgICdpbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcXCdAY2xlcmsvY2xlcmstcmVhY3RcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gXFwnLi4vY29uZmlnXFwnOycsXG4gICAgICAgICcnLFxuICAgICAgICAnZXhwb3J0IGZ1bmN0aW9uIHVzZUJhc2VRdWVyeTxURGF0YSA9IHVua25vd24+KCcsXG4gICAgICAgICcgIHBhdGg6IHN0cmluZywnLFxuICAgICAgICAnICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VERhdGE+LCBcXCdxdWVyeUtleVxcJyB8IFxcJ3F1ZXJ5Rm5cXCc+JyxcbiAgICAgICAgJykgeycsXG4gICAgICAgICcgIGNvbnN0IHsgY29uZmlnIH0gPSB1c2VDb25maWcoKTsnLFxuICAgICAgICAnICBjb25zdCB7IGdldFRva2VuIH0gPSB1c2VBdXRoKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHJldHVybiB1c2VRdWVyeTxURGF0YT4oeycsXG4gICAgICAgICcgICAgcXVlcnlLZXk6IFtcXCdiYXNlXFwnXSwnLFxuICAgICAgICAnICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHsnLFxuICAgICAgICAnICAgICAgaWYgKCFjb25maWc/LmFwaUJhc2VVcmwpIHsnLFxuICAgICAgICAnICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnQVBJIGJhc2UgVVJMIG5vdCBjb25maWd1cmVkXFwnKTsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbigpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgLy8gTm9ybWFsaXplIFVSTCBieSByZW1vdmluZyB0cmFpbGluZyBzbGFzaCBmcm9tIGJhc2VVcmwgYW5kIGVuc3VyaW5nIHBhdGggc3RhcnRzIHdpdGggc2xhc2gnLFxuICAgICAgICAnICAgICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcXFwvKyQvLCBcXCdcXCcpOycsXG4gICAgICAgICcgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHBhdGguc3RhcnRzV2l0aChcXCcvXFwnKSA/IHBhdGggOiBgLyR7cGF0aH1gOycsXG4gICAgICAgICcgICAgICAnLFxuICAgICAgICAnICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfSR7bm9ybWFsaXplZFBhdGh9YCwgeycsXG4gICAgICAgICcgICAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICAnICAgICAgICAgIFxcJ0F1dGhvcml6YXRpb25cXCc6IGBCZWFyZXIgJHt0b2tlbn1gLCcsXG4gICAgICAgICcgICAgICAgIH0sJyxcbiAgICAgICAgJyAgICAgIH0pOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgaWYgKCFyZXNwb25zZS5vaykgeycsXG4gICAgICAgICcgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsnLFxuICAgICAgICAnICAgIH0sJyxcbiAgICAgICAgJyAgICBlbmFibGVkOiAhIWNvbmZpZz8uYXBpQmFzZVVybCwnLFxuICAgICAgICAnICAgIC4uLm9wdGlvbnMsJyxcbiAgICAgICAgJyAgfSk7JyxcbiAgICAgICAgJ30nLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBSb290U2VydmljZS50c1xuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9zZXJ2aWNlcy9Sb290U2VydmljZS50c2AsIHtcbiAgICAgIGNvbnRlbnRzOiBgaW1wb3J0IHsgVXNlUXVlcnlPcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IHVzZUJhc2VRdWVyeSB9IGZyb20gJy4vQmFzZVNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUm9vdFF1ZXJ5PFREYXRhID0gdW5rbm93bj4oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxURGF0YT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZUJhc2VRdWVyeTxURGF0YT4oJy8nLCBvcHRpb25zKTtcbn1cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQXBwLmNzc1xuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9BcHAuY3NzYCwge1xuICAgICAgY29udGVudHM6IGAjcm9vdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5sb2dvIHtcbiAgaGVpZ2h0OiA2ZW07XG4gIHBhZGRpbmc6IDEuNWVtO1xuICB3aWxsLWNoYW5nZTogZmlsdGVyO1xuICB0cmFuc2l0aW9uOiBmaWx0ZXIgMzAwbXM7XG59XG4ubG9nbzpob3ZlciB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDJlbSAjNjQ2Y2ZmYWEpO1xufVxuLmxvZ28ucmVhY3Q6aG92ZXIge1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAyZW0gIzYxZGFmYmFhKTtcbn1cblxuQGtleWZyYW1lcyBsb2dvLXNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgYTpudGgtb2YtdHlwZSgyKSAubG9nbyB7XG4gICAgYW5pbWF0aW9uOiBsb2dvLXNwaW4gaW5maW5pdGUgMjBzIGxpbmVhcjtcbiAgfVxufVxuXG4uY2FyZCB7XG4gIHBhZGRpbmc6IDJlbTtcbn1cblxuLnJlYWQtdGhlLWRvY3Mge1xuICBjb2xvcjogIzg4ODtcbn1cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50c3hcbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vbWFpbi50c3hgLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCB7IFN0cmljdE1vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0ICcuL2luZGV4LmNzcydcbmltcG9ydCBBcHAgZnJvbSAnLi9BcHAudHN4J1xuaW1wb3J0IHsgQ2xlcmtQcm92aWRlciwgU2lnbmVkSW4sIFNpZ25lZE91dCwgU2lnbkluQnV0dG9uIH0gZnJvbSAnQGNsZXJrL2NsZXJrLXJlYWN0J1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnXG5pbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIlxuXG5mdW5jdGlvbiBBcHBXcmFwcGVyKCkge1xuICBjb25zdCB7IGNvbmZpZywgaXNMb2FkaW5nIH0gPSB1c2VDb25maWcoKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKVxuICBpZiAoaXNMb2FkaW5nIHx8ICFjb25maWcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2FkaW5nLXNjcmVlblwiPlxuICAgICAgICBMb2FkaW5nLi4uXG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q2xlcmtQcm92aWRlciBwdWJsaXNoYWJsZUtleT17Y29uZmlnLmNsZXJrUHVibGlzaGFibGVLZXl9PlxuICAgICAgPFF1ZXJ5Q2xpZW50UHJvdmlkZXIgY2xpZW50PXtxdWVyeUNsaWVudH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgIDxTaWduZWRPdXQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1pbi1oLXNjcmVlblwiPlxuICAgICAgICAgICAgICA8U2lnbkluQnV0dG9uLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvU2lnbmVkT3V0PlxuICAgICAgICAgIDxTaWduZWRJbj5cbiAgICAgICAgICAgIDxBcHAvPlxuICAgICAgICAgIDwvU2lnbmVkSW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICAgIDwvQ2xlcmtQcm92aWRlcj5cbiAgKTtcbn1cblxuY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpISkucmVuZGVyKFxuICA8U3RyaWN0TW9kZT5cbiAgICA8QXBwV3JhcHBlci8+XG4gIDwvU3RyaWN0TW9kZT5cbilcbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgaW5kZXguY3NzXG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L2luZGV4LmNzc2AsIHtcbiAgICAgIGNvbnRlbnRzOiBgQGltcG9ydCBcInRhaWx3aW5kY3NzXCI7XG5cbkB0aGVtZSB7XG4gIC0tY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xufVxuXG46cm9vdCB7XG4gIGZvbnQtZmFtaWx5OiBJbnRlciwgc3lzdGVtLXVpLCBBdmVuaXIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xuXG4gIGZvbnQtc3ludGhlc2lzOiBub25lO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuYSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjNjQ2Y2ZmO1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG59XG5hOmhvdmVyIHtcbiAgY29sb3I6ICM1MzViZjI7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMy4yZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbmJ1dHRvbiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5sb2FkaW5nLXNjcmVlbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuaHRtbCwgYm9keSwgI3Jvb3Qge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuYCxcbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|