@dollhousemcp/mcp-server 2.0.8 → 2.0.10
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/dist/elements/ensembles/Ensemble.d.ts +9 -0
- package/dist/elements/ensembles/Ensemble.d.ts.map +1 -1
- package/dist/elements/ensembles/Ensemble.js +71 -4
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.d.ts.map +1 -1
- package/dist/generated/version.js +3 -3
- package/dist/handlers/mcp-aql/IntrospectionResolver.d.ts +57 -0
- package/dist/handlers/mcp-aql/IntrospectionResolver.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/IntrospectionResolver.js +181 -2
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +8 -0
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +32 -6
- package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationRouter.js +6 -1
- package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
- package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationSchema.js +120 -8
- package/dist/handlers/mcp-aql/SchemaDispatcher.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/SchemaDispatcher.js +11 -1
- package/dist/handlers/mcp-aql/types.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/types.js +11 -1
- package/dist/index.js +19 -1
- package/dist/server/tools/MCPAQLTools.d.ts.map +1 -1
- package/dist/server/tools/MCPAQLTools.js +7 -1
- package/dist/web/public/app.js +118 -7
- package/dist/web/public/dollhouse-logo.png +0 -0
- package/dist/web/public/index.html +5 -2
- package/dist/web/public/logs.js +56 -1
- package/dist/web/public/metrics.js +32 -1
- package/dist/web/public/setup.css +79 -0
- package/dist/web/public/setup.js +90 -0
- package/dist/web/public/styles.css +3 -1
- package/dist/web/server.d.ts +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +19 -9
- package/package.json +3 -3
- package/server.json +2 -2
|
@@ -38,6 +38,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
38
38
|
endpoint: 'READ',
|
|
39
39
|
handler: 'collectionHandler',
|
|
40
40
|
method: 'browseCollection',
|
|
41
|
+
category: 'Community Collection',
|
|
41
42
|
description: 'Browse the DollhouseMCP community collection by section and type',
|
|
42
43
|
optional: true,
|
|
43
44
|
params: {
|
|
@@ -51,6 +52,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
51
52
|
endpoint: 'READ',
|
|
52
53
|
handler: 'collectionHandler',
|
|
53
54
|
method: 'searchCollection',
|
|
55
|
+
category: 'Community Collection',
|
|
54
56
|
description: 'Search the community collection for elements by keywords',
|
|
55
57
|
optional: true,
|
|
56
58
|
params: {
|
|
@@ -63,6 +65,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
63
65
|
endpoint: 'READ',
|
|
64
66
|
handler: 'collectionHandler',
|
|
65
67
|
method: 'searchCollectionEnhanced',
|
|
68
|
+
category: 'Community Collection',
|
|
66
69
|
description: 'Advanced search with pagination, filtering, and sorting',
|
|
67
70
|
optional: true,
|
|
68
71
|
argBuilder: 'spread',
|
|
@@ -76,6 +79,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
76
79
|
endpoint: 'READ',
|
|
77
80
|
handler: 'collectionHandler',
|
|
78
81
|
method: 'getCollectionContent',
|
|
82
|
+
category: 'Community Collection',
|
|
79
83
|
description: 'Get detailed information about content from the collection',
|
|
80
84
|
optional: true,
|
|
81
85
|
params: {
|
|
@@ -88,6 +92,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
88
92
|
endpoint: 'READ',
|
|
89
93
|
handler: 'collectionHandler',
|
|
90
94
|
method: 'getCollectionCacheHealth',
|
|
95
|
+
category: 'Community Collection',
|
|
91
96
|
description: 'Get health status and statistics for the collection cache',
|
|
92
97
|
optional: true,
|
|
93
98
|
params: {},
|
|
@@ -98,6 +103,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
98
103
|
endpoint: 'CREATE',
|
|
99
104
|
handler: 'collectionHandler',
|
|
100
105
|
method: 'installContent',
|
|
106
|
+
category: 'Community Collection',
|
|
101
107
|
description: 'Install an element from the collection to your local portfolio',
|
|
102
108
|
optional: true,
|
|
103
109
|
params: {
|
|
@@ -110,6 +116,7 @@ export const COLLECTION_OPERATIONS = {
|
|
|
110
116
|
endpoint: 'CREATE',
|
|
111
117
|
handler: 'collectionHandler',
|
|
112
118
|
method: 'submitContent',
|
|
119
|
+
category: 'Community Collection',
|
|
113
120
|
description: 'Submit a local element to the community collection via GitHub',
|
|
114
121
|
optional: true,
|
|
115
122
|
params: {
|
|
@@ -127,6 +134,7 @@ export const AUTH_OPERATIONS = {
|
|
|
127
134
|
endpoint: 'CREATE',
|
|
128
135
|
handler: 'authHandler',
|
|
129
136
|
method: 'setupGitHubAuth',
|
|
137
|
+
category: 'GitHub Authentication',
|
|
130
138
|
description: 'Set up GitHub authentication using device flow',
|
|
131
139
|
optional: true,
|
|
132
140
|
params: {},
|
|
@@ -137,6 +145,7 @@ export const AUTH_OPERATIONS = {
|
|
|
137
145
|
endpoint: 'READ',
|
|
138
146
|
handler: 'authHandler',
|
|
139
147
|
method: 'checkGitHubAuth',
|
|
148
|
+
category: 'GitHub Authentication',
|
|
140
149
|
description: 'Check current GitHub authentication status',
|
|
141
150
|
optional: true,
|
|
142
151
|
params: {},
|
|
@@ -147,6 +156,7 @@ export const AUTH_OPERATIONS = {
|
|
|
147
156
|
endpoint: 'DELETE',
|
|
148
157
|
handler: 'authHandler',
|
|
149
158
|
method: 'clearGitHubAuth',
|
|
159
|
+
category: 'GitHub Authentication',
|
|
150
160
|
description: 'Remove GitHub authentication and disconnect',
|
|
151
161
|
optional: true,
|
|
152
162
|
params: {},
|
|
@@ -157,6 +167,7 @@ export const AUTH_OPERATIONS = {
|
|
|
157
167
|
endpoint: 'CREATE',
|
|
158
168
|
handler: 'authHandler',
|
|
159
169
|
method: 'configureOAuth',
|
|
170
|
+
category: 'GitHub Authentication',
|
|
160
171
|
description: 'Configure GitHub OAuth client ID',
|
|
161
172
|
optional: true,
|
|
162
173
|
params: {
|
|
@@ -169,6 +180,7 @@ export const AUTH_OPERATIONS = {
|
|
|
169
180
|
endpoint: 'READ',
|
|
170
181
|
handler: 'authHandler',
|
|
171
182
|
method: 'getOAuthHelperStatus',
|
|
183
|
+
category: 'GitHub Authentication',
|
|
172
184
|
description: 'Get diagnostic information about OAuth helper process',
|
|
173
185
|
optional: true,
|
|
174
186
|
params: {
|
|
@@ -186,6 +198,7 @@ export const ENHANCED_INDEX_OPERATIONS = {
|
|
|
186
198
|
endpoint: 'READ',
|
|
187
199
|
handler: 'enhancedIndexHandler',
|
|
188
200
|
method: 'findSimilarElements',
|
|
201
|
+
category: 'Intelligence',
|
|
189
202
|
description: 'Find semantically similar elements using NLP scoring',
|
|
190
203
|
optional: true,
|
|
191
204
|
argBuilder: 'named',
|
|
@@ -202,6 +215,7 @@ export const ENHANCED_INDEX_OPERATIONS = {
|
|
|
202
215
|
endpoint: 'READ',
|
|
203
216
|
handler: 'enhancedIndexHandler',
|
|
204
217
|
method: 'getElementRelationships',
|
|
218
|
+
category: 'Intelligence',
|
|
205
219
|
description: 'Get all relationships for a specific element',
|
|
206
220
|
optional: true,
|
|
207
221
|
argBuilder: 'named',
|
|
@@ -217,6 +231,7 @@ export const ENHANCED_INDEX_OPERATIONS = {
|
|
|
217
231
|
endpoint: 'READ',
|
|
218
232
|
handler: 'enhancedIndexHandler',
|
|
219
233
|
method: 'searchByVerb',
|
|
234
|
+
category: 'Intelligence',
|
|
220
235
|
description: 'Search for elements that handle a specific action verb',
|
|
221
236
|
optional: true,
|
|
222
237
|
argBuilder: 'named',
|
|
@@ -231,6 +246,7 @@ export const ENHANCED_INDEX_OPERATIONS = {
|
|
|
231
246
|
endpoint: 'READ',
|
|
232
247
|
handler: 'enhancedIndexHandler',
|
|
233
248
|
method: 'getRelationshipStats',
|
|
249
|
+
category: 'Intelligence',
|
|
234
250
|
description: 'Get statistics about Enhanced Index relationships',
|
|
235
251
|
optional: true,
|
|
236
252
|
params: {},
|
|
@@ -246,6 +262,7 @@ export const TEMPLATE_OPERATIONS = {
|
|
|
246
262
|
endpoint: 'READ',
|
|
247
263
|
handler: 'templateRenderer',
|
|
248
264
|
method: 'render',
|
|
265
|
+
category: 'Template Rendering',
|
|
249
266
|
description: 'Render a template with provided variables. For section-format templates (<template>, <style>, <script>), renders the <template> section by default — variable substitution only applies there. Use section: "style" or "script" to retrieve raw passthrough sections where }} is safe.',
|
|
250
267
|
params: {
|
|
251
268
|
// Issue #290: Use element_name for consistency
|
|
@@ -270,6 +287,7 @@ export const INTROSPECTION_OPERATIONS = {
|
|
|
270
287
|
endpoint: 'READ',
|
|
271
288
|
handler: 'elementCRUD', // Uses IntrospectionResolver directly
|
|
272
289
|
method: '__introspect__', // Special marker for introspection
|
|
290
|
+
category: 'System Introspection',
|
|
273
291
|
description: 'Query available operations, types, and element format specs for discovery',
|
|
274
292
|
params: {
|
|
275
293
|
query: { type: 'string', required: true, description: "What to introspect: 'operations' (list/detail operations), 'types' (list/detail type definitions), 'format' (element creation format specs — required/optional fields, syntax, examples), 'categories' (category format rules + how to discover existing categories via query_elements). Default: 'operations'" },
|
|
@@ -285,6 +303,21 @@ export const INTROSPECTION_OPERATIONS = {
|
|
|
285
303
|
'{ operation: "introspect", params: { query: "categories" } }',
|
|
286
304
|
],
|
|
287
305
|
},
|
|
306
|
+
get_capabilities: {
|
|
307
|
+
endpoint: 'READ',
|
|
308
|
+
handler: 'elementCRUD', // Uses IntrospectionResolver directly
|
|
309
|
+
method: '__capabilities__', // Special marker for capabilities
|
|
310
|
+
category: 'System Introspection',
|
|
311
|
+
description: 'Get a high-level map of all server capabilities grouped by user intent. Returns brief descriptions of every available operation organized by category. Use introspect for full details on any specific operation.',
|
|
312
|
+
params: {
|
|
313
|
+
category: { type: 'string', description: 'Filter to a specific category name. Omit to see all categories.' },
|
|
314
|
+
},
|
|
315
|
+
returns: { name: 'CapabilitiesResult', kind: 'object', description: 'Categorized capability map with brief descriptions, sources, and status' },
|
|
316
|
+
examples: [
|
|
317
|
+
'{ operation: "get_capabilities" }',
|
|
318
|
+
'{ operation: "get_capabilities", params: { category: "Element Lifecycle" } }',
|
|
319
|
+
],
|
|
320
|
+
},
|
|
288
321
|
};
|
|
289
322
|
// ============================================================================
|
|
290
323
|
// Persona Operations Schema
|
|
@@ -294,6 +327,7 @@ export const PERSONA_OPERATIONS = {
|
|
|
294
327
|
endpoint: 'CREATE',
|
|
295
328
|
handler: 'personaHandler',
|
|
296
329
|
method: 'importPersona',
|
|
330
|
+
category: 'Element Lifecycle',
|
|
297
331
|
description: 'Import a persona from a file path or JSON string',
|
|
298
332
|
optional: true,
|
|
299
333
|
params: {
|
|
@@ -312,6 +346,7 @@ export const CONFIG_OPERATIONS = {
|
|
|
312
346
|
endpoint: 'READ',
|
|
313
347
|
handler: 'configHandler',
|
|
314
348
|
method: 'handleConfigOperation',
|
|
349
|
+
category: 'Configuration & Diagnostics',
|
|
315
350
|
description: 'Manage DollhouseMCP configuration settings',
|
|
316
351
|
optional: true,
|
|
317
352
|
argBuilder: 'named',
|
|
@@ -333,6 +368,7 @@ export const CONFIG_OPERATIONS = {
|
|
|
333
368
|
endpoint: 'READ',
|
|
334
369
|
handler: 'configHandler',
|
|
335
370
|
method: 'convertSkillFormat',
|
|
371
|
+
category: 'Configuration & Diagnostics',
|
|
336
372
|
description: 'Convert between current Agent Skill and Dollhouse Skill formats (both directions) with structured warnings and optional roundtrip state for lossless supported-field restoration',
|
|
337
373
|
optional: true,
|
|
338
374
|
argBuilder: 'named',
|
|
@@ -357,6 +393,7 @@ export const CONFIG_OPERATIONS = {
|
|
|
357
393
|
endpoint: 'READ',
|
|
358
394
|
handler: 'buildInfoService',
|
|
359
395
|
method: '__buildInfo__', // Special marker for build info
|
|
396
|
+
category: 'Configuration & Diagnostics',
|
|
360
397
|
description: 'Get comprehensive build and runtime information',
|
|
361
398
|
optional: true,
|
|
362
399
|
params: {},
|
|
@@ -367,6 +404,7 @@ export const CONFIG_OPERATIONS = {
|
|
|
367
404
|
endpoint: 'READ',
|
|
368
405
|
handler: 'cacheMemoryBudget',
|
|
369
406
|
method: '__cacheBudget__',
|
|
407
|
+
category: 'Configuration & Diagnostics',
|
|
370
408
|
description: 'Get global cache memory budget report with per-cache diagnostics',
|
|
371
409
|
optional: true,
|
|
372
410
|
params: {},
|
|
@@ -397,6 +435,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
397
435
|
endpoint: 'READ',
|
|
398
436
|
handler: 'portfolioHandler',
|
|
399
437
|
method: 'portfolioStatus',
|
|
438
|
+
category: 'Portfolio Management',
|
|
400
439
|
description: 'Check GitHub portfolio repository status and element counts',
|
|
401
440
|
optional: true,
|
|
402
441
|
argBuilder: 'single',
|
|
@@ -410,6 +449,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
410
449
|
endpoint: 'CREATE',
|
|
411
450
|
handler: 'portfolioHandler',
|
|
412
451
|
method: 'initPortfolio',
|
|
452
|
+
category: 'Portfolio Management',
|
|
413
453
|
description: 'Initialize a new GitHub portfolio repository',
|
|
414
454
|
optional: true,
|
|
415
455
|
argBuilder: 'named',
|
|
@@ -426,6 +466,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
426
466
|
endpoint: 'READ',
|
|
427
467
|
handler: 'portfolioHandler',
|
|
428
468
|
method: 'portfolioConfig',
|
|
469
|
+
category: 'Portfolio Management',
|
|
429
470
|
description: 'Configure portfolio settings (auto-sync, visibility, etc.)',
|
|
430
471
|
optional: true,
|
|
431
472
|
argBuilder: 'named',
|
|
@@ -443,6 +484,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
443
484
|
endpoint: 'CREATE',
|
|
444
485
|
handler: 'portfolioHandler',
|
|
445
486
|
method: 'syncPortfolio',
|
|
487
|
+
category: 'Portfolio Management',
|
|
446
488
|
description: 'Sync local portfolio with GitHub repository',
|
|
447
489
|
optional: true,
|
|
448
490
|
argBuilder: 'named',
|
|
@@ -473,6 +515,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
473
515
|
endpoint: 'READ',
|
|
474
516
|
handler: 'portfolioHandler',
|
|
475
517
|
method: 'searchAll',
|
|
518
|
+
category: 'Element Discovery',
|
|
476
519
|
description: 'Unified search across local, GitHub, and collection sources with flexible scope',
|
|
477
520
|
optional: true,
|
|
478
521
|
normalizer: 'searchParams',
|
|
@@ -505,6 +548,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
505
548
|
endpoint: 'READ',
|
|
506
549
|
handler: 'portfolioHandler',
|
|
507
550
|
method: 'searchPortfolio',
|
|
551
|
+
category: 'Element Discovery',
|
|
508
552
|
description: 'Search local portfolio by content name, keywords, or tags',
|
|
509
553
|
optional: true,
|
|
510
554
|
argBuilder: 'named',
|
|
@@ -533,6 +577,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
533
577
|
endpoint: 'READ',
|
|
534
578
|
handler: 'portfolioHandler',
|
|
535
579
|
method: 'searchAll',
|
|
580
|
+
category: 'Element Discovery',
|
|
536
581
|
description: 'Unified search across local, GitHub, and collection sources',
|
|
537
582
|
optional: true,
|
|
538
583
|
argBuilder: 'named',
|
|
@@ -559,6 +604,7 @@ export const PORTFOLIO_OPERATIONS = {
|
|
|
559
604
|
endpoint: 'CREATE',
|
|
560
605
|
handler: 'syncHandler',
|
|
561
606
|
method: 'handleSyncOperation',
|
|
607
|
+
category: 'Portfolio Management',
|
|
562
608
|
description: 'Manage individual elements between local and GitHub',
|
|
563
609
|
optional: true,
|
|
564
610
|
argBuilder: 'named',
|
|
@@ -595,6 +641,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
595
641
|
endpoint: 'CREATE',
|
|
596
642
|
handler: 'elementCRUD',
|
|
597
643
|
method: 'createElement',
|
|
644
|
+
category: 'Element Lifecycle',
|
|
598
645
|
description: 'Create a new element of any type. Note: Gatekeeper may return a confirmation prompt instead of creating immediately — use confirm_operation to approve, then retry.',
|
|
599
646
|
needsFullInput: true,
|
|
600
647
|
argBuilder: 'namedWithType',
|
|
@@ -651,12 +698,15 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
651
698
|
'{ operation: "create_element", element_type: "memory", params: { element_name: "session-context", description: "Shared context accessible to all active elements" } }',
|
|
652
699
|
// project-{name}-{purpose}: Project-scoped knowledge
|
|
653
700
|
'{ operation: "create_element", element_type: "memory", params: { element_name: "project-webapp-decisions", description: "Architecture decisions for the webapp project" } }',
|
|
701
|
+
// Issue #1767: Ensemble example with valid roles (primary, support, override, monitor, core)
|
|
702
|
+
'{ operation: "create_element", element_type: "ensemble", params: { element_name: "my-ensemble", description: "Combined element set", metadata: { elements: [{ element_name: "expert", element_type: "persona", role: "primary" }, { element_name: "analysis", element_type: "skill", role: "support" }] } } }',
|
|
654
703
|
],
|
|
655
704
|
},
|
|
656
705
|
list_elements: {
|
|
657
706
|
endpoint: 'READ',
|
|
658
707
|
handler: 'elementCRUD',
|
|
659
708
|
method: 'listElements',
|
|
709
|
+
category: 'Element Discovery',
|
|
660
710
|
description: 'List elements with pagination, filtering, sorting, and aggregation. Returns structured JSON: { items, pagination, sorting, element_type }. Default: page 1, pageSize 20, sorted by name ascending.',
|
|
661
711
|
needsFullInput: true,
|
|
662
712
|
argBuilder: 'typeWithParams', // (type, fullParams) for pagination support
|
|
@@ -701,6 +751,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
701
751
|
endpoint: 'READ',
|
|
702
752
|
handler: 'elementCRUD',
|
|
703
753
|
method: 'getElementDetails',
|
|
754
|
+
category: 'Element Lifecycle',
|
|
704
755
|
description: 'Get an element by name',
|
|
705
756
|
needsFullInput: true,
|
|
706
757
|
argBuilder: 'single', // (elementName, elementType)
|
|
@@ -733,6 +784,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
733
784
|
endpoint: 'READ',
|
|
734
785
|
handler: 'elementCRUD',
|
|
735
786
|
method: 'getElementDetails',
|
|
787
|
+
category: 'Element Lifecycle',
|
|
736
788
|
description: 'Get detailed information about a specific element including extended metadata',
|
|
737
789
|
needsFullInput: true,
|
|
738
790
|
argBuilder: 'single', // (elementName, elementType)
|
|
@@ -760,6 +812,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
760
812
|
endpoint: 'UPDATE',
|
|
761
813
|
handler: 'elementCRUD',
|
|
762
814
|
method: 'editElement',
|
|
815
|
+
category: 'Element Lifecycle',
|
|
763
816
|
description: 'Edit an element using GraphQL-aligned nested input objects',
|
|
764
817
|
needsFullInput: true,
|
|
765
818
|
argBuilder: 'namedWithType',
|
|
@@ -788,6 +841,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
788
841
|
endpoint: 'UPDATE',
|
|
789
842
|
handler: 'elementCRUD',
|
|
790
843
|
method: 'upgradeElement',
|
|
844
|
+
category: 'Element Lifecycle',
|
|
791
845
|
description: 'Upgrade element from v1 single-body format to v2.0 dual-field format (instructions + content). Reads existing body text, assigns to instructions or content based on element type, saves in new format with instructions in YAML frontmatter.',
|
|
792
846
|
needsFullInput: true,
|
|
793
847
|
argBuilder: 'namedWithType',
|
|
@@ -814,6 +868,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
814
868
|
endpoint: 'READ',
|
|
815
869
|
handler: 'elementCRUD',
|
|
816
870
|
method: 'validateElement',
|
|
871
|
+
category: 'Element Lifecycle',
|
|
817
872
|
description: 'Validate an existing element by name',
|
|
818
873
|
needsFullInput: true,
|
|
819
874
|
argBuilder: 'namedWithType',
|
|
@@ -835,6 +890,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
835
890
|
endpoint: 'DELETE',
|
|
836
891
|
handler: 'elementCRUD',
|
|
837
892
|
method: 'deleteElement',
|
|
893
|
+
category: 'Element Lifecycle',
|
|
838
894
|
description: 'Delete an element',
|
|
839
895
|
needsFullInput: true,
|
|
840
896
|
argBuilder: 'namedWithType',
|
|
@@ -856,6 +912,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
856
912
|
endpoint: 'READ',
|
|
857
913
|
handler: 'elementCRUD',
|
|
858
914
|
method: '__export__', // Special marker - uses internal handler
|
|
915
|
+
category: 'Element Lifecycle',
|
|
859
916
|
description: 'Export an element to a portable format',
|
|
860
917
|
needsFullInput: true,
|
|
861
918
|
argBuilder: 'single', // (elementName, elementType, format)
|
|
@@ -877,6 +934,7 @@ export const ELEMENT_CRUD_OPERATIONS = {
|
|
|
877
934
|
endpoint: 'CREATE',
|
|
878
935
|
handler: 'elementCRUD',
|
|
879
936
|
method: '__import__', // Special marker - uses internal handler
|
|
937
|
+
category: 'Element Lifecycle',
|
|
880
938
|
description: 'Import an element from exported data',
|
|
881
939
|
argBuilder: 'named',
|
|
882
940
|
params: {
|
|
@@ -904,6 +962,7 @@ export const MEMORY_SCHEMAS = {
|
|
|
904
962
|
endpoint: 'CREATE',
|
|
905
963
|
handler: 'mcpAqlHandler',
|
|
906
964
|
method: 'dispatchMemory',
|
|
965
|
+
category: 'Memory',
|
|
907
966
|
description: 'Add a new entry to a memory element',
|
|
908
967
|
params: {
|
|
909
968
|
element_name: { type: 'string', required: true, description: 'Memory element name' },
|
|
@@ -923,6 +982,7 @@ export const MEMORY_SCHEMAS = {
|
|
|
923
982
|
endpoint: 'DELETE',
|
|
924
983
|
handler: 'mcpAqlHandler',
|
|
925
984
|
method: 'dispatchMemory',
|
|
985
|
+
category: 'Memory',
|
|
926
986
|
description: 'Clear all entries from a memory element (irreversible)',
|
|
927
987
|
params: {
|
|
928
988
|
element_name: { type: 'string', required: true, description: 'Memory element name to clear' },
|
|
@@ -952,6 +1012,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
952
1012
|
endpoint: 'EXECUTE',
|
|
953
1013
|
handler: 'mcpAqlHandler',
|
|
954
1014
|
method: 'dispatchExecute',
|
|
1015
|
+
category: 'Agent Execution',
|
|
955
1016
|
description: 'Start execution of an agent. The agent must have a goal.template defined (set during create_element). Pass values for the template placeholders in parameters. ' +
|
|
956
1017
|
'Lifecycle: Elements listed in the agent\'s activates field (e.g., activates: { personas: ["Reviewer"], skills: ["code-analysis"] }) are automatically activated when execution begins — their gatekeeper policies, instructions, and capabilities become active for the duration. ' +
|
|
957
1018
|
'Resilience: If the agent has a resilience policy, it governs automatic recovery during execution. onStepLimitReached (pause|continue|restart) controls what happens when maxAutonomousSteps is hit. onExecutionFailure (pause|retry|restart-fresh) controls recovery from step failures. Additional fields: maxRetries (default 3), maxContinuations (default 10), retryBackoff (linear|exponential). Without a resilience policy, execution pauses at step limits and failures (safe default).',
|
|
@@ -971,6 +1032,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
971
1032
|
endpoint: 'READ',
|
|
972
1033
|
handler: 'mcpAqlHandler',
|
|
973
1034
|
method: 'dispatchExecute',
|
|
1035
|
+
category: 'Agent Execution',
|
|
974
1036
|
description: 'Query current execution state including progress and findings',
|
|
975
1037
|
params: {
|
|
976
1038
|
element_name: { type: 'string', required: true, description: 'Agent or executable element name' },
|
|
@@ -986,6 +1048,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
986
1048
|
endpoint: 'CREATE',
|
|
987
1049
|
handler: 'mcpAqlHandler',
|
|
988
1050
|
method: 'dispatchExecute',
|
|
1051
|
+
category: 'Agent Execution',
|
|
989
1052
|
description: 'Record execution progress, step completion, or findings. Returns autonomy directive with continue/pause decision and notifications.',
|
|
990
1053
|
params: {
|
|
991
1054
|
element_name: { type: 'string', required: true, description: 'Agent or executable element name' },
|
|
@@ -1006,6 +1069,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
1006
1069
|
endpoint: 'EXECUTE',
|
|
1007
1070
|
handler: 'mcpAqlHandler',
|
|
1008
1071
|
method: 'dispatchExecute',
|
|
1072
|
+
category: 'Agent Execution',
|
|
1009
1073
|
description: 'Signal that execution finished successfully with summary',
|
|
1010
1074
|
params: {
|
|
1011
1075
|
element_name: { type: 'string', required: true, description: 'Agent or executable element name' },
|
|
@@ -1022,6 +1086,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
1022
1086
|
endpoint: 'EXECUTE',
|
|
1023
1087
|
handler: 'mcpAqlHandler',
|
|
1024
1088
|
method: 'dispatchExecute',
|
|
1089
|
+
category: 'Agent Execution',
|
|
1025
1090
|
description: 'Resume execution from saved state',
|
|
1026
1091
|
params: {
|
|
1027
1092
|
element_name: { type: 'string', required: true, description: 'Agent or executable element name' },
|
|
@@ -1037,6 +1102,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
1037
1102
|
endpoint: 'EXECUTE',
|
|
1038
1103
|
handler: 'mcpAqlHandler',
|
|
1039
1104
|
method: 'dispatchExecute',
|
|
1105
|
+
category: 'Agent Execution',
|
|
1040
1106
|
description: 'Abort a running agent execution, rejecting further operations for the goalId',
|
|
1041
1107
|
params: {
|
|
1042
1108
|
element_name: { type: 'string', required: true, description: 'Agent or executable element name to abort' },
|
|
@@ -1052,6 +1118,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
1052
1118
|
endpoint: 'READ',
|
|
1053
1119
|
handler: 'mcpAqlHandler',
|
|
1054
1120
|
method: 'dispatchExecute',
|
|
1121
|
+
category: 'Agent Execution',
|
|
1055
1122
|
description: 'Get aggregated execution data (steps, decisions, findings, and summary statistics) for a specific goal',
|
|
1056
1123
|
params: {
|
|
1057
1124
|
element_name: { type: 'string', required: true, description: 'Agent name' },
|
|
@@ -1067,6 +1134,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
1067
1134
|
endpoint: 'EXECUTE',
|
|
1068
1135
|
handler: 'mcpAqlHandler',
|
|
1069
1136
|
method: 'dispatchExecute',
|
|
1137
|
+
category: 'Agent Execution',
|
|
1070
1138
|
description: 'Serialize goal progress into a portable handoff block for session transfer',
|
|
1071
1139
|
params: {
|
|
1072
1140
|
element_name: { type: 'string', required: true, description: 'Agent name to prepare handoff for' },
|
|
@@ -1084,6 +1152,7 @@ export const EXECUTION_SCHEMAS = {
|
|
|
1084
1152
|
endpoint: 'EXECUTE',
|
|
1085
1153
|
handler: 'mcpAqlHandler',
|
|
1086
1154
|
method: 'dispatchExecute',
|
|
1155
|
+
category: 'Agent Execution',
|
|
1087
1156
|
description: 'Resume agent execution from a handoff block with integrity validation',
|
|
1088
1157
|
params: {
|
|
1089
1158
|
element_name: { type: 'string', required: true, description: 'Agent name to resume (must match handoff block)' },
|
|
@@ -1113,6 +1182,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1113
1182
|
endpoint: 'EXECUTE',
|
|
1114
1183
|
handler: 'mcpAqlHandler',
|
|
1115
1184
|
method: 'dispatchGatekeeper',
|
|
1185
|
+
category: 'Security & Permissions',
|
|
1116
1186
|
description: 'Confirm a pending operation that requires user approval (Gatekeeper flow)',
|
|
1117
1187
|
params: {
|
|
1118
1188
|
operation: { type: 'string', required: true, description: 'Operation name to confirm (e.g., "create_element")' },
|
|
@@ -1128,6 +1198,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1128
1198
|
endpoint: 'CREATE',
|
|
1129
1199
|
handler: 'mcpAqlHandler',
|
|
1130
1200
|
method: 'dispatchGatekeeper',
|
|
1201
|
+
category: 'Security & Permissions',
|
|
1131
1202
|
description: 'Submit verification code to unblock a danger zone operation',
|
|
1132
1203
|
params: {
|
|
1133
1204
|
challenge_id: { type: 'string', required: true, description: 'UUID v4 challenge ID from danger zone trigger' },
|
|
@@ -1143,6 +1214,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1143
1214
|
endpoint: 'CREATE',
|
|
1144
1215
|
handler: 'mcpAqlHandler',
|
|
1145
1216
|
method: 'dispatchGatekeeper',
|
|
1217
|
+
category: 'Security & Permissions',
|
|
1146
1218
|
description: 'Safe-trigger the full danger zone verification pipeline for testing purposes',
|
|
1147
1219
|
params: {
|
|
1148
1220
|
agent_name: { type: 'string', description: 'Agent to block (defaults to "beetlejuice-test-agent")' },
|
|
@@ -1160,6 +1232,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1160
1232
|
endpoint: 'READ',
|
|
1161
1233
|
handler: 'mcpAqlHandler',
|
|
1162
1234
|
method: 'dispatchGatekeeper',
|
|
1235
|
+
category: 'Security & Permissions',
|
|
1163
1236
|
description: 'Evaluate a CLI-level permission prompt (Bash, Edit, Write, MCP tools). Returns allow/deny decision for non-interactive Claude Code sessions using --permission-prompt-tool.',
|
|
1164
1237
|
params: {
|
|
1165
1238
|
tool_name: { type: 'string', required: true, description: 'The tool requesting permission (e.g., "Bash", "Edit", "Write", "mcp__server__tool")' },
|
|
@@ -1177,6 +1250,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1177
1250
|
endpoint: 'READ',
|
|
1178
1251
|
handler: 'mcpAqlHandler',
|
|
1179
1252
|
method: 'dispatchGatekeeper',
|
|
1253
|
+
category: 'Security & Permissions',
|
|
1180
1254
|
description: 'Evaluate CLI permission for a tool via HTTP/hook. Returns platform-formatted response (claude_code, gemini, cursor, windsurf, codex). Alternative to permission_prompt for interactive sessions using PreToolUse hooks.',
|
|
1181
1255
|
params: {
|
|
1182
1256
|
tool_name: { type: 'string', required: true, description: 'The tool requesting permission (e.g., "Bash", "Edit", "Write")' },
|
|
@@ -1194,6 +1268,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1194
1268
|
endpoint: 'READ',
|
|
1195
1269
|
handler: 'mcpAqlHandler',
|
|
1196
1270
|
method: 'dispatchGatekeeper',
|
|
1271
|
+
category: 'Security & Permissions',
|
|
1197
1272
|
description: 'Get effective CLI-level permission policies across all active elements',
|
|
1198
1273
|
params: {
|
|
1199
1274
|
tool_name: { type: 'string', description: 'Optional: evaluate a specific tool (e.g., "Bash", "Edit:src/index.ts")' },
|
|
@@ -1210,6 +1285,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1210
1285
|
endpoint: 'EXECUTE',
|
|
1211
1286
|
handler: 'mcpAqlHandler',
|
|
1212
1287
|
method: 'dispatchGatekeeper',
|
|
1288
|
+
category: 'Security & Permissions',
|
|
1213
1289
|
description: 'Approve a pending CLI tool permission request. Used by bridges (Zulip, Slack) to relay human approval for tools that require it.',
|
|
1214
1290
|
params: {
|
|
1215
1291
|
request_id: { type: 'string', required: true, description: 'Approval request ID from permission_prompt deny response (format: cli-<UUID>)' },
|
|
@@ -1225,6 +1301,7 @@ export const GATEKEEPER_SCHEMAS = {
|
|
|
1225
1301
|
endpoint: 'READ',
|
|
1226
1302
|
handler: 'mcpAqlHandler',
|
|
1227
1303
|
method: 'dispatchGatekeeper',
|
|
1304
|
+
category: 'Security & Permissions',
|
|
1228
1305
|
description: 'Get all pending CLI tool approval requests for this session. Returns unapproved requests that are waiting for human authorization.',
|
|
1229
1306
|
params: {},
|
|
1230
1307
|
returns: { name: 'PendingApprovals', kind: 'object', description: '{ pending: CliApprovalRecord[], count: number }' },
|
|
@@ -1249,6 +1326,7 @@ export const LOGGING_SCHEMAS = {
|
|
|
1249
1326
|
endpoint: 'READ',
|
|
1250
1327
|
handler: 'mcpAqlHandler',
|
|
1251
1328
|
method: 'dispatchLogging',
|
|
1329
|
+
category: 'Configuration & Diagnostics',
|
|
1252
1330
|
description: 'Query recent log entries from the in-memory buffer. Returns filtered, paginated results sorted newest-first. Only queries the hot tier (in-memory); evicted entries exist only in disk log files.',
|
|
1253
1331
|
params: {
|
|
1254
1332
|
category: { type: 'string', description: "Log category filter: 'application', 'security', 'performance', 'telemetry', or 'all'. Default: 'all'" },
|
|
@@ -1284,6 +1362,7 @@ export const METRICS_SCHEMAS = {
|
|
|
1284
1362
|
endpoint: 'READ',
|
|
1285
1363
|
handler: 'mcpAqlHandler',
|
|
1286
1364
|
method: 'dispatchMetrics',
|
|
1365
|
+
category: 'Configuration & Diagnostics',
|
|
1287
1366
|
description: 'Query collected metrics snapshots. Returns filtered, paginated results sorted newest-first. Supports filtering by metric name (prefix or exact), source, type, and time range.',
|
|
1288
1367
|
params: {
|
|
1289
1368
|
names: { type: 'string[]', description: "Metric name filters. Exact match or prefix match with trailing '.' or '.*' (e.g., 'system.memory.*')" },
|
|
@@ -1324,6 +1403,7 @@ export const ACTIVATION_SCHEMAS = {
|
|
|
1324
1403
|
endpoint: 'READ',
|
|
1325
1404
|
handler: 'mcpAqlHandler',
|
|
1326
1405
|
method: 'dispatchActivation',
|
|
1406
|
+
category: 'Activation',
|
|
1327
1407
|
description: 'Activate an element for use in the current session. Activation state is persisted per-session (DOLLHOUSE_SESSION_ID) and restored on server restart.',
|
|
1328
1408
|
params: {
|
|
1329
1409
|
element_name: { type: 'string', required: true, description: 'Name of the element to activate' },
|
|
@@ -1339,6 +1419,7 @@ export const ACTIVATION_SCHEMAS = {
|
|
|
1339
1419
|
endpoint: 'READ',
|
|
1340
1420
|
handler: 'mcpAqlHandler',
|
|
1341
1421
|
method: 'dispatchActivation',
|
|
1422
|
+
category: 'Activation',
|
|
1342
1423
|
description: 'Deactivate an element, removing it from the current session. Persisted activation state is updated.',
|
|
1343
1424
|
params: {
|
|
1344
1425
|
element_name: { type: 'string', required: true, description: 'Name of the element to deactivate' },
|
|
@@ -1353,6 +1434,7 @@ export const ACTIVATION_SCHEMAS = {
|
|
|
1353
1434
|
endpoint: 'READ',
|
|
1354
1435
|
handler: 'mcpAqlHandler',
|
|
1355
1436
|
method: 'dispatchActivation',
|
|
1437
|
+
category: 'Activation',
|
|
1356
1438
|
description: 'Get all currently active elements with rendered content, optionally filtered by type',
|
|
1357
1439
|
params: {
|
|
1358
1440
|
element_type: { type: 'string', description: 'Optional element type filter. Omit to get all active elements across all types.' },
|
|
@@ -1381,6 +1463,7 @@ export const SEARCH_SCHEMAS = {
|
|
|
1381
1463
|
endpoint: 'READ',
|
|
1382
1464
|
handler: 'mcpAqlHandler',
|
|
1383
1465
|
method: 'dispatchSearch',
|
|
1466
|
+
category: 'Element Discovery',
|
|
1384
1467
|
description: 'Full-text search across element names, descriptions, and content with pagination and sorting',
|
|
1385
1468
|
params: {
|
|
1386
1469
|
query: { type: 'string', required: true, description: 'Search query string (max 1000 characters)' },
|
|
@@ -1403,6 +1486,7 @@ export const SEARCH_SCHEMAS = {
|
|
|
1403
1486
|
endpoint: 'READ',
|
|
1404
1487
|
handler: 'mcpAqlHandler',
|
|
1405
1488
|
method: 'dispatchSearch',
|
|
1489
|
+
category: 'Element Discovery',
|
|
1406
1490
|
description: 'Query elements with filters, sorting, pagination, and count aggregation. Returns structured JSON.',
|
|
1407
1491
|
params: {
|
|
1408
1492
|
element_type: { type: 'string', required: true, description: 'Element type to query (required)' },
|
|
@@ -1462,38 +1546,65 @@ export const BROWSER_SCHEMAS = {
|
|
|
1462
1546
|
endpoint: 'READ',
|
|
1463
1547
|
handler: 'mcpAqlHandler',
|
|
1464
1548
|
method: 'dispatchBrowser',
|
|
1465
|
-
|
|
1549
|
+
category: 'Management Console',
|
|
1550
|
+
description: 'Start the portfolio web UI and open it in the system browser. The web server runs on localhost:3939 and shows all portfolio elements with search, filtering, and detail views. Supports URL parameters for deep-linking with pre-populated search, filters, and element navigation. Aliases: open_console, open_management_console, open_dollhouse_mcp.',
|
|
1466
1551
|
params: {
|
|
1467
1552
|
tab: { type: 'string', description: 'Tab to open (portfolio, logs, metrics, permissions, setup). Default: last-used tab.', required: false },
|
|
1553
|
+
q: { type: 'string', description: 'Pre-populate search query on the target tab.' },
|
|
1554
|
+
type: { type: 'string', description: 'Filter by element type (persona, skill, template, agent, memory, ensemble) on portfolio tab.' },
|
|
1555
|
+
name: { type: 'string', description: 'Navigate directly to a specific element detail view on portfolio tab.' },
|
|
1556
|
+
level: { type: 'string', description: 'Filter by log level (debug, info, warn, error) on logs tab.' },
|
|
1557
|
+
category: { type: 'string', description: 'Filter by category on logs tab (application, security, performance).' },
|
|
1558
|
+
since: { type: 'string', description: 'Time range filter (ISO 8601 or relative: 5m, 1h, 24h, 7d) on logs/metrics tabs.' },
|
|
1468
1559
|
},
|
|
1469
1560
|
returns: { name: 'BrowserResult', kind: 'object', description: 'Confirmation with the URL of the opened browser' },
|
|
1470
1561
|
examples: [
|
|
1471
1562
|
'{ operation: "open_portfolio_browser" }',
|
|
1472
1563
|
'{ operation: "open_portfolio_browser", params: { tab: "logs" } }',
|
|
1564
|
+
'{ operation: "open_portfolio_browser", params: { tab: "portfolio", q: "axiom", type: "persona" } }',
|
|
1565
|
+
'{ operation: "open_portfolio_browser", params: { tab: "logs", level: "error", since: "1h" } }',
|
|
1473
1566
|
],
|
|
1474
1567
|
},
|
|
1475
1568
|
open_logs: {
|
|
1476
1569
|
endpoint: 'READ',
|
|
1477
1570
|
handler: 'mcpAqlHandler',
|
|
1478
1571
|
method: 'dispatchBrowser',
|
|
1479
|
-
|
|
1480
|
-
|
|
1572
|
+
category: 'Management Console',
|
|
1573
|
+
description: 'Open the management console directly on the logs tab. Supports URL parameters for pre-filtered views. Aliases: open_dollhouse_logs, open_dollhouse_mcp_logs.',
|
|
1574
|
+
params: {
|
|
1575
|
+
level: { type: 'string', description: 'Filter by minimum log level (debug, info, warn, error).' },
|
|
1576
|
+
category: { type: 'string', description: 'Filter by log category (application, security, performance).' },
|
|
1577
|
+
source: { type: 'string', description: 'Filter by log source component.' },
|
|
1578
|
+
q: { type: 'string', description: 'Search log messages.' },
|
|
1579
|
+
since: { type: 'string', description: 'Time range (ISO 8601 or relative: 5m, 1h, 24h, 7d).' },
|
|
1580
|
+
},
|
|
1481
1581
|
returns: { name: 'BrowserResult', kind: 'object', description: 'Confirmation with the URL of the opened browser' },
|
|
1482
|
-
examples: [
|
|
1582
|
+
examples: [
|
|
1583
|
+
'{ operation: "open_logs" }',
|
|
1584
|
+
'{ operation: "open_logs", params: { level: "error", since: "1h" } }',
|
|
1585
|
+
],
|
|
1483
1586
|
},
|
|
1484
1587
|
open_metrics: {
|
|
1485
1588
|
endpoint: 'READ',
|
|
1486
1589
|
handler: 'mcpAqlHandler',
|
|
1487
1590
|
method: 'dispatchBrowser',
|
|
1488
|
-
|
|
1489
|
-
|
|
1591
|
+
category: 'Management Console',
|
|
1592
|
+
description: 'Open the management console directly on the metrics tab. Supports URL parameters for filtered views. Aliases: open_dollhouse_metrics, open_dollhouse_mcp_metrics.',
|
|
1593
|
+
params: {
|
|
1594
|
+
since: { type: 'string', description: 'Time range (15m, 30m, 1h).' },
|
|
1595
|
+
refresh: { type: 'number', description: 'Auto-refresh interval in seconds. 0 disables.' },
|
|
1596
|
+
},
|
|
1490
1597
|
returns: { name: 'BrowserResult', kind: 'object', description: 'Confirmation with the URL of the opened browser' },
|
|
1491
|
-
examples: [
|
|
1598
|
+
examples: [
|
|
1599
|
+
'{ operation: "open_metrics" }',
|
|
1600
|
+
'{ operation: "open_metrics", params: { since: "1h", refresh: 5 } }',
|
|
1601
|
+
],
|
|
1492
1602
|
},
|
|
1493
1603
|
open_permissions: {
|
|
1494
1604
|
endpoint: 'READ',
|
|
1495
1605
|
handler: 'mcpAqlHandler',
|
|
1496
1606
|
method: 'dispatchBrowser',
|
|
1607
|
+
category: 'Management Console',
|
|
1497
1608
|
description: 'Open the management console directly on the permissions tab. Aliases: open_dollhouse_permissions.',
|
|
1498
1609
|
params: {},
|
|
1499
1610
|
returns: { name: 'BrowserResult', kind: 'object', description: 'Confirmation with the URL of the opened browser' },
|
|
@@ -1503,6 +1614,7 @@ export const BROWSER_SCHEMAS = {
|
|
|
1503
1614
|
endpoint: 'READ',
|
|
1504
1615
|
handler: 'mcpAqlHandler',
|
|
1505
1616
|
method: 'dispatchBrowser',
|
|
1617
|
+
category: 'Management Console',
|
|
1506
1618
|
description: 'Open the management console directly on the setup/install tab. Aliases: open_dollhouse_setup, open_installer.',
|
|
1507
1619
|
params: {},
|
|
1508
1620
|
returns: { name: 'BrowserResult', kind: 'object', description: 'Confirmation with the URL of the opened browser' },
|
|
@@ -1584,4 +1696,4 @@ export function getAllSchemaOperations() {
|
|
|
1584
1696
|
export function getAllOperationSchemas() {
|
|
1585
1697
|
return ALL_OPERATION_SCHEMAS;
|
|
1586
1698
|
}
|
|
1587
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvT3BlcmF0aW9uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUF3S0gsK0VBQStFO0FBQy9FLGtEQUFrRDtBQUNsRCwrRUFBK0U7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXVCO0lBQ3ZELGlCQUFpQixFQUFFO1FBQ2pCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixXQUFXLEVBQUUsa0VBQWtFO1FBQy9FLFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUU7WUFDeEUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUU7U0FDN0Q7UUFDRCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsMENBQTBDLEVBQUU7UUFDcEgsUUFBUSxFQUFFLENBQUMscUVBQXFFLENBQUM7S0FDbEY7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixRQUFRLEVBQUUsTUFBTTtRQUNoQixPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLE1BQU0sRUFBRSxrQkFBa0I7UUFDMUIsV0FBVyxFQUFFLDBEQUEwRDtRQUN2RSxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO1NBQ3ZFO1FBQ0QsT0FB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QU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUFpQjtJQUNsRCxPQUFPLFNBQVMsSUFBSSxxQkFBcUIsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsU0FBaUI7SUFDckQsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBa0JEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE1BQStCO0lBQ25FLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFdkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUk7UUFDSixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxLQUFLO1FBQy9CLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsSUFBSSxZQUFZO1FBQ25ELEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDL0QsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPLHdCQUF3QixDQUFDO0FBQ2xDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8scUJBQXFCLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3BlcmF0aW9uU2NoZW1hIC0gRGVjbGFyYXRpdmUgb3BlcmF0aW9uIGRlZmluaXRpb25zIGZvciBNQ1AtQVFMXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgc2NoZW1hLWRyaXZlbiBvcGVyYXRpb24gZGVmaW5pdGlvbnMgdGhhdCBlbmFibGU6XG4gKiAxLiBEZWNsYXJhdGl2ZSBvcGVyYXRpb24gY29uZmlndXJhdGlvbiAobm8gbWFudWFsIHN3aXRjaCBzdGF0ZW1lbnRzKVxuICogMi4gQXV0by1nZW5lcmF0ZWQgcGFyYW1ldGVyIHZhbGlkYXRpb25cbiAqIDMuIFR5cGUtc2FmZSBkaXNwYXRjaCB0byBoYW5kbGVyIG1ldGhvZHNcbiAqIDQuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIG9wZXJhdGlvbiBtZXRhZGF0YVxuICpcbiAqIEFSQ0hJVEVDVFVSRTpcbiAqIE9wZXJhdGlvbnMgYXJlIGRlZmluZWQgd2l0aDpcbiAqIC0gZW5kcG9pbnQ6IENSVURFIGVuZHBvaW50IChDUkVBVEUsIFJFQUQsIFVQREFURSwgREVMRVRFLCBFWEVDVVRFKVxuICogLSBoYW5kbGVyOiBLZXkgaW4gSGFuZGxlclJlZ2lzdHJ5XG4gKiAtIG1ldGhvZDogTWV0aG9kIG5hbWUgb24gdGhlIGhhbmRsZXJcbiAqIC0gcGFyYW1zOiBQYXJhbWV0ZXIgZGVmaW5pdGlvbnMgd2l0aCB0eXBlcyBhbmQgbWFwcGluZ3NcbiAqIC0gZGVzY3JpcHRpb246IEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uXG4gKlxuICogVGhlIFNjaGVtYURpc3BhdGNoZXIgdXNlcyB0aGVzZSBkZWZpbml0aW9ucyB0byBhdXRvbWF0aWNhbGx5IHJvdXRlXG4gKiBvcGVyYXRpb25zIHRvIGhhbmRsZXIgbWV0aG9kcyB3aXRob3V0IG1hbnVhbCBkaXNwYXRjaCBjb2RlLlxuICpcbiAqIEBzZWUgSXNzdWUgIzI0NyAtIFNjaGVtYS1kcml2ZW4gb3BlcmF0aW9uIGRlZmluaXRpb25zXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDUlVERW5kcG9pbnQgfSBmcm9tICcuL09wZXJhdGlvblJvdXRlci5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhcmFtZXRlciBTY2hlbWEgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQcmltaXRpdmUgdHlwZXMgc3VwcG9ydGVkIGluIHBhcmFtZXRlciBzY2hlbWFzXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmFtVHlwZSA9XG4gIHwgJ3N0cmluZydcbiAgfCAnbnVtYmVyJ1xuICB8ICdib29sZWFuJ1xuICB8ICdvYmplY3QnXG4gIHwgJ2FycmF5J1xuICB8ICdzdHJpbmdbXSdcbiAgfCAnc3RyaW5nIHwgc3RyaW5nW10nIC8vIFVuaW9uIHR5cGUgZm9yIGZpZWxkcyB0aGF0IGFjY2VwdCBwcmVzZXQgc3RyaW5nIG9yIGFycmF5XG4gIHwgJ3Vua25vd24nOyAvLyBGb3IgcGFyYW1zIHRoYXQgYWNjZXB0IGFueSB0eXBlXG5cbi8qKlxuICogUGFyYW1ldGVyIGRlZmluaXRpb24gaW4gb3BlcmF0aW9uIHNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtRGVmIHtcbiAgLyoqIFBhcmFtZXRlciB0eXBlIGZvciB2YWxpZGF0aW9uICovXG4gIHR5cGU6IFBhcmFtVHlwZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhcmFtZXRlciBpcyByZXF1aXJlZCAoZGVmYXVsdDogZmFsc2UpICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIERlZmF1bHQgdmFsdWUgaWYgbm90IHByb3ZpZGVkICovXG4gIGRlZmF1bHQ/OiB1bmtub3duO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBNYXBzIGlucHV0IHBhcmFtIG5hbWUgdG8gaGFuZGxlciBhcmcgbmFtZSAoaWYgZGlmZmVyZW50KSAqL1xuICBtYXBUbz86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsdGVybmF0aXZlIHNvdXJjZXMgdG8gY2hlY2sgZm9yIHRoaXMgcGFyYW1ldGVyIHZhbHVlLlxuICAgKiBDaGVja2VkIGluIG9yZGVyIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gdGhlIHByaW1hcnkgcGFyYW0gbmFtZS5cbiAgICpcbiAgICogU3VwcG9ydHMgZG90IG5vdGF0aW9uIGZvciBuZXN0ZWQgYWNjZXNzOlxuICAgKiAtICdpbnB1dC5lbGVtZW50VHlwZScgLSBjaGVja3MgaW5wdXQuZWxlbWVudFR5cGVcbiAgICogLSAncGFyYW1zLnR5cGUnIC0gY2hlY2tzIHBhcmFtcy50eXBlIChzYW1lIGFzIGp1c3QgY2hlY2tpbmcgdGhlIHBhcmFtKVxuICAgKlxuICAgKiBVc2UgY2FzZTogZWxlbWVudFR5cGUgY2FuIGNvbWUgZnJvbSBpbnB1dC5lbGVtZW50VHlwZSBPUiBwYXJhbXMudHlwZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy50eXBlJ10gfVxuICAgKi9cbiAgc291cmNlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJldHVybiB0eXBlIGRlZmluaXRpb24gZm9yIGludHJvc3BlY3Rpb25cbiAqIEBzZWUgSXNzdWUgIzI1NCAtIEF1dG8tZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBmcm9tIHNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHVyblR5cGVEZWYge1xuICAvKiogUmV0dXJuIHR5cGUgbmFtZSAoZS5nLiwgJ0VsZW1lbnRMaXN0JywgJ1NlYXJjaFJlc3VsdCcpICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFR5cGUga2luZCBmb3IgY2F0ZWdvcml6YXRpb24gKi9cbiAga2luZDogJ2VudW0nIHwgJ29iamVjdCcgfCAnc2NhbGFyJyB8ICd1bmlvbic7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB3aGF0IGlzIHJldHVybmVkICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVyIHNjaGVtYSAtIG1hcCBvZiBwYXJhbWV0ZXIgbmFtZXMgdG8gZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgUGFyYW1TY2hlbWEgPSBSZWNvcmQ8c3RyaW5nLCBQYXJhbURlZj47XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9wZXJhdGlvbiBTY2hlbWEgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBIYW5kbGVyIGtleXMgLSB0aGVzZSBtYXAgdG8gcHJvcGVydGllcyBpbiBIYW5kbGVyUmVnaXN0cnlcbiAqL1xuZXhwb3J0IHR5cGUgSGFuZGxlcktleSA9XG4gIHwgJ2VsZW1lbnRDUlVEJ1xuICB8ICdtZW1vcnlNYW5hZ2VyJ1xuICB8ICdhZ2VudE1hbmFnZXInXG4gIHwgJ3RlbXBsYXRlUmVuZGVyZXInXG4gIHwgJ2VsZW1lbnRRdWVyeVNlcnZpY2UnXG4gIHwgJ2NvbGxlY3Rpb25IYW5kbGVyJ1xuICB8ICdwb3J0Zm9saW9IYW5kbGVyJ1xuICB8ICdhdXRoSGFuZGxlcidcbiAgfCAnY29uZmlnSGFuZGxlcidcbiAgfCAnZW5oYW5jZWRJbmRleEhhbmRsZXInXG4gIHwgJ3BlcnNvbmFIYW5kbGVyJ1xuICB8ICdzeW5jSGFuZGxlcidcbiAgfCAnYnVpbGRJbmZvU2VydmljZSdcbiAgfCAnbWNwQXFsSGFuZGxlcidcbiAgfCAnY2FjaGVNZW1vcnlCdWRnZXQnO1xuXG4vKipcbiAqIENvbXBsZXRlIG9wZXJhdGlvbiBzY2hlbWEgZGVmaW5pdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvbkRlZiB7XG4gIC8qKiBDUlVERSBlbmRwb2ludCB0aGlzIG9wZXJhdGlvbiBiZWxvbmdzIHRvICovXG4gIGVuZHBvaW50OiBDUlVERW5kcG9pbnQ7XG4gIC8qKiBIYW5kbGVyIGtleSBpbiBIYW5kbGVyUmVnaXN0cnkgKi9cbiAgaGFuZGxlcjogSGFuZGxlcktleTtcbiAgLyoqIE1ldGhvZCBuYW1lIHRvIGNhbGwgb24gdGhlIGhhbmRsZXIgKi9cbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXIgZGVmaW5pdGlvbnMgKi9cbiAgcGFyYW1zPzogUGFyYW1TY2hlbWE7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgaGFuZGxlciBpcyBvcHRpb25hbCAobWF5IG5vdCBiZSBjb25maWd1cmVkKSAqL1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gYXJndW1lbnQgYnVpbGRlciBmb3IgY29tcGxleCBjYXNlczpcbiAgICogLSAnc2luZ2xlJzogUGFzcyBwYXJhbXMgaW4gc2NoZW1hIG9yZGVyIGFzIHBvc2l0aW9uYWwgYXJncyAoZGVmYXVsdClcbiAgICogLSAnc3ByZWFkJzogUGFzcyAocXVlcnksIHBhcmFtcykgLSBmb3Igc2VhcmNoLXN0eWxlIG9wZXJhdGlvbnNcbiAgICogLSAnbmFtZWQnOiBQYXNzIGFsbCBwYXJhbXMgYXMgYSBzaW5nbGUgbmFtZWQgb2JqZWN0XG4gICAqIC0gJ25hbWVkV2l0aFR5cGUnOiBMaWtlICduYW1lZCcgYnV0IGluY2x1ZGVzIHJlc29sdmVkICd0eXBlJyBwYXJhbVxuICAgKiAtICd0eXBlV2l0aFBhcmFtcyc6IFBhc3MgKHR5cGUsIGZ1bGxQYXJhbXMpIGZvciBvcGVyYXRpb25zIG5lZWRpbmcgdHlwZSArIHBhZ2luYXRpb25cbiAgICovXG4gIGFyZ0J1aWxkZXI/OiAnc2luZ2xlJyB8ICdzcHJlYWQnIHwgJ25hbWVkJyB8ICduYW1lZFdpdGhUeXBlJyB8ICd0eXBlV2l0aFBhcmFtcyc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgb3BlcmF0aW9uIG5lZWRzIGFjY2VzcyB0byB0aGUgZnVsbCBPcGVyYXRpb25JbnB1dC5cbiAgICogV2hlbiB0cnVlLCBTY2hlbWFEaXNwYXRjaGVyIHBhc3NlcyB0aGUgZnVsbCBpbnB1dCBmb3Igc291cmNlIHJlc29sdXRpb24uXG4gICAqIFJlcXVpcmVkIGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIHBhcmFtIHNvdXJjZXMgbGlrZSAnaW5wdXQuZWxlbWVudFR5cGUnLlxuICAgKi9cbiAgbmVlZHNGdWxsSW5wdXQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljIHBhcmFtZXRlciBuYW1lIGNvbnZlcnNpb24gc3R5bGUuXG4gICAqIC0gJ3NuYWtlVG9DYW1lbCc6IENvbnZlcnQgc25ha2VfY2FzZSBwYXJhbXMgdG8gY2FtZWxDYXNlIGZvciBoYW5kbGVyXG4gICAqXG4gICAqIFdoZW4gc2V0LCBhbGwgcGFyYW1zIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCBiZWZvcmUgYmVpbmcgcGFzc2VkXG4gICAqIHRvIHRoZSBoYW5kbGVyLiBJbmRpdmlkdWFsIHBhcmFtIGBtYXBUb2Agb3ZlcnJpZGVzIHN0aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSW5wdXQ6IHsgZHJ5X3J1bjogdHJ1ZSwgbWF4X3Jlc3VsdHM6IDEwIH1cbiAgICogLy8gSGFuZGxlciByZWNlaXZlczogeyBkcnlSdW46IHRydWUsIG1heFJlc3VsdHM6IDEwIH1cbiAgICovXG4gIHBhcmFtU3R5bGU/OiAnc25ha2VUb0NhbWVsJztcbiAgLyoqXG4gICAqIFJldHVybiB0eXBlIGluZm9ybWF0aW9uIGZvciBpbnRyb3NwZWN0aW9uXG4gICAqIEBzZWUgSXNzdWUgIzI1NCAtIEF1dG8tZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBmcm9tIHNjaGVtYVxuICAgKi9cbiAgcmV0dXJucz86IFJldHVyblR5cGVEZWY7XG4gIC8qKlxuICAgKiBVc2FnZSBleGFtcGxlcyBmb3IgaW50cm9zcGVjdGlvblxuICAgKiBAc2VlIElzc3VlICMyNTQgLSBBdXRvLWdlbmVyYXRlIGludHJvc3BlY3Rpb24gZnJvbSBzY2hlbWFcbiAgICovXG4gIGV4YW1wbGVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOb3JtYWxpemVyIHRvIHVzZSBmb3IgcGFyYW1ldGVyIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBJZiBzcGVjaWZpZWQsIHRoZSBub3JtYWxpemVyIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGhhbmRsZXIgbWV0aG9kLFxuICAgKiB0cmFuc2Zvcm1pbmcgcmF3IGlucHV0IHBhcmFtZXRlcnMgaW50byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IHRoZSBoYW5kbGVyLlxuICAgKlxuICAgKiBOb3JtYWxpemVycyBhcmUgcmVnaXN0ZXJlZCBpbiBOb3JtYWxpemVyUmVnaXN0cnkgYW5kIGxvb2tlZCB1cCBieSBuYW1lLlxuICAgKlxuICAgKiBAc2VlIElzc3VlICMyNDMgLSBTY2hlbWEtZHJpdmVuIG5vcm1hbGl6ZXIgYXJjaGl0ZWN0dXJlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFVzZSB0aGUgc2VhcmNoIHBhcmFtcyBub3JtYWxpemVyXG4gICAqIG5vcm1hbGl6ZXI6ICdzZWFyY2hQYXJhbXMnXG4gICAqL1xuICBub3JtYWxpemVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIG9wZXJhdGlvbiBzY2hlbWEgLSBtYXBzIG9wZXJhdGlvbiBuYW1lcyB0byBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgdHlwZSBPcGVyYXRpb25TY2hlbWFNYXAgPSBSZWNvcmQ8c3RyaW5nLCBPcGVyYXRpb25EZWY+O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb2xsZWN0aW9uIE9wZXJhdGlvbnMgU2NoZW1hIChQcm9vZiBvZiBDb25jZXB0KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbGxlY3Rpb24gb3BlcmF0aW9ucyBzY2hlbWFcbiAqXG4gKiBUaGVzZSBhcmUgdGhlIGZpcnN0IG9wZXJhdGlvbnMgbWlncmF0ZWQgdG8gc2NoZW1hLWRyaXZlbiBkaXNwYXRjaC5cbiAqIEVhY2ggb3BlcmF0aW9uIGRlZmluZXM6XG4gKiAtIFdoZXJlIGl0IGxpdmVzIChlbmRwb2ludClcbiAqIC0gV2hhdCBoYW5kbGVyIHRvIHVzZVxuICogLSBXaGF0IG1ldGhvZCB0byBjYWxsXG4gKiAtIFdoYXQgcGFyYW1ldGVycyBpdCBhY2NlcHRzXG4gKi9cbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgYnJvd3NlX2NvbGxlY3Rpb246IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb2xsZWN0aW9uSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnYnJvd3NlQ29sbGVjdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdCcm93c2UgdGhlIERvbGxob3VzZU1DUCBjb21tdW5pdHkgY29sbGVjdGlvbiBieSBzZWN0aW9uIGFuZCB0eXBlJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHNlY3Rpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQ29sbGVjdGlvbiBzZWN0aW9uIHRvIGJyb3dzZScgfSxcbiAgICAgIHR5cGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlIGZpbHRlcicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NvbGxlY3Rpb25Ccm93c2VSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdCcm93c2VhYmxlIGNvbGxlY3Rpb24gc2VjdGlvbnMgYW5kIGl0ZW1zJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImJyb3dzZV9jb2xsZWN0aW9uXCIsIHBhcmFtczogeyBzZWN0aW9uOiBcInBlcnNvbmFzXCIgfSB9J10sXG4gIH0sXG4gIHNlYXJjaF9jb2xsZWN0aW9uOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaENvbGxlY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHRoZSBjb21tdW5pdHkgY29sbGVjdGlvbiBmb3IgZWxlbWVudHMgYnkga2V5d29yZHMnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgcXVlcnk6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBxdWVyeScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NvbGxlY3Rpb25TZWFyY2hSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdNYXRjaGluZyBlbGVtZW50cyBmcm9tIGNvbGxlY3Rpb24nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic2VhcmNoX2NvbGxlY3Rpb25cIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNvZGUgcmV2aWV3XCIgfSB9J10sXG4gIH0sXG4gIHNlYXJjaF9jb2xsZWN0aW9uX2VuaGFuY2VkOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaENvbGxlY3Rpb25FbmhhbmNlZCcsXG4gICAgZGVzY3JpcHRpb246ICdBZHZhbmNlZCBzZWFyY2ggd2l0aCBwYWdpbmF0aW9uLCBmaWx0ZXJpbmcsIGFuZCBzb3J0aW5nJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnc3ByZWFkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbmhhbmNlZFNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRlZCBzZWFyY2ggcmVzdWx0cyB3aXRoIG1ldGFkYXRhJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcInNlYXJjaF9jb2xsZWN0aW9uX2VuaGFuY2VkXCIsIHBhcmFtczogeyBxdWVyeTogXCJhc3Npc3RhbnRcIiwgbGltaXQ6IDEwIH0gfSddLFxuICB9LFxuICBnZXRfY29sbGVjdGlvbl9jb250ZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2dldENvbGxlY3Rpb25Db250ZW50JyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBjb250ZW50IGZyb20gdGhlIGNvbGxlY3Rpb24nLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQ29udGVudCBwYXRoIGluIGNvbGxlY3Rpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDb2xsZWN0aW9uQ29udGVudCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0Z1bGwgY29udGVudCBhbmQgbWV0YWRhdGEgZm9yIGNvbGxlY3Rpb24gaXRlbScgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jb250ZW50XCIsIHBhcmFtczogeyBwYXRoOiBcInBlcnNvbmFzL2NyZWF0aXZlLXdyaXRlci5tZFwiIH0gfSddLFxuICB9LFxuICBnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGg6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb2xsZWN0aW9uSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZ2V0Q29sbGVjdGlvbkNhY2hlSGVhbHRoJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBoZWFsdGggc3RhdHVzIGFuZCBzdGF0aXN0aWNzIGZvciB0aGUgY29sbGVjdGlvbiBjYWNoZScsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDYWNoZUhlYWx0aFN0YXR1cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0NhY2hlIGhlYWx0aCBtZXRyaWNzIGFuZCBkaWFnbm9zdGljcycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIiB9J10sXG4gIH0sXG4gIGluc3RhbGxfY29sbGVjdGlvbl9jb250ZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdjb2xsZWN0aW9uSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnaW5zdGFsbENvbnRlbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBhbiBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdG8geW91ciBsb2NhbCBwb3J0Zm9saW8nLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQ29udGVudCBwYXRoIHRvIGluc3RhbGwnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdJbnN0YWxsUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnSW5zdGFsbGF0aW9uIHJlc3VsdCB3aXRoIGVsZW1lbnQgbmFtZSwgdHlwZSwgYW5kIGxvY2FsIGZpbGUgcGF0aCcgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgcGF0aDogXCJwZXJzb25hcy9jcmVhdGl2ZS13cml0ZXIubWRcIiB9IH0nXSxcbiAgfSxcbiAgc3VibWl0X2NvbGxlY3Rpb25fY29udGVudDoge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3N1Ym1pdENvbnRlbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3VibWl0IGEgbG9jYWwgZWxlbWVudCB0byB0aGUgY29tbXVuaXR5IGNvbGxlY3Rpb24gdmlhIEdpdEh1YicsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7XG4gICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdDb250ZW50IHRvIHN1Ym1pdCcgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1N1Ym1pdFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gcmVzdWx0IHdpdGggR2l0SHViIFBSIFVSTCBhbmQgc3RhdHVzIG1lc3NhZ2UnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgY29udGVudDogXCJwZXJzb25hcy9teS1wZXJzb25hXCIgfSB9J10sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBdXRoIE9wZXJhdGlvbnMgU2NoZW1hXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBBVVRIX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgc2V0dXBfZ2l0aHViX2F1dGg6IHtcbiAgICBlbmRwb2ludDogJ0NSRUFURScsXG4gICAgaGFuZGxlcjogJ2F1dGhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdzZXR1cEdpdEh1YkF1dGgnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2V0IHVwIEdpdEh1YiBhdXRoZW50aWNhdGlvbiB1c2luZyBkZXZpY2UgZmxvdycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdBdXRoU2V0dXBSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdEZXZpY2UgZmxvdyBzZXR1cDogeyB1c2VyQ29kZSwgdmVyaWZpY2F0aW9uVXJsLCBleHBpcmVzSW4sIG1lc3NhZ2UgfScgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJzZXR1cF9naXRodWJfYXV0aFwiIH0nXSxcbiAgfSxcbiAgY2hlY2tfZ2l0aHViX2F1dGg6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdhdXRoSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnY2hlY2tHaXRIdWJBdXRoJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NoZWNrIGN1cnJlbnQgR2l0SHViIGF1dGhlbnRpY2F0aW9uIHN0YXR1cycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdBdXRoU3RhdHVzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ3VycmVudCBhdXRoZW50aWNhdGlvbiBzdGF0ZSBhbmQgdXNlciBpbmZvJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImNoZWNrX2dpdGh1Yl9hdXRoXCIgfSddLFxuICB9LFxuICBjbGVhcl9naXRodWJfYXV0aDoge1xuICAgIGVuZHBvaW50OiAnREVMRVRFJyxcbiAgICBoYW5kbGVyOiAnYXV0aEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2NsZWFyR2l0SHViQXV0aCcsXG4gICAgZGVzY3JpcHRpb246ICdSZW1vdmUgR2l0SHViIGF1dGhlbnRpY2F0aW9uIGFuZCBkaXNjb25uZWN0JyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ09wZXJhdGlvblJlc3VsdCcsIGtpbmQ6ICd1bmlvbicsIGRlc2NyaXB0aW9uOiAnU3VjY2VzcyBvciBmYWlsdXJlIHN0YXR1cycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJjbGVhcl9naXRodWJfYXV0aFwiIH0nXSxcbiAgfSxcbiAgY29uZmlndXJlX29hdXRoOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdhdXRoSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnY29uZmlndXJlT0F1dGgnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJlIEdpdEh1YiBPQXV0aCBjbGllbnQgSUQnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgY2xpZW50X2lkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ09BdXRoIGNsaWVudCBJRCcgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ09BdXRoQ29uZmlnJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnT0F1dGggY29uZmlndXJhdGlvbiBzdGF0dXMnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwiY29uZmlndXJlX29hdXRoXCIsIHBhcmFtczogeyBjbGllbnRfaWQ6IFwieW91ci1jbGllbnQtaWRcIiB9IH0nXSxcbiAgfSxcbiAgb2F1dGhfaGVscGVyX3N0YXR1czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2F1dGhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdnZXRPQXV0aEhlbHBlclN0YXR1cycsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBhYm91dCBPQXV0aCBoZWxwZXIgcHJvY2VzcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7XG4gICAgICB2ZXJib3NlOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdJbmNsdWRlIHZlcmJvc2UgZGlhZ25vc3RpY3MnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdPQXV0aEhlbHBlclN0YXR1cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0hlbHBlciBwcm9jZXNzIGRpYWdub3N0aWNzJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcIm9hdXRoX2hlbHBlcl9zdGF0dXNcIiwgcGFyYW1zOiB7IHZlcmJvc2U6IHRydWUgfSB9J10sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmhhbmNlZCBJbmRleCBPcGVyYXRpb25zIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgRU5IQU5DRURfSU5ERVhfT1BFUkFUSU9OUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBmaW5kX3NpbWlsYXJfZWxlbWVudHM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbmhhbmNlZEluZGV4SGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZmluZFNpbWlsYXJFbGVtZW50cycsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIHNlbWFudGljYWxseSBzaW1pbGFyIGVsZW1lbnRzIHVzaW5nIE5MUCBzY29yaW5nJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgbWFwVG86ICdlbGVtZW50VHlwZScgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAxMCB9LFxuICAgICAgdGhyZXNob2xkOiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAwLjUgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1NpbWlsYXJFbGVtZW50cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0xpc3Qgb2Ygc2ltaWxhciBlbGVtZW50cyB3aXRoIHNpbWlsYXJpdHkgc2NvcmVzJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImZpbmRfc2ltaWxhcl9lbGVtZW50c1wiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNyZWF0aXZlLXdyaXRlclwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBsaW1pdDogNSB9IH0nXSxcbiAgfSxcbiAgZ2V0X2VsZW1lbnRfcmVsYXRpb25zaGlwczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VuaGFuY2VkSW5kZXhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdnZXRFbGVtZW50UmVsYXRpb25zaGlwcycsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYWxsIHJlbGF0aW9uc2hpcHMgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCcsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIG1hcFRvOiAnZWxlbWVudE5hbWUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHsgdHlwZTogJ3N0cmluZycsIG1hcFRvOiAnZWxlbWVudFR5cGUnIH0sXG4gICAgICByZWxhdGlvbnNoaXBfdHlwZXM6IHsgdHlwZTogJ3N0cmluZ1tdJywgbWFwVG86ICdyZWxhdGlvbnNoaXBUeXBlcycgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VsZW1lbnRSZWxhdGlvbnNoaXBzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnUmVsYXRpb25zaGlwIGdyYXBoIGZvciB0aGUgZWxlbWVudCcgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudF9yZWxhdGlvbnNoaXBzXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiB9IH0nXSxcbiAgfSxcbiAgc2VhcmNoX2J5X3ZlcmI6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbmhhbmNlZEluZGV4SGFuZGxlcicsXG4gICAgbWV0aG9kOiAnc2VhcmNoQnlWZXJiJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NlYXJjaCBmb3IgZWxlbWVudHMgdGhhdCBoYW5kbGUgYSBzcGVjaWZpYyBhY3Rpb24gdmVyYicsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHZlcmI6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVmYXVsdDogMjAgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1ZlcmJTZWFyY2hSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdFbGVtZW50cyBtYXRjaGluZyB0aGUgYWN0aW9uIHZlcmInIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic2VhcmNoX2J5X3ZlcmJcIiwgcGFyYW1zOiB7IHZlcmI6IFwiYW5hbHl6ZVwiLCBsaW1pdDogMTAgfSB9J10sXG4gIH0sXG4gIGdldF9yZWxhdGlvbnNoaXBfc3RhdHM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbmhhbmNlZEluZGV4SGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZ2V0UmVsYXRpb25zaGlwU3RhdHMnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IHN0YXRpc3RpY3MgYWJvdXQgRW5oYW5jZWQgSW5kZXggcmVsYXRpb25zaGlwcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdSZWxhdGlvbnNoaXBTdGF0cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FnZ3JlZ2F0ZSBzdGF0aXN0aWNzIGFib3V0IGVsZW1lbnQgcmVsYXRpb25zaGlwcycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfcmVsYXRpb25zaGlwX3N0YXRzXCIgfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGVtcGxhdGUgT3BlcmF0aW9ucyBTY2hlbWFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IFRFTVBMQVRFX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgcmVuZGVyOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAndGVtcGxhdGVSZW5kZXJlcicsXG4gICAgbWV0aG9kOiAncmVuZGVyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlbmRlciBhIHRlbXBsYXRlIHdpdGggcHJvdmlkZWQgdmFyaWFibGVzLiBGb3Igc2VjdGlvbi1mb3JtYXQgdGVtcGxhdGVzICg8dGVtcGxhdGU+LCA8c3R5bGU+LCA8c2NyaXB0PiksIHJlbmRlcnMgdGhlIDx0ZW1wbGF0ZT4gc2VjdGlvbiBieSBkZWZhdWx0IOKAlCB2YXJpYWJsZSBzdWJzdGl0dXRpb24gb25seSBhcHBsaWVzIHRoZXJlLiBVc2Ugc2VjdGlvbjogXCJzdHlsZVwiIG9yIFwic2NyaXB0XCIgdG8gcmV0cmlldmUgcmF3IHBhc3N0aHJvdWdoIHNlY3Rpb25zIHdoZXJlIH19IGlzIHNhZmUuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIC8vIElzc3VlICMyOTA6IFVzZSBlbGVtZW50X25hbWUgZm9yIGNvbnNpc3RlbmN5XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ25hbWUnLCBkZXNjcmlwdGlvbjogJ1RlbXBsYXRlIG5hbWUnIH0sXG4gICAgICB2YXJpYWJsZXM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnVmFyaWFibGVzIHRvIHN1YnN0aXR1dGUgaW4gdGhlIDx0ZW1wbGF0ZT4gc2VjdGlvbiAoZS5nLiB7IFwidGl0bGVcIjogXCJNeSBQYWdlXCIsIFwidXNlclwiOiBcIkFsaWNlXCIgfSknIH0sXG4gICAgICBzZWN0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRXh0cmFjdCBhIHNwZWNpZmljIHJhdyBzZWN0aW9uIHdpdGhvdXQgdmFyaWFibGUgc3Vic3RpdHV0aW9uOiBcInN0eWxlXCIgb3IgXCJzY3JpcHRcIi4gVXNlZnVsIGZvciBDU1MgdGhlbWUgdGVtcGxhdGVzIG9yIEpTLW9ubHkgdGVtcGxhdGVzLiBPbmx5IHZhbGlkIGZvciBzZWN0aW9uLWZvcm1hdCB0ZW1wbGF0ZXMuJyB9LFxuICAgICAgYWxsX3NlY3Rpb25zOiB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ1JldHVybiBhbGwgc2VjdGlvbnMgdG9nZXRoZXI6IHsgdGVtcGxhdGU6IHJlbmRlcmVkLCBzdHlsZTogcmF3LCBzY3JpcHQ6IHJhdyB9LiBVc2Ugd2hlbiB5b3UgbmVlZCB0aGUgcmVuZGVyZWQgSFRNTCBhbG9uZ3NpZGUgaXRzIENTUyBhbmQgSlMuJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnUmVuZGVyUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnUmVuZGVyZWQgdGVtcGxhdGUgY29udGVudC4gY29udGVudCBmaWVsZCBoYXMgdGhlIHJlc3VsdCBzdHJpbmc7IHNlY3Rpb25zIGZpZWxkIHBvcHVsYXRlZCB3aGVuIGFsbF9zZWN0aW9uczogdHJ1ZS4nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJyZW5kZXJcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJtZWV0aW5nLW5vdGVzXCIsIHZhcmlhYmxlczogeyBkYXRlOiBcIjIwMjQtMDEtMTVcIiwgYXR0ZW5kZWVzOiBbXCJBbGljZVwiLCBcIkJvYlwiXSB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwicmVuZGVyXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiZGFzaGJvYXJkLXRoZW1lLWRhcmtcIiwgc2VjdGlvbjogXCJzdHlsZVwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwicmVuZGVyXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiZGFzaGJvYXJkLXBhZ2VcIiwgdmFyaWFibGVzOiB7IHRpdGxlOiBcIk15IERhc2hib2FyZFwiIH0sIGFsbF9zZWN0aW9uczogdHJ1ZSB9IH0nLFxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRyb3NwZWN0aW9uIE9wZXJhdGlvbnMgU2NoZW1hXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBJTlRST1NQRUNUSU9OX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgaW50cm9zcGVjdDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJywgLy8gVXNlcyBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgZGlyZWN0bHlcbiAgICBtZXRob2Q6ICdfX2ludHJvc3BlY3RfXycsIC8vIFNwZWNpYWwgbWFya2VyIGZvciBpbnRyb3NwZWN0aW9uXG4gICAgZGVzY3JpcHRpb246ICdRdWVyeSBhdmFpbGFibGUgb3BlcmF0aW9ucywgdHlwZXMsIGFuZCBlbGVtZW50IGZvcm1hdCBzcGVjcyBmb3IgZGlzY292ZXJ5JyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246IFwiV2hhdCB0byBpbnRyb3NwZWN0OiAnb3BlcmF0aW9ucycgKGxpc3QvZGV0YWlsIG9wZXJhdGlvbnMpLCAndHlwZXMnIChsaXN0L2RldGFpbCB0eXBlIGRlZmluaXRpb25zKSwgJ2Zvcm1hdCcgKGVsZW1lbnQgY3JlYXRpb24gZm9ybWF0IHNwZWNzIOKAlCByZXF1aXJlZC9vcHRpb25hbCBmaWVsZHMsIHN5bnRheCwgZXhhbXBsZXMpLCAnY2F0ZWdvcmllcycgKGNhdGVnb3J5IGZvcm1hdCBydWxlcyArIGhvdyB0byBkaXNjb3ZlciBleGlzdGluZyBjYXRlZ29yaWVzIHZpYSBxdWVyeV9lbGVtZW50cykuIERlZmF1bHQ6ICdvcGVyYXRpb25zJ1wiIH0sXG4gICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogXCJTcGVjaWZpYyBpdGVtIG5hbWUuIEZvciAnb3BlcmF0aW9ucyc6IG9wZXJhdGlvbiBuYW1lLiBGb3IgJ3R5cGVzJzogdHlwZSBuYW1lLiBGb3IgJ2Zvcm1hdCc6IGVsZW1lbnQgdHlwZSAoZS5nLiAndGVtcGxhdGUnLCAncGVyc29uYScpLiBOb3QgdXNlZCBmb3IgJ2NhdGVnb3JpZXMnLiBPbWl0IGZvciBvdmVydmlldy5cIiB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnSW50cm9zcGVjdGlvblJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ09wZXJhdGlvbnMsIHR5cGVzLCBvciBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpbmZvcm1hdGlvbicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiwgbmFtZTogXCJjcmVhdGVfZWxlbWVudFwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwidHlwZXNcIiwgbmFtZTogXCJFbGVtZW50VHlwZVwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiZm9ybWF0XCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJmb3JtYXRcIiwgbmFtZTogXCJ0ZW1wbGF0ZVwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY2F0ZWdvcmllc1wiIH0gfScsXG4gICAgXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBlcnNvbmEgT3BlcmF0aW9ucyBTY2hlbWFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IFBFUlNPTkFfT1BFUkFUSU9OUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBpbXBvcnRfcGVyc29uYToge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAncGVyc29uYUhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2ltcG9ydFBlcnNvbmEnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW1wb3J0IGEgcGVyc29uYSBmcm9tIGEgZmlsZSBwYXRoIG9yIEpTT04gc3RyaW5nJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHNvdXJjZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRmlsZSBwYXRoIG9yIEpTT04gc3RyaW5nJyB9LFxuICAgICAgb3ZlcndyaXRlOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdPdmVyd3JpdGUgZXhpc3RpbmcgcGVyc29uYScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0ltcG9ydFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0ltcG9ydCBzdGF0dXMgYW5kIHBlcnNvbmEgaW5mbycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJpbXBvcnRfcGVyc29uYVwiLCBwYXJhbXM6IHsgc291cmNlOiBcIi9wYXRoL3RvL3BlcnNvbmEubWRcIiwgb3ZlcndyaXRlOiB0cnVlIH0gfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlnIE9wZXJhdGlvbnMgU2NoZW1hXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBDT05GSUdfT1BFUkFUSU9OUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBkb2xsaG91c2VfY29uZmlnOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29uZmlnSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnaGFuZGxlQ29uZmlnT3BlcmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ01hbmFnZSBEb2xsaG91c2VNQ1AgY29uZmlndXJhdGlvbiBzZXR0aW5ncycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGFjdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnZ2V0LCBzZXQsIHJlc2V0LCBleHBvcnQsIGltcG9ydCwgd2l6YXJkJyB9LFxuICAgICAgc2V0dGluZzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgdmFsdWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgIHNlY3Rpb246IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgIGZvcm1hdDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgZGF0YTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQ29uZmlnUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gcmVzdWx0JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiZG9sbGhvdXNlX2NvbmZpZ1wiLCBwYXJhbXM6IHsgYWN0aW9uOiBcImdldFwiLCBzZXR0aW5nOiBcImRlYnVnXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJkb2xsaG91c2VfY29uZmlnXCIsIHBhcmFtczogeyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwibG9nTGV2ZWxcIiwgdmFsdWU6IFwidmVyYm9zZVwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgY29udmVydF9za2lsbF9mb3JtYXQ6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb25maWdIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdjb252ZXJ0U2tpbGxGb3JtYXQnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29udmVydCBiZXR3ZWVuIGN1cnJlbnQgQWdlbnQgU2tpbGwgYW5kIERvbGxob3VzZSBTa2lsbCBmb3JtYXRzIChib3RoIGRpcmVjdGlvbnMpIHdpdGggc3RydWN0dXJlZCB3YXJuaW5ncyBhbmQgb3B0aW9uYWwgcm91bmR0cmlwIHN0YXRlIGZvciBsb3NzbGVzcyBzdXBwb3J0ZWQtZmllbGQgcmVzdG9yYXRpb24nLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBkaXJlY3Rpb246IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0NvbnZlcnNpb24gZGlyZWN0aW9uOiBhZ2VudF90b19kb2xsaG91c2Ugb3IgZG9sbGhvdXNlX3RvX2FnZW50JyB9LFxuICAgICAgYWdlbnRfc2tpbGw6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQWdlbnQgU2tpbGwgc3RydWN0dXJlIGZvciBhZ2VudF90b19kb2xsaG91c2U6IHsgXCJTS0lMTC5tZFwiOiBcIi4uLlwiLCBcInNjcmlwdHMvXCI6IHsgLi4uIH0sIFwicmVmZXJlbmNlcy9cIjogeyAuLi4gfSwgXCJhc3NldHMvXCI6IHsgLi4uIH0sIFwiYWdlbnRzL1wiOiB7IC4uLiB9IH0nIH0sXG4gICAgICBkb2xsaG91c2U6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU3RydWN0dXJlZCBEb2xsaG91c2Ugc2tpbGwgYXJ0aWZhY3QgZm9yIGRvbGxob3VzZV90b19hZ2VudDogeyBtZXRhZGF0YSwgaW5zdHJ1Y3Rpb25zLCBjb250ZW50IH0nIH0sXG4gICAgICBkb2xsaG91c2VfbWFya2Rvd246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnU2VyaWFsaXplZCBEb2xsaG91c2UgbWFya2Rvd24gaW5wdXQgZm9yIGRvbGxob3VzZV90b19hZ2VudCAoYWx0ZXJuYXRpdmUgdG8gZG9sbGhvdXNlIG9iamVjdCknIH0sXG4gICAgICByb3VuZHRyaXBfc3RhdGU6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgc3RhdGUgcmV0dXJuZWQgYnkgYWdlbnRfdG9fZG9sbGhvdXNlIGZvciBleGFjdCByZXZlcnNlIGNvbnZlcnNpb24nIH0sXG4gICAgICBwcmVmZXJfcm91bmR0cmlwX3N0YXRlOiB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogdHJ1ZSwgZGVzY3JpcHRpb246ICdXaGVuIHRydWUgKGRlZmF1bHQpLCB1c2Ugcm91bmR0cmlwX3N0YXRlIGlmIHZhbGlkIGZvciBsb3NzbGVzcyByZXN0b3JhdGlvbicgfSxcbiAgICAgIHBhdGhfbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJ3NhZmUnLCBkZXNjcmlwdGlvbjogJ1BhdGggaGFuZGxpbmcgbW9kZTogc2FmZSAoZGVmYXVsdCwgYWxsb3dsaXN0ZWQvdmFsaWRhdGVkIHBhdGhzLCBzZWN1cml0eSBmaW5kaW5ncyBzYW5pdGl6ZWQpIG9yIGxvc3NsZXNzIChwcmVzZXJ2ZSBub24tYWxsb3dsaXN0ZWQgcGF0aHMgZm9yIGZ1bGwtZmlkZWxpdHkgY29udmVyc2lvbnMgd2hpbGUgc3RpbGwgcmVwb3J0aW5nIHNlY3VyaXR5IGZpbmRpbmdzKS4gSW5wdXQgYm91bmRzOiAyIE1pQiBwZXIgdGV4dCBmaWVsZCwgMTYgTWlCIGFnZ3JlZ2F0ZSwgMjAwMCBmaWxlIGVudHJpZXMuIENvbnZlcnNpb24gbWV0cmljcyByZXR1cm5lZCBpbiByZXBvcnQubWV0cmljcy4nIH0sXG4gICAgICBzZWN1cml0eV9tb2RlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnc3RyaWN0JywgZGVzY3JpcHRpb246ICdTZWN1cml0eSBoYW5kbGluZyBtb2RlIGZvciBhZ2VudF90b19kb2xsaG91c2U6IHN0cmljdCAoZGVmYXVsdCwgZmFpbCBjb252ZXJzaW9uIG9uIGhpZ2gvY3JpdGljYWwgZmluZGluZ3MpIG9yIHdhcm4gKHN1cmZhY2UgZmluZGluZ3MgaW4gcmVwb3J0Lndhcm5pbmdzIGFuZCBjb250aW51ZSkuIEZyb250bWF0dGVyIGlzIGFsc28gY2hlY2tlZCBmb3IgdW5zYWZlIFlBTUwgcGF0dGVybnMgKGluY2x1ZGluZyBZQU1MLWJvbWIvYW1wbGlmaWNhdGlvbiBwYXR0ZXJucykuIFVzZSB3YXJuIG9ubHkgZm9yIHRydXN0ZWQgbWlncmF0aW9uIHdvcmtmbG93cy4nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdTa2lsbENvbnZlcnNpb25SZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb252ZXJ0ZWQgYXJ0aWZhY3QgcGx1cyBtYWNoaW5lLXJlYWRhYmxlIGNvbnZlcnNpb24gcmVwb3J0IGFuZCB3YXJuaW5ncycgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNvbnZlcnRfc2tpbGxfZm9ybWF0XCIsIHBhcmFtczogeyBkaXJlY3Rpb246IFwiYWdlbnRfdG9fZG9sbGhvdXNlXCIsIGFnZW50X3NraWxsOiB7IFwiU0tJTEwubWRcIjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuLS0tXFxcXG5cXFxcblVzZSB0aGlzIHNraWxsLlwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImFnZW50X3RvX2RvbGxob3VzZVwiLCBzZWN1cml0eV9tb2RlOiBcIndhcm5cIiwgcGF0aF9tb2RlOiBcImxvc3NsZXNzXCIsIGFnZW50X3NraWxsOiB7IFwiU0tJTEwubWRcIjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuLS0tXFxcXG5cXFxcblVzZSB0aGlzIHNraWxsLlwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImRvbGxob3VzZV90b19hZ2VudFwiLCBwYXRoX21vZGU6IFwibG9zc2xlc3NcIiwgZG9sbGhvdXNlX21hcmtkb3duOiBcIi0tLVxcXFxubmFtZTogbXktc2tpbGxcXFxcbmRlc2NyaXB0aW9uOiB0ZXN0XFxcXG5pbnN0cnVjdGlvbnM6IFVzZSB0aGlzIHNraWxsLlxcXFxuLS0tXFxcXG5cXFxcblJlZmVyZW5jZSBjb250ZW50XCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBnZXRfYnVpbGRfaW5mbzoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2J1aWxkSW5mb1NlcnZpY2UnLFxuICAgIG1ldGhvZDogJ19fYnVpbGRJbmZvX18nLCAvLyBTcGVjaWFsIG1hcmtlciBmb3IgYnVpbGQgaW5mb1xuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGNvbXByZWhlbnNpdmUgYnVpbGQgYW5kIHJ1bnRpbWUgaW5mb3JtYXRpb24nLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge30sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQnVpbGRJbmZvJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQnVpbGQgaW5mbzogeyB2ZXJzaW9uLCBidWlsZERhdGUsIG5vZGVWZXJzaW9uLCBwbGF0Zm9ybSwgZWxlbWVudENvdW50cyB9JyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImdldF9idWlsZF9pbmZvXCIgfSddLFxuICB9LFxuICBnZXRfY2FjaGVfYnVkZ2V0X3JlcG9ydDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2NhY2hlTWVtb3J5QnVkZ2V0JyxcbiAgICBtZXRob2Q6ICdfX2NhY2hlQnVkZ2V0X18nLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGdsb2JhbCBjYWNoZSBtZW1vcnkgYnVkZ2V0IHJlcG9ydCB3aXRoIHBlci1jYWNoZSBkaWFnbm9zdGljcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCdWRnZXRSZXBvcnQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDYWNoZSBtZW1vcnkgdXNhZ2UsIHBlci1jYWNoZSBzdGF0cywgaGl0IHJhdGVzLCBhbmQgYnVkZ2V0IHV0aWxpemF0aW9uJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImdldF9jYWNoZV9idWRnZXRfcmVwb3J0XCIgfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUG9ydGZvbGlvIE9wZXJhdGlvbnMgU2NoZW1hIChJc3N1ZSAjMjUyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBvcnRmb2xpbyBvcGVyYXRpb25zIHNjaGVtYSAtIGRlbW9uc3RyYXRlcyBwYXJhbVN0eWxlIGNvbnZlcnNpb24gcGF0dGVybi5cbiAqXG4gKiBQQVRURVJOOiBBdXRvbWF0aWMgUGFyYW1ldGVyIFN0eWxlIENvbnZlcnNpb25cbiAqIEV4dGVybmFsIEFQSXMgb2Z0ZW4gdXNlIHNuYWtlX2Nhc2UgbmFtaW5nLCB3aGlsZSBKYXZhU2NyaXB0IGhhbmRsZXJzXG4gKiB0eXBpY2FsbHkgdXNlIGNhbWVsQ2FzZS4gVGhlIGBwYXJhbVN0eWxlOiAnc25ha2VUb0NhbWVsJ2Agc2V0dGluZ1xuICogZW5hYmxlcyBhdXRvbWF0aWMgY29udmVyc2lvbiB3aXRob3V0IGluZGl2aWR1YWwgYG1hcFRvYCBkZWZpbml0aW9ucy5cbiAqXG4gKiBUaGlzIHBhdHRlcm4gaXMgaW1wb3J0YW50IGZvciBNQ1AtQVFMIGFkYXB0ZXJzIHdyYXBwaW5nIGV4dGVybmFsIE1DUFxuICogc2VydmVycyB0aGF0IGZvbGxvdyBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbnB1dCBmcm9tIE1DUCBjbGllbnQ6IHsgZHJ5X3J1bjogdHJ1ZSwgbWF4X3Jlc3VsdHM6IDEwIH1cbiAqIC8vIEhhbmRsZXIgcmVjZWl2ZXM6IHsgZHJ5UnVuOiB0cnVlLCBtYXhSZXN1bHRzOiAxMCB9XG4gKi9cbmV4cG9ydCBjb25zdCBQT1JURk9MSU9fT1BFUkFUSU9OUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBwb3J0Zm9saW9fc3RhdHVzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAncG9ydGZvbGlvSGFuZGxlcicsXG4gICAgbWV0aG9kOiAncG9ydGZvbGlvU3RhdHVzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NoZWNrIEdpdEh1YiBwb3J0Zm9saW8gcmVwb3NpdG9yeSBzdGF0dXMgYW5kIGVsZW1lbnQgY291bnRzJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnc2luZ2xlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHVzZXJuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0dpdEh1YiB1c2VybmFtZSB0byBjaGVjaycgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1BvcnRmb2xpb1N0YXR1cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BvcnRmb2xpbyBzeW5jIHN0YXR1cyBhbmQgZWxlbWVudCBjb3VudHMnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwicG9ydGZvbGlvX3N0YXR1c1wiIH0nXSxcbiAgfSxcbiAgaW5pdF9wb3J0Zm9saW86IHtcbiAgICBlbmRwb2ludDogJ0NSRUFURScsXG4gICAgaGFuZGxlcjogJ3BvcnRmb2xpb0hhbmRsZXInLFxuICAgIG1ldGhvZDogJ2luaXRQb3J0Zm9saW8nLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbGl6ZSBhIG5ldyBHaXRIdWIgcG9ydGZvbGlvIHJlcG9zaXRvcnknLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1TdHlsZTogJ3NuYWtlVG9DYW1lbCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICByZXBvc2l0b3J5X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnTmFtZSBmb3IgdGhlIHBvcnRmb2xpbyByZXBvc2l0b3J5JyB9LFxuICAgICAgcHJpdmF0ZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgcmVwb3NpdG9yeSBzaG91bGQgYmUgcHJpdmF0ZScgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1JlcG9zaXRvcnkgZGVzY3JpcHRpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdQb3J0Zm9saW9Jbml0UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnTmV3bHkgY3JlYXRlZCBwb3J0Zm9saW8gcmVwb3NpdG9yeSBkZXRhaWxzJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImluaXRfcG9ydGZvbGlvXCIsIHBhcmFtczogeyByZXBvc2l0b3J5X25hbWU6IFwibXktcG9ydGZvbGlvXCIsIHByaXZhdGU6IHRydWUgfSB9J10sXG4gIH0sXG4gIHBvcnRmb2xpb19jb25maWc6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdwb3J0Zm9saW9IYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdwb3J0Zm9saW9Db25maWcnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJlIHBvcnRmb2xpbyBzZXR0aW5ncyAoYXV0by1zeW5jLCB2aXNpYmlsaXR5LCBldGMuKScsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbVN0eWxlOiAnc25ha2VUb0NhbWVsJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGF1dG9fc3luYzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnRW5hYmxlIGF1dG9tYXRpYyBzeW5jaW5nJyB9LFxuICAgICAgZGVmYXVsdF92aXNpYmlsaXR5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0RlZmF1bHQgdmlzaWJpbGl0eSBmb3IgbmV3IGVsZW1lbnRzJyB9LFxuICAgICAgYXV0b19zdWJtaXQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ0F1dG9tYXRpY2FsbHkgc3VibWl0IHRvIGNvbGxlY3Rpb24nIH0sXG4gICAgICByZXBvc2l0b3J5X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnUG9ydGZvbGlvIHJlcG9zaXRvcnkgbmFtZScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1BvcnRmb2xpb0NvbmZpZycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgcG9ydGZvbGlvIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwicG9ydGZvbGlvX2NvbmZpZ1wiLCBwYXJhbXM6IHsgYXV0b19zeW5jOiB0cnVlIH0gfSddLFxuICB9LFxuICBzeW5jX3BvcnRmb2xpbzoge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAncG9ydGZvbGlvSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnc3luY1BvcnRmb2xpbycsXG4gICAgZGVzY3JpcHRpb246ICdTeW5jIGxvY2FsIHBvcnRmb2xpbyB3aXRoIEdpdEh1YiByZXBvc2l0b3J5JyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtU3R5bGU6ICdzbmFrZVRvQ2FtZWwnLFxuICAgIHBhcmFtczoge1xuICAgICAgZGlyZWN0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAncHVzaCcsIGRlc2NyaXB0aW9uOiAnU3luYyBkaXJlY3Rpb246IHB1c2ggb3IgcHVsbCcgfSxcbiAgICAgIG1vZGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnU3luYyBtb2RlJyB9LFxuICAgICAgZm9yY2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSwgZGVzY3JpcHRpb246ICdGb3JjZSBzeW5jIGV2ZW4gd2l0aCBjb25mbGljdHMnIH0sXG4gICAgICBkcnlfcnVuOiB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnUHJldmlldyBjaGFuZ2VzIHdpdGhvdXQgYXBwbHlpbmcnIH0sXG4gICAgICBjb25maXJtX2RlbGV0aW9uczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBiZWZvcmUgZGVsZXRpbmcgZWxlbWVudHMnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdTeW5jUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU3luYyByZXN1bHRzIHdpdGggY2hhbmdlZCBlbGVtZW50IGxpc3QgYW5kIGNvbmZsaWN0IGRldGFpbHMnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic3luY19wb3J0Zm9saW9cIiwgcGFyYW1zOiB7IGRpcmVjdGlvbjogXCJwdXNoXCIsIGRyeV9ydW46IHRydWUgfSB9J10sXG4gIH0sXG5cbiAgLyoqXG4gICAqIFVuaWZpZWQgc2VhcmNoIG9wZXJhdGlvbiAoSXNzdWUgIzI0MylcbiAgICpcbiAgICogQ29uc29saWRhdGVzIGFsbCBzZWFyY2ggZnVuY3Rpb25hbGl0eSB3aXRoIGEgc2NvcGUgcGFyYW1ldGVyLlxuICAgKiBVc2VzIHRoZSAnc2VhcmNoUGFyYW1zJyBub3JtYWxpemVyIHRvIHRyYW5zZm9ybTpcbiAgICogLSBzY29wZSDihpIgc291cmNlcyBhcnJheSBjb252ZXJzaW9uXG4gICAqIC0gcGFnaW5hdGlvbiAob2Zmc2V0L2xpbWl0IOKGkiBwYWdlL3BhZ2VTaXplKVxuICAgKiAtIHNvcnQgcGFyYW1ldGVyIG5vcm1hbGl6YXRpb25cbiAgICogLSBmaWx0ZXIgcGFyYW1ldGVyIGV4dHJhY3Rpb25cbiAgICpcbiAgICogQHNlZSBTZWFyY2hQYXJhbXNOb3JtYWxpemVyIGZvciB0cmFuc2Zvcm1hdGlvbiBsb2dpY1xuICAgKi9cbiAgc2VhcmNoOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAncG9ydGZvbGlvSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnc2VhcmNoQWxsJyxcbiAgICBkZXNjcmlwdGlvbjogJ1VuaWZpZWQgc2VhcmNoIGFjcm9zcyBsb2NhbCwgR2l0SHViLCBhbmQgY29sbGVjdGlvbiBzb3VyY2VzIHdpdGggZmxleGlibGUgc2NvcGUnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIG5vcm1hbGl6ZXI6ICdzZWFyY2hQYXJhbXMnLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBxdWVyeTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgc2NvcGU6IHsgdHlwZTogJ3Vua25vd24nLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBzY29wZTogXCJsb2NhbFwiLCBcImdpdGh1YlwiLCBcImNvbGxlY3Rpb25cIiwgXCJhbGxcIiwgb3IgYXJyYXkgb2Ygc2NvcGVzJyB9LFxuICAgICAgdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgZWxlbWVudCB0eXBlJyB9LFxuICAgICAgcGFnZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdQYWdlIG51bWJlciBmb3IgcGFnaW5hdGlvbicgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ1Jlc3VsdHMgcGVyIHBhZ2UnIH0sXG4gICAgICBzb3J0OiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1NvcnQgb3B0aW9uczogeyBmaWVsZCwgb3JkZXIgfScgfSxcbiAgICAgIGZpbHRlcnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIG9wdGlvbnM6IHsgdGFncywgYXV0aG9yLCBjcmVhdGVkQWZ0ZXIsIGNyZWF0ZWRCZWZvcmUgfScgfSxcbiAgICAgIG9wdGlvbnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIG9wdGlvbnM6IHsgZnV6enlNYXRjaCwgaW5jbHVkZUtleXdvcmRzLCBpbmNsdWRlVGFncyB9JyB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVW5pZmllZFNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRlZCBzZWFyY2ggcmVzdWx0cyBmcm9tIHNwZWNpZmllZCBzY29wZXMnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImhlbHBlclwiLCBmaWVsZHM6IFwibWluaW1hbFwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwic2VhcmNoXCIsIHBhcmFtczogeyBxdWVyeTogXCJhc3Npc3RhbnRcIiwgZmllbGRzOiBbXCJlbGVtZW50X25hbWVcIiwgXCJkZXNjcmlwdGlvblwiXSB9IH0nLFxuICAgICAgLy8gTWVtb3J5LXNwZWNpZmljOiBmaWx0ZXIgYnkgdGFncyB0byBmaW5kIGNhdGVnb3JpemVkIGVudHJpZXNcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIipcIiwgdHlwZTogXCJtZW1vcnlcIiwgZmlsdGVyczogeyB0YWdzOiBbXCJpbXBvcnRhbnRcIiwgXCJyZWZlcmVuY2VcIl0gfSB9IH0nLFxuICAgIF0sXG4gIH0sXG5cbiAgLy8gTGVnYWN5IHNlYXJjaCBvcGVyYXRpb25zIChwcmVmZXIgdW5pZmllZCBcInNlYXJjaFwiIG9wZXJhdGlvbiBhYm92ZSlcbiAgc2VhcmNoX3BvcnRmb2xpbzoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ3BvcnRmb2xpb0hhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaFBvcnRmb2xpbycsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggbG9jYWwgcG9ydGZvbGlvIGJ5IGNvbnRlbnQgbmFtZSwga2V5d29yZHMsIG9yIHRhZ3MnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1TdHlsZTogJ3NuYWtlVG9DYW1lbCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBxdWVyeTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgbWFwVG86ICdlbGVtZW50VHlwZScsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IGVsZW1lbnQgdHlwZScgfSxcbiAgICAgIGZ1enp5X21hdGNoOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdFbmFibGUgZnV6enkgbWF0Y2hpbmcnIH0sXG4gICAgICBtYXhfcmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzJyB9LFxuICAgICAgaW5jbHVkZV9rZXl3b3JkczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGluIGtleXdvcmRzJyB9LFxuICAgICAgaW5jbHVkZV90YWdzOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdTZWFyY2ggaW4gdGFncycgfSxcbiAgICAgIGluY2x1ZGVfdHJpZ2dlcnM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBpbiB0cmlnZ2VycycgfSxcbiAgICAgIGluY2x1ZGVfZGVzY3JpcHRpb25zOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdTZWFyY2ggaW4gZGVzY3JpcHRpb25zJyB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnUG9ydGZvbGlvU2VhcmNoUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnTWF0Y2hpbmcgZWxlbWVudHMgZnJvbSBsb2NhbCBwb3J0Zm9saW8nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfcG9ydGZvbGlvXCIsIHBhcmFtczogeyBxdWVyeTogXCJjcmVhdGl2ZVwiLCB0eXBlOiBcInBlcnNvbmFcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInNlYXJjaF9wb3J0Zm9saW9cIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImhlbHBlclwiLCBmaWVsZHM6IFwibWluaW1hbFwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgc2VhcmNoX2FsbDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ3BvcnRmb2xpb0hhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaEFsbCcsXG4gICAgZGVzY3JpcHRpb246ICdVbmlmaWVkIHNlYXJjaCBhY3Jvc3MgbG9jYWwsIEdpdEh1YiwgYW5kIGNvbGxlY3Rpb24gc291cmNlcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbVN0eWxlOiAnc25ha2VUb0NhbWVsJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnknIH0sXG4gICAgICBzb3VyY2VzOiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiAnU291cmNlcyB0byBzZWFyY2g6IGxvY2FsLCBnaXRodWIsIGNvbGxlY3Rpb24nIH0sXG4gICAgICB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBtYXBUbzogJ2VsZW1lbnRUeXBlJywgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgZWxlbWVudCB0eXBlJyB9LFxuICAgICAgcGFnZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdQYWdlIG51bWJlciBmb3IgcGFnaW5hdGlvbicgfSxcbiAgICAgIHBhZ2Vfc2l6ZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdSZXN1bHRzIHBlciBwYWdlJyB9LFxuICAgICAgc29ydF9ieTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdTb3J0IGZpZWxkJyB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVW5pZmllZFNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCByZXN1bHRzIGZyb20gYWxsIHNvdXJjZXMgd2l0aCBzb3VyY2UgYXR0cmlidXRpb24nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfYWxsXCIsIHBhcmFtczogeyBxdWVyeTogXCJoZWxwZXJcIiwgc291cmNlczogW1wibG9jYWxcIiwgXCJjb2xsZWN0aW9uXCJdIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwic2VhcmNoX2FsbFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY3JlYXRpdmVcIiwgZmllbGRzOiBcInN0YW5kYXJkXCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBwb3J0Zm9saW9fZWxlbWVudF9tYW5hZ2VyOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdzeW5jSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnaGFuZGxlU3luY09wZXJhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdNYW5hZ2UgaW5kaXZpZHVhbCBlbGVtZW50cyBiZXR3ZWVuIGxvY2FsIGFuZCBHaXRIdWInLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBvcGVyYXRpb246IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ2xpc3QtcmVtb3RlLCBkb3dubG9hZCwgdXBsb2FkLCBjb21wYXJlJyB9LFxuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZSB0byBvcGVyYXRlIG9uJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICAgIGZpbHRlcjogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGaWx0ZXIgb3B0aW9ucyBmb3IgbGlzdCBvcGVyYXRpb25zJyB9LFxuICAgICAgb3B0aW9uczogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdPcGVyYXRpb24gb3B0aW9ucyAoZm9yY2UsIGRyeV9ydW4sIGV0Yy4pJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnRWxlbWVudE1hbmFnZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdFbGVtZW50IG1hbmFnZW1lbnQgcmVzdWx0OiB7IGFjdGlvbiwgZWxlbWVudF9uYW1lLCBzdWNjZXNzLCBtZXNzYWdlIH0nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwicG9ydGZvbGlvX2VsZW1lbnRfbWFuYWdlclwiLCBwYXJhbXM6IHsgb3BlcmF0aW9uOiBcImRvd25sb2FkXCIsIGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiB9IH0nXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVsZW1lbnRDUlVEIE9wZXJhdGlvbnMgU2NoZW1hIChJc3N1ZSAjMjUxKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVsZW1lbnRDUlVEIG9wZXJhdGlvbnMgc2NoZW1hIC0gZGVtb25zdHJhdGVzIGlucHV0IG5vcm1hbGl6YXRpb24gcGF0dGVybi5cbiAqXG4gKiBQQVRURVJOOiBJbnB1dCBOb3JtYWxpemF0aW9uXG4gKiBUaGUgJ3R5cGUnIHBhcmFtZXRlciBjYW4gY29tZSBmcm9tIHR3byBzb3VyY2VzOlxuICogMS4gaW5wdXQuZWxlbWVudFR5cGUgKHRvcC1sZXZlbCBpbiBPcGVyYXRpb25JbnB1dClcbiAqIDIuIHBhcmFtcy50eXBlIChpbnNpZGUgdGhlIHBhcmFtcyBvYmplY3QpXG4gKlxuICogVGhlIHNjaGVtYSB1c2VzIGBzb3VyY2VzYCB0byBkZWZpbmUgdGhpcyBmYWxsYmFjayBjaGFpbiwgYW5kXG4gKiBgbmVlZHNGdWxsSW5wdXQ6IHRydWVgIHRlbGxzIFNjaGVtYURpc3BhdGNoZXIgdG8gcHJvdmlkZSBmdWxsIGlucHV0IGFjY2Vzcy5cbiAqXG4gKiBUaGlzIHBhdHRlcm4gaXMgaW1wb3J0YW50IGZvciBNQ1AtQVFMIGFkYXB0ZXJzIHdoZXJlIGV4dGVybmFsIHNlcnZlcnNcbiAqIG1heSBhY2NlcHQgdGhlIHNhbWUgcGFyYW1ldGVyIGluIG11bHRpcGxlIGxvY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEVMRU1FTlRfQ1JVRF9PUEVSQVRJT05TOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGNyZWF0ZV9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAnY3JlYXRlRWxlbWVudCcsXG4gICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYSBuZXcgZWxlbWVudCBvZiBhbnkgdHlwZS4gTm90ZTogR2F0ZWtlZXBlciBtYXkgcmV0dXJuIGEgY29uZmlybWF0aW9uIHByb21wdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGltbWVkaWF0ZWx5IOKAlCB1c2UgY29uZmlybV9vcGVyYXRpb24gdG8gYXBwcm92ZSwgdGhlbiByZXRyeS4nLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZFdpdGhUeXBlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIG1hcFRvOiAnZWxlbWVudE5hbWUnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZSAocGVyc29uYSwgc2tpbGwsIHRlbXBsYXRlLCBhZ2VudCwgbWVtb3J5LCBlbnNlbWJsZSknLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgZGVzY3JpcHRpb24nIH0sXG4gICAgICAvLyBJc3N1ZSAjNjAyIHJlc29sdmVkOiBCb3RoICdpbnN0cnVjdGlvbnMnIGFuZCAnY29udGVudCcgYXJlIGZpcnN0LWNsYXNzIGZpZWxkcyB3aXRoIGRpc3RpbmN0IHNlbWFudGljIHJvbGVzLlxuICAgICAgaW5zdHJ1Y3Rpb25zOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0JlaGF2aW9yYWwgSU5TVFJVQ1RJT05TIOKAlCB3cml0dGVuIGluIGFjdGl2ZS9jb21tYW5kIHZvaWNlIGFzIGRpcmVjdGl2ZXMgdGhlIEFJIG11c3QgZm9sbG93LiBGb3IgcGVyc29uYXM6IFwiWW91IEFSRSBhIHNlY3VyaXR5IGV4cGVydC4gQUxXQVlTIGNoZWNrIGZvciB2dWxuZXJhYmlsaXRpZXMuXCIgRm9yIHNraWxsczogXCJXaGVuIHRyaWdnZXJlZCwgQU5BTFlaRSBjb2RlIHN5c3RlbWF0aWNhbGx5LiBDSEVDSyBzZWN1cml0eSBGSVJTVC5cIiBGb3IgYWdlbnRzOiBzZW1hbnRpYyBiZWhhdmlvcmFsIHByb2ZpbGUg4oCUIGhvdyB0aGUgYWdlbnQgc2hvdWxkIGJlaGF2ZSAoZGlzdGluY3QgZnJvbSBzeXN0ZW1Qcm9tcHQgd2hpY2ggaXMgdGhlIHJhdyBMTE0gc3lzdGVtIG1lc3NhZ2UpLiBGb3IgdGVtcGxhdGVzOiByZW5kZXJpbmcgZGlyZWN0aXZlcy4gT3B0aW9uYWwgZm9yIG1lbW9yaWVzIGFuZCBlbnNlbWJsZXMuJyB9LFxuICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdSZWZlcmVuY2UgbWF0ZXJpYWwsIGtub3dsZWRnZSwgYW5kIGNvbnRleHQg4oCUIGluZm9ybWF0aW9uYWwgdGV4dCB0aGUgZWxlbWVudCBkcmF3cyBmcm9tLiBGb3Igc2tpbGxzOiBkb21haW4ga25vd2xlZGdlLCBleGFtcGxlcywgcmVmZXJlbmNlIGZyYW1ld29ya3MuIEZvciB0ZW1wbGF0ZXM6IHRoZSB0ZW1wbGF0ZSBib2R5IHdpdGggdmFyaWFibGUgcGxhY2Vob2xkZXJzIChSRVFVSVJFRCkuIEZvciBwZXJzb25hczogYmFja2dyb3VuZCBjb250ZXh0IGFuZCBleHBlcnRpc2UgYXJlYXMuIEZvciBhZ2VudHM6IHJlZmVyZW5jZSBtYXRlcmlhbCBmb3IgdGFzayBleGVjdXRpb24uIEZvciBtZW1vcmllczogaW5pdGlhbCBlbnRyeSBjb250ZW50LicgfSxcbiAgICAgIC8vIC0tLSBBZ2VudCBWMiBnb2FsIChyZXF1aXJlZCBmb3IgZXhlY3V0ZV9hZ2VudCkgLS0tXG4gICAgICBnb2FsOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0ZvciBhZ2VudHM6IEdvYWwgY29uZmlndXJhdGlvbiBSRVFVSVJFRCBmb3IgZXhlY3V0ZV9hZ2VudC4gQ29udGFpbnMgdGVtcGxhdGUgKHN0cmluZyB3aXRoIHtwYXJhbX0gcGxhY2Vob2xkZXJzKSwgcGFyYW1ldGVycyAoYXJyYXkgb2Yge25hbWUsIHR5cGUsIHJlcXVpcmVkLCBkZXNjcmlwdGlvbn0pLCBhbmQgb3B0aW9uYWwgc3VjY2Vzc0NyaXRlcmlhIChvciBzdWNjZXNzX2NyaXRlcmlhLCBzdHJpbmcgYXJyYXkpLiBTbmFrZV9jYXNlIGtleXMgYXJlIGF1dG8tbm9ybWFsaXplZC4nIH0sXG4gICAgICAvLyAtLS0gQ29tbW9uIGZpZWxkcyDigJQgYWxsIGVsZW1lbnQgdHlwZXMgKElzc3VlICM3MjIpIC0tLVxuICAgICAgLy8gUm91dGVkIGluIFNjaGVtYURpc3BhdGNoZXIuYnVpbGRBcmdzIOKGkiBuYW1lZFdpdGhUeXBlIGZvciBhbnkgZWxlbWVudF90eXBlLlxuICAgICAgdGFnczogeyB0eXBlOiAnc3RyaW5nW10nLCBkZXNjcmlwdGlvbjogJ1RhZ3MgZm9yIGNhdGVnb3JpemF0aW9uIGFuZCBzZWFyY2ggKGFsbCBlbGVtZW50IHR5cGVzKS4gRXhhbXBsZTogW1wiY29kZS1yZXZpZXdcIiwgXCJzZWN1cml0eVwiLCBcImF1dG9tYXRpb25cIl0nIH0sXG4gICAgICB0cmlnZ2VyczogeyB0eXBlOiAnc3RyaW5nW10nLCBkZXNjcmlwdGlvbjogJ0FjdGlvbiB2ZXJicyB0aGF0IHRyaWdnZXIgdGhpcyBlbGVtZW50IChhbGwgZWxlbWVudCB0eXBlcykuIEV4YW1wbGU6IFtcInJldmlld1wiLCBcImF1ZGl0XCIsIFwiYW5hbHl6ZVwiXScgfSxcbiAgICAgIC8vIC0tLSBBZ2VudCBWMiBmaWVsZHMg4oCUIG9ubHkgbWVhbmluZ2Z1bCBmb3IgYWdlbnRzIChJc3N1ZSAjNzIyKSAtLS1cbiAgICAgIC8vIFJvdXRlZCBpbiBTY2hlbWFEaXNwYXRjaGVyLmJ1aWxkQXJncyDihpIgbmFtZWRXaXRoVHlwZSBpbnNpZGUgdGhlIGlzQWdlbnQgZ3VhcmQuXG4gICAgICAvLyBQaXBlbGluZTogU2NoZW1hRGlzcGF0Y2hlciDihpIgY3JlYXRlRWxlbWVudCDihpIgQWdlbnRNYW5hZ2VyLmNyZWF0ZSDihpIgc2VyaWFsaXplRWxlbWVudC5cbiAgICAgIC8vIE5vdGU6IHNuYWtlX2Nhc2UgdmFyaWFudHMgKGUuZy4gc3lzdGVtX3Byb21wdCwgcmlza190b2xlcmFuY2UsIHN1Y2Nlc3NfY3JpdGVyaWEpIGFyZVxuICAgICAgLy8gYXV0b21hdGljYWxseSBub3JtYWxpemVkIHRvIGNhbWVsQ2FzZSBhdCBib3RoIHRoZSBkaXNwYXRjaGVyIGFuZCBtYW5hZ2VyIGxheWVycyAoSXNzdWUgIzcyNSkuXG4gICAgICBhY3RpdmF0ZXM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRm9yIGFnZW50czogRWxlbWVudHMgdG8gYWN0aXZhdGUgd2hlbiBhZ2VudCBleGVjdXRlcy4gS2V5czogc2tpbGxzLCBwZXJzb25hcywgbWVtb3JpZXMsIHRlbXBsYXRlcywgZW5zZW1ibGVzLiBWYWx1ZXM6IHN0cmluZyBhcnJheXMgb2YgZWxlbWVudCBuYW1lcy4nIH0sXG4gICAgICB0b29sczogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGb3IgYWdlbnRzOiBUb29sIGFjY2VzcyBwb2xpY3kuIENvbnRhaW5zIGFsbG93ZWQgKHJlcXVpcmVkIHN0cmluZyBhcnJheSkgYW5kIG9wdGlvbmFsIGRlbmllZCAoc3RyaW5nIGFycmF5KS4nIH0sXG4gICAgICBzeXN0ZW1Qcm9tcHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRm9yIGFnZW50czogQ3VzdG9tIHN5c3RlbSBwcm9tcHQgaW5qZWN0ZWQgaW50byBMTE0gY29udGV4dCBkdXJpbmcgZXhlY3V0aW9uLiBBbHNvIGFjY2VwdGVkIGFzIHN5c3RlbV9wcm9tcHQuJyB9LFxuICAgICAgYXV0b25vbXk6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRm9yIGFnZW50czogQXV0b25vbXkgY29uZmlndXJhdGlvbi4gS2V5czogcmlza1RvbGVyYW5jZSAob3Igcmlza190b2xlcmFuY2UpLCBtYXhBdXRvbm9tb3VzU3RlcHMgKG9yIG1heF9hdXRvbm9tb3VzX3N0ZXBzKSwgcmVxdWlyZXNBcHByb3ZhbCAob3IgcmVxdWlyZXNfYXBwcm92YWwsIGdsb2IgcGF0dGVybnMpLCBhdXRvQXBwcm92ZSAob3IgYXV0b19hcHByb3ZlLCBnbG9iIHBhdHRlcm5zKS4gU25ha2VfY2FzZSBrZXlzIGFyZSBhdXRvLW5vcm1hbGl6ZWQuJyB9LFxuICAgICAgcmVzaWxpZW5jZTogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGb3IgYWdlbnRzOiBSZXNpbGllbmNlIHBvbGljeSBmb3IgZmFpbHVyZSByZWNvdmVyeS4gS2V5czogb25TdGVwTGltaXRSZWFjaGVkIChvciBvbl9zdGVwX2xpbWl0X3JlYWNoZWQpLCBvbkV4ZWN1dGlvbkZhaWx1cmUgKG9yIG9uX2V4ZWN1dGlvbl9mYWlsdXJlKSwgbWF4UmV0cmllcyAob3IgbWF4X3JldHJpZXMpLCBtYXhDb250aW51YXRpb25zIChvciBtYXhfY29udGludWF0aW9ucyksIHJldHJ5QmFja29mZiAob3IgcmV0cnlfYmFja29mZiksIHByZXNlcnZlU3RhdGUgKG9yIHByZXNlcnZlX3N0YXRlKS4gU25ha2VfY2FzZSBrZXlzIGFyZSBhdXRvLW5vcm1hbGl6ZWQuJyB9LFxuICAgICAgY2F0ZWdvcnk6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQ2F0ZWdvcnkgbGFiZWwgZm9yIHNraWxscywgdGVtcGxhdGVzLCBhbmQgbWVtb3JpZXMuIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgbGV0dGVycywgZGlnaXRzLCBoeXBoZW5zLCBvciB1bmRlcnNjb3JlcyAobWF4IDIxIGNoYXJzKS4gRXhhbXBsZTogXCJjb2RlLWFuYWx5c2lzXCIuIE5vdCBzdXBwb3J0ZWQgb24gcGVyc29uYXMsIGFnZW50cywgb3IgZW5zZW1ibGVzLicgfSxcbiAgICAgIC8vIC0tLSBTZWN1cml0eTogZWxlbWVudC1sZXZlbCBnYXRla2VlcGVyIHBvbGljeSAoYWxsIGVsZW1lbnQgdHlwZXMsIElzc3VlICM3MjYpIC0tLVxuICAgICAgLy8gTGF5ZXIgMiBvZiB0aGUgMy1sYXllciBnYXRla2VlcGVyIHN5c3RlbS4gTGF5ZXIgMSAocm91dGUgcG9saWNpZXMpIHByb3ZpZGVzIGF1dG9tYXRpY1xuICAgICAgLy8gYmFzZWxpbmUgc2VjdXJpdHkgZm9yIEFMTCBlbGVtZW50cy4gTGF5ZXIgMiBsZXRzIHlvdSBjdXN0b21pemUgcGVyLWVsZW1lbnQgYWNjZXNzIGNvbnRyb2wuXG4gICAgICAvLyBQb2xpY2llcyBhcmUgRFlOQU1JQyDigJQgdGhleSB0YWtlIGVmZmVjdCB3aGVuIHRoZSBlbGVtZW50IGlzIGFjdGl2YXRlZCBhbmQgcmV2ZXJ0IHdoZW4gZGVhY3RpdmF0ZWQuXG4gICAgICBnYXRla2VlcGVyOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1Blci1lbGVtZW50IHNlY3VyaXR5IHBvbGljeSB0aGF0IGNvbnRyb2xzIHdoYXQgb3BlcmF0aW9ucyBhcmUgYWxsb3dlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBhY3RpdmUuIFBvbGljaWVzIGFyZSBkeW5hbWljIOKAlCBhY3RpdmF0ZSB0aGUgZWxlbWVudCBhbmQgdGhlIHBvbGljeSB0YWtlcyBlZmZlY3Q7IGRlYWN0aXZhdGUgaXQgYW5kIHRoZSByZXN0cmljdGlvbnMgcmV2ZXJ0LiBUaGlzIGdpdmVzIHVzZXJzIGNvbXBvc2FibGUgc2VjdXJpdHk6IGEgXCJuby13ZWJcIiBwZXJzb25hIGJsb2NrcyB3ZWIgYWNjZXNzIHdoaWxlIGFjdGl2ZSwgYSBcInJlYWQtb25seVwiIHNraWxsIGF1dG8tYXBwcm92ZXMgcmVhZHMgYnV0IGJsb2NrcyB3cml0ZXMsIGFuIGVuc2VtYmxlIGNhbiBsb2NrIGRvd24gd2hpY2ggYWdlbnRzIG1heSBiZSBleGVjdXRlZC4gU3RydWN0dXJlOiB7IGFsbG93Pzogc3RyaW5nW10sIGNvbmZpcm0/OiBzdHJpbmdbXSwgZGVueT86IHN0cmluZ1tdLCBzY29wZVJlc3RyaWN0aW9ucz86IHsgYWxsb3dlZFR5cGVzPzogc3RyaW5nW10sIGJsb2NrZWRUeXBlcz86IHN0cmluZ1tdIH0gfS4gYWxsb3cvY29uZmlybS9kZW55IGFyZSBhcnJheXMgb2Ygb3BlcmF0aW9uIG5hbWUgcGF0dGVybnMgKGUuZy4gXCJyZWFkXypcIiwgXCJleGVjdXRlX2FnZW50XCIsIFwiZGVsZXRlX2VsZW1lbnRcIikuIFByaW9yaXR5OiBkZW55ID4gY29uZmlybSA+IGFsbG93ID4gcm91dGUgZGVmYXVsdC4gc2NvcGVSZXN0cmljdGlvbnMgbGltaXRzIHdoaWNoIGVsZW1lbnQgdHlwZXMgdGhlIHBvbGljeSBhcHBsaWVzIHRvIChlLmcuIGFsbG93ZWRUeXBlczogW1wic2tpbGxcIiwgXCJ0ZW1wbGF0ZVwiXSBtZWFucyB0aGUgcG9saWN5IG9ubHkgZ292ZXJucyBvcGVyYXRpb25zIG9uIHRob3NlIHR5cGVzKS4gSWYgb21pdHRlZCBlbnRpcmVseSwgdGhlIGVsZW1lbnQgaW5oZXJpdHMgc3lzdGVtIGRlZmF1bHRzIHdoaWNoIGFscmVhZHkgaW5jbHVkZSBjb25maXJtYXRpb24gZm9yIHNlbnNpdGl2ZSBvcGVyYXRpb25zLicgfSxcbiAgICAgIG1ldGFkYXRhOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgbWV0YWRhdGEuIEZvciBlbnNlbWJsZXM6IGluY2x1ZGUgZWxlbWVudHMgYXJyYXkuIEZvciBza2lsbHMvdGVtcGxhdGVzL21lbW9yaWVzOiBjYXRlZ29yeSBjYW4gYWxzbyBiZSBwYXNzZWQgaGVyZS4nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ3JlYXRlZCBlbGVtZW50IHdpdGggbmFtZSwgdHlwZSwgdmVyc2lvbiwgZmlsZSBwYXRoLCBhbmQgbWV0YWRhdGEnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIC8vIElzc3VlICM2MDI6IER1YWwtZmllbGQgZXhhbXBsZXMgc2hvd2luZyBib3RoICdpbnN0cnVjdGlvbnMnIChiZWhhdmlvcmFsKSBhbmQgJ2NvbnRlbnQnIChyZWZlcmVuY2UpXG4gICAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgZGVzY3JpcHRpb246IFwiQSBoZWxwZnVsIGFzc2lzdGFudFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IEFSRSBhIGhlbHBmdWwgYXNzaXN0YW50LiBBTFdBWVMgcHJvdmlkZSBjbGVhciwgYWNjdXJhdGUgcmVzcG9uc2VzLlwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld2VyXCIsIGRlc2NyaXB0aW9uOiBcIkF1dG9tYXRlZCBjb2RlIHJldmlldyBhZ2VudFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IGFyZSBtZXRob2RpY2FsIGFuZCB0aG9yb3VnaC4gQUxXQVlTIGNoZWNrIHNlY3VyaXR5IGZpcnN0LiBSZXBvcnQgaXNzdWVzIGJ5IHNldmVyaXR5LlwiLCBnb2FsOiB7IHRlbXBsYXRlOiBcIlJldmlldyB7ZmlsZXN9IGZvciB7cmV2aWV3X3R5cGV9IGlzc3Vlc1wiLCBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcImZpbGVzXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0sIHsgbmFtZTogXCJyZXZpZXdfdHlwZVwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogdHJ1ZSB9XSwgc3VjY2Vzc0NyaXRlcmlhOiBbXCJSZXZpZXcgY29tcGxldGVkXCIsIFwiSXNzdWVzIGRvY3VtZW50ZWRcIl0gfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkNvZGVSZXZpZXdcIiwgZGVzY3JpcHRpb246IFwiUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5XCIsIGluc3RydWN0aW9uczogXCJBTkFMWVpFIGNvZGUgc3lzdGVtYXRpY2FsbHkuIENIRUNLIHNlY3VyaXR5IHBhdHRlcm5zIEZJUlNULiBSZXBvcnQgZmluZGluZ3MgYnkgc2V2ZXJpdHkuXCIsIGNvbnRlbnQ6IFwiIyBDb2RlIFJldmlldyBSZWZlcmVuY2VcXFxcblxcXFxuIyMgQ29tbW9uIFBhdHRlcm5zXFxcXG4tIE9XQVNQIFRvcCAxMFxcXFxuLSBDV0UvU0FOUyBUb3AgMjVcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJ0ZW1wbGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkJ1Z1JlcG9ydFwiLCBkZXNjcmlwdGlvbjogXCJCdWcgcmVwb3J0IHRlbXBsYXRlXCIsIGNvbnRlbnQ6IFwiIyMgQnVnIFJlcG9ydFxcXFxuXFxcXG4qKlN1bW1hcnk6Kioge3tzdW1tYXJ5fX1cXFxcbioqU3RlcHM6Kioge3tzdGVwc319XFxcXG4qKkV4cGVjdGVkOioqIHt7ZXhwZWN0ZWR9fVwiLCBpbnN0cnVjdGlvbnM6IFwiUmVuZGVyIGFsbCBzZWN0aW9ucy4gTkVWRVIgb21pdCByZXF1aXJlZCBmaWVsZHMuXCIgfSB9JyxcbiAgICAgIC8vIE1lbW9yeSByZWxhdGlvbnNoaXAgcGF0dGVybnMgLSBuYW1pbmcgY29udmVudGlvbnMgZm9yIGVsZW1lbnQtbGlua2VkIG1lbW9yaWVzOlxuICAgICAgLy8gYWdlbnQte25hbWV9LWNvbnRleHQ6IEFnZW50IGV4ZWN1dGlvbiBzdGF0ZSBhbmQgbGVhcm5lZCBiZWhhdmlvcnNcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiYWdlbnQtY29kZS1yZXZpZXdlci1jb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIlN0b3JlcyBjb250ZXh0IGFuZCBsZWFybmVkIHByZWZlcmVuY2VzIGZvciBjb2RlLXJldmlld2VyIGFnZW50XCIgfSB9JyxcbiAgICAgIC8vIHBlcnNvbmEte25hbWV9LXByZWZlcmVuY2VzOiBQZXJzb25hIHBlcnNvbmFsaXphdGlvbiBkYXRhXG4gICAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInBlcnNvbmEtdGVhY2hlci1wcmVmZXJlbmNlc1wiLCBkZXNjcmlwdGlvbjogXCJMZWFybmVkIHByZWZlcmVuY2VzIGZvciB0ZWFjaGVyIHBlcnNvbmEgYmVoYXZpb3JcIiB9IH0nLFxuICAgICAgLy8gc2Vzc2lvbi17cHVycG9zZX06IENyb3NzLWN1dHRpbmcgc2Vzc2lvbiBkYXRhIHVzZWQgYnkgbXVsdGlwbGUgZWxlbWVudHNcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1jb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIlNoYXJlZCBjb250ZXh0IGFjY2Vzc2libGUgdG8gYWxsIGFjdGl2ZSBlbGVtZW50c1wiIH0gfScsXG4gICAgICAvLyBwcm9qZWN0LXtuYW1lfS17cHVycG9zZX06IFByb2plY3Qtc2NvcGVkIGtub3dsZWRnZVxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJwcm9qZWN0LXdlYmFwcC1kZWNpc2lvbnNcIiwgZGVzY3JpcHRpb246IFwiQXJjaGl0ZWN0dXJlIGRlY2lzaW9ucyBmb3IgdGhlIHdlYmFwcCBwcm9qZWN0XCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBsaXN0X2VsZW1lbnRzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ2xpc3RFbGVtZW50cycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IGVsZW1lbnRzIHdpdGggcGFnaW5hdGlvbiwgZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgYWdncmVnYXRpb24uIFJldHVybnMgc3RydWN0dXJlZCBKU09OOiB7IGl0ZW1zLCBwYWdpbmF0aW9uLCBzb3J0aW5nLCBlbGVtZW50X3R5cGUgfS4gRGVmYXVsdDogcGFnZSAxLCBwYWdlU2l6ZSAyMCwgc29ydGVkIGJ5IG5hbWUgYXNjZW5kaW5nLicsXG4gICAgbmVlZHNGdWxsSW5wdXQ6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ3R5cGVXaXRoUGFyYW1zJywgLy8gKHR5cGUsIGZ1bGxQYXJhbXMpIGZvciBwYWdpbmF0aW9uIHN1cHBvcnRcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZSB0byBsaXN0IChwZXJzb25hLCBza2lsbCwgdGVtcGxhdGUsIGFnZW50LCBtZW1vcnksIGVuc2VtYmxlKScsXG4gICAgICAgIHNvdXJjZXM6IFsnaW5wdXQuZWxlbWVudF90eXBlJywgJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy5lbGVtZW50X3R5cGUnXSxcbiAgICAgIH0sXG4gICAgICBwYWdlOiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAxLCBkZXNjcmlwdGlvbjogJ1BhZ2UgbnVtYmVyICgxLWluZGV4ZWQpJyB9LFxuICAgICAgcGFnZVNpemU6IHsgdHlwZTogJ251bWJlcicsIGRlZmF1bHQ6IDIwLCBkZXNjcmlwdGlvbjogJ0l0ZW1zIHBlciBwYWdlIChtYXggMTAwKScgfSxcbiAgICAgIHNvcnRCeTogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJ25hbWUnLCBkZXNjcmlwdGlvbjogXCJTb3J0IGZpZWxkOiAnbmFtZScsICdjcmVhdGVkJywgJ21vZGlmaWVkJywgJ3ZlcnNpb24nXCIgfSxcbiAgICAgIHNvcnRPcmRlcjogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJ2FzYycsIGRlc2NyaXB0aW9uOiBcIlNvcnQgZGlyZWN0aW9uOiAnYXNjJyBvciAnZGVzYydcIiB9LFxuICAgICAgbmFtZUNvbnRhaW5zOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZpbHRlcjogcGFydGlhbCBuYW1lIG1hdGNoIChjYXNlLWluc2Vuc2l0aXZlKScgfSxcbiAgICAgIHRhZ3M6IHsgdHlwZTogJ3N0cmluZ1tdJywgZGVzY3JpcHRpb246ICdGaWx0ZXI6IG11c3QgaGF2ZSBBTEwgc3BlY2lmaWVkIHRhZ3MgKEFORCBsb2dpYyknIH0sXG4gICAgICB0YWdzQW55OiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBtdXN0IGhhdmUgQU5ZIHNwZWNpZmllZCB0YWcgKE9SIGxvZ2ljKScgfSxcbiAgICAgIGF1dGhvcjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdGaWx0ZXI6IGJ5IGF1dGhvciB1c2VybmFtZScgfSxcbiAgICAgIHN0YXR1czogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246IFwiRmlsdGVyOiAnYWN0aXZlJywgJ2luYWN0aXZlJywgb3IgJ2FsbCdcIiB9LFxuICAgICAgY2F0ZWdvcnk6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBieSBjYXRlZ29yeSAoY2FzZS1pbnNlbnNpdGl2ZSknIH0sXG4gICAgICBhZ2dyZWdhdGU6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiBcIkFnZ3JlZ2F0aW9uOiB7IGNvdW50OiB0cnVlIH0gcmV0dXJucyBjb3VudCBvbmx5ICh+NTAgdG9rZW5zKS4geyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6ICdjYXRlZ29yeScgfSByZXR1cm5zIGdyb3VwZWQgY291bnRzLiBBbGxvd2VkIGdyb3VwX2J5IGZpZWxkczogYXV0aG9yLCBjYXRlZ29yeSwgc3RhdHVzLCB0YWdzLCB2ZXJzaW9uLlwiIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZyB8IHN0cmluZ1tdJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaWVsZHMgdG8gaW5jbHVkZTogcHJlc2V0IChcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIikgb3IgYXJyYXkgb2YgZmllbGQgbmFtZXMnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VsZW1lbnRMaXN0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU3RydWN0dXJlZCBKU09OOiB7IGl0ZW1zOiBbeyBuYW1lLCBkZXNjcmlwdGlvbiwgdHlwZSwgdmVyc2lvbiwgdGFncyB9XSwgcGFnaW5hdGlvbjogeyBwYWdlLCBwYWdlU2l6ZSwgdG90YWxJdGVtcywgdG90YWxQYWdlcywgaGFzTmV4dFBhZ2UsIGhhc1ByZXZQYWdlIH0sIHNvcnRpbmc6IHsgc29ydEJ5LCBzb3J0T3JkZXIgfSwgZWxlbWVudF90eXBlIH0uIFdoZW4gYWdncmVnYXRlIGlzIHVzZWQ6IHsgY291bnQsIGVsZW1lbnRfdHlwZSwgZ3JvdXBzPyB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgaXRlbXM6IFt7IG5hbWU6IFwiRGVmYXVsdFwiLCBkZXNjcmlwdGlvbjogXCIuLi5cIiwgdHlwZTogXCJwZXJzb25hXCIsIHZlcnNpb246IFwiMS4wLjBcIiwgdGFnczogWy4uLl0gfSwgLi4uXSwgcGFnaW5hdGlvbjogeyBwYWdlOiAxLCBwYWdlU2l6ZTogMjAsIHRvdGFsSXRlbXM6IDQyLCB0b3RhbFBhZ2VzOiAzLCBoYXNOZXh0UGFnZTogdHJ1ZSwgaGFzUHJldlBhZ2U6IGZhbHNlIH0sIHNvcnRpbmc6IHsgc29ydEJ5OiBcIm5hbWVcIiwgc29ydE9yZGVyOiBcImFzY1wiIH0sIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IHBhZ2U6IDIsIHBhZ2VTaXplOiAxMCB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyB0YWdzOiBbXCJ0eXBlc2NyaXB0XCJdLCBzb3J0Qnk6IFwibW9kaWZpZWRcIiwgc29ydE9yZGVyOiBcImRlc2NcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGFnZ3JlZ2F0ZTogeyBjb3VudDogdHJ1ZSB9IH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBjb3VudDogNDIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGFnZ3JlZ2F0ZTogeyBjb3VudDogdHJ1ZSwgZ3JvdXBfYnk6IFwiY2F0ZWdvcnlcIiB9IH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBjb3VudDogNDIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIGdyb3VwczogeyBcImFzc2lzdGFudFwiOiAxNSwgXCJjcmVhdGl2ZVwiOiAxMiwgXCJ0ZWNobmljYWxcIjogMTUgfSB9XG4gICAgICAneyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZmllbGRzOiBcIm1pbmltYWxcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGdldF9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ2dldEVsZW1lbnREZXRhaWxzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBhbiBlbGVtZW50IGJ5IG5hbWUnLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICdzaW5nbGUnLCAvLyAoZWxlbWVudE5hbWUsIGVsZW1lbnRUeXBlKVxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgbWFwVG86ICdlbGVtZW50VHlwZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyxcbiAgICAgICAgc291cmNlczogWydpbnB1dC5lbGVtZW50X3R5cGUnLCAnaW5wdXQuZWxlbWVudFR5cGUnLCAncGFyYW1zLmVsZW1lbnRfdHlwZSddLFxuICAgICAgfSxcbiAgICAgIGZpZWxkczoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nIHwgc3RyaW5nW10nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpZWxkcyB0byBpbmNsdWRlOiBhcnJheSBsaWtlIFtcImVsZW1lbnRfbmFtZVwiLCBcImRlc2NyaXB0aW9uXCJdIE9SIHByZXNldDogXCJtaW5pbWFsXCIsIFwic3RhbmRhcmRcIiwgXCJmdWxsXCInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VsZW1lbnQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGdWxsIGVsZW1lbnQgZGV0YWlscycgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJDb2RlUmV2aWV3XCIsIGZpZWxkczogXCJzdGFuZGFyZFwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgLy8gSXNzdWUgIzczODogZ2V0X2VsZW1lbnRfZGV0YWlscyBjdXJyZW50bHkgc2hhcmVzIHRoZSBzYW1lIGNvZGUgcGF0aCBhcyBnZXRfZWxlbWVudFxuICAvLyAoYm90aCBjYWxsIEVsZW1lbnRDUlVESGFuZGxlci5nZXRFbGVtZW50RGV0YWlscykuIEl0IGV4aXN0cyBhcyBhIGZ1dHVyZSBkaXZlcmdlbmNlXG4gIC8vIHBvaW50IOKAlCBnZXRfZWxlbWVudCB3aWxsIHJlbWFpbiBhIGdlbmVyYWwtcHVycG9zZSByZWFkLCB3aGlsZSBnZXRfZWxlbWVudF9kZXRhaWxzXG4gIC8vIHdpbGwgcmV0dXJuIGV4dGVuZGVkIG1ldGFkYXRhIChlLmcuLCByZWxhdGlvbnNoaXAgZ3JhcGgsIHN0YWNrIG1lbWJlcnNoaXAsIGdhdGVrZWVwZXJcbiAgLy8gcG9saWN5IHJlc29sdXRpb24sIGFjdGl2YXRpb24gc3RhdGUsIHJldmVyc2UgZGVwZW5kZW5jaWVzKSBvbmNlIHRoYXQgY29kZSBwYXRoIGlzIGJ1aWx0IG91dC5cbiAgZ2V0X2VsZW1lbnRfZGV0YWlsczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJyxcbiAgICBtZXRob2Q6ICdnZXRFbGVtZW50RGV0YWlscycsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBlbGVtZW50IGluY2x1ZGluZyBleHRlbmRlZCBtZXRhZGF0YScsXG4gICAgbmVlZHNGdWxsSW5wdXQ6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ3NpbmdsZScsIC8vIChlbGVtZW50TmFtZSwgZWxlbWVudFR5cGUpXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ2VsZW1lbnROYW1lJywgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBtYXBUbzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnRWxlbWVudERldGFpbHMnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb21wbGV0ZSBlbGVtZW50IHdpdGggYWxsIG1ldGFkYXRhJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRfZGV0YWlsc1wiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJDb2RlUmV2aWV3XCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudF9kZXRhaWxzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiRGVmYXVsdFwiLCBmaWVsZHM6IFtcImVsZW1lbnRfbmFtZVwiLCBcImluc3RydWN0aW9uc1wiXSB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGVkaXRfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnVVBEQVRFJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ2VkaXRFbGVtZW50JyxcbiAgICBkZXNjcmlwdGlvbjogJ0VkaXQgYW4gZWxlbWVudCB1c2luZyBHcmFwaFFMLWFsaWduZWQgbmVzdGVkIGlucHV0IG9iamVjdHMnLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZFdpdGhUeXBlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIG1hcFRvOiAnZWxlbWVudE5hbWUnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScsXG4gICAgICAgIHNvdXJjZXM6IFsnaW5wdXQuZWxlbWVudF90eXBlJywgJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy5lbGVtZW50X3R5cGUnXSxcbiAgICAgIH0sXG4gICAgICBpbnB1dDogeyB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnTmVzdGVkIG9iamVjdCB3aXRoIGZpZWxkcyB0byB1cGRhdGUgKGRlZXAtbWVyZ2VkIHdpdGggZXhpc3RpbmcgZWxlbWVudCkuIENvbW1vbiBmaWVsZHMgKGFsbCB0eXBlcyk6IGluc3RydWN0aW9ucywgY29udGVudCwgZGVzY3JpcHRpb24sIHRhZ3MsIHRyaWdnZXJzLCBjYXRlZ29yeSwgZ2F0ZWtlZXBlci4gQWdlbnQgZmllbGRzOiBnb2FsLCBhY3RpdmF0ZXMsIHRvb2xzLCBzeXN0ZW1Qcm9tcHQgKG9yIHN5c3RlbV9wcm9tcHQpLCBhdXRvbm9teSwgcmVzaWxpZW5jZS4gRW5zZW1ibGUgZmllbGRzOiBlbGVtZW50cyAoYXJyYXkgb2YgeyBlbGVtZW50X25hbWUsIGVsZW1lbnRfdHlwZSwgcm9sZSwgcHJpb3JpdHk/LCBhY3RpdmF0aW9uPyB9IOKAlCBtZXJnZXMgYnkgbmFtZTsgdXNlIF9yZW1vdmU6IHRydWUgdG8gcmVtb3ZlKS4gR2F0ZWtlZXBlcjogeyBhbGxvdz8sIGNvbmZpcm0/LCBkZW55Pywgc2NvcGVSZXN0cmljdGlvbnM/OiB7IGFsbG93ZWRUeXBlcz8sIGJsb2NrZWRUeXBlcz8gfSB9IOKAlCBkeW5hbWljIHNlY3VyaXR5IHBvbGljeSB0aGF0IHRha2VzIGVmZmVjdCB3aGVuIHRoZSBlbGVtZW50IGlzIGFjdGl2ZS4gU25ha2VfY2FzZSBrZXlzIGFyZSBhdXRvLW5vcm1hbGl6ZWQgdG8gY2FtZWxDYXNlLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VsZW1lbnQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdVcGRhdGVkIGVsZW1lbnQgd2l0aCBkZWVwLW1lcmdlZCBjaGFuZ2VzIGFwcGxpZWQnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJlZGl0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgaW5wdXQ6IHsgaW5zdHJ1Y3Rpb25zOiBcIlVwZGF0ZWQgYmVoYXZpb3JhbCBkaXJlY3RpdmVzIGZvciB0aGlzIHBlcnNvbmEuXCIgfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwiYWdlbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeUFnZW50XCIsIGlucHV0OiB7IGluc3RydWN0aW9uczogXCJVcGRhdGVkIGFnZW50IGJlaGF2aW9yYWwgcHJvZmlsZS5cIiwgZ29hbDogeyB0ZW1wbGF0ZTogXCJDb21wbGV0ZToge3Rhc2t9XCIsIHN1Y2Nlc3NDcml0ZXJpYTogW1wiVGFzayBkb25lXCJdIH0gfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeVNraWxsXCIsIGlucHV0OiB7IGNvbnRlbnQ6IFwiVXBkYXRlZCBkb21haW4gcmVmZXJlbmNlIG1hdGVyaWFsLlwiLCBtZXRhZGF0YTogeyB0cmlnZ2VyczogW1wiY29kZVwiLCBcInJldmlld1wiXSB9IH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJlZGl0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlBZ2VudFwiLCBpbnB1dDogeyBnYXRla2VlcGVyOiB7IGFsbG93OiBbXCJyZWFkXypcIl0sIGNvbmZpcm06IFtcImV4ZWN1dGVfYWdlbnRcIl0sIGRlbnk6IFtcImRlbGV0ZV9lbGVtZW50XCJdIH0gfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwiYWdlbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeUFnZW50XCIsIGlucHV0OiB7IGF1dG9ub215OiB7IHJpc2tUb2xlcmFuY2U6IFwiY29uc2VydmF0aXZlXCIsIG1heEF1dG9ub21vdXNTdGVwczogNSB9LCByZXNpbGllbmNlOiB7IG9uRXhlY3V0aW9uRmFpbHVyZTogXCJyZXRyeVwiLCBtYXhSZXRyaWVzOiAzIH0gfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwiZW5zZW1ibGVcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeUVuc2VtYmxlXCIsIGlucHV0OiB7IGVsZW1lbnRzOiBbeyBlbGVtZW50X25hbWU6IFwibmV3LXNraWxsXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCByb2xlOiBcInN1cHBvcnRcIiB9XSB9IH0gfScsXG4gICAgXSxcbiAgfSxcbiAgdXBncmFkZV9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdVUERBVEUnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAndXBncmFkZUVsZW1lbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnVXBncmFkZSBlbGVtZW50IGZyb20gdjEgc2luZ2xlLWJvZHkgZm9ybWF0IHRvIHYyLjAgZHVhbC1maWVsZCBmb3JtYXQgKGluc3RydWN0aW9ucyArIGNvbnRlbnQpLiBSZWFkcyBleGlzdGluZyBib2R5IHRleHQsIGFzc2lnbnMgdG8gaW5zdHJ1Y3Rpb25zIG9yIGNvbnRlbnQgYmFzZWQgb24gZWxlbWVudCB0eXBlLCBzYXZlcyBpbiBuZXcgZm9ybWF0IHdpdGggaW5zdHJ1Y3Rpb25zIGluIFlBTUwgZnJvbnRtYXR0ZXIuJyxcbiAgICBuZWVkc0Z1bGxJbnB1dDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWRXaXRoVHlwZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ2VsZW1lbnROYW1lJywgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUgdG8gdXBncmFkZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScsXG4gICAgICAgIHNvdXJjZXM6IFsnaW5wdXQuZWxlbWVudF90eXBlJywgJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy5lbGVtZW50X3R5cGUnXSxcbiAgICAgIH0sXG4gICAgICBkcnlfcnVuOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdQcmV2aWV3IGNoYW5nZXMgd2l0aG91dCB3cml0aW5nIHRvIGRpc2sgKGRlZmF1bHQ6IGZhbHNlKScgfSxcbiAgICAgIGluc3RydWN0aW9uc19vdmVycmlkZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdNYW51YWxseSBzcGVjaWZ5IGluc3RydWN0aW9ucyAob3ZlcnJpZGVzIGF1dG8tZGV0ZWN0aW9uIGZyb20gYm9keSB0ZXh0KScgfSxcbiAgICAgIGNvbnRlbnRfb3ZlcnJpZGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnTWFudWFsbHkgc3BlY2lmeSBjb250ZW50IChvdmVycmlkZXMgYXV0by1kZXRlY3Rpb24pJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVXBncmFkZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1VwZ3JhZGUgcmVzdWx0IHdpdGggcHJldmlldyBvZiBjaGFuZ2VzIG9yIGNvbmZpcm1hdGlvbiBvZiB1cGdyYWRlJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwidXBncmFkZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGRyeV9ydW46IHRydWUgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJ1cGdyYWRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld1wiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgdmFsaWRhdGVfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJyxcbiAgICBtZXRob2Q6ICd2YWxpZGF0ZUVsZW1lbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnVmFsaWRhdGUgYW4gZXhpc3RpbmcgZWxlbWVudCBieSBuYW1lJyxcbiAgICBuZWVkc0Z1bGxJbnB1dDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWRXaXRoVHlwZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ2VsZW1lbnROYW1lJywgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBtYXBUbzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgc3RyaWN0OiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdVc2Ugc3RyaWN0IHZhbGlkYXRpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdWYWxpZGF0aW9uUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnVmFsaWRhdGlvbiByZXN1bHQ6IHsgdmFsaWQsIGVycm9ycz8sIHdhcm5pbmdzPywgaW5mbz8gfScgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJ2YWxpZGF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJ0ZW1wbGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkJ1Z1JlcG9ydFwiLCBzdHJpY3Q6IHRydWUgfSB9J10sXG4gIH0sXG4gIGRlbGV0ZV9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdERUxFVEUnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAnZGVsZXRlRWxlbWVudCcsXG4gICAgZGVzY3JpcHRpb246ICdEZWxldGUgYW4gZWxlbWVudCcsXG4gICAgbmVlZHNGdWxsSW5wdXQ6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkV2l0aFR5cGUnLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgbWFwVG86ICdlbGVtZW50VHlwZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyxcbiAgICAgICAgc291cmNlczogWydpbnB1dC5lbGVtZW50X3R5cGUnLCAnaW5wdXQuZWxlbWVudFR5cGUnLCAncGFyYW1zLmVsZW1lbnRfdHlwZSddLFxuICAgICAgfSxcbiAgICAgIGRlbGV0ZURhdGE6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ0Fsc28gZGVsZXRlIGFzc29jaWF0ZWQgZGF0YScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0RlbGV0ZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0RlbGV0aW9uIGNvbmZpcm1hdGlvbiB3aXRoIGVsZW1lbnQgbmFtZSBhbmQgdHlwZScgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJkZWxldGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiT2xkTWVtb3J5XCIgfSB9J10sXG4gIH0sXG4gIGV4cG9ydF9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ19fZXhwb3J0X18nLCAvLyBTcGVjaWFsIG1hcmtlciAtIHVzZXMgaW50ZXJuYWwgaGFuZGxlclxuICAgIGRlc2NyaXB0aW9uOiAnRXhwb3J0IGFuIGVsZW1lbnQgdG8gYSBwb3J0YWJsZSBmb3JtYXQnLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICdzaW5nbGUnLCAvLyAoZWxlbWVudE5hbWUsIGVsZW1lbnRUeXBlLCBmb3JtYXQpXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ2VsZW1lbnROYW1lJywgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBtYXBUbzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgZm9ybWF0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnanNvbicsIGRlc2NyaXB0aW9uOiAnRXhwb3J0IGZvcm1hdCAoanNvbiBvciB5YW1sKScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0V4cG9ydFBhY2thZ2UnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdQb3J0YWJsZSBlbGVtZW50IHBhY2thZ2UgZm9yIHNoYXJpbmcgb3IgYmFja3VwJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImV4cG9ydF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGZvcm1hdDogXCJ5YW1sXCIgfSB9J10sXG4gIH0sXG4gIGltcG9ydF9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAnX19pbXBvcnRfXycsIC8vIFNwZWNpYWwgbWFya2VyIC0gdXNlcyBpbnRlcm5hbCBoYW5kbGVyXG4gICAgZGVzY3JpcHRpb246ICdJbXBvcnQgYW4gZWxlbWVudCBmcm9tIGV4cG9ydGVkIGRhdGEnLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBkYXRhOiB7IHR5cGU6ICd1bmtub3duJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRXhwb3J0IHBhY2thZ2UgZGF0YSAoc3RyaW5nIG9yIG9iamVjdCknIH0sXG4gICAgICBvdmVyd3JpdGU6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ092ZXJ3cml0ZSBpZiBleGlzdHMnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnSW1wb3J0ZWQgZWxlbWVudCB3aXRoIHJlc29sdmVkIG1ldGFkYXRhIGFuZCBmaWxlIHBhdGgnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwiaW1wb3J0X2VsZW1lbnRcIiwgcGFyYW1zOiB7IGRhdGE6IFwieyAuLi4gZXhwb3J0IHBhY2thZ2UgLi4uIH1cIiwgb3ZlcndyaXRlOiBmYWxzZSB9IH0nXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSBPcGVyYXRpb25zIFNjaGVtYSAoSW50cm9zcGVjdGlvbi1Pbmx5KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1lbW9yeSBvcGVyYXRpb25zIHNjaGVtYSDigJQgaW50cm9zcGVjdGlvbi1vbmx5LlxuICpcbiAqIFRoZXNlIG9wZXJhdGlvbnMgYXJlIGRpc3BhdGNoZWQgdmlhIE1DUEFRTEhhbmRsZXIuZGlzcGF0Y2hNZW1vcnkoKSB3aGljaFxuICogcGVyZm9ybXMgbWVtb3J5IGluc3RhbmNlIGxvb2t1cCBieSBuYW1lLiBUaGV5IGNhbm5vdCBiZSByb3V0ZWQgdGhyb3VnaFxuICogU2NoZW1hRGlzcGF0Y2hlciB3aXRob3V0IGV4dHJhY3RpbmcgdGhhdCBwcmUtcHJvY2Vzc2luZyBsb2dpYy5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IE1FTU9SWV9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGFkZEVudHJ5OiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaE1lbW9yeScsXG4gICAgZGVzY3JpcHRpb246ICdBZGQgYSBuZXcgZW50cnkgdG8gYSBtZW1vcnkgZWxlbWVudCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ01lbW9yeSBlbGVtZW50IG5hbWUnIH0sXG4gICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgdGV4dCBjb250ZW50IG9mIHRoZSBlbnRyeS4gQW4gZW50cnkgPSBjb250ZW50ICsgdGFncyArIG1ldGFkYXRhICsgc3lzdGVtIGZpZWxkcyAodGltZXN0YW1wLCB0cnVzdCkuJyB9LFxuICAgICAgdGFnczogeyB0eXBlOiAnc3RyaW5nW10nLCBkZXNjcmlwdGlvbjogJ1RhZ3MgZm9yIGNhdGVnb3JpemluZyB0aGlzIGVudHJ5IChlLmcuIFtcImltcG9ydGFudFwiLCBcInNvdXJjZTp1c2VyXCJdKScgfSxcbiAgICAgIG1ldGFkYXRhOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZWQgbWV0YWRhdGEgZm9yIGNvcnJlbGF0aW9uIGFuZCB0cmFja2luZyAoZS5nLiB7IHNvdXJjZTogXCJhcGlcIiwgY29ycmVsYXRpb25JZDogXCJyZXEtMTIzXCIgfSknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdNZW1vcnlFbnRyeScsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0NyZWF0ZWQgZW50cnk6IHsgaWQsIGNvbnRlbnQsIHRhZ3MsIG1ldGFkYXRhLCB0aW1lc3RhbXAsIHRydXN0TGV2ZWwsIHNvdXJjZSB9LiBBbGwgbmV3IGVudHJpZXMgc3RhcnQgYXMgXCJ1bnRydXN0ZWRcIi4gVHJ1c3QgbGV2ZWxzOiB1bnRydXN0ZWQg4oaSIHZhbGlkYXRlZCDihpIgdHJ1c3RlZCAob3IgZmxhZ2dlZC9xdWFyYW50aW5lZCkuIEJhY2tncm91bmQgdmFsaWRhdGlvbiBwcm9tb3RlcyB0cnVzdCBhc3luY2hyb25vdXNseS4nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJhZGRFbnRyeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm15LW1lbW9yeVwiLCBjb250ZW50OiBcIlJlbWVtYmVyIHRoaXMgZmFjdFwiLCB0YWdzOiBbXCJpbXBvcnRhbnRcIl0gfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IF90eXBlOiBcIk1lbW9yeUVudHJ5XCIsIGlkOiBcIm1lbV8uLi5cIiwgY29udGVudDogXCJSZW1lbWJlciB0aGlzIGZhY3RcIiwgdGFnczogW1wiaW1wb3J0YW50XCJdLCB0aW1lc3RhbXA6IFwiMjAyNi0uLi5cIiwgdHJ1c3RMZXZlbDogXCJ1bnRydXN0ZWRcIiwgc291cmNlOiBcInVua25vd25cIiB9XG4gICAgICAneyBvcGVyYXRpb246IFwiYWRkRW50cnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJhdWRpdC1sb2dcIiwgY29udGVudDogXCJVc2VyIHBlcmZvcm1lZCBhY3Rpb25cIiwgdGFnczogW1wiYXVkaXRcIiwgXCJzb3VyY2U6YXBpXCJdLCBtZXRhZGF0YTogeyBjb3JyZWxhdGlvbklkOiBcInJlcS0xMjNcIiB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiYWRkRW50cnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJzZXNzaW9uLW5vdGVzXCIsIGNvbnRlbnQ6IFwiS2V5IGRlY2lzaW9uIG1hZGVcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGNsZWFyOiB7XG4gICAgZW5kcG9pbnQ6ICdERUxFVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaE1lbW9yeScsXG4gICAgZGVzY3JpcHRpb246ICdDbGVhciBhbGwgZW50cmllcyBmcm9tIGEgbWVtb3J5IGVsZW1lbnQgKGlycmV2ZXJzaWJsZSknLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdNZW1vcnkgZWxlbWVudCBuYW1lIHRvIGNsZWFyJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQ2xlYXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCBlbGVtZW50IG5hbWUgYW5kIGNsZWFyZWQgZW50cnkgY291bnQnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjbGVhclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRlbXAtbWVtb3J5XCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6IFwiQ2xlYXJlZCBhbGwgZW50cmllcyBmcm9tIHRlbXAtbWVtb3J5XCIgfVxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFeGVjdXRpb24gT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeGVjdXRpb24gbGlmZWN5Y2xlIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaEV4ZWN1dGUoKSB3aGljaFxuICogcGVyZm9ybXMgYWdlbnQgc3RhdGUgbWFuYWdlbWVudCwgYXV0b25vbXkgZXZhbHVhdGlvbiwgYW5kIHJlc2lsaWVuY2UgY2hlY2tzLlxuICogVGhleSBjYW5ub3QgYmUgcm91dGVkIHRocm91Z2ggU2NoZW1hRGlzcGF0Y2hlciB3aXRob3V0IGV4dHJhY3RpbmcgdGhhdFxuICogY29tcGxleCBwcmUtcHJvY2Vzc2luZyBsb2dpYy5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IEVYRUNVVElPTl9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGV4ZWN1dGVfYWdlbnQ6IHtcbiAgICBlbmRwb2ludDogJ0VYRUNVVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgZXhlY3V0aW9uIG9mIGFuIGFnZW50LiBUaGUgYWdlbnQgbXVzdCBoYXZlIGEgZ29hbC50ZW1wbGF0ZSBkZWZpbmVkIChzZXQgZHVyaW5nIGNyZWF0ZV9lbGVtZW50KS4gUGFzcyB2YWx1ZXMgZm9yIHRoZSB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMgaW4gcGFyYW1ldGVycy4gJyArXG4gICAgICAnTGlmZWN5Y2xlOiBFbGVtZW50cyBsaXN0ZWQgaW4gdGhlIGFnZW50XFwncyBhY3RpdmF0ZXMgZmllbGQgKGUuZy4sIGFjdGl2YXRlczogeyBwZXJzb25hczogW1wiUmV2aWV3ZXJcIl0sIHNraWxsczogW1wiY29kZS1hbmFseXNpc1wiXSB9KSBhcmUgYXV0b21hdGljYWxseSBhY3RpdmF0ZWQgd2hlbiBleGVjdXRpb24gYmVnaW5zIOKAlCB0aGVpciBnYXRla2VlcGVyIHBvbGljaWVzLCBpbnN0cnVjdGlvbnMsIGFuZCBjYXBhYmlsaXRpZXMgYmVjb21lIGFjdGl2ZSBmb3IgdGhlIGR1cmF0aW9uLiAnICtcbiAgICAgICdSZXNpbGllbmNlOiBJZiB0aGUgYWdlbnQgaGFzIGEgcmVzaWxpZW5jZSBwb2xpY3ksIGl0IGdvdmVybnMgYXV0b21hdGljIHJlY292ZXJ5IGR1cmluZyBleGVjdXRpb24uIG9uU3RlcExpbWl0UmVhY2hlZCAocGF1c2V8Y29udGludWV8cmVzdGFydCkgY29udHJvbHMgd2hhdCBoYXBwZW5zIHdoZW4gbWF4QXV0b25vbW91c1N0ZXBzIGlzIGhpdC4gb25FeGVjdXRpb25GYWlsdXJlIChwYXVzZXxyZXRyeXxyZXN0YXJ0LWZyZXNoKSBjb250cm9scyByZWNvdmVyeSBmcm9tIHN0ZXAgZmFpbHVyZXMuIEFkZGl0aW9uYWwgZmllbGRzOiBtYXhSZXRyaWVzIChkZWZhdWx0IDMpLCBtYXhDb250aW51YXRpb25zIChkZWZhdWx0IDEwKSwgcmV0cnlCYWNrb2ZmIChsaW5lYXJ8ZXhwb25lbnRpYWwpLiBXaXRob3V0IGEgcmVzaWxpZW5jZSBwb2xpY3ksIGV4ZWN1dGlvbiBwYXVzZXMgYXQgc3RlcCBsaW1pdHMgYW5kIGZhaWx1cmVzIChzYWZlIGRlZmF1bHQpLicsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FnZW50IG5hbWUgKG11c3QgYWxyZWFkeSBleGlzdCB3aXRoIGEgZ29hbC50ZW1wbGF0ZSknIH0sXG4gICAgICBwYXJhbWV0ZXJzOiB7IHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdWYWx1ZXMgZm9yIHRoZSBhZ2VudCBnb2FsIHRlbXBsYXRlIHBsYWNlaG9sZGVycy4gSWYgZ29hbC50ZW1wbGF0ZSBpcyBcIlJldmlldyB7ZmlsZXN9IGZvciB7cmV2aWV3X3R5cGV9IGlzc3Vlc1wiLCBwYXNzIHsgZmlsZXM6IFwic3JjLyoudHNcIiwgcmV2aWV3X3R5cGU6IFwic2VjdXJpdHlcIiB9LiBGb3IgYWdlbnRzIHdpdGggcGFyYW1ldGVybGVzcyB0ZW1wbGF0ZXMsIHBhc3Mge30uJyB9LFxuICAgICAgbWF4QXV0b25vbW91c1N0ZXBzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ1J1bnRpbWUgb3ZlcnJpZGUgZm9yIG1heCBhdXRvbm9tb3VzIHN0ZXBzIChvdmVycmlkZXMgdGhlIGFnZW50XFwncyBhdXRvbm9teS5tYXhBdXRvbm9tb3VzU3RlcHMpLiBJbnRlcmFjdHMgd2l0aCByZXNpbGllbmNlOiBpZiB0aGUgYWdlbnQgaGFzIG9uU3RlcExpbWl0UmVhY2hlZDogXCJjb250aW51ZVwiLCBleGVjdXRpb24gYXV0by1jb250aW51ZXMgdXAgdG8gbWF4Q29udGludWF0aW9ucyB0aW1lcyBhZnRlciBoaXR0aW5nIHRoaXMgbGltaXQuJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnRXhlY3V0ZUFnZW50UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRXhlY3V0aW9uIHJlc3VsdDogeyBfdHlwZSwgYWdlbnROYW1lLCBnb2FsLCBnb2FsSWQsIHN0YXRlVmVyc2lvbiwgYWN0aXZlRWxlbWVudHMgKGVsZW1lbnRzIGFjdGl2YXRlZCB2aWEgYWdlbnQuYWN0aXZhdGVzKSwgYXZhaWxhYmxlVG9vbHMsIHN1Y2Nlc3NDcml0ZXJpYSwgc2FmZXR5VGllciB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAvLyBNYXRjaGVzIENvZGVSZXZpZXdlciBmcm9tIGNyZWF0ZV9lbGVtZW50OiBnb2FsLnRlbXBsYXRlID0gXCJSZXZpZXcge2ZpbGVzfSBmb3Ige3Jldmlld190eXBlfSBpc3N1ZXNcIlxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImV4ZWN1dGVfYWdlbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJDb2RlUmV2aWV3ZXJcIiwgcGFyYW1ldGVyczogeyBmaWxlczogXCJzcmMvKi50c1wiLCByZXZpZXdfdHlwZTogXCJzZWN1cml0eVwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJleGVjdXRlX2FnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld2VyXCIsIHBhcmFtZXRlcnM6IHsgZmlsZXM6IFwibGliL2F1dGgudHNcIiwgcmV2aWV3X3R5cGU6IFwicXVhbGl0eVwiIH0sIG1heEF1dG9ub21vdXNTdGVwczogNSB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGdldF9leGVjdXRpb25fc3RhdGU6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgY3VycmVudCBleGVjdXRpb24gc3RhdGUgaW5jbHVkaW5nIHByb2dyZXNzIGFuZCBmaW5kaW5ncycsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FnZW50IG9yIGV4ZWN1dGFibGUgZWxlbWVudCBuYW1lJyB9LFxuICAgICAgaW5jbHVkZURlY2lzaW9uSGlzdG9yeTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnSW5jbHVkZSBkZWNpc2lvbiBoaXN0b3J5IGluIHJlc3BvbnNlJyB9LFxuICAgICAgaW5jbHVkZUNvbnRleHQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ0luY2x1ZGUgZXhlY3V0aW9uIGNvbnRleHQgaW4gcmVzcG9uc2UnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFeGVjdXRpb25TdGF0ZScsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgZXhlY3V0aW9uIHN0YXRlIHdpdGggcHJvZ3Jlc3MsIGRlY2lzaW9ucywgYW5kIGNvbnRleHQnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZXhlY3V0aW9uX3N0YXRlXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBpbmNsdWRlRGVjaXNpb25IaXN0b3J5OiB0cnVlIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgcmVjb3JkX2V4ZWN1dGlvbl9zdGVwOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVjb3JkIGV4ZWN1dGlvbiBwcm9ncmVzcywgc3RlcCBjb21wbGV0aW9uLCBvciBmaW5kaW5ncy4gUmV0dXJucyBhdXRvbm9teSBkaXJlY3RpdmUgd2l0aCBjb250aW51ZS9wYXVzZSBkZWNpc2lvbiBhbmQgbm90aWZpY2F0aW9ucy4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdBZ2VudCBvciBleGVjdXRhYmxlIGVsZW1lbnQgbmFtZScgfSxcbiAgICAgIHN0ZXBEZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24gb2Ygc3RlcCBjb21wbGV0ZWQnIH0sXG4gICAgICBvdXRjb21lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246IFwiU3RlcCBvdXRjb21lOiAnc3VjY2VzcycsICdmYWlsdXJlJywgb3IgJ3BhcnRpYWwnXCIgfSxcbiAgICAgIGZpbmRpbmdzOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1N0ZXAgZmluZGluZ3Mgb3IgcmVzdWx0cycgfSxcbiAgICAgIGNvbmZpZGVuY2U6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnQ29uZmlkZW5jZSBzY29yZSAoMC0xKScgfSxcbiAgICAgIG5leHRBY3Rpb25IaW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0hpbnQgYWJvdXQgdGhlIG5leHQgcGxhbm5lZCBhY3Rpb24gKGZvciBhdXRvbm9teSBldmFsdWF0aW9uKScgfSxcbiAgICAgIHJpc2tTY29yZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdSaXNrIHNjb3JlIGZvciB0aGUgbmV4dCBhY3Rpb24gKDAtMTAwIGludGVnZXIsIGZvciBhdXRvbm9teSBldmFsdWF0aW9uKS4gSGlnaGVyIHZhbHVlcyBpbmNyZWFzZSBsaWtlbGlob29kIG9mIGF1dG9ub215IHBhdXNlLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1N0ZXBSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdTdGVwIHJlc3VsdDogeyBfdHlwZSwgc3VjY2VzcywgbWVzc2FnZSwgZGVjaXNpb246IHsgaWQsIGdvYWxJZCwgZGVjaXNpb24sIHJlYXNvbmluZywgY29uZmlkZW5jZSB9LCBzdGF0ZTogeyBnb2FsQ291bnQsIHN0YXRlVmVyc2lvbiB9LCBhdXRvbm9teTogeyBjb250aW51ZSwgcmVhc29uPywgZmFjdG9ycywgc3RlcHNSZW1haW5pbmc/LCBub3RpZmljYXRpb25zPzogW3sgdHlwZSwgbWVzc2FnZSB9XSB9IH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJyZWNvcmRfZXhlY3V0aW9uX3N0ZXBcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIHN0ZXBEZXNjcmlwdGlvbjogXCJBbmFseXplZCBzcmMvIGRpcmVjdG9yeVwiLCBvdXRjb21lOiBcInN1Y2Nlc3NcIiwgZmluZGluZ3M6IFwiRm91bmQgMyBzdHlsZSBpc3N1ZXNcIiwgbmV4dEFjdGlvbkhpbnQ6IFwiQXBwbHkgZml4ZXNcIiwgcmlza1Njb3JlOiAyNSB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgX3R5cGU6IFwiU3RlcFJlc3VsdFwiLCBzdWNjZXNzOiB0cnVlLCBkZWNpc2lvbjogeyAuLi4gfSwgYXV0b25vbXk6IHsgY29udGludWU6IHRydWUsIGZhY3RvcnM6IFsuLi5dLCBzdGVwc1JlbWFpbmluZzogNCB9IH1cbiAgICBdLFxuICB9LFxuICBjb21wbGV0ZV9leGVjdXRpb246IHtcbiAgICBlbmRwb2ludDogJ0VYRUNVVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2lnbmFsIHRoYXQgZXhlY3V0aW9uIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHN1bW1hcnknLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdBZ2VudCBvciBleGVjdXRhYmxlIGVsZW1lbnQgbmFtZScgfSxcbiAgICAgIG91dGNvbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogXCJFeGVjdXRpb24gb3V0Y29tZTogJ3N1Y2Nlc3MnLCAnZmFpbHVyZScsIG9yICdwYXJ0aWFsJ1wiIH0sXG4gICAgICBzdW1tYXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTdW1tYXJ5IG9mIGV4ZWN1dGlvbiByZXN1bHRzJyB9LFxuICAgICAgZ29hbElkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0dvYWwgSUQgaWYgdHJhY2tpbmcgc3BlY2lmaWMgZ29hbCcgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NvbXBsZXRpb25SZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdHb2FsIGNvbXBsZXRpb24gc3RhdHVzIHdpdGggbWV0cmljcyBhbmQgdXBkYXRlZCBzdGF0ZVZlcnNpb24nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjb21wbGV0ZV9leGVjdXRpb25cIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIG91dGNvbWU6IFwic3VjY2Vzc1wiLCBzdW1tYXJ5OiBcIlJldmlld2VkIDE1IGZpbGVzLCBmb3VuZCAzIGlzc3Vlc1wiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgY29udGludWVfZXhlY3V0aW9uOiB7XG4gICAgZW5kcG9pbnQ6ICdFWEVDVVRFJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hFeGVjdXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VtZSBleGVjdXRpb24gZnJvbSBzYXZlZCBzdGF0ZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FnZW50IG9yIGV4ZWN1dGFibGUgZWxlbWVudCBuYW1lJyB9LFxuICAgICAgcHJldmlvdXNTdGVwUmVzdWx0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1Jlc3VsdCBmcm9tIHByZXZpb3VzIHN0ZXAnIH0sXG4gICAgICBwYXJhbWV0ZXJzOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgY29udGludWF0aW9uJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQ29udGludWVSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdSZXN1bWVkIGV4ZWN1dGlvbiBzdGF0ZSB3aXRoIHVwZGF0ZWQgY29udGV4dCBhbmQgc3RhdGVWZXJzaW9uJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiY29udGludWVfZXhlY3V0aW9uXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBwcmV2aW91c1N0ZXBSZXN1bHQ6IFwiRmlsZXMgYW5hbHl6ZWRcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGFib3J0X2V4ZWN1dGlvbjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoRXhlY3V0ZScsXG4gICAgZGVzY3JpcHRpb246ICdBYm9ydCBhIHJ1bm5pbmcgYWdlbnQgZXhlY3V0aW9uLCByZWplY3RpbmcgZnVydGhlciBvcGVyYXRpb25zIGZvciB0aGUgZ29hbElkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgb3IgZXhlY3V0YWJsZSBlbGVtZW50IG5hbWUgdG8gYWJvcnQnIH0sXG4gICAgICByZWFzb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnUmVhc29uIGZvciBhYm9ydGluZyB0aGUgZXhlY3V0aW9uJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQWJvcnRSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdBYm9ydCBjb25maXJtYXRpb246IHsgX3R5cGUsIHN1Y2Nlc3MsIGFnZW50TmFtZSwgYWJvcnRlZEdvYWxJZHMsIHJlYXNvbiwgbWVzc2FnZSB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiYWJvcnRfZXhlY3V0aW9uXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCByZWFzb246IFwiVXNlciByZXF1ZXN0ZWQgY2FuY2VsbGF0aW9uXCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IF90eXBlOiBcIkFib3J0UmVzdWx0XCIsIHN1Y2Nlc3M6IHRydWUsIGFnZW50TmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGFib3J0ZWRHb2FsSWRzOiBbXCJnb2FsX2FiYzEyM1wiXSwgcmVhc29uOiBcIlVzZXIgcmVxdWVzdGVkIGNhbmNlbGxhdGlvblwiIH1cbiAgICBdLFxuICB9LFxuICBnZXRfZ2F0aGVyZWRfZGF0YToge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoRXhlY3V0ZScsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYWdncmVnYXRlZCBleGVjdXRpb24gZGF0YSAoc3RlcHMsIGRlY2lzaW9ucywgZmluZGluZ3MsIGFuZCBzdW1tYXJ5IHN0YXRpc3RpY3MpIGZvciBhIHNwZWNpZmljIGdvYWwnLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdBZ2VudCBuYW1lJyB9LFxuICAgICAgZ29hbElkOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdHb2FsIElEIHRvIGdhdGhlciBkYXRhIGZvcicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0dhdGhlcmVkRGF0YScsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FnZ3JlZ2F0ZWQgZGF0YTogeyBfdHlwZSwgZ29hbElkLCBhZ2VudE5hbWUsIGVudHJpZXMsIHN1bW1hcnk6IHsgdG90YWxTdGVwcywgc3VjY2Vzc2Z1bFN0ZXBzLCBhdmVyYWdlQ29uZmlkZW5jZSB9LCBnb2FsIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZ2F0aGVyZWRfZGF0YVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgZ29hbElkOiBcImdvYWxfYWJjMTIzXCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IF90eXBlOiBcIkdhdGhlcmVkRGF0YVwiLCBnb2FsSWQ6IFwiZ29hbF9hYmMxMjNcIiwgZW50cmllczogWy4uLl0sIHN1bW1hcnk6IHsgdG90YWxTdGVwczogNSwgc3VjY2Vzc2Z1bFN0ZXBzOiA0IH0gfVxuICAgIF0sXG4gIH0sXG4gIHByZXBhcmVfaGFuZG9mZjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoRXhlY3V0ZScsXG4gICAgZGVzY3JpcHRpb246ICdTZXJpYWxpemUgZ29hbCBwcm9ncmVzcyBpbnRvIGEgcG9ydGFibGUgaGFuZG9mZiBibG9jayBmb3Igc2Vzc2lvbiB0cmFuc2ZlcicsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FnZW50IG5hbWUgdG8gcHJlcGFyZSBoYW5kb2ZmIGZvcicgfSxcbiAgICAgIGdvYWxJZDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnR29hbCBJRCB0byBpbmNsdWRlIGluIHRoZSBoYW5kb2ZmJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnSGFuZG9mZlJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0hhbmRvZmYgc3RhdGUgc25hcHNob3Q6IHsgX3R5cGUsIGhhbmRvZmZTdGF0ZTogeyB2ZXJzaW9uLCBhZ2VudE5hbWUsIGdvYWxJZCwgY2hlY2tzdW0gfSwgaGFuZG9mZkJsb2NrOiBcImh1bWFuLXJlYWRhYmxlIGhlYWRlciArIGNvbXByZXNzZWQgYmFzZTY0IHBheWxvYWRcIiB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwicHJlcGFyZV9oYW5kb2ZmXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBnb2FsSWQ6IFwiZ29hbF9hYmMxMjNcIiB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgX3R5cGU6IFwiSGFuZG9mZlJlc3VsdFwiLFxuICAgICAgLy8gICBoYW5kb2ZmU3RhdGU6IHsgdmVyc2lvbjogXCIxLjAuMFwiLCBhZ2VudE5hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBnb2FsSWQ6IFwiZ29hbF9hYmMxMjNcIiwgY2hlY2tzdW06IFwic2hhMjU2Li4uXCIgfSxcbiAgICAgIC8vICAgaGFuZG9mZkJsb2NrOiBcIuKVlOKVkOKVkOKVkCBBR0VOVCBIQU5ET0ZGIOKVkOKVkOKVkOKVl1xcbiBBZ2VudDogY29kZS1yZXZpZXdlclxcbiBHb2FsOiAuLi5cXG7ilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ1cXG4tLS0gSEFORE9GRiBQQVlMT0FEIFNUQVJUIC0tLVxcbi4uLmJhc2U2NC4uLlxcbi0tLSBIQU5ET0ZGIFBBWUxPQUQgRU5EIC0tLVwiIH1cbiAgICBdLFxuICB9LFxuICByZXN1bWVfZnJvbV9oYW5kb2ZmOiB7XG4gICAgZW5kcG9pbnQ6ICdFWEVDVVRFJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hFeGVjdXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VtZSBhZ2VudCBleGVjdXRpb24gZnJvbSBhIGhhbmRvZmYgYmxvY2sgd2l0aCBpbnRlZ3JpdHkgdmFsaWRhdGlvbicsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FnZW50IG5hbWUgdG8gcmVzdW1lIChtdXN0IG1hdGNoIGhhbmRvZmYgYmxvY2spJyB9LFxuICAgICAgaGFuZG9mZkJsb2NrOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgZnVsbCBoYW5kb2ZmIGJsb2NrIHRleHQgKGluY2x1ZGluZyBwYXlsb2FkIG1hcmtlcnMpJyB9LFxuICAgICAgcGFyYW1ldGVyczogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdHb2FsIHRlbXBsYXRlIHBhcmFtZXRlcnMgKHNhbWUgYXMgZXhlY3V0ZV9hZ2VudCBwYXJhbWV0ZXJzKScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1Jlc3VtZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1Jlc3VtZWQgZXhlY3V0aW9uIHdpdGggcmVzdG9yYXRpb24gbWV0YWRhdGE6IHsgX3R5cGUsIGFnZW50TmFtZSwgZ29hbCwgZ29hbElkLCByZXN0b3JlZEZyb206IHsgYWdlbnROYW1lLCBnb2FsSWQsIHN0ZXBzQ29tcGxldGVkLCBwcmVwYXJlZEF0IH0gfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInJlc3VtZV9mcm9tX2hhbmRvZmZcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGhhbmRvZmZCbG9jazogXCIuLi5mdWxsIGhhbmRvZmYgYmxvY2suLi5cIiwgcGFyYW1ldGVyczogeyB0YXNrOiBcIlJldmlldyBQUiAjNDJcIiB9IH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBfdHlwZTogXCJSZXN1bWVSZXN1bHRcIiwgYWdlbnROYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgZ29hbElkOiBcImdvYWxfbmV3NDU2XCIsIHJlc3RvcmVkRnJvbTogeyBnb2FsSWQ6IFwiZ29hbF9hYmMxMjNcIiwgc3RlcHNDb21wbGV0ZWQ6IDUgfSB9XG4gICAgXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGVrZWVwZXIgT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHYXRla2VlcGVyIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaEdhdGVrZWVwZXIoKSB3aGljaFxuICogcGVyZm9ybXMgc2Vzc2lvbi1sZXZlbCBjb25maXJtYXRpb24gdHJhY2tpbmcgYW5kIGRhbmdlciB6b25lIHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IEdBVEVLRUVQRVJfU0NIRU1BUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBjb25maXJtX29wZXJhdGlvbjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIGEgcGVuZGluZyBvcGVyYXRpb24gdGhhdCByZXF1aXJlcyB1c2VyIGFwcHJvdmFsIChHYXRla2VlcGVyIGZsb3cpJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG9wZXJhdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnT3BlcmF0aW9uIG5hbWUgdG8gY29uZmlybSAoZS5nLiwgXCJjcmVhdGVfZWxlbWVudFwiKScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdPcHRpb25hbCBlbGVtZW50IHR5cGUgc2NvcGUgZm9yIHRoZSBjb25maXJtYXRpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDb25maXJtUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlybWF0aW9uIHN0YXR1czogeyBjb25maXJtZWQsIG9wZXJhdGlvbiwgZWxlbWVudF90eXBlPywgbWVzc2FnZSB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiY29uZmlybV9vcGVyYXRpb25cIiwgcGFyYW1zOiB7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiIH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBjb25maXJtZWQ6IHRydWUsIG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBtZXNzYWdlOiBcIk9wZXJhdGlvbiBjb25maXJtZWQgZm9yIHRoaXMgc2Vzc2lvblwiIH1cbiAgICBdLFxuICB9LFxuICB2ZXJpZnlfY2hhbGxlbmdlOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEdhdGVrZWVwZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnU3VibWl0IHZlcmlmaWNhdGlvbiBjb2RlIHRvIHVuYmxvY2sgYSBkYW5nZXIgem9uZSBvcGVyYXRpb24nLFxuICAgIHBhcmFtczoge1xuICAgICAgY2hhbGxlbmdlX2lkOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdVVUlEIHY0IGNoYWxsZW5nZSBJRCBmcm9tIGRhbmdlciB6b25lIHRyaWdnZXInIH0sXG4gICAgICBjb2RlOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdWZXJpZmljYXRpb24gY29kZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXInIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdWZXJpZnlSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdWZXJpZmljYXRpb24gc3RhdHVzOiB7IHZlcmlmaWVkLCBjaGFsbGVuZ2VfaWQsIGFnZW50TmFtZT8sIG1lc3NhZ2UgfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInZlcmlmeV9jaGFsbGVuZ2VcIiwgcGFyYW1zOiB7IGNoYWxsZW5nZV9pZDogXCI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDBcIiwgY29kZTogXCJBQkMxMjNcIiB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgdmVyaWZpZWQ6IHRydWUsIGNoYWxsZW5nZV9pZDogXCIuLi5cIiwgYWdlbnROYW1lOiBcIm15LWFnZW50XCIsIG1lc3NhZ2U6IFwiQWdlbnQgdW5ibG9ja2VkXCIgfVxuICAgIF0sXG4gIH0sXG4gIGJlZXRsZWp1aWNlX2JlZXRsZWp1aWNlX2JlZXRsZWp1aWNlOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEdhdGVrZWVwZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnU2FmZS10cmlnZ2VyIHRoZSBmdWxsIGRhbmdlciB6b25lIHZlcmlmaWNhdGlvbiBwaXBlbGluZSBmb3IgdGVzdGluZyBwdXJwb3NlcycsXG4gICAgcGFyYW1zOiB7XG4gICAgICBhZ2VudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0FnZW50IHRvIGJsb2NrIChkZWZhdWx0cyB0byBcImJlZXRsZWp1aWNlLXRlc3QtYWdlbnRcIiknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCZWV0bGVqdWljZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0NoYWxsZW5nZSBkZXRhaWxzOiB7IGNoYWxsZW5nZV9pZCwgYWdlbnROYW1lLCBleHBpcmVzQXQsIG1lc3NhZ2UgfS4gQ29kZSBpcyBkaXNwbGF5ZWQgdmlhIE9TIGRpYWxvZywgbmV2ZXIgaW4gcmVzcG9uc2UuJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiYmVldGxlanVpY2VfYmVldGxlanVpY2VfYmVldGxlanVpY2VcIiB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IGNoYWxsZW5nZV9pZDogXCIuLi5cIiwgYWdlbnROYW1lOiBcImJlZXRsZWp1aWNlLXRlc3QtYWdlbnRcIiwgZXhwaXJlc0F0OiBcIi4uLlwiLCBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBjb2RlIGRpc3BsYXllZCB2aWEgc3lzdGVtIGRpYWxvZ1wiIH1cbiAgICAgICd7IG9wZXJhdGlvbjogXCJiZWV0bGVqdWljZV9iZWV0bGVqdWljZV9iZWV0bGVqdWljZVwiLCBwYXJhbXM6IHsgYWdlbnRfbmFtZTogXCJteS10ZXN0LWFnZW50XCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICAvLyBJc3N1ZSAjNjI1OiBDTEktbGV2ZWwgcGVybWlzc2lvbiBkZWxlZ2F0aW9uIHZpYSAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2xcbiAgLy8gSXNzdWUgIzY0NzogTW92ZWQgdG8gUkVBRCDigJQgcG9saWN5IGV2YWx1YXRpb24gaXMgcmVhZC1vbmx5XG4gIHBlcm1pc3Npb25fcHJvbXB0OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hHYXRla2VlcGVyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0V2YWx1YXRlIGEgQ0xJLWxldmVsIHBlcm1pc3Npb24gcHJvbXB0IChCYXNoLCBFZGl0LCBXcml0ZSwgTUNQIHRvb2xzKS4gUmV0dXJucyBhbGxvdy9kZW55IGRlY2lzaW9uIGZvciBub24taW50ZXJhY3RpdmUgQ2xhdWRlIENvZGUgc2Vzc2lvbnMgdXNpbmcgLS1wZXJtaXNzaW9uLXByb21wdC10b29sLicsXG4gICAgcGFyYW1zOiB7XG4gICAgICB0b29sX25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ1RoZSB0b29sIHJlcXVlc3RpbmcgcGVybWlzc2lvbiAoZS5nLiwgXCJCYXNoXCIsIFwiRWRpdFwiLCBcIldyaXRlXCIsIFwibWNwX19zZXJ2ZXJfX3Rvb2xcIiknIH0sXG4gICAgICBpbnB1dDogeyB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHRvb2wgaW5wdXQgcGFyYW1ldGVycyB0byBldmFsdWF0ZSAoZS5nLiwgeyBjb21tYW5kOiBcImdpdCBwdXNoXCIgfSBmb3IgQmFzaCknIH0sXG4gICAgICBhZ2VudF9pZGVudGl0eTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdPcHRpb25hbDogaWRlbnRpdHkgb2YgdGhlIHN1Yi1hZ2VudCBtYWtpbmcgdGhlIHJlcXVlc3QgKGZyb20gQ2xhdWRlIENvZGUgLS1wZXJtaXNzaW9uLXByb21wdC10b29sKScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1Blcm1pc3Npb25EZWNpc2lvbicsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ3sgYmVoYXZpb3I6IFwiYWxsb3dcInxcImRlbnlcIiwgdXBkYXRlZElucHV0PywgbWVzc2FnZT8sIGNsYXNzaWZpY2F0aW9uPzogeyByaXNrTGV2ZWwsIHJlYXNvbiwgc3RhZ2UsIHJpc2tTY29yZT8sIGlycmV2ZXJzaWJsZT8gfSwgcG9saWN5Q29udGV4dD86IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSwgYXBwcm92YWxSZXF1ZXN0PzogeyByZXF1ZXN0SWQsIHRvb2xOYW1lLCByaXNrTGV2ZWwsIHJpc2tTY29yZSwgaXJyZXZlcnNpYmxlLCByZWFzb24gfSB9LiBSaXNrIHNjb3JlczogMD1zYWZlLCA0MD1tb2RlcmF0ZSwgODA9ZGFuZ2Vyb3VzLCAxMDA9YmxvY2tlZDsgYWRqdXN0bWVudHM6IGlycmV2ZXJzaWJsZSgrMTApLCBuZXR3b3JrKCsxMCksIG91dC1vZi1zY29wZSByZWFkKCsxMCksIGZpbGUgY3JlYXRpb24oKzUpLiBTdGFnZXM6IHN0YXRpY19hbGxvdywgc3RhdGljX2RlbnksIGVsZW1lbnRfZGVueSwgZWxlbWVudF9hbGxvdywgY2xpX2FwcHJvdmFsLCBhcHByb3ZhbF9yZXF1aXJlZCwgZGVmYXVsdF9hbGxvdy4nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJwZXJtaXNzaW9uX3Byb21wdFwiLCBwYXJhbXM6IHsgdG9vbF9uYW1lOiBcIkJhc2hcIiwgaW5wdXQ6IHsgY29tbWFuZDogXCJucG0gdGVzdFwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJwZXJtaXNzaW9uX3Byb21wdFwiLCBwYXJhbXM6IHsgdG9vbF9uYW1lOiBcIkVkaXRcIiwgaW5wdXQ6IHsgZmlsZV9wYXRoOiBcInNyYy9pbmRleC50c1wiLCBvbGRfc3RyaW5nOiBcIi4uLlwiLCBuZXdfc3RyaW5nOiBcIi4uLlwiIH0gfSB9JyxcbiAgICBdLFxuICB9LFxuICAvLyBQZXJtaXNzaW9uIGV2YWx1YXRpb24gZm9yIFByZVRvb2xVc2UgaG9va3MgKGFsbCBwbGF0Zm9ybXMpXG4gIGV2YWx1YXRlX3Blcm1pc3Npb246IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEdhdGVrZWVwZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnRXZhbHVhdGUgQ0xJIHBlcm1pc3Npb24gZm9yIGEgdG9vbCB2aWEgSFRUUC9ob29rLiBSZXR1cm5zIHBsYXRmb3JtLWZvcm1hdHRlZCByZXNwb25zZSAoY2xhdWRlX2NvZGUsIGdlbWluaSwgY3Vyc29yLCB3aW5kc3VyZiwgY29kZXgpLiBBbHRlcm5hdGl2ZSB0byBwZXJtaXNzaW9uX3Byb21wdCBmb3IgaW50ZXJhY3RpdmUgc2Vzc2lvbnMgdXNpbmcgUHJlVG9vbFVzZSBob29rcy4nLFxuICAgIHBhcmFtczoge1xuICAgICAgdG9vbF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgdG9vbCByZXF1ZXN0aW5nIHBlcm1pc3Npb24gKGUuZy4sIFwiQmFzaFwiLCBcIkVkaXRcIiwgXCJXcml0ZVwiKScgfSxcbiAgICAgIGlucHV0OiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1RoZSB0b29sIGlucHV0IHBhcmFtZXRlcnMgdG8gZXZhbHVhdGUnIH0sXG4gICAgICBwbGF0Zm9ybTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdUYXJnZXQgcGxhdGZvcm0gZm9yIHJlc3BvbnNlIGZvcm1hdHRpbmcgKGRlZmF1bHQ6IFwiY2xhdWRlX2NvZGVcIikuIE9wdGlvbnM6IGNsYXVkZV9jb2RlLCBnZW1pbmksIGN1cnNvciwgd2luZHN1cmYsIGNvZGV4JyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnUGxhdGZvcm1QZXJtaXNzaW9uRGVjaXNpb24nLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdQbGF0Zm9ybS1mb3JtYXR0ZWQgcGVybWlzc2lvbiBkZWNpc2lvbi4gQ2xhdWRlIENvZGU6IHsgZGVjaXNpb246IFwiYWxsb3dcInxcImRlbnlcInxcImFza1wiLCByZWFzb24/IH0uIEdlbWluaTogeyBkZWNpc2lvbjogXCJhbGxvd1wifFwiZGVueVwiLCByZWFzb24/IH0uIEN1cnNvcjogeyBwZXJtaXNzaW9uOiBcImFsbG93XCJ8XCJkZW55XCJ8XCJhc2tcIiwgcmVhc29uPyB9LiBXaW5kc3VyZjogeyBhbGxvd2VkOiBib29sZWFuLCByZWFzb24/IH0uIENvZGV4OiB7IGhvb2tTcGVjaWZpY091dHB1dDogeyBwZXJtaXNzaW9uRGVjaXNpb24sIHJlYXNvbj8gfSB9LicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImV2YWx1YXRlX3Blcm1pc3Npb25cIiwgcGFyYW1zOiB7IHRvb2xfbmFtZTogXCJCYXNoXCIsIGlucHV0OiB7IGNvbW1hbmQ6IFwiZ2l0IHN0YXR1c1wiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJldmFsdWF0ZV9wZXJtaXNzaW9uXCIsIHBhcmFtczogeyB0b29sX25hbWU6IFwiQmFzaFwiLCBpbnB1dDogeyBjb21tYW5kOiBcImdpdCBwdXNoIC0tZm9yY2VcIiB9LCBwbGF0Zm9ybTogXCJjbGF1ZGVfY29kZVwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgLy8gSXNzdWUgIzYyNSBQaGFzZSAyOiBDTEkgcG9saWN5IHZpc2liaWxpdHlcbiAgZ2V0X2VmZmVjdGl2ZV9jbGlfcG9saWNpZXM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEdhdGVrZWVwZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGVmZmVjdGl2ZSBDTEktbGV2ZWwgcGVybWlzc2lvbiBwb2xpY2llcyBhY3Jvc3MgYWxsIGFjdGl2ZSBlbGVtZW50cycsXG4gICAgcGFyYW1zOiB7XG4gICAgICB0b29sX25hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWw6IGV2YWx1YXRlIGEgc3BlY2lmaWMgdG9vbCAoZS5nLiwgXCJCYXNoXCIsIFwiRWRpdDpzcmMvaW5kZXgudHNcIiknIH0sXG4gICAgICB0b29sX2lucHV0OiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ09wdGlvbmFsOiB0b29sIGlucHV0IHRvIGV2YWx1YXRlIChlLmcuLCB7IGNvbW1hbmQ6IFwibnBtIHRlc3RcIiB9KScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VmZmVjdGl2ZUNsaVBvbGljaWVzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAneyBhY3RpdmVFbGVtZW50Q291bnQsIGhhc0FsbG93bGlzdCwgZWxlbWVudHMsIGNvbWJpbmVkQWxsb3dQYXR0ZXJucywgY29tYmluZWREZW55UGF0dGVybnMsIGV2YWx1YXRpb24/IH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWZmZWN0aXZlX2NsaV9wb2xpY2llc1wiIH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzXCIsIHBhcmFtczogeyB0b29sX25hbWU6IFwiQmFzaFwiLCB0b29sX2lucHV0OiB7IGNvbW1hbmQ6IFwiZ2l0IHB1c2hcIiB9IH0gfScsXG4gICAgXSxcbiAgfSxcbiAgLy8gSXNzdWUgIzYyNSBQaGFzZSAzOiBDTEkgYXBwcm92YWwgd29ya2Zsb3dcbiAgYXBwcm92ZV9jbGlfcGVybWlzc2lvbjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgZGVzY3JpcHRpb246ICdBcHByb3ZlIGEgcGVuZGluZyBDTEkgdG9vbCBwZXJtaXNzaW9uIHJlcXVlc3QuIFVzZWQgYnkgYnJpZGdlcyAoWnVsaXAsIFNsYWNrKSB0byByZWxheSBodW1hbiBhcHByb3ZhbCBmb3IgdG9vbHMgdGhhdCByZXF1aXJlIGl0LicsXG4gICAgcGFyYW1zOiB7XG4gICAgICByZXF1ZXN0X2lkOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdBcHByb3ZhbCByZXF1ZXN0IElEIGZyb20gcGVybWlzc2lvbl9wcm9tcHQgZGVueSByZXNwb25zZSAoZm9ybWF0OiBjbGktPFVVSUQ+KScgfSxcbiAgICAgIHNjb3BlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1wic2luZ2xlXCIgKGRlZmF1bHQsIGNvbnN1bWVkIG9uIHVzZSkgb3IgXCJ0b29sX3Nlc3Npb25cIiAoYWxsIHVzZXMgb2YgdGhhdCB0b29sIGZvciB0aGUgc2Vzc2lvbiknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdBcHByb3ZlUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAneyBhcHByb3ZlZCwgcmVxdWVzdElkLCB0b29sTmFtZSwgc2NvcGUsIG1lc3NhZ2UgfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImFwcHJvdmVfY2xpX3Blcm1pc3Npb25cIiwgcGFyYW1zOiB7IHJlcXVlc3RfaWQ6IFwiY2xpLWFiYy4uLlwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiYXBwcm92ZV9jbGlfcGVybWlzc2lvblwiLCBwYXJhbXM6IHsgcmVxdWVzdF9pZDogXCJjbGktYWJjLi4uXCIsIHNjb3BlOiBcInRvb2xfc2Vzc2lvblwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFsczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYWxsIHBlbmRpbmcgQ0xJIHRvb2wgYXBwcm92YWwgcmVxdWVzdHMgZm9yIHRoaXMgc2Vzc2lvbi4gUmV0dXJucyB1bmFwcHJvdmVkIHJlcXVlc3RzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIGh1bWFuIGF1dGhvcml6YXRpb24uJyxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1BlbmRpbmdBcHByb3ZhbHMnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICd7IHBlbmRpbmc6IENsaUFwcHJvdmFsUmVjb3JkW10sIGNvdW50OiBudW1iZXIgfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9wZW5kaW5nX2NsaV9hcHByb3ZhbHNcIiB9JyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9nZ2luZyBPcGVyYXRpb25zIFNjaGVtYSAoSW50cm9zcGVjdGlvbi1Pbmx5KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIExvZ2dpbmcgb3BlcmF0aW9ucyBzY2hlbWEg4oCUIGludHJvc3BlY3Rpb24tb25seS5cbiAqXG4gKiBEaXNwYXRjaGVkIHZpYSBNQ1BBUUxIYW5kbGVyLmRpc3BhdGNoTG9nZ2luZygpIHdpdGggcnVudGltZSBwYXJhbWV0ZXJcbiAqIHZhbGlkYXRpb24gdmlhIHZhbGlkYXRlTG9nUXVlcnlQYXJhbXMoKS5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IExPR0dJTkdfU0NIRU1BUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBxdWVyeV9sb2dzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hMb2dnaW5nJyxcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IHJlY2VudCBsb2cgZW50cmllcyBmcm9tIHRoZSBpbi1tZW1vcnkgYnVmZmVyLiBSZXR1cm5zIGZpbHRlcmVkLCBwYWdpbmF0ZWQgcmVzdWx0cyBzb3J0ZWQgbmV3ZXN0LWZpcnN0LiBPbmx5IHF1ZXJpZXMgdGhlIGhvdCB0aWVyIChpbi1tZW1vcnkpOyBldmljdGVkIGVudHJpZXMgZXhpc3Qgb25seSBpbiBkaXNrIGxvZyBmaWxlcy4nLFxuICAgIHBhcmFtczoge1xuICAgICAgY2F0ZWdvcnk6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiBcIkxvZyBjYXRlZ29yeSBmaWx0ZXI6ICdhcHBsaWNhdGlvbicsICdzZWN1cml0eScsICdwZXJmb3JtYW5jZScsICd0ZWxlbWV0cnknLCBvciAnYWxsJy4gRGVmYXVsdDogJ2FsbCdcIiB9LFxuICAgICAgbGV2ZWw6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiBcIk1pbmltdW0gbG9nIGxldmVsIChpbmNsdXNpdmUpOiAnZGVidWcnLCAnaW5mbycsICd3YXJuJywgb3IgJ2Vycm9yJy4gT21pdCBmb3IgYWxsIGxldmVsc1wiIH0sXG4gICAgICBzb3VyY2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQ29tcG9uZW50IG5hbWUgZmlsdGVyIChjYXNlLWluc2Vuc2l0aXZlIHN1YnN0cmluZyBtYXRjaCknIH0sXG4gICAgICBtZXNzYWdlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZyZWUgdGV4dCBzZWFyY2ggaW4gbWVzc2FnZSBmaWVsZCAoY2FzZS1pbnNlbnNpdGl2ZSBzdWJzdHJpbmcgbWF0Y2gpJyB9LFxuICAgICAgc2luY2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnSVNPIDg2MDEgdGltZXN0YW1wIOKAlCByZXR1cm4gZW50cmllcyBhZnRlciB0aGlzIHRpbWUnIH0sXG4gICAgICB1bnRpbDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdJU08gODYwMSB0aW1lc3RhbXAg4oCUIHJldHVybiBlbnRyaWVzIGJlZm9yZSB0aGlzIHRpbWUnIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdNYXggcmVzdWx0cyB0byByZXR1cm4gKDEtNTAwLCBkZWZhdWx0IDUwKScgfSxcbiAgICAgIG9mZnNldDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwIGZvciBwYWdpbmF0aW9uIChkZWZhdWx0IDApJyB9LFxuICAgICAgY29ycmVsYXRpb25JZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdDb3JyZWxhdGlvbiBJRCBmb3IgcmVxdWVzdCB0cmFjaW5nJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnTG9nUXVlcnlSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdMb2cgZW50cmllczogeyBfdHlwZTogXCJMb2dRdWVyeVJlc3VsdFwiLCBlbnRyaWVzLCB0b3RhbCwgZmlsdGVycyB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwicXVlcnlfbG9nc1wiIH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgX3R5cGU6IFwiTG9nUXVlcnlSZXN1bHRcIiwgZW50cmllczogWy4uLl0sIHRvdGFsOiA0MiB9XG4gICAgICAneyBvcGVyYXRpb246IFwicXVlcnlfbG9nc1wiLCBwYXJhbXM6IHsgY2F0ZWdvcnk6IFwic2VjdXJpdHlcIiwgbGV2ZWw6IFwid2FyblwiLCBsaW1pdDogMTAgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9sb2dzXCIsIHBhcmFtczogeyBzaW5jZTogXCIyMDI2LTAxLTAxVDAwOjAwOjAwWlwiLCBzb3VyY2U6IFwiR2F0ZWtlZXBlclwiIH0gfScsXG4gICAgXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1ldHJpY3MgT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBNZXRyaWNzIGNvbGxlY3Rpb24gcXVlcnkgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogRGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaE1ldHJpY3MoKSB3aGljaCByb3V0ZXMgdG9cbiAqIE1lbW9yeU1ldHJpY3NTaW5rLnF1ZXJ5KCkuIEZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBxdWVyeV9sb2dzLlxuICovXG5leHBvcnQgY29uc3QgTUVUUklDU19TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIHF1ZXJ5X21ldHJpY3M6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaE1ldHJpY3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgY29sbGVjdGVkIG1ldHJpY3Mgc25hcHNob3RzLiBSZXR1cm5zIGZpbHRlcmVkLCBwYWdpbmF0ZWQgcmVzdWx0cyBzb3J0ZWQgbmV3ZXN0LWZpcnN0LiBTdXBwb3J0cyBmaWx0ZXJpbmcgYnkgbWV0cmljIG5hbWUgKHByZWZpeCBvciBleGFjdCksIHNvdXJjZSwgdHlwZSwgYW5kIHRpbWUgcmFuZ2UuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG5hbWVzOiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiBcIk1ldHJpYyBuYW1lIGZpbHRlcnMuIEV4YWN0IG1hdGNoIG9yIHByZWZpeCBtYXRjaCB3aXRoIHRyYWlsaW5nICcuJyBvciAnLionIChlLmcuLCAnc3lzdGVtLm1lbW9yeS4qJylcIiB9LFxuICAgICAgc291cmNlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0NvbGxlY3RvciBzb3VyY2UgZmlsdGVyIChjYXNlLWluc2Vuc2l0aXZlIHN1YnN0cmluZyBtYXRjaCknIH0sXG4gICAgICB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogXCJNZXRyaWMgdHlwZSBmaWx0ZXI6ICdjb3VudGVyJywgJ2dhdWdlJywgb3IgJ2hpc3RvZ3JhbSdcIiB9LFxuICAgICAgc2luY2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnSVNPIDg2MDEgdGltZXN0YW1wIOKAlCByZXR1cm4gc25hcHNob3RzIGFmdGVyIHRoaXMgdGltZScgfSxcbiAgICAgIHVudGlsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0lTTyA4NjAxIHRpbWVzdGFtcCDigJQgcmV0dXJuIHNuYXBzaG90cyBiZWZvcmUgdGhpcyB0aW1lJyB9LFxuICAgICAgbGF0ZXN0OiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdJZiB0cnVlIChkZWZhdWx0KSwgcmV0dXJuIG9ubHkgdGhlIG1vc3QgcmVjZW50IHNuYXBzaG90LiBTZXQgZmFsc2UgZm9yIGhpc3RvcmljYWwgcmFuZ2UgcXVlcmllcycgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ01heCBzbmFwc2hvdHMgdG8gcmV0dXJuICgxLTEwMCwgZGVmYXVsdCAxKScgfSxcbiAgICAgIG9mZnNldDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdOdW1iZXIgb2Ygc25hcHNob3RzIHRvIHNraXAgZm9yIHBhZ2luYXRpb24gKGRlZmF1bHQgMCknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdNZXRyaWNRdWVyeVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ01ldHJpYyBzbmFwc2hvdHM6IHsgX3R5cGU6IFwiTWV0cmljUXVlcnlSZXN1bHRcIiwgc25hcHNob3RzLCB0b3RhbCwgaGFzTW9yZSwgb2xkZXN0QXZhaWxhYmxlLCBuZXdlc3RBdmFpbGFibGUgfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X21ldHJpY3NcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9tZXRyaWNzXCIsIHBhcmFtczogeyBuYW1lczogW1wic3lzdGVtLm1lbW9yeS4qXCJdLCB0eXBlOiBcImdhdWdlXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9tZXRyaWNzXCIsIHBhcmFtczogeyBsYXRlc3Q6IGZhbHNlLCBsaW1pdDogMTAsIHNpbmNlOiBcIjIwMjYtMDEtMDFUMDA6MDA6MDBaXCIgfSB9JyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWN0aXZhdGlvbiBPcGVyYXRpb25zIFNjaGVtYSAoSW50cm9zcGVjdGlvbi1Pbmx5KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFjdGl2YXRpb24gbGlmZWN5Y2xlIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaEFjdGl2YXRpb24oKSB3aGljaFxuICogcm91dGVzIHRvIEVsZW1lbnRDUlVESGFuZGxlciBhY3RpdmF0aW9uIHN0cmF0ZWdpZXMuIFRoZXkgY2Fubm90IGJlIHJvdXRlZFxuICogdGhyb3VnaCBTY2hlbWFEaXNwYXRjaGVyIHdpdGhvdXQgZXh0cmFjdGluZyB0aGF0IHN0cmF0ZWd5LWJhc2VkIGRpc3BhdGNoIGxvZ2ljLlxuICpcbiAqIElzc3VlICM1OTg6IEFjdGl2YXRpb24gc3RhdGUgaXMgbm93IHBlcnNpc3RlZCBwZXItc2Vzc2lvbiB2aWEgQWN0aXZhdGlvblN0b3JlLlxuICogU2V0IERPTExIT1VTRV9TRVNTSU9OX0lEIGVudiB2YXIgdG8gaXNvbGF0ZSBhY3RpdmF0aW9uIHN0YXRlIGJldHdlZW4gc2Vzc2lvbnMuXG4gKlxuICogQHNlZSBJc3N1ZSAjNTk0IC0gRG9jdW1lbnQgYWxsIE1DUC1BUUwgb3BlcmF0aW9ucyB2aWEgc2NoZW1hXG4gKiBAc2VlIElzc3VlICM1OTggLSBQZXItc2Vzc2lvbiBhY3RpdmF0aW9uIHBlcnNpc3RlbmNlXG4gKi9cbmV4cG9ydCBjb25zdCBBQ1RJVkFUSU9OX1NDSEVNQVM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgYWN0aXZhdGVfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQWN0aXZhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdBY3RpdmF0ZSBhbiBlbGVtZW50IGZvciB1c2UgaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbi4gQWN0aXZhdGlvbiBzdGF0ZSBpcyBwZXJzaXN0ZWQgcGVyLXNlc3Npb24gKERPTExIT1VTRV9TRVNTSU9OX0lEKSBhbmQgcmVzdG9yZWQgb24gc2VydmVyIHJlc3RhcnQuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgZWxlbWVudCB0byBhY3RpdmF0ZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlOiBwZXJzb25hLCBza2lsbCwgYWdlbnQsIG1lbW9yeSwgb3IgZW5zZW1ibGUnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdBY3RpdmF0aW9uUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQWN0aXZhdGlvbiBjb25maXJtYXRpb24gd2l0aCBlbGVtZW50IGRldGFpbHMgYW5kIHJlbmRlcmVkIGNvbnRlbnQnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJhY3RpdmF0ZV9lbGVtZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImFjdGl2YXRlX2VsZW1lbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJDcmVhdGl2ZSBEZXZcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGRlYWN0aXZhdGVfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQWN0aXZhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdEZWFjdGl2YXRlIGFuIGVsZW1lbnQsIHJlbW92aW5nIGl0IGZyb20gdGhlIGN1cnJlbnQgc2Vzc2lvbi4gUGVyc2lzdGVkIGFjdGl2YXRpb24gc3RhdGUgaXMgdXBkYXRlZC4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBlbGVtZW50IHRvIGRlYWN0aXZhdGUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZTogcGVyc29uYSwgc2tpbGwsIGFnZW50LCBtZW1vcnksIG9yIGVuc2VtYmxlJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnRGVhY3RpdmF0aW9uUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRGVhY3RpdmF0aW9uIGNvbmZpcm1hdGlvbiB3aXRoIGVsZW1lbnQgbmFtZScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImRlYWN0aXZhdGVfZWxlbWVudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBnZXRfYWN0aXZlX2VsZW1lbnRzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hBY3RpdmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBhbGwgY3VycmVudGx5IGFjdGl2ZSBlbGVtZW50cyB3aXRoIHJlbmRlcmVkIGNvbnRlbnQsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgdHlwZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X3R5cGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgZWxlbWVudCB0eXBlIGZpbHRlci4gT21pdCB0byBnZXQgYWxsIGFjdGl2ZSBlbGVtZW50cyBhY3Jvc3MgYWxsIHR5cGVzLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0FjdGl2ZUVsZW1lbnRzUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQWN0aXZlIGVsZW1lbnRzIHdpdGggcmVuZGVyZWQgY29udGVudCwgZ3JvdXBlZCBieSB0eXBlIHdoZW4gdW5maWx0ZXJlZCcgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9hY3RpdmVfZWxlbWVudHNcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfYWN0aXZlX2VsZW1lbnRzXCIsIHBhcmFtczogeyBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZWFyY2ggT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBTZWFyY2ggb3BlcmF0aW9ucyBzY2hlbWEg4oCUIGludHJvc3BlY3Rpb24tb25seS5cbiAqXG4gKiBUaGVzZSBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIHZpYSBNQ1BBUUxIYW5kbGVyLmRpc3BhdGNoU2VhcmNoKCkgd2hpY2hcbiAqIHJvdXRlcyB0byBFbGVtZW50UXVlcnlTZXJ2aWNlIG1ldGhvZHMuIFRoZXkgY2Fubm90IGJlIHJvdXRlZCB0aHJvdWdoXG4gKiBTY2hlbWFEaXNwYXRjaGVyIHdpdGhvdXQgZXh0cmFjdGluZyB0aGF0IHByZS1wcm9jZXNzaW5nIGxvZ2ljLlxuICpcbiAqIEBzZWUgSXNzdWUgIzU5NSAtIE9wZXJhdGlvbiBkb2N1bWVudGF0aW9uIGNvdmVyYWdlIGdhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IFNFQVJDSF9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIHNlYXJjaF9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoU2VhcmNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Z1bGwtdGV4dCBzZWFyY2ggYWNyb3NzIGVsZW1lbnQgbmFtZXMsIGRlc2NyaXB0aW9ucywgYW5kIGNvbnRlbnQgd2l0aCBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnkgc3RyaW5nIChtYXggMTAwMCBjaGFyYWN0ZXJzKScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdPcHRpb25hbCBlbGVtZW50IHR5cGUgZmlsdGVyIChzZWFyY2hlcyBhbGwgdHlwZXMgaWYgb21pdHRlZCknIH0sXG4gICAgICBwYWdlOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ1BhZ2UgbnVtYmVyIGZvciBwYWdpbmF0aW9uICgxLWluZGV4ZWQpJyB9LFxuICAgICAgcGFnZVNpemU6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnUmVzdWx0cyBwZXIgcGFnZScgfSxcbiAgICAgIHNvcnQ6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU29ydCBvcHRpb25zOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0nIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZyB8IHN0cmluZ1tdJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaWVsZHMgdG8gaW5jbHVkZTogYXJyYXkgbGlrZSBbXCJlbGVtZW50X25hbWVcIiwgXCJkZXNjcmlwdGlvblwiXSBPUiBwcmVzZXQ6IFwibWluaW1hbFwiLCBcInN0YW5kYXJkXCIsIFwiZnVsbFwiJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdTZWFyY2hSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdTZWFyY2ggcmVzdWx0czogeyBpdGVtczogW3sgdHlwZSwgbmFtZSwgZGVzY3JpcHRpb24sIG1hdGNoZWRJbiB9XSwgcGFnaW5hdGlvbjogeyBwYWdlLCBwYWdlU2l6ZSwgdG90YWxJdGVtcywgdG90YWxQYWdlcyB9LCBzb3J0aW5nIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImFzc2lzdGFudFwiLCBwYWdlU2l6ZTogMTAgfSB9JyxcbiAgICBdLFxuICB9LFxuICBxdWVyeV9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoU2VhcmNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGVsZW1lbnRzIHdpdGggZmlsdGVycywgc29ydGluZywgcGFnaW5hdGlvbiwgYW5kIGNvdW50IGFnZ3JlZ2F0aW9uLiBSZXR1cm5zIHN0cnVjdHVyZWQgSlNPTi4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUgdG8gcXVlcnkgKHJlcXVpcmVkKScgfSxcbiAgICAgIGZpbHRlcnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIG9wdGlvbnM6IHsgbmFtZUNvbnRhaW5zLCB0YWdzLCBhdXRob3IsIHN0YXR1cywgY2F0ZWdvcnkgfScgfSxcbiAgICAgIHNvcnQ6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU29ydCBvcHRpb25zOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0nIH0sXG4gICAgICBwYWdpbmF0aW9uOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRpb246IHsgcGFnZSwgcGFnZVNpemUgfScgfSxcbiAgICAgIGFnZ3JlZ2F0ZTogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdBZ2dyZWdhdGlvbjogeyBjb3VudD86IGJvb2xlYW4sIGdyb3VwX2J5Pzogc3RyaW5nIH0uIGdyb3VwX2J5IGdyb3VwcyByZXN1bHRzIGJ5IGEgbWV0YWRhdGEgZmllbGQgYW5kIHJldHVybnMgY291bnRzIHBlciBncm91cC4gQWxsb3dlZCBncm91cF9ieSBmaWVsZHM6IGNhdGVnb3J5LCBhdXRob3IsIHRhZ3MsIHN0YXR1cywgdmVyc2lvbi4gVXNlIGdyb3VwX2J5OiBcImNhdGVnb3J5XCIgdG8gZGlzY292ZXIgZXhpc3RpbmcgY2F0ZWdvcmllcyBpbiB0aGUgcG9ydGZvbGlvLicgfSxcbiAgICAgIGZpZWxkczoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nIHwgc3RyaW5nW10nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpZWxkcyB0byBpbmNsdWRlOiBhcnJheSBsaWtlIFtcImVsZW1lbnRfbmFtZVwiLCBcImRlc2NyaXB0aW9uXCJdIE9SIHByZXNldDogXCJtaW5pbWFsXCIsIFwic3RhbmRhcmRcIiwgXCJmdWxsXCInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1F1ZXJ5UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnUXVlcnkgcmVzdWx0czogeyBpdGVtczogW3sgbmFtZSwgZGVzY3JpcHRpb24sIHR5cGUsIHZlcnNpb24sIHRhZ3MgfV0sIHBhZ2luYXRpb24sIHNvcnRpbmcsIGZpbHRlcnMgfS4gV2l0aCBhZ2dyZWdhdGU6IGFkZHMgY291bnQgKHRvdGFsKSwgZ3JvdXBzIChpZiBncm91cF9ieSB1c2VkLCBlLmcuIHsgZGV2ZWxvcG1lbnQ6IDUsIHNlY3VyaXR5OiAzIH0pLicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBmaWx0ZXJzOiB7IHRhZ3M6IFtcImFzc2lzdGFudFwiXSB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBwYWdpbmF0aW9uOiB7IHBhZ2U6IDEsIHBhZ2VTaXplOiAxMCB9LCBzb3J0OiB7IHNvcnRCeTogXCJuYW1lXCIgfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgYWdncmVnYXRlOiB7IGNvdW50OiB0cnVlLCBncm91cF9ieTogXCJjYXRlZ29yeVwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwidGVtcGxhdGVcIiwgcGFyYW1zOiB7IGZpbHRlcnM6IHsgY2F0ZWdvcnk6IFwic2VjdXJpdHlcIiB9LCBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUgfSB9IH0nLFxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBZ2dyZWdhdGVkIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNjaGVtYS1kcml2ZW4gb3BlcmF0aW9ucyDigJQgdXNlZCBieSBTY2hlbWFEaXNwYXRjaGVyIGZvciBkaXNwYXRjaC5cbiAqXG4gKiBPbmx5IG9wZXJhdGlvbnMgdGhhdCBjYW4gYmUgZnVsbHkgZGlzcGF0Y2hlZCB0aHJvdWdoIFNjaGVtYURpc3BhdGNoZXJcbiAqIGJlbG9uZyBoZXJlLiBPcGVyYXRpb25zIHdpdGggY29tcGxleCBwcmUtcHJvY2Vzc2luZyAobWVtb3J5IGxvb2t1cCxcbiAqIGFnZW50IHN0YXRlIG1hbmFnZW1lbnQsIGdhdGVrZWVwZXIgc2Vzc2lvbnMsIGxvZyB2YWxpZGF0aW9uKSBhcmUgaW5cbiAqIElOVFJPU1BFQ1RJT05fT05MWV9TQ0hFTUFTIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ0hFTUFfRFJJVkVOX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgLi4uQ09MTEVDVElPTl9PUEVSQVRJT05TLFxuICAuLi5BVVRIX09QRVJBVElPTlMsXG4gIC4uLkVOSEFOQ0VEX0lOREVYX09QRVJBVElPTlMsXG4gIC4uLlRFTVBMQVRFX09QRVJBVElPTlMsXG4gIC4uLklOVFJPU1BFQ1RJT05fT1BFUkFUSU9OUyxcbiAgLi4uUEVSU09OQV9PUEVSQVRJT05TLFxuICAuLi5DT05GSUdfT1BFUkFUSU9OUyxcbiAgLi4uUE9SVEZPTElPX09QRVJBVElPTlMsXG4gIC4uLkVMRU1FTlRfQ1JVRF9PUEVSQVRJT05TLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBJbnRyb3NwZWN0aW9uLW9ubHkgc2NoZW1hcyDigJQgbWV0YWRhdGEgZm9yIG9wZXJhdGlvbnMgZGlzcGF0Y2hlZCBieVxuICogbGVnYWN5IG1ldGhvZHMgKGRpc3BhdGNoTWVtb3J5LCBkaXNwYXRjaEV4ZWN1dGUsIGRpc3BhdGNoR2F0ZWtlZXBlcixcbiAqIGRpc3BhdGNoTG9nZ2luZykuIFRoZXNlIGFyZSBOT1QgdXNlZCBmb3IgZGlzcGF0Y2ggcm91dGluZy5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuLyoqXG4gKiBCcm93c2VyIG9wZXJhdGlvbiBzY2hlbWFzXG4gKiBAc2VlIElzc3VlICM3NzQgLSBvcGVuIHBvcnRmb2xpbyBicm93c2VyXG4gKi9cbmV4cG9ydCBjb25zdCBCUk9XU0VSX1NDSEVNQVM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgb3Blbl9wb3J0Zm9saW9fYnJvd3Nlcjoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQnJvd3NlcicsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCB0aGUgcG9ydGZvbGlvIHdlYiBVSSBhbmQgb3BlbiBpdCBpbiB0aGUgc3lzdGVtIGJyb3dzZXIuIFRoZSB3ZWIgc2VydmVyIHJ1bnMgb24gbG9jYWxob3N0OjM5MzkgYW5kIHNob3dzIGFsbCBwb3J0Zm9saW8gZWxlbWVudHMgd2l0aCBzZWFyY2gsIGZpbHRlcmluZywgYW5kIGRldGFpbCB2aWV3cy4gQWxpYXNlczogb3Blbl9jb25zb2xlLCBvcGVuX21hbmFnZW1lbnRfY29uc29sZSwgb3Blbl9kb2xsaG91c2VfbWNwLicsXG4gICAgcGFyYW1zOiB7XG4gICAgICB0YWI6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnVGFiIHRvIG9wZW4gKHBvcnRmb2xpbywgbG9ncywgbWV0cmljcywgcGVybWlzc2lvbnMsIHNldHVwKS4gRGVmYXVsdDogbGFzdC11c2VkIHRhYi4nLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0Jyb3dzZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCB0aGUgVVJMIG9mIHRoZSBvcGVuZWQgYnJvd3NlcicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcIm9wZW5fcG9ydGZvbGlvX2Jyb3dzZXJcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJvcGVuX3BvcnRmb2xpb19icm93c2VyXCIsIHBhcmFtczogeyB0YWI6IFwibG9nc1wiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgb3Blbl9sb2dzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hCcm93c2VyJyxcbiAgICBkZXNjcmlwdGlvbjogJ09wZW4gdGhlIG1hbmFnZW1lbnQgY29uc29sZSBkaXJlY3RseSBvbiB0aGUgbG9ncyB0YWIuIEFsaWFzZXM6IG9wZW5fZG9sbGhvdXNlX2xvZ3MsIG9wZW5fZG9sbGhvdXNlX21jcF9sb2dzLicsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCcm93c2VyUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlybWF0aW9uIHdpdGggdGhlIFVSTCBvZiB0aGUgb3BlbmVkIGJyb3dzZXInIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwib3Blbl9sb2dzXCIgfSddLFxuICB9LFxuICBvcGVuX21ldHJpY3M6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEJyb3dzZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnT3BlbiB0aGUgbWFuYWdlbWVudCBjb25zb2xlIGRpcmVjdGx5IG9uIHRoZSBtZXRyaWNzIHRhYi4gQWxpYXNlczogb3Blbl9kb2xsaG91c2VfbWV0cmljcywgb3Blbl9kb2xsaG91c2VfbWNwX21ldHJpY3MuJyxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0Jyb3dzZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCB0aGUgVVJMIG9mIHRoZSBvcGVuZWQgYnJvd3NlcicgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJvcGVuX21ldHJpY3NcIiB9J10sXG4gIH0sXG4gIG9wZW5fcGVybWlzc2lvbnM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEJyb3dzZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnT3BlbiB0aGUgbWFuYWdlbWVudCBjb25zb2xlIGRpcmVjdGx5IG9uIHRoZSBwZXJtaXNzaW9ucyB0YWIuIEFsaWFzZXM6IG9wZW5fZG9sbGhvdXNlX3Blcm1pc3Npb25zLicsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCcm93c2VyUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlybWF0aW9uIHdpdGggdGhlIFVSTCBvZiB0aGUgb3BlbmVkIGJyb3dzZXInIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwib3Blbl9wZXJtaXNzaW9uc1wiIH0nXSxcbiAgfSxcbiAgb3Blbl9zZXR1cDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQnJvd3NlcicsXG4gICAgZGVzY3JpcHRpb246ICdPcGVuIHRoZSBtYW5hZ2VtZW50IGNvbnNvbGUgZGlyZWN0bHkgb24gdGhlIHNldHVwL2luc3RhbGwgdGFiLiBBbGlhc2VzOiBvcGVuX2RvbGxob3VzZV9zZXR1cCwgb3Blbl9pbnN0YWxsZXIuJyxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0Jyb3dzZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCB0aGUgVVJMIG9mIHRoZSBvcGVuZWQgYnJvd3NlcicgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJvcGVuX3NldHVwXCIgfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElOVFJPU1BFQ1RJT05fT05MWV9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIC4uLk1FTU9SWV9TQ0hFTUFTLFxuICAuLi5FWEVDVVRJT05fU0NIRU1BUyxcbiAgLi4uR0FURUtFRVBFUl9TQ0hFTUFTLFxuICAuLi5MT0dHSU5HX1NDSEVNQVMsXG4gIC4uLk1FVFJJQ1NfU0NIRU1BUyxcbiAgLi4uQUNUSVZBVElPTl9TQ0hFTUFTLFxuICAuLi5TRUFSQ0hfU0NIRU1BUyxcbiAgLi4uQlJPV1NFUl9TQ0hFTUFTLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBBbGwgb3BlcmF0aW9uIHNjaGVtYXMg4oCUIHVuaW9uIG9mIGRpc3BhdGNoLWRyaXZlbiBhbmQgaW50cm9zcGVjdGlvbi1vbmx5LlxuICogVXNlZCBieSBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgZm9yIGNvbXBsZXRlIG9wZXJhdGlvbiBkb2N1bWVudGF0aW9uLlxuICpcbiAqIEBzZWUgSXNzdWUgIzU5NCAtIERvY3VtZW50IGFsbCBNQ1AtQVFMIG9wZXJhdGlvbnMgdmlhIHNjaGVtYVxuICovXG5leHBvcnQgY29uc3QgQUxMX09QRVJBVElPTl9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIC4uLlNDSEVNQV9EUklWRU5fT1BFUkFUSU9OUyxcbiAgLi4uSU5UUk9TUEVDVElPTl9PTkxZX1NDSEVNQVMsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIENoZWNrIGlmIGFuIG9wZXJhdGlvbiBpcyBzY2hlbWEtZHJpdmVuICh1c2VkIGZvciBTY2hlbWFEaXNwYXRjaGVyIHJvdXRpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NjaGVtYU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gb3BlcmF0aW9uIGluIFNDSEVNQV9EUklWRU5fT1BFUkFUSU9OUztcbn1cblxuLyoqXG4gKiBHZXQgc2NoZW1hIGRlZmluaXRpb24gZm9yIGEgc2NoZW1hLWRyaXZlbiBvcGVyYXRpb24gKGRpc3BhdGNoIHJvdXRpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25TY2hlbWEob3BlcmF0aW9uOiBzdHJpbmcpOiBPcGVyYXRpb25EZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gU0NIRU1BX0RSSVZFTl9PUEVSQVRJT05TW29wZXJhdGlvbl07XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYW55IG9wZXJhdGlvbiBzY2hlbWEgZXhpc3RzIChkaXNwYXRjaC1kcml2ZW4gb3IgaW50cm9zcGVjdGlvbi1vbmx5KVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3BlcmF0aW9uU2NoZW1hKG9wZXJhdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBvcGVyYXRpb24gaW4gQUxMX09QRVJBVElPTl9TQ0hFTUFTO1xufVxuXG4vKipcbiAqIEdldCBzY2hlbWEgZm9yIGFueSBvcGVyYXRpb24gKGRpc3BhdGNoLWRyaXZlbiBvciBpbnRyb3NwZWN0aW9uLW9ubHkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbnlPcGVyYXRpb25TY2hlbWEob3BlcmF0aW9uOiBzdHJpbmcpOiBPcGVyYXRpb25EZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gQUxMX09QRVJBVElPTl9TQ0hFTUFTW29wZXJhdGlvbl07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludHJvc3BlY3Rpb24gSGVscGVycyAoSXNzdWUgIzI1NClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJhbWV0ZXIgaW5mbyBmb3JtYXQgdXNlZCBieSBJbnRyb3NwZWN0aW9uUmVzb2x2ZXJcbiAqIFRoaXMgaW50ZXJmYWNlIG1hdGNoZXMgd2hhdCBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgZXhwZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIENvbnZlcnQgUGFyYW1TY2hlbWEgdG8gUGFyYW1ldGVySW5mbyBhcnJheSBmb3IgaW50cm9zcGVjdGlvblxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgUGFyYW1TY2hlbWEgZnJvbSBhbiBvcGVyYXRpb24gZGVmaW5pdGlvblxuICogQHJldHVybnMgQXJyYXkgb2YgUGFyYW1ldGVySW5mbyBmb3IgSW50cm9zcGVjdGlvblJlc29sdmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFUb1BhcmFtZXRlckluZm8oc2NoZW1hOiBQYXJhbVNjaGVtYSB8IHVuZGVmaW5lZCk6IFBhcmFtZXRlckluZm9bXSB7XG4gIGlmICghc2NoZW1hKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNjaGVtYSkubWFwKChbbmFtZSwgZGVmXSkgPT4gKHtcbiAgICBuYW1lLFxuICAgIHR5cGU6IGRlZi50eXBlLFxuICAgIHJlcXVpcmVkOiBkZWYucmVxdWlyZWQgPz8gZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbiA/PyBgJHtuYW1lfSBwYXJhbWV0ZXJgLFxuICAgIC4uLihkZWYuZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8geyBkZWZhdWx0OiBkZWYuZGVmYXVsdCB9IDoge30pLFxuICB9KSk7XG59XG5cbi8qKlxuICogR2V0IGFsbCBzY2hlbWEtZHJpdmVuIG9wZXJhdGlvbnMgd2l0aCB0aGVpciBmdWxsIGRlZmluaXRpb25zXG4gKiBVc2VkIGJ5IFNjaGVtYURpc3BhdGNoZXIgdG8gaXRlcmF0ZSBvdmVyIGRpc3BhdGNoYWJsZSBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxTY2hlbWFPcGVyYXRpb25zKCk6IFJlY29yZDxzdHJpbmcsIE9wZXJhdGlvbkRlZj4ge1xuICByZXR1cm4gU0NIRU1BX0RSSVZFTl9PUEVSQVRJT05TO1xufVxuXG4vKipcbiAqIEdldCBhbGwgb3BlcmF0aW9uIHNjaGVtYXMgKGRpc3BhdGNoLWRyaXZlbiArIGludHJvc3BlY3Rpb24tb25seSlcbiAqIFVzZWQgYnkgSW50cm9zcGVjdGlvblJlc29sdmVyIGZvciBjb21wbGV0ZSBvcGVyYXRpb24gZG9jdW1lbnRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsT3BlcmF0aW9uU2NoZW1hcygpOiBSZWNvcmQ8c3RyaW5nLCBPcGVyYXRpb25EZWY+IHtcbiAgcmV0dXJuIEFMTF9PUEVSQVRJT05fU0NIRU1BUztcbn1cbiJdfQ==
|
|
1699
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvT3BlcmF0aW9uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUErS0gsK0VBQStFO0FBQy9FLGtEQUFrRDtBQUNsRCwrRUFBK0U7QUFFL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXVCO0lBQ3ZELGlCQUFpQixFQUFFO1FBQ2pCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFdBQVcsRUFBRSxrRUFBa0U7UUFDL0UsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRTtZQUN4RSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRTtTQUM3RDtRQUNELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSwwQ0FBMEMsRUFBRTtRQUNwSCxRQUFRLEVBQUUsQ0FBQyxxRUFBcUUsQ0FBQztLQUNsRjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFdBQVcsRUFBRSwwREFBMEQ7UUFDdkUsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFB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O0FBQ2xDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8scUJBQXFCLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3BlcmF0aW9uU2NoZW1hIC0gRGVjbGFyYXRpdmUgb3BlcmF0aW9uIGRlZmluaXRpb25zIGZvciBNQ1AtQVFMXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgc2NoZW1hLWRyaXZlbiBvcGVyYXRpb24gZGVmaW5pdGlvbnMgdGhhdCBlbmFibGU6XG4gKiAxLiBEZWNsYXJhdGl2ZSBvcGVyYXRpb24gY29uZmlndXJhdGlvbiAobm8gbWFudWFsIHN3aXRjaCBzdGF0ZW1lbnRzKVxuICogMi4gQXV0by1nZW5lcmF0ZWQgcGFyYW1ldGVyIHZhbGlkYXRpb25cbiAqIDMuIFR5cGUtc2FmZSBkaXNwYXRjaCB0byBoYW5kbGVyIG1ldGhvZHNcbiAqIDQuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIG9wZXJhdGlvbiBtZXRhZGF0YVxuICpcbiAqIEFSQ0hJVEVDVFVSRTpcbiAqIE9wZXJhdGlvbnMgYXJlIGRlZmluZWQgd2l0aDpcbiAqIC0gZW5kcG9pbnQ6IENSVURFIGVuZHBvaW50IChDUkVBVEUsIFJFQUQsIFVQREFURSwgREVMRVRFLCBFWEVDVVRFKVxuICogLSBoYW5kbGVyOiBLZXkgaW4gSGFuZGxlclJlZ2lzdHJ5XG4gKiAtIG1ldGhvZDogTWV0aG9kIG5hbWUgb24gdGhlIGhhbmRsZXJcbiAqIC0gcGFyYW1zOiBQYXJhbWV0ZXIgZGVmaW5pdGlvbnMgd2l0aCB0eXBlcyBhbmQgbWFwcGluZ3NcbiAqIC0gZGVzY3JpcHRpb246IEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uXG4gKlxuICogVGhlIFNjaGVtYURpc3BhdGNoZXIgdXNlcyB0aGVzZSBkZWZpbml0aW9ucyB0byBhdXRvbWF0aWNhbGx5IHJvdXRlXG4gKiBvcGVyYXRpb25zIHRvIGhhbmRsZXIgbWV0aG9kcyB3aXRob3V0IG1hbnVhbCBkaXNwYXRjaCBjb2RlLlxuICpcbiAqIEBzZWUgSXNzdWUgIzI0NyAtIFNjaGVtYS1kcml2ZW4gb3BlcmF0aW9uIGRlZmluaXRpb25zXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDUlVERW5kcG9pbnQgfSBmcm9tICcuL09wZXJhdGlvblJvdXRlci5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhcmFtZXRlciBTY2hlbWEgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQcmltaXRpdmUgdHlwZXMgc3VwcG9ydGVkIGluIHBhcmFtZXRlciBzY2hlbWFzXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmFtVHlwZSA9XG4gIHwgJ3N0cmluZydcbiAgfCAnbnVtYmVyJ1xuICB8ICdib29sZWFuJ1xuICB8ICdvYmplY3QnXG4gIHwgJ2FycmF5J1xuICB8ICdzdHJpbmdbXSdcbiAgfCAnc3RyaW5nIHwgc3RyaW5nW10nIC8vIFVuaW9uIHR5cGUgZm9yIGZpZWxkcyB0aGF0IGFjY2VwdCBwcmVzZXQgc3RyaW5nIG9yIGFycmF5XG4gIHwgJ3Vua25vd24nOyAvLyBGb3IgcGFyYW1zIHRoYXQgYWNjZXB0IGFueSB0eXBlXG5cbi8qKlxuICogUGFyYW1ldGVyIGRlZmluaXRpb24gaW4gb3BlcmF0aW9uIHNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtRGVmIHtcbiAgLyoqIFBhcmFtZXRlciB0eXBlIGZvciB2YWxpZGF0aW9uICovXG4gIHR5cGU6IFBhcmFtVHlwZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhcmFtZXRlciBpcyByZXF1aXJlZCAoZGVmYXVsdDogZmFsc2UpICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIERlZmF1bHQgdmFsdWUgaWYgbm90IHByb3ZpZGVkICovXG4gIGRlZmF1bHQ/OiB1bmtub3duO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBNYXBzIGlucHV0IHBhcmFtIG5hbWUgdG8gaGFuZGxlciBhcmcgbmFtZSAoaWYgZGlmZmVyZW50KSAqL1xuICBtYXBUbz86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsdGVybmF0aXZlIHNvdXJjZXMgdG8gY2hlY2sgZm9yIHRoaXMgcGFyYW1ldGVyIHZhbHVlLlxuICAgKiBDaGVja2VkIGluIG9yZGVyIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gdGhlIHByaW1hcnkgcGFyYW0gbmFtZS5cbiAgICpcbiAgICogU3VwcG9ydHMgZG90IG5vdGF0aW9uIGZvciBuZXN0ZWQgYWNjZXNzOlxuICAgKiAtICdpbnB1dC5lbGVtZW50VHlwZScgLSBjaGVja3MgaW5wdXQuZWxlbWVudFR5cGVcbiAgICogLSAncGFyYW1zLnR5cGUnIC0gY2hlY2tzIHBhcmFtcy50eXBlIChzYW1lIGFzIGp1c3QgY2hlY2tpbmcgdGhlIHBhcmFtKVxuICAgKlxuICAgKiBVc2UgY2FzZTogZWxlbWVudFR5cGUgY2FuIGNvbWUgZnJvbSBpbnB1dC5lbGVtZW50VHlwZSBPUiBwYXJhbXMudHlwZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy50eXBlJ10gfVxuICAgKi9cbiAgc291cmNlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJldHVybiB0eXBlIGRlZmluaXRpb24gZm9yIGludHJvc3BlY3Rpb25cbiAqIEBzZWUgSXNzdWUgIzI1NCAtIEF1dG8tZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBmcm9tIHNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHVyblR5cGVEZWYge1xuICAvKiogUmV0dXJuIHR5cGUgbmFtZSAoZS5nLiwgJ0VsZW1lbnRMaXN0JywgJ1NlYXJjaFJlc3VsdCcpICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFR5cGUga2luZCBmb3IgY2F0ZWdvcml6YXRpb24gKi9cbiAga2luZDogJ2VudW0nIHwgJ29iamVjdCcgfCAnc2NhbGFyJyB8ICd1bmlvbic7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB3aGF0IGlzIHJldHVybmVkICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVyIHNjaGVtYSAtIG1hcCBvZiBwYXJhbWV0ZXIgbmFtZXMgdG8gZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgUGFyYW1TY2hlbWEgPSBSZWNvcmQ8c3RyaW5nLCBQYXJhbURlZj47XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9wZXJhdGlvbiBTY2hlbWEgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBIYW5kbGVyIGtleXMgLSB0aGVzZSBtYXAgdG8gcHJvcGVydGllcyBpbiBIYW5kbGVyUmVnaXN0cnlcbiAqL1xuZXhwb3J0IHR5cGUgSGFuZGxlcktleSA9XG4gIHwgJ2VsZW1lbnRDUlVEJ1xuICB8ICdtZW1vcnlNYW5hZ2VyJ1xuICB8ICdhZ2VudE1hbmFnZXInXG4gIHwgJ3RlbXBsYXRlUmVuZGVyZXInXG4gIHwgJ2VsZW1lbnRRdWVyeVNlcnZpY2UnXG4gIHwgJ2NvbGxlY3Rpb25IYW5kbGVyJ1xuICB8ICdwb3J0Zm9saW9IYW5kbGVyJ1xuICB8ICdhdXRoSGFuZGxlcidcbiAgfCAnY29uZmlnSGFuZGxlcidcbiAgfCAnZW5oYW5jZWRJbmRleEhhbmRsZXInXG4gIHwgJ3BlcnNvbmFIYW5kbGVyJ1xuICB8ICdzeW5jSGFuZGxlcidcbiAgfCAnYnVpbGRJbmZvU2VydmljZSdcbiAgfCAnbWNwQXFsSGFuZGxlcidcbiAgfCAnY2FjaGVNZW1vcnlCdWRnZXQnO1xuXG4vKipcbiAqIENvbXBsZXRlIG9wZXJhdGlvbiBzY2hlbWEgZGVmaW5pdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvbkRlZiB7XG4gIC8qKiBDUlVERSBlbmRwb2ludCB0aGlzIG9wZXJhdGlvbiBiZWxvbmdzIHRvICovXG4gIGVuZHBvaW50OiBDUlVERW5kcG9pbnQ7XG4gIC8qKiBIYW5kbGVyIGtleSBpbiBIYW5kbGVyUmVnaXN0cnkgKi9cbiAgaGFuZGxlcjogSGFuZGxlcktleTtcbiAgLyoqIE1ldGhvZCBuYW1lIHRvIGNhbGwgb24gdGhlIGhhbmRsZXIgKi9cbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXIgZGVmaW5pdGlvbnMgKi9cbiAgcGFyYW1zPzogUGFyYW1TY2hlbWE7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgaGFuZGxlciBpcyBvcHRpb25hbCAobWF5IG5vdCBiZSBjb25maWd1cmVkKSAqL1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gYXJndW1lbnQgYnVpbGRlciBmb3IgY29tcGxleCBjYXNlczpcbiAgICogLSAnc2luZ2xlJzogUGFzcyBwYXJhbXMgaW4gc2NoZW1hIG9yZGVyIGFzIHBvc2l0aW9uYWwgYXJncyAoZGVmYXVsdClcbiAgICogLSAnc3ByZWFkJzogUGFzcyAocXVlcnksIHBhcmFtcykgLSBmb3Igc2VhcmNoLXN0eWxlIG9wZXJhdGlvbnNcbiAgICogLSAnbmFtZWQnOiBQYXNzIGFsbCBwYXJhbXMgYXMgYSBzaW5nbGUgbmFtZWQgb2JqZWN0XG4gICAqIC0gJ25hbWVkV2l0aFR5cGUnOiBMaWtlICduYW1lZCcgYnV0IGluY2x1ZGVzIHJlc29sdmVkICd0eXBlJyBwYXJhbVxuICAgKiAtICd0eXBlV2l0aFBhcmFtcyc6IFBhc3MgKHR5cGUsIGZ1bGxQYXJhbXMpIGZvciBvcGVyYXRpb25zIG5lZWRpbmcgdHlwZSArIHBhZ2luYXRpb25cbiAgICovXG4gIGFyZ0J1aWxkZXI/OiAnc2luZ2xlJyB8ICdzcHJlYWQnIHwgJ25hbWVkJyB8ICduYW1lZFdpdGhUeXBlJyB8ICd0eXBlV2l0aFBhcmFtcyc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgb3BlcmF0aW9uIG5lZWRzIGFjY2VzcyB0byB0aGUgZnVsbCBPcGVyYXRpb25JbnB1dC5cbiAgICogV2hlbiB0cnVlLCBTY2hlbWFEaXNwYXRjaGVyIHBhc3NlcyB0aGUgZnVsbCBpbnB1dCBmb3Igc291cmNlIHJlc29sdXRpb24uXG4gICAqIFJlcXVpcmVkIGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIHBhcmFtIHNvdXJjZXMgbGlrZSAnaW5wdXQuZWxlbWVudFR5cGUnLlxuICAgKi9cbiAgbmVlZHNGdWxsSW5wdXQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljIHBhcmFtZXRlciBuYW1lIGNvbnZlcnNpb24gc3R5bGUuXG4gICAqIC0gJ3NuYWtlVG9DYW1lbCc6IENvbnZlcnQgc25ha2VfY2FzZSBwYXJhbXMgdG8gY2FtZWxDYXNlIGZvciBoYW5kbGVyXG4gICAqXG4gICAqIFdoZW4gc2V0LCBhbGwgcGFyYW1zIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCBiZWZvcmUgYmVpbmcgcGFzc2VkXG4gICAqIHRvIHRoZSBoYW5kbGVyLiBJbmRpdmlkdWFsIHBhcmFtIGBtYXBUb2Agb3ZlcnJpZGVzIHN0aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gSW5wdXQ6IHsgZHJ5X3J1bjogdHJ1ZSwgbWF4X3Jlc3VsdHM6IDEwIH1cbiAgICogLy8gSGFuZGxlciByZWNlaXZlczogeyBkcnlSdW46IHRydWUsIG1heFJlc3VsdHM6IDEwIH1cbiAgICovXG4gIHBhcmFtU3R5bGU/OiAnc25ha2VUb0NhbWVsJztcbiAgLyoqXG4gICAqIENhcGFiaWxpdHkgY2F0ZWdvcnkgZm9yIGdldF9jYXBhYmlsaXRpZXMgZ3JvdXBpbmcuXG4gICAqIE9wZXJhdGlvbnMgYXJlIGdyb3VwZWQgYnkgdXNlci1pbnRlbnQgY2F0ZWdvcmllcyBpbiB0aGUgY2FwYWJpbGl0aWVzIG1hcC5cbiAgICogT3BlcmF0aW9ucyB3aXRob3V0IGEgY2F0ZWdvcnkgYXBwZWFyIHVuZGVyIFwiT3RoZXJcIi5cbiAgICogQHNlZSBJc3N1ZSAjMTc2MCAtIGdldF9jYXBhYmlsaXRpZXMgb3BlcmF0aW9uXG4gICAqL1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFJldHVybiB0eXBlIGluZm9ybWF0aW9uIGZvciBpbnRyb3NwZWN0aW9uXG4gICAqIEBzZWUgSXNzdWUgIzI1NCAtIEF1dG8tZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBmcm9tIHNjaGVtYVxuICAgKi9cbiAgcmV0dXJucz86IFJldHVyblR5cGVEZWY7XG4gIC8qKlxuICAgKiBVc2FnZSBleGFtcGxlcyBmb3IgaW50cm9zcGVjdGlvblxuICAgKiBAc2VlIElzc3VlICMyNTQgLSBBdXRvLWdlbmVyYXRlIGludHJvc3BlY3Rpb24gZnJvbSBzY2hlbWFcbiAgICovXG4gIGV4YW1wbGVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOb3JtYWxpemVyIHRvIHVzZSBmb3IgcGFyYW1ldGVyIHRyYW5zZm9ybWF0aW9uLlxuICAgKlxuICAgKiBJZiBzcGVjaWZpZWQsIHRoZSBub3JtYWxpemVyIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGhhbmRsZXIgbWV0aG9kLFxuICAgKiB0cmFuc2Zvcm1pbmcgcmF3IGlucHV0IHBhcmFtZXRlcnMgaW50byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IHRoZSBoYW5kbGVyLlxuICAgKlxuICAgKiBOb3JtYWxpemVycyBhcmUgcmVnaXN0ZXJlZCBpbiBOb3JtYWxpemVyUmVnaXN0cnkgYW5kIGxvb2tlZCB1cCBieSBuYW1lLlxuICAgKlxuICAgKiBAc2VlIElzc3VlICMyNDMgLSBTY2hlbWEtZHJpdmVuIG5vcm1hbGl6ZXIgYXJjaGl0ZWN0dXJlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFVzZSB0aGUgc2VhcmNoIHBhcmFtcyBub3JtYWxpemVyXG4gICAqIG5vcm1hbGl6ZXI6ICdzZWFyY2hQYXJhbXMnXG4gICAqL1xuICBub3JtYWxpemVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIG9wZXJhdGlvbiBzY2hlbWEgLSBtYXBzIG9wZXJhdGlvbiBuYW1lcyB0byBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgdHlwZSBPcGVyYXRpb25TY2hlbWFNYXAgPSBSZWNvcmQ8c3RyaW5nLCBPcGVyYXRpb25EZWY+O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb2xsZWN0aW9uIE9wZXJhdGlvbnMgU2NoZW1hIChQcm9vZiBvZiBDb25jZXB0KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbGxlY3Rpb24gb3BlcmF0aW9ucyBzY2hlbWFcbiAqXG4gKiBUaGVzZSBhcmUgdGhlIGZpcnN0IG9wZXJhdGlvbnMgbWlncmF0ZWQgdG8gc2NoZW1hLWRyaXZlbiBkaXNwYXRjaC5cbiAqIEVhY2ggb3BlcmF0aW9uIGRlZmluZXM6XG4gKiAtIFdoZXJlIGl0IGxpdmVzIChlbmRwb2ludClcbiAqIC0gV2hhdCBoYW5kbGVyIHRvIHVzZVxuICogLSBXaGF0IG1ldGhvZCB0byBjYWxsXG4gKiAtIFdoYXQgcGFyYW1ldGVycyBpdCBhY2NlcHRzXG4gKi9cbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgYnJvd3NlX2NvbGxlY3Rpb246IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb2xsZWN0aW9uSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnYnJvd3NlQ29sbGVjdGlvbicsXG4gICAgY2F0ZWdvcnk6ICdDb21tdW5pdHkgQ29sbGVjdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdCcm93c2UgdGhlIERvbGxob3VzZU1DUCBjb21tdW5pdHkgY29sbGVjdGlvbiBieSBzZWN0aW9uIGFuZCB0eXBlJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHNlY3Rpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQ29sbGVjdGlvbiBzZWN0aW9uIHRvIGJyb3dzZScgfSxcbiAgICAgIHR5cGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlIGZpbHRlcicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NvbGxlY3Rpb25Ccm93c2VSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdCcm93c2VhYmxlIGNvbGxlY3Rpb24gc2VjdGlvbnMgYW5kIGl0ZW1zJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImJyb3dzZV9jb2xsZWN0aW9uXCIsIHBhcmFtczogeyBzZWN0aW9uOiBcInBlcnNvbmFzXCIgfSB9J10sXG4gIH0sXG4gIHNlYXJjaF9jb2xsZWN0aW9uOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaENvbGxlY3Rpb24nLFxuICAgIGNhdGVnb3J5OiAnQ29tbXVuaXR5IENvbGxlY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHRoZSBjb21tdW5pdHkgY29sbGVjdGlvbiBmb3IgZWxlbWVudHMgYnkga2V5d29yZHMnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgcXVlcnk6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBxdWVyeScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NvbGxlY3Rpb25TZWFyY2hSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdNYXRjaGluZyBlbGVtZW50cyBmcm9tIGNvbGxlY3Rpb24nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic2VhcmNoX2NvbGxlY3Rpb25cIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNvZGUgcmV2aWV3XCIgfSB9J10sXG4gIH0sXG4gIHNlYXJjaF9jb2xsZWN0aW9uX2VuaGFuY2VkOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaENvbGxlY3Rpb25FbmhhbmNlZCcsXG4gICAgY2F0ZWdvcnk6ICdDb21tdW5pdHkgQ29sbGVjdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdBZHZhbmNlZCBzZWFyY2ggd2l0aCBwYWdpbmF0aW9uLCBmaWx0ZXJpbmcsIGFuZCBzb3J0aW5nJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnc3ByZWFkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbmhhbmNlZFNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRlZCBzZWFyY2ggcmVzdWx0cyB3aXRoIG1ldGFkYXRhJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcInNlYXJjaF9jb2xsZWN0aW9uX2VuaGFuY2VkXCIsIHBhcmFtczogeyBxdWVyeTogXCJhc3Npc3RhbnRcIiwgbGltaXQ6IDEwIH0gfSddLFxuICB9LFxuICBnZXRfY29sbGVjdGlvbl9jb250ZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2dldENvbGxlY3Rpb25Db250ZW50JyxcbiAgICBjYXRlZ29yeTogJ0NvbW11bml0eSBDb2xsZWN0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBjb250ZW50IGZyb20gdGhlIGNvbGxlY3Rpb24nLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQ29udGVudCBwYXRoIGluIGNvbGxlY3Rpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDb2xsZWN0aW9uQ29udGVudCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0Z1bGwgY29udGVudCBhbmQgbWV0YWRhdGEgZm9yIGNvbGxlY3Rpb24gaXRlbScgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jb250ZW50XCIsIHBhcmFtczogeyBwYXRoOiBcInBlcnNvbmFzL2NyZWF0aXZlLXdyaXRlci5tZFwiIH0gfSddLFxuICB9LFxuICBnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGg6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb2xsZWN0aW9uSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZ2V0Q29sbGVjdGlvbkNhY2hlSGVhbHRoJyxcbiAgICBjYXRlZ29yeTogJ0NvbW11bml0eSBDb2xsZWN0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBoZWFsdGggc3RhdHVzIGFuZCBzdGF0aXN0aWNzIGZvciB0aGUgY29sbGVjdGlvbiBjYWNoZScsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDYWNoZUhlYWx0aFN0YXR1cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0NhY2hlIGhlYWx0aCBtZXRyaWNzIGFuZCBkaWFnbm9zdGljcycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIiB9J10sXG4gIH0sXG4gIGluc3RhbGxfY29sbGVjdGlvbl9jb250ZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdjb2xsZWN0aW9uSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnaW5zdGFsbENvbnRlbnQnLFxuICAgIGNhdGVnb3J5OiAnQ29tbXVuaXR5IENvbGxlY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBhbiBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdG8geW91ciBsb2NhbCBwb3J0Zm9saW8nLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQ29udGVudCBwYXRoIHRvIGluc3RhbGwnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdJbnN0YWxsUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnSW5zdGFsbGF0aW9uIHJlc3VsdCB3aXRoIGVsZW1lbnQgbmFtZSwgdHlwZSwgYW5kIGxvY2FsIGZpbGUgcGF0aCcgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgcGF0aDogXCJwZXJzb25hcy9jcmVhdGl2ZS13cml0ZXIubWRcIiB9IH0nXSxcbiAgfSxcbiAgc3VibWl0X2NvbGxlY3Rpb25fY29udGVudDoge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAnY29sbGVjdGlvbkhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3N1Ym1pdENvbnRlbnQnLFxuICAgIGNhdGVnb3J5OiAnQ29tbXVuaXR5IENvbGxlY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnU3VibWl0IGEgbG9jYWwgZWxlbWVudCB0byB0aGUgY29tbXVuaXR5IGNvbGxlY3Rpb24gdmlhIEdpdEh1YicsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7XG4gICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdDb250ZW50IHRvIHN1Ym1pdCcgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1N1Ym1pdFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gcmVzdWx0IHdpdGggR2l0SHViIFBSIFVSTCBhbmQgc3RhdHVzIG1lc3NhZ2UnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgY29udGVudDogXCJwZXJzb25hcy9teS1wZXJzb25hXCIgfSB9J10sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBdXRoIE9wZXJhdGlvbnMgU2NoZW1hXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBBVVRIX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgc2V0dXBfZ2l0aHViX2F1dGg6IHtcbiAgICBlbmRwb2ludDogJ0NSRUFURScsXG4gICAgaGFuZGxlcjogJ2F1dGhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdzZXR1cEdpdEh1YkF1dGgnLFxuICAgIGNhdGVnb3J5OiAnR2l0SHViIEF1dGhlbnRpY2F0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NldCB1cCBHaXRIdWIgYXV0aGVudGljYXRpb24gdXNpbmcgZGV2aWNlIGZsb3cnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge30sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQXV0aFNldHVwUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRGV2aWNlIGZsb3cgc2V0dXA6IHsgdXNlckNvZGUsIHZlcmlmaWNhdGlvblVybCwgZXhwaXJlc0luLCBtZXNzYWdlIH0nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic2V0dXBfZ2l0aHViX2F1dGhcIiB9J10sXG4gIH0sXG4gIGNoZWNrX2dpdGh1Yl9hdXRoOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnYXV0aEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2NoZWNrR2l0SHViQXV0aCcsXG4gICAgY2F0ZWdvcnk6ICdHaXRIdWIgQXV0aGVudGljYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2hlY2sgY3VycmVudCBHaXRIdWIgYXV0aGVudGljYXRpb24gc3RhdHVzJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0F1dGhTdGF0dXMnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDdXJyZW50IGF1dGhlbnRpY2F0aW9uIHN0YXRlIGFuZCB1c2VyIGluZm8nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwiY2hlY2tfZ2l0aHViX2F1dGhcIiB9J10sXG4gIH0sXG4gIGNsZWFyX2dpdGh1Yl9hdXRoOiB7XG4gICAgZW5kcG9pbnQ6ICdERUxFVEUnLFxuICAgIGhhbmRsZXI6ICdhdXRoSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnY2xlYXJHaXRIdWJBdXRoJyxcbiAgICBjYXRlZ29yeTogJ0dpdEh1YiBBdXRoZW50aWNhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdSZW1vdmUgR2l0SHViIGF1dGhlbnRpY2F0aW9uIGFuZCBkaXNjb25uZWN0JyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ09wZXJhdGlvblJlc3VsdCcsIGtpbmQ6ICd1bmlvbicsIGRlc2NyaXB0aW9uOiAnU3VjY2VzcyBvciBmYWlsdXJlIHN0YXR1cycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJjbGVhcl9naXRodWJfYXV0aFwiIH0nXSxcbiAgfSxcbiAgY29uZmlndXJlX29hdXRoOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdhdXRoSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnY29uZmlndXJlT0F1dGgnLFxuICAgIGNhdGVnb3J5OiAnR2l0SHViIEF1dGhlbnRpY2F0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpZ3VyZSBHaXRIdWIgT0F1dGggY2xpZW50IElEJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGNsaWVudF9pZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdPQXV0aCBjbGllbnQgSUQnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdPQXV0aENvbmZpZycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ09BdXRoIGNvbmZpZ3VyYXRpb24gc3RhdHVzJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImNvbmZpZ3VyZV9vYXV0aFwiLCBwYXJhbXM6IHsgY2xpZW50X2lkOiBcInlvdXItY2xpZW50LWlkXCIgfSB9J10sXG4gIH0sXG4gIG9hdXRoX2hlbHBlcl9zdGF0dXM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdhdXRoSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZ2V0T0F1dGhIZWxwZXJTdGF0dXMnLFxuICAgIGNhdGVnb3J5OiAnR2l0SHViIEF1dGhlbnRpY2F0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGFib3V0IE9BdXRoIGhlbHBlciBwcm9jZXNzJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHZlcmJvc2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ0luY2x1ZGUgdmVyYm9zZSBkaWFnbm9zdGljcycgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ09BdXRoSGVscGVyU3RhdHVzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnSGVscGVyIHByb2Nlc3MgZGlhZ25vc3RpY3MnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwib2F1dGhfaGVscGVyX3N0YXR1c1wiLCBwYXJhbXM6IHsgdmVyYm9zZTogdHJ1ZSB9IH0nXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuaGFuY2VkIEluZGV4IE9wZXJhdGlvbnMgU2NoZW1hXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBFTkhBTkNFRF9JTkRFWF9PUEVSQVRJT05TOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGZpbmRfc2ltaWxhcl9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VuaGFuY2VkSW5kZXhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdmaW5kU2ltaWxhckVsZW1lbnRzJyxcbiAgICBjYXRlZ29yeTogJ0ludGVsbGlnZW5jZScsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIHNlbWFudGljYWxseSBzaW1pbGFyIGVsZW1lbnRzIHVzaW5nIE5MUCBzY29yaW5nJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgbWFwVG86ICdlbGVtZW50VHlwZScgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAxMCB9LFxuICAgICAgdGhyZXNob2xkOiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAwLjUgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1NpbWlsYXJFbGVtZW50cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0xpc3Qgb2Ygc2ltaWxhciBlbGVtZW50cyB3aXRoIHNpbWlsYXJpdHkgc2NvcmVzJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImZpbmRfc2ltaWxhcl9lbGVtZW50c1wiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNyZWF0aXZlLXdyaXRlclwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBsaW1pdDogNSB9IH0nXSxcbiAgfSxcbiAgZ2V0X2VsZW1lbnRfcmVsYXRpb25zaGlwczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VuaGFuY2VkSW5kZXhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdnZXRFbGVtZW50UmVsYXRpb25zaGlwcycsXG4gICAgY2F0ZWdvcnk6ICdJbnRlbGxpZ2VuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGFsbCByZWxhdGlvbnNoaXBzIGZvciBhIHNwZWNpZmljIGVsZW1lbnQnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ2VsZW1lbnROYW1lJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBtYXBUbzogJ2VsZW1lbnRUeXBlJyB9LFxuICAgICAgcmVsYXRpb25zaGlwX3R5cGVzOiB7IHR5cGU6ICdzdHJpbmdbXScsIG1hcFRvOiAncmVsYXRpb25zaGlwVHlwZXMnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50UmVsYXRpb25zaGlwcycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1JlbGF0aW9uc2hpcCBncmFwaCBmb3IgdGhlIGVsZW1lbnQnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRfcmVsYXRpb25zaGlwc1wiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIgfSB9J10sXG4gIH0sXG4gIHNlYXJjaF9ieV92ZXJiOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnZW5oYW5jZWRJbmRleEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaEJ5VmVyYicsXG4gICAgY2F0ZWdvcnk6ICdJbnRlbGxpZ2VuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGZvciBlbGVtZW50cyB0aGF0IGhhbmRsZSBhIHNwZWNpZmljIGFjdGlvbiB2ZXJiJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtczoge1xuICAgICAgdmVyYjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAyMCB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVmVyYlNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnRzIG1hdGNoaW5nIHRoZSBhY3Rpb24gdmVyYicgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJzZWFyY2hfYnlfdmVyYlwiLCBwYXJhbXM6IHsgdmVyYjogXCJhbmFseXplXCIsIGxpbWl0OiAxMCB9IH0nXSxcbiAgfSxcbiAgZ2V0X3JlbGF0aW9uc2hpcF9zdGF0czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VuaGFuY2VkSW5kZXhIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdnZXRSZWxhdGlvbnNoaXBTdGF0cycsXG4gICAgY2F0ZWdvcnk6ICdJbnRlbGxpZ2VuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IHN0YXRpc3RpY3MgYWJvdXQgRW5oYW5jZWQgSW5kZXggcmVsYXRpb25zaGlwcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdSZWxhdGlvbnNoaXBTdGF0cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FnZ3JlZ2F0ZSBzdGF0aXN0aWNzIGFib3V0IGVsZW1lbnQgcmVsYXRpb25zaGlwcycgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJnZXRfcmVsYXRpb25zaGlwX3N0YXRzXCIgfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGVtcGxhdGUgT3BlcmF0aW9ucyBTY2hlbWFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IFRFTVBMQVRFX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgcmVuZGVyOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAndGVtcGxhdGVSZW5kZXJlcicsXG4gICAgbWV0aG9kOiAncmVuZGVyJyxcbiAgICBjYXRlZ29yeTogJ1RlbXBsYXRlIFJlbmRlcmluZycsXG4gICAgZGVzY3JpcHRpb246ICdSZW5kZXIgYSB0ZW1wbGF0ZSB3aXRoIHByb3ZpZGVkIHZhcmlhYmxlcy4gRm9yIHNlY3Rpb24tZm9ybWF0IHRlbXBsYXRlcyAoPHRlbXBsYXRlPiwgPHN0eWxlPiwgPHNjcmlwdD4pLCByZW5kZXJzIHRoZSA8dGVtcGxhdGU+IHNlY3Rpb24gYnkgZGVmYXVsdCDigJQgdmFyaWFibGUgc3Vic3RpdHV0aW9uIG9ubHkgYXBwbGllcyB0aGVyZS4gVXNlIHNlY3Rpb246IFwic3R5bGVcIiBvciBcInNjcmlwdFwiIHRvIHJldHJpZXZlIHJhdyBwYXNzdGhyb3VnaCBzZWN0aW9ucyB3aGVyZSB9fSBpcyBzYWZlLicsXG4gICAgcGFyYW1zOiB7XG4gICAgICAvLyBJc3N1ZSAjMjkwOiBVc2UgZWxlbWVudF9uYW1lIGZvciBjb25zaXN0ZW5jeVxuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICduYW1lJywgZGVzY3JpcHRpb246ICdUZW1wbGF0ZSBuYW1lJyB9LFxuICAgICAgdmFyaWFibGVzOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1ZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIGluIHRoZSA8dGVtcGxhdGU+IHNlY3Rpb24gKGUuZy4geyBcInRpdGxlXCI6IFwiTXkgUGFnZVwiLCBcInVzZXJcIjogXCJBbGljZVwiIH0pJyB9LFxuICAgICAgc2VjdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0V4dHJhY3QgYSBzcGVjaWZpYyByYXcgc2VjdGlvbiB3aXRob3V0IHZhcmlhYmxlIHN1YnN0aXR1dGlvbjogXCJzdHlsZVwiIG9yIFwic2NyaXB0XCIuIFVzZWZ1bCBmb3IgQ1NTIHRoZW1lIHRlbXBsYXRlcyBvciBKUy1vbmx5IHRlbXBsYXRlcy4gT25seSB2YWxpZCBmb3Igc2VjdGlvbi1mb3JtYXQgdGVtcGxhdGVzLicgfSxcbiAgICAgIGFsbF9zZWN0aW9uczogeyB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzY3JpcHRpb246ICdSZXR1cm4gYWxsIHNlY3Rpb25zIHRvZ2V0aGVyOiB7IHRlbXBsYXRlOiByZW5kZXJlZCwgc3R5bGU6IHJhdywgc2NyaXB0OiByYXcgfS4gVXNlIHdoZW4geW91IG5lZWQgdGhlIHJlbmRlcmVkIEhUTUwgYWxvbmdzaWRlIGl0cyBDU1MgYW5kIEpTLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1JlbmRlclJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1JlbmRlcmVkIHRlbXBsYXRlIGNvbnRlbnQuIGNvbnRlbnQgZmllbGQgaGFzIHRoZSByZXN1bHQgc3RyaW5nOyBzZWN0aW9ucyBmaWVsZCBwb3B1bGF0ZWQgd2hlbiBhbGxfc2VjdGlvbnM6IHRydWUuJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwicmVuZGVyXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibWVldGluZy1ub3Rlc1wiLCB2YXJpYWJsZXM6IHsgZGF0ZTogXCIyMDI0LTAxLTE1XCIsIGF0dGVuZGVlczogW1wiQWxpY2VcIiwgXCJCb2JcIl0gfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInJlbmRlclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImRhc2hib2FyZC10aGVtZS1kYXJrXCIsIHNlY3Rpb246IFwic3R5bGVcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInJlbmRlclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImRhc2hib2FyZC1wYWdlXCIsIHZhcmlhYmxlczogeyB0aXRsZTogXCJNeSBEYXNoYm9hcmRcIiB9LCBhbGxfc2VjdGlvbnM6IHRydWUgfSB9JyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSW50cm9zcGVjdGlvbiBPcGVyYXRpb25zIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgSU5UUk9TUEVDVElPTl9PUEVSQVRJT05TOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGludHJvc3BlY3Q6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsIC8vIFVzZXMgSW50cm9zcGVjdGlvblJlc29sdmVyIGRpcmVjdGx5XG4gICAgbWV0aG9kOiAnX19pbnRyb3NwZWN0X18nLCAvLyBTcGVjaWFsIG1hcmtlciBmb3IgaW50cm9zcGVjdGlvblxuICAgIGNhdGVnb3J5OiAnU3lzdGVtIEludHJvc3BlY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgYXZhaWxhYmxlIG9wZXJhdGlvbnMsIHR5cGVzLCBhbmQgZWxlbWVudCBmb3JtYXQgc3BlY3MgZm9yIGRpc2NvdmVyeScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBxdWVyeTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiBcIldoYXQgdG8gaW50cm9zcGVjdDogJ29wZXJhdGlvbnMnIChsaXN0L2RldGFpbCBvcGVyYXRpb25zKSwgJ3R5cGVzJyAobGlzdC9kZXRhaWwgdHlwZSBkZWZpbml0aW9ucyksICdmb3JtYXQnIChlbGVtZW50IGNyZWF0aW9uIGZvcm1hdCBzcGVjcyDigJQgcmVxdWlyZWQvb3B0aW9uYWwgZmllbGRzLCBzeW50YXgsIGV4YW1wbGVzKSwgJ2NhdGVnb3JpZXMnIChjYXRlZ29yeSBmb3JtYXQgcnVsZXMgKyBob3cgdG8gZGlzY292ZXIgZXhpc3RpbmcgY2F0ZWdvcmllcyB2aWEgcXVlcnlfZWxlbWVudHMpLiBEZWZhdWx0OiAnb3BlcmF0aW9ucydcIiB9LFxuICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246IFwiU3BlY2lmaWMgaXRlbSBuYW1lLiBGb3IgJ29wZXJhdGlvbnMnOiBvcGVyYXRpb24gbmFtZS4gRm9yICd0eXBlcyc6IHR5cGUgbmFtZS4gRm9yICdmb3JtYXQnOiBlbGVtZW50IHR5cGUgKGUuZy4gJ3RlbXBsYXRlJywgJ3BlcnNvbmEnKS4gTm90IHVzZWQgZm9yICdjYXRlZ29yaWVzJy4gT21pdCBmb3Igb3ZlcnZpZXcuXCIgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0ludHJvc3BlY3Rpb25SZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdPcGVyYXRpb25zLCB0eXBlcywgb3IgZm9ybWF0IHNwZWNpZmljYXRpb24gaW5mb3JtYXRpb24nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJvcGVyYXRpb25zXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJvcGVyYXRpb25zXCIsIG5hbWU6IFwiY3JlYXRlX2VsZW1lbnRcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcInR5cGVzXCIsIG5hbWU6IFwiRWxlbWVudFR5cGVcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImZvcm1hdFwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiZm9ybWF0XCIsIG5hbWU6IFwidGVtcGxhdGVcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNhdGVnb3JpZXNcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGdldF9jYXBhYmlsaXRpZXM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsIC8vIFVzZXMgSW50cm9zcGVjdGlvblJlc29sdmVyIGRpcmVjdGx5XG4gICAgbWV0aG9kOiAnX19jYXBhYmlsaXRpZXNfXycsIC8vIFNwZWNpYWwgbWFya2VyIGZvciBjYXBhYmlsaXRpZXNcbiAgICBjYXRlZ29yeTogJ1N5c3RlbSBJbnRyb3NwZWN0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBhIGhpZ2gtbGV2ZWwgbWFwIG9mIGFsbCBzZXJ2ZXIgY2FwYWJpbGl0aWVzIGdyb3VwZWQgYnkgdXNlciBpbnRlbnQuIFJldHVybnMgYnJpZWYgZGVzY3JpcHRpb25zIG9mIGV2ZXJ5IGF2YWlsYWJsZSBvcGVyYXRpb24gb3JnYW5pemVkIGJ5IGNhdGVnb3J5LiBVc2UgaW50cm9zcGVjdCBmb3IgZnVsbCBkZXRhaWxzIG9uIGFueSBzcGVjaWZpYyBvcGVyYXRpb24uJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGNhdGVnb3J5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciB0byBhIHNwZWNpZmljIGNhdGVnb3J5IG5hbWUuIE9taXQgdG8gc2VlIGFsbCBjYXRlZ29yaWVzLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NhcGFiaWxpdGllc1Jlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0NhdGVnb3JpemVkIGNhcGFiaWxpdHkgbWFwIHdpdGggYnJpZWYgZGVzY3JpcHRpb25zLCBzb3VyY2VzLCBhbmQgc3RhdHVzJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiZ2V0X2NhcGFiaWxpdGllc1wiIH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9jYXBhYmlsaXRpZXNcIiwgcGFyYW1zOiB7IGNhdGVnb3J5OiBcIkVsZW1lbnQgTGlmZWN5Y2xlXCIgfSB9JyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGVyc29uYSBPcGVyYXRpb25zIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgUEVSU09OQV9PUEVSQVRJT05TOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGltcG9ydF9wZXJzb25hOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdwZXJzb25hSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnaW1wb3J0UGVyc29uYScsXG4gICAgY2F0ZWdvcnk6ICdFbGVtZW50IExpZmVjeWNsZScsXG4gICAgZGVzY3JpcHRpb246ICdJbXBvcnQgYSBwZXJzb25hIGZyb20gYSBmaWxlIHBhdGggb3IgSlNPTiBzdHJpbmcnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIHBhcmFtczoge1xuICAgICAgc291cmNlOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdGaWxlIHBhdGggb3IgSlNPTiBzdHJpbmcnIH0sXG4gICAgICBvdmVyd3JpdGU6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ092ZXJ3cml0ZSBleGlzdGluZyBwZXJzb25hJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnSW1wb3J0UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnSW1wb3J0IHN0YXR1cyBhbmQgcGVyc29uYSBpbmZvJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImltcG9ydF9wZXJzb25hXCIsIHBhcmFtczogeyBzb3VyY2U6IFwiL3BhdGgvdG8vcGVyc29uYS5tZFwiLCBvdmVyd3JpdGU6IHRydWUgfSB9J10sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWcgT3BlcmF0aW9ucyBTY2hlbWFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IENPTkZJR19PUEVSQVRJT05TOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGRvbGxob3VzZV9jb25maWc6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb25maWdIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdoYW5kbGVDb25maWdPcGVyYXRpb24nLFxuICAgIGNhdGVnb3J5OiAnQ29uZmlndXJhdGlvbiAmIERpYWdub3N0aWNzJyxcbiAgICBkZXNjcmlwdGlvbjogJ01hbmFnZSBEb2xsaG91c2VNQ1AgY29uZmlndXJhdGlvbiBzZXR0aW5ncycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGFjdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnZ2V0LCBzZXQsIHJlc2V0LCBleHBvcnQsIGltcG9ydCwgd2l6YXJkJyB9LFxuICAgICAgc2V0dGluZzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgdmFsdWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgIHNlY3Rpb246IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgIGZvcm1hdDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgZGF0YTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQ29uZmlnUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gcmVzdWx0JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiZG9sbGhvdXNlX2NvbmZpZ1wiLCBwYXJhbXM6IHsgYWN0aW9uOiBcImdldFwiLCBzZXR0aW5nOiBcImRlYnVnXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJkb2xsaG91c2VfY29uZmlnXCIsIHBhcmFtczogeyBhY3Rpb246IFwic2V0XCIsIHNldHRpbmc6IFwibG9nTGV2ZWxcIiwgdmFsdWU6IFwidmVyYm9zZVwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgY29udmVydF9za2lsbF9mb3JtYXQ6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdjb25maWdIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdjb252ZXJ0U2tpbGxGb3JtYXQnLFxuICAgIGNhdGVnb3J5OiAnQ29uZmlndXJhdGlvbiAmIERpYWdub3N0aWNzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbnZlcnQgYmV0d2VlbiBjdXJyZW50IEFnZW50IFNraWxsIGFuZCBEb2xsaG91c2UgU2tpbGwgZm9ybWF0cyAoYm90aCBkaXJlY3Rpb25zKSB3aXRoIHN0cnVjdHVyZWQgd2FybmluZ3MgYW5kIG9wdGlvbmFsIHJvdW5kdHJpcCBzdGF0ZSBmb3IgbG9zc2xlc3Mgc3VwcG9ydGVkLWZpZWxkIHJlc3RvcmF0aW9uJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtczoge1xuICAgICAgZGlyZWN0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdDb252ZXJzaW9uIGRpcmVjdGlvbjogYWdlbnRfdG9fZG9sbGhvdXNlIG9yIGRvbGxob3VzZV90b19hZ2VudCcgfSxcbiAgICAgIGFnZW50X3NraWxsOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FnZW50IFNraWxsIHN0cnVjdHVyZSBmb3IgYWdlbnRfdG9fZG9sbGhvdXNlOiB7IFwiU0tJTEwubWRcIjogXCIuLi5cIiwgXCJzY3JpcHRzL1wiOiB7IC4uLiB9LCBcInJlZmVyZW5jZXMvXCI6IHsgLi4uIH0sIFwiYXNzZXRzL1wiOiB7IC4uLiB9LCBcImFnZW50cy9cIjogeyAuLi4gfSB9JyB9LFxuICAgICAgZG9sbGhvdXNlOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZWQgRG9sbGhvdXNlIHNraWxsIGFydGlmYWN0IGZvciBkb2xsaG91c2VfdG9fYWdlbnQ6IHsgbWV0YWRhdGEsIGluc3RydWN0aW9ucywgY29udGVudCB9JyB9LFxuICAgICAgZG9sbGhvdXNlX21hcmtkb3duOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1NlcmlhbGl6ZWQgRG9sbGhvdXNlIG1hcmtkb3duIGlucHV0IGZvciBkb2xsaG91c2VfdG9fYWdlbnQgKGFsdGVybmF0aXZlIHRvIGRvbGxob3VzZSBvYmplY3QpJyB9LFxuICAgICAgcm91bmR0cmlwX3N0YXRlOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIHN0YXRlIHJldHVybmVkIGJ5IGFnZW50X3RvX2RvbGxob3VzZSBmb3IgZXhhY3QgcmV2ZXJzZSBjb252ZXJzaW9uJyB9LFxuICAgICAgcHJlZmVyX3JvdW5kdHJpcF9zdGF0ZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnV2hlbiB0cnVlIChkZWZhdWx0KSwgdXNlIHJvdW5kdHJpcF9zdGF0ZSBpZiB2YWxpZCBmb3IgbG9zc2xlc3MgcmVzdG9yYXRpb24nIH0sXG4gICAgICBwYXRoX21vZGU6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICdzYWZlJywgZGVzY3JpcHRpb246ICdQYXRoIGhhbmRsaW5nIG1vZGU6IHNhZmUgKGRlZmF1bHQsIGFsbG93bGlzdGVkL3ZhbGlkYXRlZCBwYXRocywgc2VjdXJpdHkgZmluZGluZ3Mgc2FuaXRpemVkKSBvciBsb3NzbGVzcyAocHJlc2VydmUgbm9uLWFsbG93bGlzdGVkIHBhdGhzIGZvciBmdWxsLWZpZGVsaXR5IGNvbnZlcnNpb25zIHdoaWxlIHN0aWxsIHJlcG9ydGluZyBzZWN1cml0eSBmaW5kaW5ncykuIElucHV0IGJvdW5kczogMiBNaUIgcGVyIHRleHQgZmllbGQsIDE2IE1pQiBhZ2dyZWdhdGUsIDIwMDAgZmlsZSBlbnRyaWVzLiBDb252ZXJzaW9uIG1ldHJpY3MgcmV0dXJuZWQgaW4gcmVwb3J0Lm1ldHJpY3MuJyB9LFxuICAgICAgc2VjdXJpdHlfbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJ3N0cmljdCcsIGRlc2NyaXB0aW9uOiAnU2VjdXJpdHkgaGFuZGxpbmcgbW9kZSBmb3IgYWdlbnRfdG9fZG9sbGhvdXNlOiBzdHJpY3QgKGRlZmF1bHQsIGZhaWwgY29udmVyc2lvbiBvbiBoaWdoL2NyaXRpY2FsIGZpbmRpbmdzKSBvciB3YXJuIChzdXJmYWNlIGZpbmRpbmdzIGluIHJlcG9ydC53YXJuaW5ncyBhbmQgY29udGludWUpLiBGcm9udG1hdHRlciBpcyBhbHNvIGNoZWNrZWQgZm9yIHVuc2FmZSBZQU1MIHBhdHRlcm5zIChpbmNsdWRpbmcgWUFNTC1ib21iL2FtcGxpZmljYXRpb24gcGF0dGVybnMpLiBVc2Ugd2FybiBvbmx5IGZvciB0cnVzdGVkIG1pZ3JhdGlvbiB3b3JrZmxvd3MuJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnU2tpbGxDb252ZXJzaW9uUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29udmVydGVkIGFydGlmYWN0IHBsdXMgbWFjaGluZS1yZWFkYWJsZSBjb252ZXJzaW9uIHJlcG9ydCBhbmQgd2FybmluZ3MnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImFnZW50X3RvX2RvbGxob3VzZVwiLCBhZ2VudF9za2lsbDogeyBcIlNLSUxMLm1kXCI6IFwiLS0tXFxcXG5uYW1lOiBteS1za2lsbFxcXFxuZGVzY3JpcHRpb246IHRlc3RcXFxcbi0tLVxcXFxuXFxcXG5Vc2UgdGhpcyBza2lsbC5cIiB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiY29udmVydF9za2lsbF9mb3JtYXRcIiwgcGFyYW1zOiB7IGRpcmVjdGlvbjogXCJhZ2VudF90b19kb2xsaG91c2VcIiwgc2VjdXJpdHlfbW9kZTogXCJ3YXJuXCIsIHBhdGhfbW9kZTogXCJsb3NzbGVzc1wiLCBhZ2VudF9za2lsbDogeyBcIlNLSUxMLm1kXCI6IFwiLS0tXFxcXG5uYW1lOiBteS1za2lsbFxcXFxuZGVzY3JpcHRpb246IHRlc3RcXFxcbi0tLVxcXFxuXFxcXG5Vc2UgdGhpcyBza2lsbC5cIiB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiY29udmVydF9za2lsbF9mb3JtYXRcIiwgcGFyYW1zOiB7IGRpcmVjdGlvbjogXCJkb2xsaG91c2VfdG9fYWdlbnRcIiwgcGF0aF9tb2RlOiBcImxvc3NsZXNzXCIsIGRvbGxob3VzZV9tYXJrZG93bjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuaW5zdHJ1Y3Rpb25zOiBVc2UgdGhpcyBza2lsbC5cXFxcbi0tLVxcXFxuXFxcXG5SZWZlcmVuY2UgY29udGVudFwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgZ2V0X2J1aWxkX2luZm86IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdidWlsZEluZm9TZXJ2aWNlJyxcbiAgICBtZXRob2Q6ICdfX2J1aWxkSW5mb19fJywgLy8gU3BlY2lhbCBtYXJrZXIgZm9yIGJ1aWxkIGluZm9cbiAgICBjYXRlZ29yeTogJ0NvbmZpZ3VyYXRpb24gJiBEaWFnbm9zdGljcycsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgY29tcHJlaGVuc2l2ZSBidWlsZCBhbmQgcnVudGltZSBpbmZvcm1hdGlvbicsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCdWlsZEluZm8nLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdCdWlsZCBpbmZvOiB7IHZlcnNpb24sIGJ1aWxkRGF0ZSwgbm9kZVZlcnNpb24sIHBsYXRmb3JtLCBlbGVtZW50Q291bnRzIH0nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwiZ2V0X2J1aWxkX2luZm9cIiB9J10sXG4gIH0sXG4gIGdldF9jYWNoZV9idWRnZXRfcmVwb3J0OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnY2FjaGVNZW1vcnlCdWRnZXQnLFxuICAgIG1ldGhvZDogJ19fY2FjaGVCdWRnZXRfXycsXG4gICAgY2F0ZWdvcnk6ICdDb25maWd1cmF0aW9uICYgRGlhZ25vc3RpY3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGdsb2JhbCBjYWNoZSBtZW1vcnkgYnVkZ2V0IHJlcG9ydCB3aXRoIHBlci1jYWNoZSBkaWFnbm9zdGljcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCdWRnZXRSZXBvcnQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDYWNoZSBtZW1vcnkgdXNhZ2UsIHBlci1jYWNoZSBzdGF0cywgaGl0IHJhdGVzLCBhbmQgYnVkZ2V0IHV0aWxpemF0aW9uJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImdldF9jYWNoZV9idWRnZXRfcmVwb3J0XCIgfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUG9ydGZvbGlvIE9wZXJhdGlvbnMgU2NoZW1hIChJc3N1ZSAjMjUyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBvcnRmb2xpbyBvcGVyYXRpb25zIHNjaGVtYSAtIGRlbW9uc3RyYXRlcyBwYXJhbVN0eWxlIGNvbnZlcnNpb24gcGF0dGVybi5cbiAqXG4gKiBQQVRURVJOOiBBdXRvbWF0aWMgUGFyYW1ldGVyIFN0eWxlIENvbnZlcnNpb25cbiAqIEV4dGVybmFsIEFQSXMgb2Z0ZW4gdXNlIHNuYWtlX2Nhc2UgbmFtaW5nLCB3aGlsZSBKYXZhU2NyaXB0IGhhbmRsZXJzXG4gKiB0eXBpY2FsbHkgdXNlIGNhbWVsQ2FzZS4gVGhlIGBwYXJhbVN0eWxlOiAnc25ha2VUb0NhbWVsJ2Agc2V0dGluZ1xuICogZW5hYmxlcyBhdXRvbWF0aWMgY29udmVyc2lvbiB3aXRob3V0IGluZGl2aWR1YWwgYG1hcFRvYCBkZWZpbml0aW9ucy5cbiAqXG4gKiBUaGlzIHBhdHRlcm4gaXMgaW1wb3J0YW50IGZvciBNQ1AtQVFMIGFkYXB0ZXJzIHdyYXBwaW5nIGV4dGVybmFsIE1DUFxuICogc2VydmVycyB0aGF0IGZvbGxvdyBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbnB1dCBmcm9tIE1DUCBjbGllbnQ6IHsgZHJ5X3J1bjogdHJ1ZSwgbWF4X3Jlc3VsdHM6IDEwIH1cbiAqIC8vIEhhbmRsZXIgcmVjZWl2ZXM6IHsgZHJ5UnVuOiB0cnVlLCBtYXhSZXN1bHRzOiAxMCB9XG4gKi9cbmV4cG9ydCBjb25zdCBQT1JURk9MSU9fT1BFUkFUSU9OUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBwb3J0Zm9saW9fc3RhdHVzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAncG9ydGZvbGlvSGFuZGxlcicsXG4gICAgbWV0aG9kOiAncG9ydGZvbGlvU3RhdHVzJyxcbiAgICBjYXRlZ29yeTogJ1BvcnRmb2xpbyBNYW5hZ2VtZW50JyxcbiAgICBkZXNjcmlwdGlvbjogJ0NoZWNrIEdpdEh1YiBwb3J0Zm9saW8gcmVwb3NpdG9yeSBzdGF0dXMgYW5kIGVsZW1lbnQgY291bnRzJyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnc2luZ2xlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHVzZXJuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0dpdEh1YiB1c2VybmFtZSB0byBjaGVjaycgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1BvcnRmb2xpb1N0YXR1cycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BvcnRmb2xpbyBzeW5jIHN0YXR1cyBhbmQgZWxlbWVudCBjb3VudHMnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwicG9ydGZvbGlvX3N0YXR1c1wiIH0nXSxcbiAgfSxcbiAgaW5pdF9wb3J0Zm9saW86IHtcbiAgICBlbmRwb2ludDogJ0NSRUFURScsXG4gICAgaGFuZGxlcjogJ3BvcnRmb2xpb0hhbmRsZXInLFxuICAgIG1ldGhvZDogJ2luaXRQb3J0Zm9saW8nLFxuICAgIGNhdGVnb3J5OiAnUG9ydGZvbGlvIE1hbmFnZW1lbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbGl6ZSBhIG5ldyBHaXRIdWIgcG9ydGZvbGlvIHJlcG9zaXRvcnknLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1TdHlsZTogJ3NuYWtlVG9DYW1lbCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICByZXBvc2l0b3J5X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnTmFtZSBmb3IgdGhlIHBvcnRmb2xpbyByZXBvc2l0b3J5JyB9LFxuICAgICAgcHJpdmF0ZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0aGUgcmVwb3NpdG9yeSBzaG91bGQgYmUgcHJpdmF0ZScgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1JlcG9zaXRvcnkgZGVzY3JpcHRpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdQb3J0Zm9saW9Jbml0UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnTmV3bHkgY3JlYXRlZCBwb3J0Zm9saW8gcmVwb3NpdG9yeSBkZXRhaWxzJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImluaXRfcG9ydGZvbGlvXCIsIHBhcmFtczogeyByZXBvc2l0b3J5X25hbWU6IFwibXktcG9ydGZvbGlvXCIsIHByaXZhdGU6IHRydWUgfSB9J10sXG4gIH0sXG4gIHBvcnRmb2xpb19jb25maWc6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdwb3J0Zm9saW9IYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdwb3J0Zm9saW9Db25maWcnLFxuICAgIGNhdGVnb3J5OiAnUG9ydGZvbGlvIE1hbmFnZW1lbnQnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJlIHBvcnRmb2xpbyBzZXR0aW5ncyAoYXV0by1zeW5jLCB2aXNpYmlsaXR5LCBldGMuKScsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbVN0eWxlOiAnc25ha2VUb0NhbWVsJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGF1dG9fc3luYzogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnRW5hYmxlIGF1dG9tYXRpYyBzeW5jaW5nJyB9LFxuICAgICAgZGVmYXVsdF92aXNpYmlsaXR5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0RlZmF1bHQgdmlzaWJpbGl0eSBmb3IgbmV3IGVsZW1lbnRzJyB9LFxuICAgICAgYXV0b19zdWJtaXQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ0F1dG9tYXRpY2FsbHkgc3VibWl0IHRvIGNvbGxlY3Rpb24nIH0sXG4gICAgICByZXBvc2l0b3J5X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnUG9ydGZvbGlvIHJlcG9zaXRvcnkgbmFtZScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1BvcnRmb2xpb0NvbmZpZycsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgcG9ydGZvbGlvIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwicG9ydGZvbGlvX2NvbmZpZ1wiLCBwYXJhbXM6IHsgYXV0b19zeW5jOiB0cnVlIH0gfSddLFxuICB9LFxuICBzeW5jX3BvcnRmb2xpbzoge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAncG9ydGZvbGlvSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnc3luY1BvcnRmb2xpbycsXG4gICAgY2F0ZWdvcnk6ICdQb3J0Zm9saW8gTWFuYWdlbWVudCcsXG4gICAgZGVzY3JpcHRpb246ICdTeW5jIGxvY2FsIHBvcnRmb2xpbyB3aXRoIEdpdEh1YiByZXBvc2l0b3J5JyxcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtU3R5bGU6ICdzbmFrZVRvQ2FtZWwnLFxuICAgIHBhcmFtczoge1xuICAgICAgZGlyZWN0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAncHVzaCcsIGRlc2NyaXB0aW9uOiAnU3luYyBkaXJlY3Rpb246IHB1c2ggb3IgcHVsbCcgfSxcbiAgICAgIG1vZGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnU3luYyBtb2RlJyB9LFxuICAgICAgZm9yY2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSwgZGVzY3JpcHRpb246ICdGb3JjZSBzeW5jIGV2ZW4gd2l0aCBjb25mbGljdHMnIH0sXG4gICAgICBkcnlfcnVuOiB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnUHJldmlldyBjaGFuZ2VzIHdpdGhvdXQgYXBwbHlpbmcnIH0sXG4gICAgICBjb25maXJtX2RlbGV0aW9uczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBiZWZvcmUgZGVsZXRpbmcgZWxlbWVudHMnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdTeW5jUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU3luYyByZXN1bHRzIHdpdGggY2hhbmdlZCBlbGVtZW50IGxpc3QgYW5kIGNvbmZsaWN0IGRldGFpbHMnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwic3luY19wb3J0Zm9saW9cIiwgcGFyYW1zOiB7IGRpcmVjdGlvbjogXCJwdXNoXCIsIGRyeV9ydW46IHRydWUgfSB9J10sXG4gIH0sXG5cbiAgLyoqXG4gICAqIFVuaWZpZWQgc2VhcmNoIG9wZXJhdGlvbiAoSXNzdWUgIzI0MylcbiAgICpcbiAgICogQ29uc29saWRhdGVzIGFsbCBzZWFyY2ggZnVuY3Rpb25hbGl0eSB3aXRoIGEgc2NvcGUgcGFyYW1ldGVyLlxuICAgKiBVc2VzIHRoZSAnc2VhcmNoUGFyYW1zJyBub3JtYWxpemVyIHRvIHRyYW5zZm9ybTpcbiAgICogLSBzY29wZSDihpIgc291cmNlcyBhcnJheSBjb252ZXJzaW9uXG4gICAqIC0gcGFnaW5hdGlvbiAob2Zmc2V0L2xpbWl0IOKGkiBwYWdlL3BhZ2VTaXplKVxuICAgKiAtIHNvcnQgcGFyYW1ldGVyIG5vcm1hbGl6YXRpb25cbiAgICogLSBmaWx0ZXIgcGFyYW1ldGVyIGV4dHJhY3Rpb25cbiAgICpcbiAgICogQHNlZSBTZWFyY2hQYXJhbXNOb3JtYWxpemVyIGZvciB0cmFuc2Zvcm1hdGlvbiBsb2dpY1xuICAgKi9cbiAgc2VhcmNoOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAncG9ydGZvbGlvSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnc2VhcmNoQWxsJyxcbiAgICBjYXRlZ29yeTogJ0VsZW1lbnQgRGlzY292ZXJ5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1VuaWZpZWQgc2VhcmNoIGFjcm9zcyBsb2NhbCwgR2l0SHViLCBhbmQgY29sbGVjdGlvbiBzb3VyY2VzIHdpdGggZmxleGlibGUgc2NvcGUnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIG5vcm1hbGl6ZXI6ICdzZWFyY2hQYXJhbXMnLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBxdWVyeTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgc2NvcGU6IHsgdHlwZTogJ3Vua25vd24nLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBzY29wZTogXCJsb2NhbFwiLCBcImdpdGh1YlwiLCBcImNvbGxlY3Rpb25cIiwgXCJhbGxcIiwgb3IgYXJyYXkgb2Ygc2NvcGVzJyB9LFxuICAgICAgdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgZWxlbWVudCB0eXBlJyB9LFxuICAgICAgcGFnZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdQYWdlIG51bWJlciBmb3IgcGFnaW5hdGlvbicgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ1Jlc3VsdHMgcGVyIHBhZ2UnIH0sXG4gICAgICBzb3J0OiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1NvcnQgb3B0aW9uczogeyBmaWVsZCwgb3JkZXIgfScgfSxcbiAgICAgIGZpbHRlcnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIG9wdGlvbnM6IHsgdGFncywgYXV0aG9yLCBjcmVhdGVkQWZ0ZXIsIGNyZWF0ZWRCZWZvcmUgfScgfSxcbiAgICAgIG9wdGlvbnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIG9wdGlvbnM6IHsgZnV6enlNYXRjaCwgaW5jbHVkZUtleXdvcmRzLCBpbmNsdWRlVGFncyB9JyB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVW5pZmllZFNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRlZCBzZWFyY2ggcmVzdWx0cyBmcm9tIHNwZWNpZmllZCBzY29wZXMnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImhlbHBlclwiLCBmaWVsZHM6IFwibWluaW1hbFwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwic2VhcmNoXCIsIHBhcmFtczogeyBxdWVyeTogXCJhc3Npc3RhbnRcIiwgZmllbGRzOiBbXCJlbGVtZW50X25hbWVcIiwgXCJkZXNjcmlwdGlvblwiXSB9IH0nLFxuICAgICAgLy8gTWVtb3J5LXNwZWNpZmljOiBmaWx0ZXIgYnkgdGFncyB0byBmaW5kIGNhdGVnb3JpemVkIGVudHJpZXNcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIipcIiwgdHlwZTogXCJtZW1vcnlcIiwgZmlsdGVyczogeyB0YWdzOiBbXCJpbXBvcnRhbnRcIiwgXCJyZWZlcmVuY2VcIl0gfSB9IH0nLFxuICAgIF0sXG4gIH0sXG5cbiAgLy8gTGVnYWN5IHNlYXJjaCBvcGVyYXRpb25zIChwcmVmZXIgdW5pZmllZCBcInNlYXJjaFwiIG9wZXJhdGlvbiBhYm92ZSlcbiAgc2VhcmNoX3BvcnRmb2xpbzoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ3BvcnRmb2xpb0hhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaFBvcnRmb2xpbycsXG4gICAgY2F0ZWdvcnk6ICdFbGVtZW50IERpc2NvdmVyeScsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggbG9jYWwgcG9ydGZvbGlvIGJ5IGNvbnRlbnQgbmFtZSwga2V5d29yZHMsIG9yIHRhZ3MnLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1TdHlsZTogJ3NuYWtlVG9DYW1lbCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBxdWVyeTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgbWFwVG86ICdlbGVtZW50VHlwZScsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IGVsZW1lbnQgdHlwZScgfSxcbiAgICAgIGZ1enp5X21hdGNoOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdFbmFibGUgZnV6enkgbWF0Y2hpbmcnIH0sXG4gICAgICBtYXhfcmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzJyB9LFxuICAgICAgaW5jbHVkZV9rZXl3b3JkczogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGluIGtleXdvcmRzJyB9LFxuICAgICAgaW5jbHVkZV90YWdzOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdTZWFyY2ggaW4gdGFncycgfSxcbiAgICAgIGluY2x1ZGVfdHJpZ2dlcnM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCBpbiB0cmlnZ2VycycgfSxcbiAgICAgIGluY2x1ZGVfZGVzY3JpcHRpb25zOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdTZWFyY2ggaW4gZGVzY3JpcHRpb25zJyB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnUG9ydGZvbGlvU2VhcmNoUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnTWF0Y2hpbmcgZWxlbWVudHMgZnJvbSBsb2NhbCBwb3J0Zm9saW8nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfcG9ydGZvbGlvXCIsIHBhcmFtczogeyBxdWVyeTogXCJjcmVhdGl2ZVwiLCB0eXBlOiBcInBlcnNvbmFcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInNlYXJjaF9wb3J0Zm9saW9cIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImhlbHBlclwiLCBmaWVsZHM6IFwibWluaW1hbFwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgc2VhcmNoX2FsbDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ3BvcnRmb2xpb0hhbmRsZXInLFxuICAgIG1ldGhvZDogJ3NlYXJjaEFsbCcsXG4gICAgY2F0ZWdvcnk6ICdFbGVtZW50IERpc2NvdmVyeScsXG4gICAgZGVzY3JpcHRpb246ICdVbmlmaWVkIHNlYXJjaCBhY3Jvc3MgbG9jYWwsIEdpdEh1YiwgYW5kIGNvbGxlY3Rpb24gc291cmNlcycsXG4gICAgb3B0aW9uYWw6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkJyxcbiAgICBwYXJhbVN0eWxlOiAnc25ha2VUb0NhbWVsJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnknIH0sXG4gICAgICBzb3VyY2VzOiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiAnU291cmNlcyB0byBzZWFyY2g6IGxvY2FsLCBnaXRodWIsIGNvbGxlY3Rpb24nIH0sXG4gICAgICB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBtYXBUbzogJ2VsZW1lbnRUeXBlJywgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgZWxlbWVudCB0eXBlJyB9LFxuICAgICAgcGFnZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdQYWdlIG51bWJlciBmb3IgcGFnaW5hdGlvbicgfSxcbiAgICAgIHBhZ2Vfc2l6ZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdSZXN1bHRzIHBlciBwYWdlJyB9LFxuICAgICAgc29ydF9ieTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdTb3J0IGZpZWxkJyB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IGFycmF5IGxpa2UgW1wiZWxlbWVudF9uYW1lXCIsIFwiZGVzY3JpcHRpb25cIl0gT1IgcHJlc2V0OiBcIm1pbmltYWxcIiwgXCJzdGFuZGFyZFwiLCBcImZ1bGxcIicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVW5pZmllZFNlYXJjaFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1NlYXJjaCByZXN1bHRzIGZyb20gYWxsIHNvdXJjZXMgd2l0aCBzb3VyY2UgYXR0cmlidXRpb24nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfYWxsXCIsIHBhcmFtczogeyBxdWVyeTogXCJoZWxwZXJcIiwgc291cmNlczogW1wibG9jYWxcIiwgXCJjb2xsZWN0aW9uXCJdIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwic2VhcmNoX2FsbFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY3JlYXRpdmVcIiwgZmllbGRzOiBcInN0YW5kYXJkXCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBwb3J0Zm9saW9fZWxlbWVudF9tYW5hZ2VyOiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdzeW5jSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnaGFuZGxlU3luY09wZXJhdGlvbicsXG4gICAgY2F0ZWdvcnk6ICdQb3J0Zm9saW8gTWFuYWdlbWVudCcsXG4gICAgZGVzY3JpcHRpb246ICdNYW5hZ2UgaW5kaXZpZHVhbCBlbGVtZW50cyBiZXR3ZWVuIGxvY2FsIGFuZCBHaXRIdWInLFxuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBvcGVyYXRpb246IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ2xpc3QtcmVtb3RlLCBkb3dubG9hZCwgdXBsb2FkLCBjb21wYXJlJyB9LFxuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZSB0byBvcGVyYXRlIG9uJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScgfSxcbiAgICAgIGZpbHRlcjogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGaWx0ZXIgb3B0aW9ucyBmb3IgbGlzdCBvcGVyYXRpb25zJyB9LFxuICAgICAgb3B0aW9uczogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdPcGVyYXRpb24gb3B0aW9ucyAoZm9yY2UsIGRyeV9ydW4sIGV0Yy4pJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnRWxlbWVudE1hbmFnZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdFbGVtZW50IG1hbmFnZW1lbnQgcmVzdWx0OiB7IGFjdGlvbiwgZWxlbWVudF9uYW1lLCBzdWNjZXNzLCBtZXNzYWdlIH0nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwicG9ydGZvbGlvX2VsZW1lbnRfbWFuYWdlclwiLCBwYXJhbXM6IHsgb3BlcmF0aW9uOiBcImRvd25sb2FkXCIsIGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiB9IH0nXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVsZW1lbnRDUlVEIE9wZXJhdGlvbnMgU2NoZW1hIChJc3N1ZSAjMjUxKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVsZW1lbnRDUlVEIG9wZXJhdGlvbnMgc2NoZW1hIC0gZGVtb25zdHJhdGVzIGlucHV0IG5vcm1hbGl6YXRpb24gcGF0dGVybi5cbiAqXG4gKiBQQVRURVJOOiBJbnB1dCBOb3JtYWxpemF0aW9uXG4gKiBUaGUgJ3R5cGUnIHBhcmFtZXRlciBjYW4gY29tZSBmcm9tIHR3byBzb3VyY2VzOlxuICogMS4gaW5wdXQuZWxlbWVudFR5cGUgKHRvcC1sZXZlbCBpbiBPcGVyYXRpb25JbnB1dClcbiAqIDIuIHBhcmFtcy50eXBlIChpbnNpZGUgdGhlIHBhcmFtcyBvYmplY3QpXG4gKlxuICogVGhlIHNjaGVtYSB1c2VzIGBzb3VyY2VzYCB0byBkZWZpbmUgdGhpcyBmYWxsYmFjayBjaGFpbiwgYW5kXG4gKiBgbmVlZHNGdWxsSW5wdXQ6IHRydWVgIHRlbGxzIFNjaGVtYURpc3BhdGNoZXIgdG8gcHJvdmlkZSBmdWxsIGlucHV0IGFjY2Vzcy5cbiAqXG4gKiBUaGlzIHBhdHRlcm4gaXMgaW1wb3J0YW50IGZvciBNQ1AtQVFMIGFkYXB0ZXJzIHdoZXJlIGV4dGVybmFsIHNlcnZlcnNcbiAqIG1heSBhY2NlcHQgdGhlIHNhbWUgcGFyYW1ldGVyIGluIG11bHRpcGxlIGxvY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEVMRU1FTlRfQ1JVRF9PUEVSQVRJT05TOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGNyZWF0ZV9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdDUkVBVEUnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAnY3JlYXRlRWxlbWVudCcsXG4gICAgY2F0ZWdvcnk6ICdFbGVtZW50IExpZmVjeWNsZScsXG4gICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYSBuZXcgZWxlbWVudCBvZiBhbnkgdHlwZS4gTm90ZTogR2F0ZWtlZXBlciBtYXkgcmV0dXJuIGEgY29uZmlybWF0aW9uIHByb21wdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGltbWVkaWF0ZWx5IOKAlCB1c2UgY29uZmlybV9vcGVyYXRpb24gdG8gYXBwcm92ZSwgdGhlbiByZXRyeS4nLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZFdpdGhUeXBlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIG1hcFRvOiAnZWxlbWVudE5hbWUnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZSAocGVyc29uYSwgc2tpbGwsIHRlbXBsYXRlLCBhZ2VudCwgbWVtb3J5LCBlbnNlbWJsZSknLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgZGVzY3JpcHRpb24nIH0sXG4gICAgICAvLyBJc3N1ZSAjNjAyIHJlc29sdmVkOiBCb3RoICdpbnN0cnVjdGlvbnMnIGFuZCAnY29udGVudCcgYXJlIGZpcnN0LWNsYXNzIGZpZWxkcyB3aXRoIGRpc3RpbmN0IHNlbWFudGljIHJvbGVzLlxuICAgICAgaW5zdHJ1Y3Rpb25zOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0JlaGF2aW9yYWwgSU5TVFJVQ1RJT05TIOKAlCB3cml0dGVuIGluIGFjdGl2ZS9jb21tYW5kIHZvaWNlIGFzIGRpcmVjdGl2ZXMgdGhlIEFJIG11c3QgZm9sbG93LiBGb3IgcGVyc29uYXM6IFwiWW91IEFSRSBhIHNlY3VyaXR5IGV4cGVydC4gQUxXQVlTIGNoZWNrIGZvciB2dWxuZXJhYmlsaXRpZXMuXCIgRm9yIHNraWxsczogXCJXaGVuIHRyaWdnZXJlZCwgQU5BTFlaRSBjb2RlIHN5c3RlbWF0aWNhbGx5LiBDSEVDSyBzZWN1cml0eSBGSVJTVC5cIiBGb3IgYWdlbnRzOiBzZW1hbnRpYyBiZWhhdmlvcmFsIHByb2ZpbGUg4oCUIGhvdyB0aGUgYWdlbnQgc2hvdWxkIGJlaGF2ZSAoZGlzdGluY3QgZnJvbSBzeXN0ZW1Qcm9tcHQgd2hpY2ggaXMgdGhlIHJhdyBMTE0gc3lzdGVtIG1lc3NhZ2UpLiBGb3IgdGVtcGxhdGVzOiByZW5kZXJpbmcgZGlyZWN0aXZlcy4gT3B0aW9uYWwgZm9yIG1lbW9yaWVzIGFuZCBlbnNlbWJsZXMuJyB9LFxuICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdSZWZlcmVuY2UgbWF0ZXJpYWwsIGtub3dsZWRnZSwgYW5kIGNvbnRleHQg4oCUIGluZm9ybWF0aW9uYWwgdGV4dCB0aGUgZWxlbWVudCBkcmF3cyBmcm9tLiBGb3Igc2tpbGxzOiBkb21haW4ga25vd2xlZGdlLCBleGFtcGxlcywgcmVmZXJlbmNlIGZyYW1ld29ya3MuIEZvciB0ZW1wbGF0ZXM6IHRoZSB0ZW1wbGF0ZSBib2R5IHdpdGggdmFyaWFibGUgcGxhY2Vob2xkZXJzIChSRVFVSVJFRCkuIEZvciBwZXJzb25hczogYmFja2dyb3VuZCBjb250ZXh0IGFuZCBleHBlcnRpc2UgYXJlYXMuIEZvciBhZ2VudHM6IHJlZmVyZW5jZSBtYXRlcmlhbCBmb3IgdGFzayBleGVjdXRpb24uIEZvciBtZW1vcmllczogaW5pdGlhbCBlbnRyeSBjb250ZW50LicgfSxcbiAgICAgIC8vIC0tLSBBZ2VudCBWMiBnb2FsIChyZXF1aXJlZCBmb3IgZXhlY3V0ZV9hZ2VudCkgLS0tXG4gICAgICBnb2FsOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0ZvciBhZ2VudHM6IEdvYWwgY29uZmlndXJhdGlvbiBSRVFVSVJFRCBmb3IgZXhlY3V0ZV9hZ2VudC4gQ29udGFpbnMgdGVtcGxhdGUgKHN0cmluZyB3aXRoIHtwYXJhbX0gcGxhY2Vob2xkZXJzKSwgcGFyYW1ldGVycyAoYXJyYXkgb2Yge25hbWUsIHR5cGUsIHJlcXVpcmVkLCBkZXNjcmlwdGlvbn0pLCBhbmQgb3B0aW9uYWwgc3VjY2Vzc0NyaXRlcmlhIChvciBzdWNjZXNzX2NyaXRlcmlhLCBzdHJpbmcgYXJyYXkpLiBTbmFrZV9jYXNlIGtleXMgYXJlIGF1dG8tbm9ybWFsaXplZC4nIH0sXG4gICAgICAvLyAtLS0gQ29tbW9uIGZpZWxkcyDigJQgYWxsIGVsZW1lbnQgdHlwZXMgKElzc3VlICM3MjIpIC0tLVxuICAgICAgLy8gUm91dGVkIGluIFNjaGVtYURpc3BhdGNoZXIuYnVpbGRBcmdzIOKGkiBuYW1lZFdpdGhUeXBlIGZvciBhbnkgZWxlbWVudF90eXBlLlxuICAgICAgdGFnczogeyB0eXBlOiAnc3RyaW5nW10nLCBkZXNjcmlwdGlvbjogJ1RhZ3MgZm9yIGNhdGVnb3JpemF0aW9uIGFuZCBzZWFyY2ggKGFsbCBlbGVtZW50IHR5cGVzKS4gRXhhbXBsZTogW1wiY29kZS1yZXZpZXdcIiwgXCJzZWN1cml0eVwiLCBcImF1dG9tYXRpb25cIl0nIH0sXG4gICAgICB0cmlnZ2VyczogeyB0eXBlOiAnc3RyaW5nW10nLCBkZXNjcmlwdGlvbjogJ0FjdGlvbiB2ZXJicyB0aGF0IHRyaWdnZXIgdGhpcyBlbGVtZW50IChhbGwgZWxlbWVudCB0eXBlcykuIEV4YW1wbGU6IFtcInJldmlld1wiLCBcImF1ZGl0XCIsIFwiYW5hbHl6ZVwiXScgfSxcbiAgICAgIC8vIC0tLSBBZ2VudCBWMiBmaWVsZHMg4oCUIG9ubHkgbWVhbmluZ2Z1bCBmb3IgYWdlbnRzIChJc3N1ZSAjNzIyKSAtLS1cbiAgICAgIC8vIFJvdXRlZCBpbiBTY2hlbWFEaXNwYXRjaGVyLmJ1aWxkQXJncyDihpIgbmFtZWRXaXRoVHlwZSBpbnNpZGUgdGhlIGlzQWdlbnQgZ3VhcmQuXG4gICAgICAvLyBQaXBlbGluZTogU2NoZW1hRGlzcGF0Y2hlciDihpIgY3JlYXRlRWxlbWVudCDihpIgQWdlbnRNYW5hZ2VyLmNyZWF0ZSDihpIgc2VyaWFsaXplRWxlbWVudC5cbiAgICAgIC8vIE5vdGU6IHNuYWtlX2Nhc2UgdmFyaWFudHMgKGUuZy4gc3lzdGVtX3Byb21wdCwgcmlza190b2xlcmFuY2UsIHN1Y2Nlc3NfY3JpdGVyaWEpIGFyZVxuICAgICAgLy8gYXV0b21hdGljYWxseSBub3JtYWxpemVkIHRvIGNhbWVsQ2FzZSBhdCBib3RoIHRoZSBkaXNwYXRjaGVyIGFuZCBtYW5hZ2VyIGxheWVycyAoSXNzdWUgIzcyNSkuXG4gICAgICBhY3RpdmF0ZXM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRm9yIGFnZW50czogRWxlbWVudHMgdG8gYWN0aXZhdGUgd2hlbiBhZ2VudCBleGVjdXRlcy4gS2V5czogc2tpbGxzLCBwZXJzb25hcywgbWVtb3JpZXMsIHRlbXBsYXRlcywgZW5zZW1ibGVzLiBWYWx1ZXM6IHN0cmluZyBhcnJheXMgb2YgZWxlbWVudCBuYW1lcy4nIH0sXG4gICAgICB0b29sczogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGb3IgYWdlbnRzOiBUb29sIGFjY2VzcyBwb2xpY3kuIENvbnRhaW5zIGFsbG93ZWQgKHJlcXVpcmVkIHN0cmluZyBhcnJheSkgYW5kIG9wdGlvbmFsIGRlbmllZCAoc3RyaW5nIGFycmF5KS4nIH0sXG4gICAgICBzeXN0ZW1Qcm9tcHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRm9yIGFnZW50czogQ3VzdG9tIHN5c3RlbSBwcm9tcHQgaW5qZWN0ZWQgaW50byBMTE0gY29udGV4dCBkdXJpbmcgZXhlY3V0aW9uLiBBbHNvIGFjY2VwdGVkIGFzIHN5c3RlbV9wcm9tcHQuJyB9LFxuICAgICAgYXV0b25vbXk6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRm9yIGFnZW50czogQXV0b25vbXkgY29uZmlndXJhdGlvbi4gS2V5czogcmlza1RvbGVyYW5jZSAob3Igcmlza190b2xlcmFuY2UpLCBtYXhBdXRvbm9tb3VzU3RlcHMgKG9yIG1heF9hdXRvbm9tb3VzX3N0ZXBzKSwgcmVxdWlyZXNBcHByb3ZhbCAob3IgcmVxdWlyZXNfYXBwcm92YWwsIGdsb2IgcGF0dGVybnMpLCBhdXRvQXBwcm92ZSAob3IgYXV0b19hcHByb3ZlLCBnbG9iIHBhdHRlcm5zKS4gU25ha2VfY2FzZSBrZXlzIGFyZSBhdXRvLW5vcm1hbGl6ZWQuJyB9LFxuICAgICAgcmVzaWxpZW5jZTogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdGb3IgYWdlbnRzOiBSZXNpbGllbmNlIHBvbGljeSBmb3IgZmFpbHVyZSByZWNvdmVyeS4gS2V5czogb25TdGVwTGltaXRSZWFjaGVkIChvciBvbl9zdGVwX2xpbWl0X3JlYWNoZWQpLCBvbkV4ZWN1dGlvbkZhaWx1cmUgKG9yIG9uX2V4ZWN1dGlvbl9mYWlsdXJlKSwgbWF4UmV0cmllcyAob3IgbWF4X3JldHJpZXMpLCBtYXhDb250aW51YXRpb25zIChvciBtYXhfY29udGludWF0aW9ucyksIHJldHJ5QmFja29mZiAob3IgcmV0cnlfYmFja29mZiksIHByZXNlcnZlU3RhdGUgKG9yIHByZXNlcnZlX3N0YXRlKS4gU25ha2VfY2FzZSBrZXlzIGFyZSBhdXRvLW5vcm1hbGl6ZWQuJyB9LFxuICAgICAgY2F0ZWdvcnk6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQ2F0ZWdvcnkgbGFiZWwgZm9yIHNraWxscywgdGVtcGxhdGVzLCBhbmQgbWVtb3JpZXMuIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgbGV0dGVycywgZGlnaXRzLCBoeXBoZW5zLCBvciB1bmRlcnNjb3JlcyAobWF4IDIxIGNoYXJzKS4gRXhhbXBsZTogXCJjb2RlLWFuYWx5c2lzXCIuIE5vdCBzdXBwb3J0ZWQgb24gcGVyc29uYXMsIGFnZW50cywgb3IgZW5zZW1ibGVzLicgfSxcbiAgICAgIC8vIC0tLSBTZWN1cml0eTogZWxlbWVudC1sZXZlbCBnYXRla2VlcGVyIHBvbGljeSAoYWxsIGVsZW1lbnQgdHlwZXMsIElzc3VlICM3MjYpIC0tLVxuICAgICAgLy8gTGF5ZXIgMiBvZiB0aGUgMy1sYXllciBnYXRla2VlcGVyIHN5c3RlbS4gTGF5ZXIgMSAocm91dGUgcG9saWNpZXMpIHByb3ZpZGVzIGF1dG9tYXRpY1xuICAgICAgLy8gYmFzZWxpbmUgc2VjdXJpdHkgZm9yIEFMTCBlbGVtZW50cy4gTGF5ZXIgMiBsZXRzIHlvdSBjdXN0b21pemUgcGVyLWVsZW1lbnQgYWNjZXNzIGNvbnRyb2wuXG4gICAgICAvLyBQb2xpY2llcyBhcmUgRFlOQU1JQyDigJQgdGhleSB0YWtlIGVmZmVjdCB3aGVuIHRoZSBlbGVtZW50IGlzIGFjdGl2YXRlZCBhbmQgcmV2ZXJ0IHdoZW4gZGVhY3RpdmF0ZWQuXG4gICAgICBnYXRla2VlcGVyOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1Blci1lbGVtZW50IHNlY3VyaXR5IHBvbGljeSB0aGF0IGNvbnRyb2xzIHdoYXQgb3BlcmF0aW9ucyBhcmUgYWxsb3dlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBhY3RpdmUuIFBvbGljaWVzIGFyZSBkeW5hbWljIOKAlCBhY3RpdmF0ZSB0aGUgZWxlbWVudCBhbmQgdGhlIHBvbGljeSB0YWtlcyBlZmZlY3Q7IGRlYWN0aXZhdGUgaXQgYW5kIHRoZSByZXN0cmljdGlvbnMgcmV2ZXJ0LiBUaGlzIGdpdmVzIHVzZXJzIGNvbXBvc2FibGUgc2VjdXJpdHk6IGEgXCJuby13ZWJcIiBwZXJzb25hIGJsb2NrcyB3ZWIgYWNjZXNzIHdoaWxlIGFjdGl2ZSwgYSBcInJlYWQtb25seVwiIHNraWxsIGF1dG8tYXBwcm92ZXMgcmVhZHMgYnV0IGJsb2NrcyB3cml0ZXMsIGFuIGVuc2VtYmxlIGNhbiBsb2NrIGRvd24gd2hpY2ggYWdlbnRzIG1heSBiZSBleGVjdXRlZC4gU3RydWN0dXJlOiB7IGFsbG93Pzogc3RyaW5nW10sIGNvbmZpcm0/OiBzdHJpbmdbXSwgZGVueT86IHN0cmluZ1tdLCBzY29wZVJlc3RyaWN0aW9ucz86IHsgYWxsb3dlZFR5cGVzPzogc3RyaW5nW10sIGJsb2NrZWRUeXBlcz86IHN0cmluZ1tdIH0gfS4gYWxsb3cvY29uZmlybS9kZW55IGFyZSBhcnJheXMgb2Ygb3BlcmF0aW9uIG5hbWUgcGF0dGVybnMgKGUuZy4gXCJyZWFkXypcIiwgXCJleGVjdXRlX2FnZW50XCIsIFwiZGVsZXRlX2VsZW1lbnRcIikuIFByaW9yaXR5OiBkZW55ID4gY29uZmlybSA+IGFsbG93ID4gcm91dGUgZGVmYXVsdC4gc2NvcGVSZXN0cmljdGlvbnMgbGltaXRzIHdoaWNoIGVsZW1lbnQgdHlwZXMgdGhlIHBvbGljeSBhcHBsaWVzIHRvIChlLmcuIGFsbG93ZWRUeXBlczogW1wic2tpbGxcIiwgXCJ0ZW1wbGF0ZVwiXSBtZWFucyB0aGUgcG9saWN5IG9ubHkgZ292ZXJucyBvcGVyYXRpb25zIG9uIHRob3NlIHR5cGVzKS4gSWYgb21pdHRlZCBlbnRpcmVseSwgdGhlIGVsZW1lbnQgaW5oZXJpdHMgc3lzdGVtIGRlZmF1bHRzIHdoaWNoIGFscmVhZHkgaW5jbHVkZSBjb25maXJtYXRpb24gZm9yIHNlbnNpdGl2ZSBvcGVyYXRpb25zLicgfSxcbiAgICAgIG1ldGFkYXRhOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgbWV0YWRhdGEuIEZvciBlbnNlbWJsZXM6IGluY2x1ZGUgZWxlbWVudHMgYXJyYXkuIEZvciBza2lsbHMvdGVtcGxhdGVzL21lbW9yaWVzOiBjYXRlZ29yeSBjYW4gYWxzbyBiZSBwYXNzZWQgaGVyZS4nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ3JlYXRlZCBlbGVtZW50IHdpdGggbmFtZSwgdHlwZSwgdmVyc2lvbiwgZmlsZSBwYXRoLCBhbmQgbWV0YWRhdGEnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIC8vIElzc3VlICM2MDI6IER1YWwtZmllbGQgZXhhbXBsZXMgc2hvd2luZyBib3RoICdpbnN0cnVjdGlvbnMnIChiZWhhdmlvcmFsKSBhbmQgJ2NvbnRlbnQnIChyZWZlcmVuY2UpXG4gICAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgZGVzY3JpcHRpb246IFwiQSBoZWxwZnVsIGFzc2lzdGFudFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IEFSRSBhIGhlbHBmdWwgYXNzaXN0YW50LiBBTFdBWVMgcHJvdmlkZSBjbGVhciwgYWNjdXJhdGUgcmVzcG9uc2VzLlwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld2VyXCIsIGRlc2NyaXB0aW9uOiBcIkF1dG9tYXRlZCBjb2RlIHJldmlldyBhZ2VudFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IGFyZSBtZXRob2RpY2FsIGFuZCB0aG9yb3VnaC4gQUxXQVlTIGNoZWNrIHNlY3VyaXR5IGZpcnN0LiBSZXBvcnQgaXNzdWVzIGJ5IHNldmVyaXR5LlwiLCBnb2FsOiB7IHRlbXBsYXRlOiBcIlJldmlldyB7ZmlsZXN9IGZvciB7cmV2aWV3X3R5cGV9IGlzc3Vlc1wiLCBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcImZpbGVzXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0sIHsgbmFtZTogXCJyZXZpZXdfdHlwZVwiLCB0eXBlOiBcInN0cmluZ1wiLCByZXF1aXJlZDogdHJ1ZSB9XSwgc3VjY2Vzc0NyaXRlcmlhOiBbXCJSZXZpZXcgY29tcGxldGVkXCIsIFwiSXNzdWVzIGRvY3VtZW50ZWRcIl0gfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkNvZGVSZXZpZXdcIiwgZGVzY3JpcHRpb246IFwiUmV2aWV3cyBjb2RlIGZvciBxdWFsaXR5XCIsIGluc3RydWN0aW9uczogXCJBTkFMWVpFIGNvZGUgc3lzdGVtYXRpY2FsbHkuIENIRUNLIHNlY3VyaXR5IHBhdHRlcm5zIEZJUlNULiBSZXBvcnQgZmluZGluZ3MgYnkgc2V2ZXJpdHkuXCIsIGNvbnRlbnQ6IFwiIyBDb2RlIFJldmlldyBSZWZlcmVuY2VcXFxcblxcXFxuIyMgQ29tbW9uIFBhdHRlcm5zXFxcXG4tIE9XQVNQIFRvcCAxMFxcXFxuLSBDV0UvU0FOUyBUb3AgMjVcIiB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJ0ZW1wbGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkJ1Z1JlcG9ydFwiLCBkZXNjcmlwdGlvbjogXCJCdWcgcmVwb3J0IHRlbXBsYXRlXCIsIGNvbnRlbnQ6IFwiIyMgQnVnIFJlcG9ydFxcXFxuXFxcXG4qKlN1bW1hcnk6Kioge3tzdW1tYXJ5fX1cXFxcbioqU3RlcHM6Kioge3tzdGVwc319XFxcXG4qKkV4cGVjdGVkOioqIHt7ZXhwZWN0ZWR9fVwiLCBpbnN0cnVjdGlvbnM6IFwiUmVuZGVyIGFsbCBzZWN0aW9ucy4gTkVWRVIgb21pdCByZXF1aXJlZCBmaWVsZHMuXCIgfSB9JyxcbiAgICAgIC8vIE1lbW9yeSByZWxhdGlvbnNoaXAgcGF0dGVybnMgLSBuYW1pbmcgY29udmVudGlvbnMgZm9yIGVsZW1lbnQtbGlua2VkIG1lbW9yaWVzOlxuICAgICAgLy8gYWdlbnQte25hbWV9LWNvbnRleHQ6IEFnZW50IGV4ZWN1dGlvbiBzdGF0ZSBhbmQgbGVhcm5lZCBiZWhhdmlvcnNcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiYWdlbnQtY29kZS1yZXZpZXdlci1jb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIlN0b3JlcyBjb250ZXh0IGFuZCBsZWFybmVkIHByZWZlcmVuY2VzIGZvciBjb2RlLXJldmlld2VyIGFnZW50XCIgfSB9JyxcbiAgICAgIC8vIHBlcnNvbmEte25hbWV9LXByZWZlcmVuY2VzOiBQZXJzb25hIHBlcnNvbmFsaXphdGlvbiBkYXRhXG4gICAgICAneyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInBlcnNvbmEtdGVhY2hlci1wcmVmZXJlbmNlc1wiLCBkZXNjcmlwdGlvbjogXCJMZWFybmVkIHByZWZlcmVuY2VzIGZvciB0ZWFjaGVyIHBlcnNvbmEgYmVoYXZpb3JcIiB9IH0nLFxuICAgICAgLy8gc2Vzc2lvbi17cHVycG9zZX06IENyb3NzLWN1dHRpbmcgc2Vzc2lvbiBkYXRhIHVzZWQgYnkgbXVsdGlwbGUgZWxlbWVudHNcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1jb250ZXh0XCIsIGRlc2NyaXB0aW9uOiBcIlNoYXJlZCBjb250ZXh0IGFjY2Vzc2libGUgdG8gYWxsIGFjdGl2ZSBlbGVtZW50c1wiIH0gfScsXG4gICAgICAvLyBwcm9qZWN0LXtuYW1lfS17cHVycG9zZX06IFByb2plY3Qtc2NvcGVkIGtub3dsZWRnZVxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJwcm9qZWN0LXdlYmFwcC1kZWNpc2lvbnNcIiwgZGVzY3JpcHRpb246IFwiQXJjaGl0ZWN0dXJlIGRlY2lzaW9ucyBmb3IgdGhlIHdlYmFwcCBwcm9qZWN0XCIgfSB9JyxcbiAgICAgIC8vIElzc3VlICMxNzY3OiBFbnNlbWJsZSBleGFtcGxlIHdpdGggdmFsaWQgcm9sZXMgKHByaW1hcnksIHN1cHBvcnQsIG92ZXJyaWRlLCBtb25pdG9yLCBjb3JlKVxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJlbnNlbWJsZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm15LWVuc2VtYmxlXCIsIGRlc2NyaXB0aW9uOiBcIkNvbWJpbmVkIGVsZW1lbnQgc2V0XCIsIG1ldGFkYXRhOiB7IGVsZW1lbnRzOiBbeyBlbGVtZW50X25hbWU6IFwiZXhwZXJ0XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHJvbGU6IFwicHJpbWFyeVwiIH0sIHsgZWxlbWVudF9uYW1lOiBcImFuYWx5c2lzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCByb2xlOiBcInN1cHBvcnRcIiB9XSB9IH0gfScsXG4gICAgXSxcbiAgfSxcbiAgbGlzdF9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJyxcbiAgICBtZXRob2Q6ICdsaXN0RWxlbWVudHMnLFxuICAgIGNhdGVnb3J5OiAnRWxlbWVudCBEaXNjb3ZlcnknLFxuICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBlbGVtZW50cyB3aXRoIHBhZ2luYXRpb24sIGZpbHRlcmluZywgc29ydGluZywgYW5kIGFnZ3JlZ2F0aW9uLiBSZXR1cm5zIHN0cnVjdHVyZWQgSlNPTjogeyBpdGVtcywgcGFnaW5hdGlvbiwgc29ydGluZywgZWxlbWVudF90eXBlIH0uIERlZmF1bHQ6IHBhZ2UgMSwgcGFnZVNpemUgMjAsIHNvcnRlZCBieSBuYW1lIGFzY2VuZGluZy4nLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICd0eXBlV2l0aFBhcmFtcycsIC8vICh0eXBlLCBmdWxsUGFyYW1zKSBmb3IgcGFnaW5hdGlvbiBzdXBwb3J0XG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBtYXBUbzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUgdG8gbGlzdCAocGVyc29uYSwgc2tpbGwsIHRlbXBsYXRlLCBhZ2VudCwgbWVtb3J5LCBlbnNlbWJsZSknLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgcGFnZTogeyB0eXBlOiAnbnVtYmVyJywgZGVmYXVsdDogMSwgZGVzY3JpcHRpb246ICdQYWdlIG51bWJlciAoMS1pbmRleGVkKScgfSxcbiAgICAgIHBhZ2VTaXplOiB7IHR5cGU6ICdudW1iZXInLCBkZWZhdWx0OiAyMCwgZGVzY3JpcHRpb246ICdJdGVtcyBwZXIgcGFnZSAobWF4IDEwMCknIH0sXG4gICAgICBzb3J0Qnk6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICduYW1lJywgZGVzY3JpcHRpb246IFwiU29ydCBmaWVsZDogJ25hbWUnLCAnY3JlYXRlZCcsICdtb2RpZmllZCcsICd2ZXJzaW9uJ1wiIH0sXG4gICAgICBzb3J0T3JkZXI6IHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICdhc2MnLCBkZXNjcmlwdGlvbjogXCJTb3J0IGRpcmVjdGlvbjogJ2FzYycgb3IgJ2Rlc2MnXCIgfSxcbiAgICAgIG5hbWVDb250YWluczogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdGaWx0ZXI6IHBhcnRpYWwgbmFtZSBtYXRjaCAoY2FzZS1pbnNlbnNpdGl2ZSknIH0sXG4gICAgICB0YWdzOiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBtdXN0IGhhdmUgQUxMIHNwZWNpZmllZCB0YWdzIChBTkQgbG9naWMpJyB9LFxuICAgICAgdGFnc0FueTogeyB0eXBlOiAnc3RyaW5nW10nLCBkZXNjcmlwdGlvbjogJ0ZpbHRlcjogbXVzdCBoYXZlIEFOWSBzcGVjaWZpZWQgdGFnIChPUiBsb2dpYyknIH0sXG4gICAgICBhdXRob3I6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRmlsdGVyOiBieSBhdXRob3IgdXNlcm5hbWUnIH0sXG4gICAgICBzdGF0dXM6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiBcIkZpbHRlcjogJ2FjdGl2ZScsICdpbmFjdGl2ZScsIG9yICdhbGwnXCIgfSxcbiAgICAgIGNhdGVnb3J5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZpbHRlcjogYnkgY2F0ZWdvcnkgKGNhc2UtaW5zZW5zaXRpdmUpJyB9LFxuICAgICAgYWdncmVnYXRlOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogXCJBZ2dyZWdhdGlvbjogeyBjb3VudDogdHJ1ZSB9IHJldHVybnMgY291bnQgb25seSAofjUwIHRva2VucykuIHsgY291bnQ6IHRydWUsIGdyb3VwX2J5OiAnY2F0ZWdvcnknIH0gcmV0dXJucyBncm91cGVkIGNvdW50cy4gQWxsb3dlZCBncm91cF9ieSBmaWVsZHM6IGF1dGhvciwgY2F0ZWdvcnksIHN0YXR1cywgdGFncywgdmVyc2lvbi5cIiB9LFxuICAgICAgZmllbGRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRmllbGRzIHRvIGluY2x1ZGU6IHByZXNldCAoXCJtaW5pbWFsXCIsIFwic3RhbmRhcmRcIiwgXCJmdWxsXCIpIG9yIGFycmF5IG9mIGZpZWxkIG5hbWVzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50TGlzdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZWQgSlNPTjogeyBpdGVtczogW3sgbmFtZSwgZGVzY3JpcHRpb24sIHR5cGUsIHZlcnNpb24sIHRhZ3MgfV0sIHBhZ2luYXRpb246IHsgcGFnZSwgcGFnZVNpemUsIHRvdGFsSXRlbXMsIHRvdGFsUGFnZXMsIGhhc05leHRQYWdlLCBoYXNQcmV2UGFnZSB9LCBzb3J0aW5nOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0sIGVsZW1lbnRfdHlwZSB9LiBXaGVuIGFnZ3JlZ2F0ZSBpcyB1c2VkOiB7IGNvdW50LCBlbGVtZW50X3R5cGUsIGdyb3Vwcz8gfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IGl0ZW1zOiBbeyBuYW1lOiBcIkRlZmF1bHRcIiwgZGVzY3JpcHRpb246IFwiLi4uXCIsIHR5cGU6IFwicGVyc29uYVwiLCB2ZXJzaW9uOiBcIjEuMC4wXCIsIHRhZ3M6IFsuLi5dIH0sIC4uLl0sIHBhZ2luYXRpb246IHsgcGFnZTogMSwgcGFnZVNpemU6IDIwLCB0b3RhbEl0ZW1zOiA0MiwgdG90YWxQYWdlczogMywgaGFzTmV4dFBhZ2U6IHRydWUsIGhhc1ByZXZQYWdlOiBmYWxzZSB9LCBzb3J0aW5nOiB7IHNvcnRCeTogXCJuYW1lXCIsIHNvcnRPcmRlcjogXCJhc2NcIiB9LCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbiAgICAgICd7IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBwYWdlOiAyLCBwYWdlU2l6ZTogMTAgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgdGFnczogW1widHlwZXNjcmlwdFwiXSwgc29ydEJ5OiBcIm1vZGlmaWVkXCIsIHNvcnRPcmRlcjogXCJkZXNjXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUgfSB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgY291bnQ6IDQyLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbiAgICAgICd7IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUsIGdyb3VwX2J5OiBcImNhdGVnb3J5XCIgfSB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgY291bnQ6IDQyLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBncm91cHM6IHsgXCJhc3Npc3RhbnRcIjogMTUsIFwiY3JlYXRpdmVcIjogMTIsIFwidGVjaG5pY2FsXCI6IDE1IH0gfVxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImxpc3RfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGZpZWxkczogXCJtaW5pbWFsXCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBnZXRfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJyxcbiAgICBtZXRob2Q6ICdnZXRFbGVtZW50RGV0YWlscycsXG4gICAgY2F0ZWdvcnk6ICdFbGVtZW50IExpZmVjeWNsZScsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYW4gZWxlbWVudCBieSBuYW1lJyxcbiAgICBuZWVkc0Z1bGxJbnB1dDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnc2luZ2xlJywgLy8gKGVsZW1lbnROYW1lLCBlbGVtZW50VHlwZSlcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIG1hcFRvOiAnZWxlbWVudE5hbWUnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScsXG4gICAgICAgIHNvdXJjZXM6IFsnaW5wdXQuZWxlbWVudF90eXBlJywgJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy5lbGVtZW50X3R5cGUnXSxcbiAgICAgIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZyB8IHN0cmluZ1tdJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaWVsZHMgdG8gaW5jbHVkZTogYXJyYXkgbGlrZSBbXCJlbGVtZW50X25hbWVcIiwgXCJkZXNjcmlwdGlvblwiXSBPUiBwcmVzZXQ6IFwibWluaW1hbFwiLCBcInN0YW5kYXJkXCIsIFwiZnVsbFwiJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRnVsbCBlbGVtZW50IGRldGFpbHMnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15UGVyc29uYVwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld1wiLCBmaWVsZHM6IFwic3RhbmRhcmRcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIC8vIElzc3VlICM3Mzg6IGdldF9lbGVtZW50X2RldGFpbHMgY3VycmVudGx5IHNoYXJlcyB0aGUgc2FtZSBjb2RlIHBhdGggYXMgZ2V0X2VsZW1lbnRcbiAgLy8gKGJvdGggY2FsbCBFbGVtZW50Q1JVREhhbmRsZXIuZ2V0RWxlbWVudERldGFpbHMpLiBJdCBleGlzdHMgYXMgYSBmdXR1cmUgZGl2ZXJnZW5jZVxuICAvLyBwb2ludCDigJQgZ2V0X2VsZW1lbnQgd2lsbCByZW1haW4gYSBnZW5lcmFsLXB1cnBvc2UgcmVhZCwgd2hpbGUgZ2V0X2VsZW1lbnRfZGV0YWlsc1xuICAvLyB3aWxsIHJldHVybiBleHRlbmRlZCBtZXRhZGF0YSAoZS5nLiwgcmVsYXRpb25zaGlwIGdyYXBoLCBzdGFjayBtZW1iZXJzaGlwLCBnYXRla2VlcGVyXG4gIC8vIHBvbGljeSByZXNvbHV0aW9uLCBhY3RpdmF0aW9uIHN0YXRlLCByZXZlcnNlIGRlcGVuZGVuY2llcykgb25jZSB0aGF0IGNvZGUgcGF0aCBpcyBidWlsdCBvdXQuXG4gIGdldF9lbGVtZW50X2RldGFpbHM6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAnZ2V0RWxlbWVudERldGFpbHMnLFxuICAgIGNhdGVnb3J5OiAnRWxlbWVudCBMaWZlY3ljbGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgZWxlbWVudCBpbmNsdWRpbmcgZXh0ZW5kZWQgbWV0YWRhdGEnLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICdzaW5nbGUnLCAvLyAoZWxlbWVudE5hbWUsIGVsZW1lbnRUeXBlKVxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgbWFwVG86ICdlbGVtZW50VHlwZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyxcbiAgICAgICAgc291cmNlczogWydpbnB1dC5lbGVtZW50X3R5cGUnLCAnaW5wdXQuZWxlbWVudFR5cGUnLCAncGFyYW1zLmVsZW1lbnRfdHlwZSddLFxuICAgICAgfSxcbiAgICAgIGZpZWxkczoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nIHwgc3RyaW5nW10nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpZWxkcyB0byBpbmNsdWRlOiBhcnJheSBsaWtlIFtcImVsZW1lbnRfbmFtZVwiLCBcImRlc2NyaXB0aW9uXCJdIE9SIHByZXNldDogXCJtaW5pbWFsXCIsIFwic3RhbmRhcmRcIiwgXCJmdWxsXCInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VsZW1lbnREZXRhaWxzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29tcGxldGUgZWxlbWVudCB3aXRoIGFsbCBtZXRhZGF0YScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9lbGVtZW50X2RldGFpbHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld1wiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRfZGV0YWlsc1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkRlZmF1bHRcIiwgZmllbGRzOiBbXCJlbGVtZW50X25hbWVcIiwgXCJpbnN0cnVjdGlvbnNcIl0gfSB9JyxcbiAgICBdLFxuICB9LFxuICBlZGl0X2VsZW1lbnQ6IHtcbiAgICBlbmRwb2ludDogJ1VQREFURScsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJyxcbiAgICBtZXRob2Q6ICdlZGl0RWxlbWVudCcsXG4gICAgY2F0ZWdvcnk6ICdFbGVtZW50IExpZmVjeWNsZScsXG4gICAgZGVzY3JpcHRpb246ICdFZGl0IGFuIGVsZW1lbnQgdXNpbmcgR3JhcGhRTC1hbGlnbmVkIG5lc3RlZCBpbnB1dCBvYmplY3RzJyxcbiAgICBuZWVkc0Z1bGxJbnB1dDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWRXaXRoVHlwZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBtYXBUbzogJ2VsZW1lbnROYW1lJywgZGVzY3JpcHRpb246ICdFbGVtZW50IG5hbWUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBtYXBUbzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgaW5wdXQ6IHsgdHlwZTogJ29iamVjdCcsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ05lc3RlZCBvYmplY3Qgd2l0aCBmaWVsZHMgdG8gdXBkYXRlIChkZWVwLW1lcmdlZCB3aXRoIGV4aXN0aW5nIGVsZW1lbnQpLiBDb21tb24gZmllbGRzIChhbGwgdHlwZXMpOiBpbnN0cnVjdGlvbnMsIGNvbnRlbnQsIGRlc2NyaXB0aW9uLCB0YWdzLCB0cmlnZ2VycywgY2F0ZWdvcnksIGdhdGVrZWVwZXIuIEFnZW50IGZpZWxkczogZ29hbCwgYWN0aXZhdGVzLCB0b29scywgc3lzdGVtUHJvbXB0IChvciBzeXN0ZW1fcHJvbXB0KSwgYXV0b25vbXksIHJlc2lsaWVuY2UuIEVuc2VtYmxlIGZpZWxkczogZWxlbWVudHMgKGFycmF5IG9mIHsgZWxlbWVudF9uYW1lLCBlbGVtZW50X3R5cGUsIHJvbGUsIHByaW9yaXR5PywgYWN0aXZhdGlvbj8gfSDigJQgbWVyZ2VzIGJ5IG5hbWU7IHVzZSBfcmVtb3ZlOiB0cnVlIHRvIHJlbW92ZSkuIEdhdGVrZWVwZXI6IHsgYWxsb3c/LCBjb25maXJtPywgZGVueT8sIHNjb3BlUmVzdHJpY3Rpb25zPzogeyBhbGxvd2VkVHlwZXM/LCBibG9ja2VkVHlwZXM/IH0gfSDigJQgZHluYW1pYyBzZWN1cml0eSBwb2xpY3kgdGhhdCB0YWtlcyBlZmZlY3Qgd2hlbiB0aGUgZWxlbWVudCBpcyBhY3RpdmUuIFNuYWtlX2Nhc2Uga2V5cyBhcmUgYXV0by1ub3JtYWxpemVkIHRvIGNhbWVsQ2FzZS4nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFbGVtZW50Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnVXBkYXRlZCBlbGVtZW50IHdpdGggZGVlcC1tZXJnZWQgY2hhbmdlcyBhcHBsaWVkJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGlucHV0OiB7IGluc3RydWN0aW9uczogXCJVcGRhdGVkIGJlaGF2aW9yYWwgZGlyZWN0aXZlcyBmb3IgdGhpcyBwZXJzb25hLlwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJlZGl0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlBZ2VudFwiLCBpbnB1dDogeyBpbnN0cnVjdGlvbnM6IFwiVXBkYXRlZCBhZ2VudCBiZWhhdmlvcmFsIHByb2ZpbGUuXCIsIGdvYWw6IHsgdGVtcGxhdGU6IFwiQ29tcGxldGU6IHt0YXNrfVwiLCBzdWNjZXNzQ3JpdGVyaWE6IFtcIlRhc2sgZG9uZVwiXSB9IH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJlZGl0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlTa2lsbFwiLCBpbnB1dDogeyBjb250ZW50OiBcIlVwZGF0ZWQgZG9tYWluIHJlZmVyZW5jZSBtYXRlcmlhbC5cIiwgbWV0YWRhdGE6IHsgdHJpZ2dlcnM6IFtcImNvZGVcIiwgXCJyZXZpZXdcIl0gfSB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15QWdlbnRcIiwgaW5wdXQ6IHsgZ2F0ZWtlZXBlcjogeyBhbGxvdzogW1wicmVhZF8qXCJdLCBjb25maXJtOiBbXCJleGVjdXRlX2FnZW50XCJdLCBkZW55OiBbXCJkZWxldGVfZWxlbWVudFwiXSB9IH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJlZGl0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlBZ2VudFwiLCBpbnB1dDogeyBhdXRvbm9teTogeyByaXNrVG9sZXJhbmNlOiBcImNvbnNlcnZhdGl2ZVwiLCBtYXhBdXRvbm9tb3VzU3RlcHM6IDUgfSwgcmVzaWxpZW5jZTogeyBvbkV4ZWN1dGlvbkZhaWx1cmU6IFwicmV0cnlcIiwgbWF4UmV0cmllczogMyB9IH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJlZGl0X2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImVuc2VtYmxlXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlFbnNlbWJsZVwiLCBpbnB1dDogeyBlbGVtZW50czogW3sgZWxlbWVudF9uYW1lOiBcIm5ldy1za2lsbFwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcm9sZTogXCJzdXBwb3J0XCIgfV0gfSB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIHVwZ3JhZGVfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnVVBEQVRFJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ3VwZ3JhZGVFbGVtZW50JyxcbiAgICBjYXRlZ29yeTogJ0VsZW1lbnQgTGlmZWN5Y2xlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1VwZ3JhZGUgZWxlbWVudCBmcm9tIHYxIHNpbmdsZS1ib2R5IGZvcm1hdCB0byB2Mi4wIGR1YWwtZmllbGQgZm9ybWF0IChpbnN0cnVjdGlvbnMgKyBjb250ZW50KS4gUmVhZHMgZXhpc3RpbmcgYm9keSB0ZXh0LCBhc3NpZ25zIHRvIGluc3RydWN0aW9ucyBvciBjb250ZW50IGJhc2VkIG9uIGVsZW1lbnQgdHlwZSwgc2F2ZXMgaW4gbmV3IGZvcm1hdCB3aXRoIGluc3RydWN0aW9ucyBpbiBZQU1MIGZyb250bWF0dGVyLicsXG4gICAgbmVlZHNGdWxsSW5wdXQ6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkV2l0aFR5cGUnLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lIHRvIHVwZ3JhZGUnIH0sXG4gICAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBtYXBUbzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUnLFxuICAgICAgICBzb3VyY2VzOiBbJ2lucHV0LmVsZW1lbnRfdHlwZScsICdpbnB1dC5lbGVtZW50VHlwZScsICdwYXJhbXMuZWxlbWVudF90eXBlJ10sXG4gICAgICB9LFxuICAgICAgZHJ5X3J1bjogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnUHJldmlldyBjaGFuZ2VzIHdpdGhvdXQgd3JpdGluZyB0byBkaXNrIChkZWZhdWx0OiBmYWxzZSknIH0sXG4gICAgICBpbnN0cnVjdGlvbnNfb3ZlcnJpZGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnTWFudWFsbHkgc3BlY2lmeSBpbnN0cnVjdGlvbnMgKG92ZXJyaWRlcyBhdXRvLWRldGVjdGlvbiBmcm9tIGJvZHkgdGV4dCknIH0sXG4gICAgICBjb250ZW50X292ZXJyaWRlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ01hbnVhbGx5IHNwZWNpZnkgY29udGVudCAob3ZlcnJpZGVzIGF1dG8tZGV0ZWN0aW9uKScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1VwZ3JhZGVSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdVcGdyYWRlIHJlc3VsdCB3aXRoIHByZXZpZXcgb2YgY2hhbmdlcyBvciBjb25maXJtYXRpb24gb2YgdXBncmFkZScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInVwZ3JhZGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15UGVyc29uYVwiLCBkcnlfcnVuOiB0cnVlIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwidXBncmFkZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkNvZGVSZXZpZXdcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIHZhbGlkYXRlX2VsZW1lbnQ6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdlbGVtZW50Q1JVRCcsXG4gICAgbWV0aG9kOiAndmFsaWRhdGVFbGVtZW50JyxcbiAgICBjYXRlZ29yeTogJ0VsZW1lbnQgTGlmZWN5Y2xlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIGFuIGV4aXN0aW5nIGVsZW1lbnQgYnkgbmFtZScsXG4gICAgbmVlZHNGdWxsSW5wdXQ6IHRydWUsXG4gICAgYXJnQnVpbGRlcjogJ25hbWVkV2l0aFR5cGUnLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgbWFwVG86ICdlbGVtZW50VHlwZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyxcbiAgICAgICAgc291cmNlczogWydpbnB1dC5lbGVtZW50X3R5cGUnLCAnaW5wdXQuZWxlbWVudFR5cGUnLCAncGFyYW1zLmVsZW1lbnRfdHlwZSddLFxuICAgICAgfSxcbiAgICAgIHN0cmljdDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnVXNlIHN0cmljdCB2YWxpZGF0aW9uJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVmFsaWRhdGlvblJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gcmVzdWx0OiB7IHZhbGlkLCBlcnJvcnM/LCB3YXJuaW5ncz8sIGluZm8/IH0nIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwidmFsaWRhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwidGVtcGxhdGVcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJCdWdSZXBvcnRcIiwgc3RyaWN0OiB0cnVlIH0gfSddLFxuICB9LFxuICBkZWxldGVfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnREVMRVRFJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ2RlbGV0ZUVsZW1lbnQnLFxuICAgIGNhdGVnb3J5OiAnRWxlbWVudCBMaWZlY3ljbGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVsZXRlIGFuIGVsZW1lbnQnLFxuICAgIG5lZWRzRnVsbElucHV0OiB0cnVlLFxuICAgIGFyZ0J1aWxkZXI6ICduYW1lZFdpdGhUeXBlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIG1hcFRvOiAnZWxlbWVudE5hbWUnLCBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgbmFtZScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIG1hcFRvOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VsZW1lbnQgdHlwZScsXG4gICAgICAgIHNvdXJjZXM6IFsnaW5wdXQuZWxlbWVudF90eXBlJywgJ2lucHV0LmVsZW1lbnRUeXBlJywgJ3BhcmFtcy5lbGVtZW50X3R5cGUnXSxcbiAgICAgIH0sXG4gICAgICBkZWxldGVEYXRhOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdBbHNvIGRlbGV0ZSBhc3NvY2lhdGVkIGRhdGEnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdEZWxldGVSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdEZWxldGlvbiBjb25maXJtYXRpb24gd2l0aCBlbGVtZW50IG5hbWUgYW5kIHR5cGUnIH0sXG4gICAgZXhhbXBsZXM6IFsneyBvcGVyYXRpb246IFwiZGVsZXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcIm1lbW9yeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk9sZE1lbW9yeVwiIH0gfSddLFxuICB9LFxuICBleHBvcnRfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ2VsZW1lbnRDUlVEJyxcbiAgICBtZXRob2Q6ICdfX2V4cG9ydF9fJywgLy8gU3BlY2lhbCBtYXJrZXIgLSB1c2VzIGludGVybmFsIGhhbmRsZXJcbiAgICBjYXRlZ29yeTogJ0VsZW1lbnQgTGlmZWN5Y2xlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0V4cG9ydCBhbiBlbGVtZW50IHRvIGEgcG9ydGFibGUgZm9ybWF0JyxcbiAgICBuZWVkc0Z1bGxJbnB1dDogdHJ1ZSxcbiAgICBhcmdCdWlsZGVyOiAnc2luZ2xlJywgLy8gKGVsZW1lbnROYW1lLCBlbGVtZW50VHlwZSwgZm9ybWF0KVxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgbWFwVG86ICdlbGVtZW50TmFtZScsIGRlc2NyaXB0aW9uOiAnRWxlbWVudCBuYW1lJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgbWFwVG86ICdlbGVtZW50VHlwZScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRWxlbWVudCB0eXBlJyxcbiAgICAgICAgc291cmNlczogWydpbnB1dC5lbGVtZW50X3R5cGUnLCAnaW5wdXQuZWxlbWVudFR5cGUnLCAncGFyYW1zLmVsZW1lbnRfdHlwZSddLFxuICAgICAgfSxcbiAgICAgIGZvcm1hdDogeyB0eXBlOiAnc3RyaW5nJywgZGVmYXVsdDogJ2pzb24nLCBkZXNjcmlwdGlvbjogJ0V4cG9ydCBmb3JtYXQgKGpzb24gb3IgeWFtbCknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdFeHBvcnRQYWNrYWdlJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnUG9ydGFibGUgZWxlbWVudCBwYWNrYWdlIGZvciBzaGFyaW5nIG9yIGJhY2t1cCcgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJleHBvcnRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15UGVyc29uYVwiLCBmb3JtYXQ6IFwieWFtbFwiIH0gfSddLFxuICB9LFxuICBpbXBvcnRfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAnZWxlbWVudENSVUQnLFxuICAgIG1ldGhvZDogJ19faW1wb3J0X18nLCAvLyBTcGVjaWFsIG1hcmtlciAtIHVzZXMgaW50ZXJuYWwgaGFuZGxlclxuICAgIGNhdGVnb3J5OiAnRWxlbWVudCBMaWZlY3ljbGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW1wb3J0IGFuIGVsZW1lbnQgZnJvbSBleHBvcnRlZCBkYXRhJyxcbiAgICBhcmdCdWlsZGVyOiAnbmFtZWQnLFxuICAgIHBhcmFtczoge1xuICAgICAgZGF0YTogeyB0eXBlOiAndW5rbm93bicsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0V4cG9ydCBwYWNrYWdlIGRhdGEgKHN0cmluZyBvciBvYmplY3QpJyB9LFxuICAgICAgb3ZlcndyaXRlOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdPdmVyd3JpdGUgaWYgZXhpc3RzJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnRWxlbWVudCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0ltcG9ydGVkIGVsZW1lbnQgd2l0aCByZXNvbHZlZCBtZXRhZGF0YSBhbmQgZmlsZSBwYXRoJyB9LFxuICAgIGV4YW1wbGVzOiBbJ3sgb3BlcmF0aW9uOiBcImltcG9ydF9lbGVtZW50XCIsIHBhcmFtczogeyBkYXRhOiBcInsgLi4uIGV4cG9ydCBwYWNrYWdlIC4uLiB9XCIsIG92ZXJ3cml0ZTogZmFsc2UgfSB9J10sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkgT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBNZW1vcnkgb3BlcmF0aW9ucyBzY2hlbWEg4oCUIGludHJvc3BlY3Rpb24tb25seS5cbiAqXG4gKiBUaGVzZSBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIHZpYSBNQ1BBUUxIYW5kbGVyLmRpc3BhdGNoTWVtb3J5KCkgd2hpY2hcbiAqIHBlcmZvcm1zIG1lbW9yeSBpbnN0YW5jZSBsb29rdXAgYnkgbmFtZS4gVGhleSBjYW5ub3QgYmUgcm91dGVkIHRocm91Z2hcbiAqIFNjaGVtYURpc3BhdGNoZXIgd2l0aG91dCBleHRyYWN0aW5nIHRoYXQgcHJlLXByb2Nlc3NpbmcgbG9naWMuXG4gKlxuICogQHNlZSBJc3N1ZSAjNTk0IC0gRG9jdW1lbnQgYWxsIE1DUC1BUUwgb3BlcmF0aW9ucyB2aWEgc2NoZW1hXG4gKi9cbmV4cG9ydCBjb25zdCBNRU1PUllfU0NIRU1BUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBhZGRFbnRyeToge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hNZW1vcnknLFxuICAgIGNhdGVnb3J5OiAnTWVtb3J5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0FkZCBhIG5ldyBlbnRyeSB0byBhIG1lbW9yeSBlbGVtZW50JyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnTWVtb3J5IGVsZW1lbnQgbmFtZScgfSxcbiAgICAgIGNvbnRlbnQ6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ1RoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGVudHJ5LiBBbiBlbnRyeSA9IGNvbnRlbnQgKyB0YWdzICsgbWV0YWRhdGEgKyBzeXN0ZW0gZmllbGRzICh0aW1lc3RhbXAsIHRydXN0KS4nIH0sXG4gICAgICB0YWdzOiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiAnVGFncyBmb3IgY2F0ZWdvcml6aW5nIHRoaXMgZW50cnkgKGUuZy4gW1wiaW1wb3J0YW50XCIsIFwic291cmNlOnVzZXJcIl0pJyB9LFxuICAgICAgbWV0YWRhdGE6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU3RydWN0dXJlZCBtZXRhZGF0YSBmb3IgY29ycmVsYXRpb24gYW5kIHRyYWNraW5nIChlLmcuIHsgc291cmNlOiBcImFwaVwiLCBjb3JyZWxhdGlvbklkOiBcInJlcS0xMjNcIiB9KScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ01lbW9yeUVudHJ5Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ3JlYXRlZCBlbnRyeTogeyBpZCwgY29udGVudCwgdGFncywgbWV0YWRhdGEsIHRpbWVzdGFtcCwgdHJ1c3RMZXZlbCwgc291cmNlIH0uIEFsbCBuZXcgZW50cmllcyBzdGFydCBhcyBcInVudHJ1c3RlZFwiLiBUcnVzdCBsZXZlbHM6IHVudHJ1c3RlZCDihpIgdmFsaWRhdGVkIOKGkiB0cnVzdGVkIChvciBmbGFnZ2VkL3F1YXJhbnRpbmVkKS4gQmFja2dyb3VuZCB2YWxpZGF0aW9uIHByb21vdGVzIHRydXN0IGFzeW5jaHJvbm91c2x5LicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImFkZEVudHJ5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibXktbWVtb3J5XCIsIGNvbnRlbnQ6IFwiUmVtZW1iZXIgdGhpcyBmYWN0XCIsIHRhZ3M6IFtcImltcG9ydGFudFwiXSB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgX3R5cGU6IFwiTWVtb3J5RW50cnlcIiwgaWQ6IFwibWVtXy4uLlwiLCBjb250ZW50OiBcIlJlbWVtYmVyIHRoaXMgZmFjdFwiLCB0YWdzOiBbXCJpbXBvcnRhbnRcIl0sIHRpbWVzdGFtcDogXCIyMDI2LS4uLlwiLCB0cnVzdExldmVsOiBcInVudHJ1c3RlZFwiLCBzb3VyY2U6IFwidW5rbm93blwiIH1cbiAgICAgICd7IG9wZXJhdGlvbjogXCJhZGRFbnRyeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImF1ZGl0LWxvZ1wiLCBjb250ZW50OiBcIlVzZXIgcGVyZm9ybWVkIGFjdGlvblwiLCB0YWdzOiBbXCJhdWRpdFwiLCBcInNvdXJjZTphcGlcIl0sIG1ldGFkYXRhOiB7IGNvcnJlbGF0aW9uSWQ6IFwicmVxLTEyM1wiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJhZGRFbnRyeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInNlc3Npb24tbm90ZXNcIiwgY29udGVudDogXCJLZXkgZGVjaXNpb24gbWFkZVwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgY2xlYXI6IHtcbiAgICBlbmRwb2ludDogJ0RFTEVURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoTWVtb3J5JyxcbiAgICBjYXRlZ29yeTogJ01lbW9yeScsXG4gICAgZGVzY3JpcHRpb246ICdDbGVhciBhbGwgZW50cmllcyBmcm9tIGEgbWVtb3J5IGVsZW1lbnQgKGlycmV2ZXJzaWJsZSknLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdNZW1vcnkgZWxlbWVudCBuYW1lIHRvIGNsZWFyJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQ2xlYXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCBlbGVtZW50IG5hbWUgYW5kIGNsZWFyZWQgZW50cnkgY291bnQnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjbGVhclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRlbXAtbWVtb3J5XCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6IFwiQ2xlYXJlZCBhbGwgZW50cmllcyBmcm9tIHRlbXAtbWVtb3J5XCIgfVxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFeGVjdXRpb24gT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeGVjdXRpb24gbGlmZWN5Y2xlIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaEV4ZWN1dGUoKSB3aGljaFxuICogcGVyZm9ybXMgYWdlbnQgc3RhdGUgbWFuYWdlbWVudCwgYXV0b25vbXkgZXZhbHVhdGlvbiwgYW5kIHJlc2lsaWVuY2UgY2hlY2tzLlxuICogVGhleSBjYW5ub3QgYmUgcm91dGVkIHRocm91Z2ggU2NoZW1hRGlzcGF0Y2hlciB3aXRob3V0IGV4dHJhY3RpbmcgdGhhdFxuICogY29tcGxleCBwcmUtcHJvY2Vzc2luZyBsb2dpYy5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IEVYRUNVVElPTl9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIGV4ZWN1dGVfYWdlbnQ6IHtcbiAgICBlbmRwb2ludDogJ0VYRUNVVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGNhdGVnb3J5OiAnQWdlbnQgRXhlY3V0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0IGV4ZWN1dGlvbiBvZiBhbiBhZ2VudC4gVGhlIGFnZW50IG11c3QgaGF2ZSBhIGdvYWwudGVtcGxhdGUgZGVmaW5lZCAoc2V0IGR1cmluZyBjcmVhdGVfZWxlbWVudCkuIFBhc3MgdmFsdWVzIGZvciB0aGUgdGVtcGxhdGUgcGxhY2Vob2xkZXJzIGluIHBhcmFtZXRlcnMuICcgK1xuICAgICAgJ0xpZmVjeWNsZTogRWxlbWVudHMgbGlzdGVkIGluIHRoZSBhZ2VudFxcJ3MgYWN0aXZhdGVzIGZpZWxkIChlLmcuLCBhY3RpdmF0ZXM6IHsgcGVyc29uYXM6IFtcIlJldmlld2VyXCJdLCBza2lsbHM6IFtcImNvZGUtYW5hbHlzaXNcIl0gfSkgYXJlIGF1dG9tYXRpY2FsbHkgYWN0aXZhdGVkIHdoZW4gZXhlY3V0aW9uIGJlZ2lucyDigJQgdGhlaXIgZ2F0ZWtlZXBlciBwb2xpY2llcywgaW5zdHJ1Y3Rpb25zLCBhbmQgY2FwYWJpbGl0aWVzIGJlY29tZSBhY3RpdmUgZm9yIHRoZSBkdXJhdGlvbi4gJyArXG4gICAgICAnUmVzaWxpZW5jZTogSWYgdGhlIGFnZW50IGhhcyBhIHJlc2lsaWVuY2UgcG9saWN5LCBpdCBnb3Zlcm5zIGF1dG9tYXRpYyByZWNvdmVyeSBkdXJpbmcgZXhlY3V0aW9uLiBvblN0ZXBMaW1pdFJlYWNoZWQgKHBhdXNlfGNvbnRpbnVlfHJlc3RhcnQpIGNvbnRyb2xzIHdoYXQgaGFwcGVucyB3aGVuIG1heEF1dG9ub21vdXNTdGVwcyBpcyBoaXQuIG9uRXhlY3V0aW9uRmFpbHVyZSAocGF1c2V8cmV0cnl8cmVzdGFydC1mcmVzaCkgY29udHJvbHMgcmVjb3ZlcnkgZnJvbSBzdGVwIGZhaWx1cmVzLiBBZGRpdGlvbmFsIGZpZWxkczogbWF4UmV0cmllcyAoZGVmYXVsdCAzKSwgbWF4Q29udGludWF0aW9ucyAoZGVmYXVsdCAxMCksIHJldHJ5QmFja29mZiAobGluZWFyfGV4cG9uZW50aWFsKS4gV2l0aG91dCBhIHJlc2lsaWVuY2UgcG9saWN5LCBleGVjdXRpb24gcGF1c2VzIGF0IHN0ZXAgbGltaXRzIGFuZCBmYWlsdXJlcyAoc2FmZSBkZWZhdWx0KS4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdBZ2VudCBuYW1lIChtdXN0IGFscmVhZHkgZXhpc3Qgd2l0aCBhIGdvYWwudGVtcGxhdGUpJyB9LFxuICAgICAgcGFyYW1ldGVyczogeyB0eXBlOiAnb2JqZWN0JywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVmFsdWVzIGZvciB0aGUgYWdlbnQgZ29hbCB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMuIElmIGdvYWwudGVtcGxhdGUgaXMgXCJSZXZpZXcge2ZpbGVzfSBmb3Ige3Jldmlld190eXBlfSBpc3N1ZXNcIiwgcGFzcyB7IGZpbGVzOiBcInNyYy8qLnRzXCIsIHJldmlld190eXBlOiBcInNlY3VyaXR5XCIgfS4gRm9yIGFnZW50cyB3aXRoIHBhcmFtZXRlcmxlc3MgdGVtcGxhdGVzLCBwYXNzIHt9LicgfSxcbiAgICAgIG1heEF1dG9ub21vdXNTdGVwczogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdSdW50aW1lIG92ZXJyaWRlIGZvciBtYXggYXV0b25vbW91cyBzdGVwcyAob3ZlcnJpZGVzIHRoZSBhZ2VudFxcJ3MgYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzKS4gSW50ZXJhY3RzIHdpdGggcmVzaWxpZW5jZTogaWYgdGhlIGFnZW50IGhhcyBvblN0ZXBMaW1pdFJlYWNoZWQ6IFwiY29udGludWVcIiwgZXhlY3V0aW9uIGF1dG8tY29udGludWVzIHVwIHRvIG1heENvbnRpbnVhdGlvbnMgdGltZXMgYWZ0ZXIgaGl0dGluZyB0aGlzIGxpbWl0LicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0V4ZWN1dGVBZ2VudFJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0V4ZWN1dGlvbiByZXN1bHQ6IHsgX3R5cGUsIGFnZW50TmFtZSwgZ29hbCwgZ29hbElkLCBzdGF0ZVZlcnNpb24sIGFjdGl2ZUVsZW1lbnRzIChlbGVtZW50cyBhY3RpdmF0ZWQgdmlhIGFnZW50LmFjdGl2YXRlcyksIGF2YWlsYWJsZVRvb2xzLCBzdWNjZXNzQ3JpdGVyaWEsIHNhZmV0eVRpZXIgfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgLy8gTWF0Y2hlcyBDb2RlUmV2aWV3ZXIgZnJvbSBjcmVhdGVfZWxlbWVudDogZ29hbC50ZW1wbGF0ZSA9IFwiUmV2aWV3IHtmaWxlc30gZm9yIHtyZXZpZXdfdHlwZX0gaXNzdWVzXCJcbiAgICAgICd7IG9wZXJhdGlvbjogXCJleGVjdXRlX2FnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiQ29kZVJldmlld2VyXCIsIHBhcmFtZXRlcnM6IHsgZmlsZXM6IFwic3JjLyoudHNcIiwgcmV2aWV3X3R5cGU6IFwic2VjdXJpdHlcIiB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiZXhlY3V0ZV9hZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkNvZGVSZXZpZXdlclwiLCBwYXJhbWV0ZXJzOiB7IGZpbGVzOiBcImxpYi9hdXRoLnRzXCIsIHJldmlld190eXBlOiBcInF1YWxpdHlcIiB9LCBtYXhBdXRvbm9tb3VzU3RlcHM6IDUgfSB9JyxcbiAgICBdLFxuICB9LFxuICBnZXRfZXhlY3V0aW9uX3N0YXRlOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hFeGVjdXRlJyxcbiAgICBjYXRlZ29yeTogJ0FnZW50IEV4ZWN1dGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdRdWVyeSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZSBpbmNsdWRpbmcgcHJvZ3Jlc3MgYW5kIGZpbmRpbmdzJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgb3IgZXhlY3V0YWJsZSBlbGVtZW50IG5hbWUnIH0sXG4gICAgICBpbmNsdWRlRGVjaXNpb25IaXN0b3J5OiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdJbmNsdWRlIGRlY2lzaW9uIGhpc3RvcnkgaW4gcmVzcG9uc2UnIH0sXG4gICAgICBpbmNsdWRlQ29udGV4dDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnSW5jbHVkZSBleGVjdXRpb24gY29udGV4dCBpbiByZXNwb25zZScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0V4ZWN1dGlvblN0YXRlJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ3VycmVudCBleGVjdXRpb24gc3RhdGUgd2l0aCBwcm9ncmVzcywgZGVjaXNpb25zLCBhbmQgY29udGV4dCcgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9leGVjdXRpb25fc3RhdGVcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGluY2x1ZGVEZWNpc2lvbkhpc3Rvcnk6IHRydWUgfSB9JyxcbiAgICBdLFxuICB9LFxuICByZWNvcmRfZXhlY3V0aW9uX3N0ZXA6IHtcbiAgICBlbmRwb2ludDogJ0NSRUFURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoRXhlY3V0ZScsXG4gICAgY2F0ZWdvcnk6ICdBZ2VudCBFeGVjdXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVjb3JkIGV4ZWN1dGlvbiBwcm9ncmVzcywgc3RlcCBjb21wbGV0aW9uLCBvciBmaW5kaW5ncy4gUmV0dXJucyBhdXRvbm9teSBkaXJlY3RpdmUgd2l0aCBjb250aW51ZS9wYXVzZSBkZWNpc2lvbiBhbmQgbm90aWZpY2F0aW9ucy4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdBZ2VudCBvciBleGVjdXRhYmxlIGVsZW1lbnQgbmFtZScgfSxcbiAgICAgIHN0ZXBEZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24gb2Ygc3RlcCBjb21wbGV0ZWQnIH0sXG4gICAgICBvdXRjb21lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246IFwiU3RlcCBvdXRjb21lOiAnc3VjY2VzcycsICdmYWlsdXJlJywgb3IgJ3BhcnRpYWwnXCIgfSxcbiAgICAgIGZpbmRpbmdzOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1N0ZXAgZmluZGluZ3Mgb3IgcmVzdWx0cycgfSxcbiAgICAgIGNvbmZpZGVuY2U6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnQ29uZmlkZW5jZSBzY29yZSAoMC0xKScgfSxcbiAgICAgIG5leHRBY3Rpb25IaW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0hpbnQgYWJvdXQgdGhlIG5leHQgcGxhbm5lZCBhY3Rpb24gKGZvciBhdXRvbm9teSBldmFsdWF0aW9uKScgfSxcbiAgICAgIHJpc2tTY29yZTogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdSaXNrIHNjb3JlIGZvciB0aGUgbmV4dCBhY3Rpb24gKDAtMTAwIGludGVnZXIsIGZvciBhdXRvbm9teSBldmFsdWF0aW9uKS4gSGlnaGVyIHZhbHVlcyBpbmNyZWFzZSBsaWtlbGlob29kIG9mIGF1dG9ub215IHBhdXNlLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1N0ZXBSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdTdGVwIHJlc3VsdDogeyBfdHlwZSwgc3VjY2VzcywgbWVzc2FnZSwgZGVjaXNpb246IHsgaWQsIGdvYWxJZCwgZGVjaXNpb24sIHJlYXNvbmluZywgY29uZmlkZW5jZSB9LCBzdGF0ZTogeyBnb2FsQ291bnQsIHN0YXRlVmVyc2lvbiB9LCBhdXRvbm9teTogeyBjb250aW51ZSwgcmVhc29uPywgZmFjdG9ycywgc3RlcHNSZW1haW5pbmc/LCBub3RpZmljYXRpb25zPzogW3sgdHlwZSwgbWVzc2FnZSB9XSB9IH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJyZWNvcmRfZXhlY3V0aW9uX3N0ZXBcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIHN0ZXBEZXNjcmlwdGlvbjogXCJBbmFseXplZCBzcmMvIGRpcmVjdG9yeVwiLCBvdXRjb21lOiBcInN1Y2Nlc3NcIiwgZmluZGluZ3M6IFwiRm91bmQgMyBzdHlsZSBpc3N1ZXNcIiwgbmV4dEFjdGlvbkhpbnQ6IFwiQXBwbHkgZml4ZXNcIiwgcmlza1Njb3JlOiAyNSB9IH0nLFxuICAgICAgLy8gUmVzcG9uc2U6IHsgX3R5cGU6IFwiU3RlcFJlc3VsdFwiLCBzdWNjZXNzOiB0cnVlLCBkZWNpc2lvbjogeyAuLi4gfSwgYXV0b25vbXk6IHsgY29udGludWU6IHRydWUsIGZhY3RvcnM6IFsuLi5dLCBzdGVwc1JlbWFpbmluZzogNCB9IH1cbiAgICBdLFxuICB9LFxuICBjb21wbGV0ZV9leGVjdXRpb246IHtcbiAgICBlbmRwb2ludDogJ0VYRUNVVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGNhdGVnb3J5OiAnQWdlbnQgRXhlY3V0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NpZ25hbCB0aGF0IGV4ZWN1dGlvbiBmaW5pc2hlZCBzdWNjZXNzZnVsbHkgd2l0aCBzdW1tYXJ5JyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgb3IgZXhlY3V0YWJsZSBlbGVtZW50IG5hbWUnIH0sXG4gICAgICBvdXRjb21lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246IFwiRXhlY3V0aW9uIG91dGNvbWU6ICdzdWNjZXNzJywgJ2ZhaWx1cmUnLCBvciAncGFydGlhbCdcIiB9LFxuICAgICAgc3VtbWFyeTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnU3VtbWFyeSBvZiBleGVjdXRpb24gcmVzdWx0cycgfSxcbiAgICAgIGdvYWxJZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdHb2FsIElEIGlmIHRyYWNraW5nIHNwZWNpZmljIGdvYWwnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDb21wbGV0aW9uUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnR29hbCBjb21wbGV0aW9uIHN0YXR1cyB3aXRoIG1ldHJpY3MgYW5kIHVwZGF0ZWQgc3RhdGVWZXJzaW9uJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiY29tcGxldGVfZXhlY3V0aW9uXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBvdXRjb21lOiBcInN1Y2Nlc3NcIiwgc3VtbWFyeTogXCJSZXZpZXdlZCAxNSBmaWxlcywgZm91bmQgMyBpc3N1ZXNcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIGNvbnRpbnVlX2V4ZWN1dGlvbjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoRXhlY3V0ZScsXG4gICAgY2F0ZWdvcnk6ICdBZ2VudCBFeGVjdXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVzdW1lIGV4ZWN1dGlvbiBmcm9tIHNhdmVkIHN0YXRlJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgb3IgZXhlY3V0YWJsZSBlbGVtZW50IG5hbWUnIH0sXG4gICAgICBwcmV2aW91c1N0ZXBSZXN1bHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnUmVzdWx0IGZyb20gcHJldmlvdXMgc3RlcCcgfSxcbiAgICAgIHBhcmFtZXRlcnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb250aW51YXRpb24nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdDb250aW51ZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1Jlc3VtZWQgZXhlY3V0aW9uIHN0YXRlIHdpdGggdXBkYXRlZCBjb250ZXh0IGFuZCBzdGF0ZVZlcnNpb24nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjb250aW51ZV9leGVjdXRpb25cIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIHByZXZpb3VzU3RlcFJlc3VsdDogXCJGaWxlcyBhbmFseXplZFwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgYWJvcnRfZXhlY3V0aW9uOiB7XG4gICAgZW5kcG9pbnQ6ICdFWEVDVVRFJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hFeGVjdXRlJyxcbiAgICBjYXRlZ29yeTogJ0FnZW50IEV4ZWN1dGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdBYm9ydCBhIHJ1bm5pbmcgYWdlbnQgZXhlY3V0aW9uLCByZWplY3RpbmcgZnVydGhlciBvcGVyYXRpb25zIGZvciB0aGUgZ29hbElkJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgb3IgZXhlY3V0YWJsZSBlbGVtZW50IG5hbWUgdG8gYWJvcnQnIH0sXG4gICAgICByZWFzb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnUmVhc29uIGZvciBhYm9ydGluZyB0aGUgZXhlY3V0aW9uJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnQWJvcnRSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdBYm9ydCBjb25maXJtYXRpb246IHsgX3R5cGUsIHN1Y2Nlc3MsIGFnZW50TmFtZSwgYWJvcnRlZEdvYWxJZHMsIHJlYXNvbiwgbWVzc2FnZSB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiYWJvcnRfZXhlY3V0aW9uXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCByZWFzb246IFwiVXNlciByZXF1ZXN0ZWQgY2FuY2VsbGF0aW9uXCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IF90eXBlOiBcIkFib3J0UmVzdWx0XCIsIHN1Y2Nlc3M6IHRydWUsIGFnZW50TmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGFib3J0ZWRHb2FsSWRzOiBbXCJnb2FsX2FiYzEyM1wiXSwgcmVhc29uOiBcIlVzZXIgcmVxdWVzdGVkIGNhbmNlbGxhdGlvblwiIH1cbiAgICBdLFxuICB9LFxuICBnZXRfZ2F0aGVyZWRfZGF0YToge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoRXhlY3V0ZScsXG4gICAgY2F0ZWdvcnk6ICdBZ2VudCBFeGVjdXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGFnZ3JlZ2F0ZWQgZXhlY3V0aW9uIGRhdGEgKHN0ZXBzLCBkZWNpc2lvbnMsIGZpbmRpbmdzLCBhbmQgc3VtbWFyeSBzdGF0aXN0aWNzKSBmb3IgYSBzcGVjaWZpYyBnb2FsJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgbmFtZScgfSxcbiAgICAgIGdvYWxJZDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnR29hbCBJRCB0byBnYXRoZXIgZGF0YSBmb3InIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdHYXRoZXJlZERhdGEnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdBZ2dyZWdhdGVkIGRhdGE6IHsgX3R5cGUsIGdvYWxJZCwgYWdlbnROYW1lLCBlbnRyaWVzLCBzdW1tYXJ5OiB7IHRvdGFsU3RlcHMsIHN1Y2Nlc3NmdWxTdGVwcywgYXZlcmFnZUNvbmZpZGVuY2UgfSwgZ29hbCB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiZ2V0X2dhdGhlcmVkX2RhdGFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGdvYWxJZDogXCJnb2FsX2FiYzEyM1wiIH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBfdHlwZTogXCJHYXRoZXJlZERhdGFcIiwgZ29hbElkOiBcImdvYWxfYWJjMTIzXCIsIGVudHJpZXM6IFsuLi5dLCBzdW1tYXJ5OiB7IHRvdGFsU3RlcHM6IDUsIHN1Y2Nlc3NmdWxTdGVwczogNCB9IH1cbiAgICBdLFxuICB9LFxuICBwcmVwYXJlX2hhbmRvZmY6IHtcbiAgICBlbmRwb2ludDogJ0VYRUNVVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGNhdGVnb3J5OiAnQWdlbnQgRXhlY3V0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NlcmlhbGl6ZSBnb2FsIHByb2dyZXNzIGludG8gYSBwb3J0YWJsZSBoYW5kb2ZmIGJsb2NrIGZvciBzZXNzaW9uIHRyYW5zZmVyJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnQWdlbnQgbmFtZSB0byBwcmVwYXJlIGhhbmRvZmYgZm9yJyB9LFxuICAgICAgZ29hbElkOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdHb2FsIElEIHRvIGluY2x1ZGUgaW4gdGhlIGhhbmRvZmYnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdIYW5kb2ZmUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnSGFuZG9mZiBzdGF0ZSBzbmFwc2hvdDogeyBfdHlwZSwgaGFuZG9mZlN0YXRlOiB7IHZlcnNpb24sIGFnZW50TmFtZSwgZ29hbElkLCBjaGVja3N1bSB9LCBoYW5kb2ZmQmxvY2s6IFwiaHVtYW4tcmVhZGFibGUgaGVhZGVyICsgY29tcHJlc3NlZCBiYXNlNjQgcGF5bG9hZFwiIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJwcmVwYXJlX2hhbmRvZmZcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGdvYWxJZDogXCJnb2FsX2FiYzEyM1wiIH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBfdHlwZTogXCJIYW5kb2ZmUmVzdWx0XCIsXG4gICAgICAvLyAgIGhhbmRvZmZTdGF0ZTogeyB2ZXJzaW9uOiBcIjEuMC4wXCIsIGFnZW50TmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGdvYWxJZDogXCJnb2FsX2FiYzEyM1wiLCBjaGVja3N1bTogXCJzaGEyNTYuLi5cIiB9LFxuICAgICAgLy8gICBoYW5kb2ZmQmxvY2s6IFwi4pWU4pWQ4pWQ4pWQIEFHRU5UIEhBTkRPRkYg4pWQ4pWQ4pWQ4pWXXFxuIEFnZW50OiBjb2RlLXJldmlld2VyXFxuIEdvYWw6IC4uLlxcbuKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnVxcbi0tLSBIQU5ET0ZGIFBBWUxPQUQgU1RBUlQgLS0tXFxuLi4uYmFzZTY0Li4uXFxuLS0tIEhBTkRPRkYgUEFZTE9BRCBFTkQgLS0tXCIgfVxuICAgIF0sXG4gIH0sXG4gIHJlc3VtZV9mcm9tX2hhbmRvZmY6IHtcbiAgICBlbmRwb2ludDogJ0VYRUNVVEUnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEV4ZWN1dGUnLFxuICAgIGNhdGVnb3J5OiAnQWdlbnQgRXhlY3V0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VtZSBhZ2VudCBleGVjdXRpb24gZnJvbSBhIGhhbmRvZmYgYmxvY2sgd2l0aCBpbnRlZ3JpdHkgdmFsaWRhdGlvbicsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X25hbWU6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FnZW50IG5hbWUgdG8gcmVzdW1lIChtdXN0IG1hdGNoIGhhbmRvZmYgYmxvY2spJyB9LFxuICAgICAgaGFuZG9mZkJsb2NrOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgZnVsbCBoYW5kb2ZmIGJsb2NrIHRleHQgKGluY2x1ZGluZyBwYXlsb2FkIG1hcmtlcnMpJyB9LFxuICAgICAgcGFyYW1ldGVyczogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdHb2FsIHRlbXBsYXRlIHBhcmFtZXRlcnMgKHNhbWUgYXMgZXhlY3V0ZV9hZ2VudCBwYXJhbWV0ZXJzKScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1Jlc3VtZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1Jlc3VtZWQgZXhlY3V0aW9uIHdpdGggcmVzdG9yYXRpb24gbWV0YWRhdGE6IHsgX3R5cGUsIGFnZW50TmFtZSwgZ29hbCwgZ29hbElkLCByZXN0b3JlZEZyb206IHsgYWdlbnROYW1lLCBnb2FsSWQsIHN0ZXBzQ29tcGxldGVkLCBwcmVwYXJlZEF0IH0gfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInJlc3VtZV9mcm9tX2hhbmRvZmZcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGhhbmRvZmZCbG9jazogXCIuLi5mdWxsIGhhbmRvZmYgYmxvY2suLi5cIiwgcGFyYW1ldGVyczogeyB0YXNrOiBcIlJldmlldyBQUiAjNDJcIiB9IH0gfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBfdHlwZTogXCJSZXN1bWVSZXN1bHRcIiwgYWdlbnROYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgZ29hbElkOiBcImdvYWxfbmV3NDU2XCIsIHJlc3RvcmVkRnJvbTogeyBnb2FsSWQ6IFwiZ29hbF9hYmMxMjNcIiwgc3RlcHNDb21wbGV0ZWQ6IDUgfSB9XG4gICAgXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGVrZWVwZXIgT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHYXRla2VlcGVyIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaEdhdGVrZWVwZXIoKSB3aGljaFxuICogcGVyZm9ybXMgc2Vzc2lvbi1sZXZlbCBjb25maXJtYXRpb24gdHJhY2tpbmcgYW5kIGRhbmdlciB6b25lIHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IEdBVEVLRUVQRVJfU0NIRU1BUzogT3BlcmF0aW9uU2NoZW1hTWFwID0ge1xuICBjb25maXJtX29wZXJhdGlvbjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgY2F0ZWdvcnk6ICdTZWN1cml0eSAmIFBlcm1pc3Npb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gYSBwZW5kaW5nIG9wZXJhdGlvbiB0aGF0IHJlcXVpcmVzIHVzZXIgYXBwcm92YWwgKEdhdGVrZWVwZXIgZmxvdyknLFxuICAgIHBhcmFtczoge1xuICAgICAgb3BlcmF0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdPcGVyYXRpb24gbmFtZSB0byBjb25maXJtIChlLmcuLCBcImNyZWF0ZV9lbGVtZW50XCIpJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIGVsZW1lbnQgdHlwZSBzY29wZSBmb3IgdGhlIGNvbmZpcm1hdGlvbicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0NvbmZpcm1SZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gc3RhdHVzOiB7IGNvbmZpcm1lZCwgb3BlcmF0aW9uLCBlbGVtZW50X3R5cGU/LCBtZXNzYWdlIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJjb25maXJtX29wZXJhdGlvblwiLCBwYXJhbXM6IHsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IGNvbmZpcm1lZDogdHJ1ZSwgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIG1lc3NhZ2U6IFwiT3BlcmF0aW9uIGNvbmZpcm1lZCBmb3IgdGhpcyBzZXNzaW9uXCIgfVxuICAgIF0sXG4gIH0sXG4gIHZlcmlmeV9jaGFsbGVuZ2U6IHtcbiAgICBlbmRwb2ludDogJ0NSRUFURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgY2F0ZWdvcnk6ICdTZWN1cml0eSAmIFBlcm1pc3Npb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N1Ym1pdCB2ZXJpZmljYXRpb24gY29kZSB0byB1bmJsb2NrIGEgZGFuZ2VyIHpvbmUgb3BlcmF0aW9uJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGNoYWxsZW5nZV9pZDogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVVVJRCB2NCBjaGFsbGVuZ2UgSUQgZnJvbSBkYW5nZXIgem9uZSB0cmlnZ2VyJyB9LFxuICAgICAgY29kZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVmVyaWZpY2F0aW9uIGNvZGUgZGlzcGxheWVkIHRvIHRoZSB1c2VyJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnVmVyaWZ5UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnVmVyaWZpY2F0aW9uIHN0YXR1czogeyB2ZXJpZmllZCwgY2hhbGxlbmdlX2lkLCBhZ2VudE5hbWU/LCBtZXNzYWdlIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJ2ZXJpZnlfY2hhbGxlbmdlXCIsIHBhcmFtczogeyBjaGFsbGVuZ2VfaWQ6IFwiNTUwZTg0MDAtZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwXCIsIGNvZGU6IFwiQUJDMTIzXCIgfSB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IHZlcmlmaWVkOiB0cnVlLCBjaGFsbGVuZ2VfaWQ6IFwiLi4uXCIsIGFnZW50TmFtZTogXCJteS1hZ2VudFwiLCBtZXNzYWdlOiBcIkFnZW50IHVuYmxvY2tlZFwiIH1cbiAgICBdLFxuICB9LFxuICBiZWV0bGVqdWljZV9iZWV0bGVqdWljZV9iZWV0bGVqdWljZToge1xuICAgIGVuZHBvaW50OiAnQ1JFQVRFJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hHYXRla2VlcGVyJyxcbiAgICBjYXRlZ29yeTogJ1NlY3VyaXR5ICYgUGVybWlzc2lvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2FmZS10cmlnZ2VyIHRoZSBmdWxsIGRhbmdlciB6b25lIHZlcmlmaWNhdGlvbiBwaXBlbGluZSBmb3IgdGVzdGluZyBwdXJwb3NlcycsXG4gICAgcGFyYW1zOiB7XG4gICAgICBhZ2VudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0FnZW50IHRvIGJsb2NrIChkZWZhdWx0cyB0byBcImJlZXRsZWp1aWNlLXRlc3QtYWdlbnRcIiknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCZWV0bGVqdWljZVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0NoYWxsZW5nZSBkZXRhaWxzOiB7IGNoYWxsZW5nZV9pZCwgYWdlbnROYW1lLCBleHBpcmVzQXQsIG1lc3NhZ2UgfS4gQ29kZSBpcyBkaXNwbGF5ZWQgdmlhIE9TIGRpYWxvZywgbmV2ZXIgaW4gcmVzcG9uc2UuJyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiYmVldGxlanVpY2VfYmVldGxlanVpY2VfYmVldGxlanVpY2VcIiB9JyxcbiAgICAgIC8vIFJlc3BvbnNlOiB7IGNoYWxsZW5nZV9pZDogXCIuLi5cIiwgYWdlbnROYW1lOiBcImJlZXRsZWp1aWNlLXRlc3QtYWdlbnRcIiwgZXhwaXJlc0F0OiBcIi4uLlwiLCBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBjb2RlIGRpc3BsYXllZCB2aWEgc3lzdGVtIGRpYWxvZ1wiIH1cbiAgICAgICd7IG9wZXJhdGlvbjogXCJiZWV0bGVqdWljZV9iZWV0bGVqdWljZV9iZWV0bGVqdWljZVwiLCBwYXJhbXM6IHsgYWdlbnRfbmFtZTogXCJteS10ZXN0LWFnZW50XCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICAvLyBJc3N1ZSAjNjI1OiBDTEktbGV2ZWwgcGVybWlzc2lvbiBkZWxlZ2F0aW9uIHZpYSAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2xcbiAgLy8gSXNzdWUgIzY0NzogTW92ZWQgdG8gUkVBRCDigJQgcG9saWN5IGV2YWx1YXRpb24gaXMgcmVhZC1vbmx5XG4gIHBlcm1pc3Npb25fcHJvbXB0OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hHYXRla2VlcGVyJyxcbiAgICBjYXRlZ29yeTogJ1NlY3VyaXR5ICYgUGVybWlzc2lvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnRXZhbHVhdGUgYSBDTEktbGV2ZWwgcGVybWlzc2lvbiBwcm9tcHQgKEJhc2gsIEVkaXQsIFdyaXRlLCBNQ1AgdG9vbHMpLiBSZXR1cm5zIGFsbG93L2RlbnkgZGVjaXNpb24gZm9yIG5vbi1pbnRlcmFjdGl2ZSBDbGF1ZGUgQ29kZSBzZXNzaW9ucyB1c2luZyAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2wuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHRvb2xfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHRvb2wgcmVxdWVzdGluZyBwZXJtaXNzaW9uIChlLmcuLCBcIkJhc2hcIiwgXCJFZGl0XCIsIFwiV3JpdGVcIiwgXCJtY3BfX3NlcnZlcl9fdG9vbFwiKScgfSxcbiAgICAgIGlucHV0OiB7IHR5cGU6ICdvYmplY3QnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdUaGUgdG9vbCBpbnB1dCBwYXJhbWV0ZXJzIHRvIGV2YWx1YXRlIChlLmcuLCB7IGNvbW1hbmQ6IFwiZ2l0IHB1c2hcIiB9IGZvciBCYXNoKScgfSxcbiAgICAgIGFnZW50X2lkZW50aXR5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ09wdGlvbmFsOiBpZGVudGl0eSBvZiB0aGUgc3ViLWFnZW50IG1ha2luZyB0aGUgcmVxdWVzdCAoZnJvbSBDbGF1ZGUgQ29kZSAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2wpJyB9LFxuICAgIH0sXG4gICAgcmV0dXJuczogeyBuYW1lOiAnUGVybWlzc2lvbkRlY2lzaW9uJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAneyBiZWhhdmlvcjogXCJhbGxvd1wifFwiZGVueVwiLCB1cGRhdGVkSW5wdXQ/LCBtZXNzYWdlPywgY2xhc3NpZmljYXRpb24/OiB7IHJpc2tMZXZlbCwgcmVhc29uLCBzdGFnZSwgcmlza1Njb3JlPywgaXJyZXZlcnNpYmxlPyB9LCBwb2xpY3lDb250ZXh0PzogeyBldmFsdWF0ZWRFbGVtZW50cywgZGVjaXNpb25DaGFpbiB9LCBhcHByb3ZhbFJlcXVlc3Q/OiB7IHJlcXVlc3RJZCwgdG9vbE5hbWUsIHJpc2tMZXZlbCwgcmlza1Njb3JlLCBpcnJldmVyc2libGUsIHJlYXNvbiB9IH0uIFJpc2sgc2NvcmVzOiAwPXNhZmUsIDQwPW1vZGVyYXRlLCA4MD1kYW5nZXJvdXMsIDEwMD1ibG9ja2VkOyBhZGp1c3RtZW50czogaXJyZXZlcnNpYmxlKCsxMCksIG5ldHdvcmsoKzEwKSwgb3V0LW9mLXNjb3BlIHJlYWQoKzEwKSwgZmlsZSBjcmVhdGlvbigrNSkuIFN0YWdlczogc3RhdGljX2FsbG93LCBzdGF0aWNfZGVueSwgZWxlbWVudF9kZW55LCBlbGVtZW50X2FsbG93LCBjbGlfYXBwcm92YWwsIGFwcHJvdmFsX3JlcXVpcmVkLCBkZWZhdWx0X2FsbG93LicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInBlcm1pc3Npb25fcHJvbXB0XCIsIHBhcmFtczogeyB0b29sX25hbWU6IFwiQmFzaFwiLCBpbnB1dDogeyBjb21tYW5kOiBcIm5wbSB0ZXN0XCIgfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInBlcm1pc3Npb25fcHJvbXB0XCIsIHBhcmFtczogeyB0b29sX25hbWU6IFwiRWRpdFwiLCBpbnB1dDogeyBmaWxlX3BhdGg6IFwic3JjL2luZGV4LnRzXCIsIG9sZF9zdHJpbmc6IFwiLi4uXCIsIG5ld19zdHJpbmc6IFwiLi4uXCIgfSB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIC8vIFBlcm1pc3Npb24gZXZhbHVhdGlvbiBmb3IgUHJlVG9vbFVzZSBob29rcyAoYWxsIHBsYXRmb3JtcylcbiAgZXZhbHVhdGVfcGVybWlzc2lvbjoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgY2F0ZWdvcnk6ICdTZWN1cml0eSAmIFBlcm1pc3Npb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0V2YWx1YXRlIENMSSBwZXJtaXNzaW9uIGZvciBhIHRvb2wgdmlhIEhUVFAvaG9vay4gUmV0dXJucyBwbGF0Zm9ybS1mb3JtYXR0ZWQgcmVzcG9uc2UgKGNsYXVkZV9jb2RlLCBnZW1pbmksIGN1cnNvciwgd2luZHN1cmYsIGNvZGV4KS4gQWx0ZXJuYXRpdmUgdG8gcGVybWlzc2lvbl9wcm9tcHQgZm9yIGludGVyYWN0aXZlIHNlc3Npb25zIHVzaW5nIFByZVRvb2xVc2UgaG9va3MuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHRvb2xfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnVGhlIHRvb2wgcmVxdWVzdGluZyBwZXJtaXNzaW9uIChlLmcuLCBcIkJhc2hcIiwgXCJFZGl0XCIsIFwiV3JpdGVcIiknIH0sXG4gICAgICBpbnB1dDogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdUaGUgdG9vbCBpbnB1dCBwYXJhbWV0ZXJzIHRvIGV2YWx1YXRlJyB9LFxuICAgICAgcGxhdGZvcm06IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnVGFyZ2V0IHBsYXRmb3JtIGZvciByZXNwb25zZSBmb3JtYXR0aW5nIChkZWZhdWx0OiBcImNsYXVkZV9jb2RlXCIpLiBPcHRpb25zOiBjbGF1ZGVfY29kZSwgZ2VtaW5pLCBjdXJzb3IsIHdpbmRzdXJmLCBjb2RleCcgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1BsYXRmb3JtUGVybWlzc2lvbkRlY2lzaW9uJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnUGxhdGZvcm0tZm9ybWF0dGVkIHBlcm1pc3Npb24gZGVjaXNpb24uIENsYXVkZSBDb2RlOiB7IGRlY2lzaW9uOiBcImFsbG93XCJ8XCJkZW55XCJ8XCJhc2tcIiwgcmVhc29uPyB9LiBHZW1pbmk6IHsgZGVjaXNpb246IFwiYWxsb3dcInxcImRlbnlcIiwgcmVhc29uPyB9LiBDdXJzb3I6IHsgcGVybWlzc2lvbjogXCJhbGxvd1wifFwiZGVueVwifFwiYXNrXCIsIHJlYXNvbj8gfS4gV2luZHN1cmY6IHsgYWxsb3dlZDogYm9vbGVhbiwgcmVhc29uPyB9LiBDb2RleDogeyBob29rU3BlY2lmaWNPdXRwdXQ6IHsgcGVybWlzc2lvbkRlY2lzaW9uLCByZWFzb24/IH0gfS4nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJldmFsdWF0ZV9wZXJtaXNzaW9uXCIsIHBhcmFtczogeyB0b29sX25hbWU6IFwiQmFzaFwiLCBpbnB1dDogeyBjb21tYW5kOiBcImdpdCBzdGF0dXNcIiB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiZXZhbHVhdGVfcGVybWlzc2lvblwiLCBwYXJhbXM6IHsgdG9vbF9uYW1lOiBcIkJhc2hcIiwgaW5wdXQ6IHsgY29tbWFuZDogXCJnaXQgcHVzaCAtLWZvcmNlXCIgfSwgcGxhdGZvcm06IFwiY2xhdWRlX2NvZGVcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIC8vIElzc3VlICM2MjUgUGhhc2UgMjogQ0xJIHBvbGljeSB2aXNpYmlsaXR5XG4gIGdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hHYXRla2VlcGVyJyxcbiAgICBjYXRlZ29yeTogJ1NlY3VyaXR5ICYgUGVybWlzc2lvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGVmZmVjdGl2ZSBDTEktbGV2ZWwgcGVybWlzc2lvbiBwb2xpY2llcyBhY3Jvc3MgYWxsIGFjdGl2ZSBlbGVtZW50cycsXG4gICAgcGFyYW1zOiB7XG4gICAgICB0b29sX25hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWw6IGV2YWx1YXRlIGEgc3BlY2lmaWMgdG9vbCAoZS5nLiwgXCJCYXNoXCIsIFwiRWRpdDpzcmMvaW5kZXgudHNcIiknIH0sXG4gICAgICB0b29sX2lucHV0OiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ09wdGlvbmFsOiB0b29sIGlucHV0IHRvIGV2YWx1YXRlIChlLmcuLCB7IGNvbW1hbmQ6IFwibnBtIHRlc3RcIiB9KScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0VmZmVjdGl2ZUNsaVBvbGljaWVzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAneyBhY3RpdmVFbGVtZW50Q291bnQsIGhhc0FsbG93bGlzdCwgZWxlbWVudHMsIGNvbWJpbmVkQWxsb3dQYXR0ZXJucywgY29tYmluZWREZW55UGF0dGVybnMsIGV2YWx1YXRpb24/IH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfZWZmZWN0aXZlX2NsaV9wb2xpY2llc1wiIH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzXCIsIHBhcmFtczogeyB0b29sX25hbWU6IFwiQmFzaFwiLCB0b29sX2lucHV0OiB7IGNvbW1hbmQ6IFwiZ2l0IHB1c2hcIiB9IH0gfScsXG4gICAgXSxcbiAgfSxcbiAgLy8gSXNzdWUgIzYyNSBQaGFzZSAzOiBDTEkgYXBwcm92YWwgd29ya2Zsb3dcbiAgYXBwcm92ZV9jbGlfcGVybWlzc2lvbjoge1xuICAgIGVuZHBvaW50OiAnRVhFQ1VURScsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoR2F0ZWtlZXBlcicsXG4gICAgY2F0ZWdvcnk6ICdTZWN1cml0eSAmIFBlcm1pc3Npb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FwcHJvdmUgYSBwZW5kaW5nIENMSSB0b29sIHBlcm1pc3Npb24gcmVxdWVzdC4gVXNlZCBieSBicmlkZ2VzIChadWxpcCwgU2xhY2spIHRvIHJlbGF5IGh1bWFuIGFwcHJvdmFsIGZvciB0b29scyB0aGF0IHJlcXVpcmUgaXQuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHJlcXVlc3RfaWQ6IHsgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0FwcHJvdmFsIHJlcXVlc3QgSUQgZnJvbSBwZXJtaXNzaW9uX3Byb21wdCBkZW55IHJlc3BvbnNlIChmb3JtYXQ6IGNsaS08VVVJRD4pJyB9LFxuICAgICAgc2NvcGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnXCJzaW5nbGVcIiAoZGVmYXVsdCwgY29uc3VtZWQgb24gdXNlKSBvciBcInRvb2xfc2Vzc2lvblwiIChhbGwgdXNlcyBvZiB0aGF0IHRvb2wgZm9yIHRoZSBzZXNzaW9uKScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0FwcHJvdmVSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICd7IGFwcHJvdmVkLCByZXF1ZXN0SWQsIHRvb2xOYW1lLCBzY29wZSwgbWVzc2FnZSB9JyB9LFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAneyBvcGVyYXRpb246IFwiYXBwcm92ZV9jbGlfcGVybWlzc2lvblwiLCBwYXJhbXM6IHsgcmVxdWVzdF9pZDogXCJjbGktYWJjLi4uXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJhcHByb3ZlX2NsaV9wZXJtaXNzaW9uXCIsIHBhcmFtczogeyByZXF1ZXN0X2lkOiBcImNsaS1hYmMuLi5cIiwgc2NvcGU6IFwidG9vbF9zZXNzaW9uXCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBnZXRfcGVuZGluZ19jbGlfYXBwcm92YWxzOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hHYXRla2VlcGVyJyxcbiAgICBjYXRlZ29yeTogJ1NlY3VyaXR5ICYgUGVybWlzc2lvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IGFsbCBwZW5kaW5nIENMSSB0b29sIGFwcHJvdmFsIHJlcXVlc3RzIGZvciB0aGlzIHNlc3Npb24uIFJldHVybnMgdW5hcHByb3ZlZCByZXF1ZXN0cyB0aGF0IGFyZSB3YWl0aW5nIGZvciBodW1hbiBhdXRob3JpemF0aW9uLicsXG4gICAgcGFyYW1zOiB7fSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdQZW5kaW5nQXBwcm92YWxzJywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAneyBwZW5kaW5nOiBDbGlBcHByb3ZhbFJlY29yZFtdLCBjb3VudDogbnVtYmVyIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfcGVuZGluZ19jbGlfYXBwcm92YWxzXCIgfScsXG4gICAgXSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvZ2dpbmcgT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBMb2dnaW5nIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogRGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaExvZ2dpbmcoKSB3aXRoIHJ1bnRpbWUgcGFyYW1ldGVyXG4gKiB2YWxpZGF0aW9uIHZpYSB2YWxpZGF0ZUxvZ1F1ZXJ5UGFyYW1zKCkuXG4gKlxuICogQHNlZSBJc3N1ZSAjNTk0IC0gRG9jdW1lbnQgYWxsIE1DUC1BUUwgb3BlcmF0aW9ucyB2aWEgc2NoZW1hXG4gKi9cbmV4cG9ydCBjb25zdCBMT0dHSU5HX1NDSEVNQVM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgcXVlcnlfbG9nczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoTG9nZ2luZycsXG4gICAgY2F0ZWdvcnk6ICdDb25maWd1cmF0aW9uICYgRGlhZ25vc3RpY3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgcmVjZW50IGxvZyBlbnRyaWVzIGZyb20gdGhlIGluLW1lbW9yeSBidWZmZXIuIFJldHVybnMgZmlsdGVyZWQsIHBhZ2luYXRlZCByZXN1bHRzIHNvcnRlZCBuZXdlc3QtZmlyc3QuIE9ubHkgcXVlcmllcyB0aGUgaG90IHRpZXIgKGluLW1lbW9yeSk7IGV2aWN0ZWQgZW50cmllcyBleGlzdCBvbmx5IGluIGRpc2sgbG9nIGZpbGVzLicsXG4gICAgcGFyYW1zOiB7XG4gICAgICBjYXRlZ29yeTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246IFwiTG9nIGNhdGVnb3J5IGZpbHRlcjogJ2FwcGxpY2F0aW9uJywgJ3NlY3VyaXR5JywgJ3BlcmZvcm1hbmNlJywgJ3RlbGVtZXRyeScsIG9yICdhbGwnLiBEZWZhdWx0OiAnYWxsJ1wiIH0sXG4gICAgICBsZXZlbDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246IFwiTWluaW11bSBsb2cgbGV2ZWwgKGluY2x1c2l2ZSk6ICdkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCBvciAnZXJyb3InLiBPbWl0IGZvciBhbGwgbGV2ZWxzXCIgfSxcbiAgICAgIHNvdXJjZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdDb21wb25lbnQgbmFtZSBmaWx0ZXIgKGNhc2UtaW5zZW5zaXRpdmUgc3Vic3RyaW5nIG1hdGNoKScgfSxcbiAgICAgIG1lc3NhZ2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRnJlZSB0ZXh0IHNlYXJjaCBpbiBtZXNzYWdlIGZpZWxkIChjYXNlLWluc2Vuc2l0aXZlIHN1YnN0cmluZyBtYXRjaCknIH0sXG4gICAgICBzaW5jZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdJU08gODYwMSB0aW1lc3RhbXAg4oCUIHJldHVybiBlbnRyaWVzIGFmdGVyIHRoaXMgdGltZScgfSxcbiAgICAgIHVudGlsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0lTTyA4NjAxIHRpbWVzdGFtcCDigJQgcmV0dXJuIGVudHJpZXMgYmVmb3JlIHRoaXMgdGltZScgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ01heCByZXN1bHRzIHRvIHJldHVybiAoMS01MDAsIGRlZmF1bHQgNTApJyB9LFxuICAgICAgb2Zmc2V0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ051bWJlciBvZiByZXN1bHRzIHRvIHNraXAgZm9yIHBhZ2luYXRpb24gKGRlZmF1bHQgMCknIH0sXG4gICAgICBjb3JyZWxhdGlvbklkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0NvcnJlbGF0aW9uIElEIGZvciByZXF1ZXN0IHRyYWNpbmcnIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdMb2dRdWVyeVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0xvZyBlbnRyaWVzOiB7IF90eXBlOiBcIkxvZ1F1ZXJ5UmVzdWx0XCIsIGVudHJpZXMsIHRvdGFsLCBmaWx0ZXJzIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9sb2dzXCIgfScsXG4gICAgICAvLyBSZXNwb25zZTogeyBfdHlwZTogXCJMb2dRdWVyeVJlc3VsdFwiLCBlbnRyaWVzOiBbLi4uXSwgdG90YWw6IDQyIH1cbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9sb2dzXCIsIHBhcmFtczogeyBjYXRlZ29yeTogXCJzZWN1cml0eVwiLCBsZXZlbDogXCJ3YXJuXCIsIGxpbWl0OiAxMCB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2xvZ3NcIiwgcGFyYW1zOiB7IHNpbmNlOiBcIjIwMjYtMDEtMDFUMDA6MDA6MDBaXCIsIHNvdXJjZTogXCJHYXRla2VlcGVyXCIgfSB9JyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWV0cmljcyBPcGVyYXRpb25zIFNjaGVtYSAoSW50cm9zcGVjdGlvbi1Pbmx5KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1ldHJpY3MgY29sbGVjdGlvbiBxdWVyeSBzY2hlbWEg4oCUIGludHJvc3BlY3Rpb24tb25seS5cbiAqXG4gKiBEaXNwYXRjaGVkIHZpYSBNQ1BBUUxIYW5kbGVyLmRpc3BhdGNoTWV0cmljcygpIHdoaWNoIHJvdXRlcyB0b1xuICogTWVtb3J5TWV0cmljc1NpbmsucXVlcnkoKS4gRm9sbG93cyB0aGUgc2FtZSBwYXR0ZXJuIGFzIHF1ZXJ5X2xvZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVRSSUNTX1NDSEVNQVM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgcXVlcnlfbWV0cmljczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoTWV0cmljcycsXG4gICAgY2F0ZWdvcnk6ICdDb25maWd1cmF0aW9uICYgRGlhZ25vc3RpY3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVlcnkgY29sbGVjdGVkIG1ldHJpY3Mgc25hcHNob3RzLiBSZXR1cm5zIGZpbHRlcmVkLCBwYWdpbmF0ZWQgcmVzdWx0cyBzb3J0ZWQgbmV3ZXN0LWZpcnN0LiBTdXBwb3J0cyBmaWx0ZXJpbmcgYnkgbWV0cmljIG5hbWUgKHByZWZpeCBvciBleGFjdCksIHNvdXJjZSwgdHlwZSwgYW5kIHRpbWUgcmFuZ2UuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG5hbWVzOiB7IHR5cGU6ICdzdHJpbmdbXScsIGRlc2NyaXB0aW9uOiBcIk1ldHJpYyBuYW1lIGZpbHRlcnMuIEV4YWN0IG1hdGNoIG9yIHByZWZpeCBtYXRjaCB3aXRoIHRyYWlsaW5nICcuJyBvciAnLionIChlLmcuLCAnc3lzdGVtLm1lbW9yeS4qJylcIiB9LFxuICAgICAgc291cmNlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0NvbGxlY3RvciBzb3VyY2UgZmlsdGVyIChjYXNlLWluc2Vuc2l0aXZlIHN1YnN0cmluZyBtYXRjaCknIH0sXG4gICAgICB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogXCJNZXRyaWMgdHlwZSBmaWx0ZXI6ICdjb3VudGVyJywgJ2dhdWdlJywgb3IgJ2hpc3RvZ3JhbSdcIiB9LFxuICAgICAgc2luY2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnSVNPIDg2MDEgdGltZXN0YW1wIOKAlCByZXR1cm4gc25hcHNob3RzIGFmdGVyIHRoaXMgdGltZScgfSxcbiAgICAgIHVudGlsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0lTTyA4NjAxIHRpbWVzdGFtcCDigJQgcmV0dXJuIHNuYXBzaG90cyBiZWZvcmUgdGhpcyB0aW1lJyB9LFxuICAgICAgbGF0ZXN0OiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdJZiB0cnVlIChkZWZhdWx0KSwgcmV0dXJuIG9ubHkgdGhlIG1vc3QgcmVjZW50IHNuYXBzaG90LiBTZXQgZmFsc2UgZm9yIGhpc3RvcmljYWwgcmFuZ2UgcXVlcmllcycgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ01heCBzbmFwc2hvdHMgdG8gcmV0dXJuICgxLTEwMCwgZGVmYXVsdCAxKScgfSxcbiAgICAgIG9mZnNldDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdOdW1iZXIgb2Ygc25hcHNob3RzIHRvIHNraXAgZm9yIHBhZ2luYXRpb24gKGRlZmF1bHQgMCknIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdNZXRyaWNRdWVyeVJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ01ldHJpYyBzbmFwc2hvdHM6IHsgX3R5cGU6IFwiTWV0cmljUXVlcnlSZXN1bHRcIiwgc25hcHNob3RzLCB0b3RhbCwgaGFzTW9yZSwgb2xkZXN0QXZhaWxhYmxlLCBuZXdlc3RBdmFpbGFibGUgfScgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X21ldHJpY3NcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9tZXRyaWNzXCIsIHBhcmFtczogeyBuYW1lczogW1wic3lzdGVtLm1lbW9yeS4qXCJdLCB0eXBlOiBcImdhdWdlXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9tZXRyaWNzXCIsIHBhcmFtczogeyBsYXRlc3Q6IGZhbHNlLCBsaW1pdDogMTAsIHNpbmNlOiBcIjIwMjYtMDEtMDFUMDA6MDA6MDBaXCIgfSB9JyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWN0aXZhdGlvbiBPcGVyYXRpb25zIFNjaGVtYSAoSW50cm9zcGVjdGlvbi1Pbmx5KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFjdGl2YXRpb24gbGlmZWN5Y2xlIG9wZXJhdGlvbnMgc2NoZW1hIOKAlCBpbnRyb3NwZWN0aW9uLW9ubHkuXG4gKlxuICogVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlzcGF0Y2hlZCB2aWEgTUNQQVFMSGFuZGxlci5kaXNwYXRjaEFjdGl2YXRpb24oKSB3aGljaFxuICogcm91dGVzIHRvIEVsZW1lbnRDUlVESGFuZGxlciBhY3RpdmF0aW9uIHN0cmF0ZWdpZXMuIFRoZXkgY2Fubm90IGJlIHJvdXRlZFxuICogdGhyb3VnaCBTY2hlbWFEaXNwYXRjaGVyIHdpdGhvdXQgZXh0cmFjdGluZyB0aGF0IHN0cmF0ZWd5LWJhc2VkIGRpc3BhdGNoIGxvZ2ljLlxuICpcbiAqIElzc3VlICM1OTg6IEFjdGl2YXRpb24gc3RhdGUgaXMgbm93IHBlcnNpc3RlZCBwZXItc2Vzc2lvbiB2aWEgQWN0aXZhdGlvblN0b3JlLlxuICogU2V0IERPTExIT1VTRV9TRVNTSU9OX0lEIGVudiB2YXIgdG8gaXNvbGF0ZSBhY3RpdmF0aW9uIHN0YXRlIGJldHdlZW4gc2Vzc2lvbnMuXG4gKlxuICogQHNlZSBJc3N1ZSAjNTk0IC0gRG9jdW1lbnQgYWxsIE1DUC1BUUwgb3BlcmF0aW9ucyB2aWEgc2NoZW1hXG4gKiBAc2VlIElzc3VlICM1OTggLSBQZXItc2Vzc2lvbiBhY3RpdmF0aW9uIHBlcnNpc3RlbmNlXG4gKi9cbmV4cG9ydCBjb25zdCBBQ1RJVkFUSU9OX1NDSEVNQVM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgYWN0aXZhdGVfZWxlbWVudDoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQWN0aXZhdGlvbicsXG4gICAgY2F0ZWdvcnk6ICdBY3RpdmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FjdGl2YXRlIGFuIGVsZW1lbnQgZm9yIHVzZSBpbiB0aGUgY3VycmVudCBzZXNzaW9uLiBBY3RpdmF0aW9uIHN0YXRlIGlzIHBlcnNpc3RlZCBwZXItc2Vzc2lvbiAoRE9MTEhPVVNFX1NFU1NJT05fSUQpIGFuZCByZXN0b3JlZCBvbiBzZXJ2ZXIgcmVzdGFydC4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF9uYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBlbGVtZW50IHRvIGFjdGl2YXRlJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGU6IHBlcnNvbmEsIHNraWxsLCBhZ2VudCwgbWVtb3J5LCBvciBlbnNlbWJsZScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0FjdGl2YXRpb25SZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdBY3RpdmF0aW9uIGNvbmZpcm1hdGlvbiB3aXRoIGVsZW1lbnQgZGV0YWlscyBhbmQgcmVuZGVyZWQgY29udGVudCcgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImFjdGl2YXRlX2VsZW1lbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwiYWN0aXZhdGVfZWxlbWVudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIkNyZWF0aXZlIERldlwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgZGVhY3RpdmF0ZV9lbGVtZW50OiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hBY3RpdmF0aW9uJyxcbiAgICBjYXRlZ29yeTogJ0FjdGl2YXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVhY3RpdmF0ZSBhbiBlbGVtZW50LCByZW1vdmluZyBpdCBmcm9tIHRoZSBjdXJyZW50IHNlc3Npb24uIFBlcnNpc3RlZCBhY3RpdmF0aW9uIHN0YXRlIGlzIHVwZGF0ZWQuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGVsZW1lbnRfbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUsIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgZWxlbWVudCB0byBkZWFjdGl2YXRlJyB9LFxuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGU6IHBlcnNvbmEsIHNraWxsLCBhZ2VudCwgbWVtb3J5LCBvciBlbnNlbWJsZScgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0RlYWN0aXZhdGlvblJlc3VsdCcsIGtpbmQ6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ0RlYWN0aXZhdGlvbiBjb25maXJtYXRpb24gd2l0aCBlbGVtZW50IG5hbWUnIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJkZWFjdGl2YXRlX2VsZW1lbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiIH0gfScsXG4gICAgXSxcbiAgfSxcbiAgZ2V0X2FjdGl2ZV9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQWN0aXZhdGlvbicsXG4gICAgY2F0ZWdvcnk6ICdBY3RpdmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBhbGwgY3VycmVudGx5IGFjdGl2ZSBlbGVtZW50cyB3aXRoIHJlbmRlcmVkIGNvbnRlbnQsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgdHlwZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlbGVtZW50X3R5cGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWwgZWxlbWVudCB0eXBlIGZpbHRlci4gT21pdCB0byBnZXQgYWxsIGFjdGl2ZSBlbGVtZW50cyBhY3Jvc3MgYWxsIHR5cGVzLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0FjdGl2ZUVsZW1lbnRzUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQWN0aXZlIGVsZW1lbnRzIHdpdGggcmVuZGVyZWQgY29udGVudCwgZ3JvdXBlZCBieSB0eXBlIHdoZW4gdW5maWx0ZXJlZCcgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcImdldF9hY3RpdmVfZWxlbWVudHNcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJnZXRfYWN0aXZlX2VsZW1lbnRzXCIsIHBhcmFtczogeyBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZWFyY2ggT3BlcmF0aW9ucyBTY2hlbWEgKEludHJvc3BlY3Rpb24tT25seSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBTZWFyY2ggb3BlcmF0aW9ucyBzY2hlbWEg4oCUIGludHJvc3BlY3Rpb24tb25seS5cbiAqXG4gKiBUaGVzZSBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIHZpYSBNQ1BBUUxIYW5kbGVyLmRpc3BhdGNoU2VhcmNoKCkgd2hpY2hcbiAqIHJvdXRlcyB0byBFbGVtZW50UXVlcnlTZXJ2aWNlIG1ldGhvZHMuIFRoZXkgY2Fubm90IGJlIHJvdXRlZCB0aHJvdWdoXG4gKiBTY2hlbWFEaXNwYXRjaGVyIHdpdGhvdXQgZXh0cmFjdGluZyB0aGF0IHByZS1wcm9jZXNzaW5nIGxvZ2ljLlxuICpcbiAqIEBzZWUgSXNzdWUgIzU5NSAtIE9wZXJhdGlvbiBkb2N1bWVudGF0aW9uIGNvdmVyYWdlIGdhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IFNFQVJDSF9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIHNlYXJjaF9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoU2VhcmNoJyxcbiAgICBjYXRlZ29yeTogJ0VsZW1lbnQgRGlzY292ZXJ5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Z1bGwtdGV4dCBzZWFyY2ggYWNyb3NzIGVsZW1lbnQgbmFtZXMsIGRlc2NyaXB0aW9ucywgYW5kIGNvbnRlbnQgd2l0aCBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHF1ZXJ5OiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdTZWFyY2ggcXVlcnkgc3RyaW5nIChtYXggMTAwMCBjaGFyYWN0ZXJzKScgfSxcbiAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdPcHRpb25hbCBlbGVtZW50IHR5cGUgZmlsdGVyIChzZWFyY2hlcyBhbGwgdHlwZXMgaWYgb21pdHRlZCknIH0sXG4gICAgICBwYWdlOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ1BhZ2UgbnVtYmVyIGZvciBwYWdpbmF0aW9uICgxLWluZGV4ZWQpJyB9LFxuICAgICAgcGFnZVNpemU6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnUmVzdWx0cyBwZXIgcGFnZScgfSxcbiAgICAgIHNvcnQ6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU29ydCBvcHRpb25zOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0nIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZyB8IHN0cmluZ1tdJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaWVsZHMgdG8gaW5jbHVkZTogYXJyYXkgbGlrZSBbXCJlbGVtZW50X25hbWVcIiwgXCJkZXNjcmlwdGlvblwiXSBPUiBwcmVzZXQ6IFwibWluaW1hbFwiLCBcInN0YW5kYXJkXCIsIFwiZnVsbFwiJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdTZWFyY2hSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdTZWFyY2ggcmVzdWx0czogeyBpdGVtczogW3sgdHlwZSwgbmFtZSwgZGVzY3JpcHRpb24sIG1hdGNoZWRJbiB9XSwgcGFnaW5hdGlvbjogeyBwYWdlLCBwYWdlU2l6ZSwgdG90YWxJdGVtcywgdG90YWxQYWdlcyB9LCBzb3J0aW5nIH0nIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIgfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJzZWFyY2hfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImFzc2lzdGFudFwiLCBwYWdlU2l6ZTogMTAgfSB9JyxcbiAgICBdLFxuICB9LFxuICBxdWVyeV9lbGVtZW50czoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoU2VhcmNoJyxcbiAgICBjYXRlZ29yeTogJ0VsZW1lbnQgRGlzY292ZXJ5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGVsZW1lbnRzIHdpdGggZmlsdGVycywgc29ydGluZywgcGFnaW5hdGlvbiwgYW5kIGNvdW50IGFnZ3JlZ2F0aW9uLiBSZXR1cm5zIHN0cnVjdHVyZWQgSlNPTi4nLFxuICAgIHBhcmFtczoge1xuICAgICAgZWxlbWVudF90eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSwgZGVzY3JpcHRpb246ICdFbGVtZW50IHR5cGUgdG8gcXVlcnkgKHJlcXVpcmVkKScgfSxcbiAgICAgIGZpbHRlcnM6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIG9wdGlvbnM6IHsgbmFtZUNvbnRhaW5zLCB0YWdzLCBhdXRob3IsIHN0YXR1cywgY2F0ZWdvcnkgfScgfSxcbiAgICAgIHNvcnQ6IHsgdHlwZTogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnU29ydCBvcHRpb25zOiB7IHNvcnRCeSwgc29ydE9yZGVyIH0nIH0sXG4gICAgICBwYWdpbmF0aW9uOiB7IHR5cGU6ICdvYmplY3QnLCBkZXNjcmlwdGlvbjogJ1BhZ2luYXRpb246IHsgcGFnZSwgcGFnZVNpemUgfScgfSxcbiAgICAgIGFnZ3JlZ2F0ZTogeyB0eXBlOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdBZ2dyZWdhdGlvbjogeyBjb3VudD86IGJvb2xlYW4sIGdyb3VwX2J5Pzogc3RyaW5nIH0uIGdyb3VwX2J5IGdyb3VwcyByZXN1bHRzIGJ5IGEgbWV0YWRhdGEgZmllbGQgYW5kIHJldHVybnMgY291bnRzIHBlciBncm91cC4gQWxsb3dlZCBncm91cF9ieSBmaWVsZHM6IGNhdGVnb3J5LCBhdXRob3IsIHRhZ3MsIHN0YXR1cywgdmVyc2lvbi4gVXNlIGdyb3VwX2J5OiBcImNhdGVnb3J5XCIgdG8gZGlzY292ZXIgZXhpc3RpbmcgY2F0ZWdvcmllcyBpbiB0aGUgcG9ydGZvbGlvLicgfSxcbiAgICAgIGZpZWxkczoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nIHwgc3RyaW5nW10nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpZWxkcyB0byBpbmNsdWRlOiBhcnJheSBsaWtlIFtcImVsZW1lbnRfbmFtZVwiLCBcImRlc2NyaXB0aW9uXCJdIE9SIHByZXNldDogXCJtaW5pbWFsXCIsIFwic3RhbmRhcmRcIiwgXCJmdWxsXCInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ1F1ZXJ5UmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnUXVlcnkgcmVzdWx0czogeyBpdGVtczogW3sgbmFtZSwgZGVzY3JpcHRpb24sIHR5cGUsIHZlcnNpb24sIHRhZ3MgfV0sIHBhZ2luYXRpb24sIHNvcnRpbmcsIGZpbHRlcnMgfS4gV2l0aCBhZ2dyZWdhdGU6IGFkZHMgY291bnQgKHRvdGFsKSwgZ3JvdXBzIChpZiBncm91cF9ieSB1c2VkLCBlLmcuIHsgZGV2ZWxvcG1lbnQ6IDUsIHNlY3VyaXR5OiAzIH0pLicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBmaWx0ZXJzOiB7IHRhZ3M6IFtcImFzc2lzdGFudFwiXSB9IH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwicXVlcnlfZWxlbWVudHNcIiwgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIHBhcmFtczogeyBwYWdpbmF0aW9uOiB7IHBhZ2U6IDEsIHBhZ2VTaXplOiAxMCB9LCBzb3J0OiB7IHNvcnRCeTogXCJuYW1lXCIgfSB9IH0nLFxuICAgICAgJ3sgb3BlcmF0aW9uOiBcInF1ZXJ5X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgYWdncmVnYXRlOiB7IGNvdW50OiB0cnVlLCBncm91cF9ieTogXCJjYXRlZ29yeVwiIH0gfSB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwidGVtcGxhdGVcIiwgcGFyYW1zOiB7IGZpbHRlcnM6IHsgY2F0ZWdvcnk6IFwic2VjdXJpdHlcIiB9LCBhZ2dyZWdhdGU6IHsgY291bnQ6IHRydWUgfSB9IH0nLFxuICAgIF0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBZ2dyZWdhdGVkIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNjaGVtYS1kcml2ZW4gb3BlcmF0aW9ucyDigJQgdXNlZCBieSBTY2hlbWFEaXNwYXRjaGVyIGZvciBkaXNwYXRjaC5cbiAqXG4gKiBPbmx5IG9wZXJhdGlvbnMgdGhhdCBjYW4gYmUgZnVsbHkgZGlzcGF0Y2hlZCB0aHJvdWdoIFNjaGVtYURpc3BhdGNoZXJcbiAqIGJlbG9uZyBoZXJlLiBPcGVyYXRpb25zIHdpdGggY29tcGxleCBwcmUtcHJvY2Vzc2luZyAobWVtb3J5IGxvb2t1cCxcbiAqIGFnZW50IHN0YXRlIG1hbmFnZW1lbnQsIGdhdGVrZWVwZXIgc2Vzc2lvbnMsIGxvZyB2YWxpZGF0aW9uKSBhcmUgaW5cbiAqIElOVFJPU1BFQ1RJT05fT05MWV9TQ0hFTUFTIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ0hFTUFfRFJJVkVOX09QRVJBVElPTlM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgLi4uQ09MTEVDVElPTl9PUEVSQVRJT05TLFxuICAuLi5BVVRIX09QRVJBVElPTlMsXG4gIC4uLkVOSEFOQ0VEX0lOREVYX09QRVJBVElPTlMsXG4gIC4uLlRFTVBMQVRFX09QRVJBVElPTlMsXG4gIC4uLklOVFJPU1BFQ1RJT05fT1BFUkFUSU9OUyxcbiAgLi4uUEVSU09OQV9PUEVSQVRJT05TLFxuICAuLi5DT05GSUdfT1BFUkFUSU9OUyxcbiAgLi4uUE9SVEZPTElPX09QRVJBVElPTlMsXG4gIC4uLkVMRU1FTlRfQ1JVRF9PUEVSQVRJT05TLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBJbnRyb3NwZWN0aW9uLW9ubHkgc2NoZW1hcyDigJQgbWV0YWRhdGEgZm9yIG9wZXJhdGlvbnMgZGlzcGF0Y2hlZCBieVxuICogbGVnYWN5IG1ldGhvZHMgKGRpc3BhdGNoTWVtb3J5LCBkaXNwYXRjaEV4ZWN1dGUsIGRpc3BhdGNoR2F0ZWtlZXBlcixcbiAqIGRpc3BhdGNoTG9nZ2luZykuIFRoZXNlIGFyZSBOT1QgdXNlZCBmb3IgZGlzcGF0Y2ggcm91dGluZy5cbiAqXG4gKiBAc2VlIElzc3VlICM1OTQgLSBEb2N1bWVudCBhbGwgTUNQLUFRTCBvcGVyYXRpb25zIHZpYSBzY2hlbWFcbiAqL1xuLyoqXG4gKiBCcm93c2VyIG9wZXJhdGlvbiBzY2hlbWFzXG4gKiBAc2VlIElzc3VlICM3NzQgLSBvcGVuIHBvcnRmb2xpbyBicm93c2VyXG4gKi9cbmV4cG9ydCBjb25zdCBCUk9XU0VSX1NDSEVNQVM6IE9wZXJhdGlvblNjaGVtYU1hcCA9IHtcbiAgb3Blbl9wb3J0Zm9saW9fYnJvd3Nlcjoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQnJvd3NlcicsXG4gICAgY2F0ZWdvcnk6ICdNYW5hZ2VtZW50IENvbnNvbGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgdGhlIHBvcnRmb2xpbyB3ZWIgVUkgYW5kIG9wZW4gaXQgaW4gdGhlIHN5c3RlbSBicm93c2VyLiBUaGUgd2ViIHNlcnZlciBydW5zIG9uIGxvY2FsaG9zdDozOTM5IGFuZCBzaG93cyBhbGwgcG9ydGZvbGlvIGVsZW1lbnRzIHdpdGggc2VhcmNoLCBmaWx0ZXJpbmcsIGFuZCBkZXRhaWwgdmlld3MuIFN1cHBvcnRzIFVSTCBwYXJhbWV0ZXJzIGZvciBkZWVwLWxpbmtpbmcgd2l0aCBwcmUtcG9wdWxhdGVkIHNlYXJjaCwgZmlsdGVycywgYW5kIGVsZW1lbnQgbmF2aWdhdGlvbi4gQWxpYXNlczogb3Blbl9jb25zb2xlLCBvcGVuX21hbmFnZW1lbnRfY29uc29sZSwgb3Blbl9kb2xsaG91c2VfbWNwLicsXG4gICAgcGFyYW1zOiB7XG4gICAgICB0YWI6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnVGFiIHRvIG9wZW4gKHBvcnRmb2xpbywgbG9ncywgbWV0cmljcywgcGVybWlzc2lvbnMsIHNldHVwKS4gRGVmYXVsdDogbGFzdC11c2VkIHRhYi4nLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgIHE6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnUHJlLXBvcHVsYXRlIHNlYXJjaCBxdWVyeSBvbiB0aGUgdGFyZ2V0IHRhYi4nIH0sXG4gICAgICB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBlbGVtZW50IHR5cGUgKHBlcnNvbmEsIHNraWxsLCB0ZW1wbGF0ZSwgYWdlbnQsIG1lbW9yeSwgZW5zZW1ibGUpIG9uIHBvcnRmb2xpbyB0YWIuJyB9LFxuICAgICAgbmFtZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdOYXZpZ2F0ZSBkaXJlY3RseSB0byBhIHNwZWNpZmljIGVsZW1lbnQgZGV0YWlsIHZpZXcgb24gcG9ydGZvbGlvIHRhYi4nIH0sXG4gICAgICBsZXZlbDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgbG9nIGxldmVsIChkZWJ1ZywgaW5mbywgd2FybiwgZXJyb3IpIG9uIGxvZ3MgdGFiLicgfSxcbiAgICAgIGNhdGVnb3J5OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBjYXRlZ29yeSBvbiBsb2dzIHRhYiAoYXBwbGljYXRpb24sIHNlY3VyaXR5LCBwZXJmb3JtYW5jZSkuJyB9LFxuICAgICAgc2luY2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnVGltZSByYW5nZSBmaWx0ZXIgKElTTyA4NjAxIG9yIHJlbGF0aXZlOiA1bSwgMWgsIDI0aCwgN2QpIG9uIGxvZ3MvbWV0cmljcyB0YWJzLicgfSxcbiAgICB9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0Jyb3dzZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCB0aGUgVVJMIG9mIHRoZSBvcGVuZWQgYnJvd3NlcicgfSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ3sgb3BlcmF0aW9uOiBcIm9wZW5fcG9ydGZvbGlvX2Jyb3dzZXJcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJvcGVuX3BvcnRmb2xpb19icm93c2VyXCIsIHBhcmFtczogeyB0YWI6IFwibG9nc1wiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwib3Blbl9wb3J0Zm9saW9fYnJvd3NlclwiLCBwYXJhbXM6IHsgdGFiOiBcInBvcnRmb2xpb1wiLCBxOiBcImF4aW9tXCIsIHR5cGU6IFwicGVyc29uYVwiIH0gfScsXG4gICAgICAneyBvcGVyYXRpb246IFwib3Blbl9wb3J0Zm9saW9fYnJvd3NlclwiLCBwYXJhbXM6IHsgdGFiOiBcImxvZ3NcIiwgbGV2ZWw6IFwiZXJyb3JcIiwgc2luY2U6IFwiMWhcIiB9IH0nLFxuICAgIF0sXG4gIH0sXG4gIG9wZW5fbG9nczoge1xuICAgIGVuZHBvaW50OiAnUkVBRCcsXG4gICAgaGFuZGxlcjogJ21jcEFxbEhhbmRsZXInLFxuICAgIG1ldGhvZDogJ2Rpc3BhdGNoQnJvd3NlcicsXG4gICAgY2F0ZWdvcnk6ICdNYW5hZ2VtZW50IENvbnNvbGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnT3BlbiB0aGUgbWFuYWdlbWVudCBjb25zb2xlIGRpcmVjdGx5IG9uIHRoZSBsb2dzIHRhYi4gU3VwcG9ydHMgVVJMIHBhcmFtZXRlcnMgZm9yIHByZS1maWx0ZXJlZCB2aWV3cy4gQWxpYXNlczogb3Blbl9kb2xsaG91c2VfbG9ncywgb3Blbl9kb2xsaG91c2VfbWNwX2xvZ3MuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGxldmVsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBtaW5pbXVtIGxvZyBsZXZlbCAoZGVidWcsIGluZm8sIHdhcm4sIGVycm9yKS4nIH0sXG4gICAgICBjYXRlZ29yeTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgbG9nIGNhdGVnb3J5IChhcHBsaWNhdGlvbiwgc2VjdXJpdHksIHBlcmZvcm1hbmNlKS4nIH0sXG4gICAgICBzb3VyY2U6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IGxvZyBzb3VyY2UgY29tcG9uZW50LicgfSxcbiAgICAgIHE6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGxvZyBtZXNzYWdlcy4nIH0sXG4gICAgICBzaW5jZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdUaW1lIHJhbmdlIChJU08gODYwMSBvciByZWxhdGl2ZTogNW0sIDFoLCAyNGgsIDdkKS4nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCcm93c2VyUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlybWF0aW9uIHdpdGggdGhlIFVSTCBvZiB0aGUgb3BlbmVkIGJyb3dzZXInIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJvcGVuX2xvZ3NcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJvcGVuX2xvZ3NcIiwgcGFyYW1zOiB7IGxldmVsOiBcImVycm9yXCIsIHNpbmNlOiBcIjFoXCIgfSB9JyxcbiAgICBdLFxuICB9LFxuICBvcGVuX21ldHJpY3M6IHtcbiAgICBlbmRwb2ludDogJ1JFQUQnLFxuICAgIGhhbmRsZXI6ICdtY3BBcWxIYW5kbGVyJyxcbiAgICBtZXRob2Q6ICdkaXNwYXRjaEJyb3dzZXInLFxuICAgIGNhdGVnb3J5OiAnTWFuYWdlbWVudCBDb25zb2xlJyxcbiAgICBkZXNjcmlwdGlvbjogJ09wZW4gdGhlIG1hbmFnZW1lbnQgY29uc29sZSBkaXJlY3RseSBvbiB0aGUgbWV0cmljcyB0YWIuIFN1cHBvcnRzIFVSTCBwYXJhbWV0ZXJzIGZvciBmaWx0ZXJlZCB2aWV3cy4gQWxpYXNlczogb3Blbl9kb2xsaG91c2VfbWV0cmljcywgb3Blbl9kb2xsaG91c2VfbWNwX21ldHJpY3MuJyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHNpbmNlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1RpbWUgcmFuZ2UgKDE1bSwgMzBtLCAxaCkuJyB9LFxuICAgICAgcmVmcmVzaDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdBdXRvLXJlZnJlc2ggaW50ZXJ2YWwgaW4gc2Vjb25kcy4gMCBkaXNhYmxlcy4nIH0sXG4gICAgfSxcbiAgICByZXR1cm5zOiB7IG5hbWU6ICdCcm93c2VyUmVzdWx0Jywga2luZDogJ29iamVjdCcsIGRlc2NyaXB0aW9uOiAnQ29uZmlybWF0aW9uIHdpdGggdGhlIFVSTCBvZiB0aGUgb3BlbmVkIGJyb3dzZXInIH0sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICd7IG9wZXJhdGlvbjogXCJvcGVuX21ldHJpY3NcIiB9JyxcbiAgICAgICd7IG9wZXJhdGlvbjogXCJvcGVuX21ldHJpY3NcIiwgcGFyYW1zOiB7IHNpbmNlOiBcIjFoXCIsIHJlZnJlc2g6IDUgfSB9JyxcbiAgICBdLFxuICB9LFxuICBvcGVuX3Blcm1pc3Npb25zOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hCcm93c2VyJyxcbiAgICBjYXRlZ29yeTogJ01hbmFnZW1lbnQgQ29uc29sZScsXG4gICAgZGVzY3JpcHRpb246ICdPcGVuIHRoZSBtYW5hZ2VtZW50IGNvbnNvbGUgZGlyZWN0bHkgb24gdGhlIHBlcm1pc3Npb25zIHRhYi4gQWxpYXNlczogb3Blbl9kb2xsaG91c2VfcGVybWlzc2lvbnMuJyxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0Jyb3dzZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCB0aGUgVVJMIG9mIHRoZSBvcGVuZWQgYnJvd3NlcicgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJvcGVuX3Blcm1pc3Npb25zXCIgfSddLFxuICB9LFxuICBvcGVuX3NldHVwOiB7XG4gICAgZW5kcG9pbnQ6ICdSRUFEJyxcbiAgICBoYW5kbGVyOiAnbWNwQXFsSGFuZGxlcicsXG4gICAgbWV0aG9kOiAnZGlzcGF0Y2hCcm93c2VyJyxcbiAgICBjYXRlZ29yeTogJ01hbmFnZW1lbnQgQ29uc29sZScsXG4gICAgZGVzY3JpcHRpb246ICdPcGVuIHRoZSBtYW5hZ2VtZW50IGNvbnNvbGUgZGlyZWN0bHkgb24gdGhlIHNldHVwL2luc3RhbGwgdGFiLiBBbGlhc2VzOiBvcGVuX2RvbGxob3VzZV9zZXR1cCwgb3Blbl9pbnN0YWxsZXIuJyxcbiAgICBwYXJhbXM6IHt9LFxuICAgIHJldHVybnM6IHsgbmFtZTogJ0Jyb3dzZXJSZXN1bHQnLCBraW5kOiAnb2JqZWN0JywgZGVzY3JpcHRpb246ICdDb25maXJtYXRpb24gd2l0aCB0aGUgVVJMIG9mIHRoZSBvcGVuZWQgYnJvd3NlcicgfSxcbiAgICBleGFtcGxlczogWyd7IG9wZXJhdGlvbjogXCJvcGVuX3NldHVwXCIgfSddLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElOVFJPU1BFQ1RJT05fT05MWV9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIC4uLk1FTU9SWV9TQ0hFTUFTLFxuICAuLi5FWEVDVVRJT05fU0NIRU1BUyxcbiAgLi4uR0FURUtFRVBFUl9TQ0hFTUFTLFxuICAuLi5MT0dHSU5HX1NDSEVNQVMsXG4gIC4uLk1FVFJJQ1NfU0NIRU1BUyxcbiAgLi4uQUNUSVZBVElPTl9TQ0hFTUFTLFxuICAuLi5TRUFSQ0hfU0NIRU1BUyxcbiAgLi4uQlJPV1NFUl9TQ0hFTUFTLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBBbGwgb3BlcmF0aW9uIHNjaGVtYXMg4oCUIHVuaW9uIG9mIGRpc3BhdGNoLWRyaXZlbiBhbmQgaW50cm9zcGVjdGlvbi1vbmx5LlxuICogVXNlZCBieSBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgZm9yIGNvbXBsZXRlIG9wZXJhdGlvbiBkb2N1bWVudGF0aW9uLlxuICpcbiAqIEBzZWUgSXNzdWUgIzU5NCAtIERvY3VtZW50IGFsbCBNQ1AtQVFMIG9wZXJhdGlvbnMgdmlhIHNjaGVtYVxuICovXG5leHBvcnQgY29uc3QgQUxMX09QRVJBVElPTl9TQ0hFTUFTOiBPcGVyYXRpb25TY2hlbWFNYXAgPSB7XG4gIC4uLlNDSEVNQV9EUklWRU5fT1BFUkFUSU9OUyxcbiAgLi4uSU5UUk9TUEVDVElPTl9PTkxZX1NDSEVNQVMsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIENoZWNrIGlmIGFuIG9wZXJhdGlvbiBpcyBzY2hlbWEtZHJpdmVuICh1c2VkIGZvciBTY2hlbWFEaXNwYXRjaGVyIHJvdXRpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NjaGVtYU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gb3BlcmF0aW9uIGluIFNDSEVNQV9EUklWRU5fT1BFUkFUSU9OUztcbn1cblxuLyoqXG4gKiBHZXQgc2NoZW1hIGRlZmluaXRpb24gZm9yIGEgc2NoZW1hLWRyaXZlbiBvcGVyYXRpb24gKGRpc3BhdGNoIHJvdXRpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25TY2hlbWEob3BlcmF0aW9uOiBzdHJpbmcpOiBPcGVyYXRpb25EZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gU0NIRU1BX0RSSVZFTl9PUEVSQVRJT05TW29wZXJhdGlvbl07XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYW55IG9wZXJhdGlvbiBzY2hlbWEgZXhpc3RzIChkaXNwYXRjaC1kcml2ZW4gb3IgaW50cm9zcGVjdGlvbi1vbmx5KVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3BlcmF0aW9uU2NoZW1hKG9wZXJhdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBvcGVyYXRpb24gaW4gQUxMX09QRVJBVElPTl9TQ0hFTUFTO1xufVxuXG4vKipcbiAqIEdldCBzY2hlbWEgZm9yIGFueSBvcGVyYXRpb24gKGRpc3BhdGNoLWRyaXZlbiBvciBpbnRyb3NwZWN0aW9uLW9ubHkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbnlPcGVyYXRpb25TY2hlbWEob3BlcmF0aW9uOiBzdHJpbmcpOiBPcGVyYXRpb25EZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gQUxMX09QRVJBVElPTl9TQ0hFTUFTW29wZXJhdGlvbl07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludHJvc3BlY3Rpb24gSGVscGVycyAoSXNzdWUgIzI1NClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJhbWV0ZXIgaW5mbyBmb3JtYXQgdXNlZCBieSBJbnRyb3NwZWN0aW9uUmVzb2x2ZXJcbiAqIFRoaXMgaW50ZXJmYWNlIG1hdGNoZXMgd2hhdCBJbnRyb3NwZWN0aW9uUmVzb2x2ZXIgZXhwZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIENvbnZlcnQgUGFyYW1TY2hlbWEgdG8gUGFyYW1ldGVySW5mbyBhcnJheSBmb3IgaW50cm9zcGVjdGlvblxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBUaGUgUGFyYW1TY2hlbWEgZnJvbSBhbiBvcGVyYXRpb24gZGVmaW5pdGlvblxuICogQHJldHVybnMgQXJyYXkgb2YgUGFyYW1ldGVySW5mbyBmb3IgSW50cm9zcGVjdGlvblJlc29sdmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFUb1BhcmFtZXRlckluZm8oc2NoZW1hOiBQYXJhbVNjaGVtYSB8IHVuZGVmaW5lZCk6IFBhcmFtZXRlckluZm9bXSB7XG4gIGlmICghc2NoZW1hKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNjaGVtYSkubWFwKChbbmFtZSwgZGVmXSkgPT4gKHtcbiAgICBuYW1lLFxuICAgIHR5cGU6IGRlZi50eXBlLFxuICAgIHJlcXVpcmVkOiBkZWYucmVxdWlyZWQgPz8gZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbiA/PyBgJHtuYW1lfSBwYXJhbWV0ZXJgLFxuICAgIC4uLihkZWYuZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8geyBkZWZhdWx0OiBkZWYuZGVmYXVsdCB9IDoge30pLFxuICB9KSk7XG59XG5cbi8qKlxuICogR2V0IGFsbCBzY2hlbWEtZHJpdmVuIG9wZXJhdGlvbnMgd2l0aCB0aGVpciBmdWxsIGRlZmluaXRpb25zXG4gKiBVc2VkIGJ5IFNjaGVtYURpc3BhdGNoZXIgdG8gaXRlcmF0ZSBvdmVyIGRpc3BhdGNoYWJsZSBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxTY2hlbWFPcGVyYXRpb25zKCk6IFJlY29yZDxzdHJpbmcsIE9wZXJhdGlvbkRlZj4ge1xuICByZXR1cm4gU0NIRU1BX0RSSVZFTl9PUEVSQVRJT05TO1xufVxuXG4vKipcbiAqIEdldCBhbGwgb3BlcmF0aW9uIHNjaGVtYXMgKGRpc3BhdGNoLWRyaXZlbiArIGludHJvc3BlY3Rpb24tb25seSlcbiAqIFVzZWQgYnkgSW50cm9zcGVjdGlvblJlc29sdmVyIGZvciBjb21wbGV0ZSBvcGVyYXRpb24gZG9jdW1lbnRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsT3BlcmF0aW9uU2NoZW1hcygpOiBSZWNvcmQ8c3RyaW5nLCBPcGVyYXRpb25EZWY+IHtcbiAgcmV0dXJuIEFMTF9PUEVSQVRJT05fU0NIRU1BUztcbn1cbiJdfQ==
|