@cubist-labs/cubesigner-sdk 0.4.263 → 0.4.266
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/package.json +12 -4
- package/dist/src/acl.js +1 -2
- package/dist/src/audit_log.d.ts +4 -4
- package/dist/src/audit_log.js +116 -119
- package/dist/src/bucket.d.ts +2 -2
- package/dist/src/bucket.d.ts.map +1 -1
- package/dist/src/bucket.js +2 -5
- package/dist/src/client/api_client.d.ts +16 -12
- package/dist/src/client/api_client.d.ts.map +1 -1
- package/dist/src/client/api_client.js +288 -292
- package/dist/src/client/base_client.d.ts +6 -6
- package/dist/src/client/base_client.d.ts.map +1 -1
- package/dist/src/client/base_client.js +27 -38
- package/dist/src/client/session.d.ts +2 -2
- package/dist/src/client/session.d.ts.map +1 -1
- package/dist/src/client/session.js +20 -35
- package/dist/src/client.d.ts +18 -18
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +14 -18
- package/dist/src/contact.d.ts +3 -3
- package/dist/src/contact.d.ts.map +1 -1
- package/dist/src/contact.js +4 -8
- package/dist/src/diffie_hellman.d.ts +1 -1
- package/dist/src/diffie_hellman.d.ts.map +1 -1
- package/dist/src/diffie_hellman.js +9 -12
- package/dist/src/env.js +13 -20
- package/dist/src/error.d.ts +2 -2
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +3 -8
- package/dist/src/events.js +2 -6
- package/dist/src/evm/index.d.ts +1 -1
- package/dist/src/evm/index.d.ts.map +1 -1
- package/dist/src/evm/index.js +5 -9
- package/dist/src/fetch.d.ts +1 -1
- package/dist/src/fetch.d.ts.map +1 -1
- package/dist/src/fetch.js +10 -15
- package/dist/src/index.d.ts +24 -24
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +25 -48
- package/dist/src/key.d.ts +10 -8
- package/dist/src/key.d.ts.map +1 -1
- package/dist/src/key.js +35 -34
- package/dist/src/mfa.d.ts +2 -2
- package/dist/src/mfa.d.ts.map +1 -1
- package/dist/src/mfa.js +14 -25
- package/dist/src/org.d.ts +197 -197
- package/dist/src/org.d.ts.map +1 -1
- package/dist/src/org.js +28 -32
- package/dist/src/paginator.js +3 -8
- package/dist/src/passkey.d.ts +1 -1
- package/dist/src/passkey.d.ts.map +1 -1
- package/dist/src/passkey.js +16 -23
- package/dist/src/policy.d.ts +1 -1
- package/dist/src/policy.d.ts.map +1 -1
- package/dist/src/policy.js +17 -27
- package/dist/src/response.d.ts +16 -7
- package/dist/src/response.d.ts.map +1 -1
- package/dist/src/response.js +42 -21
- package/dist/src/retry.d.ts.map +1 -1
- package/dist/src/retry.js +5 -11
- package/dist/src/role.d.ts +3 -3
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +13 -18
- package/dist/src/schema.d.ts +117 -40
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +2 -3
- package/dist/src/schema_types.d.ts +6 -3
- package/dist/src/schema_types.d.ts.map +1 -1
- package/dist/src/schema_types.js +11 -7
- package/dist/src/scopes.d.ts +1 -1
- package/dist/src/scopes.d.ts.map +1 -1
- package/dist/src/scopes.js +19 -21
- package/dist/src/signer_session.d.ts +1 -1
- package/dist/src/signer_session.d.ts.map +1 -1
- package/dist/src/signer_session.js +2 -6
- package/dist/src/user_export.d.ts +1 -1
- package/dist/src/user_export.d.ts.map +1 -1
- package/dist/src/user_export.js +10 -18
- package/dist/src/util.js +9 -19
- package/package.json +12 -4
- package/src/audit_log.ts +1 -1
- package/src/bucket.ts +2 -2
- package/src/client/api_client.ts +25 -19
- package/src/client/base_client.ts +10 -10
- package/src/client/session.ts +4 -4
- package/src/client.ts +12 -6
- package/src/contact.ts +3 -3
- package/src/diffie_hellman.ts +3 -3
- package/src/env.ts +3 -3
- package/src/error.ts +2 -2
- package/src/evm/index.ts +1 -1
- package/src/fetch.ts +3 -3
- package/src/index.ts +29 -24
- package/src/key.ts +16 -12
- package/src/mfa.ts +3 -3
- package/src/org.ts +4 -4
- package/src/passkey.ts +1 -1
- package/src/policy.ts +2 -2
- package/src/response.ts +57 -12
- package/src/role.ts +3 -3
- package/src/schema.ts +110 -23
- package/src/schema_types.ts +14 -3
- package/src/scopes.ts +2 -1
- package/src/signer_session.ts +1 -1
- package/src/user_export.ts +2 -2
- package/tsconfig.json +12 -0
package/dist/src/scopes.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// eslint-disable spaced-comment
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.userScopesDictionary = exports.roleScopesDictionary = exports.allScopesDictionary = exports.AllScopes = void 0;
|
|
5
2
|
/** Mapping from scope name to scope description */
|
|
6
|
-
|
|
3
|
+
export const AllScopes =
|
|
7
4
|
// prettier-ignore
|
|
8
5
|
{
|
|
9
6
|
"sign:*": "Allows access to all signer endpoints (e.g., sign blob, sign bitcoin/avalanche/evm transaction, etc.)",
|
|
@@ -265,6 +262,7 @@ exports.AllScopes =
|
|
|
265
262
|
"rpc:createTransaction:*": "Allows access to the RPC API endpoint, but only for the 'cs_createTransaction' function.",
|
|
266
263
|
"rpc:createTransaction:evm": "Allows access to the RPC API endpoint, but only for the 'cs_createTransaction' function with an EVM transaction request.",
|
|
267
264
|
"rpc:getTransaction": "Allows access to the RPC API endpoint, but only for the 'cs_getTransaction' function.",
|
|
265
|
+
"rpc:btcListUtxos": "Allows access to the RPC API endpoint, but only for the 'cs_btcListUtxos' function.",
|
|
268
266
|
"rpc:listTransactions": "Allows access to the RPC API endpoint, but only for the 'cs_listTransactions' function.",
|
|
269
267
|
"rpc:retryTransaction": "Allows access to the RPC API endpoint, but only for the 'cs_retryTransaction' function",
|
|
270
268
|
"rpc:binance": "Allows access to the RPC API endpoint, but only for the 'cs_binance*' functions",
|
|
@@ -312,7 +310,7 @@ function findParent(scope, allScopes) {
|
|
|
312
310
|
* @returns The complete dictionary of all available scopes organized by category.
|
|
313
311
|
*/
|
|
314
312
|
function computeScopesDictionary() {
|
|
315
|
-
const allScopes = Object.keys(
|
|
313
|
+
const allScopes = Object.keys(AllScopes);
|
|
316
314
|
const items = new Map();
|
|
317
315
|
const result = {};
|
|
318
316
|
// First pass: create all items
|
|
@@ -323,7 +321,7 @@ function computeScopesDictionary() {
|
|
|
323
321
|
}
|
|
324
322
|
items.set(scope, {
|
|
325
323
|
value: scope,
|
|
326
|
-
description:
|
|
324
|
+
description: AllScopes[scope],
|
|
327
325
|
children: [],
|
|
328
326
|
});
|
|
329
327
|
}
|
|
@@ -374,34 +372,34 @@ function computeScopesDictionary() {
|
|
|
374
372
|
* @see {@link roleScopesDictionary} - Restricted scopes for role sessions
|
|
375
373
|
* @see {@link userScopesDictionary} - Restricted scopes for user sessions
|
|
376
374
|
*/
|
|
377
|
-
|
|
375
|
+
export const allScopesDictionary = computeScopesDictionary();
|
|
378
376
|
/**
|
|
379
377
|
* Restricted scopes dictionary for role-based session generation.
|
|
380
378
|
* Contains only the scopes that are allowed for role sessions.
|
|
381
379
|
*/
|
|
382
|
-
|
|
383
|
-
sign:
|
|
384
|
-
mmi:
|
|
385
|
-
rpc:
|
|
380
|
+
export const roleScopesDictionary = {
|
|
381
|
+
sign: allScopesDictionary.sign,
|
|
382
|
+
mmi: allScopesDictionary.mmi,
|
|
383
|
+
rpc: allScopesDictionary.rpc,
|
|
386
384
|
manage: {
|
|
387
385
|
label: "Manage",
|
|
388
386
|
scopes: [
|
|
389
387
|
// Find and include manage:mmi:*
|
|
390
|
-
|
|
388
|
+
allScopesDictionary.manage.scopes
|
|
391
389
|
.find((s) => s.value === "manage:*")
|
|
392
390
|
.children.find((s) => s.value === "manage:mmi:*"),
|
|
393
391
|
// Find and include manage:mfa:list
|
|
394
|
-
|
|
392
|
+
allScopesDictionary.manage.scopes
|
|
395
393
|
.find((s) => s.value === "manage:*")
|
|
396
394
|
.children.find((s) => s.value === "manage:mfa:*")
|
|
397
395
|
.children.find((s) => s.value === "manage:mfa:list"),
|
|
398
396
|
// Find and include manage:key:get
|
|
399
|
-
|
|
397
|
+
allScopesDictionary.manage.scopes
|
|
400
398
|
.find((s) => s.value === "manage:*")
|
|
401
399
|
.children.find((s) => s.value === "manage:key:*")
|
|
402
400
|
.children.find((s) => s.value === "manage:key:get"),
|
|
403
401
|
// Find and include manage:key:list
|
|
404
|
-
|
|
402
|
+
allScopesDictionary.manage.scopes
|
|
405
403
|
.find((s) => s.value === "manage:*")
|
|
406
404
|
.children.find((s) => s.value === "manage:key:*")
|
|
407
405
|
.children.find((s) => s.value === "manage:key:list"),
|
|
@@ -412,10 +410,10 @@ exports.roleScopesDictionary = {
|
|
|
412
410
|
* Restricted scopes dictionary for user session generation.
|
|
413
411
|
* Excludes scopes that require elevated permissions (orgAccess, export).
|
|
414
412
|
*/
|
|
415
|
-
|
|
416
|
-
manage:
|
|
417
|
-
sign:
|
|
418
|
-
mmi:
|
|
419
|
-
rpc:
|
|
413
|
+
export const userScopesDictionary = {
|
|
414
|
+
manage: allScopesDictionary.manage,
|
|
415
|
+
sign: allScopesDictionary.sign,
|
|
416
|
+
mmi: allScopesDictionary.mmi,
|
|
417
|
+
rpc: allScopesDictionary.rpc,
|
|
420
418
|
};
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Njb3Blcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsZ0NBQWdDOzs7QUFZaEMsbURBQW1EO0FBQ3RDLFFBQUEsU0FBUztBQUNwQixrQkFBa0I7QUFDbEI7SUFDQSxRQUFRLEVBQXdDLHVHQUF1RztJQUN2SixVQUFVLEVBQXNDLDBDQUEwQztJQUMxRixXQUFXLEVBQXFDLDJDQUEyQztJQUMzRixvQkFBb0IsRUFBNEIsd0pBQXdKO0lBQ3hNLFlBQVksRUFBb0Msb0NBQW9DO0lBQ3BGLGlCQUFpQixFQUErQiwrREFBK0Q7SUFDL0csa0JBQWtCLEVBQThCLGdFQUFnRTtJQUNoSCxpQkFBaUIsRUFBK0IsNkRBQTZEO0lBQzdHLG9CQUFvQixFQUE0QiwwREFBMEQ7SUFDMUcsc0JBQXNCLEVBQTBCLDREQUE0RDtJQUM1RyxzQkFBc0IsRUFBMEIsNERBQTREO0lBQzVHLHVCQUF1QixFQUF5Qiw2REFBNkQ7SUFDN0cseUJBQXlCLEVBQXVCLHFFQUFxRTtJQUNySCxvQkFBb0IsRUFBNEIsb0VBQW9FO0lBQ3BILHlCQUF5QixFQUF1QixtRUFBbUU7SUFDbkgseUJBQXlCLEVBQXVCLG1FQUFtRTtJQUNuSCxnQkFBZ0IsRUFBZ0Msa0VBQWtFO0lBQ2xILDBCQUEwQixFQUFzQix1RkFBdUY7SUFDdkksc0JBQXNCLEVBQTBCLGdGQUFnRjtJQUNoSSw2QkFBNkIsRUFBbUIsdUZBQXVGO0lBQ3ZJLCtCQUErQixFQUFpQiw0RkFBNEY7SUFDNUksd0NBQXdDLEVBQVEscUdBQXFHO0lBQ3JKLDBCQUEwQixFQUFzQix1RkFBdUY7SUFDdkksdUJBQXVCLEVBQXlCLG9GQUFvRjtJQUNwSSxnQ0FBZ0MsRUFBZ0IsNkZBQTZGO0lBQzdJLHVDQUF1QyxFQUFTLG9HQUFvRztJQUNwSix1QkFBdUIsRUFBeUIsb0ZBQW9GO0lBQ3BJLDhCQUE4QixFQUFrQiwyRkFBMkY7SUFDM0ksOEJBQThCLEVB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cGUgRXhwbGljaXRTY29wZSB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCB0eXBlIFNjb3Blc0RpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmc7IHNjb3BlczogU2NvcGVJdGVtW10gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVJdGVtIHtcbiAgdmFsdWU6IEV4cGxpY2l0U2NvcGU7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogU2NvcGVJdGVtW107XG59XG5cbi8qKiBNYXBwaW5nIGZyb20gc2NvcGUgbmFtZSB0byBzY29wZSBkZXNjcmlwdGlvbiAqL1xuZXhwb3J0IGNvbnN0IEFsbFNjb3BlczogUmVjb3JkPEV4cGxpY2l0U2NvcGUsIHN0cmluZz4gPVxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAge1xuICBcInNpZ246KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgc2lnbmVyIGVuZHBvaW50cyAoZS5nLiwgc2lnbiBibG9iLCBzaWduIGJpdGNvaW4vYXZhbGFuY2hlL2V2bSB0cmFuc2FjdGlvbiwgZXRjLilcIixcbiAgXCJzaWduOmF2YVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gJ2F2YScgZW5kcG9pbnRcIixcbiAgXCJzaWduOmJsb2JcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gJ2Jsb2InIGVuZHBvaW50XCIsXG4gIFwic2lnbjpkaWZmaWVIZWxsbWFuXCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBEaWZmaWUtSGVsbG1hbiBlbmRwb2ludC4gVGhpcyBpcyBub3QgcmVhbGx5IHNpZ25pbmcsIGJ1dCB3ZSBwdXQgaXQgdW5kZXIgdGhlIGBzaWduYCBoaWVyYXJjaHkgYmVjYXVzZSBpdCBpcyBjb25jZXB0dWFsbHkgc2ltaWxhci5cIixcbiAgXCJzaWduOmJ0YzoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIEJUQyBlbmRwb2ludHNcIixcbiAgXCJzaWduOmJ0YzpzZWd3aXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIHNlZ3dpdCB0cmFuc2FjdGlvbnNcIixcbiAgXCJzaWduOmJ0Yzp0YXByb290XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIHRhcHJvb3QgdHJhbnNhY3Rpb25zXCIsXG4gIFwic2lnbjpidGM6cHNidDoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBQU0JUIHNpZ25pbmcgZW5kcG9pbnQgZm9yIGFueSBrZXkgdHlwZVwiLFxuICBcInNpZ246YnRjOnBzYnQ6ZG9nZVwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUFNCVCBzaWduaW5nIGVuZHBvaW50IGZvciBEb2dlIGtleXNcIixcbiAgXCJzaWduOmJ0Yzpwc2J0OmxlZ2FjeVwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFBTQlQgc2lnbmluZyBlbmRwb2ludCBmb3IgbGVnYWN5IGtleXNcIixcbiAgXCJzaWduOmJ0Yzpwc2J0OnNlZ3dpdFwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFBTQlQgc2lnbmluZyBlbmRwb2ludCBmb3Igc2Vnd2l0IGtleXNcIixcbiAgXCJzaWduOmJ0Yzpwc2J0OnRhcHJvb3RcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFBTQlQgc2lnbmluZyBlbmRwb2ludCBmb3IgdGFwcm9vdCBrZXlzXCIsXG4gIFwic2lnbjpidGM6cHNidDpsdGNTZWd3aXRcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBQU0JUIHNpZ25pbmcgZW5kcG9pbnQgZm9yIExpdGVjb2luIHNlZ3dpdCBrZXlzXCIsXG4gIFwic2lnbjpidGM6bWVzc2FnZToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCVEMgbWVzc2FnZSBzaWduaW5nIGVuZHBvaW50IGZvciBhbnkga2V5IHR5cGVcIixcbiAgXCJzaWduOmJ0YzptZXNzYWdlOnNlZ3dpdFwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJUQyBtZXNzYWdlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIHNlZ3dpdCBrZXlzXCIsXG4gIFwic2lnbjpidGM6bWVzc2FnZTpsZWdhY3lcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCVEMgbWVzc2FnZSBzaWduaW5nIGVuZHBvaW50IGZvciBsZWdhY3kga2V5c1wiLFxuICBcInNpZ246YmluYW5jZToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCB3aXRob3V0IHJlc3RyaWN0aW9uc1wiLFxuICBcInNpZ246YmluYW5jZTphY2NvdW50SW5mb1wiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnQWNjb3VudEluZm8nIG9wZXJhdGlvblwiLFxuICBcInNpZ246YmluYW5jZTpkZXBvc2l0XCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnRGVwb3NpdCcgbWV0aG9kXCIsXG4gIFwic2lnbjpiaW5hbmNlOmRlcG9zaXRIaXN0b3J5XCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCaW5hbmNlIHNpZ24gZW5kcG9pbnQsIHJlc3RyaWN0ZWQgdG8gdGhlICdEZXBvc2l0SGlzdG9yeScgbWV0aG9kXCIsXG4gIFwic2lnbjpiaW5hbmNlOnN1YkFjY291bnRBc3NldHNcIiAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCaW5hbmNlIHNpZ24gZW5kcG9pbnQsIHJlc3RyaWN0ZWQgdG8gdGhlICdTdWJBY2NvdW50QXNzZXRzJyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6c3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeVwiICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1N1YkFjY291bnRUcmFuc2Zlckhpc3RvcnknIG9wZXJhdGlvblwiLFxuICBcInNpZ246YmluYW5jZTpzdWJUb01hc3RlclwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnU3ViVG9NYXN0ZXInIG9wZXJhdGlvblwiLFxuICBcInNpZ246YmluYW5jZTpzdWJUb1N1YlwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnU3ViVG9TdWInIG9wZXJhdGlvblwiLFxuICBcInNpZ246YmluYW5jZTp1bml2ZXJzYWxUcmFuc2ZlclwiICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnVW5pdmVyc2FsVHJhbnNmZXInIG9wZXJhdGlvblwiLFxuICBcInNpZ246YmluYW5jZTp1bml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlcIiAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5JyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6d2l0aGRyYXdcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1dpdGhkcmF3JyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6d2l0aGRyYXdIaXN0b3J5XCIgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1dpdGhkcmF3SGlzdG9yeScgb3BlcmF0aW9uXCIsXG4gIFwic2lnbjpiaW5hbmNlOmxpc3RTdWJBY2NvdW50c1wiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdiaW5hbmNlJyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnTGlzdFN1YkFjY291bnRzJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpiaW5hbmNlOmNvaW5JbmZvXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdiaW5hbmNlJyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnQ29pbkluZm8nIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmJhYnlsb246KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIEJhYnlsb24gZW5kcG9pbnRzXCIsXG4gIFwic2lnbjpiYWJ5bG9uOmVvdHM6KlwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBCYWJ5bG9uIEVPVFMgZW5kcG9pbnRzXCIsXG4gIFwic2lnbjpiYWJ5bG9uOmVvdHM6bm9uY2VzXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBFT1RTIG5vbmNlIGdlbmVyYXRpb24gZW5kcG9pbnRcIixcbiAgXCJzaWduOmJhYnlsb246ZW90czpzaWduXCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEVPVFMgc2lnbmluZyBlbmRwb2ludFwiLFxuICBcInNpZ246YmFieWxvbjpzdGFraW5nOipcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbmluZyBlbmRwb2ludCBmb3IgYWxsIEJhYnlsb24gc3Rha2luZyBvcGVyYXRpb25zXCIsXG4gIFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6ZGVwb3NpdFwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBCYWJ5bG9uIGRlcG9zaXRzXCIsXG4gIFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6dW5ib25kXCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBCYWJ5bG9uIHVuYm9uZGluZ1wiLFxuICBcInNpZ246YmFieWxvbjpzdGFraW5nOndpdGhkcmF3XCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbmluZyBlbmRwb2ludCBmb3IgQmFieWxvbiB3aXRoZHJhd2Fsc1wiLFxuICBcInNpZ246YmFieWxvbjpzdGFraW5nOnNsYXNoXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbmluZyBlbmRwb2ludCBmb3IgQmFieWxvbiBzbGFzaGluZyBwcmUtc2lnbmF0dXJlc1wiLFxuICBcInNpZ246YmFieWxvbjpyZWdpc3RyYXRpb25cIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbmluZyBlbmRwb2ludCBmb3IgQmFieWxvbiByZWdpc3RyYXRpb25cIixcbiAgXCJzaWduOmJhYnlsb246Y292ZW5hbnRcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIEJhYnlsb24gY292ZW5hbnQgc2lnbmluZ1wiLFxuICBcInNpZ246YnliaXQ6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnYnliaXQnIGVuZHBvaW50IChzaWducyBCeWJpdCBSUEMgcmVxdWVzdHMpLlwiLFxuICBcInNpZ246YnliaXQ6cXVlcnlVc2VyXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnYnliaXQnIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdRdWVyeVVzZXInIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmJ5Yml0OnF1ZXJ5U3ViTWVtYmVyc1wiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2J5Yml0JyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnUXVlcnlTdWJNZW1iZXJzJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpieWJpdDpxdWVyeUNvaW5zQmFsYW5jZVwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdieWJpdCcgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ1F1ZXJ5Q29pbnNCYWxhbmNlJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpieWJpdDpxdWVyeURlcG9zaXRBZGRyZXNzXCIgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdieWJpdCcgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ1F1ZXJ5RGVwb3NpdEFkZHJlc3MnIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmJ5Yml0OnVuaXZlcnNhbFRyYW5zZmVyXCIgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2J5Yml0JyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnVW5pdmVyc2FsVHJhbnNmZXInIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmJ5Yml0OndpdGhkcmF3XCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2J5Yml0JyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnV2l0aGRyYXcnIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmJ5Yml0OndpdGhkcmF3YWxzXCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2J5Yml0JyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnV2l0aGRyYXdhbHMnIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmNvaW5iYXNlOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2NvaW5iYXNlJyBlbmRwb2ludCAoc2lnbnMgQ29pbmJhc2UgUlBDIHJlcXVlc3RzKS5cIixcbiAgXCJzaWduOmNvaW5iYXNlOmFjY291bnRzOmxpc3RcIiAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2NvaW5iYXNlJyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnTGlzdEFjY291bnRzJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpjb2luYmFzZTpwb3J0Zm9saW9zOmxpc3RcIiAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdjb2luYmFzZScgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ0xpc3RQb3J0Zm9saW9zJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpjb2luYmFzZTpmdW5kczptb3ZlXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdjb2luYmFzZScgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ01vdmVGdW5kcycgb3BlcmF0aW9uLlwiLFxuICBcInNpZ246ZXZtOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgc2lnbiAnZXZtJyBlbmRwb2ludHNcIixcbiAgXCJzaWduOmV2bTp0eFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIGV2bSB0cmFuc2FjdGlvbnNcIixcbiAgXCJzaWduOmV2bTplaXAxOTFcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIEVJUC0xOTEgcGVyc29uYWxfbWVzc2FnZSBkYXRhXCIsXG4gIFwic2lnbjpldm06ZWlwNzEyXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIEVJUC03MTIgdHlwZWQgZGF0YVwiLFxuICBcInNpZ246ZXRoMjoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgc2lnbiAnZXRoMicgZW5kcG9pbnRzXCIsXG4gIFwic2lnbjpldGgyOnZhbGlkYXRlXCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduIGV0aDIgJ3ZhbGlkYXRlJyBlbmRwb2ludFwiLFxuICBcInNpZ246ZXRoMjpzdGFrZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbiBldGgyICdzdGFrZScgZW5kcG9pbnRcIixcbiAgXCJzaWduOmV0aDI6dW5zdGFrZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gZXRoMiAndW5zdGFrZScgZW5kcG9pbnRcIixcbiAgXCJzaWduOnNvbGFuYVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gJ3NvbGFuYScgZW5kcG9pbnRcIixcbiAgXCJzaWduOnN1aVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gJ3N1aScgZW5kcG9pbnRcIixcbiAgXCJzaWduOnRlbmRlcm1pbnRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gJ3RlbmRlcm1pbnQnIGVuZHBvaW50XCIsXG4gIFwic2lnbjptbWlcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduICdtbWknIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBtYW5hZ2VtZW50IGVuZHBvaW50cyAoZS5nLiwgY3JlYXRlIHJvbGUsIGNyZWF0ZSBrZXksIGFkZCBrZXkgdG8gcm9sZSwgZXRjLilcIixcbiAgXCJtYW5hZ2U6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIG1hbmFnZW1lbnQgcmVhZG9ubHkgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOmVtYWlsOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGVtYWlsIG1hbmFnZW1lbnQgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOmVtYWlsOmdldFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGVtYWlsIGNvbmZpZ3VyYXRpb24gJ2dldCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6ZW1haWw6dXBkYXRlXCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgZW1haWwgY29uZmlndXJhdGlvbiAndXBkYXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTplbWFpbDpkZWxldGVcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBlbWFpbCBjb25maWd1cmF0aW9uICdkZWxldGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gTUZBIGVuZHBvaW50cyAoZS5nLiwgZ2V0L2FwcHJvdmUgZXhpc3RpbmcgTUZBIHJlcXVlc3QpXCIsXG4gIFwibWFuYWdlOm1mYTpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gTUZBIHJlYWRvbmx5IGVuZHBvaW50cyAoZS5nLiwgZ2V0L2xpc3QgZXhpc3RpbmcgTUZBIHJlcXVlc3QocykpXCIsXG4gIFwibWFuYWdlOm1mYTpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSBsaXN0IGVuZHBvaW50IChsaXN0IGV4aXN0aW5nIE1GQSByZXF1ZXN0cylcIixcbiAgXCJtYW5hZ2U6bWZhOnZvdGU6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIE1GQSB2b3RlIGVuZHBvaW50cyAodm90ZSB1c2luZyBjdXJyZW50IEN1YmVTaWduZXIgc2Vzc2lvbiwgVE9UUCwgb3IgRklETylcIixcbiAgXCJtYW5hZ2U6bWZhOnZvdGU6Y3NcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgTUZBICd2b3RlIHdpdGggQ3ViZVNpZ25lcicgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6bWZhOnZvdGU6ZW1haWxcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgTUZBICd2b3RlIHdpdGggZW1haWwnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTp2b3RlOmZpZG9cIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAndm90ZSB3aXRoIFRPVFAnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTp2b3RlOnRvdHBcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAndm90ZSB3aXRoIEZJRE8nIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTpyZWdpc3RlcjoqXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBNRkEgcmVnaXN0ZXIgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOm1mYTpyZWdpc3RlcjpmaWRvXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAncmVnaXN0ZXIgVE9UUCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOnRvdHBcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgTUZBICdyZWdpc3RlciBGSURPJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6ZW1haWxcIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ3JlZ2lzdGVyIHZlcmlmaWVkIGVtYWlsJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6dW5yZWdpc3RlcjoqXCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgTUZBIHVucmVnaXN0ZXIgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOm1mYTp1bnJlZ2lzdGVyOmZpZG9cIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAnZGVsZXRlIFRPVFAnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTp1bnJlZ2lzdGVyOnRvdHBcIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAnZGVsZXRlIEZJRE8nIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTp2ZXJpZnk6KlwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBNRkEgdmVyaWZ5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTptZmE6dmVyaWZ5OnRvdHBcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ3ZlcmlmeSBUT1RQJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTprZXk6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwga2V5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTprZXk6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwga2V5IHJlYWRvbmx5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTprZXk6YXR0ZXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ2F0dGVzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6a2V5OmdldFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICdnZXQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmtleTpsaXN0Um9sZXNcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAnbGlzdFJvbGVzJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTprZXk6bGlzdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ2xpc3QnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmtleTpoaXN0b3J5OnR4Omxpc3RcIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAnbGlzdF9oaXN0b3JpY2FsX3R4JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTprZXk6Y3JlYXRlXCIgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIGtleSBjcmVhdGlvbiBlbmRwb2ludHMgKGUuZy4sICdjcmVhdGUnIGFuZCAnZGVyaXZlJylcIixcbiAgXCJtYW5hZ2U6a2V5OmltcG9ydFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICdpbXBvcnQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmtleTp1cGRhdGU6KlwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAndXBkYXRlJyBlbmRwb2ludCwgd2l0aGluIHdoaWNoIGFsbG93aW5nIGFsbCBwb3NzaWJsZSB1cGRhdGVzXCIsXG4gIFwibWFuYWdlOmtleTp1cGRhdGU6b3duZXJcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIGtleSAnb3duZXInIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOmtleTp1cGRhdGU6cmVnaW9uXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIGtleSAncmVnaW9uJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOnBvbGljeVwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBrZXkgJ3BvbGljeScgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6a2V5OnVwZGF0ZTplbmFibGVkXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUga2V5ICdlbmFibGVkJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOm1ldGFkYXRhXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQgYW5kIHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBrZXkgJ21ldGFkYXRhJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOnByb3BlcnRpZXNcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQgYW5kIHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBrZXkgJ3Byb3BlcnRpZXMnIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOmtleTp1cGRhdGU6ZWRpdFBvbGljeVwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAndXBkYXRlJyBlbmRwb2ludCBhbmQgcmVzdHJpY3RzIHVwZGF0ZXMgdG8gdGhlICdlZGl0X3BvbGljeScgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6a2V5OmRlbGV0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICdkZWxldGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBwb2xpY3kgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnBvbGljeTpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBwb2xpY3kgcmVhZG9ubHkgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnBvbGljeTpjcmVhdGVcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBjcmVhdGlvbiBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6Z2V0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgJ2dldCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5Omxpc3RcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICdsaXN0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6ZGVsZXRlXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgYGRlbGV0ZWAgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZToqXCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICd1cGRhdGUnIGVuZHBvaW50LCB3aXRoaW4gd2hpY2ggYWxsb3dpbmcgYWxsIHBvc3NpYmxlIHVwZGF0ZXNcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTphY2xcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgcG9saWN5IEFDTFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOm93bmVyXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBwb2xpY3kgb3duZXIgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpuYW1lXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgcG9saWN5IG5hbWVcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTplZGl0UG9saWN5XCIgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgJ2VkaXRfcG9saWN5JyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOm1ldGFkYXRhXCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSAnbWV0YWRhdGEnIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnBvbGljeTp1cGRhdGU6cnVsZVwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHBvbGljeSBydWxlIGl0c2VsZlwiLFxuICBcIm1hbmFnZTpwb2xpY3k6aW52b2tlXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgJ2ludm9rZScgZW5kcG9pbnQuXCIsXG4gIFwibWFuYWdlOnBvbGljeTp3YXNtOipcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCB3YXNtIHBvbGljeSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6cG9saWN5Ondhc206dXBsb2FkXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgd2FzbSBwb2xpY3kgJ3VwbG9hZCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6KlwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHBvbGljeSBzZWNyZXRzIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czpnZXRcIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgc2VjcmV0cyAnZ2V0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6KlwiICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgcG9saWN5IHNlY3JldHMgJ3VwZGF0ZScgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZTp2YWx1ZXNcIiAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBzZWNyZXRzICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgc2VjcmV0cyBrZXlzIGFuZCB2YWx1ZXNcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOmFjbFwiICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IHNlY3JldHMgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBzZWNyZXRzIGFjbFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6ZWRpdFBvbGljeVwiICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgc2VjcmV0cyAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIGBlZGl0X3BvbGljeWAgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6KlwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHBvbGljeSBidWNrZXRzIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czpnZXRcIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgYnVja2V0cyAnZ2V0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czpsaXN0XCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgYnVja2V0cyAnbGlzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6dXBkYXRlOipcIiAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGJ1Y2tldHMgJ3VwZGF0ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6dXBkYXRlOm93bmVyXCIgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGJ1Y2tldHMgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBgb3duZXJgIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnBvbGljeTpidWNrZXRzOnVwZGF0ZTphY2xcIiAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBidWNrZXRzICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgYGFjbGAgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6dXBkYXRlOm1ldGFkYXRhXCIgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGJ1Y2tldHMgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBgbWV0YWRhdGFgIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBjb250YWN0IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpjb250YWN0OnJlYWRvbmx5XCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgY29udGFjdCByZWFkb25seSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6Y29udGFjdDpjcmVhdGVcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIGNvbnRhY3QgJ2NyZWF0ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6Y29udGFjdDpnZXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIGNvbnRhY3QgYGdldGAgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6Y29udGFjdDpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIGNvbnRhY3QgYGxpc3RgIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6ZGVsZXRlXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBjb250YWN0IGBkZWxldGVgIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOipcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGNvbnRhY3QgJ3VwZGF0ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bmFtZVwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgY29udGFjdCAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBjb250YWN0J3MgJ25hbWUnIGZpZWxkLlwiLFxuICBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTphZGRyZXNzZXNcIiAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBjb250YWN0ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RzIHVwZGF0ZXMgdG8gdGhlIGNvbnRhY3QncyAnYWRkcmVzc2VzJyBmaWVsZC5cIixcbiAgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6b3duZXJcIiAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgY29udGFjdCAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBjb250YWN0J3MgJ293bmVyJyBmaWVsZC5cIixcbiAgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bWV0YWRhdGFcIiAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgY29udGFjdCAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBjb250YWN0J3MgJ21ldGFkYXRhJyBmaWVsZC5cIixcbiAgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6bGFiZWxzXCIgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgY29udGFjdCAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBjb250YWN0J3MgJ2xhYmVscycgZmllbGQuXCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOmVkaXRQb2xpY3lcIiAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGNvbnRhY3QgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUgY29udGFjdCdzICdlZGl0X3BvbGljeScgZmllbGQuXCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6bG9va3VwOipcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBjb250YWN0IGBsb29rdXBgIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpjb250YWN0Omxvb2t1cDphZGRyZXNzXCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBjb250YWN0ICdsb29rdXAgYnkgYWRkcmVzcycgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmNyZWF0ZUltcG9ydEtleVwiICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGtleSBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgcm9sZSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6cm9sZTpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHJvbGUgcmVhZG9ubHkgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnJvbGU6YXR0ZXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ2F0dGVzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZTpjcmVhdGVcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAnY3JlYXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOmRlbGV0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICdkZWxldGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6Z2V0OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ2dldCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5c1wiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHJvbGUgJ2xpc3Qga2V5cycgYW5kICdnZXQga2V5JyBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5czpsaXN0XCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHJvbGUgJ2xpc3Qga2V5cycgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5czpnZXRcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHJvbGUgJ2dldCBrZXknIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6Z2V0OnVzZXJzXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICdsaXN0IHVzZXJzJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOmxpc3RcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICdsaXN0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZToqXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICd1cGRhdGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOmFjdGlvbnNcIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSByb2xlICdhY3Rpb25zJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVkXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgcm9sZSAnZW5hYmxlZCcgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5XCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHJvbGUgJ3BvbGljeScgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6ZWRpdFBvbGljeVwiICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHJvbGUgJ2VkaXRfcG9saWN5JyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTprZXk6KlwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgcm9sZSAndXBkYXRlOmtleScgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleTphZGRcIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICd1cGRhdGU6a2V5czphZGQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleTpyZW1vdmVcIiAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICd1cGRhdGU6a2V5czpyZW1vdmUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6KlwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCByb2xlICd1cGRhdGU6dXNlcicgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6YWRkXCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICd1cGRhdGU6dXNlcjphZGQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6cmVtb3ZlXCIgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICd1cGRhdGU6dXNlcjpyZW1vdmUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6aGlzdG9yeTp0eDpsaXN0XCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ2xpc3RfaGlzdG9yaWNhbF90eCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6aWRlbnRpdHk6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGlkZW50aXR5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTppZGVudGl0eTpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgaWRlbnRpdHkgcmVhZG9ubHkgZW5kcG9pbnRzLlwiLFxuICBcIm1hbmFnZTppZGVudGl0eTp2ZXJpZnlcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBpZGVudGl0eSAndmVyaWZ5JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTppZGVudGl0eTphZGRcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBpZGVudGl0eSAnYWRkJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTppZGVudGl0eTpyZW1vdmVcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBpZGVudGl0eSAncmVtb3ZlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTppZGVudGl0eTpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBpZGVudGl0eSAnbGlzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6b3JnOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIG9yZyBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6b3JnOmNyZWF0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIG9yZyAnY3JlYXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpvcmc6bWV0cmljczpxdWVyeVwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byByZXRyaWV2aW5nIG9yZyBtZXRyaWNzXCIsXG4gIFwibWFuYWdlOm9yZzphdWRpdDpxdWVyeVwiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHJldHJpZXZpbmcgb3JnIGF1ZGl0IGxvZ1wiLFxuICBcIm1hbmFnZTpvcmc6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgb3JnIHJlYWRvbmx5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpvcmc6YWRkVXNlclwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGFkZGluZyBhbiBPSURDIHVzZXIgdG8gdGhlIG9yZ1wiLFxuICBcIm1hbmFnZTpvcmc6aW52aXRhdGlvbjpsaXN0XCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGxpc3RpbmcgcGVuZGluZyBpbnZpdGF0aW9uc1wiLFxuICBcIm1hbmFnZTpvcmc6aW52aXRhdGlvbjpjYW5jZWxcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGNhbmNlbGluZyBwZW5kaW5nIGludml0YXRpb25zXCIsXG4gIFwibWFuYWdlOm9yZzppbnZpdGVVc2VyXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludCBmb3IgaW52aXRpbmcgYSBuZXcgbWVtYmVyIG9yIG9yZyBvd25lciB0byB0aGUgb3JnXCIsXG4gIFwibWFuYWdlOm9yZzppbnZpdGVBbGllblwiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludCBmb3IgaW52aXRpbmcgYSBuZXcgYWxpZW4gdXNlciB0byB0aGUgb3JnXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOipcIiAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludCBmb3IgdXBkYXRpbmcgZXhpc3RpbmcgdXNlcidzIG9yZyBtZW1iZXJzaGlwXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOm93bmVyXCIgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludCBmb3IgdXBkYXRpbmcgZXhpc3Rpbmcgb3JnIE93bmVyJ3MgbWVtYmVyc2hpcFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlTWVtYmVyc2hpcDptZW1iZXJcIiAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIHVwZGF0aW5nIGV4aXN0aW5nIG9yZyBNZW1iZXIncyBtZW1iZXJzaGlwXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOmFsaWVuXCIgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludCBmb3IgdXBkYXRpbmcgZXhpc3Rpbmcgb3JnIEFsaWVuJ3MgbWVtYmVyc2hpcFwiLFxuICBcIm1hbmFnZTpvcmc6bGlzdFVzZXJzXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGxpc3RpbmcgYWxsIG9yZyB1c2VycyAobWVtYmVycylcIixcbiAgXCJtYW5hZ2U6b3JnOnVzZXI6Z2V0XCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50cyBmb3IgZ2V0dGluZyB1c2VycyBieSBpZCBvciBlbWFpbFwiLFxuICBcIm1hbmFnZTpvcmc6ZGVsZXRlVXNlcjoqXCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGRlbGV0aW5nIGFuIE9JREMgdXNlclwiLFxuICBcIm1hbmFnZTpvcmc6ZGVsZXRlVXNlcjpvd25lclwiICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGRlbGV0aW5nIGEgdXNlciwgb25seSB3aGVuIGRlbGV0aW5nIGFuIGV4aXN0aW5nIG9yZyBPd25lclwiLFxuICBcIm1hbmFnZTpvcmc6ZGVsZXRlVXNlcjptZW1iZXJcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGRlbGV0aW5nIGEgdXNlciwgb25seSB3aGVuIGRlbGV0aW5nIGFuIGV4aXN0aW5nIG9yZyBNZW1iZXJcIixcbiAgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6YWxpZW5cIiAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBkZWxldGluZyBhIHVzZXIsIG9ubHkgd2hlbiBkZWxldGluZyBhbiBleGlzdGluZyBvcmcgQWxpZW5cIixcbiAgXCJtYW5hZ2U6b3JnOmdldFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gcmV0cmlldmluZyBvcmdhbml6YXRpb24gaW5mb3JtYXRpb25cIixcbiAgXCJtYW5hZ2U6b3JnOnVzZXI6cmVzZXRNZmFcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhbiBvd25lciB0byBpbml0aWF0ZSBhbiBNRkEgcmVzZXQgZm9yIGEgdXNlclwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOipcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgb3JnICd1cGRhdGUnIGFjdGlvbnNcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTplbmFibGVkXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyB0aGUgb3JnICdlbmFibGVkJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOnBvbGljeVwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIG9yZy13aWRlIHBvbGljaWVzXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6c2lnblBvbGljeVwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgb3JnLXdpZGUgc2lnbiBwb2xpY2llc1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmV4cG9ydFwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHVzZXItZXhwb3J0IHNldHRpbmdzIChkZWxheSwgd2luZG93LCBkaXNhYmxlZClcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTp0b3RwRmFpbHVyZUxpbWl0XCIgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6bm90aWZpY2F0aW9uRW5kcG9pbnRzXCIgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgbm90aWZpY2F0aW9uIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmRlZmF1bHRJbnZpdGVLaW5kXCIgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHRoZSBkZWZhdWx0IGludml0ZSBraW5kXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6aWRwQ29uZmlndXJhdGlvblwiICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgSURQIGNvbmZpZ3VyYXRpb25cIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpwYXNza2V5Q29uZmlndXJhdGlvblwiICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyBwYXNza2V5IGNvbmZpZ3VyYXRpb25cIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTplbWFpbFByZWZlcmVuY2VzXCIgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyBlbWFpbCBwcmVmZXJlbmNlc1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmhpc3RvcmljYWxEYXRhXCIgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIGhpc3RvcmljYWwgZGF0YSBjb25maWd1cmF0aW9uXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6cmVxdWlyZVNjb3BlQ2VpbGluZ1wiICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIHJlcXVpcmVfc2NvcGVfY2VpbGluZyBzZXR0aW5nXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6YWxpZW5Mb2dpblJlcXVpcmVtZW50XCIgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIGFsaWVuIGxvZ2luIHJlcXVpcmVtZW50XCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6bWVtYmVyTG9naW5SZXF1aXJlbWVudFwiICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIG1lbWJlciBsb2dpbiByZXF1aXJlbWVudFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmtleUV4cG9ydFJlcXVpcmVtZW50XCIgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHRoZSBrZXkgZXhwb3J0IHJlcXVpcmVtZW50XCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6YWxsb3dlZE1mYVR5cGVzXCIgICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgYWxsb3dlZCBNRkEgdHlwZXNcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpwb2xpY3lFbmdpbmVDb25mXCIgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyB0aGUgcG9saWN5IGVuZ2luZSBjb25maWd1cmF0aW9uXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6Y3VzdG9tQ2hhaW5zXCIgICAgICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgY3VzdG9tIGNoYWluc1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmV4dFByb3BzXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIGV4dGVuZGVkIG9yZyBwcm9wZXJ0aWVzXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6ZWRpdFBvbGljeVwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIG9yZydzIGVkaXQgcG9saWN5XCIsXG4gIFwibWFuYWdlOnNlc3Npb246KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBzZXNzaW9uIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpzZXNzaW9uOnJlYWRvbmx5XCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgc2Vzc2lvbiByZWFkb25seSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6c2Vzc2lvbjpnZXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgc2Vzc2lvbiAnZ2V0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpzZXNzaW9uOmxpc3RcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBzZXNzaW9uICdsaXN0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpzZXNzaW9uOmNyZWF0ZVwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBzZXNzaW9uICdjcmVhdGUnIGVuZHBvaW50LCBidXQgd2l0aG91dCB0aGUgYWJpbGl0eSB0byBleHRlbmQgc2Vzc2lvbiBsaWZldGltZXNcIixcbiAgXCJtYW5hZ2U6c2Vzc2lvbjpleHRlbmRcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgc2Vzc2lvbiAnY3JlYXRlJyBlbmRwb2ludCwgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIGV4dGVuZCBzZXNzaW9uIGxpZmV0aW1lc1wiLFxuICBcIm1hbmFnZTpzZXNzaW9uOnJldm9rZVwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBzZXNzaW9uICdyZXZva2UnIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpleHBvcnQ6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgZXhwb3J0IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpleHBvcnQ6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgZXhwb3J0IG1hbmFnZW1lbnQgcmVhZG9ubHkgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOmV4cG9ydDpvcmc6KlwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBvcmctZXhwb3J0IG1hbmFnZW1lbnQgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOmV4cG9ydDpvcmc6Z2V0XCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBvcmctZXhwb3J0IGRvd25sb2FkIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmV4cG9ydDp1c2VyOipcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCB1c2VyLWV4cG9ydCBtYW5hZ2VtZW50IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpleHBvcnQ6dXNlcjpkZWxldGVcIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGRlbGV0aW5nIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcIixcbiAgXCJtYW5hZ2U6ZXhwb3J0OnVzZXI6bGlzdFwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBsaXN0aW5nIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXCIsXG4gIFwibWFuYWdlOmF1dGhNaWdyYXRpb246KlwiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWxsIGF1dGggbWlncmF0aW9uIHNjb3Blc1wiLFxuICBcIm1hbmFnZTphdXRoTWlncmF0aW9uOmlkZW50aXR5OmFkZFwiICAgICAgICAgICA6IFwiQWxsb3dzIGFkZGluZyBpZGVudGl0aWVzIHRvIGV4aXN0aW5nIHVzZXJzIGR1cmluZyBhbiBhdXRoIG1pZ3JhdGlvblwiLFxuICBcIm1hbmFnZTphdXRoTWlncmF0aW9uOmlkZW50aXR5OnJlbW92ZVwiICAgICAgICA6IFwiQWxsb3dzIHJlbW92aW5nIGlkZW50aXRpZXMgZnJvbSBleGlzdGluZyB1c2VycyBkdXJpbmcgYW4gYXV0aCBtaWdyYXRpb25cIixcbiAgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjp1c2VyOnVwZGF0ZVwiICAgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyBleGlzdGluZyB1c2VycycgcHJvZmlsZXNcIixcbiAgXCJtYW5hZ2U6bW1pOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhbGwgQ1JVRCBvcGVyYXRpb25zIG9uIE1NSSBwZW5kaW5nIG1lc3NhZ2VzXCIsXG4gIFwibWFuYWdlOm1taTpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWxsIHJlYWRvbmx5IG9wZXJhdGlvbnMgb24gTU1JIHBlbmRpbmcgbWVzc2FnZXNcIixcbiAgXCJtYW5hZ2U6bW1pOmdldFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyByZXRyaWV2aW5nIE1NSSBwZW5kaW5nIG1lc3NhZ2VzXCIsXG4gIFwibWFuYWdlOm1taTpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgbGlzdGluZyBNTUkgcGVuZGluZyBtZXNzYWdlc1wiLFxuICBcIm1hbmFnZTptbWk6cmVqZWN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIHJlamVjdGluZyBNTUkgcGVuZGluZyBtZXNzYWdlc1wiLFxuICBcIm1hbmFnZTptbWk6ZGVsZXRlXCIgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGRlbGV0aW5nIE1NSSBwZW5kaW5nIG1lc3NhZ2VzXCIsXG4gIFwiZXhwb3J0OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBleHBvcnQgZW5kcG9pbnRzXCIsXG4gIFwiZXhwb3J0OnVzZXI6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCB1c2VyLWV4cG9ydCBleGVjdXRpb24gZW5kcG9pbnRzXCIsXG4gIFwiZXhwb3J0OnVzZXI6aW5pdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgaW5pdGlhdGluZyBhIG5ldyB1c2VyLWV4cG9ydCByZXF1ZXN0XCIsXG4gIFwiZXhwb3J0OnVzZXI6Y29tcGxldGVcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgY29tcGxldGluZyBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XCIsXG4gIFwibW1pOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgY2FsbHMgdG8gdGhlIE1NSSBlbmRwb2ludFwiLFxuICBcIm9yZ0FjY2VzczoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBjZXJ0YWluIG9yZ3Mgb3RoZXIgdGhhbiB0aGUgY3VycmVudCBzZXNzaW9uJ3NcIixcbiAgXCJvcmdBY2Nlc3M6Y2hpbGQ6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhIHNlc3Npb24gdG8gYmUgdXNlZCBmb3IgYWNjZXNzIHRvIG9yZ3MgdHJhbnNpdGl2ZWx5IHBhcmVudGVkIGJ5IHRoZSBzZXNzaW9uJ3Mgb3JnLlwiLFxuICBcInJwYzoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludFwiLFxuICBcInJwYzpjYW5jZWxUcmFuc2FjdGlvblwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfY2FuY2VsVHJhbnNhY3Rpb24nIGZ1bmN0aW9uLlwiLFxuICBcInJwYzpjcmVhdGVUcmFuc2FjdGlvbjoqXCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfY3JlYXRlVHJhbnNhY3Rpb24nIGZ1bmN0aW9uLlwiLFxuICBcInJwYzpjcmVhdGVUcmFuc2FjdGlvbjpldm1cIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfY3JlYXRlVHJhbnNhY3Rpb24nIGZ1bmN0aW9uIHdpdGggYW4gRVZNIHRyYW5zYWN0aW9uIHJlcXVlc3QuXCIsXG4gIFwicnBjOmdldFRyYW5zYWN0aW9uXCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBSUEMgQVBJIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdjc19nZXRUcmFuc2FjdGlvbicgZnVuY3Rpb24uXCIsXG4gIFwicnBjOmxpc3RUcmFuc2FjdGlvbnNcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBSUEMgQVBJIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdjc19saXN0VHJhbnNhY3Rpb25zJyBmdW5jdGlvbi5cIixcbiAgXCJycGM6cmV0cnlUcmFuc2FjdGlvblwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX3JldHJ5VHJhbnNhY3Rpb24nIGZ1bmN0aW9uXCIsXG4gIFwicnBjOmJpbmFuY2VcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBSUEMgQVBJIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdjc19iaW5hbmNlKicgZnVuY3Rpb25zXCIsXG4gIFwicnBjOmJ5Yml0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBSUEMgQVBJIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlIEJ5Yml0IG1ldGhvZHNcIixcbiAgXCJycGM6Y29pbmJhc2VcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX2NvaW5iYXNlKicgZnVuY3Rpb25zXCIsXG59O1xuXG4vLyBDb25zdCBmb3Igc2NvcGUgY2F0ZWdvcnkgbGFiZWxzXG5jb25zdCBDQVRFR09SWV9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIHNpZ246IFwiU2lnblwiLFxuICBtYW5hZ2U6IFwiTWFuYWdlXCIsXG4gIGV4cG9ydDogXCJFeHBvcnRcIixcbiAgbW1pOiBcIk1NSVwiLFxuICBvcmdBY2Nlc3M6IFwiT3JnIEFjY2Vzc1wiLFxuICBycGM6IFwiUlBDXCIsXG59O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBwYXJlbnQgc2NvcGUgZm9yIGEgZ2l2ZW4gc2NvcGUuXG4gKiBBIHBhcmVudCBpcyBhIHNjb3BlIGVuZGluZyB3aXRoICcqJyB0aGF0IGlzIGEgcHJlZml4IG9mIHRoZSBjdXJyZW50IHNjb3BlLlxuICogUmV0dXJucyB0aGUgbG9uZ2VzdCBtYXRjaGluZyBwYXJlbnQgKGNsb3Nlc3QgYW5jZXN0b3IpLCBleGNsdWRpbmcgdGhlIHNjb3BlIGl0c2VsZi5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIHRvIGZpbmQgdGhlIHBhcmVudCBmb3IuXG4gKiBAcGFyYW0gYWxsU2NvcGVzIFRoZSBsaXN0IG9mIGFsbCBzY29wZXMuXG4gKiBAcmV0dXJucyBUaGUgcGFyZW50IHNjb3BlIG9yIG51bGwgaWYgbm8gcGFyZW50IGlzIGZvdW5kLlxuICovXG5mdW5jdGlvbiBmaW5kUGFyZW50KHNjb3BlOiBFeHBsaWNpdFNjb3BlLCBhbGxTY29wZXM6IEV4cGxpY2l0U2NvcGVbXSk6IEV4cGxpY2l0U2NvcGUgfCBudWxsIHtcbiAgbGV0IHBhcmVudDogRXhwbGljaXRTY29wZSB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4TGVuZ3RoID0gMDtcblxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBhbGxTY29wZXMpIHtcbiAgICAvLyBTa2lwIHRoZSBzY29wZSBpdHNlbGZcbiAgICBpZiAoY2FuZGlkYXRlID09PSBzY29wZSkgY29udGludWU7XG5cbiAgICBpZiAoY2FuZGlkYXRlLmVuZHNXaXRoKFwiKlwiKSAmJiBzY29wZS5zdGFydHNXaXRoKGNhbmRpZGF0ZS5zbGljZSgwLCAtMSkpKSB7XG4gICAgICAvLyBQcmVmZXIgdGhlIGxvbmdlc3QgbWF0Y2hpbmcgcGFyZW50IChjbG9zZXN0IGFuY2VzdG9yKVxuICAgICAgaWYgKGNhbmRpZGF0ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgcGFyZW50ID0gY2FuZGlkYXRlO1xuICAgICAgICBtYXhMZW5ndGggPSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJlbnQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHNjb3BlcyBkaWN0aW9uYXJ5IGZyb20gQWxsU2NvcGVzLlxuICpcbiAqIEByZXR1cm5zIFRoZSBjb21wbGV0ZSBkaWN0aW9uYXJ5IG9mIGFsbCBhdmFpbGFibGUgc2NvcGVzIG9yZ2FuaXplZCBieSBjYXRlZ29yeS5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVNjb3Blc0RpY3Rpb25hcnkoKTogU2NvcGVzRGljdGlvbmFyeSB7XG4gIGNvbnN0IGFsbFNjb3BlcyA9IE9iamVjdC5rZXlzKEFsbFNjb3BlcykgYXMgRXhwbGljaXRTY29wZVtdO1xuICBjb25zdCBpdGVtcyA9IG5ldyBNYXA8RXhwbGljaXRTY29wZSwgU2NvcGVJdGVtPigpO1xuICBjb25zdCByZXN1bHQ6IFNjb3Blc0RpY3Rpb25hcnkgPSB7fTtcblxuICAvLyBGaXJzdCBwYXNzOiBjcmVhdGUgYWxsIGl0ZW1zXG4gIGZvciAoY29uc3Qgc2NvcGUgb2YgYWxsU2NvcGVzKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBzY29wZS5zcGxpdChcIjpcIilbMF07XG4gICAgaWYgKCFyZXN1bHRbY2F0ZWdvcnldKSB7XG4gICAgICByZXN1bHRbY2F0ZWdvcnldID0geyBsYWJlbDogQ0FURUdPUllfTEFCRUxTW2NhdGVnb3J5XSB8fCBjYXRlZ29yeSwgc2NvcGVzOiBbXSB9O1xuICAgIH1cblxuICAgIGl0ZW1zLnNldChzY29wZSwge1xuICAgICAgdmFsdWU6IHNjb3BlLFxuICAgICAgZGVzY3JpcHRpb246IEFsbFNjb3Blc1tzY29wZV0sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfSk7XG4gIH1cblxuICAvLyBTZWNvbmQgcGFzczogYnVpbGQgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHNcbiAgZm9yIChjb25zdCBzY29wZSBvZiBhbGxTY29wZXMpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IHNjb3BlLnNwbGl0KFwiOlwiKVswXTtcbiAgICBjb25zdCBpdGVtID0gaXRlbXMuZ2V0KHNjb3BlKSE7XG4gICAgY29uc3QgcGFyZW50U2NvcGUgPSBmaW5kUGFyZW50KHNjb3BlLCBhbGxTY29wZXMpO1xuXG4gICAgaWYgKHBhcmVudFNjb3BlICYmIHBhcmVudFNjb3BlICE9PSBzY29wZSkge1xuICAgICAgaXRlbXMuZ2V0KHBhcmVudFNjb3BlKSEuY2hpbGRyZW4hLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtjYXRlZ29yeV0uc2NvcGVzLnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU29ydCByb290czogd2lsZGNhcmRzIGZpcnN0XG4gIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgT2JqZWN0LnZhbHVlcyhyZXN1bHQpKSB7XG4gICAgY2F0ZWdvcnkuc2NvcGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnZhbHVlLmVuZHNXaXRoKFwiKlwiKSAmJiAhYi52YWx1ZS5lbmRzV2l0aChcIipcIikpIHJldHVybiAtMTtcbiAgICAgIGlmICghYS52YWx1ZS5lbmRzV2l0aChcIipcIikgJiYgYi52YWx1ZS5lbmRzV2l0aChcIipcIikpIHJldHVybiAxO1xuICAgICAgcmV0dXJuIGEudmFsdWUubG9jYWxlQ29tcGFyZShiLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29tcGxldGUgZGljdGlvbmFyeSBvZiBhbGwgYXZhaWxhYmxlIHNjb3BlcyBvcmdhbml6ZWQgYnkgY2F0ZWdvcnkuXG4gKlxuICogVGhpcyBkaWN0aW9uYXJ5IGlzIGF1dG9tYXRpY2FsbHkgY29tcHV0ZWQgZnJvbSB7QGxpbmsgQWxsU2NvcGVzfSBieSBpbmZlcnJpbmdcbiAqIHRoZSBoaWVyYXJjaHkgZnJvbSBzY29wZSBuYW1lcy4gQSBzY29wZSdzIHBhcmVudCBpcyBkZXRlcm1pbmVkIGJ5IGZpbmRpbmcgYVxuICogc2NvcGUgZW5kaW5nIHdpdGggJyonIHRoYXQgaXMgYSBwcmVmaXggb2YgdGhlIGN1cnJlbnQgc2NvcGUuXG4gKlxuICogVGhlIGRpY3Rpb25hcnkgaXMgb3JnYW5pemVkIGludG8gdGhlIGZvbGxvd2luZyBjYXRlZ29yaWVzOlxuICogLSBgc2lnbmA6IFNjb3BlcyBmb3Igc2lnbmluZyBvcGVyYXRpb25zIChibG9iLCB0cmFuc2FjdGlvbnMsIGV0Yy4pXG4gKiAtIGBtYW5hZ2VgOiBTY29wZXMgZm9yIG1hbmFnZW1lbnQgb3BlcmF0aW9ucyAoa2V5cywgcm9sZXMsIHBvbGljaWVzLCBldGMuKVxuICogLSBgZXhwb3J0YDogU2NvcGVzIGZvciBleHBvcnQgb3BlcmF0aW9uc1xuICogLSBgbW1pYDogU2NvcGVzIGZvciBNZXRhTWFzayBJbnRlZ3JhdGlvblxuICogLSBgb3JnQWNjZXNzYDogU2NvcGVzIGZvciBjcm9zcy1vcmdhbml6YXRpb24gYWNjZXNzXG4gKlxuICogVGhpcyBkaWN0aW9uYXJ5IHNlcnZlcyBhcyB0aGUgc291cmNlIG9mIHRydXRoIGZvciBzY29wZSBkZWZpbml0aW9ucyBhbmQgaXMgdXNlZFxuICogdG8gZ2VuZXJhdGUgc2NvcGVzIGZvciByb2xlIGFuZCB1c2VyIHNlc3Npb25zLiBJdCBpcyBhbHNvIHJlZmVyZW5jZWQgYnlcbiAqIHtAbGluayByb2xlU2NvcGVzRGljdGlvbmFyeX0gYW5kIHtAbGluayB1c2VyU2NvcGVzRGljdGlvbmFyeX0gd2hpY2ggcHJvdmlkZVxuICogZmlsdGVyZWQgc3Vic2V0cyBvZiB0aGVzZSBzY29wZXMuXG4gKlxuICogQHNlZSB7QGxpbmsgQWxsU2NvcGVzfSAtIFRoZSBzb3VyY2UgcmVjb3JkIGNvbnRhaW5pbmcgc2NvcGUgZGVzY3JpcHRpb25zXG4gKiBAc2VlIHtAbGluayByb2xlU2NvcGVzRGljdGlvbmFyeX0gLSBSZXN0cmljdGVkIHNjb3BlcyBmb3Igcm9sZSBzZXNzaW9uc1xuICogQHNlZSB7QGxpbmsgdXNlclNjb3Blc0RpY3Rpb25hcnl9IC0gUmVzdHJpY3RlZCBzY29wZXMgZm9yIHVzZXIgc2Vzc2lvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFsbFNjb3Blc0RpY3Rpb25hcnk6IFNjb3Blc0RpY3Rpb25hcnkgPSBjb21wdXRlU2NvcGVzRGljdGlvbmFyeSgpO1xuXG4vKipcbiAqIFJlc3RyaWN0ZWQgc2NvcGVzIGRpY3Rpb25hcnkgZm9yIHJvbGUtYmFzZWQgc2Vzc2lvbiBnZW5lcmF0aW9uLlxuICogQ29udGFpbnMgb25seSB0aGUgc2NvcGVzIHRoYXQgYXJlIGFsbG93ZWQgZm9yIHJvbGUgc2Vzc2lvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCByb2xlU2NvcGVzRGljdGlvbmFyeSA9IHtcbiAgc2lnbjogYWxsU2NvcGVzRGljdGlvbmFyeS5zaWduLFxuICBtbWk6IGFsbFNjb3Blc0RpY3Rpb25hcnkubW1pLFxuICBycGM6IGFsbFNjb3Blc0RpY3Rpb25hcnkucnBjLFxuICBtYW5hZ2U6IHtcbiAgICBsYWJlbDogXCJNYW5hZ2VcIixcbiAgICBzY29wZXM6IFtcbiAgICAgIC8vIEZpbmQgYW5kIGluY2x1ZGUgbWFuYWdlOm1taToqXG4gICAgICAoYWxsU2NvcGVzRGljdGlvbmFyeS5tYW5hZ2Uuc2NvcGVzIGFzIFNjb3BlSXRlbVtdKVxuICAgICAgICAuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTptbWk6KlwiKSEsXG4gICAgICAvLyBGaW5kIGFuZCBpbmNsdWRlIG1hbmFnZTptZmE6bGlzdFxuICAgICAgKGFsbFNjb3Blc0RpY3Rpb25hcnkubWFuYWdlLnNjb3BlcyBhcyBTY29wZUl0ZW1bXSlcbiAgICAgICAgLmZpbmQoKHMpID0+IHMudmFsdWUgPT09IFwibWFuYWdlOipcIikhXG4gICAgICAgIC5jaGlsZHJlbiEuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6bWZhOipcIikhXG4gICAgICAgIC5jaGlsZHJlbiEuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6bWZhOmxpc3RcIikhLFxuICAgICAgLy8gRmluZCBhbmQgaW5jbHVkZSBtYW5hZ2U6a2V5OmdldFxuICAgICAgKGFsbFNjb3Blc0RpY3Rpb25hcnkubWFuYWdlLnNjb3BlcyBhcyBTY29wZUl0ZW1bXSlcbiAgICAgICAgLmZpbmQoKHMpID0+IHMudmFsdWUgPT09IFwibWFuYWdlOipcIikhXG4gICAgICAgIC5jaGlsZHJlbiEuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6a2V5OipcIikhXG4gICAgICAgIC5jaGlsZHJlbiEuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6a2V5OmdldFwiKSEsXG4gICAgICAvLyBGaW5kIGFuZCBpbmNsdWRlIG1hbmFnZTprZXk6bGlzdFxuICAgICAgKGFsbFNjb3Blc0RpY3Rpb25hcnkubWFuYWdlLnNjb3BlcyBhcyBTY29wZUl0ZW1bXSlcbiAgICAgICAgLmZpbmQoKHMpID0+IHMudmFsdWUgPT09IFwibWFuYWdlOipcIikhXG4gICAgICAgIC5jaGlsZHJlbiEuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6a2V5OipcIikhXG4gICAgICAgIC5jaGlsZHJlbiEuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6a2V5Omxpc3RcIikhLFxuICAgIF0sXG4gIH0sXG59IHNhdGlzZmllcyBTY29wZXNEaWN0aW9uYXJ5O1xuXG4vKipcbiAqIFJlc3RyaWN0ZWQgc2NvcGVzIGRpY3Rpb25hcnkgZm9yIHVzZXIgc2Vzc2lvbiBnZW5lcmF0aW9uLlxuICogRXhjbHVkZXMgc2NvcGVzIHRoYXQgcmVxdWlyZSBlbGV2YXRlZCBwZXJtaXNzaW9ucyAob3JnQWNjZXNzLCBleHBvcnQpLlxuICovXG5leHBvcnQgY29uc3QgdXNlclNjb3Blc0RpY3Rpb25hcnkgPSB7XG4gIG1hbmFnZTogYWxsU2NvcGVzRGljdGlvbmFyeS5tYW5hZ2UsXG4gIHNpZ246IGFsbFNjb3Blc0RpY3Rpb25hcnkuc2lnbixcbiAgbW1pOiBhbGxTY29wZXNEaWN0aW9uYXJ5Lm1taSxcbiAgcnBjOiBhbGxTY29wZXNEaWN0aW9uYXJ5LnJwYyxcbn07XG4iXX0=
|
|
419
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Njb3Blcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFZaEMsbURBQW1EO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLFNBQVM7QUFDcEIsa0JBQWtCO0FBQ2xCO0lBQ0EsUUFBUSxFQUF3Qyx1R0FBdUc7SUFDdkosVUFBVSxFQUFzQywwQ0FBMEM7SUFDMUYsV0FBVyxFQUFxQywyQ0FBMkM7SUFDM0Ysb0JBQW9CLEVBQTRCLHdKQUF3SjtJQUN4TSxZQUFZLEVBQW9DLG9DQUFvQztJQUNwRixpQkFBaUIsRUFBK0IsK0RBQStEO0lBQy9HLGtCQUFrQixFQUE4QixnRUFBZ0U7SUFDaEgsaUJBQWlCLEVBQStCLDZEQUE2RDtJQUM3RyxvQkFBb0IsRUFBNEIsMERBQTBEO0lBQzFHLHNCQUFzQixFQUEwQiw0REFBNEQ7SUFDNUcsc0JBQXNCLEVBQTBCLDREQUE0RDtJQUM1Ryx1QkFBdUIsRUFBeUIsNkRBQTZEO0lBQzdHLHlCQUF5QixFQUF1QixxRUFBcUU7SUFDckgsb0JBQW9CLEVBQTRCLG9FQUFvRTtJQUNwSCx5QkFBeUIsRUFBdUIsbUVBQW1FO0lBQ25ILHlCQUF5QixFQUF1QixtRUFBbUU7SUFDbkgsZ0JBQWdCLEVBQWdDLGtFQUFrRTtJQUNsSCwwQkFBMEIsRUFBc0IsdUZBQXVGO0lBQ3ZJLHNCQUFzQixFQUEwQixnRkFBZ0Y7SUFDaEksNkJBQTZCLEVBQW1CLHVGQUF1RjtJQUN2SSwrQkFBK0IsRUFBaUIsNEZBQTRGO0lBQzVJLHdDQUF3QyxFQUFRLHFHQUFxRztJQUNySiwwQkFBMEIsRUFBc0IsdUZBQXVGO0lBQ3ZJLHVCQUF1QixFQUF5QixvRkFBb0Y7SUFDcEksZ0NBQWdDLEVBQWdCLDZGQUE2RjtJQUM3SSx1Q0FBdUMsRUFBUyxvR0FBb0c7SUFDcEosdUJBQXVCLEVBQXlCLG9GQUFvRjtJQUNwSSw4QkFBOEIsRUFBa0IsMkZBQTJGO0lBQzNJLDhC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Y2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZSBzcGFjZWQtY29tbWVudFxuXG5pbXBvcnQgeyB0eXBlIEV4cGxpY2l0U2NvcGUgfSBmcm9tIFwiLi9pbmRleC50c1wiO1xuXG5leHBvcnQgdHlwZSBTY29wZXNEaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgeyBsYWJlbDogc3RyaW5nOyBzY29wZXM6IFNjb3BlSXRlbVtdIH0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlSXRlbSB7XG4gIHZhbHVlOiBFeHBsaWNpdFNjb3BlO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBjaGlsZHJlbj86IFNjb3BlSXRlbVtdO1xufVxuXG4vKiogTWFwcGluZyBmcm9tIHNjb3BlIG5hbWUgdG8gc2NvcGUgZGVzY3JpcHRpb24gKi9cbmV4cG9ydCBjb25zdCBBbGxTY29wZXM6IFJlY29yZDxFeHBsaWNpdFNjb3BlLCBzdHJpbmc+ID1cbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIHtcbiAgXCJzaWduOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHNpZ25lciBlbmRwb2ludHMgKGUuZy4sIHNpZ24gYmxvYiwgc2lnbiBiaXRjb2luL2F2YWxhbmNoZS9ldm0gdHJhbnNhY3Rpb24sIGV0Yy4pXCIsXG4gIFwic2lnbjphdmFcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduICdhdmEnIGVuZHBvaW50XCIsXG4gIFwic2lnbjpibG9iXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduICdibG9iJyBlbmRwb2ludFwiLFxuICBcInNpZ246ZGlmZmllSGVsbG1hblwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgRGlmZmllLUhlbGxtYW4gZW5kcG9pbnQuIFRoaXMgaXMgbm90IHJlYWxseSBzaWduaW5nLCBidXQgd2UgcHV0IGl0IHVuZGVyIHRoZSBgc2lnbmAgaGllcmFyY2h5IGJlY2F1c2UgaXQgaXMgY29uY2VwdHVhbGx5IHNpbWlsYXIuXCIsXG4gIFwic2lnbjpidGM6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBCVEMgZW5kcG9pbnRzXCIsXG4gIFwic2lnbjpidGM6c2Vnd2l0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBzZWd3aXQgdHJhbnNhY3Rpb25zXCIsXG4gIFwic2lnbjpidGM6dGFwcm9vdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciB0YXByb290IHRyYW5zYWN0aW9uc1wiLFxuICBcInNpZ246YnRjOnBzYnQ6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUFNCVCBzaWduaW5nIGVuZHBvaW50IGZvciBhbnkga2V5IHR5cGVcIixcbiAgXCJzaWduOmJ0Yzpwc2J0OmRvZ2VcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFBTQlQgc2lnbmluZyBlbmRwb2ludCBmb3IgRG9nZSBrZXlzXCIsXG4gIFwic2lnbjpidGM6cHNidDpsZWdhY3lcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBQU0JUIHNpZ25pbmcgZW5kcG9pbnQgZm9yIGxlZ2FjeSBrZXlzXCIsXG4gIFwic2lnbjpidGM6cHNidDpzZWd3aXRcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBQU0JUIHNpZ25pbmcgZW5kcG9pbnQgZm9yIHNlZ3dpdCBrZXlzXCIsXG4gIFwic2lnbjpidGM6cHNidDp0YXByb290XCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBQU0JUIHNpZ25pbmcgZW5kcG9pbnQgZm9yIHRhcHJvb3Qga2V5c1wiLFxuICBcInNpZ246YnRjOnBzYnQ6bHRjU2Vnd2l0XCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUFNCVCBzaWduaW5nIGVuZHBvaW50IGZvciBMaXRlY29pbiBzZWd3aXQga2V5c1wiLFxuICBcInNpZ246YnRjOm1lc3NhZ2U6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQlRDIG1lc3NhZ2Ugc2lnbmluZyBlbmRwb2ludCBmb3IgYW55IGtleSB0eXBlXCIsXG4gIFwic2lnbjpidGM6bWVzc2FnZTpzZWd3aXRcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCVEMgbWVzc2FnZSBzaWduaW5nIGVuZHBvaW50IGZvciBzZWd3aXQga2V5c1wiLFxuICBcInNpZ246YnRjOm1lc3NhZ2U6bGVnYWN5XCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQlRDIG1lc3NhZ2Ugc2lnbmluZyBlbmRwb2ludCBmb3IgbGVnYWN5IGtleXNcIixcbiAgXCJzaWduOmJpbmFuY2U6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgd2l0aG91dCByZXN0cmljdGlvbnNcIixcbiAgXCJzaWduOmJpbmFuY2U6YWNjb3VudEluZm9cIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ0FjY291bnRJbmZvJyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6ZGVwb3NpdFwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ0RlcG9zaXQnIG1ldGhvZFwiLFxuICBcInNpZ246YmluYW5jZTpkZXBvc2l0SGlzdG9yeVwiICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnRGVwb3NpdEhpc3RvcnknIG1ldGhvZFwiLFxuICBcInNpZ246YmluYW5jZTpzdWJBY2NvdW50QXNzZXRzXCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgQmluYW5jZSBzaWduIGVuZHBvaW50LCByZXN0cmljdGVkIHRvIHRoZSAnU3ViQWNjb3VudEFzc2V0cycgb3BlcmF0aW9uXCIsXG4gIFwic2lnbjpiaW5hbmNlOnN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlcIiAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCaW5hbmNlIHNpZ24gZW5kcG9pbnQsIHJlc3RyaWN0ZWQgdG8gdGhlICdTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5JyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6c3ViVG9NYXN0ZXJcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1N1YlRvTWFzdGVyJyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6c3ViVG9TdWJcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1N1YlRvU3ViJyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6dW5pdmVyc2FsVHJhbnNmZXJcIiAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1VuaXZlcnNhbFRyYW5zZmVyJyBvcGVyYXRpb25cIixcbiAgXCJzaWduOmJpbmFuY2U6dW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5XCIgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIEJpbmFuY2Ugc2lnbiBlbmRwb2ludCwgcmVzdHJpY3RlZCB0byB0aGUgJ1VuaXZlcnNhbFRyYW5zZmVySGlzdG9yeScgb3BlcmF0aW9uXCIsXG4gIFwic2lnbjpiaW5hbmNlOndpdGhkcmF3XCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCaW5hbmNlIHNpZ24gZW5kcG9pbnQsIHJlc3RyaWN0ZWQgdG8gdGhlICdXaXRoZHJhdycgb3BlcmF0aW9uXCIsXG4gIFwic2lnbjpiaW5hbmNlOndpdGhkcmF3SGlzdG9yeVwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBCaW5hbmNlIHNpZ24gZW5kcG9pbnQsIHJlc3RyaWN0ZWQgdG8gdGhlICdXaXRoZHJhd0hpc3RvcnknIG9wZXJhdGlvblwiLFxuICBcInNpZ246YmluYW5jZTpsaXN0U3ViQWNjb3VudHNcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnYmluYW5jZScgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ0xpc3RTdWJBY2NvdW50cycgb3BlcmF0aW9uLlwiLFxuICBcInNpZ246YmluYW5jZTpjb2luSW5mb1wiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnYmluYW5jZScgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ0NvaW5JbmZvJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpiYWJ5bG9uOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBCYWJ5bG9uIGVuZHBvaW50c1wiLFxuICBcInNpZ246YmFieWxvbjplb3RzOipcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgQmFieWxvbiBFT1RTIGVuZHBvaW50c1wiLFxuICBcInNpZ246YmFieWxvbjplb3RzOm5vbmNlc1wiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgRU9UUyBub25jZSBnZW5lcmF0aW9uIGVuZHBvaW50XCIsXG4gIFwic2lnbjpiYWJ5bG9uOmVvdHM6c2lnblwiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBFT1RTIHNpZ25pbmcgZW5kcG9pbnRcIixcbiAgXCJzaWduOmJhYnlsb246c3Rha2luZzoqXCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIGFsbCBCYWJ5bG9uIHN0YWtpbmcgb3BlcmF0aW9uc1wiLFxuICBcInNpZ246YmFieWxvbjpzdGFraW5nOmRlcG9zaXRcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbmluZyBlbmRwb2ludCBmb3IgQmFieWxvbiBkZXBvc2l0c1wiLFxuICBcInNpZ246YmFieWxvbjpzdGFraW5nOnVuYm9uZFwiICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbmluZyBlbmRwb2ludCBmb3IgQmFieWxvbiB1bmJvbmRpbmdcIixcbiAgXCJzaWduOmJhYnlsb246c3Rha2luZzp3aXRoZHJhd1wiICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIEJhYnlsb24gd2l0aGRyYXdhbHNcIixcbiAgXCJzaWduOmJhYnlsb246c3Rha2luZzpzbGFzaFwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIEJhYnlsb24gc2xhc2hpbmcgcHJlLXNpZ25hdHVyZXNcIixcbiAgXCJzaWduOmJhYnlsb246cmVnaXN0cmF0aW9uXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ25pbmcgZW5kcG9pbnQgZm9yIEJhYnlsb24gcmVnaXN0cmF0aW9uXCIsXG4gIFwic2lnbjpiYWJ5bG9uOmNvdmVuYW50XCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBCYWJ5bG9uIGNvdmVuYW50IHNpZ25pbmdcIixcbiAgXCJzaWduOmJ5Yml0OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2J5Yml0JyBlbmRwb2ludCAoc2lnbnMgQnliaXQgUlBDIHJlcXVlc3RzKS5cIixcbiAgXCJzaWduOmJ5Yml0OnF1ZXJ5VXNlclwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHR5cGVkIHNpZ24gJ2J5Yml0JyBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnUXVlcnlVc2VyJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpieWJpdDpxdWVyeVN1Yk1lbWJlcnNcIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdieWJpdCcgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ1F1ZXJ5U3ViTWVtYmVycycgb3BlcmF0aW9uLlwiLFxuICBcInNpZ246YnliaXQ6cXVlcnlDb2luc0JhbGFuY2VcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnYnliaXQnIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdRdWVyeUNvaW5zQmFsYW5jZScgb3BlcmF0aW9uLlwiLFxuICBcInNpZ246YnliaXQ6cXVlcnlEZXBvc2l0QWRkcmVzc1wiICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnYnliaXQnIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdRdWVyeURlcG9zaXRBZGRyZXNzJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpieWJpdDp1bml2ZXJzYWxUcmFuc2ZlclwiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdieWJpdCcgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ1VuaXZlcnNhbFRyYW5zZmVyJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpieWJpdDp3aXRoZHJhd1wiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdieWJpdCcgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ1dpdGhkcmF3JyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpieWJpdDp3aXRoZHJhd2Fsc1wiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdieWJpdCcgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ1dpdGhkcmF3YWxzJyBvcGVyYXRpb24uXCIsXG4gIFwic2lnbjpjb2luYmFzZToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdjb2luYmFzZScgZW5kcG9pbnQgKHNpZ25zIENvaW5iYXNlIFJQQyByZXF1ZXN0cykuXCIsXG4gIFwic2lnbjpjb2luYmFzZTphY2NvdW50czpsaXN0XCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSB0eXBlZCBzaWduICdjb2luYmFzZScgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ0xpc3RBY2NvdW50cycgb3BlcmF0aW9uLlwiLFxuICBcInNpZ246Y29pbmJhc2U6cG9ydGZvbGlvczpsaXN0XCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnY29pbmJhc2UnIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdMaXN0UG9ydGZvbGlvcycgb3BlcmF0aW9uLlwiLFxuICBcInNpZ246Y29pbmJhc2U6ZnVuZHM6bW92ZVwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgdHlwZWQgc2lnbiAnY29pbmJhc2UnIGVuZHBvaW50LCBidXQgb25seSBmb3IgdGhlICdNb3ZlRnVuZHMnIG9wZXJhdGlvbi5cIixcbiAgXCJzaWduOmV2bToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHNpZ24gJ2V2bScgZW5kcG9pbnRzXCIsXG4gIFwic2lnbjpldm06dHhcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBldm0gdHJhbnNhY3Rpb25zXCIsXG4gIFwic2lnbjpldm06ZWlwMTkxXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBFSVAtMTkxIHBlcnNvbmFsX21lc3NhZ2UgZGF0YVwiLFxuICBcInNpZ246ZXZtOmVpcDcxMlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjZXNzIHRvIHRoZSBzaWduaW5nIGVuZHBvaW50IGZvciBFSVAtNzEyIHR5cGVkIGRhdGFcIixcbiAgXCJzaWduOmV0aDI6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHNpZ24gJ2V0aDInIGVuZHBvaW50c1wiLFxuICBcInNpZ246ZXRoMjp2YWxpZGF0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbiBldGgyICd2YWxpZGF0ZScgZW5kcG9pbnRcIixcbiAgXCJzaWduOmV0aDI6c3Rha2VcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIHNpZ24gZXRoMiAnc3Rha2UnIGVuZHBvaW50XCIsXG4gIFwic2lnbjpldGgyOnVuc3Rha2VcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduIGV0aDIgJ3Vuc3Rha2UnIGVuZHBvaW50XCIsXG4gIFwic2lnbjpzb2xhbmFcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduICdzb2xhbmEnIGVuZHBvaW50XCIsXG4gIFwic2lnbjpzdWlcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduICdzdWknIGVuZHBvaW50XCIsXG4gIFwic2lnbjp0ZW5kZXJtaW50XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBzaWduICd0ZW5kZXJtaW50JyBlbmRwb2ludFwiLFxuICBcInNpZ246bW1pXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgc2lnbiAnbW1pJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgbWFuYWdlbWVudCBlbmRwb2ludHMgKGUuZy4sIGNyZWF0ZSByb2xlLCBjcmVhdGUga2V5LCBhZGQga2V5IHRvIHJvbGUsIGV0Yy4pXCIsXG4gIFwibWFuYWdlOnJlYWRvbmx5XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBtYW5hZ2VtZW50IHJlYWRvbmx5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTplbWFpbDoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBlbWFpbCBtYW5hZ2VtZW50IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTplbWFpbDpnZXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBlbWFpbCBjb25maWd1cmF0aW9uICdnZXQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmVtYWlsOnVwZGF0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGVtYWlsIGNvbmZpZ3VyYXRpb24gJ3VwZGF0ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6ZW1haWw6ZGVsZXRlXCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgZW1haWwgY29uZmlndXJhdGlvbiAnZGVsZXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIE1GQSBlbmRwb2ludHMgKGUuZy4sIGdldC9hcHByb3ZlIGV4aXN0aW5nIE1GQSByZXF1ZXN0KVwiLFxuICBcIm1hbmFnZTptZmE6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIE1GQSByZWFkb25seSBlbmRwb2ludHMgKGUuZy4sIGdldC9saXN0IGV4aXN0aW5nIE1GQSByZXF1ZXN0KHMpKVwiLFxuICBcIm1hbmFnZTptZmE6bGlzdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgbGlzdCBlbmRwb2ludCAobGlzdCBleGlzdGluZyBNRkEgcmVxdWVzdHMpXCIsXG4gIFwibWFuYWdlOm1mYTp2b3RlOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBNRkEgdm90ZSBlbmRwb2ludHMgKHZvdGUgdXNpbmcgY3VycmVudCBDdWJlU2lnbmVyIHNlc3Npb24sIFRPVFAsIG9yIEZJRE8pXCIsXG4gIFwibWFuYWdlOm1mYTp2b3RlOmNzXCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAndm90ZSB3aXRoIEN1YmVTaWduZXInIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTp2b3RlOmVtYWlsXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAndm90ZSB3aXRoIGVtYWlsJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6dm90ZTpmaWRvXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ3ZvdGUgd2l0aCBUT1RQJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6dm90ZTp0b3RwXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ3ZvdGUgd2l0aCBGSURPJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6KlwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgTUZBIHJlZ2lzdGVyIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6Zmlkb1wiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ3JlZ2lzdGVyIFRPVFAnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm1mYTpyZWdpc3Rlcjp0b3RwXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIE1GQSAncmVnaXN0ZXIgRklETycgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOmVtYWlsXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgTUZBICdyZWdpc3RlciB2ZXJpZmllZCBlbWFpbCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6bWZhOnVucmVnaXN0ZXI6KlwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIE1GQSB1bnJlZ2lzdGVyIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTptZmE6dW5yZWdpc3RlcjpmaWRvXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ2RlbGV0ZSBUT1RQJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6dW5yZWdpc3Rlcjp0b3RwXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBNRkEgJ2RlbGV0ZSBGSURPJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTptZmE6dmVyaWZ5OipcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgTUZBIHZlcmlmeSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6bWZhOnZlcmlmeTp0b3RwXCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgTUZBICd2ZXJpZnkgVE9UUCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6a2V5OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGtleSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6a2V5OnJlYWRvbmx5XCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGtleSByZWFkb25seSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6a2V5OmF0dGVzdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICdhdHRlc3QnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmtleTpnZXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAnZ2V0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTprZXk6bGlzdFJvbGVzXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ2xpc3RSb2xlcycgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6a2V5Omxpc3RcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICdsaXN0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTprZXk6aGlzdG9yeTp0eDpsaXN0XCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ2xpc3RfaGlzdG9yaWNhbF90eCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6a2V5OmNyZWF0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byBrZXkgY3JlYXRpb24gZW5kcG9pbnRzIChlLmcuLCAnY3JlYXRlJyBhbmQgJ2Rlcml2ZScpXCIsXG4gIFwibWFuYWdlOmtleTppbXBvcnRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAnaW1wb3J0JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOipcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQsIHdpdGhpbiB3aGljaCBhbGxvd2luZyBhbGwgcG9zc2libGUgdXBkYXRlc1wiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOm93bmVyXCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBrZXkgJ293bmVyJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOnJlZ2lvblwiICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBrZXkgJ3JlZ2lvbicgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpwb2xpY3lcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUga2V5ICdwb2xpY3knIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOmtleTp1cGRhdGU6ZW5hYmxlZFwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIGtleSAnZW5hYmxlZCcgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6a2V5OnVwZGF0ZTptZXRhZGF0YVwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICd1cGRhdGUnIGVuZHBvaW50IGFuZCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUga2V5ICdtZXRhZGF0YScgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpwcm9wZXJ0aWVzXCIgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUga2V5ICd1cGRhdGUnIGVuZHBvaW50IGFuZCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUga2V5ICdwcm9wZXJ0aWVzJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTprZXk6dXBkYXRlOmVkaXRQb2xpY3lcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBrZXkgJ3VwZGF0ZScgZW5kcG9pbnQgYW5kIHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSAnZWRpdF9wb2xpY3knIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOmtleTpkZWxldGVcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGtleSAnZGVsZXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpwb2xpY3k6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgcG9saWN5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpwb2xpY3k6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgcG9saWN5IHJlYWRvbmx5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpwb2xpY3k6Y3JlYXRlXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgY3JlYXRpb24gZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmdldFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICdnZXQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeTpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSAnbGlzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmRlbGV0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGBkZWxldGVgIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeTp1cGRhdGU6KlwiICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSAndXBkYXRlJyBlbmRwb2ludCwgd2l0aGluIHdoaWNoIGFsbG93aW5nIGFsbCBwb3NzaWJsZSB1cGRhdGVzXCIsXG4gIFwibWFuYWdlOnBvbGljeTp1cGRhdGU6YWNsXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHBvbGljeSBBQ0xcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpvd25lclwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgcG9saWN5IG93bmVyIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnBvbGljeTp1cGRhdGU6bmFtZVwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHBvbGljeSBuYW1lXCIsXG4gIFwibWFuYWdlOnBvbGljeTp1cGRhdGU6ZWRpdFBvbGljeVwiICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlICdlZGl0X3BvbGljeScgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTptZXRhZGF0YVwiICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgJ21ldGFkYXRhJyBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOnJ1bGVcIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBwb2xpY3kgcnVsZSBpdHNlbGZcIixcbiAgXCJtYW5hZ2U6cG9saWN5Omludm9rZVwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5ICdpbnZva2UnIGVuZHBvaW50LlwiLFxuICBcIm1hbmFnZTpwb2xpY3k6d2FzbToqXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgd2FzbSBwb2xpY3kgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnBvbGljeTp3YXNtOnVwbG9hZFwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHdhc20gcG9saWN5ICd1cGxvYWQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOipcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBwb2xpY3kgc2VjcmV0cyBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6Z2V0XCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IHNlY3JldHMgJ2dldCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOipcIiAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHBvbGljeSBzZWNyZXRzICd1cGRhdGUnIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6dmFsdWVzXCIgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgc2VjcmV0cyAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHNlY3JldHMga2V5cyBhbmQgdmFsdWVzXCIsXG4gIFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZTphY2xcIiAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBzZWNyZXRzICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgc2VjcmV0cyBhY2xcIixcbiAgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOmVkaXRQb2xpY3lcIiAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IHNlY3JldHMgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSBgZWRpdF9wb2xpY3lgIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnBvbGljeTpidWNrZXRzOipcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBwb2xpY3kgYnVja2V0cyBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6Z2V0XCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGJ1Y2tldHMgJ2dldCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6bGlzdFwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcG9saWN5IGJ1Y2tldHMgJ2xpc3QnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeTpidWNrZXRzOnVwZGF0ZToqXCIgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBidWNrZXRzICd1cGRhdGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeTpidWNrZXRzOnVwZGF0ZTpvd25lclwiICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBidWNrZXRzICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgYG93bmVyYCBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czp1cGRhdGU6YWNsXCIgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBwb2xpY3kgYnVja2V0cyAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIGBhY2xgIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnBvbGljeTpidWNrZXRzOnVwZGF0ZTptZXRhZGF0YVwiICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBidWNrZXRzICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgYG1ldGFkYXRhYCBwcm9wZXJ0eVwiLFxuICBcIm1hbmFnZTpjb250YWN0OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgY29udGFjdCBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6Y29udGFjdDpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGNvbnRhY3QgcmVhZG9ubHkgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6Y3JlYXRlXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBjb250YWN0ICdjcmVhdGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6Z2V0XCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBjb250YWN0IGBnZXRgIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6bGlzdFwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBjb250YWN0IGBsaXN0YCBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpjb250YWN0OmRlbGV0ZVwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgY29udGFjdCBgZGVsZXRlYCBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZToqXCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBjb250YWN0ICd1cGRhdGUnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm5hbWVcIiAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGNvbnRhY3QgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUgY29udGFjdCdzICduYW1lJyBmaWVsZC5cIixcbiAgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6YWRkcmVzc2VzXCIgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgY29udGFjdCAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0cyB1cGRhdGVzIHRvIHRoZSBjb250YWN0J3MgJ2FkZHJlc3NlcycgZmllbGQuXCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm93bmVyXCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGNvbnRhY3QgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUgY29udGFjdCdzICdvd25lcicgZmllbGQuXCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm1ldGFkYXRhXCIgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGNvbnRhY3QgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUgY29udGFjdCdzICdtZXRhZGF0YScgZmllbGQuXCIsXG4gIFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOmxhYmVsc1wiICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIGNvbnRhY3QgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdHMgdXBkYXRlcyB0byB0aGUgY29udGFjdCdzICdsYWJlbHMnIGZpZWxkLlwiLFxuICBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTplZGl0UG9saWN5XCIgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBjb250YWN0ICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RzIHVwZGF0ZXMgdG8gdGhlIGNvbnRhY3QncyAnZWRpdF9wb2xpY3knIGZpZWxkLlwiLFxuICBcIm1hbmFnZTpjb250YWN0Omxvb2t1cDoqXCIgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgY29udGFjdCBgbG9va3VwYCBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6Y29udGFjdDpsb29rdXA6YWRkcmVzc1wiICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgY29udGFjdCAnbG9va3VwIGJ5IGFkZHJlc3MnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnBvbGljeTpjcmVhdGVJbXBvcnRLZXlcIiAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHBvbGljeSBrZXkgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHJvbGUgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnJvbGU6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCByb2xlIHJlYWRvbmx5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpyb2xlOmF0dGVzdFwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICdhdHRlc3QnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6Y3JlYXRlXCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ2NyZWF0ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZTpkZWxldGVcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAnZGVsZXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOmdldDoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICdnZXQnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6Z2V0OmtleXNcIiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICdsaXN0IGtleXMnIGFuZCAnZ2V0IGtleScgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnJvbGU6Z2V0OmtleXM6bGlzdFwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICdsaXN0IGtleXMnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOnJvbGU6Z2V0OmtleXM6Z2V0XCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSByb2xlICdnZXQga2V5JyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOmdldDp1c2Vyc1wiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgcm9sZSAnbGlzdCB1c2VycycgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZTpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAnbGlzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6KlwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAndXBkYXRlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTphY3Rpb25zXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICd1cGRhdGUnIGVuZHBvaW50LCBidXQgcmVzdHJpY3RpbmcgdXBkYXRlcyB0byB0aGUgcm9sZSAnYWN0aW9ucycgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlZFwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgcm9sZSAndXBkYXRlJyBlbmRwb2ludCwgYnV0IHJlc3RyaWN0aW5nIHVwZGF0ZXMgdG8gdGhlIHJvbGUgJ2VuYWJsZWQnIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeVwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSByb2xlICdwb2xpY3knIHByb3BlcnR5XCIsXG4gIFwibWFuYWdlOnJvbGU6dXBkYXRlOmVkaXRQb2xpY3lcIiAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHJvbGUgJ3VwZGF0ZScgZW5kcG9pbnQsIGJ1dCByZXN0cmljdGluZyB1cGRhdGVzIHRvIHRoZSByb2xlICdlZGl0X3BvbGljeScgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OipcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHJvbGUgJ3VwZGF0ZTprZXknIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTprZXk6YWRkXCIgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgcm9sZSAndXBkYXRlOmtleXM6YWRkJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTprZXk6cmVtb3ZlXCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgcm9sZSAndXBkYXRlOmtleXM6cmVtb3ZlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOipcIiAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgcm9sZSAndXBkYXRlOnVzZXInIGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOmFkZFwiICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgcm9sZSAndXBkYXRlOnVzZXI6YWRkJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOnJlbW92ZVwiICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgcm9sZSAndXBkYXRlOnVzZXI6cmVtb3ZlJyBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpyb2xlOmhpc3Rvcnk6dHg6bGlzdFwiICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSByb2xlICdsaXN0X2hpc3RvcmljYWxfdHgnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOmlkZW50aXR5OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBpZGVudGl0eSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6aWRlbnRpdHk6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGlkZW50aXR5IHJlYWRvbmx5IGVuZHBvaW50cy5cIixcbiAgXCJtYW5hZ2U6aWRlbnRpdHk6dmVyaWZ5XCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgaWRlbnRpdHkgJ3ZlcmlmeScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6aWRlbnRpdHk6YWRkXCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgaWRlbnRpdHkgJ2FkZCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6aWRlbnRpdHk6cmVtb3ZlXCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgaWRlbnRpdHkgJ3JlbW92ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6aWRlbnRpdHk6bGlzdFwiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgaWRlbnRpdHkgJ2xpc3QnIGVuZHBvaW50XCIsXG4gIFwibWFuYWdlOm9yZzoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIGFsbCBvcmcgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOm9yZzpjcmVhdGVcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHRoZSBvcmcgJ2NyZWF0ZScgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6b3JnOm1ldHJpY3M6cXVlcnlcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gcmV0cmlldmluZyBvcmcgbWV0cmljc1wiLFxuICBcIm1hbmFnZTpvcmc6YXVkaXQ6cXVlcnlcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byByZXRyaWV2aW5nIG9yZyBhdWRpdCBsb2dcIixcbiAgXCJtYW5hZ2U6b3JnOnJlYWRvbmx5XCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIG9yZyByZWFkb25seSBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6b3JnOmFkZFVzZXJcIiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBhZGRpbmcgYW4gT0lEQyB1c2VyIHRvIHRoZSBvcmdcIixcbiAgXCJtYW5hZ2U6b3JnOmludml0YXRpb246bGlzdFwiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBsaXN0aW5nIHBlbmRpbmcgaW52aXRhdGlvbnNcIixcbiAgXCJtYW5hZ2U6b3JnOmludml0YXRpb246Y2FuY2VsXCIgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBjYW5jZWxpbmcgcGVuZGluZyBpbnZpdGF0aW9uc1wiLFxuICBcIm1hbmFnZTpvcmc6aW52aXRlVXNlclwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGludml0aW5nIGEgbmV3IG1lbWJlciBvciBvcmcgb3duZXIgdG8gdGhlIG9yZ1wiLFxuICBcIm1hbmFnZTpvcmc6aW52aXRlQWxpZW5cIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIGludml0aW5nIGEgbmV3IGFsaWVuIHVzZXIgdG8gdGhlIG9yZ1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlTWVtYmVyc2hpcDoqXCIgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIHVwZGF0aW5nIGV4aXN0aW5nIHVzZXIncyBvcmcgbWVtYmVyc2hpcFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlTWVtYmVyc2hpcDpvd25lclwiICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIHVwZGF0aW5nIGV4aXN0aW5nIG9yZyBPd25lcidzIG1lbWJlcnNoaXBcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZU1lbWJlcnNoaXA6bWVtYmVyXCIgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciB1cGRhdGluZyBleGlzdGluZyBvcmcgTWVtYmVyJ3MgbWVtYmVyc2hpcFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlTWVtYmVyc2hpcDphbGllblwiICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyBvbmx5IHRvIHRoZSBvcmcgZW5kcG9pbnQgZm9yIHVwZGF0aW5nIGV4aXN0aW5nIG9yZyBBbGllbidzIG1lbWJlcnNoaXBcIixcbiAgXCJtYW5hZ2U6b3JnOmxpc3RVc2Vyc1wiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBsaXN0aW5nIGFsbCBvcmcgdXNlcnMgKG1lbWJlcnMpXCIsXG4gIFwibWFuYWdlOm9yZzp1c2VyOmdldFwiICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludHMgZm9yIGdldHRpbmcgdXNlcnMgYnkgaWQgb3IgZW1haWxcIixcbiAgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6KlwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBkZWxldGluZyBhbiBPSURDIHVzZXJcIixcbiAgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6b3duZXJcIiAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBkZWxldGluZyBhIHVzZXIsIG9ubHkgd2hlbiBkZWxldGluZyBhbiBleGlzdGluZyBvcmcgT3duZXJcIixcbiAgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6bWVtYmVyXCIgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgb3JnIGVuZHBvaW50IGZvciBkZWxldGluZyBhIHVzZXIsIG9ubHkgd2hlbiBkZWxldGluZyBhbiBleGlzdGluZyBvcmcgTWVtYmVyXCIsXG4gIFwibWFuYWdlOm9yZzpkZWxldGVVc2VyOmFsaWVuXCIgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIG9yZyBlbmRwb2ludCBmb3IgZGVsZXRpbmcgYSB1c2VyLCBvbmx5IHdoZW4gZGVsZXRpbmcgYW4gZXhpc3Rpbmcgb3JnIEFsaWVuXCIsXG4gIFwibWFuYWdlOm9yZzpnZXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIHRvIHJldHJpZXZpbmcgb3JnYW5pemF0aW9uIGluZm9ybWF0aW9uXCIsXG4gIFwibWFuYWdlOm9yZzp1c2VyOnJlc2V0TWZhXCIgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYW4gb3duZXIgdG8gaW5pdGlhdGUgYW4gTUZBIHJlc2V0IGZvciBhIHVzZXJcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIG9yZyAndXBkYXRlJyBhY3Rpb25zXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6ZW5hYmxlZFwiICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIG9yZyAnZW5hYmxlZCcgcHJvcGVydHlcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpwb2xpY3lcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyBvcmctd2lkZSBwb2xpY2llc1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOnNpZ25Qb2xpY3lcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIG9yZy13aWRlIHNpZ24gcG9saWNpZXNcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpleHBvcnRcIiAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyB1c2VyLWV4cG9ydCBzZXR0aW5ncyAoZGVsYXksIHdpbmRvdywgZGlzYWJsZWQpXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6dG90cEZhaWx1cmVMaW1pdFwiICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIFRPVFAgZmFpbHVyZSBsaW1pdFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOm5vdGlmaWNhdGlvbkVuZHBvaW50c1wiICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIG5vdGlmaWNhdGlvbiBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpkZWZhdWx0SW52aXRlS2luZFwiICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyB0aGUgZGVmYXVsdCBpbnZpdGUga2luZFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmlkcENvbmZpZ3VyYXRpb25cIiAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIElEUCBjb25maWd1cmF0aW9uXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6cGFzc2tleUNvbmZpZ3VyYXRpb25cIiAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgcGFzc2tleSBjb25maWd1cmF0aW9uXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6ZW1haWxQcmVmZXJlbmNlc1wiICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgZW1haWwgcHJlZmVyZW5jZXNcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpoaXN0b3JpY2FsRGF0YVwiICAgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyBoaXN0b3JpY2FsIGRhdGEgY29uZmlndXJhdGlvblwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOnJlcXVpcmVTY29wZUNlaWxpbmdcIiAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHRoZSByZXF1aXJlX3Njb3BlX2NlaWxpbmcgc2V0dGluZ1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmFsaWVuTG9naW5SZXF1aXJlbWVudFwiICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHRoZSBhbGllbiBsb2dpbiByZXF1aXJlbWVudFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOm1lbWJlckxvZ2luUmVxdWlyZW1lbnRcIiAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHRoZSBtZW1iZXIgbG9naW4gcmVxdWlyZW1lbnRcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTprZXlFeHBvcnRSZXF1aXJlbWVudFwiICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyB0aGUga2V5IGV4cG9ydCByZXF1aXJlbWVudFwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmFsbG93ZWRNZmFUeXBlc1wiICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIGFsbG93ZWQgTUZBIHR5cGVzXCIsXG4gIFwibWFuYWdlOm9yZzp1cGRhdGU6cG9saWN5RW5naW5lQ29uZlwiICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgdGhlIHBvbGljeSBlbmdpbmUgY29uZmlndXJhdGlvblwiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmN1c3RvbUNoYWluc1wiICAgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIGN1c3RvbSBjaGFpbnNcIixcbiAgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpleHRQcm9wc1wiICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyB1cGRhdGluZyBleHRlbmRlZCBvcmcgcHJvcGVydGllc1wiLFxuICBcIm1hbmFnZTpvcmc6dXBkYXRlOmVkaXRQb2xpY3lcIiAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIHVwZGF0aW5nIHRoZSBvcmcncyBlZGl0IHBvbGljeVwiLFxuICBcIm1hbmFnZTpzZXNzaW9uOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgc2Vzc2lvbiBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6c2Vzc2lvbjpyZWFkb25seVwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIHNlc3Npb24gcmVhZG9ubHkgZW5kcG9pbnRzXCIsXG4gIFwibWFuYWdlOnNlc3Npb246Z2V0XCIgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHNlc3Npb24gJ2dldCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6c2Vzc2lvbjpsaXN0XCIgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgc2Vzc2lvbiAnbGlzdCcgZW5kcG9pbnRcIixcbiAgXCJtYW5hZ2U6c2Vzc2lvbjpjcmVhdGVcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgc2Vzc2lvbiAnY3JlYXRlJyBlbmRwb2ludCwgYnV0IHdpdGhvdXQgdGhlIGFiaWxpdHkgdG8gZXh0ZW5kIHNlc3Npb24gbGlmZXRpbWVzXCIsXG4gIFwibWFuYWdlOnNlc3Npb246ZXh0ZW5kXCIgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWNjZXNzIG9ubHkgdG8gdGhlIHNlc3Npb24gJ2NyZWF0ZScgZW5kcG9pbnQsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBleHRlbmQgc2Vzc2lvbiBsaWZldGltZXNcIixcbiAgXCJtYW5hZ2U6c2Vzc2lvbjpyZXZva2VcIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3Mgb25seSB0byB0aGUgc2Vzc2lvbiAncmV2b2tlJyBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6ZXhwb3J0OipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGV4cG9ydCBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6ZXhwb3J0OnJlYWRvbmx5XCIgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gYWxsIGV4cG9ydCBtYW5hZ2VtZW50IHJlYWRvbmx5IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpleHBvcnQ6b3JnOipcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgb3JnLWV4cG9ydCBtYW5hZ2VtZW50IGVuZHBvaW50c1wiLFxuICBcIm1hbmFnZTpleHBvcnQ6b3JnOmdldFwiICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgb3JnLWV4cG9ydCBkb3dubG9hZCBlbmRwb2ludFwiLFxuICBcIm1hbmFnZTpleHBvcnQ6dXNlcjoqXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgdXNlci1leHBvcnQgbWFuYWdlbWVudCBlbmRwb2ludHNcIixcbiAgXCJtYW5hZ2U6ZXhwb3J0OnVzZXI6ZGVsZXRlXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBkZWxldGluZyBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XCIsXG4gIFwibWFuYWdlOmV4cG9ydDp1c2VyOmxpc3RcIiAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgbGlzdGluZyBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1wiLFxuICBcIm1hbmFnZTphdXRoTWlncmF0aW9uOipcIiAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFsbCBhdXRoIG1pZ3JhdGlvbiBzY29wZXNcIixcbiAgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjppZGVudGl0eTphZGRcIiAgICAgICAgICAgOiBcIkFsbG93cyBhZGRpbmcgaWRlbnRpdGllcyB0byBleGlzdGluZyB1c2VycyBkdXJpbmcgYW4gYXV0aCBtaWdyYXRpb25cIixcbiAgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjppZGVudGl0eTpyZW1vdmVcIiAgICAgICAgOiBcIkFsbG93cyByZW1vdmluZyBpZGVudGl0aWVzIGZyb20gZXhpc3RpbmcgdXNlcnMgZHVyaW5nIGFuIGF1dGggbWlncmF0aW9uXCIsXG4gIFwibWFuYWdlOmF1dGhNaWdyYXRpb246dXNlcjp1cGRhdGVcIiAgICAgICAgICAgIDogXCJBbGxvd3MgdXBkYXRpbmcgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzXCIsXG4gIFwibWFuYWdlOm1taToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYWxsIENSVUQgb3BlcmF0aW9ucyBvbiBNTUkgcGVuZGluZyBtZXNzYWdlc1wiLFxuICBcIm1hbmFnZTptbWk6cmVhZG9ubHlcIiAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFsbCByZWFkb25seSBvcGVyYXRpb25zIG9uIE1NSSBwZW5kaW5nIG1lc3NhZ2VzXCIsXG4gIFwibWFuYWdlOm1taTpnZXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgcmV0cmlldmluZyBNTUkgcGVuZGluZyBtZXNzYWdlc1wiLFxuICBcIm1hbmFnZTptbWk6bGlzdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGxpc3RpbmcgTU1JIHBlbmRpbmcgbWVzc2FnZXNcIixcbiAgXCJtYW5hZ2U6bW1pOnJlamVjdFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyByZWplY3RpbmcgTU1JIHBlbmRpbmcgbWVzc2FnZXNcIixcbiAgXCJtYW5hZ2U6bW1pOmRlbGV0ZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBkZWxldGluZyBNTUkgcGVuZGluZyBtZXNzYWdlc1wiLFxuICBcImV4cG9ydDoqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgZXhwb3J0IGVuZHBvaW50c1wiLFxuICBcImV4cG9ydDp1c2VyOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byBhbGwgdXNlci1leHBvcnQgZXhlY3V0aW9uIGVuZHBvaW50c1wiLFxuICBcImV4cG9ydDp1c2VyOmluaXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGluaXRpYXRpbmcgYSBuZXcgdXNlci1leHBvcnQgcmVxdWVzdFwiLFxuICBcImV4cG9ydDp1c2VyOmNvbXBsZXRlXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGNvbXBsZXRpbmcgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFwiLFxuICBcIm1taToqXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGNhbGxzIHRvIHRoZSBNTUkgZW5kcG9pbnRcIixcbiAgXCJvcmdBY2Nlc3M6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gY2VydGFpbiBvcmdzIG90aGVyIHRoYW4gdGhlIGN1cnJlbnQgc2Vzc2lvbidzXCIsXG4gIFwib3JnQWNjZXNzOmNoaWxkOipcIiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJBbGxvd3MgYSBzZXNzaW9uIHRvIGJlIHVzZWQgZm9yIGFjY2VzcyB0byBvcmdzIHRyYW5zaXRpdmVseSBwYXJlbnRlZCBieSB0aGUgc2Vzc2lvbidzIG9yZy5cIixcbiAgXCJycGM6KlwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnRcIixcbiAgXCJycGM6Y2FuY2VsVHJhbnNhY3Rpb25cIiAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX2NhbmNlbFRyYW5zYWN0aW9uJyBmdW5jdGlvbi5cIixcbiAgXCJycGM6Y3JlYXRlVHJhbnNhY3Rpb246KlwiICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX2NyZWF0ZVRyYW5zYWN0aW9uJyBmdW5jdGlvbi5cIixcbiAgXCJycGM6Y3JlYXRlVHJhbnNhY3Rpb246ZXZtXCIgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX2NyZWF0ZVRyYW5zYWN0aW9uJyBmdW5jdGlvbiB3aXRoIGFuIEVWTSB0cmFuc2FjdGlvbiByZXF1ZXN0LlwiLFxuICBcInJwYzpnZXRUcmFuc2FjdGlvblwiICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfZ2V0VHJhbnNhY3Rpb24nIGZ1bmN0aW9uLlwiLFxuICBcInJwYzpidGNMaXN0VXR4b3NcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfYnRjTGlzdFV0eG9zJyBmdW5jdGlvbi5cIixcbiAgXCJycGM6bGlzdFRyYW5zYWN0aW9uc1wiICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX2xpc3RUcmFuc2FjdGlvbnMnIGZ1bmN0aW9uLlwiLFxuICBcInJwYzpyZXRyeVRyYW5zYWN0aW9uXCIgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfcmV0cnlUcmFuc2FjdGlvbicgZnVuY3Rpb25cIixcbiAgXCJycGM6YmluYW5jZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgJ2NzX2JpbmFuY2UqJyBmdW5jdGlvbnNcIixcbiAgXCJycGM6YnliaXRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIkFsbG93cyBhY2Nlc3MgdG8gdGhlIFJQQyBBUEkgZW5kcG9pbnQsIGJ1dCBvbmx5IGZvciB0aGUgQnliaXQgbWV0aG9kc1wiLFxuICBcInJwYzpjb2luYmFzZVwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiQWxsb3dzIGFjY2VzcyB0byB0aGUgUlBDIEFQSSBlbmRwb2ludCwgYnV0IG9ubHkgZm9yIHRoZSAnY3NfY29pbmJhc2UqJyBmdW5jdGlvbnNcIixcbn07XG5cbi8vIENvbnN0IGZvciBzY29wZSBjYXRlZ29yeSBsYWJlbHNcbmNvbnN0IENBVEVHT1JZX0xBQkVMUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc2lnbjogXCJTaWduXCIsXG4gIG1hbmFnZTogXCJNYW5hZ2VcIixcbiAgZXhwb3J0OiBcIkV4cG9ydFwiLFxuICBtbWk6IFwiTU1JXCIsXG4gIG9yZ0FjY2VzczogXCJPcmcgQWNjZXNzXCIsXG4gIHJwYzogXCJSUENcIixcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIHBhcmVudCBzY29wZSBmb3IgYSBnaXZlbiBzY29wZS5cbiAqIEEgcGFyZW50IGlzIGEgc2NvcGUgZW5kaW5nIHdpdGggJyonIHRoYXQgaXMgYSBwcmVmaXggb2YgdGhlIGN1cnJlbnQgc2NvcGUuXG4gKiBSZXR1cm5zIHRoZSBsb25nZXN0IG1hdGNoaW5nIHBhcmVudCAoY2xvc2VzdCBhbmNlc3RvciksIGV4Y2x1ZGluZyB0aGUgc2NvcGUgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgdG8gZmluZCB0aGUgcGFyZW50IGZvci5cbiAqIEBwYXJhbSBhbGxTY29wZXMgVGhlIGxpc3Qgb2YgYWxsIHNjb3Blcy5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgc2NvcGUgb3IgbnVsbCBpZiBubyBwYXJlbnQgaXMgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQYXJlbnQoc2NvcGU6IEV4cGxpY2l0U2NvcGUsIGFsbFNjb3BlczogRXhwbGljaXRTY29wZVtdKTogRXhwbGljaXRTY29wZSB8IG51bGwge1xuICBsZXQgcGFyZW50OiBFeHBsaWNpdFNjb3BlIHwgbnVsbCA9IG51bGw7XG4gIGxldCBtYXhMZW5ndGggPSAwO1xuXG4gIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGFsbFNjb3Blcykge1xuICAgIC8vIFNraXAgdGhlIHNjb3BlIGl0c2VsZlxuICAgIGlmIChjYW5kaWRhdGUgPT09IHNjb3BlKSBjb250aW51ZTtcblxuICAgIGlmIChjYW5kaWRhdGUuZW5kc1dpdGgoXCIqXCIpICYmIHNjb3BlLnN0YXJ0c1dpdGgoY2FuZGlkYXRlLnNsaWNlKDAsIC0xKSkpIHtcbiAgICAgIC8vIFByZWZlciB0aGUgbG9uZ2VzdCBtYXRjaGluZyBwYXJlbnQgKGNsb3Nlc3QgYW5jZXN0b3IpXG4gICAgICBpZiAoY2FuZGlkYXRlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICBwYXJlbnQgPSBjYW5kaWRhdGU7XG4gICAgICAgIG1heExlbmd0aCA9IGNhbmRpZGF0ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcmVudDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgc2NvcGVzIGRpY3Rpb25hcnkgZnJvbSBBbGxTY29wZXMuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbXBsZXRlIGRpY3Rpb25hcnkgb2YgYWxsIGF2YWlsYWJsZSBzY29wZXMgb3JnYW5pemVkIGJ5IGNhdGVnb3J5LlxuICovXG5mdW5jdGlvbiBjb21wdXRlU2NvcGVzRGljdGlvbmFyeSgpOiBTY29wZXNEaWN0aW9uYXJ5IHtcbiAgY29uc3QgYWxsU2NvcGVzID0gT2JqZWN0LmtleXMoQWxsU2NvcGVzKSBhcyBFeHBsaWNpdFNjb3BlW107XG4gIGNvbnN0IGl0ZW1zID0gbmV3IE1hcDxFeHBsaWNpdFNjb3BlLCBTY29wZUl0ZW0+KCk7XG4gIGNvbnN0IHJlc3VsdDogU2NvcGVzRGljdGlvbmFyeSA9IHt9O1xuXG4gIC8vIEZpcnN0IHBhc3M6IGNyZWF0ZSBhbGwgaXRlbXNcbiAgZm9yIChjb25zdCBzY29wZSBvZiBhbGxTY29wZXMpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IHNjb3BlLnNwbGl0KFwiOlwiKVswXTtcbiAgICBpZiAoIXJlc3VsdFtjYXRlZ29yeV0pIHtcbiAgICAgIHJlc3VsdFtjYXRlZ29yeV0gPSB7IGxhYmVsOiBDQVRFR09SWV9MQUJFTFNbY2F0ZWdvcnldIHx8IGNhdGVnb3J5LCBzY29wZXM6IFtdIH07XG4gICAgfVxuXG4gICAgaXRlbXMuc2V0KHNjb3BlLCB7XG4gICAgICB2YWx1ZTogc2NvcGUsXG4gICAgICBkZXNjcmlwdGlvbjogQWxsU2NvcGVzW3Njb3BlXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNlY29uZCBwYXNzOiBidWlsZCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwc1xuICBmb3IgKGNvbnN0IHNjb3BlIG9mIGFsbFNjb3Blcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gc2NvcGUuc3BsaXQoXCI6XCIpWzBdO1xuICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5nZXQoc2NvcGUpITtcbiAgICBjb25zdCBwYXJlbnRTY29wZSA9IGZpbmRQYXJlbnQoc2NvcGUsIGFsbFNjb3Blcyk7XG5cbiAgICBpZiAocGFyZW50U2NvcGUgJiYgcGFyZW50U2NvcGUgIT09IHNjb3BlKSB7XG4gICAgICBpdGVtcy5nZXQocGFyZW50U2NvcGUpIS5jaGlsZHJlbiEucHVzaChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2NhdGVnb3J5XS5zY29wZXMucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cblxuICAvLyBTb3J0IHJvb3RzOiB3aWxkY2FyZHMgZmlyc3RcbiAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBPYmplY3QudmFsdWVzKHJlc3VsdCkpIHtcbiAgICBjYXRlZ29yeS5zY29wZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGEudmFsdWUuZW5kc1dpdGgoXCIqXCIpICYmICFiLnZhbHVlLmVuZHNXaXRoKFwiKlwiKSkgcmV0dXJuIC0xO1xuICAgICAgaWYgKCFhLnZhbHVlLmVuZHNXaXRoKFwiKlwiKSAmJiBiLnZhbHVlLmVuZHNXaXRoKFwiKlwiKSkgcmV0dXJuIDE7XG4gICAgICByZXR1cm4gYS52YWx1ZS5sb2NhbGVDb21wYXJlKGIudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wbGV0ZSBkaWN0aW9uYXJ5IG9mIGFsbCBhdmFpbGFibGUgc2NvcGVzIG9yZ2FuaXplZCBieSBjYXRlZ29yeS5cbiAqXG4gKiBUaGlzIGRpY3Rpb25hcnkgaXMgYXV0b21hdGljYWxseSBjb21wdXRlZCBmcm9tIHtAbGluayBBbGxTY29wZXN9IGJ5IGluZmVycmluZ1xuICogdGhlIGhpZXJhcmNoeSBmcm9tIHNjb3BlIG5hbWVzLiBBIHNjb3BlJ3MgcGFyZW50IGlzIGRldGVybWluZWQgYnkgZmluZGluZyBhXG4gKiBzY29wZSBlbmRpbmcgd2l0aCAnKicgdGhhdCBpcyBhIHByZWZpeCBvZiB0aGUgY3VycmVudCBzY29wZS5cbiAqXG4gKiBUaGUgZGljdGlvbmFyeSBpcyBvcmdhbml6ZWQgaW50byB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6XG4gKiAtIGBzaWduYDogU2NvcGVzIGZvciBzaWduaW5nIG9wZXJhdGlvbnMgKGJsb2IsIHRyYW5zYWN0aW9ucywgZXRjLilcbiAqIC0gYG1hbmFnZWA6IFNjb3BlcyBmb3IgbWFuYWdlbWVudCBvcGVyYXRpb25zIChrZXlzLCByb2xlcywgcG9saWNpZXMsIGV0Yy4pXG4gKiAtIGBleHBvcnRgOiBTY29wZXMgZm9yIGV4cG9ydCBvcGVyYXRpb25zXG4gKiAtIGBtbWlgOiBTY29wZXMgZm9yIE1ldGFNYXNrIEludGVncmF0aW9uXG4gKiAtIGBvcmdBY2Nlc3NgOiBTY29wZXMgZm9yIGNyb3NzLW9yZ2FuaXphdGlvbiBhY2Nlc3NcbiAqXG4gKiBUaGlzIGRpY3Rpb25hcnkgc2VydmVzIGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHNjb3BlIGRlZmluaXRpb25zIGFuZCBpcyB1c2VkXG4gKiB0byBnZW5lcmF0ZSBzY29wZXMgZm9yIHJvbGUgYW5kIHVzZXIgc2Vzc2lvbnMuIEl0IGlzIGFsc28gcmVmZXJlbmNlZCBieVxuICoge0BsaW5rIHJvbGVTY29wZXNEaWN0aW9uYXJ5fSBhbmQge0BsaW5rIHVzZXJTY29wZXNEaWN0aW9uYXJ5fSB3aGljaCBwcm92aWRlXG4gKiBmaWx0ZXJlZCBzdWJzZXRzIG9mIHRoZXNlIHNjb3Blcy5cbiAqXG4gKiBAc2VlIHtAbGluayBBbGxTY29wZXN9IC0gVGhlIHNvdXJjZSByZWNvcmQgY29udGFpbmluZyBzY29wZSBkZXNjcmlwdGlvbnNcbiAqIEBzZWUge0BsaW5rIHJvbGVTY29wZXNEaWN0aW9uYXJ5fSAtIFJlc3RyaWN0ZWQgc2NvcGVzIGZvciByb2xlIHNlc3Npb25zXG4gKiBAc2VlIHtAbGluayB1c2VyU2NvcGVzRGljdGlvbmFyeX0gLSBSZXN0cmljdGVkIHNjb3BlcyBmb3IgdXNlciBzZXNzaW9uc1xuICovXG5leHBvcnQgY29uc3QgYWxsU2NvcGVzRGljdGlvbmFyeTogU2NvcGVzRGljdGlvbmFyeSA9IGNvbXB1dGVTY29wZXNEaWN0aW9uYXJ5KCk7XG5cbi8qKlxuICogUmVzdHJpY3RlZCBzY29wZXMgZGljdGlvbmFyeSBmb3Igcm9sZS1iYXNlZCBzZXNzaW9uIGdlbmVyYXRpb24uXG4gKiBDb250YWlucyBvbmx5IHRoZSBzY29wZXMgdGhhdCBhcmUgYWxsb3dlZCBmb3Igcm9sZSBzZXNzaW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IHJvbGVTY29wZXNEaWN0aW9uYXJ5ID0ge1xuICBzaWduOiBhbGxTY29wZXNEaWN0aW9uYXJ5LnNpZ24sXG4gIG1taTogYWxsU2NvcGVzRGljdGlvbmFyeS5tbWksXG4gIHJwYzogYWxsU2NvcGVzRGljdGlvbmFyeS5ycGMsXG4gIG1hbmFnZToge1xuICAgIGxhYmVsOiBcIk1hbmFnZVwiLFxuICAgIHNjb3BlczogW1xuICAgICAgLy8gRmluZCBhbmQgaW5jbHVkZSBtYW5hZ2U6bW1pOipcbiAgICAgIChhbGxTY29wZXNEaWN0aW9uYXJ5Lm1hbmFnZS5zY29wZXMgYXMgU2NvcGVJdGVtW10pXG4gICAgICAgIC5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZToqXCIpIVxuICAgICAgICAuY2hpbGRyZW4hLmZpbmQoKHMpID0+IHMudmFsdWUgPT09IFwibWFuYWdlOm1taToqXCIpISxcbiAgICAgIC8vIEZpbmQgYW5kIGluY2x1ZGUgbWFuYWdlOm1mYTpsaXN0XG4gICAgICAoYWxsU2NvcGVzRGljdGlvbmFyeS5tYW5hZ2Uuc2NvcGVzIGFzIFNjb3BlSXRlbVtdKVxuICAgICAgICAuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTptZmE6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTptZmE6bGlzdFwiKSEsXG4gICAgICAvLyBGaW5kIGFuZCBpbmNsdWRlIG1hbmFnZTprZXk6Z2V0XG4gICAgICAoYWxsU2NvcGVzRGljdGlvbmFyeS5tYW5hZ2Uuc2NvcGVzIGFzIFNjb3BlSXRlbVtdKVxuICAgICAgICAuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTprZXk6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTprZXk6Z2V0XCIpISxcbiAgICAgIC8vIEZpbmQgYW5kIGluY2x1ZGUgbWFuYWdlOmtleTpsaXN0XG4gICAgICAoYWxsU2NvcGVzRGljdGlvbmFyeS5tYW5hZ2Uuc2NvcGVzIGFzIFNjb3BlSXRlbVtdKVxuICAgICAgICAuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gXCJtYW5hZ2U6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTprZXk6KlwiKSFcbiAgICAgICAgLmNoaWxkcmVuIS5maW5kKChzKSA9PiBzLnZhbHVlID09PSBcIm1hbmFnZTprZXk6bGlzdFwiKSEsXG4gICAgXSxcbiAgfSxcbn0gc2F0aXNmaWVzIFNjb3Blc0RpY3Rpb25hcnk7XG5cbi8qKlxuICogUmVzdHJpY3RlZCBzY29wZXMgZGljdGlvbmFyeSBmb3IgdXNlciBzZXNzaW9uIGdlbmVyYXRpb24uXG4gKiBFeGNsdWRlcyBzY29wZXMgdGhhdCByZXF1aXJlIGVsZXZhdGVkIHBlcm1pc3Npb25zIChvcmdBY2Nlc3MsIGV4cG9ydCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VyU2NvcGVzRGljdGlvbmFyeSA9IHtcbiAgbWFuYWdlOiBhbGxTY29wZXNEaWN0aW9uYXJ5Lm1hbmFnZSxcbiAgc2lnbjogYWxsU2NvcGVzRGljdGlvbmFyeS5zaWduLFxuICBtbWk6IGFsbFNjb3Blc0RpY3Rpb25hcnkubW1pLFxuICBycGM6IGFsbFNjb3Blc0RpY3Rpb25hcnkucnBjLFxufTtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer_session.d.ts","sourceRoot":"","sources":["../../src/signer_session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"signer_session.d.ts","sourceRoot":"","sources":["../../src/signer_session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,2FAA2F;AAC3F,qBAAa,iBAAiB;;IAG5B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC,0BAA0B;IACpB,MAAM;IAQZ;;;;;;;OAOG;gBACS,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKrE"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
2
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
@@ -11,10 +10,8 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
11
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
11
|
};
|
|
13
12
|
var _SignerSessionInfo_apiClient, _SignerSessionInfo_sessionId;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.SignerSessionInfo = void 0;
|
|
16
13
|
/** Signer session info. Can only be used to revoke a token, but not for authentication. */
|
|
17
|
-
class SignerSessionInfo {
|
|
14
|
+
export class SignerSessionInfo {
|
|
18
15
|
/** Revoke this session */
|
|
19
16
|
async revoke() {
|
|
20
17
|
await __classPrivateFieldGet(this, _SignerSessionInfo_apiClient, "f").sessionRevoke(__classPrivateFieldGet(this, _SignerSessionInfo_sessionId, "f"));
|
|
@@ -38,6 +35,5 @@ class SignerSessionInfo {
|
|
|
38
35
|
this.purpose = purpose;
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
exports.SignerSessionInfo = SignerSessionInfo;
|
|
42
38
|
_SignerSessionInfo_apiClient = new WeakMap(), _SignerSessionInfo_sessionId = new WeakMap();
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyX3Nlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lnbmVyX3Nlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUEsMkZBQTJGO0FBQzNGLE1BQU0sT0FBTyxpQkFBaUI7SUFLNUIsMEJBQTBCO0lBQzFCLEtBQUssQ0FBQyxNQUFNO1FBQ1YsTUFBTSx1QkFBQSxJQUFJLG9DQUFXLENBQUMsYUFBYSxDQUFDLHVCQUFBLElBQUksb0NBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUU3RTs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxTQUFvQixFQUFFLFNBQWlCLEVBQUUsT0FBZTtRQXJCM0QsK0NBQXNCO1FBQ3RCLCtDQUFtQjtRQXFCMUIsdUJBQUEsSUFBSSxnQ0FBYyxTQUFTLE1BQUEsQ0FBQztRQUM1Qix1QkFBQSxJQUFJLGdDQUFjLFNBQVMsTUFBQSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXBpQ2xpZW50IH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcblxuLyoqIFNpZ25lciBzZXNzaW9uIGluZm8uIENhbiBvbmx5IGJlIHVzZWQgdG8gcmV2b2tlIGEgdG9rZW4sIGJ1dCBub3QgZm9yIGF1dGhlbnRpY2F0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFNpZ25lclNlc3Npb25JbmZvIHtcbiAgcmVhZG9ubHkgI2FwaUNsaWVudDogQXBpQ2xpZW50O1xuICByZWFkb25seSAjc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwdXJwb3NlOiBzdHJpbmc7XG5cbiAgLyoqIFJldm9rZSB0aGlzIHNlc3Npb24gKi9cbiAgYXN5bmMgcmV2b2tlKCkge1xuICAgIGF3YWl0IHRoaXMuI2FwaUNsaWVudC5zZXNzaW9uUmV2b2tlKHRoaXMuI3Nlc3Npb25JZCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIElEIG9mIHRoZSBzZXNzaW9uOyBjYW4gYmUgdXNlZCBmb3IgcmV2b2NhdGlvbiBidXQgbm90IGZvciBhdXRoXG4gICAqIEBwYXJhbSBwdXJwb3NlIFNlc3Npb24gcHVycG9zZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBzZXNzaW9uSWQ6IHN0cmluZywgcHVycG9zZTogc3RyaW5nKSB7XG4gICAgdGhpcy4jYXBpQ2xpZW50ID0gYXBpQ2xpZW50O1xuICAgIHRoaXMuI3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgICB0aGlzLnB1cnBvc2UgPSBwdXJwb3NlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UserExportCompleteResponse, UserExportKeyMaterial } from "./schema_types";
|
|
1
|
+
import type { UserExportCompleteResponse, UserExportKeyMaterial } from "./schema_types.ts";
|
|
2
2
|
import type { CipherSuite } from "@hpke/core";
|
|
3
3
|
/**
|
|
4
4
|
* Get the HPKE ciphersuite for user-export decryption.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user_export.d.ts","sourceRoot":"","sources":["../../src/user_export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"user_export.d.ts","sourceRoot":"","sources":["../../src/user_export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAQlE;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,WAAW,CAExD;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,SAAS,EACvB,QAAQ,EAAE,0BAA0B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAwBhC;AA+BD;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAO9D;AAED;;;;GAIG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAYlD"}
|
package/dist/src/user_export.js
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.userExportCipherSuite = userExportCipherSuite;
|
|
4
|
-
exports.userExportKeygen = userExportKeygen;
|
|
5
|
-
exports.toArrayBuffer = toArrayBuffer;
|
|
6
|
-
exports.userExportDecrypt = userExportDecrypt;
|
|
7
|
-
exports.loadSubtleCrypto = loadSubtleCrypto;
|
|
8
|
-
exports.loadCrypto = loadCrypto;
|
|
9
|
-
const util_1 = require("./util");
|
|
1
|
+
import { decodeBase64 } from "./util.js";
|
|
10
2
|
/**
|
|
11
3
|
* Get the HPKE ciphersuite for user-export decryption.
|
|
12
4
|
*
|
|
13
5
|
* @returns The HPKE ciphersuite for user export.
|
|
14
6
|
*/
|
|
15
|
-
async function userExportCipherSuite() {
|
|
7
|
+
export async function userExportCipherSuite() {
|
|
16
8
|
const hpke = await import("@hpke/core");
|
|
17
9
|
const suite = new hpke.CipherSuite({
|
|
18
10
|
kem: new hpke.DhkemP256HkdfSha256(),
|
|
@@ -26,7 +18,7 @@ async function userExportCipherSuite() {
|
|
|
26
18
|
*
|
|
27
19
|
* @returns The newly generated key pair.
|
|
28
20
|
*/
|
|
29
|
-
async function userExportKeygen() {
|
|
21
|
+
export async function userExportKeygen() {
|
|
30
22
|
return (await userExportCipherSuite()).kem.generateKeyPair();
|
|
31
23
|
}
|
|
32
24
|
/**
|
|
@@ -35,7 +27,7 @@ async function userExportKeygen() {
|
|
|
35
27
|
* @param b The buffer to convert
|
|
36
28
|
* @returns The resulting ArrayBuffer
|
|
37
29
|
*/
|
|
38
|
-
function toArrayBuffer(b) {
|
|
30
|
+
export function toArrayBuffer(b) {
|
|
39
31
|
return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength);
|
|
40
32
|
}
|
|
41
33
|
/**
|
|
@@ -45,15 +37,15 @@ function toArrayBuffer(b) {
|
|
|
45
37
|
* @param response The response from a successful `userExportComplete` request.
|
|
46
38
|
* @returns The decrypted key material.
|
|
47
39
|
*/
|
|
48
|
-
async function userExportDecrypt(recipientKey, response) {
|
|
40
|
+
export async function userExportDecrypt(recipientKey, response) {
|
|
49
41
|
// The ciphersuite we use for decryption
|
|
50
42
|
const suite = await userExportCipherSuite();
|
|
51
43
|
// decrypt the export ciphertext using the HPKE one-shot API
|
|
52
44
|
const tenc = new TextEncoder();
|
|
53
45
|
const tdec = new TextDecoder("utf-8");
|
|
54
46
|
const info = toArrayBuffer(tenc.encode(`cubist-signer::UserExportOwner::${response.user_id}`));
|
|
55
|
-
const public_key = toArrayBuffer(
|
|
56
|
-
const ctxt = toArrayBuffer(
|
|
47
|
+
const public_key = toArrayBuffer(decodeBase64(response.ephemeral_public_key));
|
|
48
|
+
const ctxt = toArrayBuffer(decodeBase64(response.encrypted_key_material));
|
|
57
49
|
const decrypted = JSON.parse(tdec.decode(await suite.open({
|
|
58
50
|
recipientKey,
|
|
59
51
|
enc: public_key,
|
|
@@ -94,7 +86,7 @@ async function userExportDecrypt(recipientKey, response) {
|
|
|
94
86
|
*
|
|
95
87
|
* @returns A SubtleCrypto instance
|
|
96
88
|
*/
|
|
97
|
-
async function loadSubtleCrypto() {
|
|
89
|
+
export async function loadSubtleCrypto() {
|
|
98
90
|
try {
|
|
99
91
|
const crypto = await loadCrypto();
|
|
100
92
|
return crypto.subtle;
|
|
@@ -108,7 +100,7 @@ async function loadSubtleCrypto() {
|
|
|
108
100
|
*
|
|
109
101
|
* @returns A Crypto instance
|
|
110
102
|
*/
|
|
111
|
-
async function loadCrypto() {
|
|
103
|
+
export async function loadCrypto() {
|
|
112
104
|
if (globalThis !== undefined && globalThis.crypto !== undefined) {
|
|
113
105
|
// Browsers, Node.js >= v19, Cloudflare Workers, Bun, etc.
|
|
114
106
|
return globalThis.crypto;
|
|
@@ -122,4 +114,4 @@ async function loadCrypto() {
|
|
|
122
114
|
throw new Error("subtle crypto not supported");
|
|
123
115
|
}
|
|
124
116
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcl9leHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXNlcl9leHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd6Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUI7SUFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2pDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUNuQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQzFCLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7S0FDM0IsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUErQixDQUFDO0FBQ3pDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0I7SUFDcEMsT0FBTyxDQUFDLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQWE7SUFDekMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxZQUF1QixFQUN2QixRQUFvQztJQUVwQyx3Q0FBd0M7SUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsRUFBRSxDQUFDO0lBRTVDLDREQUE0RDtJQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1DQUFtQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9GLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUM5RSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQ2pELElBQUksQ0FBQyxNQUFNLENBQ1QsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUNkO1FBQ0UsWUFBWTtRQUNaLEdBQUcsRUFBRSxVQUFVO1FBQ2YsSUFBSSxFQUFFLElBQUk7S0FDWCxFQUNELElBQUksQ0FDTCxDQUNGLENBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCO0lBQ3BDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFBQyxPQUFPLEVBQVcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVU7SUFDOUIsSUFBSSxVQUFVLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDaEUsMERBQTBEO1FBQzFELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBQ0QsaUJBQWlCO0lBQ2pCLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDNUQsT0FBTyxTQUE4QixDQUFDO0lBQ3hDLENBQUM7SUFBQyxPQUFPLEVBQVcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2UsIFVzZXJFeHBvcnRLZXlNYXRlcmlhbCB9IGZyb20gXCIuL3NjaGVtYV90eXBlcy50c1wiO1xuaW1wb3J0IHsgZGVjb2RlQmFzZTY0IH0gZnJvbSBcIi4vdXRpbC50c1wiO1xuaW1wb3J0IHR5cGUgeyBDaXBoZXJTdWl0ZSB9IGZyb20gXCJAaHBrZS9jb3JlXCI7XG5cbi8qKlxuICogR2V0IHRoZSBIUEtFIGNpcGhlcnN1aXRlIGZvciB1c2VyLWV4cG9ydCBkZWNyeXB0aW9uLlxuICpcbiAqIEByZXR1cm5zIFRoZSBIUEtFIGNpcGhlcnN1aXRlIGZvciB1c2VyIGV4cG9ydC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVzZXJFeHBvcnRDaXBoZXJTdWl0ZSgpOiBQcm9taXNlPENpcGhlclN1aXRlPiB7XG4gIGNvbnN0IGhwa2UgPSBhd2FpdCBpbXBvcnQoXCJAaHBrZS9jb3JlXCIpO1xuICBjb25zdCBzdWl0ZSA9IG5ldyBocGtlLkNpcGhlclN1aXRlKHtcbiAgICBrZW06IG5ldyBocGtlLkRoa2VtUDI1NkhrZGZTaGEyNTYoKSxcbiAgICBrZGY6IG5ldyBocGtlLkhrZGZTaGEyNTYoKSxcbiAgICBhZWFkOiBuZXcgaHBrZS5BZXMyNTZHY20oKSxcbiAgfSk7XG4gIHJldHVybiBzdWl0ZSBhcyB1bmtub3duIGFzIENpcGhlclN1aXRlO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5IHBhaXIgZm9yIHVzZXIgZXhwb3J0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXdseSBnZW5lcmF0ZWQga2V5IHBhaXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1c2VyRXhwb3J0S2V5Z2VuKCk6IFByb21pc2U8Q3J5cHRvS2V5UGFpcj4ge1xuICByZXR1cm4gKGF3YWl0IHVzZXJFeHBvcnRDaXBoZXJTdWl0ZSgpKS5rZW0uZ2VuZXJhdGVLZXlQYWlyKCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBBcnJheUJ1ZmZlciBzbGljZSByZXByZXNlbnRlZCBieSBhIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcGFyYW0gYiBUaGUgYnVmZmVyIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIFRoZSByZXN1bHRpbmcgQXJyYXlCdWZmZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXlCdWZmZXIoYjogVWludDhBcnJheSk6IEFycmF5QnVmZmVyIHtcbiAgcmV0dXJuIGIuYnVmZmVyLnNsaWNlKGIuYnl0ZU9mZnNldCwgYi5ieXRlT2Zmc2V0ICsgYi5ieXRlTGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgdXNlciBleHBvcnQuXG4gKlxuICogQHBhcmFtIHJlY2lwaWVudEtleSBUaGUgTklTVCBQLTI1NiBzZWNyZXQga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGBwdWJsaWNLZXlgIGFyZ3VtZW50IHRvIHRoZSBgdXNlckV4cG9ydENvbXBsZXRlYCBpbnZvY2F0aW9uIHRoYXQgcmV0dXJuZWQgYHJlc3BvbnNlYC5cbiAqIEBwYXJhbSByZXNwb25zZSBUaGUgcmVzcG9uc2UgZnJvbSBhIHN1Y2Nlc3NmdWwgYHVzZXJFeHBvcnRDb21wbGV0ZWAgcmVxdWVzdC5cbiAqIEByZXR1cm5zIFRoZSBkZWNyeXB0ZWQga2V5IG1hdGVyaWFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXNlckV4cG9ydERlY3J5cHQoXG4gIHJlY2lwaWVudEtleTogQ3J5cHRvS2V5LFxuICByZXNwb25zZTogVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2UsXG4pOiBQcm9taXNlPFVzZXJFeHBvcnRLZXlNYXRlcmlhbD4ge1xuICAvLyBUaGUgY2lwaGVyc3VpdGUgd2UgdXNlIGZvciBkZWNyeXB0aW9uXG4gIGNvbnN0IHN1aXRlID0gYXdhaXQgdXNlckV4cG9ydENpcGhlclN1aXRlKCk7XG5cbiAgLy8gZGVjcnlwdCB0aGUgZXhwb3J0IGNpcGhlcnRleHQgdXNpbmcgdGhlIEhQS0Ugb25lLXNob3QgQVBJXG4gIGNvbnN0IHRlbmMgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgY29uc3QgdGRlYyA9IG5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpO1xuICBjb25zdCBpbmZvID0gdG9BcnJheUJ1ZmZlcih0ZW5jLmVuY29kZShgY3ViaXN0LXNpZ25lcjo6VXNlckV4cG9ydE93bmVyOjoke3Jlc3BvbnNlLnVzZXJfaWR9YCkpO1xuICBjb25zdCBwdWJsaWNfa2V5ID0gdG9BcnJheUJ1ZmZlcihkZWNvZGVCYXNlNjQocmVzcG9uc2UuZXBoZW1lcmFsX3B1YmxpY19rZXkpKTtcbiAgY29uc3QgY3R4dCA9IHRvQXJyYXlCdWZmZXIoZGVjb2RlQmFzZTY0KHJlc3BvbnNlLmVuY3J5cHRlZF9rZXlfbWF0ZXJpYWwpKTtcbiAgY29uc3QgZGVjcnlwdGVkOiBVc2VyRXhwb3J0S2V5TWF0ZXJpYWwgPSBKU09OLnBhcnNlKFxuICAgIHRkZWMuZGVjb2RlKFxuICAgICAgYXdhaXQgc3VpdGUub3BlbihcbiAgICAgICAge1xuICAgICAgICAgIHJlY2lwaWVudEtleSxcbiAgICAgICAgICBlbmM6IHB1YmxpY19rZXksXG4gICAgICAgICAgaW5mbzogaW5mbyxcbiAgICAgICAgfSxcbiAgICAgICAgY3R4dCxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICByZXR1cm4gZGVjcnlwdGVkO1xufVxuXG4vKlxuICogVGhpcyBuZXh0IHR3byBmdW5jdGlvbnMgYXJlIHBvcnRlZCBmcm9tIHRoZSBocGtlLWpzIHBhY2thZ2UsXG4gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9kYWppYWppL2hwa2UtanMvXG4gKiB3aGljaCBpcyBDb3B5cmlnaHQgKEMpIDIwMjIgQWppdG9taSBEYWlzdWtlIGFuZCBsaWNlbnNlZFxuICogdW5kZXIgdGhlIE1JVCBMaWNlbnNlLCB3aGljaCBmb2xsb3dzOlxuICpcbiAqIE1JVCBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEFqaXRvbWkgRGFpc3VrZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBGaWd1cmUgb3V0IGhvdyB0byBsb2FkIFN1YnRsZUNyeXB0byBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cbiAqXG4gKiBAcmV0dXJucyBBIFN1YnRsZUNyeXB0byBpbnN0YW5jZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFN1YnRsZUNyeXB0bygpOiBQcm9taXNlPFN1YnRsZUNyeXB0bz4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNyeXB0byA9IGF3YWl0IGxvYWRDcnlwdG8oKTtcbiAgICByZXR1cm4gY3J5cHRvLnN1YnRsZTtcbiAgfSBjYXRjaCAoX2U6IHVua25vd24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdWJ0bGUgY3J5cHRvIG5vdCBzdXBwb3J0ZWRcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBGaWd1cmUgb3V0IGhvdyB0byBsb2FkIENyeXB0byBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cbiAqXG4gKiBAcmV0dXJucyBBIENyeXB0byBpbnN0YW5jZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENyeXB0bygpOiBQcm9taXNlPENyeXB0bz4ge1xuICBpZiAoZ2xvYmFsVGhpcyAhPT0gdW5kZWZpbmVkICYmIGdsb2JhbFRoaXMuY3J5cHRvICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBCcm93c2VycywgTm9kZS5qcyA+PSB2MTksIENsb3VkZmxhcmUgV29ya2VycywgQnVuLCBldGMuXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuY3J5cHRvO1xuICB9XG4gIC8vIE5vZGUuanMgPD0gdjE4XG4gIHRyeSB7XG4gICAgY29uc3QgeyB3ZWJjcnlwdG8gfSA9IGF3YWl0IGltcG9ydChcImNyeXB0b1wiKTsgLy8gbm9kZTpjcnlwdG9cbiAgICByZXR1cm4gd2ViY3J5cHRvIGFzIHVua25vd24gYXMgQ3J5cHRvO1xuICB9IGNhdGNoIChfZTogdW5rbm93bikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInN1YnRsZSBjcnlwdG8gbm90IHN1cHBvcnRlZFwiKTtcbiAgfVxufVxuIl19
|