@liflig/cdk 3.27.45 → 3.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/slack-error-log-handler-lambda/__pycache__/index.cpython-314.pyc +0 -0
- package/assets/slack-error-log-handler-lambda/__pycache__/test_handler.cpython-314-pytest-9.1.1.pyc +0 -0
- package/lib/build-artifacts/github-actions-role.d.ts +39 -0
- package/lib/build-artifacts/github-actions-role.js +34 -2
- package/lib/build-artifacts/index.js +3 -1
- package/package.json +1 -1
|
Binary file
|
package/assets/slack-error-log-handler-lambda/__pycache__/test_handler.cpython-314-pytest-9.1.1.pyc
CHANGED
|
Binary file
|
|
@@ -48,7 +48,46 @@ export interface Props {
|
|
|
48
48
|
* NOTE: The owner must explicitly be whitelisted in {@link trustedOwners}.
|
|
49
49
|
*/
|
|
50
50
|
owner: string;
|
|
51
|
+
/**
|
|
52
|
+
* The numeric ID of the GitHub repository, as used by the immutable
|
|
53
|
+
* subject claim format.
|
|
54
|
+
*
|
|
55
|
+
* When omitted, any repository ID is trusted for this repository name.
|
|
56
|
+
* Supply it to pin the trust policy to this exact repository, so that a
|
|
57
|
+
* future repository reusing the name is not trusted.
|
|
58
|
+
*
|
|
59
|
+
* @example 845069697
|
|
60
|
+
*/
|
|
61
|
+
repositoryId?: number;
|
|
62
|
+
/**
|
|
63
|
+
* The numeric ID of the owner of the GitHub repository, as used by the
|
|
64
|
+
* immutable subject claim format.
|
|
65
|
+
*
|
|
66
|
+
* When omitted, any owner ID is trusted for this owner name. Supply it to
|
|
67
|
+
* pin the trust policy to this exact owner.
|
|
68
|
+
*
|
|
69
|
+
* @example 13219542
|
|
70
|
+
*/
|
|
71
|
+
ownerId?: number;
|
|
51
72
|
}[];
|
|
73
|
+
/**
|
|
74
|
+
* Whether to trust the immutable subject claim format in addition to the
|
|
75
|
+
* original one.
|
|
76
|
+
*
|
|
77
|
+
* GitHub issues the repository segment of the `sub` claim either as
|
|
78
|
+
* `owner/repo`, or in an immutable format that appends the numeric owner and
|
|
79
|
+
* repository IDs, `owner@1234/repo@5678`. Which one a repository gets depends
|
|
80
|
+
* on a per-repository Actions setting, so a role has to trust both formats
|
|
81
|
+
* for the duration of the migration to let the repositories it trusts opt in
|
|
82
|
+
* one at a time.
|
|
83
|
+
*
|
|
84
|
+
* Once every repository has opted in, the original format stops being issued
|
|
85
|
+
* and support for it is dropped, along with this property.
|
|
86
|
+
*
|
|
87
|
+
* @default false
|
|
88
|
+
* @see https://github.blog/changelog/2026-04-23-immutable-subject-claims-for-github-actions-oidc-tokens/
|
|
89
|
+
*/
|
|
90
|
+
trustImmutableSubjectClaim?: boolean;
|
|
52
91
|
/**
|
|
53
92
|
* An existing OpenID Connect Provider for GitHub Actions.
|
|
54
93
|
*/
|
|
@@ -22,9 +22,40 @@ export const validateProps = (props) => {
|
|
|
22
22
|
if (!props.trustedOwners.includes(repository.owner)) {
|
|
23
23
|
errors.push(`Owner ${repository.owner} of repository ${repository.name} not configured as a trusted owner`);
|
|
24
24
|
}
|
|
25
|
+
// A malformed ID renders straight into the subject claim, where it matches
|
|
26
|
+
// nothing and leaves deployments failing to assume the role.
|
|
27
|
+
Object.entries({
|
|
28
|
+
ownerId: repository.ownerId,
|
|
29
|
+
repositoryId: repository.repositoryId,
|
|
30
|
+
}).forEach(([prop, id]) => {
|
|
31
|
+
if (id !== undefined && !(Number.isInteger(id) && id > 0)) {
|
|
32
|
+
errors.push(`${prop} ${id} of repository ${repository.name} must be a positive integer`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
25
35
|
});
|
|
26
36
|
return errors;
|
|
27
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* The repository segment of a GitHub Actions OIDC subject claim, in each
|
|
40
|
+
* trusted format.
|
|
41
|
+
*
|
|
42
|
+
* Unpinned IDs become `@*`, which IAM matches with `StringLike`. Note that an
|
|
43
|
+
* IAM `*` also matches `/` and `:`, so an unpinned owner ID lets the wildcard
|
|
44
|
+
* span into the rest of the subject: the trailing `:ref:refs/heads/<branch>`
|
|
45
|
+
* that the pattern looks for need not be the one GitHub put there. Git rejects
|
|
46
|
+
* `:` in branch names, but other subject shapes (`:environment:<name>`) offer
|
|
47
|
+
* no such guarantee. Pinning {@link Props.repositories.ownerId} makes the
|
|
48
|
+
* pattern literal up to and including the repository name, which removes that
|
|
49
|
+
* freedom entirely, and is worth doing wherever the ID is known.
|
|
50
|
+
*/
|
|
51
|
+
const repositoryClaims = (repository, trustImmutableSubjectClaim) => [
|
|
52
|
+
`${repository.owner}/${repository.name}`,
|
|
53
|
+
...(trustImmutableSubjectClaim
|
|
54
|
+
? [
|
|
55
|
+
`${repository.owner}@${repository.ownerId ?? "*"}/${repository.name}@${repository.repositoryId ?? "*"}`,
|
|
56
|
+
]
|
|
57
|
+
: []),
|
|
58
|
+
];
|
|
28
59
|
/**
|
|
29
60
|
* Creates an IAM role that can be assumed by GitHub Actions workflows
|
|
30
61
|
* in specific GitHub repositories and branches using OpenID Connect.
|
|
@@ -37,7 +68,8 @@ export class GithubActionsRole extends constructs.Construct {
|
|
|
37
68
|
if (errors.length > 0) {
|
|
38
69
|
throw new Error(`Invalid props were supplied: ${errors.join("; ")}`);
|
|
39
70
|
}
|
|
40
|
-
const
|
|
71
|
+
const branch = props.trustedBranch ?? "master";
|
|
72
|
+
const subjects = props.repositories.flatMap((repository) => repositoryClaims(repository, props.trustImmutableSubjectClaim ?? false).map((repositoryClaim) => `repo:${repositoryClaim}:ref:refs/heads/${branch}`));
|
|
41
73
|
const fullyQualifiedSubjects = subjects.filter((subject) => !(subject.includes("?") || subject.includes("*")));
|
|
42
74
|
const wildcardSubjects = subjects.filter((subject) => subject.includes("?") || subject.includes("*"));
|
|
43
75
|
const principalConditions = {
|
|
@@ -64,4 +96,4 @@ export class GithubActionsRole extends constructs.Construct {
|
|
|
64
96
|
});
|
|
65
97
|
}
|
|
66
98
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLWFjdGlvbnMtcm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZC1hcnRpZmFjdHMvZ2l0aHViLWFjdGlvbnMtcm9sZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssR0FBRyxNQUFNLHFCQUFxQixDQUFBO0FBQzFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBeUR4Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBWSxFQUFZLEVBQUU7SUFDdEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFBO0lBQzNCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyw4QkFBOEIsQ0FBQyxDQUFBO1FBQ25FLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQ1QsU0FBUyxVQUFVLENBQUMsS0FBSyxrQkFBa0IsVUFBVSxDQUFDLElBQUksb0NBQW9DLENBQy9GLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQUN6QyxJQUFJLENBQVU7SUFFOUIsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFZO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDaEIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN0RSxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3JDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYixRQUFRLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLElBQUksbUJBQW1CLEtBQUssQ0FBQyxhQUFhLElBQUksUUFBUSxFQUFFLENBQ2xHLENBQUE7UUFDRCxNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQzVDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQy9ELENBQUE7UUFFRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQ3RDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQzVELENBQUE7UUFDRCxNQUFNLG1CQUFtQixHQUFHO1lBQzFCLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLElBQUk7Z0JBQ25DLFlBQVksRUFBRTtvQkFDWix5Q0FBeUMsRUFBRSxzQkFBc0I7aUJBQ2xFO2FBQ0YsQ0FBQztZQUNGLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUk7Z0JBQzdCLFVBQVUsRUFBRTtvQkFDVix5Q0FBeUMsRUFBRSxnQkFBZ0I7aUJBQzVEO2FBQ0YsQ0FBQztTQUNILENBQUE7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsQ0FDMUMsS0FBSyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFDM0MsbUJBQW1CLEVBQ25CLCtCQUErQixDQUNoQyxDQUFBO1FBRUQsb0VBQW9FO1FBQ3BFLHlFQUF5RTtRQUN6RSxJQUNFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FDNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDbkMsQ0FBQyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFLENBQ2pDLFlBQVksSUFBSSxjQUFjLENBQUMsTUFBTSxDQUN4QyxDQUNGLEVBQ0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUE7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNyQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxxQkFBcUI7WUFDakQsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiB0cnVzdGVkIEdpdEh1YiByZXBvc2l0b3J5IG93bmVycy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbnMgYXMgYSBzb3J0IG9mIHdoaXRlbGlzdCB0byBjYXRjaFxuICAgKiBwb3RlbnRpYWwgdHlwb3MgaW4ge0BsaW5rIHJlcG9zaXRvcmllc30uXG4gICAqL1xuICB0cnVzdGVkT3duZXJzOiBzdHJpbmdbXVxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRydXN0ZWQgYnJhbmNoLlxuICAgKlxuICAgKiBUaGUgd2lsZGNhcmQgY2hhcmFjdGVycyAnKicgYW5kICc/JyBjYW4gYmUgdXNlZCB0b1xuICAgKiByZXByZXNlbnQgYW55IGNvbWJpbmF0aW9uIG9mIGNoYXJhY3RlcnMgYW5kIGFueSBzaW5nbGVcbiAgICogY2hhcmFjdGVyLCByZXNwZWN0aXZlbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFzdGVyXCJcbiAgICovXG4gIHRydXN0ZWRCcmFuY2g/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIGNyZWF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJnaXRodWItYWN0aW9ucy1yb2xlXCJcbiAgICovXG4gIHJvbGVOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIHJlcG9zaXRvcmllcyB0aGF0IHRoZSBwcmluY2lwYWwgdHJ1c3RzLlxuICAgKi9cbiAgcmVwb3NpdG9yaWVzOiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgICAqXG4gICAgICogVGhlIHdpbGRjYXJkIGNoYXJhY3RlcnMgJyonIGFuZCAnPycgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYW55IGNvbWJpbmF0aW9uIG9mIGNoYXJhY3RlcnMgYW5kIGFueSBzaW5nbGVcbiAgICAgKiBjaGFyYWN0ZXIsIHJlc3BlY3RpdmVseS5cbiAgICAgKlxuICAgICAqIE5PVEU6IEJlIGNhcmVmdWwgd2hlbiB1c2luZyB3aWxkY2FyZCBjaGFyYWN0ZXJzIGFzIHlvdVxuICAgICAqIG1heSBncmFudCBhY2Nlc3MgdG8gcmVwb3NpdG9yaWVzIHlvdSBkaWQgbm90IGludGVuZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlIFwibXktcmVwb3NpdG9yeVwiXG4gICAgICogQGV4YW1wbGUgXCJteS10ZWFtLSpcIlxuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBvd25lciBvZiB0aGUgR2l0SHViIHJlcG9zaXRvcnkuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGUgb3duZXIgbXVzdCBleHBsaWNpdGx5IGJlIHdoaXRlbGlzdGVkIGluIHtAbGluayB0cnVzdGVkT3duZXJzfS5cbiAgICAgKi9cbiAgICBvd25lcjogc3RyaW5nXG4gIH1bXVxuICAvKipcbiAgICogQW4gZXhpc3RpbmcgT3BlbklEIENvbm5lY3QgUHJvdmlkZXIgZm9yIEdpdEh1YiBBY3Rpb25zLlxuICAgKi9cbiAgb2lkY1Byb3ZpZGVyOiBpYW0uSU9wZW5JZENvbm5lY3RQcm92aWRlclxufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHZhbGlkYXRpbmcgdGhlIGNvbnN0cnVjdCBwcm9wZXJ0aWVzLlxuICpcbiAqIFJldHVybnMgYSBsaXN0IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMuIEFuIGVtcHR5IGxpc3QgbWVhbnMgdGhlIHByb3BzIGFyZSB2YWxpZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUHJvcHMgPSAocHJvcHM6IFByb3BzKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW11cbiAgaWYgKHByb3BzLnRydXN0ZWRPd25lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgZXJyb3JzLnB1c2goXCJBdCBsZWFzdCAxIHRydXN0ZWQgb3duZXIgbXVzdCBiZSBzdXBwbGllZCwgYnV0IDAgd2VyZSBnaXZlblwiKVxuICB9XG4gIGlmIChwcm9wcy5yZXBvc2l0b3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgZXJyb3JzLnB1c2goXCJBdCBsZWFzdCAxIHJlcG9zaXRvcnkgbXVzdCBiZSBzdXBwbGllZCwgYnV0IDAgd2VyZSBnaXZlblwiKVxuICB9XG4gIHByb3BzLnRydXN0ZWRPd25lcnMuZm9yRWFjaCgob3duZXIpID0+IHtcbiAgICBpZiAoIW93bmVyLm1hdGNoKC9eW2EtekEtWjAtOS1dKyQvKSkge1xuICAgICAgZXJyb3JzLnB1c2goYFRydXN0ZWQgb3duZXIgJHtvd25lcn0gY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzYClcbiAgICB9XG4gIH0pXG5cbiAgcHJvcHMucmVwb3NpdG9yaWVzLmZvckVhY2goKHJlcG9zaXRvcnkpID0+IHtcbiAgICBpZiAoIXByb3BzLnRydXN0ZWRPd25lcnMuaW5jbHVkZXMocmVwb3NpdG9yeS5vd25lcikpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgT3duZXIgJHtyZXBvc2l0b3J5Lm93bmVyfSBvZiByZXBvc2l0b3J5ICR7cmVwb3NpdG9yeS5uYW1lfSBub3QgY29uZmlndXJlZCBhcyBhIHRydXN0ZWQgb3duZXJgLFxuICAgICAgKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGVycm9yc1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gSUFNIHJvbGUgdGhhdCBjYW4gYmUgYXNzdW1lZCBieSBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvd3NcbiAqIGluIHNwZWNpZmljIEdpdEh1YiByZXBvc2l0b3JpZXMgYW5kIGJyYW5jaGVzIHVzaW5nIE9wZW5JRCBDb25uZWN0LlxuICovXG5leHBvcnQgY2xhc3MgR2l0aHViQWN0aW9uc1JvbGUgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uUm9sZVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlUHJvcHMocHJvcHMpXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJvcHMgd2VyZSBzdXBwbGllZDogJHtlcnJvcnMuam9pbihcIjsgXCIpfWApXG4gICAgfVxuXG4gICAgY29uc3Qgc3ViamVjdHMgPSBwcm9wcy5yZXBvc2l0b3JpZXMubWFwKFxuICAgICAgKHJlcG9zaXRvcnkpID0+XG4gICAgICAgIGByZXBvOiR7cmVwb3NpdG9yeS5vd25lcn0vJHtyZXBvc2l0b3J5Lm5hbWV9OnJlZjpyZWZzL2hlYWRzLyR7cHJvcHMudHJ1c3RlZEJyYW5jaCA/PyBcIm1hc3RlclwifWAsXG4gICAgKVxuICAgIGNvbnN0IGZ1bGx5UXVhbGlmaWVkU3ViamVjdHMgPSBzdWJqZWN0cy5maWx0ZXIoXG4gICAgICAoc3ViamVjdCkgPT4gIShzdWJqZWN0LmluY2x1ZGVzKFwiP1wiKSB8fCBzdWJqZWN0LmluY2x1ZGVzKFwiKlwiKSksXG4gICAgKVxuXG4gICAgY29uc3Qgd2lsZGNhcmRTdWJqZWN0cyA9IHN1YmplY3RzLmZpbHRlcihcbiAgICAgIChzdWJqZWN0KSA9PiBzdWJqZWN0LmluY2x1ZGVzKFwiP1wiKSB8fCBzdWJqZWN0LmluY2x1ZGVzKFwiKlwiKSxcbiAgICApXG4gICAgY29uc3QgcHJpbmNpcGFsQ29uZGl0aW9ucyA9IHtcbiAgICAgIC4uLihmdWxseVF1YWxpZmllZFN1YmplY3RzLmxlbmd0aCAmJiB7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgIFwidG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206c3ViXCI6IGZ1bGx5UXVhbGlmaWVkU3ViamVjdHMsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLih3aWxkY2FyZFN1YmplY3RzLmxlbmd0aCAmJiB7XG4gICAgICAgIFN0cmluZ0xpa2U6IHtcbiAgICAgICAgICBcInRva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOnN1YlwiOiB3aWxkY2FyZFN1YmplY3RzLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfVxuXG4gICAgY29uc3QgcHJpbmNpcGFsID0gbmV3IGlhbS5GZWRlcmF0ZWRQcmluY2lwYWwoXG4gICAgICBwcm9wcy5vaWRjUHJvdmlkZXIub3BlbklkQ29ubmVjdFByb3ZpZGVyQXJuLFxuICAgICAgcHJpbmNpcGFsQ29uZGl0aW9ucyxcbiAgICAgIFwic3RzOkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlcIixcbiAgICApXG5cbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcHJpbmNpcGFsIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHRydXN0IHJlbGF0aW9uc2hpcFxuICAgIC8vIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIElBTSBjb25kaXRpb24gd2l0aCBhIGNvbnRleHQga2V5IGFuZCB2YWx1ZXNcbiAgICBpZiAoXG4gICAgICAhT2JqZWN0LnZhbHVlcyhwcmluY2lwYWxDb25kaXRpb25zKS5zb21lKChjb25kaXRpb25FbGVtZW50KSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25kaXRpb25FbGVtZW50KS5zb21lKFxuICAgICAgICAgIChbY29uZGl0aW9uS2V5LCBjb25kaXRpb25WYWx1ZV0pID0+XG4gICAgICAgICAgICBjb25kaXRpb25LZXkgJiYgY29uZGl0aW9uVmFsdWUubGVuZ3RoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoZSBwcmluY2lwYWwncyB0cnVzdCBwb2xpY3kgbmVlZHMgdG8gYmUgY29uZmlndXJlZCB3aXRoIGF0IGxlYXN0IG9uZSBJQU0gY29uZGl0aW9uXCIsXG4gICAgICApXG4gICAgfVxuICAgIHRoaXMucm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIlJvbGVcIiwge1xuICAgICAgcm9sZU5hbWU6IHByb3BzLnJvbGVOYW1lID8/IFwiZ2l0aHViLWFjdGlvbnMtcm9sZVwiLFxuICAgICAgYXNzdW1lZEJ5OiBwcmluY2lwYWwsXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLWFjdGlvbnMtcm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZC1hcnRpZmFjdHMvZ2l0aHViLWFjdGlvbnMtcm9sZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssR0FBRyxNQUFNLHFCQUFxQixDQUFBO0FBQzFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBZ0d4Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBWSxFQUFZLEVBQUU7SUFDdEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFBO0lBQzNCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyw4QkFBOEIsQ0FBQyxDQUFBO1FBQ25FLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQ1QsU0FBUyxVQUFV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QUNuQyxZQUFZLEVBQUU7b0JBQ1oseUNBQXlDLEVBQUUsc0JBQXNCO2lCQUNsRTthQUNGLENBQUM7WUFDRixHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJO2dCQUM3QixVQUFVLEVBQUU7b0JBQ1YseUNBQXlDLEVBQUUsZ0JBQWdCO2lCQUM1RDthQUNGLENBQUM7U0FDSCxDQUFBO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQzFDLEtBQUssQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQzNDLG1CQUFtQixFQUNuQiwrQkFBK0IsQ0FDaEMsQ0FBQTtRQUVELG9FQUFvRTtRQUNwRSx5RUFBeUU7UUFDekUsSUFDRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQzVELE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ25DLENBQUMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUNqQyxZQUFZLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FDeEMsQ0FDRixFQUNELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLHFGQUFxRixDQUN0RixDQUFBO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDckMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUkscUJBQXFCO1lBQ2pELFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdHJ1c3RlZCBHaXRIdWIgcmVwb3NpdG9yeSBvd25lcnMuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb25zIGFzIGEgc29ydCBvZiB3aGl0ZWxpc3QgdG8gY2F0Y2hcbiAgICogcG90ZW50aWFsIHR5cG9zIGluIHtAbGluayByZXBvc2l0b3JpZXN9LlxuICAgKi9cbiAgdHJ1c3RlZE93bmVyczogc3RyaW5nW11cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0cnVzdGVkIGJyYW5jaC5cbiAgICpcbiAgICogVGhlIHdpbGRjYXJkIGNoYXJhY3RlcnMgJyonIGFuZCAnPycgY2FuIGJlIHVzZWQgdG9cbiAgICogcmVwcmVzZW50IGFueSBjb21iaW5hdGlvbiBvZiBjaGFyYWN0ZXJzIGFuZCBhbnkgc2luZ2xlXG4gICAqIGNoYXJhY3RlciwgcmVzcGVjdGl2ZWx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1hc3RlclwiXG4gICAqL1xuICB0cnVzdGVkQnJhbmNoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSB0byBjcmVhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiZ2l0aHViLWFjdGlvbnMtcm9sZVwiXG4gICAqL1xuICByb2xlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIEdpdEh1YiByZXBvc2l0b3JpZXMgdGhhdCB0aGUgcHJpbmNpcGFsIHRydXN0cy5cbiAgICovXG4gIHJlcG9zaXRvcmllczoge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBHaXRIdWIgcmVwb3NpdG9yeS5cbiAgICAgKlxuICAgICAqIFRoZSB3aWxkY2FyZCBjaGFyYWN0ZXJzICcqJyBhbmQgJz8nIGNhbiBiZSB1c2VkIHRvXG4gICAgICogcmVwcmVzZW50IGFueSBjb21iaW5hdGlvbiBvZiBjaGFyYWN0ZXJzIGFuZCBhbnkgc2luZ2xlXG4gICAgICogY2hhcmFjdGVyLCByZXNwZWN0aXZlbHkuXG4gICAgICpcbiAgICAgKiBOT1RFOiBCZSBjYXJlZnVsIHdoZW4gdXNpbmcgd2lsZGNhcmQgY2hhcmFjdGVycyBhcyB5b3VcbiAgICAgKiBtYXkgZ3JhbnQgYWNjZXNzIHRvIHJlcG9zaXRvcmllcyB5b3UgZGlkIG5vdCBpbnRlbmQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBcIm15LXJlcG9zaXRvcnlcIlxuICAgICAqIEBleGFtcGxlIFwibXktdGVhbS0qXCJcbiAgICAgKi9cbiAgICBuYW1lOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgb3duZXIgb2YgdGhlIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgICAqXG4gICAgICogTk9URTogVGhlIG93bmVyIG11c3QgZXhwbGljaXRseSBiZSB3aGl0ZWxpc3RlZCBpbiB7QGxpbmsgdHJ1c3RlZE93bmVyc30uXG4gICAgICovXG4gICAgb3duZXI6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFRoZSBudW1lcmljIElEIG9mIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSwgYXMgdXNlZCBieSB0aGUgaW1tdXRhYmxlXG4gICAgICogc3ViamVjdCBjbGFpbSBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBXaGVuIG9taXR0ZWQsIGFueSByZXBvc2l0b3J5IElEIGlzIHRydXN0ZWQgZm9yIHRoaXMgcmVwb3NpdG9yeSBuYW1lLlxuICAgICAqIFN1cHBseSBpdCB0byBwaW4gdGhlIHRydXN0IHBvbGljeSB0byB0aGlzIGV4YWN0IHJlcG9zaXRvcnksIHNvIHRoYXQgYVxuICAgICAqIGZ1dHVyZSByZXBvc2l0b3J5IHJldXNpbmcgdGhlIG5hbWUgaXMgbm90IHRydXN0ZWQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSA4NDUwNjk2OTdcbiAgICAgKi9cbiAgICByZXBvc2l0b3J5SWQ/OiBudW1iZXJcbiAgICAvKipcbiAgICAgKiBUaGUgbnVtZXJpYyBJRCBvZiB0aGUgb3duZXIgb2YgdGhlIEdpdEh1YiByZXBvc2l0b3J5LCBhcyB1c2VkIGJ5IHRoZVxuICAgICAqIGltbXV0YWJsZSBzdWJqZWN0IGNsYWltIGZvcm1hdC5cbiAgICAgKlxuICAgICAqIFdoZW4gb21pdHRlZCwgYW55IG93bmVyIElEIGlzIHRydXN0ZWQgZm9yIHRoaXMgb3duZXIgbmFtZS4gU3VwcGx5IGl0IHRvXG4gICAgICogcGluIHRoZSB0cnVzdCBwb2xpY3kgdG8gdGhpcyBleGFjdCBvd25lci5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlIDEzMjE5NTQyXG4gICAgICovXG4gICAgb3duZXJJZD86IG51bWJlclxuICB9W11cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHJ1c3QgdGhlIGltbXV0YWJsZSBzdWJqZWN0IGNsYWltIGZvcm1hdCBpbiBhZGRpdGlvbiB0byB0aGVcbiAgICogb3JpZ2luYWwgb25lLlxuICAgKlxuICAgKiBHaXRIdWIgaXNzdWVzIHRoZSByZXBvc2l0b3J5IHNlZ21lbnQgb2YgdGhlIGBzdWJgIGNsYWltIGVpdGhlciBhc1xuICAgKiBgb3duZXIvcmVwb2AsIG9yIGluIGFuIGltbXV0YWJsZSBmb3JtYXQgdGhhdCBhcHBlbmRzIHRoZSBudW1lcmljIG93bmVyIGFuZFxuICAgKiByZXBvc2l0b3J5IElEcywgYG93bmVyQDEyMzQvcmVwb0A1Njc4YC4gV2hpY2ggb25lIGEgcmVwb3NpdG9yeSBnZXRzIGRlcGVuZHNcbiAgICogb24gYSBwZXItcmVwb3NpdG9yeSBBY3Rpb25zIHNldHRpbmcsIHNvIGEgcm9sZSBoYXMgdG8gdHJ1c3QgYm90aCBmb3JtYXRzXG4gICAqIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIG1pZ3JhdGlvbiB0byBsZXQgdGhlIHJlcG9zaXRvcmllcyBpdCB0cnVzdHMgb3B0IGluXG4gICAqIG9uZSBhdCBhIHRpbWUuXG4gICAqXG4gICAqIE9uY2UgZXZlcnkgcmVwb3NpdG9yeSBoYXMgb3B0ZWQgaW4sIHRoZSBvcmlnaW5hbCBmb3JtYXQgc3RvcHMgYmVpbmcgaXNzdWVkXG4gICAqIGFuZCBzdXBwb3J0IGZvciBpdCBpcyBkcm9wcGVkLCBhbG9uZyB3aXRoIHRoaXMgcHJvcGVydHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuYmxvZy9jaGFuZ2Vsb2cvMjAyNi0wNC0yMy1pbW11dGFibGUtc3ViamVjdC1jbGFpbXMtZm9yLWdpdGh1Yi1hY3Rpb25zLW9pZGMtdG9rZW5zL1xuICAgKi9cbiAgdHJ1c3RJbW11dGFibGVTdWJqZWN0Q2xhaW0/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBbiBleGlzdGluZyBPcGVuSUQgQ29ubmVjdCBQcm92aWRlciBmb3IgR2l0SHViIEFjdGlvbnMuXG4gICAqL1xuICBvaWRjUHJvdmlkZXI6IGlhbS5JT3BlbklkQ29ubmVjdFByb3ZpZGVyXG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgdmFsaWRhdGluZyB0aGUgY29uc3RydWN0IHByb3BlcnRpZXMuXG4gKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcy4gQW4gZW1wdHkgbGlzdCBtZWFucyB0aGUgcHJvcHMgYXJlIHZhbGlkLlxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVQcm9wcyA9IChwcm9wczogUHJvcHMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXVxuICBpZiAocHJvcHMudHJ1c3RlZE93bmVycy5sZW5ndGggPT09IDApIHtcbiAgICBlcnJvcnMucHVzaChcIkF0IGxlYXN0IDEgdHJ1c3RlZCBvd25lciBtdXN0IGJlIHN1cHBsaWVkLCBidXQgMCB3ZXJlIGdpdmVuXCIpXG4gIH1cbiAgaWYgKHByb3BzLnJlcG9zaXRvcmllcy5sZW5ndGggPT09IDApIHtcbiAgICBlcnJvcnMucHVzaChcIkF0IGxlYXN0IDEgcmVwb3NpdG9yeSBtdXN0IGJlIHN1cHBsaWVkLCBidXQgMCB3ZXJlIGdpdmVuXCIpXG4gIH1cbiAgcHJvcHMudHJ1c3RlZE93bmVycy5mb3JFYWNoKChvd25lcikgPT4ge1xuICAgIGlmICghb3duZXIubWF0Y2goL15bYS16QS1aMC05LV0rJC8pKSB7XG4gICAgICBlcnJvcnMucHVzaChgVHJ1c3RlZCBvd25lciAke293bmVyfSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnNgKVxuICAgIH1cbiAgfSlcblxuICBwcm9wcy5yZXBvc2l0b3JpZXMuZm9yRWFjaCgocmVwb3NpdG9yeSkgPT4ge1xuICAgIGlmICghcHJvcHMudHJ1c3RlZE93bmVycy5pbmNsdWRlcyhyZXBvc2l0b3J5Lm93bmVyKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBPd25lciAke3JlcG9zaXRvcnkub3duZXJ9IG9mIHJlcG9zaXRvcnkgJHtyZXBvc2l0b3J5Lm5hbWV9IG5vdCBjb25maWd1cmVkIGFzIGEgdHJ1c3RlZCBvd25lcmAsXG4gICAgICApXG4gICAgfVxuICAgIC8vIEEgbWFsZm9ybWVkIElEIHJlbmRlcnMgc3RyYWlnaHQgaW50byB0aGUgc3ViamVjdCBjbGFpbSwgd2hlcmUgaXQgbWF0Y2hlc1xuICAgIC8vIG5vdGhpbmcgYW5kIGxlYXZlcyBkZXBsb3ltZW50cyBmYWlsaW5nIHRvIGFzc3VtZSB0aGUgcm9sZS5cbiAgICBPYmplY3QuZW50cmllcyh7XG4gICAgICBvd25lcklkOiByZXBvc2l0b3J5Lm93bmVySWQsXG4gICAgICByZXBvc2l0b3J5SWQ6IHJlcG9zaXRvcnkucmVwb3NpdG9yeUlkLFxuICAgIH0pLmZvckVhY2goKFtwcm9wLCBpZF0pID0+IHtcbiAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmICEoTnVtYmVyLmlzSW50ZWdlcihpZCkgJiYgaWQgPiAwKSkge1xuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgJHtwcm9wfSAke2lkfSBvZiByZXBvc2l0b3J5ICR7cmVwb3NpdG9yeS5uYW1lfSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuICByZXR1cm4gZXJyb3JzXG59XG5cbi8qKlxuICogVGhlIHJlcG9zaXRvcnkgc2VnbWVudCBvZiBhIEdpdEh1YiBBY3Rpb25zIE9JREMgc3ViamVjdCBjbGFpbSwgaW4gZWFjaFxuICogdHJ1c3RlZCBmb3JtYXQuXG4gKlxuICogVW5waW5uZWQgSURzIGJlY29tZSBgQCpgLCB3aGljaCBJQU0gbWF0Y2hlcyB3aXRoIGBTdHJpbmdMaWtlYC4gTm90ZSB0aGF0IGFuXG4gKiBJQU0gYCpgIGFsc28gbWF0Y2hlcyBgL2AgYW5kIGA6YCwgc28gYW4gdW5waW5uZWQgb3duZXIgSUQgbGV0cyB0aGUgd2lsZGNhcmRcbiAqIHNwYW4gaW50byB0aGUgcmVzdCBvZiB0aGUgc3ViamVjdDogdGhlIHRyYWlsaW5nIGA6cmVmOnJlZnMvaGVhZHMvPGJyYW5jaD5gXG4gKiB0aGF0IHRoZSBwYXR0ZXJuIGxvb2tzIGZvciBuZWVkIG5vdCBiZSB0aGUgb25lIEdpdEh1YiBwdXQgdGhlcmUuIEdpdCByZWplY3RzXG4gKiBgOmAgaW4gYnJhbmNoIG5hbWVzLCBidXQgb3RoZXIgc3ViamVjdCBzaGFwZXMgKGA6ZW52aXJvbm1lbnQ6PG5hbWU+YCkgb2ZmZXJcbiAqIG5vIHN1Y2ggZ3VhcmFudGVlLiBQaW5uaW5nIHtAbGluayBQcm9wcy5yZXBvc2l0b3JpZXMub3duZXJJZH0gbWFrZXMgdGhlXG4gKiBwYXR0ZXJuIGxpdGVyYWwgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgcmVwb3NpdG9yeSBuYW1lLCB3aGljaCByZW1vdmVzIHRoYXRcbiAqIGZyZWVkb20gZW50aXJlbHksIGFuZCBpcyB3b3J0aCBkb2luZyB3aGVyZXZlciB0aGUgSUQgaXMga25vd24uXG4gKi9cbmNvbnN0IHJlcG9zaXRvcnlDbGFpbXMgPSAoXG4gIHJlcG9zaXRvcnk6IFByb3BzW1wicmVwb3NpdG9yaWVzXCJdW251bWJlcl0sXG4gIHRydXN0SW1tdXRhYmxlU3ViamVjdENsYWltOiBib29sZWFuLFxuKSA9PiBbXG4gIGAke3JlcG9zaXRvcnkub3duZXJ9LyR7cmVwb3NpdG9yeS5uYW1lfWAsXG4gIC4uLih0cnVzdEltbXV0YWJsZVN1YmplY3RDbGFpbVxuICAgID8gW1xuICAgICAgICBgJHtyZXBvc2l0b3J5Lm93bmVyfUAke3JlcG9zaXRvcnkub3duZXJJZCA/PyBcIipcIn0vJHtyZXBvc2l0b3J5Lm5hbWV9QCR7cmVwb3NpdG9yeS5yZXBvc2l0b3J5SWQgPz8gXCIqXCJ9YCxcbiAgICAgIF1cbiAgICA6IFtdKSxcbl1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElBTSByb2xlIHRoYXQgY2FuIGJlIGFzc3VtZWQgYnkgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3dzXG4gKiBpbiBzcGVjaWZpYyBHaXRIdWIgcmVwb3NpdG9yaWVzIGFuZCBicmFuY2hlcyB1c2luZyBPcGVuSUQgQ29ubmVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1YkFjdGlvbnNSb2xlIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGVcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVByb3BzKHByb3BzKVxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3BzIHdlcmUgc3VwcGxpZWQ6ICR7ZXJyb3JzLmpvaW4oXCI7IFwiKX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGJyYW5jaCA9IHByb3BzLnRydXN0ZWRCcmFuY2ggPz8gXCJtYXN0ZXJcIlxuICAgIGNvbnN0IHN1YmplY3RzID0gcHJvcHMucmVwb3NpdG9yaWVzLmZsYXRNYXAoKHJlcG9zaXRvcnkpID0+XG4gICAgICByZXBvc2l0b3J5Q2xhaW1zKFxuICAgICAgICByZXBvc2l0b3J5LFxuICAgICAgICBwcm9wcy50cnVzdEltbXV0YWJsZVN1YmplY3RDbGFpbSA/PyBmYWxzZSxcbiAgICAgICkubWFwKFxuICAgICAgICAocmVwb3NpdG9yeUNsYWltKSA9PiBgcmVwbzoke3JlcG9zaXRvcnlDbGFpbX06cmVmOnJlZnMvaGVhZHMvJHticmFuY2h9YCxcbiAgICAgICksXG4gICAgKVxuICAgIGNvbnN0IGZ1bGx5UXVhbGlmaWVkU3ViamVjdHMgPSBzdWJqZWN0cy5maWx0ZXIoXG4gICAgICAoc3ViamVjdCkgPT4gIShzdWJqZWN0LmluY2x1ZGVzKFwiP1wiKSB8fCBzdWJqZWN0LmluY2x1ZGVzKFwiKlwiKSksXG4gICAgKVxuXG4gICAgY29uc3Qgd2lsZGNhcmRTdWJqZWN0cyA9IHN1YmplY3RzLmZpbHRlcihcbiAgICAgIChzdWJqZWN0KSA9PiBzdWJqZWN0LmluY2x1ZGVzKFwiP1wiKSB8fCBzdWJqZWN0LmluY2x1ZGVzKFwiKlwiKSxcbiAgICApXG4gICAgY29uc3QgcHJpbmNpcGFsQ29uZGl0aW9ucyA9IHtcbiAgICAgIC4uLihmdWxseVF1YWxpZmllZFN1YmplY3RzLmxlbmd0aCAmJiB7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgIFwidG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206c3ViXCI6IGZ1bGx5UXVhbGlmaWVkU3ViamVjdHMsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLih3aWxkY2FyZFN1YmplY3RzLmxlbmd0aCAmJiB7XG4gICAgICAgIFN0cmluZ0xpa2U6IHtcbiAgICAgICAgICBcInRva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOnN1YlwiOiB3aWxkY2FyZFN1YmplY3RzLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfVxuXG4gICAgY29uc3QgcHJpbmNpcGFsID0gbmV3IGlhbS5GZWRlcmF0ZWRQcmluY2lwYWwoXG4gICAgICBwcm9wcy5vaWRjUHJvdmlkZXIub3BlbklkQ29ubmVjdFByb3ZpZGVyQXJuLFxuICAgICAgcHJpbmNpcGFsQ29uZGl0aW9ucyxcbiAgICAgIFwic3RzOkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlcIixcbiAgICApXG5cbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcHJpbmNpcGFsIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHRydXN0IHJlbGF0aW9uc2hpcFxuICAgIC8vIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIElBTSBjb25kaXRpb24gd2l0aCBhIGNvbnRleHQga2V5IGFuZCB2YWx1ZXNcbiAgICBpZiAoXG4gICAgICAhT2JqZWN0LnZhbHVlcyhwcmluY2lwYWxDb25kaXRpb25zKS5zb21lKChjb25kaXRpb25FbGVtZW50KSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25kaXRpb25FbGVtZW50KS5zb21lKFxuICAgICAgICAgIChbY29uZGl0aW9uS2V5LCBjb25kaXRpb25WYWx1ZV0pID0+XG4gICAgICAgICAgICBjb25kaXRpb25LZXkgJiYgY29uZGl0aW9uVmFsdWUubGVuZ3RoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoZSBwcmluY2lwYWwncyB0cnVzdCBwb2xpY3kgbmVlZHMgdG8gYmUgY29uZmlndXJlZCB3aXRoIGF0IGxlYXN0IG9uZSBJQU0gY29uZGl0aW9uXCIsXG4gICAgICApXG4gICAgfVxuICAgIHRoaXMucm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIlJvbGVcIiwge1xuICAgICAgcm9sZU5hbWU6IHByb3BzLnJvbGVOYW1lID8/IFwiZ2l0aHViLWFjdGlvbnMtcm9sZVwiLFxuICAgICAgYXNzdW1lZEJ5OiBwcmluY2lwYWwsXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -138,6 +138,7 @@ export class BuildArtifacts extends constructs.Construct {
|
|
|
138
138
|
// and that role then needs to be assumable from all branches.
|
|
139
139
|
"*",
|
|
140
140
|
repositories: props.githubActions.repositories,
|
|
141
|
+
trustImmutableSubjectClaim: props.githubActions.trustImmutableSubjectClaim,
|
|
141
142
|
});
|
|
142
143
|
this.role = role.role;
|
|
143
144
|
this.role.addToPolicy(policyStatements.allowPipelineVariables(this));
|
|
@@ -152,6 +153,7 @@ export class BuildArtifacts extends constructs.Construct {
|
|
|
152
153
|
// NOTE: The limited role can be assumed from all branches.
|
|
153
154
|
trustedBranch: "*",
|
|
154
155
|
repositories: props.githubActions.repositories,
|
|
156
|
+
trustImmutableSubjectClaim: props.githubActions.trustImmutableSubjectClaim,
|
|
155
157
|
});
|
|
156
158
|
this.limitedRole = limitedRole.role;
|
|
157
159
|
this.limitedRole.addToPolicy(policyStatements.allowPipelineVariables(this, "dev*"));
|
|
@@ -187,4 +189,4 @@ export class BuildArtifacts extends constructs.Construct {
|
|
|
187
189
|
}
|
|
188
190
|
}
|
|
189
191
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQtYXJ0aWZhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSx1QkFBdUIsQ0FBQTtBQW1GOUI7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLHNCQUFzQixFQUFFLENBQUMsS0FBMkIsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUN2RSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztRQUN4QixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUM3QixTQUFTLEVBQUU7WUFDVCxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLDhDQUE4QyxNQUFNLElBQUksR0FBRyxFQUFFO1NBQ3RJO0tBQ0YsQ0FBQztJQUNKLGlCQUFpQixFQUFFLENBQUMsS0FBMkIsRUFBRSxNQUFrQixFQUFFLEVBQUUsQ0FDckUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDdkIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLFNBQVMsRUFBRTtZQUNULE1BQU0sQ0FBQyxhQUFh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YSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUVELElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3BDLEtBQUssRUFBRSxPQUFPLENBQUMsYUFBYTtTQUM3QixDQUFDLENBQUE7UUFFRixJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNwQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVU7U0FDekIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtnQkFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTzthQUN6QixDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTzthQUNoQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQge1xuICBHaXRodWJBY3Rpb25zUm9sZSxcbiAgdHlwZSBQcm9wcyBhcyBHaXRodWJBY3Rpb25zUm9sZVByb3BzLFxufSBmcm9tIFwiLi9naXRodWItYWN0aW9ucy1yb2xlXCJcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIFMzIEJ1Y2tldC5cbiAgICpcbiAgICogTk9URTogU2hvdWxkIGluY2x1ZGUgYm90aCBhY2NvdW50IGFuZCByZWdpb24gc28gdGhhdCBpdCB3aWxsXG4gICAqIG5vdCBjb25mbGljdCB3aXRoIG90aGVyIGFjY291bnRzL3JlZ2lvbnMuXG4gICAqL1xuICBidWNrZXROYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIEVDUiBSZXBvc2l0b3J5LlxuICAgKi9cbiAgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogQ3JlYXRlIGEgcm9sZSB0aGF0IGNhbiBiZSBhc3N1bWVkIGJ5IExpZmxpZyBKZW5raW5zLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVmYXVsdCAtIG5vIHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICBjaVJvbGVOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGFwcGx5IHRvIGltYWdlcyBzdG9yZWQgaW4gdGhlIEVDUiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEV4cGlyZSB1bnRhZ2dlZCBpbWFnZXMgYWZ0ZXIgMTAgZGF5cyBhbmQgYW55IGltYWdlIG9sZGVyIHRoYW4gMTgwIGRheXNcbiAgICovXG4gIGVjclJlcG9zaXRvcnlMaWZlY3ljbGVSdWxlcz86IGVjci5MaWZlY3ljbGVSdWxlW11cbiAgLyoqXG4gICAqIElEIG9mIEFXUyBhY2NvdW50cyB0aGF0IHdpbGwgYmUgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIHJlYWQgZnJvbVxuICAgKiB0aGUgYXJ0aWZhY3QgcmVwb3MuXG4gICAqL1xuICB0YXJnZXRBY2NvdW50SWRzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIElBTSByb2xlcyB0aGF0IGNhbiBiZSBhc3N1bWVkXG4gICAqIGJ5IEdpdEh1YiBBY3Rpb25zIGluIHNwZWNpZmljIEdpdEh1YiByZXBvc2l0b3JpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm9sZXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICBnaXRodWJBY3Rpb25zPzogT21pdDxcbiAgICBHaXRodWJBY3Rpb25zUm9sZVByb3BzLFxuICAgIFwidHJ1c3RlZE93bmVyc1wiIHwgXCJ0cnVzdGVkQnJhbmNoXCIgfCBcIm9pZGNQcm92aWRlclwiIHwgXCJyb2xlTmFtZVwiXG4gID4gJiB7XG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIHRydXN0ZWQgR2l0SHViIHJlcG9zaXRvcnkgb3duZXJzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW1wiY2FwcmFsaWZlY3ljbGVcIl1cbiAgICAgKi9cbiAgICB0cnVzdGVkT3duZXJzPzogc3RyaW5nW11cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSB0byBjcmVhdGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zLXJvbGVcIlxuICAgICAqL1xuICAgIHJvbGVOYW1lPzogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJhbmNoIGluIGFsbCByZXBvc2l0b3JpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIm1hc3RlclwiXG4gICAgICovXG4gICAgZGVmYXVsdEJyYW5jaD86IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGEgbGltaXRlZCByb2xlIHRoYXQgY2FuIGJlIHVzZWQgb24gbm9uLWRlZmF1bHRcbiAgICAgKiBicmFuY2hlcyB3aXRoIGxlc3MgSUFNIHBlcm1pc3Npb25zIHRoYW4gdGhlIG1haW4gcm9sZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gYSBsaW1pdGVkIHJvbGUgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBsaW1pdGVkUm9sZUNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByb2xlIG9yIG5vdC5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIGNyZWF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zLWxpbWl0ZWQtcm9sZVwiXG4gICAgICAgKi9cbiAgICAgIHJvbGVOYW1lPzogc3RyaW5nXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgSUFNIHN0YXRlbWVudHMuXG4gKi9cbmNvbnN0IHBvbGljeVN0YXRlbWVudHMgPSB7XG4gIGFsbG93UGlwZWxpbmVWYXJpYWJsZXM6IChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIHByZWZpeD86IHN0cmluZykgPT5cbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXCJzc206UHV0UGFyYW1ldGVyXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOnNzbToke2Nkay5TdGFjay5vZihzY29wZSkucmVnaW9ufToke2Nkay5TdGFjay5vZihzY29wZSkuYWNjb3VudH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvJHtwcmVmaXggPz8gXCIqXCJ9YCxcbiAgICAgIF0sXG4gICAgfSksXG4gIGRlbnlQcm9kUGlwZWxpbmVzOiAoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBidWNrZXQ6IHMzLklCdWNrZXQpID0+XG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkRFTlksXG4gICAgICBhY3Rpb25zOiBbXCJzMzoqXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGJ1Y2tldC5hcm5Gb3JPYmplY3RzKFwicGlwZWxpbmVzLyotcHJvZC8qXCIpLFxuICAgICAgICBidWNrZXQuYXJuRm9yT2JqZWN0cyhcInBpcGVsaW5lcy8qLXByb2QtKi8qXCIpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgZGVueVByb2RQaXBlbGluZVZhcmlhYmxlczogKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCkgPT5cbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuREVOWSxcbiAgICAgIGFjdGlvbnM6IFtcInNzbTpQdXRQYXJhbWV0ZXJcIl0sXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYGFybjphd3M6c3NtOiR7Y2RrLlN0YWNrLm9mKHNjb3BlKS5yZWdpb259OiR7XG4gICAgICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50XG4gICAgICAgIH06cGFyYW1ldGVyL2xpZmxpZy1jZGsvKi9waXBlbGluZS12YXJpYWJsZXMvcHJvZCpgLFxuICAgICAgXSxcbiAgICB9KSxcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIHRoZSBjb25zdHJ1Y3QgcHJvcGVydGllcy5cbiAqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLiBBbiBlbXB0eSBsaXN0IG1lYW5zIHRoZSBwcm9wcyBhcmUgdmFsaWQuXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVByb3BzID0gKHByb3BzOiBQcm9wcyk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdXG4gIGlmIChcbiAgICBwcm9wcy5naXRodWJBY3Rpb25zPy5kZWZhdWx0QnJhbmNoICYmXG4gICAgIXByb3BzLmdpdGh1YkFjdGlvbnMuZGVmYXVsdEJyYW5jaC5tYXRjaCgvXlthLXpBLVowLTktXSskLylcbiAgKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBgRGVmYXVsdCBicmFuY2ggJHtwcm9wcy5naXRodWJBY3Rpb25zLmRlZmF1bHRCcmFuY2h9IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyc2AsXG4gICAgKVxuICB9XG4gIHJldHVybiBlcnJvcnNcbn1cblxuLyoqXG4gKiBDcmVhdGUgdmFyaW91cyBhcnRpZmFjdHMgdXNlZCBhcyBwYXJ0IG9mIENvbnRpbnVvdXMgSW50ZWdyYXRpb24gKENJKS5cbiAqXG4gKiBUaGlzIGluY2x1ZGVzIGFydGlmYWN0IHJlcG9zaXRvcmllcyBzdWNoIGFzIFMzIGJ1Y2tldCBhbmQgRUNSXG4gKiByZXBvc2l0b3J5LCBhcyB3ZWxsIGFzIElBTSByb2xlKHMpIHRoYXQgZ3JhbnQgdGhlIENJIHNlcnZlciB3cml0ZVxuICogYWNjZXNzIHRvIHRoZXNlIHJlcG9zaXRvcmllcy5cbiAqXG4gKiBUT0RPOiBIb3cgY2FuIHdlIGNsZWFudXAgc3R1ZmYgdGhhdCBnb2VzIGludG8gdGhpcyBTMyBCdWNrZXQgYW5kXG4gKiAgRUNSIFJlcG9zaXRvcnk/IENhbiB3ZSBldmVyIHJlbGlhYmx5IGNsZWFudXA/IFdlIHByb2JhYmx5IG5lZWRcbiAqICBzb21lIHN0cmF0ZWd5IGZvciBob3cgd2UgcHV0IHN0dWZmIGhlcmUgdG8gYmUgYWJsZSB0byBkbyBpdC5cbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWlsZEFydGlmYWN0cyBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwdWJsaWMgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeUFybjogc3RyaW5nXG4gIHB1YmxpYyByZWFkb25seSBlY3JSZXBvc2l0b3J5TmFtZTogc3RyaW5nXG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLlJvbGVcbiAgcHVibGljIHJlYWRvbmx5IGxpbWl0ZWRSb2xlPzogaWFtLlJvbGVcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlUHJvcHMocHJvcHMpXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJvcHMgd2VyZSBzdXBwbGllZDogJHtlcnJvcnMuam9pbihcIjsgXCIpfWApXG4gICAgfVxuXG4gICAgdGhpcy5idWNrZXROYW1lID0gcHJvcHMuYnVja2V0TmFtZVxuICAgIHRoaXMuZWNyUmVwb3NpdG9yeU5hbWUgPSBwcm9wcy5lY3JSZXBvc2l0b3J5TmFtZVxuICAgIHRoaXMuZWNyUmVwb3NpdG9yeUFybiA9IGNkay5Bcm4uZm9ybWF0KFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlOiBcImVjclwiLFxuICAgICAgICByZXNvdXJjZTogXCJyZXBvc2l0b3J5XCIsXG4gICAgICAgIHJlc291cmNlTmFtZTogdGhpcy5lY3JSZXBvc2l0b3J5TmFtZSxcbiAgICAgIH0sXG4gICAgICBjZGsuU3RhY2sub2YodGhpcyksXG4gICAgKVxuXG4gICAgY29uc3QgZWNyUmVwb3NpdG9yeU5hbWUgPSBwcm9wcy5lY3JSZXBvc2l0b3J5TmFtZVxuXG4gICAgY29uc3QgYnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCBcIlMzQnVja2V0XCIsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHByb3BzLmJ1Y2tldE5hbWUsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBldmVudEJyaWRnZUVuYWJsZWQ6IHRydWUsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgdmVyc2lvbmVkOiB0cnVlLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogY2RrLkR1cmF0aW9uLmRheXMoMTApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgY29uc3QgZWNyUmVwbyA9IG5ldyBlY3IuUmVwb3NpdG9yeSh0aGlzLCBcIkVjclJlcG9zaXRvcnlcIiwge1xuICAgICAgcmVwb3NpdG9yeU5hbWU6IGVjclJlcG9zaXRvcnlOYW1lLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6IHByb3BzLmVjclJlcG9zaXRvcnlMaWZlY3ljbGVSdWxlcyB8fCBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYXhJbWFnZUFnZTogY2RrLkR1cmF0aW9uLmRheXMoMTApLFxuICAgICAgICAgIHRhZ1N0YXR1czogZWNyLlRhZ1N0YXR1cy5VTlRBR0dFRCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1heEltYWdlQWdlOiBjZGsuRHVyYXRpb24uZGF5cygxODApLFxuICAgICAgICAgIHRhZ1N0YXR1czogZWNyLlRhZ1N0YXR1cy5BTlksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICAvLyBBbGxvdyBhIHRhcmdldCB0byByZWFkIGZyb20gdGhlIHJlcG9zLiBBcyBhbnkgc3BlY2lmaWMgcm9sZXMgbmVlZFxuICAgIC8vIHRvIGV4aXN0IGJlZm9yZSB3ZSBjYW4gZ3JhbnQgYWNjZXNzLCB3ZSBkZWxlZ2F0ZSB0aGF0IHJlc3BvbnNpYmlsaXR5XG4gICAgLy8gdG8gdGhlIHRhcmdldCBhY2NvdW50LlxuICAgIGZvciAoY29uc3QgdGFyZ2V0QWNjb3VudElkIG9mIHByb3BzLnRhcmdldEFjY291bnRJZHMgfHwgW10pIHtcbiAgICAgIGJ1Y2tldC5ncmFudFJlYWQobmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRhcmdldEFjY291bnRJZCkpXG4gICAgICBlY3JSZXBvLmdyYW50UHVsbChuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGFyZ2V0QWNjb3VudElkKSlcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZ2l0aHViQWN0aW9ucykge1xuICAgICAgY29uc3QgdHJ1c3RlZE93bmVycyA9IHByb3BzLmdpdGh1YkFjdGlvbnMudHJ1c3RlZE93bmVycyA/PyBbXG4gICAgICAgIFwiY2FwcmFsaWZlY3ljbGVcIixcbiAgICAgIF1cbiAgICAgIC8vIE5PVEU6IFRoZXJlJ3MgYW4gTDIgY29uc3RydWN0IHRoYXQgcHJlZGF0ZXMgdGhlIG9mZmljaWFsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLFxuICAgICAgLy8gYW5kIGl0IGlzIHRoZXJlZm9yZSBpbXBsZW1lbnRlZCBhcyBhIGN1c3RvbSByZXNvdXJjZS5cbiAgICAgIC8vIFdlIHVzZSB0aGUgTDEgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgaW5zdGVhZCBiZWNhdXNlOlxuICAgICAgLy8gMSkgaXQncyBzaW1wbGVyXG4gICAgICAvLyAyKSB0aGVyZSdzIGEgY2hhbmNlIHRoZSBMMiBjb25zdHJ1Y3Qgd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUgaW4gZmF2b3JcbiAgICAgIC8vIG9mIHRoZSBvZmZpY2lhbCBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS5cbiAgICAgIGNvbnN0IGNmbk9pZGNQcm92aWRlciA9IG5ldyBpYW0uQ2ZuT0lEQ1Byb3ZpZGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk9wZW5JZENvbm5lY3RQcm92aWRlclwiLFxuICAgICAgICB7XG4gICAgICAgICAgdXJsOiBcImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb21cIixcbiAgICAgICAgICBjbGllbnRJZExpc3Q6IFtcInN0cy5hbWF6b25hd3MuY29tXCJdLFxuICAgICAgICAgIC8vIE5PVEU6IFRoZSB0aHVtYnByaW50IGlzbid0IGFjdHVhbGx5IHVzZWQsIGJ1dCB0aGUgQVdTIEFQSSBzdGlsbCByZXF1aXJlcyB1cyB0byBzdXBwbHkgaXQuXG4gICAgICAgICAgLy8gTW9yZSBkZXRhaWxzIGhlcmU6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDI0MDEyMjE1NTc1OC9odHRwczovL2dpdGh1Yi5jb20vYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFscy9pc3N1ZXMvMzU3I2lzc3VlY29tbWVudC0xNjI2MzU3MzMzXG4gICAgICAgICAgdGh1bWJwcmludExpc3Q6IFtcIjFjNThhM2E4NTE4ZTg3NTliZjA3NWI3NmI3NTBkNGYyZGYyNjRmY2RcIl0sXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICBjb25zdCBvaWRjUHJvdmlkZXIgPVxuICAgICAgICBpYW0uT3BlbklkQ29ubmVjdFByb3ZpZGVyLmZyb21PcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcIlByb3ZpZGVyXCIsXG4gICAgICAgICAgY2ZuT2lkY1Byb3ZpZGVyLnJlZixcbiAgICAgICAgKVxuICAgICAgY29uc3QgY3JlYXRlTGltaXRlZFJvbGUgPVxuICAgICAgICBwcm9wcy5naXRodWJBY3Rpb25zLmxpbWl0ZWRSb2xlQ29uZmlndXJhdGlvbj8uZW5hYmxlZCA/PyB0cnVlXG4gICAgICBjb25zdCByb2xlID0gbmV3IEdpdGh1YkFjdGlvbnNSb2xlKHRoaXMsIFwiR2l0aHViQWN0aW9uc1JvbGVcIiwge1xuICAgICAgICBvaWRjUHJvdmlkZXIsXG4gICAgICAgIHRydXN0ZWRPd25lcnMsXG4gICAgICAgIHJvbGVOYW1lOiBwcm9wcy5naXRodWJBY3Rpb25zLnJvbGVOYW1lID8/IFwiZ2l0aHViLWFjdGlvbnMtcm9sZVwiLFxuICAgICAgICB0cnVzdGVkQnJhbmNoOiBjcmVhdGVMaW1pdGVkUm9sZVxuICAgICAgICAgID8gKHByb3BzLmdpdGh1YkFjdGlvbnMuZGVmYXVsdEJyYW5jaCA/PyBcIm1hc3RlclwiKVxuICAgICAgICAgIDogLy8gTk9URTogSWYgdGhlIGxpbWl0ZWQgcm9sZSBpcyBkaXNhYmxlZCwgb25seSBvbmUgcm9sZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICAgICAgICAgIC8vIGFuZCB0aGF0IHJvbGUgdGhlbiBuZWVkcyB0byBiZSBhc3N1bWFibGUgZnJvbSBhbGwgYnJhbmNoZXMuXG4gICAgICAgICAgICBcIipcIixcbiAgICAgICAgcmVwb3NpdG9yaWVzOiBwcm9wcy5naXRodWJBY3Rpb25zLnJlcG9zaXRvcmllcyxcbiAgICAgIH0pXG4gICAgICB0aGlzLnJvbGUgPSByb2xlLnJvbGVcbiAgICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShwb2xpY3lTdGF0ZW1lbnRzLmFsbG93UGlwZWxpbmVWYXJpYWJsZXModGhpcykpXG4gICAgICBidWNrZXQuZ3JhbnRQdXQodGhpcy5yb2xlKVxuICAgICAgZWNyUmVwby5ncmFudFB1bGxQdXNoKHRoaXMucm9sZSlcbiAgICAgIGlmIChjcmVhdGVMaW1pdGVkUm9sZSkge1xuICAgICAgICBjb25zdCBsaW1pdGVkUm9sZSA9IG5ldyBHaXRodWJBY3Rpb25zUm9sZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiR2l0aHViQWN0aW9uc0xpbWl0ZWRSb2xlXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2lkY1Byb3ZpZGVyLFxuICAgICAgICAgICAgdHJ1c3RlZE93bmVycyxcbiAgICAgICAgICAgIHJvbGVOYW1lOlxuICAgICAgICAgICAgICBwcm9wcy5naXRodWJBY3Rpb25zLmxpbWl0ZWRSb2xlQ29uZmlndXJhdGlvbj8ucm9sZU5hbWUgPz9cbiAgICAgICAgICAgICAgXCJnaXRodWItYWN0aW9ucy1saW1pdGVkLXJvbGVcIixcbiAgICAgICAgICAgIC8vIE5PVEU6IFRoZSBsaW1pdGVkIHJvbGUgY2FuIGJlIGFzc3VtZWQgZnJvbSBhbGwgYnJhbmNoZXMuXG4gICAgICAgICAgICB0cnVzdGVkQnJhbmNoOiBcIipcIixcbiAgICAgICAgICAgIHJlcG9zaXRvcmllczogcHJvcHMuZ2l0aHViQWN0aW9ucy5yZXBvc2l0b3JpZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlID0gbGltaXRlZFJvbGUucm9sZVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzLCBcImRldipcIiksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5saW1pdGVkUm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgICBwb2xpY3lTdGF0ZW1lbnRzLmRlbnlQcm9kUGlwZWxpbmVzKHNjb3BlLCBidWNrZXQpLFxuICAgICAgICApXG4gICAgICAgIGJ1Y2tldC5ncmFudFB1dCh0aGlzLmxpbWl0ZWRSb2xlKVxuICAgICAgICBlY3JSZXBvLmdyYW50UHVsbFB1c2godGhpcy5saW1pdGVkUm9sZSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmNpUm9sZU5hbWUpIHtcbiAgICAgIGNvbnN0IGxlZ2FjeVJvbGVGb3JKZW5raW5zID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2lSb2xlXCIsIHtcbiAgICAgICAgcm9sZU5hbWU6IHByb3BzLmNpUm9sZU5hbWUsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Bcm5QcmluY2lwYWwoXG4gICAgICAgICAgXCJhcm46YXdzOmlhbTo6OTIzNDAyMDk3MDQ2OnJvbGUvYnVpbGR0b29scy1qZW5raW5zLVJvbGVKZW5raW5zU2xhdmUtSlFHWUhSNVdFNkM1XCIsXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICAgbGVnYWN5Um9sZUZvckplbmtpbnMuYWRkVG9Qb2xpY3koXG4gICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzKSxcbiAgICAgIClcbiAgICAgIGJ1Y2tldC5ncmFudFB1dChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICAgIGVjclJlcG8uZ3JhbnRQdWxsUHVzaChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICB9XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBcIkVjclJlcG9VcmlcIiwge1xuICAgICAgdmFsdWU6IGVjclJlcG8ucmVwb3NpdG9yeVVyaSxcbiAgICB9KVxuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJCdWNrZXROYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucm9sZSkge1xuICAgICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJSb2xlQXJuXCIsIHtcbiAgICAgICAgdmFsdWU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMubGltaXRlZFJvbGUpIHtcbiAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiTGltaXRlZFJvbGVBcm5cIiwge1xuICAgICAgICB2YWx1ZTogdGhpcy5saW1pdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGQtYXJ0aWZhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSx1QkFBdUIsQ0FBQTtBQW1GOUI7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLHNCQUFzQixFQUFFLENBQUMsS0FBMkIsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUN2RSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztRQUN4QixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUM3QixTQUFTLEVBQUU7WUFDVCxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLDhDQUE4QyxNQUFNLElBQUksR0FBRyxFQUFFO1NBQ3RJO0tBQ0YsQ0FBQztJQUNKLGlCQUFpQixFQUFFLENBQUMsS0FBMkIsRUFBRSxNQUFrQixFQUFFLEVBQUUsQ0FDckUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDdkIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLFNBQVMsRUFBRTtZQUNULE1BQU0sQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUM7WUFDMUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQztTQUM3QztLQUNGLENBQUM7SUFDSix5QkFBeUIsRUFBRSxDQUFDLEtBQTJCLEVBQUUsRUFBRSxDQUN6RCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUN2QixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUM3QixTQUFTLEVBQUU7WUFDVCxlQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFDdkMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FDdEIsa0RBQWtEO1NBQ25EO0tBQ0YsQ0FBQztDQUNMLENBQUE7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBWSxFQUFZLEVBQUU7SUFDdEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFBO0lBQzNCLElBQ0UsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhO1FBQ2xDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQzNELENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUNULGtCQUFrQixLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsOEJBQThCLENBQ2xGLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3RDLFVBQVUsQ0FBb0I7SUFDOUIsZ0JBQWdCLENBQVE7SUFDeEIsaUJBQWlCLENBQVE7SUFDekIsSUFBSSxDQUFXO0lBQ2YsV0FBVyxDQUFXO0lBRXRDLFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdEUsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFBO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FDcEM7WUFDRSxPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCO1NBQ3JDLEVBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ25CLENBQUE7UUFFRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQTtRQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVO1lBQzFDLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7WUFDakQsU0FBUyxFQUFFLElBQUk7WUFDZixjQUFjLEVBQUU7Z0JBQ2Q7b0JBQ0UsMkJBQTJCLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2lCQUNuRDthQUNGO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDeEQsY0FBYyxFQUFFLGlCQUFpQjtZQUNqQyxjQUFjLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixJQUFJO2dCQUNuRDtvQkFDRSxXQUFXLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNsQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRO2lCQUNsQztnQkFDRDtvQkFDRSxXQUFXLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUNuQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHO2lCQUM3QjthQUNGO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsb0VBQW9FO1FBQ3BFLHVFQUF1RTtRQUN2RSx5QkFBeUI7UUFDekIsS0FBSyxNQUFNLGVBQWUsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBQUM7WUFDM0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO1lBQzNELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtRQUM5RCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUk7Z0JBQ3pELGdCQUFnQjthQUNqQixDQUFBO1lBQ0Qsb0ZBQW9GO1lBQ3BGLHdEQUF3RDtZQUN4RCx5REFBeUQ7WUFDekQsa0JBQWtCO1lBQ2xCLGlGQUFpRjtZQUNqRiwyQ0FBMkM7WUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUM3QyxJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCO2dCQUNFLEdBQUcsRUFBRSw2Q0FBNkM7Z0JBQ2xELFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNuQyw0RkFBNEY7Z0JBQzVGLDRKQUE0SjtnQkFDNUosY0FBYyxFQUFFLENBQUMsMENBQTBDLENBQUM7YUFDN0QsQ0FDRixDQUFBO1lBQ0QsTUFBTSxZQUFZLEdBQ2hCLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyw0QkFBNEIsQ0FDcEQsSUFBSSxFQUNKLFVBQVUsRUFDVixlQUFlLENBQUMsR0FBRyxDQUNwQixDQUFBO1lBQ0gsTUFBTSxpQkFBaUIsR0FDckIsS0FBSyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFBO1lBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO2dCQUM1RCxZQUFZO2dCQUNaLGFBQWE7Z0JBQ2IsUUFBUSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLHFCQUFxQjtnQkFDL0QsYUFBYSxFQUFFLGlCQUFpQjtvQkFDOUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDO29CQUNqRCxDQUFDLENBQUMsdUVBQXVFO3dCQUN2RSw4REFBOEQ7d0JBQzlELEdBQUc7Z0JBQ1AsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWTtnQkFDOUMsMEJBQTBCLEVBQ3hCLEtBQUssQ0FBQyxhQUFhLENBQUMsMEJBQTBCO2FBQ2pELENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3BFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzFCLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2hDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsQ0FDdkMsSUFBSSxFQUNKLDBCQUEwQixFQUMxQjtvQkFDRSxZQUFZO29CQUNaLGFBQWE7b0JBQ2IsUUFBUSxFQUNOLEtBQUssQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUUsUUFBUTt3QkFDdEQsNkJBQTZCO29CQUMvQiwyREFBMkQ7b0JBQzNELGFBQWEsRUFBRSxHQUFHO29CQUNsQixZQUFZLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZO29CQUM5QywwQkFBMEIsRUFDeEIsS0FBSyxDQUFDLGFBQWEsQ0FBQywwQkFBMEI7aUJBQ2pELENBQ0YsQ0FBQTtnQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUE7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUMxQixnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQ3RELENBQUE7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQzFCLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FDbEQsQ0FBQTtnQkFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDakMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDekMsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzFCLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQzdCLGlGQUFpRixDQUNsRjthQUNGLENBQUMsQ0FBQTtZQUNGLG9CQUFvQixDQUFDLFdBQVcsQ0FDOUIsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQzlDLENBQUE7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUE7WUFDckMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzdDLENBQUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNwQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWE7U0FDN0IsQ0FBQyxDQUFBO1FBRUYsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDcEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQ3pCLENBQUMsQ0FBQTtRQUVGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87YUFDekIsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87YUFDaEMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgZWNyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNyXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCJcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHtcbiAgR2l0aHViQWN0aW9uc1JvbGUsXG4gIHR5cGUgUHJvcHMgYXMgR2l0aHViQWN0aW9uc1JvbGVQcm9wcyxcbn0gZnJvbSBcIi4vZ2l0aHViLWFjdGlvbnMtcm9sZVwiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSB0byB1c2UgZm9yIHRoZSBTMyBCdWNrZXQuXG4gICAqXG4gICAqIE5PVEU6IFNob3VsZCBpbmNsdWRlIGJvdGggYWNjb3VudCBhbmQgcmVnaW9uIHNvIHRoYXQgaXQgd2lsbFxuICAgKiBub3QgY29uZmxpY3Qgd2l0aCBvdGhlciBhY2NvdW50cy9yZWdpb25zLlxuICAgKi9cbiAgYnVja2V0TmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgbmFtZSB0byB1c2UgZm9yIHRoZSBFQ1IgUmVwb3NpdG9yeS5cbiAgICovXG4gIGVjclJlcG9zaXRvcnlOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJvbGUgdGhhdCBjYW4gYmUgYXNzdW1lZCBieSBMaWZsaWcgSmVua2lucy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlZmF1bHQgLSBubyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgY2lSb2xlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIGxpZmVjeWNsZSBydWxlcyB0byBhcHBseSB0byBpbWFnZXMgc3RvcmVkIGluIHRoZSBFQ1IgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBFeHBpcmUgdW50YWdnZWQgaW1hZ2VzIGFmdGVyIDEwIGRheXMgYW5kIGFueSBpbWFnZSBvbGRlciB0aGFuIDE4MCBkYXlzXG4gICAqL1xuICBlY3JSZXBvc2l0b3J5TGlmZWN5Y2xlUnVsZXM/OiBlY3IuTGlmZWN5Y2xlUnVsZVtdXG4gIC8qKlxuICAgKiBJRCBvZiBBV1MgYWNjb3VudHMgdGhhdCB3aWxsIGJlIGdyYW50ZWQgcGVybWlzc2lvbiB0byByZWFkIGZyb21cbiAgICogdGhlIGFydGlmYWN0IHJlcG9zLlxuICAgKi9cbiAgdGFyZ2V0QWNjb3VudElkcz86IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBjcmVhdGluZyBJQU0gcm9sZXMgdGhhdCBjYW4gYmUgYXNzdW1lZFxuICAgKiBieSBHaXRIdWIgQWN0aW9ucyBpbiBzcGVjaWZpYyBHaXRIdWIgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJvbGVzIGFyZSBjcmVhdGVkLlxuICAgKi9cbiAgZ2l0aHViQWN0aW9ucz86IE9taXQ8XG4gICAgR2l0aHViQWN0aW9uc1JvbGVQcm9wcyxcbiAgICBcInRydXN0ZWRPd25lcnNcIiB8IFwidHJ1c3RlZEJyYW5jaFwiIHwgXCJvaWRjUHJvdmlkZXJcIiB8IFwicm9sZU5hbWVcIlxuICA+ICYge1xuICAgIC8qKlxuICAgICAqIEEgbGlzdCBvZiB0cnVzdGVkIEdpdEh1YiByZXBvc2l0b3J5IG93bmVycy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFtcImNhcHJhbGlmZWN5Y2xlXCJdXG4gICAgICovXG4gICAgdHJ1c3RlZE93bmVycz86IHN0cmluZ1tdXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHJvbGUgdG8gY3JlYXRlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJnaXRodWItYWN0aW9ucy1yb2xlXCJcbiAgICAgKi9cbiAgICByb2xlTmFtZT86IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IGJyYW5jaCBpbiBhbGwgcmVwb3NpdG9yaWVzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJtYXN0ZXJcIlxuICAgICAqL1xuICAgIGRlZmF1bHRCcmFuY2g/OiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBhIGxpbWl0ZWQgcm9sZSB0aGF0IGNhbiBiZSB1c2VkIG9uIG5vbi1kZWZhdWx0XG4gICAgICogYnJhbmNoZXMgd2l0aCBsZXNzIElBTSBwZXJtaXNzaW9ucyB0aGFuIHRoZSBtYWluIHJvbGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIGEgbGltaXRlZCByb2xlIGlzIGNyZWF0ZWQuXG4gICAgICovXG4gICAgbGltaXRlZFJvbGVDb25maWd1cmF0aW9uPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIHRvIGNyZWF0ZSB0aGUgcm9sZSBvciBub3QuXG4gICAgICAgKlxuICAgICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcm9sZSB0byBjcmVhdGUuXG4gICAgICAgKlxuICAgICAgICogQGRlZmF1bHQgXCJnaXRodWItYWN0aW9ucy1saW1pdGVkLXJvbGVcIlxuICAgICAgICovXG4gICAgICByb2xlTmFtZT86IHN0cmluZ1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIElBTSBzdGF0ZW1lbnRzLlxuICovXG5jb25zdCBwb2xpY3lTdGF0ZW1lbnRzID0ge1xuICBhbGxvd1BpcGVsaW5lVmFyaWFibGVzOiAoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBwcmVmaXg/OiBzdHJpbmcpID0+XG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogW1wic3NtOlB1dFBhcmFtZXRlclwiXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBgYXJuOmF3czpzc206JHtjZGsuU3RhY2sub2Yoc2NvcGUpLnJlZ2lvbn06JHtjZGsuU3RhY2sub2Yoc2NvcGUpLmFjY291bnR9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzLyR7cHJlZml4ID8/IFwiKlwifWAsXG4gICAgICBdLFxuICAgIH0pLFxuICBkZW55UHJvZFBpcGVsaW5lczogKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgYnVja2V0OiBzMy5JQnVja2V0KSA9PlxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5ERU5ZLFxuICAgICAgYWN0aW9uczogW1wiczM6KlwiXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBidWNrZXQuYXJuRm9yT2JqZWN0cyhcInBpcGVsaW5lcy8qLXByb2QvKlwiKSxcbiAgICAgICAgYnVja2V0LmFybkZvck9iamVjdHMoXCJwaXBlbGluZXMvKi1wcm9kLSovKlwiKSxcbiAgICAgIF0sXG4gICAgfSksXG4gIGRlbnlQcm9kUGlwZWxpbmVWYXJpYWJsZXM6IChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpID0+XG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkRFTlksXG4gICAgICBhY3Rpb25zOiBbXCJzc206UHV0UGFyYW1ldGVyXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOnNzbToke2Nkay5TdGFjay5vZihzY29wZSkucmVnaW9ufToke1xuICAgICAgICAgIGNkay5TdGFjay5vZihzY29wZSkuYWNjb3VudFxuICAgICAgICB9OnBhcmFtZXRlci9saWZsaWctY2RrLyovcGlwZWxpbmUtdmFyaWFibGVzL3Byb2QqYCxcbiAgICAgIF0sXG4gICAgfSksXG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgdmFsaWRhdGluZyB0aGUgY29uc3RydWN0IHByb3BlcnRpZXMuXG4gKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcy4gQW4gZW1wdHkgbGlzdCBtZWFucyB0aGUgcHJvcHMgYXJlIHZhbGlkLlxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVQcm9wcyA9IChwcm9wczogUHJvcHMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXVxuICBpZiAoXG4gICAgcHJvcHMuZ2l0aHViQWN0aW9ucz8uZGVmYXVsdEJyYW5jaCAmJlxuICAgICFwcm9wcy5naXRodWJBY3Rpb25zLmRlZmF1bHRCcmFuY2gubWF0Y2goL15bYS16QS1aMC05LV0rJC8pXG4gICkge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgYERlZmF1bHQgYnJhbmNoICR7cHJvcHMuZ2l0aHViQWN0aW9ucy5kZWZhdWx0QnJhbmNofSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnNgLFxuICAgIClcbiAgfVxuICByZXR1cm4gZXJyb3JzXG59XG5cbi8qKlxuICogQ3JlYXRlIHZhcmlvdXMgYXJ0aWZhY3RzIHVzZWQgYXMgcGFydCBvZiBDb250aW51b3VzIEludGVncmF0aW9uIChDSSkuXG4gKlxuICogVGhpcyBpbmNsdWRlcyBhcnRpZmFjdCByZXBvc2l0b3JpZXMgc3VjaCBhcyBTMyBidWNrZXQgYW5kIEVDUlxuICogcmVwb3NpdG9yeSwgYXMgd2VsbCBhcyBJQU0gcm9sZShzKSB0aGF0IGdyYW50IHRoZSBDSSBzZXJ2ZXIgd3JpdGVcbiAqIGFjY2VzcyB0byB0aGVzZSByZXBvc2l0b3JpZXMuXG4gKlxuICogVE9ETzogSG93IGNhbiB3ZSBjbGVhbnVwIHN0dWZmIHRoYXQgZ29lcyBpbnRvIHRoaXMgUzMgQnVja2V0IGFuZFxuICogIEVDUiBSZXBvc2l0b3J5PyBDYW4gd2UgZXZlciByZWxpYWJseSBjbGVhbnVwPyBXZSBwcm9iYWJseSBuZWVkXG4gKiAgc29tZSBzdHJhdGVneSBmb3IgaG93IHdlIHB1dCBzdHVmZiBoZXJlIHRvIGJlIGFibGUgdG8gZG8gaXQuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRBcnRpZmFjdHMgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgcHVibGljIHJlYWRvbmx5IGVjclJlcG9zaXRvcnlBcm46IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeU5hbWU6IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlXG4gIHB1YmxpYyByZWFkb25seSBsaW1pdGVkUm9sZT86IGlhbS5Sb2xlXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVByb3BzKHByb3BzKVxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3BzIHdlcmUgc3VwcGxpZWQ6ICR7ZXJyb3JzLmpvaW4oXCI7IFwiKX1gKVxuICAgIH1cblxuICAgIHRoaXMuYnVja2V0TmFtZSA9IHByb3BzLmJ1Y2tldE5hbWVcbiAgICB0aGlzLmVjclJlcG9zaXRvcnlOYW1lID0gcHJvcHMuZWNyUmVwb3NpdG9yeU5hbWVcbiAgICB0aGlzLmVjclJlcG9zaXRvcnlBcm4gPSBjZGsuQXJuLmZvcm1hdChcbiAgICAgIHtcbiAgICAgICAgc2VydmljZTogXCJlY3JcIixcbiAgICAgICAgcmVzb3VyY2U6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgICByZXNvdXJjZU5hbWU6IHRoaXMuZWNyUmVwb3NpdG9yeU5hbWUsXG4gICAgICB9LFxuICAgICAgY2RrLlN0YWNrLm9mKHRoaXMpLFxuICAgIClcblxuICAgIGNvbnN0IGVjclJlcG9zaXRvcnlOYW1lID0gcHJvcHMuZWNyUmVwb3NpdG9yeU5hbWVcblxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJTM0J1Y2tldFwiLCB7XG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5idWNrZXROYW1lLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgZXZlbnRCcmlkZ2VFbmFibGVkOiB0cnVlLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IGNkay5EdXJhdGlvbi5kYXlzKDEwKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIGNvbnN0IGVjclJlcG8gPSBuZXcgZWNyLlJlcG9zaXRvcnkodGhpcywgXCJFY3JSZXBvc2l0b3J5XCIsIHtcbiAgICAgIHJlcG9zaXRvcnlOYW1lOiBlY3JSZXBvc2l0b3J5TmFtZSxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBwcm9wcy5lY3JSZXBvc2l0b3J5TGlmZWN5Y2xlUnVsZXMgfHwgW1xuICAgICAgICB7XG4gICAgICAgICAgbWF4SW1hZ2VBZ2U6IGNkay5EdXJhdGlvbi5kYXlzKDEwKSxcbiAgICAgICAgICB0YWdTdGF0dXM6IGVjci5UYWdTdGF0dXMuVU5UQUdHRUQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtYXhJbWFnZUFnZTogY2RrLkR1cmF0aW9uLmRheXMoMTgwKSxcbiAgICAgICAgICB0YWdTdGF0dXM6IGVjci5UYWdTdGF0dXMuQU5ZLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgLy8gQWxsb3cgYSB0YXJnZXQgdG8gcmVhZCBmcm9tIHRoZSByZXBvcy4gQXMgYW55IHNwZWNpZmljIHJvbGVzIG5lZWRcbiAgICAvLyB0byBleGlzdCBiZWZvcmUgd2UgY2FuIGdyYW50IGFjY2Vzcywgd2UgZGVsZWdhdGUgdGhhdCByZXNwb25zaWJpbGl0eVxuICAgIC8vIHRvIHRoZSB0YXJnZXQgYWNjb3VudC5cbiAgICBmb3IgKGNvbnN0IHRhcmdldEFjY291bnRJZCBvZiBwcm9wcy50YXJnZXRBY2NvdW50SWRzIHx8IFtdKSB7XG4gICAgICBidWNrZXQuZ3JhbnRSZWFkKG5ldyBpYW0uQWNjb3VudFByaW5jaXBhbCh0YXJnZXRBY2NvdW50SWQpKVxuICAgICAgZWNyUmVwby5ncmFudFB1bGwobmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRhcmdldEFjY291bnRJZCkpXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmdpdGh1YkFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRydXN0ZWRPd25lcnMgPSBwcm9wcy5naXRodWJBY3Rpb25zLnRydXN0ZWRPd25lcnMgPz8gW1xuICAgICAgICBcImNhcHJhbGlmZWN5Y2xlXCIsXG4gICAgICBdXG4gICAgICAvLyBOT1RFOiBUaGVyZSdzIGFuIEwyIGNvbnN0cnVjdCB0aGF0IHByZWRhdGVzIHRoZSBvZmZpY2lhbCBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSxcbiAgICAgIC8vIGFuZCBpdCBpcyB0aGVyZWZvcmUgaW1wbGVtZW50ZWQgYXMgYSBjdXN0b20gcmVzb3VyY2UuXG4gICAgICAvLyBXZSB1c2UgdGhlIEwxIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIGluc3RlYWQgYmVjYXVzZTpcbiAgICAgIC8vIDEpIGl0J3Mgc2ltcGxlclxuICAgICAgLy8gMikgdGhlcmUncyBhIGNoYW5jZSB0aGUgTDIgY29uc3RydWN0IHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlIGluIGZhdm9yXG4gICAgICAvLyBvZiB0aGUgb2ZmaWNpYWwgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UuXG4gICAgICBjb25zdCBjZm5PaWRjUHJvdmlkZXIgPSBuZXcgaWFtLkNmbk9JRENQcm92aWRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJPcGVuSWRDb25uZWN0UHJvdmlkZXJcIixcbiAgICAgICAge1xuICAgICAgICAgIHVybDogXCJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tXCIsXG4gICAgICAgICAgY2xpZW50SWRMaXN0OiBbXCJzdHMuYW1hem9uYXdzLmNvbVwiXSxcbiAgICAgICAgICAvLyBOT1RFOiBUaGUgdGh1bWJwcmludCBpc24ndCBhY3R1YWxseSB1c2VkLCBidXQgdGhlIEFXUyBBUEkgc3RpbGwgcmVxdWlyZXMgdXMgdG8gc3VwcGx5IGl0LlxuICAgICAgICAgIC8vIE1vcmUgZGV0YWlscyBoZXJlOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyNDAxMjIxNTU3NTgvaHR0cHM6Ly9naXRodWIuY29tL2F3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHMvaXNzdWVzLzM1NyNpc3N1ZWNvbW1lbnQtMTYyNjM1NzMzM1xuICAgICAgICAgIHRodW1icHJpbnRMaXN0OiBbXCIxYzU4YTNhODUxOGU4NzU5YmYwNzViNzZiNzUwZDRmMmRmMjY0ZmNkXCJdLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgY29uc3Qgb2lkY1Byb3ZpZGVyID1cbiAgICAgICAgaWFtLk9wZW5JZENvbm5lY3RQcm92aWRlci5mcm9tT3BlbklkQ29ubmVjdFByb3ZpZGVyQXJuKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJQcm92aWRlclwiLFxuICAgICAgICAgIGNmbk9pZGNQcm92aWRlci5yZWYsXG4gICAgICAgIClcbiAgICAgIGNvbnN0IGNyZWF0ZUxpbWl0ZWRSb2xlID1cbiAgICAgICAgcHJvcHMuZ2l0aHViQWN0aW9ucy5saW1pdGVkUm9sZUNvbmZpZ3VyYXRpb24/LmVuYWJsZWQgPz8gdHJ1ZVxuICAgICAgY29uc3Qgcm9sZSA9IG5ldyBHaXRodWJBY3Rpb25zUm9sZSh0aGlzLCBcIkdpdGh1YkFjdGlvbnNSb2xlXCIsIHtcbiAgICAgICAgb2lkY1Byb3ZpZGVyLFxuICAgICAgICB0cnVzdGVkT3duZXJzLFxuICAgICAgICByb2xlTmFtZTogcHJvcHMuZ2l0aHViQWN0aW9ucy5yb2xlTmFtZSA/PyBcImdpdGh1Yi1hY3Rpb25zLXJvbGVcIixcbiAgICAgICAgdHJ1c3RlZEJyYW5jaDogY3JlYXRlTGltaXRlZFJvbGVcbiAgICAgICAgICA/IChwcm9wcy5naXRodWJBY3Rpb25zLmRlZmF1bHRCcmFuY2ggPz8gXCJtYXN0ZXJcIilcbiAgICAgICAgICA6IC8vIE5PVEU6IElmIHRoZSBsaW1pdGVkIHJvbGUgaXMgZGlzYWJsZWQsIG9ubHkgb25lIHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAgICAgICAgICAvLyBhbmQgdGhhdCByb2xlIHRoZW4gbmVlZHMgdG8gYmUgYXNzdW1hYmxlIGZyb20gYWxsIGJyYW5jaGVzLlxuICAgICAgICAgICAgXCIqXCIsXG4gICAgICAgIHJlcG9zaXRvcmllczogcHJvcHMuZ2l0aHViQWN0aW9ucy5yZXBvc2l0b3JpZXMsXG4gICAgICAgIHRydXN0SW1tdXRhYmxlU3ViamVjdENsYWltOlxuICAgICAgICAgIHByb3BzLmdpdGh1YkFjdGlvbnMudHJ1c3RJbW11dGFibGVTdWJqZWN0Q2xhaW0sXG4gICAgICB9KVxuICAgICAgdGhpcy5yb2xlID0gcm9sZS5yb2xlXG4gICAgICB0aGlzLnJvbGUuYWRkVG9Qb2xpY3kocG9saWN5U3RhdGVtZW50cy5hbGxvd1BpcGVsaW5lVmFyaWFibGVzKHRoaXMpKVxuICAgICAgYnVja2V0LmdyYW50UHV0KHRoaXMucm9sZSlcbiAgICAgIGVjclJlcG8uZ3JhbnRQdWxsUHVzaCh0aGlzLnJvbGUpXG4gICAgICBpZiAoY3JlYXRlTGltaXRlZFJvbGUpIHtcbiAgICAgICAgY29uc3QgbGltaXRlZFJvbGUgPSBuZXcgR2l0aHViQWN0aW9uc1JvbGUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcIkdpdGh1YkFjdGlvbnNMaW1pdGVkUm9sZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9pZGNQcm92aWRlcixcbiAgICAgICAgICAgIHRydXN0ZWRPd25lcnMsXG4gICAgICAgICAgICByb2xlTmFtZTpcbiAgICAgICAgICAgICAgcHJvcHMuZ2l0aHViQWN0aW9ucy5saW1pdGVkUm9sZUNvbmZpZ3VyYXRpb24/LnJvbGVOYW1lID8/XG4gICAgICAgICAgICAgIFwiZ2l0aHViLWFjdGlvbnMtbGltaXRlZC1yb2xlXCIsXG4gICAgICAgICAgICAvLyBOT1RFOiBUaGUgbGltaXRlZCByb2xlIGNhbiBiZSBhc3N1bWVkIGZyb20gYWxsIGJyYW5jaGVzLlxuICAgICAgICAgICAgdHJ1c3RlZEJyYW5jaDogXCIqXCIsXG4gICAgICAgICAgICByZXBvc2l0b3JpZXM6IHByb3BzLmdpdGh1YkFjdGlvbnMucmVwb3NpdG9yaWVzLFxuICAgICAgICAgICAgdHJ1c3RJbW11dGFibGVTdWJqZWN0Q2xhaW06XG4gICAgICAgICAgICAgIHByb3BzLmdpdGh1YkFjdGlvbnMudHJ1c3RJbW11dGFibGVTdWJqZWN0Q2xhaW0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlID0gbGltaXRlZFJvbGUucm9sZVxuICAgICAgICB0aGlzLmxpbWl0ZWRSb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzLCBcImRldipcIiksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5saW1pdGVkUm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgICBwb2xpY3lTdGF0ZW1lbnRzLmRlbnlQcm9kUGlwZWxpbmVzKHNjb3BlLCBidWNrZXQpLFxuICAgICAgICApXG4gICAgICAgIGJ1Y2tldC5ncmFudFB1dCh0aGlzLmxpbWl0ZWRSb2xlKVxuICAgICAgICBlY3JSZXBvLmdyYW50UHVsbFB1c2godGhpcy5saW1pdGVkUm9sZSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmNpUm9sZU5hbWUpIHtcbiAgICAgIGNvbnN0IGxlZ2FjeVJvbGVGb3JKZW5raW5zID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2lSb2xlXCIsIHtcbiAgICAgICAgcm9sZU5hbWU6IHByb3BzLmNpUm9sZU5hbWUsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Bcm5QcmluY2lwYWwoXG4gICAgICAgICAgXCJhcm46YXdzOmlhbTo6OTIzNDAyMDk3MDQ2OnJvbGUvYnVpbGR0b29scy1qZW5raW5zLVJvbGVKZW5raW5zU2xhdmUtSlFHWUhSNVdFNkM1XCIsXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICAgbGVnYWN5Um9sZUZvckplbmtpbnMuYWRkVG9Qb2xpY3koXG4gICAgICAgIHBvbGljeVN0YXRlbWVudHMuYWxsb3dQaXBlbGluZVZhcmlhYmxlcyh0aGlzKSxcbiAgICAgIClcbiAgICAgIGJ1Y2tldC5ncmFudFB1dChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICAgIGVjclJlcG8uZ3JhbnRQdWxsUHVzaChsZWdhY3lSb2xlRm9ySmVua2lucylcbiAgICB9XG5cbiAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBcIkVjclJlcG9VcmlcIiwge1xuICAgICAgdmFsdWU6IGVjclJlcG8ucmVwb3NpdG9yeVVyaSxcbiAgICB9KVxuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJCdWNrZXROYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucm9sZSkge1xuICAgICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJSb2xlQXJuXCIsIHtcbiAgICAgICAgdmFsdWU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMubGltaXRlZFJvbGUpIHtcbiAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiTGltaXRlZFJvbGVBcm5cIiwge1xuICAgICAgICB2YWx1ZTogdGhpcy5saW1pdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|