aws-cdk 2.6.0 → 2.7.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/bin/cdk.js +7 -6
- package/build-info.json +2 -2
- package/lib/api/aws-auth/sdk-provider.d.ts +26 -1
- package/lib/api/aws-auth/sdk-provider.js +4 -4
- package/lib/api/bootstrap/deploy-bootstrap.js +2 -2
- package/lib/api/cloudformation-deployments.d.ts +63 -1
- package/lib/api/cloudformation-deployments.js +66 -3
- package/lib/api/cxapp/cloud-assembly.js +5 -5
- package/lib/api/deploy-stack.js +5 -5
- package/lib/api/hotswap-deployments.js +5 -5
- package/lib/api/toolkit-info.d.ts +5 -5
- package/lib/api/toolkit-info.js +10 -10
- package/lib/api/util/cloudformation/stack-activity-monitor.js +22 -22
- package/lib/assets.js +3 -3
- package/lib/cdk-toolkit.js +17 -17
- package/lib/commands/context.js +7 -7
- package/lib/commands/docs.js +4 -4
- package/lib/commands/doctor.js +6 -6
- package/lib/context-providers/ami.js +2 -2
- package/lib/context-providers/availability-zones.js +2 -2
- package/lib/context-providers/endpoint-service-availability-zones.js +2 -2
- package/lib/context-providers/hosted-zones.js +2 -2
- package/lib/context-providers/keys.js +2 -2
- package/lib/context-providers/load-balancers.js +3 -3
- package/lib/context-providers/security-groups.js +2 -2
- package/lib/context-providers/ssm-parameters.js +2 -2
- package/lib/context-providers/vpcs.js +2 -2
- package/lib/diff.js +3 -3
- package/lib/init.js +14 -14
- package/lib/logging.js +7 -7
- package/lib/os.js +3 -3
- package/lib/plugin.js +4 -4
- package/lib/util/asset-publishing.js +3 -3
- package/lib/util/console-formatters.js +4 -3
- package/lib/version.js +3 -3
- package/npm-shrinkwrap.json +78 -83
- package/package.json +16 -15
- package/test/api/cloudformation-deployments.test.js +2 -2
- package/test/api/sdk-provider.test.js +11 -11
- package/test/api/stack-activity-monitor.test.js +13 -13
- package/test/cdk-toolkit.test.js +230 -10
- package/test/context-providers/load-balancers.test.js +4 -4
- package/test/util/cloudformation.test.js +2 -2
- package/test/util/console-formatters.test.js +6 -6
- package/test/util/mock-sdk.d.ts +2 -2
- package/test/util/mock-sdk.js +2 -2
- package/test/util/mock-toolkitinfo.js +2 -2
|
@@ -33,7 +33,7 @@ describe('utilities', () => {
|
|
|
33
33
|
})),
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
|
-
const elbv2 =
|
|
36
|
+
const elbv2 = (await mockSDK.forEnvironment()).sdk.elbv2();
|
|
37
37
|
const resourceTagsOut = {};
|
|
38
38
|
for await (const tagDescription of load_balancers_1.describeTags(elbv2, Object.keys(resourceTags))) {
|
|
39
39
|
resourceTagsOut[tagDescription.ResourceArn] = tagDescription;
|
|
@@ -56,7 +56,7 @@ describe('utilities', () => {
|
|
|
56
56
|
NextMarker: end < listenerArns.length ? end.toString() : undefined,
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
|
-
const elbv2 =
|
|
59
|
+
const elbv2 = (await mockSDK.forEnvironment()).sdk.elbv2();
|
|
60
60
|
const listenerArnsFromPages = Array();
|
|
61
61
|
for await (const listener of load_balancers_1.describeListenersByLoadBalancerArn(elbv2, ['arn:load-balancer'])) {
|
|
62
62
|
listenerArnsFromPages.push(listener.ListenerArn);
|
|
@@ -78,7 +78,7 @@ describe('utilities', () => {
|
|
|
78
78
|
NextMarker: end < loadBalancerArns.length ? end.toString() : undefined,
|
|
79
79
|
});
|
|
80
80
|
});
|
|
81
|
-
const elbv2 =
|
|
81
|
+
const elbv2 = (await mockSDK.forEnvironment()).sdk.elbv2();
|
|
82
82
|
const loadBalancerArnsFromPages = (await load_balancers_1.describeLoadBalancers(elbv2, {})).map(l => l.LoadBalancerArn);
|
|
83
83
|
expect(loadBalancerArnsFromPages).toEqual(loadBalancerArns);
|
|
84
84
|
});
|
|
@@ -766,4 +766,4 @@ function mockALBLookup(options) {
|
|
|
766
766
|
cb(null, { Listeners: options.listeners });
|
|
767
767
|
});
|
|
768
768
|
}
|
|
769
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBMkQ7QUFFM0Qsb0NBQW9DO0FBQ3BDLCtFQUE4TjtBQUM5TiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFlBQVksR0FBNkMsRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRTtvQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtpQkFDcEM7YUFDRixDQUFDO1NBQ0g7UUFBQSxDQUFDO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7WUFDeEgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFB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QUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQW9DLEVBQUUsRUFBNkMsRUFBRSxFQUFFO1FBQ3hILElBQUksT0FBTyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtZQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsT0FBeUMsRUFBRSxFQUFrRCxFQUFFLEVBQUU7UUFDdkksSUFBSSxPQUFPLENBQUMseUJBQXlCLEtBQUssU0FBUyxFQUFFO1lBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUQ7UUFDRCxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkay1tb2NrJztcbmltcG9ydCB7IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4sIHRhZ3NNYXRjaCwgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiwgZGVzY3JpYmVUYWdzLCBkZXNjcmliZUxvYWRCYWxhbmNlcnMgfSBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMvbG9hZC1iYWxhbmNlcnMnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbmRlc2NyaWJlKCd1dGlsaXRpZXMnLCAoKSA9PiB7XG4gIHRlc3QoJ2Rlc2NyaWJlVGFncyB5aWVsZHMgdGFncyBieSBjaHVuaycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZVRhZ3M6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlc291cmNlQXJuIG9mIFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCkpIHtcbiAgICAgIHJlc291cmNlVGFnc1tyZXNvdXJjZUFybl0gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiByZXNvdXJjZUFybixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnbmFtZScsIFZhbHVlOiByZXNvdXJjZUFybiB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgICAgZXhwZWN0KF9wYXJhbXMuUmVzb3VyY2VBcm5zLmxlbmd0aCkudG9CZUxlc3NUaGFuT3JFcXVhbCgyMCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBfcGFyYW1zLlJlc291cmNlQXJucy5tYXAocmVzb3VyY2VBcm4gPT4gKHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogcmVzb3VyY2VBcm4sXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICduYW1lJywgVmFsdWU6IHJlc291cmNlQXJuIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlbGJ2MiA9IGF3YWl0IChhd2FpdCBtb2NrU0RLLmZvckVudmlyb25tZW50KCkpLmVsYnYyKCk7XG5cbiAgICBjb25zdCByZXNvdXJjZVRhZ3NPdXQ6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHRhZ0Rlc2NyaXB0aW9uIG9mIGRlc2NyaWJlVGFncyhlbGJ2MiwgT2JqZWN0LmtleXMocmVzb3VyY2VUYWdzKSkpIHtcbiAgICAgIHJlc291cmNlVGFnc091dFt0YWdEZXNjcmlwdGlvbi5SZXNvdXJjZUFybiFdID0gdGFnRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgZXhwZWN0KHJlc291cmNlVGFnc091dCkudG9FcXVhbChyZXNvdXJjZVRhZ3MpO1xuICB9KTtcblxuICB0ZXN0KCdkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuIHRyYXZlcnNlcyBwYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBhcm46bGlzdGVuZXItMCwgYXJuOmxpc3RlbmVyLTEsIC4uLiwgYXJuOmxpc3RlbmVyLTk5XG4gICAgY29uc3QgbGlzdGVuZXJBcm5zID0gWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsaXN0ZW5lci0ke2l9YCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyQXJuc1swXSkudG9FcXVhbCgnYXJuOmxpc3RlbmVyLTAnKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VJbnQoX3BhcmFtcy5NYXJrZXIgPz8gJzAnKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgMTA7XG4gICAgICBjb25zdCBzbGljZSA9IGxpc3RlbmVyQXJucy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMaXN0ZW5lcnM6IHNsaWNlLm1hcChhcm4gPT4gKHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogYXJuLFxuICAgICAgICB9KSksXG4gICAgICAgIE5leHRNYXJrZXI6IGVuZCA8IGxpc3RlbmVyQXJucy5sZW5ndGggPyBlbmQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZWxidjIgPSBhd2FpdCAoYXdhaXQgbW9ja1NESy5mb3JFbnZpcm9ubWVudCgpKS5lbGJ2MigpO1xuXG4gICAgY29uc3QgbGlzdGVuZXJBcm5zRnJvbVBhZ2VzID0gQXJyYXk8c3RyaW5nPigpO1xuICAgIGZvciBhd2FpdCAoY29uc3QgbGlzdGVuZXIgb2YgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybihlbGJ2MiwgWydhcm46bG9hZC1iYWxhbmNlciddKSkge1xuICAgICAgbGlzdGVuZXJBcm5zRnJvbVBhZ2VzLnB1c2gobGlzdGVuZXIuTGlzdGVuZXJBcm4hKTtcbiAgICB9XG5cbiAgICBleHBlY3QobGlzdGVuZXJBcm5zRnJvbVBhZ2VzKS50b0VxdWFsKGxpc3RlbmVyQXJucyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycyB0cmF2ZXJzZXMgcGFnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyQXJucyA9IFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCk7XG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNbMF0pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyLTAnKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VJbnQoX3BhcmFtcy5NYXJrZXIgPz8gJzAnKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgMTA7XG4gICAgICBjb25zdCBzbGljZSA9IGxvYWRCYWxhbmNlckFybnMuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2Vyczogc2xpY2UubWFwKGxvYWRCYWxhbmNlckFybiA9PiAoe1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogbG9hZEJhbGFuY2VyQXJuLFxuICAgICAgICB9KSksXG4gICAgICAgIE5leHRNYXJrZXI6IGVuZCA8IGxvYWRCYWxhbmNlckFybnMubGVuZ3RoID8gZW5kLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVsYnYyID0gYXdhaXQgKGF3YWl0IG1vY2tTREsuZm9yRW52aXJvbm1lbnQoKSkuZWxidjIoKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zRnJvbVBhZ2VzID0gKGF3YWl0IGRlc2NyaWJlTG9hZEJhbGFuY2VycyhlbGJ2Miwge30pKS5tYXAobCA9PiBsLkxvYWRCYWxhbmNlckFybiEpO1xuXG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobG9hZEJhbGFuY2VyQXJucyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0YWdzTWF0Y2gnLCAoKSA9PiB7XG4gICAgdGVzdCgnYWxsIHRhZ3MgbWF0Y2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdleHRyYSB0YWdzIG1hdGNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIHsgS2V5OiAnb3RoZXInLCBWYWx1ZTogJ3RhZzInIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ25vIHRhZ3MgbWF0Y2hlcyBubyB0YWdzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW10sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCBbXSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdvbmUgdGFnIG1hdGNoZXMgb2Ygc2V2ZXJhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ290aGVyJywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndW5kZWZpbmVkIHRhZyBkb2VzIG5vdCBlcnJvcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdvdGhlcicsIHZhbHVlOiAndmFsdWUnIH0sXG4gICAgICBdO1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCByZXF1aXJlZFRhZ3MpKS50b0VxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIG1hdGNoZXMgYXJlIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlc2NyaWJlVGFnc0V4cGVjdGVkOiB7IFJlc291cmNlQXJuczogWydhcm46bG9hZC1iYWxhbmNlcjEnLCAnYXJuOmxvYWQtYmFsYW5jZXIyJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIFRhZ3M6IFtcbiAgICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9NdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QocmVzdWx0LmlwQWRkcmVzc1R5cGUpLnRvRXF1YWwoJ2lwdjQnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckFybikudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXIxJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQpLnRvRXF1YWwoJ1oxMjM0Jyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJEbnNOYW1lKS50b0VxdWFsKCdkbnMuZXhhbXBsZS5jb20nKTtcbiAgICBleHBlY3QocmVzdWx0LnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICAgIGV4cGVjdChyZXN1bHQudnBjSWQpLnRvRXF1YWwoJ3ZwYy0xMjM0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IHRhZ3MnLCBhc3luYygpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczEuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMyLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ6IHsgUmVzb3VyY2VBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMScsICdhcm46bG9hZC1iYWxhbmNlcjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICAgIHsgS2V5OiAnc2Vjb25kJywgVmFsdWU6ICd0YWcyJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdzZWNvbmQnLCB2YWx1ZTogJ3RhZzInIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJBcm4pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyMicpO1xuICB9KTtcblxuICB0ZXN0KCdmaWx0ZXJzIGJ5IHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICB9KTtcblxuICAgIGV4cGVjdChsb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyQXJuKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlcjInKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgbGlzdGVuZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW10sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICAgICAgbGlzdGVuZXJQcm90b2NvbDogY3hzY2hlbWEuTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5IVFRQUyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VyIGxpc3RlbmVycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lcjInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDgwLFxuICAgICAgICBsaXN0ZW5lclByb3RvY29sOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLkhUVFAsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTXVsdGlwbGUgbG9hZCBiYWxhbmNlciBsaXN0ZW5lcnMvaSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IGxpc3RlbmVyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExpc3RlbmVyQXJuczogWydhcm46bGlzdGVuZXItYXJuJ10gfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybiddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnLCAnc2ctMjM0NSddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4nLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lckFybikudG9FcXVhbCgnYXJuOmxpc3RlbmVyLWFybicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnLCAnc2ctMjM0NSddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnIH0sXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgUG9ydDogODAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4xJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg4MCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdGFncycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiB1bmRlZmluZWQgfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBoYXZlIHRoZSB3cm9uZyB0YWdzXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCcsICdzZy0yMzQ1J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTM0NTYnLCAnc2ctNDU2NyddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZVRhZ3NFeHBlY3RlZDogeyBSZXNvdXJjZUFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmVcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjInLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJQb3J0OiA5OTksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTM0NTYnLCAnc2ctNDU2NyddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgbGlzdGVuZXIgcG9ydCBhbmQgcHJvdG8nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKHt9KTtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2VyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXZlIGFueSBtYXRjaGluZyBsaXN0ZW5lcnNcbiAgICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBTaG91bGQgaGF2ZSBhIG1hdGNoaW5nIGxpc3RlbmVyXG4gICAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMjM0NSddLFxuICAgICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZVRhZ3MnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlVGFnc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlVGFnc091dHB1dD4pID0+IHtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTGlzdGVuZXJzJywgKHBhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLkxvYWRCYWxhbmNlckFybiA9PT0gJ2Fybjpsb2FkLWJhbGFuY2VyMScpIHtcbiAgICAgICAgY2IobnVsbCwge1xuICAgICAgICAgIExpc3RlbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgd3JvbmcgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHByb3RvY29sLCByaWdodCBwb3J0ID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjMnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFBTJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHJpZ2h0IHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjQnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5Mb2FkQmFsYW5jZXJBcm4gPT09ICdhcm46bG9hZC1iYWxhbmNlcjInKSB7XG4gICAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgICBMaXN0ZW5lcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHdyb25nIHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjUnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBSaWdodCBwb3J0LCByaWdodCBwcm90b2NvbCA9PiBtYXRjaFxuICAgICAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm42JyxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IobmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0nYCksIHt9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW3sga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9XSxcbiAgICAgIGxpc3RlbmVyUHJvdG9jb2w6IGN4c2NoZW1hLkxvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuVENQLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuNicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTIzNDUnXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2ZpbHRlcnMgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuczogdW5kZWZpbmVkIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZSBoYXMgd3JvbmcgdHlwZSA9PiBubyBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gUmlnaHQgdHlwZSA9PiBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGlzIHdyb25nIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMaXN0ZW5lckFybnM6IFsnYXJuOmxpc3RlbmVyLWFybjEnXSB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmUgaGFzIHdyb25nIHR5cGUgPT4gbm8gbWF0Y2hcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogW10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgICAgICAgbGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvbm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGZvdW5kL2kpO1xuICB9KTtcbn0pO1xuXG5pbnRlcmZhY2UgQUxCTG9va3VwT3B0aW9ucyB7XG4gIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkPzogYW55O1xuICBsb2FkQmFsYW5jZXJzPzogYXdzLkVMQnYyLkxvYWRCYWxhbmNlcnM7XG4gIGRlc2NyaWJlVGFnc0V4cGVjdGVkPzogYW55O1xuICB0YWdEZXNjcmlwdGlvbnM/OiBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb25zO1xuICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkPzogYW55O1xuICBsaXN0ZW5lcnM/OiBhd3MuRUxCdjIuTGlzdGVuZXJzO1xufVxuXG5mdW5jdGlvbiBtb2NrQUxCTG9va3VwKG9wdGlvbnM6IEFMQkxvb2t1cE9wdGlvbnMpIHtcbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IExvYWRCYWxhbmNlcnM6IG9wdGlvbnMubG9hZEJhbGFuY2VycyB9KTtcbiAgfSk7XG5cbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlVGFnc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVUYWdzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IFRhZ0Rlc2NyaXB0aW9uczogb3B0aW9ucy50YWdEZXNjcmlwdGlvbnMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICBpZiAob3B0aW9ucy5kZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgTGlzdGVuZXJzOiBvcHRpb25zLmxpc3RlbmVycyB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
769
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBMkQ7QUFFM0Qsb0NBQW9DO0FBQ3BDLCtFQUE4TjtBQUM5TiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFlBQVksR0FBNkMsRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRTtvQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtpQkFDcEM7YUFDRixDQUFDO1NBQ0g7UUFBQSxDQUFDO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7WUFDeEgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFNUQsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDUCxlQUFlLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN4RCxXQUFXLEVBQUUsV0FBVztvQkFDeEIsSUFBSSxFQUFFO3dCQUNKLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO3FCQUNwQztpQkFDRixDQUFDLENBQUM7YUFDSixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0QsTUFBTSxlQUFlLEdBQTZDLEVBQUUsQ0FBQztRQUNyRSxJQUFJLEtBQUssRUFBRSxNQUFNLGNBQWMsSUFBSSw2QkFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUU7WUFDakYsZUFBZSxDQUFDLGNBQWMsQ0FBQyxXQUFZLENBQUMsR0FBRyxjQUFjLENBQUM7U0FDL0Q7UUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3BFLHVEQUF1RDtRQUN2RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWxELEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsT0FBeUMsRUFBRSxFQUFrRCxFQUFFLEVBQUU7O1lBQ3ZJLE1BQU0sS0FBSyxHQUFHLFFBQVEsT0FBQyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUMsQ0FBQztZQUM5QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRTdDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMzQixXQUFXLEVBQUUsR0FBRztpQkFDakIsQ0FBQyxDQUFDO2dCQUNILFVBQVUsRUFBRSxHQUFHLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ25FLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUzRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzlDLElBQUksS0FBSyxFQUFFLE1BQU0sUUFBUSxJQUFJLG1EQUFrQyxDQUFDLEtBQUssRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRTtZQUM3RixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVksQ0FBQyxDQUFDO1NBQ25EO1FBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTNELEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMsT0FBNkMsRUFBRSxFQUFzRCxFQUFFLEVBQUU7O1lBQ25KLE1BQU0sS0FBSyxHQUFHLFFBQVEsT0FBQyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUMsQ0FBQztZQUM5QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFakQsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDUCxhQUFhLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNDLGVBQWUsRUFBRSxlQUFlO2lCQUNqQyxDQUFDLENBQUM7Z0JBQ0gsVUFBVSxFQUFFLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN2RSxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0QsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE1BQU0sc0NBQXFCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWdCLENBQUMsQ0FBQztRQUV4RyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxjQUFjLEdBQUc7Z0JBQ3JCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3RDLENBQUM7WUFFRixNQUFNLFlBQVksR0FBRztnQkFDbkIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7YUFDOUIsQ0FBQztZQUVGLE1BQU0sQ0FBQywwQkFBUyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDNUIsTUFBTSxjQUFjLEdBQUc7Z0JBQ3JCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixJQUFJLEVBQUU7b0JBQ0osRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7b0JBQzdCLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2lCQUNoQzthQUNGLENBQUM7WUFFRixNQUFNLFlBQVksR0FBRztnQkFDbkIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7YUFDOUIsQ0FBQztZQUVGLE1BQU0sQ0FBQywwQkFBUyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7WUFDbkMsTUFBTSxjQUFjLEdBQUc7Z0JBQ3JCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixJQUFJLEVBQUUsRUFBRTthQUNULENBQUM7WUFFRixNQUFNLENBQUMsMEJBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sY0FBYyxHQUFHO2dCQUNyQixXQUFXLEVBQUUsY0FBYztnQkFDM0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUN0QyxDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUM3QixFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTthQUNqQyxDQUFDO1lBRUYsTUFBTSxDQUFDLDBCQUFTLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtZQUN4QyxNQUFNLGNBQWMsR0FBRztnQkFDckIsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3hCLENBQUM7WUFFRixNQUFNLFlBQVksR0FBRztnQkFDbkIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQzdCLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2FBQ2pDLENBQUM7WUFFRixNQUFNLENBQUMsMEJBQVMsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtJQUNyRCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbEQsUUFBUTtRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksa0RBQWlDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEUsYUFBYSxDQUFDO1lBQ1osYUFBYSxFQUFFLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sTUFBTSxDQUNWLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDaEIsT0FBTyxFQUFFLE1BQU07WUFDZixNQUFNLEVBQUUsV0FBVztZQUNuQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUN2RCxlQUFlLEVBQUUsb0JBQW9CO1NBQ3RDLENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMzRCxRQUFRO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxrREFBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRSxhQUFhLENBQUM7WUFDWixhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0UsYUFBYSxFQUFFLE1BQU07b0JBQ3JCLGVBQWUsRUFBRSxvQkFBb0I7b0JBQ3JDLE9BQU8sRUFBRSxrQkFBa0I7b0JBQzNCLHFCQUFxQixFQUFFLE9BQU87b0JBQzlCLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDM0IsS0FBSyxFQUFFLFVBQVU7b0JBQ2pCLElBQUksRUFBRSxhQUFhO2lCQUNwQjtnQkFDRDtvQkFDRSxhQUFhLEVBQUUsTUFBTTtvQkFDckIsZUFBZSxFQUFFLG9CQUFvQjtvQkFDckMsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IscUJBQXFCLEVBQUUsT0FBTztvQkFDOUIsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUMzQixLQUFLLEVBQUUsVUFBVTtvQkFDakIsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2FBQ0Y7WUFDRCxvQkFBb0IsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7WUFDcEYsZUFBZSxFQUFFO2dCQUNmO29CQUNFLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLElBQUksRUFBRTt3QkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtxQkFDOUI7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsV0FBVyxFQUFFLG9CQUFvQjtvQkFDakMsSUFBSSxFQUFFO3dCQUNKLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO3FCQUM5QjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sTUFBTSxDQUNWLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDaEIsT0FBTyxFQUFFLE1BQU07WUFDZixNQUFNLEVBQUUsV0FBVztZQUNuQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUN2RCxnQkFBZ0IsRUFBRTtnQkFDaEIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7YUFDOUI7U0FDRixDQUFDLENBQ0gsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakMsUUFBUTtRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksa0RBQWlDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEUsYUFBYSxDQUFDO1lBQ1osNkJBQTZCLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7WUFDM0UsYUFBYSxFQUFFO2dCQUNiO29CQUNFLGFBQWEsRUFBRSxNQUFNO29CQUNyQixlQUFlLEVBQUUsb0JBQW9CO29CQUNyQyxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixxQkFBcUIsRUFBRSxPQUFPO29CQUM5QixjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzNCLEtBQUssRUFBRSxVQUFVO29CQUNqQixJQUFJLEVBQUUsYUFBYTtpQkFDcEI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDckMsT0FBTyxFQUFFLE1BQU07WUFDZixNQUFNLEVBQUUsV0FBVztZQUNuQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUN2RCxlQUFlLEVBQUUsb0JBQW9CO1NBQ3RDLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssSUFBRyxFQUFFO1FBQ2pDLFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLGtEQUFpQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLGFBQWEsQ0FBQztZQUNaLGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxhQUFhLEVBQUUsTUFBTTtvQkFDckIsZUFBZSxFQUFFLG9CQUFvQjtvQkFDckMsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IscUJBQXFCLEVBQUUsT0FBTztvQkFDOUIsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUMzQixLQUFLLEVBQUUsVUFBVTtvQkFDakIsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2dCQUNEO29CQUNFLGFBQWEsRUFBRSxNQUFNO29CQUNyQixlQUFlLEVBQUUsb0JBQW9CO29CQUNyQyxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixxQkFBcUIsRUFBRSxPQUFPO29CQUM5QixjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzNCLEtBQUssRUFBRSxVQUFVO29CQUNqQixJQUFJLEVBQUUsYUFBYTtpQkFDcEI7YUFDRjtZQUNELG9CQUFvQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtZQUNwRixlQUFlLEVBQUU7Z0JBQ2Y7b0JBQ0UsV0FBVyxFQUFFLG9CQUFvQjtvQkFDakMsSUFBSSxFQUFFO3dCQUNKLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO3FCQUM5QjtpQkFDRjtnQkFDRDtvQkFDRSxXQUFXLEVBQUUsb0JBQW9CO29CQUNqQyxJQUFJLEVBQUU7d0JBQ0osRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7d0JBQzdCLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3FCQUNqQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXO1lBQ3ZELGdCQUFnQixFQUFFO2dCQUNoQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFDN0IsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDakM7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pDLFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLGtEQUFpQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLGFBQWEsQ0FBQztZQUNaLGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxhQUFhLEVBQUUsTUFBTTtvQkFDckIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsZUFBZSxFQUFFLG9CQUFvQjtvQkFDckMsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IscUJBQXFCLEVBQUUsT0FBTztvQkFDOUIsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUMzQixLQUFLLEVBQUUsVUFBVTtpQkFDbEI7Z0JBQ0Q7b0JBQ0UsYUFBYSxFQUFFLE1BQU07b0JBQ3JCLElBQUksRUFBRSxhQUFhO29CQUNuQixlQUFlLEVBQUUsb0JBQW9CO29CQUNyQyxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixxQkFBcUIsRUFBRSxPQUFPO29CQUM5QixjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzNCLEtBQUssRUFBRSxVQUFVO2lCQUNsQjthQUNGO1lBRUQsZUFBZSxFQUFFO2dCQUNmO29CQUNFLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQ3RDO2dCQUNEO29CQUNFLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQ3RDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxZQUFZLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsTUFBTSxFQUFFLFdBQVc7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXO1NBQ3hELENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7SUFDOUQsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hFLFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLDBEQUF5QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLGFBQWEsQ0FBQztZQUNaLGFBQWEsRUFBRSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLE1BQU0sQ0FDVixRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsTUFBTSxFQUFFLFdBQVc7WUFDbkIsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7WUFDdkQsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNoRCxRQUFRO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSwwREFBeUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxhQUFhLENBQUM7WUFDWixhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0UsZUFBZSxFQUFFLG1CQUFtQjtvQkFDcEMsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsZUFBZSxFQUFFLG1CQUFtQjtvQkFDcEMsV0FBVyxFQUFFLGNBQWM7b0JBQzNCLElBQUksRUFBRSxFQUFFO29CQUNSLFFBQVEsRUFBRSxNQUFNO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sTUFBTSxDQUNWLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDaEIsT0FBTyxFQUFFLE1BQU07WUFDZixNQUFNLEVBQUUsV0FBVztZQUNuQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUN2RCxlQUFlLEVBQUUsbUJBQW1CO1lBQ3BDLFlBQVksRUFBRSxHQUFHO1lBQ2pCLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO1NBQzlELENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN0RCxRQUFRO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSwwREFBeUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxhQUFhLENBQUM7WUFDWixhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0UsZUFBZSxFQUFFLG1CQUFtQjtvQkFDcEMsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2dCQUNEO29CQUNFLGVBQWUsRUFBRSxvQkFBb0I7b0JBQ3JDLElBQUksRUFBRSxhQUFhO2lCQUNwQjthQUNGO1lBQ0QsZUFBZSxFQUFFO2dCQUNmO29CQUNFLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ2hDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQ3RDO2dCQUNEO29CQUNFLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQ3RDO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsZUFBZSxFQUFFLG1CQUFtQjtvQkFDcEMsV0FBVyxFQUFFLGNBQWM7b0JBQzNCLElBQUksRUFBRSxFQUFFO29CQUNSLFFBQVEsRUFBRSxNQUFNO2lCQUNqQjtnQkFDRDtvQkFDRSxlQUFlLEVBQUUsb0JBQW9CO29CQUNyQyxXQUFXLEVBQUUsZUFBZTtvQkFDNUIsSUFBSSxFQUFFLEVBQUU7b0JBQ1IsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxNQUFNLENBQ1YsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNoQixPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXO1lBQ3ZELGdCQUFnQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNqRCxZQUFZLEVBQUUsRUFBRTtZQUNoQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsNEJBQTRCLENBQUMsSUFBSTtTQUM3RCxDQUFDLENBQ0gsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUMsUUFBUTtRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksMERBQXlDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEUsYUFBYSxDQUFDO1lBQ1oseUJBQXlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2pFLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixlQUFlLEVBQUUsdUJBQXVCO29CQUN4QyxJQUFJLEVBQUUsR0FBRztpQkFDVjthQUNGO1lBQ0QsNkJBQTZCLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUU7WUFDOUUsYUFBYSxFQUFFO2dCQUNiO29CQUNFLGVBQWUsRUFBRSx1QkFBdUI7b0JBQ3hDLGNBQWMsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7b0JBQ3RDLElBQUksRUFBRSxhQUFhO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN2QyxPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXO1lBQ3ZELFdBQVcsRUFBRSxrQkFBa0I7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFELFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLDBEQUF5QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLGFBQWEsQ0FBQztZQUNaLDZCQUE2QixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1lBQy9FLGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxlQUFlLEVBQUUsd0JBQXdCO29CQUN6QyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQzNCLElBQUksRUFBRSxhQUFhO2lCQUNwQjthQUNGO1lBRUQseUJBQXlCLEVBQUUsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUU7WUFDeEUsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFdBQVc7b0JBQ1gsV0FBVyxFQUFFLG1CQUFtQjtvQkFDaEMsZUFBZSxFQUFFLHdCQUF3QjtvQkFDekMsSUFBSSxFQUFFLEVBQUU7aUJBQ1Q7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDdkMsT0FBTyxFQUFFLE1BQU07WUFDZixNQUFNLEVBQUUsV0FBVztZQUNuQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUN2RCxlQUFlLEVBQUUsd0JBQXdCO1NBQzFDLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNELFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLDBEQUF5QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLGFBQWEsQ0FBQztZQUNaLDZCQUE2QixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFO1lBQzlELGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxzQ0FBc0M7b0JBQ3RDLGVBQWUsRUFBRSx3QkFBd0I7b0JBQ3pDLGNBQWMsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7b0JBQ3RDLElBQUksRUFBRSxhQUFhO2lCQUNwQjtnQkFDRDtvQkFDRSxxQkFBcUI7b0JBQ3JCLGVBQWUsRUFBRSx3QkFBd0I7b0JBQ3pDLGNBQWMsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7b0JBQ3RDLElBQUksRUFBRSxhQUFhO2lCQUNwQjthQUNGO1lBRUQsb0JBQW9CLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFO1lBQzVGLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxJQUFJLEVBQUUsRUFBRTtpQkFDVDtnQkFDRDtvQkFDRSxxQkFBcUI7b0JBQ3JCLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLElBQUksRUFBRTt3QkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtxQkFDOUI7aUJBQ0Y7YUFDRjtZQUVELHlCQUF5QixFQUFFLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFO1lBQ3hFLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxXQUFXO29CQUNYLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ2hDLGVBQWUsRUFBRSx3QkFBd0I7b0JBQ3pDLElBQUksRUFBRSxFQUFFO2lCQUNUO2dCQUNEO29CQUNFLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ2hDLGVBQWUsRUFBRSx3QkFBd0I7b0JBQ3pDLElBQUksRUFBRSxHQUFHO2lCQUNWO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsTUFBTSxFQUFFLFdBQVc7WUFDbkIsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7WUFDdkQsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2FBQzlCO1lBQ0QsWUFBWSxFQUFFLEdBQUc7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JELFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLDBEQUF5QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMsT0FBNkMsRUFBRSxFQUFzRCxFQUFFLEVBQUU7WUFDbkosTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNQLGFBQWEsRUFBRTtvQkFDYjt3QkFDRSx3Q0FBd0M7d0JBQ3hDLGFBQWEsRUFBRSxNQUFNO3dCQUNyQixlQUFlLEVBQUUsb0JBQW9CO3dCQUNyQyxPQUFPLEVBQUUsa0JBQWtCO3dCQUMzQixxQkFBcUIsRUFBRSxPQUFPO3dCQUM5QixjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7d0JBQzNCLEtBQUssRUFBRSxVQUFVO3dCQUNqQixJQUFJLEVBQUUsYUFBYTtxQkFDcEI7b0JBQ0Q7d0JBQ0Usa0NBQWtDO3dCQUNsQyxhQUFhLEVBQUUsTUFBTTt3QkFDckIsZUFBZSxFQUFFLG9CQUFvQjt3QkFDckMsT0FBTyxFQUFFLGtCQUFrQjt3QkFDM0IscUJBQXFCLEVBQUUsT0FBTzt3QkFDOUIsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO3dCQUMzQixLQUFLLEVBQUUsVUFBVTt3QkFDakIsSUFBSSxFQUFFLGFBQWE7cUJBQ3BCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxPQUFvQyxFQUFFLEVBQTZDLEVBQUUsRUFBRTtZQUN4SCxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNQLGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxXQUFXLEVBQUUsb0JBQW9CO3dCQUNqQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO3FCQUN0QztvQkFDRDt3QkFDRSxXQUFXLEVBQUUsb0JBQW9CO3dCQUNqQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO3FCQUN0QztpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUF3QyxFQUFFLEVBQWtELEVBQUUsRUFBRTtZQUN0SSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssb0JBQW9CLEVBQUU7Z0JBQ25ELEVBQUUsQ0FBQyxJQUFJLEVBQUU7b0JBQ1AsU0FBUyxFQUFFO3dCQUNUOzRCQUNBLHlDQUF5Qzs0QkFDdkMsV0FBVyxFQUFFLG1CQUFtQjs0QkFDaEMsZUFBZSxFQUFFLG9CQUFvQjs0QkFDckMsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLElBQUksRUFBRSxFQUFFO3lCQUNUO3dCQUNEOzRCQUNBLHlDQUF5Qzs0QkFDdkMsV0FBVyxFQUFFLG1CQUFtQjs0QkFDaEMsZUFBZSxFQUFFLG9CQUFvQjs0QkFDckMsUUFBUSxFQUFFLE9BQU87NEJBQ2pCLElBQUksRUFBRSxHQUFHO3lCQUNWO3dCQUNEOzRCQUNBLHlDQUF5Qzs0QkFDdkMsV0FBVyxFQUFFLG1CQUFtQjs0QkFDaEMsZUFBZSxFQUFFLG9CQUFvQjs0QkFDckMsUUFBUSxFQUFFLEtBQUs7NEJBQ2YsSUFBSSxFQUFFLEdBQUc7eUJBQ1Y7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7aUJBQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLG9CQUFvQixFQUFFO2dCQUMxRCxFQUFFLENBQUMsSUFBSSxFQUFFO29CQUNQLFNBQVMsRUFBRTt3QkFDVDs0QkFDQSx5Q0FBeUM7NEJBQ3ZDLFdBQVcsRUFBRSxtQkFBbUI7NEJBQ2hDLGVBQWUsRUFBRSxvQkFBb0I7NEJBQ3JDLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixJQUFJLEVBQUUsRUFBRTt5QkFDVDt3QkFDRDs0QkFDQSxzQ0FBc0M7NEJBQ3BDLFdBQVcsRUFBRSxtQkFBbUI7NEJBQ2hDLGVBQWUsRUFBRSxvQkFBb0I7NEJBQ3JDLElBQUksRUFBRSxHQUFHOzRCQUNULFFBQVEsRUFBRSxLQUFLO3lCQUNoQjtxQkFDRjtpQkFDRixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsTUFBTSxFQUFFLFdBQVc7WUFDbkIsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7WUFDdkQsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHO1lBQzNELFlBQVksRUFBRSxHQUFHO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFELFFBQVE7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLDBEQUF5QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLGFBQWEsQ0FBQztZQUNaLDZCQUE2QixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFO1lBQzlELGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxzQ0FBc0M7b0JBQ3RDLGVBQWUsRUFBRSx3QkFBd0I7b0JBQ3pDLGNBQWMsRUFBRSxFQUFFO29CQUNsQixJQUFJLEVBQUUsYUFBYTtpQkFDcEI7Z0JBQ0Q7b0JBQ0Usc0JBQXNCO29CQUN0QixlQUFlLEVBQUUsd0JBQXdCO29CQUN6QyxjQUFjLEVBQUUsRUFBRTtvQkFDbEIsSUFBSSxFQUFFLFNBQVM7aUJBQ2hCO2FBQ0Y7WUFFRCxlQUFlLEVBQUU7Z0JBQ2Y7b0JBQ0UsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDdEM7Z0JBQ0Q7b0JBQ0UsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDdEM7YUFDRjtZQUVELHlCQUF5QixFQUFFLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFO1lBQ3hFLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxXQUFXLEVBQUUsbUJBQW1CO29CQUNoQyxlQUFlLEVBQUUsd0JBQXdCO29CQUN6QyxJQUFJLEVBQUUsR0FBRztpQkFDVjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN2QyxPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1lBQ25ELGdCQUFnQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNqRCxZQUFZLEVBQUUsR0FBRztTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxvREFBb0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRSxRQUFRO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSwwREFBeUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxhQUFhLENBQUM7WUFDWix5QkFBeUIsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDbEUsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ2hDLGVBQWUsRUFBRSx3QkFBd0I7b0JBQ3pDLElBQUksRUFBRSxHQUFHO2lCQUNWO2FBQ0Y7WUFFRCw2QkFBNkIsRUFBRSxFQUFFLGdCQUFnQixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUMvRSxhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0Usc0NBQXNDO29CQUN0QyxlQUFlLEVBQUUsd0JBQXdCO29CQUN6QyxjQUFjLEVBQUUsRUFBRTtvQkFDbEIsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPO1FBQ1AsTUFBTSxNQUFNLENBQ1YsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNoQixPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1lBQ25ELFdBQVcsRUFBRSxtQkFBbUI7U0FDakMsQ0FBQyxDQUNILENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFXSCxTQUFTLGFBQWEsQ0FBQyxPQUF5QjtJQUM5QyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDLE9BQTZDLEVBQUUsRUFBc0QsRUFBRSxFQUFFO1FBQ25KLElBQUksT0FBTyxDQUFDLDZCQUE2QixLQUFLLFNBQVMsRUFBRTtZQUN2RCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQW9DLEVBQUUsRUFBNkMsRUFBRSxFQUFFO1FBQ3hILElBQUksT0FBTyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtZQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsT0FBeUMsRUFBRSxFQUFrRCxFQUFFLEVBQUU7UUFDdkksSUFBSSxPQUFPLENBQUMseUJBQXlCLEtBQUssU0FBUyxFQUFFO1lBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUQ7UUFDRCxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkay1tb2NrJztcbmltcG9ydCB7IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4sIHRhZ3NNYXRjaCwgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiwgZGVzY3JpYmVUYWdzLCBkZXNjcmliZUxvYWRCYWxhbmNlcnMgfSBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMvbG9hZC1iYWxhbmNlcnMnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbmRlc2NyaWJlKCd1dGlsaXRpZXMnLCAoKSA9PiB7XG4gIHRlc3QoJ2Rlc2NyaWJlVGFncyB5aWVsZHMgdGFncyBieSBjaHVuaycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZVRhZ3M6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlc291cmNlQXJuIG9mIFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCkpIHtcbiAgICAgIHJlc291cmNlVGFnc1tyZXNvdXJjZUFybl0gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiByZXNvdXJjZUFybixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnbmFtZScsIFZhbHVlOiByZXNvdXJjZUFybiB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgICAgZXhwZWN0KF9wYXJhbXMuUmVzb3VyY2VBcm5zLmxlbmd0aCkudG9CZUxlc3NUaGFuT3JFcXVhbCgyMCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBfcGFyYW1zLlJlc291cmNlQXJucy5tYXAocmVzb3VyY2VBcm4gPT4gKHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogcmVzb3VyY2VBcm4sXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICduYW1lJywgVmFsdWU6IHJlc291cmNlQXJuIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlbGJ2MiA9IChhd2FpdCBtb2NrU0RLLmZvckVudmlyb25tZW50KCkpLnNkay5lbGJ2MigpO1xuXG4gICAgY29uc3QgcmVzb3VyY2VUYWdzT3V0OiBSZWNvcmQ8c3RyaW5nLCBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb24+ID0ge307XG4gICAgZm9yIGF3YWl0IChjb25zdCB0YWdEZXNjcmlwdGlvbiBvZiBkZXNjcmliZVRhZ3MoZWxidjIsIE9iamVjdC5rZXlzKHJlc291cmNlVGFncykpKSB7XG4gICAgICByZXNvdXJjZVRhZ3NPdXRbdGFnRGVzY3JpcHRpb24uUmVzb3VyY2VBcm4hXSA9IHRhZ0Rlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGV4cGVjdChyZXNvdXJjZVRhZ3NPdXQpLnRvRXF1YWwocmVzb3VyY2VUYWdzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiB0cmF2ZXJzZXMgcGFnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gYXJuOmxpc3RlbmVyLTAsIGFybjpsaXN0ZW5lci0xLCAuLi4sIGFybjpsaXN0ZW5lci05OVxuICAgIGNvbnN0IGxpc3RlbmVyQXJucyA9IFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bGlzdGVuZXItJHtpfWApO1xuICAgIGV4cGVjdChsaXN0ZW5lckFybnNbMF0pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci0wJyk7XG5cbiAgICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVMaXN0ZW5lcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IHBhcnNlSW50KF9wYXJhbXMuTWFya2VyID8/ICcwJyk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIDEwO1xuICAgICAgY29uc3Qgc2xpY2UgPSBsaXN0ZW5lckFybnMuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTGlzdGVuZXJzOiBzbGljZS5tYXAoYXJuID0+ICh7XG4gICAgICAgICAgTGlzdGVuZXJBcm46IGFybixcbiAgICAgICAgfSkpLFxuICAgICAgICBOZXh0TWFya2VyOiBlbmQgPCBsaXN0ZW5lckFybnMubGVuZ3RoID8gZW5kLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVsYnYyID0gKGF3YWl0IG1vY2tTREsuZm9yRW52aXJvbm1lbnQoKSkuc2RrLmVsYnYyKCk7XG5cbiAgICBjb25zdCBsaXN0ZW5lckFybnNGcm9tUGFnZXMgPSBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIGF3YWl0IChjb25zdCBsaXN0ZW5lciBvZiBkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuKGVsYnYyLCBbJ2Fybjpsb2FkLWJhbGFuY2VyJ10pKSB7XG4gICAgICBsaXN0ZW5lckFybnNGcm9tUGFnZXMucHVzaChsaXN0ZW5lci5MaXN0ZW5lckFybiEpO1xuICAgIH1cblxuICAgIGV4cGVjdChsaXN0ZW5lckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobGlzdGVuZXJBcm5zKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVzY3JpYmVMb2FkQmFsYW5jZXJzIHRyYXZlcnNlcyBwYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zID0gWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsb2FkLWJhbGFuY2VyLSR7aX1gKTtcbiAgICBleHBlY3QobG9hZEJhbGFuY2VyQXJuc1swXSkudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXItMCcpO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgICAgY29uc3Qgc3RhcnQgPSBwYXJzZUludChfcGFyYW1zLk1hcmtlciA/PyAnMCcpO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyAxMDtcbiAgICAgIGNvbnN0IHNsaWNlID0gbG9hZEJhbGFuY2VyQXJucy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMb2FkQmFsYW5jZXJzOiBzbGljZS5tYXAobG9hZEJhbGFuY2VyQXJuID0+ICh7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiBsb2FkQmFsYW5jZXJBcm4sXG4gICAgICAgIH0pKSxcbiAgICAgICAgTmV4dE1hcmtlcjogZW5kIDwgbG9hZEJhbGFuY2VyQXJucy5sZW5ndGggPyBlbmQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZWxidjIgPSAoYXdhaXQgbW9ja1NESy5mb3JFbnZpcm9ubWVudCgpKS5zZGsuZWxidjIoKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zRnJvbVBhZ2VzID0gKGF3YWl0IGRlc2NyaWJlTG9hZEJhbGFuY2VycyhlbGJ2Miwge30pKS5tYXAobCA9PiBsLkxvYWRCYWxhbmNlckFybiEpO1xuXG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobG9hZEJhbGFuY2VyQXJucyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0YWdzTWF0Y2gnLCAoKSA9PiB7XG4gICAgdGVzdCgnYWxsIHRhZ3MgbWF0Y2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdleHRyYSB0YWdzIG1hdGNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIHsgS2V5OiAnb3RoZXInLCBWYWx1ZTogJ3RhZzInIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ25vIHRhZ3MgbWF0Y2hlcyBubyB0YWdzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW10sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCBbXSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdvbmUgdGFnIG1hdGNoZXMgb2Ygc2V2ZXJhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ290aGVyJywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndW5kZWZpbmVkIHRhZyBkb2VzIG5vdCBlcnJvcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdvdGhlcicsIHZhbHVlOiAndmFsdWUnIH0sXG4gICAgICBdO1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCByZXF1aXJlZFRhZ3MpKS50b0VxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIG1hdGNoZXMgYXJlIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlc2NyaWJlVGFnc0V4cGVjdGVkOiB7IFJlc291cmNlQXJuczogWydhcm46bG9hZC1iYWxhbmNlcjEnLCAnYXJuOmxvYWQtYmFsYW5jZXIyJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIFRhZ3M6IFtcbiAgICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9NdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QocmVzdWx0LmlwQWRkcmVzc1R5cGUpLnRvRXF1YWwoJ2lwdjQnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckFybikudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXIxJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQpLnRvRXF1YWwoJ1oxMjM0Jyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJEbnNOYW1lKS50b0VxdWFsKCdkbnMuZXhhbXBsZS5jb20nKTtcbiAgICBleHBlY3QocmVzdWx0LnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICAgIGV4cGVjdChyZXN1bHQudnBjSWQpLnRvRXF1YWwoJ3ZwYy0xMjM0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IHRhZ3MnLCBhc3luYygpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczEuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMyLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ6IHsgUmVzb3VyY2VBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMScsICdhcm46bG9hZC1iYWxhbmNlcjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICAgIHsgS2V5OiAnc2Vjb25kJywgVmFsdWU6ICd0YWcyJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdzZWNvbmQnLCB2YWx1ZTogJ3RhZzInIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJBcm4pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyMicpO1xuICB9KTtcblxuICB0ZXN0KCdmaWx0ZXJzIGJ5IHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICB9KTtcblxuICAgIGV4cGVjdChsb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyQXJuKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlcjInKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgbGlzdGVuZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW10sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICAgICAgbGlzdGVuZXJQcm90b2NvbDogY3hzY2hlbWEuTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5IVFRQUyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VyIGxpc3RlbmVycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lcjInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDgwLFxuICAgICAgICBsaXN0ZW5lclByb3RvY29sOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLkhUVFAsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTXVsdGlwbGUgbG9hZCBiYWxhbmNlciBsaXN0ZW5lcnMvaSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IGxpc3RlbmVyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExpc3RlbmVyQXJuczogWydhcm46bGlzdGVuZXItYXJuJ10gfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybiddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnLCAnc2ctMjM0NSddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4nLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lckFybikudG9FcXVhbCgnYXJuOmxpc3RlbmVyLWFybicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnLCAnc2ctMjM0NSddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnIH0sXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgUG9ydDogODAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4xJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg4MCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdGFncycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiB1bmRlZmluZWQgfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBoYXZlIHRoZSB3cm9uZyB0YWdzXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCcsICdzZy0yMzQ1J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTM0NTYnLCAnc2ctNDU2NyddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZVRhZ3NFeHBlY3RlZDogeyBSZXNvdXJjZUFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmVcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjInLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJQb3J0OiA5OTksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTM0NTYnLCAnc2ctNDU2NyddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgbGlzdGVuZXIgcG9ydCBhbmQgcHJvdG8nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKHt9KTtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2VyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXZlIGFueSBtYXRjaGluZyBsaXN0ZW5lcnNcbiAgICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBTaG91bGQgaGF2ZSBhIG1hdGNoaW5nIGxpc3RlbmVyXG4gICAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMjM0NSddLFxuICAgICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZVRhZ3MnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlVGFnc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlVGFnc091dHB1dD4pID0+IHtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTGlzdGVuZXJzJywgKHBhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLkxvYWRCYWxhbmNlckFybiA9PT0gJ2Fybjpsb2FkLWJhbGFuY2VyMScpIHtcbiAgICAgICAgY2IobnVsbCwge1xuICAgICAgICAgIExpc3RlbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgd3JvbmcgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHByb3RvY29sLCByaWdodCBwb3J0ID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjMnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFBTJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHJpZ2h0IHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjQnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5Mb2FkQmFsYW5jZXJBcm4gPT09ICdhcm46bG9hZC1iYWxhbmNlcjInKSB7XG4gICAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgICBMaXN0ZW5lcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHdyb25nIHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjUnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBSaWdodCBwb3J0LCByaWdodCBwcm90b2NvbCA9PiBtYXRjaFxuICAgICAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm42JyxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IobmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0nYCksIHt9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW3sga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9XSxcbiAgICAgIGxpc3RlbmVyUHJvdG9jb2w6IGN4c2NoZW1hLkxvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuVENQLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuNicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTIzNDUnXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2ZpbHRlcnMgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuczogdW5kZWZpbmVkIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZSBoYXMgd3JvbmcgdHlwZSA9PiBubyBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gUmlnaHQgdHlwZSA9PiBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGlzIHdyb25nIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMaXN0ZW5lckFybnM6IFsnYXJuOmxpc3RlbmVyLWFybjEnXSB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmUgaGFzIHdyb25nIHR5cGUgPT4gbm8gbWF0Y2hcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogW10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgICAgICAgbGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvbm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGZvdW5kL2kpO1xuICB9KTtcbn0pO1xuXG5pbnRlcmZhY2UgQUxCTG9va3VwT3B0aW9ucyB7XG4gIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkPzogYW55O1xuICBsb2FkQmFsYW5jZXJzPzogYXdzLkVMQnYyLkxvYWRCYWxhbmNlcnM7XG4gIGRlc2NyaWJlVGFnc0V4cGVjdGVkPzogYW55O1xuICB0YWdEZXNjcmlwdGlvbnM/OiBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb25zO1xuICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkPzogYW55O1xuICBsaXN0ZW5lcnM/OiBhd3MuRUxCdjIuTGlzdGVuZXJzO1xufVxuXG5mdW5jdGlvbiBtb2NrQUxCTG9va3VwKG9wdGlvbnM6IEFMQkxvb2t1cE9wdGlvbnMpIHtcbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IExvYWRCYWxhbmNlcnM6IG9wdGlvbnMubG9hZEJhbGFuY2VycyB9KTtcbiAgfSk7XG5cbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlVGFnc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVUYWdzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IFRhZ0Rlc2NyaXB0aW9uczogb3B0aW9ucy50YWdEZXNjcmlwdGlvbnMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICBpZiAob3B0aW9ucy5kZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgTGlzdGVuZXJzOiBvcHRpb25zLmxpc3RlbmVycyB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -19,7 +19,7 @@ beforeEach(async () => {
|
|
|
19
19
|
.mockImplementation(() => ({ Stacks: [] })),
|
|
20
20
|
};
|
|
21
21
|
sdkProvider.stubCloudFormation(cfnMocks);
|
|
22
|
-
cfn = (await sdkProvider.forEnvironment()).cloudFormation();
|
|
22
|
+
cfn = (await sdkProvider.forEnvironment()).sdk.cloudFormation();
|
|
23
23
|
});
|
|
24
24
|
test('A non-existent stack pretends to have an empty template', async () => {
|
|
25
25
|
// WHEN
|
|
@@ -141,4 +141,4 @@ function makeParams(defaultValue, hasPrevValue, override) {
|
|
|
141
141
|
const stackParams = params.updateExisting({ [PARAM]: override ? OVERRIDE : undefined }, prevParams);
|
|
142
142
|
return { apiParameters: stackParams.apiParameters, changed: stackParams.hasChanges(prevParams) };
|
|
143
143
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkZm9ybWF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0Q0FBeUQ7QUFDekQsc0VBQTRGO0FBQzVGLHlDQUFnRjtBQUVoRixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7QUFDN0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQzdCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztBQUUvQixNQUFNLFlBQVksR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3ZFLE1BQU0sWUFBWSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVyRSxJQUFJLFdBQTRCLENBQUM7QUFDakMsSUFBSSxRQUErRCxDQUFDO0FBQ3BFLElBQUksR0FBdUIsQ0FBQztBQUM1QixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDcEIsV0FBVyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0lBRXBDLFFBQVEsR0FBRztRQUNULGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLGtCQUFrQjthQUNqQixrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUMsQ0FBQztJQUNGLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUNoRCxHQUFHLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQzlELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3pFLE9BQU87SUFDUCxNQUFNLEtBQUssR0FBRyxNQUFNLG9DQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFN0QsT0FBTztJQUNQLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxJQUFJLENBQUM7SUFDUixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDZCxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFDYixDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7SUFDYixDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7Q0FDYixDQUFDLENBQUMsMEdBQTBHLEVBQzNHLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRCxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDN0IsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVMLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7SUFDckQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO0lBQzdELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM3QyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDN0IsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3RkFBd0YsRUFBRSxHQUFHLEVBQUU7SUFDbEcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzdDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDN0IsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw4RUFBOEUsRUFBRSxHQUFHLEVBQUU7SUFDeEYsTUFBTSxNQUFNLEdBQUcsbUNBQWtCLENBQUMsWUFBWSxDQUFDO1FBQzdDLFVBQVUsRUFBRTtZQUNWLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxPQUFPLEVBQUUsV0FBVzthQUNyQjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFFdkMsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbEYsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx5R0FBeUcsRUFBRSxHQUFHLEVBQUU7SUFDbkgsTUFBTSxNQUFNLEdBQUcsbUNBQWtCLENBQUMsWUFBWSxDQUFDO1FBQzdDLFVBQVUsRUFBRTtZQUNWLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxPQUFPLEVBQUUsV0FBVztnQkFDcEIsV0FBVyxFQUFFLFVBQVUsK0JBQXNCLEVBQUU7YUFDaEQ7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRXZDLCtCQUErQjtJQUMvQixNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWxGLDZEQUE2RDtJQUM3RCxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEcsK0NBQStDO0lBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7SUFDaEQsTUFBTSxNQUFNLEdBQUcsbUNBQWtCLENBQUMsWUFBWSxDQUFDO1FBQzdDLFVBQVUsRUFBRTtZQUNWLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtTQUN4QztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3JGLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO0tBQzVDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtJQUMxRCxrRUFBa0U7SUFDbEUsbUVBQW1FO0lBQ25FLDZEQUE2RDtJQUM3RCxNQUFNLE1BQU0sR0FBRyxtQ0FBa0IsQ0FBQyxZQUFZLENBQUM7UUFDN0MsVUFBVSxFQUFFO1lBQ1YsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1NBQ3hDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3RFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFO0tBQy9DLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDBFQUEwRSxFQUFFLEdBQUcsRUFBRTtJQUNwRixRQUFRO0lBQ1IsTUFBTSxjQUFjLEdBQUcsbUNBQWtCLENBQUMsWUFBWSxDQUFDO1FBQ3JELFVBQVUsRUFBRTtZQUNWLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtTQUN4QztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWpELE9BQU87SUFDUCxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLFVBQVUsQ0FBQyxZQUFxQixFQUFFLFlBQXFCLEVBQUUsUUFBaUI7SUFDakYsTUFBTSxNQUFNLEdBQUcsbUNBQWtCLENBQUMsWUFBWSxDQUFDO1FBQzdDLFVBQVUsRUFBRTtZQUNWLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQzVDO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBMkIsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDbkcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNTTVBBUkFNX05PX0lOVkFMSURBVEUgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgVGVtcGxhdGVQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vLi4vbGliL2FwaS91dGlsL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IE1vY2tlZE9iamVjdCwgTW9ja1Nka1Byb3ZpZGVyLCBTeW5jSGFuZGxlclN1YnNldE9mIH0gZnJvbSAnLi9tb2NrLXNkayc7XG5cbmNvbnN0IFBBUkFNID0gJ1RoZVBhcmFtZXRlcic7XG5jb25zdCBERUZBVUxUID0gJ1RoZURlZmF1bHQnO1xuY29uc3QgT1ZFUlJJREUgPSAnVGhlT3ZlcnJpZGUnO1xuXG5jb25zdCBVU0VfT1ZFUlJJREUgPSB7IFBhcmFtZXRlcktleTogUEFSQU0sIFBhcmFtZXRlclZhbHVlOiBPVkVSUklERSB9O1xuY29uc3QgVVNFX1BSRVZJT1VTID0geyBQYXJhbWV0ZXJLZXk6IFBBUkFNLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH07XG5cbmxldCBzZGtQcm92aWRlcjogTW9ja1Nka1Byb3ZpZGVyO1xubGV0IGNmbk1vY2tzOiBNb2NrZWRPYmplY3Q8U3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuQ2xvdWRGb3JtYXRpb24+PjtcbmxldCBjZm46IEFXUy5DbG91ZEZvcm1hdGlvbjtcbmJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICBzZGtQcm92aWRlciA9IG5ldyBNb2NrU2RrUHJvdmlkZXIoKTtcblxuICBjZm5Nb2NrcyA9IHtcbiAgICBkZXNjcmliZVN0YWNrczogamVzdC5mbigpXG4gICAgICAvLyBObyBzdGFja3MgZXhpc3RcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHsgU3RhY2tzOiBbXSB9KSksXG4gIH07XG4gIHNka1Byb3ZpZGVyLnN0dWJDbG91ZEZvcm1hdGlvbihjZm5Nb2NrcyBhcyBhbnkpO1xuICBjZm4gPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoKSkuY2xvdWRGb3JtYXRpb24oKTtcbn0pO1xuXG50ZXN0KCdBIG5vbi1leGlzdGVudCBzdGFjayBwcmV0ZW5kcyB0byBoYXZlIGFuIGVtcHR5IHRlbXBsYXRlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IHN0YWNrID0gYXdhaXQgQ2xvdWRGb3JtYXRpb25TdGFjay5sb29rdXAoY2ZuLCAnRHVtbXknKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChhd2FpdCBzdGFjay50ZW1wbGF0ZSgpKS50b0VxdWFsKHt9KTtcbn0pO1xuXG50ZXN0LmVhY2goW1xuICBbZmFsc2UsIGZhbHNlXSxcbiAgW2ZhbHNlLCB0cnVlXSxcbiAgW3RydWUsIGZhbHNlXSxcbiAgW3RydWUsIHRydWVdLFxuXSkoJ2dpdmVuIG92ZXJyaWRlLCBhbHdheXMgdXNlIHRoZSBvdmVycmlkZSAocGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQ6ICVwLCBwYXJhbWV0ZXIgcHJldmlvdXNseSBzdXBwbGllZDogJXApJyxcbiAgKGhhdmVEZWZhdWx0LCBoYXZlUHJldmlvdXMpID0+IHtcbiAgICBleHBlY3QobWFrZVBhcmFtcyhoYXZlRGVmYXVsdCwgaGF2ZVByZXZpb3VzLCB0cnVlKSkudG9FcXVhbCh7XG4gICAgICBhcGlQYXJhbWV0ZXJzOiBbVVNFX09WRVJSSURFXSxcbiAgICAgIGNoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH0pO1xuXG50ZXN0KCdubyBkZWZhdWx0LCBubyBwcmV2LCBubyBvdmVycmlkZSA9PiBlcnJvcicsICgpID0+IHtcbiAgZXhwZWN0KCgpID0+IG1ha2VQYXJhbXMoZmFsc2UsIGZhbHNlLCBmYWxzZSkpLnRvVGhyb3coL21pc3NpbmcgYSB2YWx1ZTogVGhlUGFyYW1ldGVyLyk7XG59KTtcblxudGVzdCgnbm8gZGVmYXVsdCwgeWVzIHByZXYsIG5vIG92ZXJyaWRlID0+IHVzZSBwcmV2aW91cycsICgpID0+IHtcbiAgZXhwZWN0KG1ha2VQYXJhbXMoZmFsc2UsIHRydWUsIGZhbHNlKSkudG9FcXVhbCh7XG4gICAgYXBpUGFyYW1ldGVyczogW1VTRV9QUkVWSU9VU10sXG4gICAgY2hhbmdlZDogZmFsc2UsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQsIG5vIHByZXYsIG5vIG92ZXJyaWRlID0+IGVtcHR5IHBhcmFtIHNldCAoYW5kIG9idmlvdXNseSBjaGFuZ2VzIHRvIGJlIGFwcGxpZWQpJywgKCkgPT4ge1xuICBleHBlY3QobWFrZVBhcmFtcyh0cnVlLCBmYWxzZSwgZmFsc2UpKS50b0VxdWFsKHtcbiAgICBhcGlQYXJhbWV0ZXJzOiBbXSxcbiAgICBjaGFuZ2VkOiB0cnVlLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdkZWZhdWx0LCBwcmV2LCBubyBvdmVycmlkZSA9PiB1c2UgcHJldmlvdXMnLCAoKSA9PiB7XG4gIGV4cGVjdChtYWtlUGFyYW1zKHRydWUsIHRydWUsIGZhbHNlKSkudG9FcXVhbCh7XG4gICAgYXBpUGFyYW1ldGVyczogW1VTRV9QUkVWSU9VU10sXG4gICAgY2hhbmdlZDogZmFsc2UsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2lmIGEgcGFyYW1ldGVyIGlzIHJldHJpZXZlZCBmcm9tIFNTTSwgdGhlIHBhcmFtZXRlcnMgYWx3YXlzIGNvdW50IGFzIGNoYW5nZWQnLCAoKSA9PiB7XG4gIGNvbnN0IHBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIEZvbzoge1xuICAgICAgICBUeXBlOiAnQVdTOjpTU006OlBhcmFtZXRlcjo6TmFtZScsXG4gICAgICAgIERlZmF1bHQ6ICcvU29tZS9LZXknLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3Qgb2xkVmFsdWVzID0geyBGb286ICcvU29tZS9LZXknIH07XG5cbiAgLy8gSWYgd2UgZG9uJ3QgcGFzcyBhIG5ldyB2YWx1ZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHt9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbCgnc3NtJyk7XG5cbiAgLy8gSWYgd2UgZG8gcGFzcyBhIG5ldyB2YWx1ZSBidXQgaXQncyB0aGUgc2FtZSBhcyB0aGUgb2xkIG9uZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgRm9vOiAnL1NvbWUvS2V5JyB9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbCgnc3NtJyk7XG59KTtcblxudGVzdCgnaWYgYSBwYXJhbWV0ZXIgaXMgcmV0cmlldmVkIGZyb20gU1NNLCB0aGUgcGFyYW1ldGVycyBkb2VzbnQgY291bnQgYXMgY2hhbmdlZCBpZiBpdCBoYXMgdGhlIG1hZ2ljIG1hcmtlcicsICgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNTTTo6UGFyYW1ldGVyOjpOYW1lJyxcbiAgICAgICAgRGVmYXVsdDogJy9Tb21lL0tleScsXG4gICAgICAgIERlc2NyaXB0aW9uOiBgYmxhYmxhICR7U1NNUEFSQU1fTk9fSU5WQUxJREFURX1gLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3Qgb2xkVmFsdWVzID0geyBGb286ICcvU29tZS9LZXknIH07XG5cbiAgLy8gSWYgd2UgZG9uJ3QgcGFzcyBhIG5ldyB2YWx1ZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHt9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbChmYWxzZSk7XG5cbiAgLy8gSWYgd2UgZG8gcGFzcyBhIG5ldyB2YWx1ZSBidXQgaXQncyB0aGUgc2FtZSBhcyB0aGUgb2xkIG9uZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgRm9vOiAnL1NvbWUvS2V5JyB9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbChmYWxzZSk7XG5cbiAgLy8gSWYgd2UgZG8gcGFzcyBhIG5ldyB2YWx1ZSBhbmQgaXQncyBkaWZmZXJlbnRcbiAgZXhwZWN0KHBhcmFtcy51cGRhdGVFeGlzdGluZyh7IEZvbzogJy9PVEhFUi9LZXknIH0sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKHRydWUpO1xufSk7XG5cbnRlc3QoJ2VtcHR5IHN0cmluZyBpcyBhIHZhbGlkIHVwZGF0ZSB2YWx1ZScsICgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7IFR5cGU6ICdTdHJpbmcnLCBEZWZhdWx0OiAnRm9vJyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBGb286ICcnIH0sIHsgRm9vOiAnVGhpc0lzT2xkJyB9KS5hcGlQYXJhbWV0ZXJzKS50b0VxdWFsKFtcbiAgICB7IFBhcmFtZXRlcktleTogJ0ZvbycsIFBhcmFtZXRlclZhbHVlOiAnJyB9LFxuICBdKTtcbn0pO1xuXG50ZXN0KCd1bmtub3duIHBhcmFtZXRlciBpbiBvdmVycmlkZXMsIHBhc3MgaXQgYW55d2F5JywgKCkgPT4ge1xuICAvLyBOb3Qgc3VyZSBpZiB3ZSByZWFsbHkgd2FudCB0aGlzLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIG5pY2VcbiAgLy8gdG8gbm90IHBhc3MgcGFyYW1ldGVycyB0aGF0IGFyZW4ndCBleHBlY3RlZCwgZ2l2ZW4gdGhhdCBDRk4gd2lsbFxuICAvLyBqdXN0IGVycm9yIG91dC4gQnV0IG1heWJlIHdlIHdhbnQgdG8gYmUgd2FybmVkIG9mIHR5cG9zLi4uXG4gIGNvbnN0IHBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIEZvbzogeyBUeXBlOiAnU3RyaW5nJywgRGVmYXVsdDogJ0ZvbycgfSxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgQmFyOiAnQmFyJyB9LCB7fSkuYXBpUGFyYW1ldGVycykudG9FcXVhbChbXG4gICAgeyBQYXJhbWV0ZXJLZXk6ICdCYXInLCBQYXJhbWV0ZXJWYWx1ZTogJ0JhcicgfSxcbiAgXSk7XG59KTtcblxudGVzdCgnaWYgYW4gdW5zdXBwbGllZCBwYXJhbWV0ZXIgcmV2ZXJ0cyB0byBpdHMgZGVmYXVsdCwgaXQgY2FuIHN0aWxsIGJlIGRpcnR5JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCB0ZW1wbGF0ZVBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIEZvbzogeyBUeXBlOiAnU3RyaW5nJywgRGVmYXVsdDogJ0ZvbycgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IHN0YWNrUGFyYW1zID0gdGVtcGxhdGVQYXJhbXMuc3VwcGx5QWxsKHt9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzdGFja1BhcmFtcy5oYXNDaGFuZ2VzKHsgRm9vOiAnTm9uU3RhbmRhcmQnIH0pKS50b0VxdWFsKHRydWUpO1xuICBleHBlY3Qoc3RhY2tQYXJhbXMuaGFzQ2hhbmdlcyh7IEZvbzogJ0ZvbycgfSkpLnRvRXF1YWwoZmFsc2UpO1xufSk7XG5cbmZ1bmN0aW9uIG1ha2VQYXJhbXMoZGVmYXVsdFZhbHVlOiBib29sZWFuLCBoYXNQcmV2VmFsdWU6IGJvb2xlYW4sIG92ZXJyaWRlOiBib29sZWFuKSB7XG4gIGNvbnN0IHBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIFtQQVJBTV06IHtcbiAgICAgICAgVHlwZTogJ1N0cmluZycsXG4gICAgICAgIERlZmF1bHQ6IGRlZmF1bHRWYWx1ZSA/IERFRkFVTFQgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBwcmV2UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gaGFzUHJldlZhbHVlID8geyBbUEFSQU1dOiAnRm9vJyB9IDoge307XG4gIGNvbnN0IHN0YWNrUGFyYW1zID0gcGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgW1BBUkFNXTogb3ZlcnJpZGUgPyBPVkVSUklERSA6IHVuZGVmaW5lZCB9LCBwcmV2UGFyYW1zKTtcblxuICByZXR1cm4geyBhcGlQYXJhbWV0ZXJzOiBzdGFja1BhcmFtcy5hcGlQYXJhbWV0ZXJzLCBjaGFuZ2VkOiBzdGFja1BhcmFtcy5oYXNDaGFuZ2VzKHByZXZQYXJhbXMpIH07XG59XG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkZm9ybWF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0Q0FBeUQ7QUFDekQsc0VBQTRGO0FBQzVGLHlDQUFnRjtBQUVoRixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7QUFDN0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQzdCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztBQUUvQixNQUFNLFlBQVksR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3ZFLE1BQU0sWUFBWSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVyRSxJQUFJLFdBQTRCLENBQUM7QUFDakMsSUFBSSxRQUErRCxDQUFDO0FBQ3BFLElBQUksR0FBdUIsQ0FBQztBQUM1QixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDcEIsV0FBVyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0lBRXBDLFFBQVEsR0FBRztRQUNULGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLGtCQUFrQjthQUNqQixrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUMsQ0FBQztJQUNGLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUNoRCxHQUFHLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNsRSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx5REFBeUQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN6RSxPQUFPO0lBQ1AsTUFBTSxLQUFLLEdBQUcsTUFB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QVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRSxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxVQUFVLENBQUMsWUFBcUIsRUFBRSxZQUFxQixFQUFFLFFBQWlCO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLG1DQUFrQixDQUFDLFlBQVksQ0FBQztRQUM3QyxVQUFVLEVBQUU7WUFDVixDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNQLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUzthQUM1QztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQTJCLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXBHLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0FBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTU01QQVJBTV9OT19JTlZBTElEQVRFIH0gZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uU3RhY2ssIFRlbXBsYXRlUGFyYW1ldGVycyB9IGZyb20gJy4uLy4uL2xpYi9hcGkvdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBNb2NrZWRPYmplY3QsIE1vY2tTZGtQcm92aWRlciwgU3luY0hhbmRsZXJTdWJzZXRPZiB9IGZyb20gJy4vbW9jay1zZGsnO1xuXG5jb25zdCBQQVJBTSA9ICdUaGVQYXJhbWV0ZXInO1xuY29uc3QgREVGQVVMVCA9ICdUaGVEZWZhdWx0JztcbmNvbnN0IE9WRVJSSURFID0gJ1RoZU92ZXJyaWRlJztcblxuY29uc3QgVVNFX09WRVJSSURFID0geyBQYXJhbWV0ZXJLZXk6IFBBUkFNLCBQYXJhbWV0ZXJWYWx1ZTogT1ZFUlJJREUgfTtcbmNvbnN0IFVTRV9QUkVWSU9VUyA9IHsgUGFyYW1ldGVyS2V5OiBQQVJBTSwgVXNlUHJldmlvdXNWYWx1ZTogdHJ1ZSB9O1xuXG5sZXQgc2RrUHJvdmlkZXI6IE1vY2tTZGtQcm92aWRlcjtcbmxldCBjZm5Nb2NrczogTW9ja2VkT2JqZWN0PFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkNsb3VkRm9ybWF0aW9uPj47XG5sZXQgY2ZuOiBBV1MuQ2xvdWRGb3JtYXRpb247XG5iZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgc2RrUHJvdmlkZXIgPSBuZXcgTW9ja1Nka1Byb3ZpZGVyKCk7XG5cbiAgY2ZuTW9ja3MgPSB7XG4gICAgZGVzY3JpYmVTdGFja3M6IGplc3QuZm4oKVxuICAgICAgLy8gTm8gc3RhY2tzIGV4aXN0XG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7IFN0YWNrczogW10gfSkpLFxuICB9O1xuICBzZGtQcm92aWRlci5zdHViQ2xvdWRGb3JtYXRpb24oY2ZuTW9ja3MgYXMgYW55KTtcbiAgY2ZuID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KCkpLnNkay5jbG91ZEZvcm1hdGlvbigpO1xufSk7XG5cbnRlc3QoJ0Egbm9uLWV4aXN0ZW50IHN0YWNrIHByZXRlbmRzIHRvIGhhdmUgYW4gZW1wdHkgdGVtcGxhdGUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3Qgc3RhY2sgPSBhd2FpdCBDbG91ZEZvcm1hdGlvblN0YWNrLmxvb2t1cChjZm4sICdEdW1teScpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGF3YWl0IHN0YWNrLnRlbXBsYXRlKCkpLnRvRXF1YWwoe30pO1xufSk7XG5cbnRlc3QuZWFjaChbXG4gIFtmYWxzZSwgZmFsc2VdLFxuICBbZmFsc2UsIHRydWVdLFxuICBbdHJ1ZSwgZmFsc2VdLFxuICBbdHJ1ZSwgdHJ1ZV0sXG5dKSgnZ2l2ZW4gb3ZlcnJpZGUsIGFsd2F5cyB1c2UgdGhlIG92ZXJyaWRlIChwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdDogJXAsIHBhcmFtZXRlciBwcmV2aW91c2x5IHN1cHBsaWVkOiAlcCknLFxuICAoaGF2ZURlZmF1bHQsIGhhdmVQcmV2aW91cykgPT4ge1xuICAgIGV4cGVjdChtYWtlUGFyYW1zKGhhdmVEZWZhdWx0LCBoYXZlUHJldmlvdXMsIHRydWUpKS50b0VxdWFsKHtcbiAgICAgIGFwaVBhcmFtZXRlcnM6IFtVU0VfT1ZFUlJJREVdLFxuICAgICAgY2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbnRlc3QoJ25vIGRlZmF1bHQsIG5vIHByZXYsIG5vIG92ZXJyaWRlID0+IGVycm9yJywgKCkgPT4ge1xuICBleHBlY3QoKCkgPT4gbWFrZVBhcmFtcyhmYWxzZSwgZmFsc2UsIGZhbHNlKSkudG9UaHJvdygvbWlzc2luZyBhIHZhbHVlOiBUaGVQYXJhbWV0ZXIvKTtcbn0pO1xuXG50ZXN0KCdubyBkZWZhdWx0LCB5ZXMgcHJldiwgbm8gb3ZlcnJpZGUgPT4gdXNlIHByZXZpb3VzJywgKCkgPT4ge1xuICBleHBlY3QobWFrZVBhcmFtcyhmYWxzZSwgdHJ1ZSwgZmFsc2UpKS50b0VxdWFsKHtcbiAgICBhcGlQYXJhbWV0ZXJzOiBbVVNFX1BSRVZJT1VTXSxcbiAgICBjaGFuZ2VkOiBmYWxzZSxcbiAgfSk7XG59KTtcblxudGVzdCgnZGVmYXVsdCwgbm8gcHJldiwgbm8gb3ZlcnJpZGUgPT4gZW1wdHkgcGFyYW0gc2V0IChhbmQgb2J2aW91c2x5IGNoYW5nZXMgdG8gYmUgYXBwbGllZCknLCAoKSA9PiB7XG4gIGV4cGVjdChtYWtlUGFyYW1zKHRydWUsIGZhbHNlLCBmYWxzZSkpLnRvRXF1YWwoe1xuICAgIGFwaVBhcmFtZXRlcnM6IFtdLFxuICAgIGNoYW5nZWQ6IHRydWUsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQsIHByZXYsIG5vIG92ZXJyaWRlID0+IHVzZSBwcmV2aW91cycsICgpID0+IHtcbiAgZXhwZWN0KG1ha2VQYXJhbXModHJ1ZSwgdHJ1ZSwgZmFsc2UpKS50b0VxdWFsKHtcbiAgICBhcGlQYXJhbWV0ZXJzOiBbVVNFX1BSRVZJT1VTXSxcbiAgICBjaGFuZ2VkOiBmYWxzZSxcbiAgfSk7XG59KTtcblxudGVzdCgnaWYgYSBwYXJhbWV0ZXIgaXMgcmV0cmlldmVkIGZyb20gU1NNLCB0aGUgcGFyYW1ldGVycyBhbHdheXMgY291bnQgYXMgY2hhbmdlZCcsICgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNTTTo6UGFyYW1ldGVyOjpOYW1lJyxcbiAgICAgICAgRGVmYXVsdDogJy9Tb21lL0tleScsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBvbGRWYWx1ZXMgPSB7IEZvbzogJy9Tb21lL0tleScgfTtcblxuICAvLyBJZiB3ZSBkb24ndCBwYXNzIGEgbmV3IHZhbHVlXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3Rpbmcoe30sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKCdzc20nKTtcblxuICAvLyBJZiB3ZSBkbyBwYXNzIGEgbmV3IHZhbHVlIGJ1dCBpdCdzIHRoZSBzYW1lIGFzIHRoZSBvbGQgb25lXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBGb286ICcvU29tZS9LZXknIH0sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKCdzc20nKTtcbn0pO1xuXG50ZXN0KCdpZiBhIHBhcmFtZXRlciBpcyByZXRyaWV2ZWQgZnJvbSBTU00sIHRoZSBwYXJhbWV0ZXJzIGRvZXNudCBjb3VudCBhcyBjaGFuZ2VkIGlmIGl0IGhhcyB0aGUgbWFnaWMgbWFya2VyJywgKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBUZW1wbGF0ZVBhcmFtZXRlcnMuZnJvbVRlbXBsYXRlKHtcbiAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICBGb286IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U1NNOjpQYXJhbWV0ZXI6Ok5hbWUnLFxuICAgICAgICBEZWZhdWx0OiAnL1NvbWUvS2V5JyxcbiAgICAgICAgRGVzY3JpcHRpb246IGBibGFibGEgJHtTU01QQVJBTV9OT19JTlZBTElEQVRFfWAsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBvbGRWYWx1ZXMgPSB7IEZvbzogJy9Tb21lL0tleScgfTtcblxuICAvLyBJZiB3ZSBkb24ndCBwYXNzIGEgbmV3IHZhbHVlXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3Rpbmcoe30sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKGZhbHNlKTtcblxuICAvLyBJZiB3ZSBkbyBwYXNzIGEgbmV3IHZhbHVlIGJ1dCBpdCdzIHRoZSBzYW1lIGFzIHRoZSBvbGQgb25lXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBGb286ICcvU29tZS9LZXknIH0sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKGZhbHNlKTtcblxuICAvLyBJZiB3ZSBkbyBwYXNzIGEgbmV3IHZhbHVlIGFuZCBpdCdzIGRpZmZlcmVudFxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgRm9vOiAnL09USEVSL0tleScgfSwgb2xkVmFsdWVzKS5oYXNDaGFuZ2VzKG9sZFZhbHVlcykpLnRvRXF1YWwodHJ1ZSk7XG59KTtcblxudGVzdCgnZW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgdXBkYXRlIHZhbHVlJywgKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBUZW1wbGF0ZVBhcmFtZXRlcnMuZnJvbVRlbXBsYXRlKHtcbiAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICBGb286IHsgVHlwZTogJ1N0cmluZycsIERlZmF1bHQ6ICdGb28nIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgZXhwZWN0KHBhcmFtcy51cGRhdGVFeGlzdGluZyh7IEZvbzogJycgfSwgeyBGb286ICdUaGlzSXNPbGQnIH0pLmFwaVBhcmFtZXRlcnMpLnRvRXF1YWwoW1xuICAgIHsgUGFyYW1ldGVyS2V5OiAnRm9vJywgUGFyYW1ldGVyVmFsdWU6ICcnIH0sXG4gIF0pO1xufSk7XG5cbnRlc3QoJ3Vua25vd24gcGFyYW1ldGVyIGluIG92ZXJyaWRlcywgcGFzcyBpdCBhbnl3YXknLCAoKSA9PiB7XG4gIC8vIE5vdCBzdXJlIGlmIHdlIHJlYWxseSB3YW50IHRoaXMuIEl0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgbmljZVxuICAvLyB0byBub3QgcGFzcyBwYXJhbWV0ZXJzIHRoYXQgYXJlbid0IGV4cGVjdGVkLCBnaXZlbiB0aGF0IENGTiB3aWxsXG4gIC8vIGp1c3QgZXJyb3Igb3V0LiBCdXQgbWF5YmUgd2Ugd2FudCB0byBiZSB3YXJuZWQgb2YgdHlwb3MuLi5cbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7IFR5cGU6ICdTdHJpbmcnLCBEZWZhdWx0OiAnRm9vJyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBCYXI6ICdCYXInIH0sIHt9KS5hcGlQYXJhbWV0ZXJzKS50b0VxdWFsKFtcbiAgICB7IFBhcmFtZXRlcktleTogJ0JhcicsIFBhcmFtZXRlclZhbHVlOiAnQmFyJyB9LFxuICBdKTtcbn0pO1xuXG50ZXN0KCdpZiBhbiB1bnN1cHBsaWVkIHBhcmFtZXRlciByZXZlcnRzIHRvIGl0cyBkZWZhdWx0LCBpdCBjYW4gc3RpbGwgYmUgZGlydHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHRlbXBsYXRlUGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7IFR5cGU6ICdTdHJpbmcnLCBEZWZhdWx0OiAnRm9vJyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3Qgc3RhY2tQYXJhbXMgPSB0ZW1wbGF0ZVBhcmFtcy5zdXBwbHlBbGwoe30pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHN0YWNrUGFyYW1zLmhhc0NoYW5nZXMoeyBGb286ICdOb25TdGFuZGFyZCcgfSkpLnRvRXF1YWwodHJ1ZSk7XG4gIGV4cGVjdChzdGFja1BhcmFtcy5oYXNDaGFuZ2VzKHsgRm9vOiAnRm9vJyB9KSkudG9FcXVhbChmYWxzZSk7XG59KTtcblxuZnVuY3Rpb24gbWFrZVBhcmFtcyhkZWZhdWx0VmFsdWU6IGJvb2xlYW4sIGhhc1ByZXZWYWx1ZTogYm9vbGVhbiwgb3ZlcnJpZGU6IGJvb2xlYW4pIHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgW1BBUkFNXToge1xuICAgICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgRGVmYXVsdDogZGVmYXVsdFZhbHVlID8gREVGQVVMVCA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHByZXZQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBoYXNQcmV2VmFsdWUgPyB7IFtQQVJBTV06ICdGb28nIH0gOiB7fTtcbiAgY29uc3Qgc3RhY2tQYXJhbXMgPSBwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBbUEFSQU1dOiBvdmVycmlkZSA/IE9WRVJSSURFIDogdW5kZWZpbmVkIH0sIHByZXZQYXJhbXMpO1xuXG4gIHJldHVybiB7IGFwaVBhcmFtZXRlcnM6IHN0YWNrUGFyYW1zLmFwaVBhcmFtZXRlcnMsIGNoYW5nZWQ6IHN0YWNrUGFyYW1zLmhhc0NoYW5nZXMocHJldlBhcmFtcykgfTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const chalk = require("chalk");
|
|
4
4
|
const console_formatters_1 = require("../../lib/util/console-formatters");
|
|
5
5
|
test('no banner on empty msg list', () => expect(console_formatters_1.formatAsBanner([])).toEqual([]));
|
|
6
6
|
test('banner works as expected', () => expect(console_formatters_1.formatAsBanner(['msg1', 'msg2'])).toEqual([
|
|
@@ -11,13 +11,13 @@ test('banner works as expected', () => expect(console_formatters_1.formatAsBanne
|
|
|
11
11
|
]));
|
|
12
12
|
test('banner works for formatted msgs', () => expect(console_formatters_1.formatAsBanner([
|
|
13
13
|
'hello msg1',
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
chalk.yellow('hello msg2'),
|
|
15
|
+
chalk.bold('hello msg3'),
|
|
16
16
|
])).toEqual([
|
|
17
17
|
'******************',
|
|
18
18
|
'*** hello msg1 ***',
|
|
19
|
-
`*** ${
|
|
20
|
-
`*** ${
|
|
19
|
+
`*** ${chalk.yellow('hello msg2')} ***`,
|
|
20
|
+
`*** ${chalk.bold('hello msg3')} ***`,
|
|
21
21
|
'******************',
|
|
22
22
|
]));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1mb3JtYXR0ZXJzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25zb2xlLWZvcm1hdHRlcnMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUErQjtBQUMvQiwwRUFBbUU7QUFFbkUsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRSxDQUN2QyxNQUFNLENBQUMsbUNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLG1DQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMvQyxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxjQUFjO0NBQ2YsQ0FBQyxDQUFDLENBQUM7QUFFTixJQUFJLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFLENBQzNDLE1BQU0sQ0FBQyxtQ0FBYyxDQUFDO0lBQ3BCLFlBQVk7SUFDWixLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztDQUN6QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDVixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07SUFDckMsb0JBQW9CO0NBQ3JCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgZm9ybWF0QXNCYW5uZXIgfSBmcm9tICcuLi8uLi9saWIvdXRpbC9jb25zb2xlLWZvcm1hdHRlcnMnO1xuXG50ZXN0KCdubyBiYW5uZXIgb24gZW1wdHkgbXNnIGxpc3QnLCAoKSA9PlxuICBleHBlY3QoZm9ybWF0QXNCYW5uZXIoW10pKS50b0VxdWFsKFtdKSk7XG5cbnRlc3QoJ2Jhbm5lciB3b3JrcyBhcyBleHBlY3RlZCcsICgpID0+XG4gIGV4cGVjdChmb3JtYXRBc0Jhbm5lcihbJ21zZzEnLCAnbXNnMiddKSkudG9FcXVhbChbXG4gICAgJyoqKioqKioqKioqKicsXG4gICAgJyoqKiBtc2cxICoqKicsXG4gICAgJyoqKiBtc2cyICoqKicsXG4gICAgJyoqKioqKioqKioqKicsXG4gIF0pKTtcblxudGVzdCgnYmFubmVyIHdvcmtzIGZvciBmb3JtYXR0ZWQgbXNncycsICgpID0+XG4gIGV4cGVjdChmb3JtYXRBc0Jhbm5lcihbXG4gICAgJ2hlbGxvIG1zZzEnLFxuICAgIGNoYWxrLnllbGxvdygnaGVsbG8gbXNnMicpLFxuICAgIGNoYWxrLmJvbGQoJ2hlbGxvIG1zZzMnKSxcbiAgXSkpLnRvRXF1YWwoW1xuICAgICcqKioqKioqKioqKioqKioqKionLFxuICAgICcqKiogaGVsbG8gbXNnMSAqKionLFxuICAgIGAqKiogJHtjaGFsay55ZWxsb3coJ2hlbGxvIG1zZzInKX0gKioqYCxcbiAgICBgKioqICR7Y2hhbGsuYm9sZCgnaGVsbG8gbXNnMycpfSAqKipgLFxuICAgICcqKioqKioqKioqKioqKioqKionLFxuICBdKSk7XG4iXX0=
|
package/test/util/mock-sdk.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="jest" />
|
|
2
2
|
import * as cxapi from '@aws-cdk/cx-api';
|
|
3
3
|
import * as AWS from 'aws-sdk';
|
|
4
|
-
import { Account, ISDK, SdkProvider } from '../../lib/api/aws-auth';
|
|
4
|
+
import { Account, ISDK, SdkProvider, SdkForEnvironment } from '../../lib/api/aws-auth';
|
|
5
5
|
import { Mode } from '../../lib/api/aws-auth/credentials';
|
|
6
6
|
import { ToolkitInfo } from '../../lib/api/toolkit-info';
|
|
7
7
|
import { CloudFormationStack } from '../../lib/api/util/cloudformation';
|
|
@@ -27,7 +27,7 @@ export declare class MockSdkProvider extends SdkProvider {
|
|
|
27
27
|
constructor(options?: MockSdkProviderOptions);
|
|
28
28
|
baseCredentialsPartition(_environment: cxapi.Environment, _mode: Mode): Promise<string | undefined>;
|
|
29
29
|
defaultAccount(): Promise<Account | undefined>;
|
|
30
|
-
forEnvironment(): Promise<
|
|
30
|
+
forEnvironment(): Promise<SdkForEnvironment>;
|
|
31
31
|
/**
|
|
32
32
|
* Replace the CloudFormation client with the given object
|
|
33
33
|
*/
|
package/test/util/mock-sdk.js
CHANGED
|
@@ -35,7 +35,7 @@ class MockSdkProvider extends aws_auth_1.SdkProvider {
|
|
|
35
35
|
return Promise.resolve({ accountId: '123456789012', partition: 'aws' });
|
|
36
36
|
}
|
|
37
37
|
forEnvironment() {
|
|
38
|
-
return Promise.resolve(this.sdk);
|
|
38
|
+
return Promise.resolve({ sdk: this.sdk, didAssumeRole: true });
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Replace the CloudFormation client with the given object
|
|
@@ -227,4 +227,4 @@ function errorWithCode(code, message) {
|
|
|
227
227
|
return ret;
|
|
228
228
|
}
|
|
229
229
|
exports.errorWithCode = errorWithCode;
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1zZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb2NrLXNkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrQkFBK0I7QUFDL0IscURBQXlFO0FBRXpFLDZEQUF5RDtBQUN6RCxzRUFBd0U7QUFFeEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFFM0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztJQUM1RCxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0I7Q0FDdkIsQ0FBQyxDQUFDO0FBY0g7Ozs7O0dBS0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVc7SUFHOUMsWUFBWSxVQUFrQyxFQUFFOztRQUM5QyxLQUFLLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUUzRixvRkFBb0Y7UUFDcEYsMEZBQTBGO1FBQzFGLFVBQUksT0FBTyxDQUFDLE9BQU8sbUNBQUksSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxjQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QixDQUFDLFlBQStCLEVBQUUsS0FBVztRQUN6RSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNB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LENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsR0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDekIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBSkQsc0NBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgQWNjb3VudCwgSVNESywgU0RLLCBTZGtQcm92aWRlciB9IGZyb20gJy4uLy4uL2xpYi9hcGkvYXdzLWF1dGgnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uLy4uL2xpYi9hcGkvYXdzLWF1dGgvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgVG9vbGtpdEluZm8gfSBmcm9tICcuLi8uLi9saWIvYXBpL3Rvb2xraXQtaW5mbyc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi4vLi4vbGliL2FwaS91dGlsL2Nsb3VkZm9ybWF0aW9uJztcblxuY29uc3QgRkFLRV9DUkVERU5USUFMUyA9IG5ldyBBV1MuQ3JlZGVudGlhbHMoeyBhY2Nlc3NLZXlJZDogJ0FDQ0VTUycsIHNlY3JldEFjY2Vzc0tleTogJ1NFQ1JFVCcsIHNlc3Npb25Ub2tlbjogJ1RPS0VOICcgfSk7XG5cbmNvbnN0IEZBS0VfQ1JFREVOVElBTF9DSEFJTiA9IG5ldyBBV1MuQ3JlZGVudGlhbFByb3ZpZGVyQ2hhaW4oW1xuICAoKSA9PiBGQUtFX0NSRURFTlRJQUxTLFxuXSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ja1Nka1Byb3ZpZGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtb2NrIHByb3ZpZGVyIHNob3VsZCBwcm9kdWNlIGEgcmVhbCBTREtcbiAgICpcbiAgICogU29tZSB0ZXN0cyByZXF1aXJlIGEgcmVhbCBTREsgYmVjYXVzZSB0aGV5IHVzZSBgQVdTLW1vY2tgIHRvIHJlcGxhY2VcbiAgICogdGhlIHVuZGVybHlpbmcgY2FsbHMuIE90aGVyIHRlc3RzIGRvIHRoZWlyIHdvcmsgY29tcGxldGVseSB1c2luZyBqZXN0LW1vY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWFsU2RrPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbiBTREsgdGhhdCBhbGxvd3MgcmVwbGFjaW5nIChzb21lIG9mKSB0aGUgY2xpZW50c1xuICpcbiAqIEl0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNvbnN1bWVyIHRvIHJlcGxhY2UgYWxsIGNhbGxzIHRoYXRcbiAqIGFjdHVhbGx5IHdpbGwgYmUgY2FsbGVkLlxuICovXG5leHBvcnQgY2xhc3MgTW9ja1Nka1Byb3ZpZGVyIGV4dGVuZHMgU2RrUHJvdmlkZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgc2RrOiBJU0RLO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1vY2tTZGtQcm92aWRlck9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKEZBS0VfQ1JFREVOVElBTF9DSEFJTiwgJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNycsIHsgY3VzdG9tVXNlckFnZW50OiAnYXdzLWNkay9qZXN0JyB9KTtcblxuICAgIC8vIFNESyBjb250YWlucyBhIHJlYWwgU0RLLCBzaW5jZSBzb21lIHRlc3QgdXNlICdBV1MtbW9jaycgdG8gcmVwbGFjZSB0aGUgdW5kZXJseWluZ1xuICAgIC8vIEFXUyBjYWxscyB3aGljaCBhIHJlYWwgU0RLIHdvdWxkIGRvLCBhbmQgc29tZSB0ZXN0cyB1c2UgdGhlICdzdHViJyBmdW5jdGlvbmFsaXR5IGJlbG93LlxuICAgIGlmIChvcHRpb25zLnJlYWxTZGsgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5zZGsgPSBuZXcgU0RLKEZBS0VfQ1JFREVOVElBTFMsIHRoaXMuZGVmYXVsdFJlZ2lvbiwgeyBjdXN0b21Vc2VyQWdlbnQ6ICdhd3MtY2RrL2plc3QnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNkayA9IG5ldyBNb2NrU2RrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYmFzZUNyZWRlbnRpYWxzUGFydGl0aW9uKF9lbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsIF9tb2RlOiBNb2RlKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGRlZmF1bHRBY2NvdW50KCk6IFByb21pc2U8QWNjb3VudCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBhY2NvdW50SWQ6ICcxMjM0NTY3ODkwMTInLCBwYXJ0aXRpb246ICdhd3MnIH0pO1xuICB9XG5cbiAgcHVibGljIGZvckVudmlyb25tZW50KCk6IFByb21pc2U8SVNESz4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5zZGspO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIENsb3VkRm9ybWF0aW9uIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViQ2xvdWRGb3JtYXRpb24oc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkNsb3VkRm9ybWF0aW9uPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLmNsb3VkRm9ybWF0aW9uID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuQ2xvdWRGb3JtYXRpb24+KHN0dWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgRUNSIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViRWNyKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5FQ1I+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuZWNyID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuRUNSPihzdHVicykpO1xuICB9XG5cbiAgcHVibGljIHN0dWJFY3Moc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkVDUz4sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30pIHtcbiAgICAodGhpcy5zZGsgYXMgYW55KS5lY3MgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHBhcnRpYWxBd3NTZXJ2aWNlPEFXUy5FQ1M+KHN0dWJzLCBhZGRpdGlvbmFsUHJvcGVydGllcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIFMzIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViUzMoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLlMzPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLnMzID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuUzM+KHN0dWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgU1RTIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViU1RTKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5TVFM+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuc3RzID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuU1RTPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIEVMQnYyIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViRUxCdjIoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkVMQnYyPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLmVsYnYyID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuRUxCdjI+KHN0dWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgU1NNIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViU1NNKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5TU00+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuc3NtID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuU1NNPihzdHVicykpO1xuICB9XG5cbiAgcHVibGljIHN0dWJMYW1iZGEoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkxhbWJkYT4pIHtcbiAgICAodGhpcy5zZGsgYXMgYW55KS5sYW1iZGEgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHBhcnRpYWxBd3NTZXJ2aWNlPEFXUy5MYW1iZGE+KHN0dWJzKSk7XG4gIH1cblxuICBwdWJsaWMgc3R1YlN0ZXBGdW5jdGlvbnMoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLlN0ZXBGdW5jdGlvbnM+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuc3RlcEZ1bmN0aW9ucyA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUocGFydGlhbEF3c1NlcnZpY2U8QVdTLlN0ZXBGdW5jdGlvbnM+KHN0dWJzKSk7XG4gIH1cblxuICBwdWJsaWMgc3R1YkNvZGVCdWlsZChzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuQ29kZUJ1aWxkPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLmNvZGVCdWlsZCA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUocGFydGlhbEF3c1NlcnZpY2U8QVdTLkNvZGVCdWlsZD4oc3R1YnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdHViR2V0RW5kcG9pbnRTdWZmaXgoc3R1YjogKCkgPT4gc3RyaW5nKSB7XG4gICAgdGhpcy5zZGsuZ2V0RW5kcG9pbnRTdWZmaXggPSBzdHViO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrU2RrIGltcGxlbWVudHMgSVNESyB7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50UmVnaW9uOiBzdHJpbmcgPSAnYmVybXVkYS10cmlhbmdsZS0xMzM3JztcbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYSA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWMyID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NtID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgczMgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSByb3V0ZTUzID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWNzID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWxidjIgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXRzTWFuYWdlciA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGttcyA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0ZXBGdW5jdGlvbnMgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlQnVpbGQgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSBnZXRFbmRwb2ludFN1ZmZpeCA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFwcGVuZEN1c3RvbVVzZXJBZ2VudCA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92ZUN1c3RvbVVzZXJBZ2VudCA9IGplc3QuZm4oKTtcblxuICBwdWJsaWMgY3VycmVudEFjY291bnQoKTogUHJvbWlzZTxBY2NvdW50PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGFjY291bnRJZDogJzEyMzQ1Njc4OTAxMicsIHBhcnRpdGlvbjogJ2F3cycgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgQ2xvdWRGb3JtYXRpb24gY2xpZW50IHdpdGggdGhlIGdpdmVuIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0dWJDbG91ZEZvcm1hdGlvbihzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuQ2xvdWRGb3JtYXRpb24+KSB7XG4gICAgdGhpcy5jbG91ZEZvcm1hdGlvbi5tb2NrUmV0dXJuVmFsdWUocGFydGlhbEF3c1NlcnZpY2U8QVdTLkNsb3VkRm9ybWF0aW9uPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIEVDUiBjbGllbnQgd2l0aCB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3R1YkVjcihzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuRUNSPikge1xuICAgIHRoaXMuZWNyLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuRUNSPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIFNTTSBjbGllbnQgd2l0aCB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3R1YlNzbShzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuU1NNPikge1xuICAgIHRoaXMuc3NtLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuU1NNPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGdldEVuZHBvaW50U3VmZml4IGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViR2V0RW5kcG9pbnRTdWZmaXgoc3R1YjogKCkgPT4gc3RyaW5nKSB7XG4gICAgdGhpcy5nZXRFbmRwb2ludFN1ZmZpeC5tb2NrUmV0dXJuVmFsdWUoc3R1YigpKTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXAgc3luY2hyb25vdXMgZmFrZSBoYW5kbGVycyBzbyB0aGF0IHRoZXkgc29ydC1vZiBmdW5jdGlvbiBsaWtlIGEgcmVhbCBBV1MgY2xpZW50XG4gKlxuICogRm9yIGV4YW1wbGUsIHR1cm5zIGFuIG9iamVjdCBsaWtlIHRoaXM6XG4gKlxuICogYGBgdHNcbiAqIHtcbiAqICAgc29tZUNhbGwob3B0czogQVdTLlNlcnZpY2UuU29tZUNhbGxJbnB1dCk6IEFXUy5TZXJ2aWNlLlNvbWVDYWxsT3V0cHV0IHtcbiAqICAgICByZXR1cm4gey4uLndoYXRldmVyLi4ufTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogSW50byBhbiBvYmplY3QgdGhhdCBpbiB0aGUgdHlwZSBzeXN0ZW0gcHJldGVuZHMgdG8gYmUgYW4gJ0FXUy5TZXJ2aWNlJ1xuICogY2xhc3MgKGV2ZW4gdGhvdWdoIGl0IHJlYWxseSBpc24ndCkgYW5kIGNhbiBiZSBjYWxsZWQgbGlrZSB0aGlzOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBzZXJ2aWNlID0gYXdhaXQgc2RrLnNvbWVTZXJ2aWNlKC4uLik7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZpY2Uuc29tZUNhbGwoLi4uKS5wcm9taXNlKCk7XG4gKiBgYGBcbiAqXG4gKiBXZSBvbmx5IGltcGxlbWVudCB0aGUgbmFycm93IHN1YnNldCBvZiB0aGUgQVdTIFNESyBBUEkgdGhhdCB0aGUgQ0RLIGFjdHVhbGx5XG4gKiB1c2VzLCBhbmQgd2UgY2hlYXQgb24gdGhlIHR5cGVzIHRvIG1ha2UgVHlwZVNjcmlwdCBoYXBweSBvbiB0aGUgcmVzdCBvZiB0aGUgQVBJLlxuICpcbiAqIE1vc3QgaW1wb3J0YW50IGZlYXR1cmUgb2YgdGhpcyBjbGFzcyBpcyB0aGF0IGl0IHdpbGwgZGVyaXZlIHRoZSBpbnB1dCBhbmQgb3V0cHV0XG4gKiB0eXBlcyBvZiB0aGUgaGFuZGxlcnMgb24gdGhlIGlucHV0IG9iamVjdCBmcm9tIHRoZSBBQ1RVQUwgQVdTIFNlcnZpY2UgY2xhc3MsXG4gKiBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRlY2xhcmUgdGhlbS5cbiAqL1xuZnVuY3Rpb24gcGFydGlhbEF3c1NlcnZpY2U8Uz4oZm5zOiBTeW5jSGFuZGxlclN1YnNldE9mPFM+LCBhZGRpdGlvbmFsUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9KTogUyB7XG4gIC8vIFN1cGVyIHVuc2FmZSBpbiBoZXJlIGJlY2F1c2UgSSBkb24ndCBrbm93IGhvdyB0byBtYWtlIFR5cGVTY3JpcHQgaGFwcHksXG4gIC8vIGJ1dCBhdCBsZWFzdCB0aGUgb3V0ZXIgdHlwZXMgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgdGhhdCBoYXBwZW5zIGluIGhlcmUgd29ya3Mgb3V0LlxuICBjb25zdCByZXQ6IGFueSA9IHt9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMoZm5zKSkge1xuICAgIHJldFtrZXldID0gKGFyZ3M6IGFueSkgPT4gbmV3IEZha2VBV1NSZXNwb25zZSgoaGFuZGxlciBhcyBhbnkpKGFyZ3MpKTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICByZXRba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQmVjYXVzZSBvZiB0aGUgb3ZlcmxvYWRzIGFuIEFXUyBoYW5kbGVyIHR5cGUgbG9va3MgbGlrZSB0aGlzOlxuLy9cbi8vICAge1xuLy8gICAgICAocGFyYW1zOiBJTlBVVFNUUlVDVCwgY2FsbGJhY2s/OiAoKGVycjogQVdTRXJyb3IsIGRhdGE6IHt9KSA9PiB2b2lkKSB8IHVuZGVmaW5lZCk6IFJlcXVlc3Q8T1VUUFVULCAuLi4+O1xuLy8gICAgICAoY2FsbGJhY2s/OiAoKGVycjogQVdTLkFXU0Vycm9yLCBkYXRhOiB7fSkgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiBBV1MuUmVxdWVzdDwuLi4+O1xuLy8gICB9XG4vL1xuLy8gR2V0IHRoZSBmaXJzdCBvdmVybG9hZCBhbmQgZXh0cmFjdCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzdHJ1Y3QgdHlwZXNcbnR5cGUgQXdzQ2FsbElucHV0T3V0cHV0PFQ+ID1cbiAgICBUIGV4dGVuZHMge1xuICAgICAgKGFyZ3M6IGluZmVyIElOUFVULCBjYWxsYmFjaz86ICgoZXJyOiBBV1MuQVdTRXJyb3IsIGRhdGE6IGFueSkgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiBBV1MuUmVxdWVzdDxpbmZlciBPVVRQVVQsIEFXUy5BV1NFcnJvcj47XG4gICAgICAoY2FsbGJhY2s/OiAoKGVycjogQVdTLkFXU0Vycm9yLCBkYXRhOiB7fSkgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiBBV1MuUmVxdWVzdDxhbnksIGFueT47XG4gICAgfSA/IFtJTlBVVCwgT1VUUFVUXSA6IFQ7XG5cbi8vIERldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgbW9jayBoYW5kbGVyIGZyb20gdGhlIHR5cGUgb2YgdGhlIElucHV0L091dHB1dCB0eXBlIHBhaXIuXG4vLyBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSAnbmV2ZXInLCBUeXBlU2NyaXB0IHdpbGwgcHJvcGFnYXRlIGl0IHVwd2FyZHMgbWFraW5nIGl0XG4vLyBpbXBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIGZpZWxkIHRoYXQgaGFzICduZXZlcicgYW55d2hlcmUgaW4gaXRzIHR5cGUuXG50eXBlIE1vY2tIYW5kbGVyVHlwZTxBST4gPVxuICAgIEFJIGV4dGVuZHMgW2FueSwgYW55XSA/IChpbnB1dDogQUlbMF0pID0+IEFJWzFdIDogQUk7XG5cbi8vIEFueSBzdWJzZXQgb2YgdGhlIGZ1bGwgdHlwZSB0aGF0IHN5bmNocm9ub3VzbHkgcmV0dXJucyB0aGUgb3V0cHV0IHN0cnVjdHVyZSBpcyBva2F5XG5leHBvcnQgdHlwZSBTeW5jSGFuZGxlclN1YnNldE9mPFM+ID0ge1tLIGluIGtleW9mIFNdPzogTW9ja0hhbmRsZXJUeXBlPEF3c0NhbGxJbnB1dE91dHB1dDxTW0tdPj59O1xuXG4vKipcbiAqIEZha2UgQVdTIHJlc3BvbnNlLlxuICpcbiAqIFdlIG9ubHkgZXZlciAnYXdhaXQgcmVzcG9uc2UucHJvbWlzZSgpJyBzbyB0aGF0J3MgdGhlIG9ubHkgdGhpbmcgd2UgaW1wbGVtZW50IGhlcmUuXG4gKi9cbmNsYXNzIEZha2VBV1NSZXNwb25zZTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgeDogVCkge1xuICB9XG5cbiAgcHVibGljIHByb21pc2UoKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLngpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrQm9vdHN0cmFwU3RhY2soc2RrOiBJU0RLIHwgdW5kZWZpbmVkLCBzdGFjaz86IFBhcnRpYWw8QVdTLkNsb3VkRm9ybWF0aW9uLlN0YWNrPikge1xuICByZXR1cm4gQ2xvdWRGb3JtYXRpb25TdGFjay5mcm9tU3RhdGljSW5mb3JtYXRpb24oKHNkayA/PyBuZXcgTW9ja1NkaygpKS5jbG91ZEZvcm1hdGlvbigpLCAnQ0RLVG9vbGtpdCcsIHtcbiAgICBDcmVhdGlvblRpbWU6IG5ldyBEYXRlKCksXG4gICAgU3RhY2tOYW1lOiAnQ0RLVG9vbGtpdCcsXG4gICAgU3RhY2tTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnLFxuICAgIC4uLnN0YWNrLFxuICAgIE91dHB1dHM6IFtcbiAgICAgIHsgT3V0cHV0S2V5OiAnQnVja2V0TmFtZScsIE91dHB1dFZhbHVlOiAnQlVDS0VUX05BTUUnIH0sXG4gICAgICB7IE91dHB1dEtleTogJ0J1Y2tldERvbWFpbk5hbWUnLCBPdXRwdXRWYWx1ZTogJ0JVQ0tFVF9FTkRQT0lOVCcgfSxcbiAgICAgIHsgT3V0cHV0S2V5OiAnQm9vdHN0cmFwVmVyc2lvbicsIE91dHB1dFZhbHVlOiAnMScgfSxcbiAgICAgIC4uLnN0YWNrPy5PdXRwdXRzID8/IFtdLFxuICAgIF0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Rvb2xraXRJbmZvKHN0YWNrPzogUGFydGlhbDxBV1MuQ2xvdWRGb3JtYXRpb24uU3RhY2s+KSB7XG4gIGNvbnN0IHNkayA9IG5ldyBNb2NrU2RrKCk7XG4gIHJldHVybiBUb29sa2l0SW5mby5mcm9tU3RhY2sobW9ja0Jvb3RzdHJhcFN0YWNrKHNkaywgc3RhY2spLCBzZGspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Jlc29sdmVkRW52aXJvbm1lbnQoKTogY3hhcGkuRW52aXJvbm1lbnQge1xuICByZXR1cm4ge1xuICAgIGFjY291bnQ6ICcxMjM0NTY3ODknLFxuICAgIHJlZ2lvbjogJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNycsXG4gICAgbmFtZTogJ2F3czovLzEyMzQ1Njc4OS9iZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLFxuICB9O1xufVxuXG4vLyBKZXN0IGhlbHBlcnNcblxuLy8gQW4gb2JqZWN0IG9uIHdoaWNoIGFsbCBjYWxsYWJsZXMgYXJlIEplc3QgTW9ja3NcbmV4cG9ydCB0eXBlIE1vY2tlZE9iamVjdDxTIGV4dGVuZHMgb2JqZWN0PiA9IHtbSyBpbiBrZXlvZiBTXTogTW9ja2VkRnVuY3Rpb248UmVxdWlyZWQ8Uz5bS10+fTtcblxuLy8gSWYgYSBmdW5jdGlvbiwgdGhlbiBhIG1vY2tlZCB2ZXJzaW9uIG9mIGl0LCBvdGhlcndpc2UganVzdCBUXG50eXBlIE1vY2tlZEZ1bmN0aW9uPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG4gID8gamVzdC5Nb2NrSW5zdGFuY2U8UmV0dXJuVHlwZTxUPiwgamVzdC5BcmdzVHlwZTxUPj5cbiAgOiBUO1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yV2l0aENvZGUoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3QgcmV0ID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAocmV0IGFzIGFueSkuY29kZSA9IGNvZGU7XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1zZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb2NrLXNkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrQkFBK0I7QUFDL0IscURBQTRGO0FBRTVGLDZEQUF5RDtBQUN6RCxzRUFBd0U7QUFFeEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFFM0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztJQUM1RCxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0I7Q0FDdkIsQ0FBQyxDQUFDO0FBY0g7Ozs7O0dBS0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVc7SUFHOUMsWUFBWSxVQUFrQyxFQUFFOztRQUM5QyxLQUFLLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUUzRixvRkFBb0Y7UUFDcEYsMEZBQTBGO1FBQzFGLFVBQUksT0FBTyxDQUFDLE9BQU8sbUNBQUksSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxjQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QixDQUFDLFlBQStCLEVBQUUsS0FBVztRQUN6RSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNB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RUFBRSxPQUFlO0lBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLEdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUpELHNDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IEFjY291bnQsIElTREssIFNESywgU2RrUHJvdmlkZXIsIFNka0ZvckVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vbGliL2FwaS9hd3MtYXV0aCc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vLi4vbGliL2FwaS9hd3MtYXV0aC9jcmVkZW50aWFscyc7XG5pbXBvcnQgeyBUb29sa2l0SW5mbyB9IGZyb20gJy4uLy4uL2xpYi9hcGkvdG9vbGtpdC1pbmZvJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuLi8uLi9saWIvYXBpL3V0aWwvY2xvdWRmb3JtYXRpb24nO1xuXG5jb25zdCBGQUtFX0NSRURFTlRJQUxTID0gbmV3IEFXUy5DcmVkZW50aWFscyh7IGFjY2Vzc0tleUlkOiAnQUNDRVNTJywgc2VjcmV0QWNjZXNzS2V5OiAnU0VDUkVUJywgc2Vzc2lvblRva2VuOiAnVE9LRU4gJyB9KTtcblxuY29uc3QgRkFLRV9DUkVERU5USUFMX0NIQUlOID0gbmV3IEFXUy5DcmVkZW50aWFsUHJvdmlkZXJDaGFpbihbXG4gICgpID0+IEZBS0VfQ1JFREVOVElBTFMsXG5dKTtcblxuZXhwb3J0IGludGVyZmFjZSBNb2NrU2RrUHJvdmlkZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG1vY2sgcHJvdmlkZXIgc2hvdWxkIHByb2R1Y2UgYSByZWFsIFNES1xuICAgKlxuICAgKiBTb21lIHRlc3RzIHJlcXVpcmUgYSByZWFsIFNESyBiZWNhdXNlIHRoZXkgdXNlIGBBV1MtbW9ja2AgdG8gcmVwbGFjZVxuICAgKiB0aGUgdW5kZXJseWluZyBjYWxscy4gT3RoZXIgdGVzdHMgZG8gdGhlaXIgd29yayBjb21wbGV0ZWx5IHVzaW5nIGplc3QtbW9ja3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWxTZGs/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFuIFNESyB0aGF0IGFsbG93cyByZXBsYWNpbmcgKHNvbWUgb2YpIHRoZSBjbGllbnRzXG4gKlxuICogSXRzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY29uc3VtZXIgdG8gcmVwbGFjZSBhbGwgY2FsbHMgdGhhdFxuICogYWN0dWFsbHkgd2lsbCBiZSBjYWxsZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrU2RrUHJvdmlkZXIgZXh0ZW5kcyBTZGtQcm92aWRlciB7XG4gIHB1YmxpYyByZWFkb25seSBzZGs6IElTREs7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTW9ja1Nka1Byb3ZpZGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoRkFLRV9DUkVERU5USUFMX0NIQUlOLCAnYmVybXVkYS10cmlhbmdsZS0xMzM3JywgeyBjdXN0b21Vc2VyQWdlbnQ6ICdhd3MtY2RrL2plc3QnIH0pO1xuXG4gICAgLy8gU0RLIGNvbnRhaW5zIGEgcmVhbCBTREssIHNpbmNlIHNvbWUgdGVzdCB1c2UgJ0FXUy1tb2NrJyB0byByZXBsYWNlIHRoZSB1bmRlcmx5aW5nXG4gICAgLy8gQVdTIGNhbGxzIHdoaWNoIGEgcmVhbCBTREsgd291bGQgZG8sIGFuZCBzb21lIHRlc3RzIHVzZSB0aGUgJ3N0dWInIGZ1bmN0aW9uYWxpdHkgYmVsb3cuXG4gICAgaWYgKG9wdGlvbnMucmVhbFNkayA/PyB0cnVlKSB7XG4gICAgICB0aGlzLnNkayA9IG5ldyBTREsoRkFLRV9DUkVERU5USUFMUywgdGhpcy5kZWZhdWx0UmVnaW9uLCB7IGN1c3RvbVVzZXJBZ2VudDogJ2F3cy1jZGsvamVzdCcgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2RrID0gbmV3IE1vY2tTZGsoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBiYXNlQ3JlZGVudGlhbHNQYXJ0aXRpb24oX2Vudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCwgX21vZGU6IE1vZGUpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZGVmYXVsdEFjY291bnQoKTogUHJvbWlzZTxBY2NvdW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGFjY291bnRJZDogJzEyMzQ1Njc4OTAxMicsIHBhcnRpdGlvbjogJ2F3cycgfSk7XG4gIH1cblxuICBwdWJsaWMgZm9yRW52aXJvbm1lbnQoKTogUHJvbWlzZTxTZGtGb3JFbnZpcm9ubWVudD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBzZGs6IHRoaXMuc2RrLCBkaWRBc3N1bWVSb2xlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIENsb3VkRm9ybWF0aW9uIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViQ2xvdWRGb3JtYXRpb24oc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkNsb3VkRm9ybWF0aW9uPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLmNsb3VkRm9ybWF0aW9uID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuQ2xvdWRGb3JtYXRpb24+KHN0dWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgRUNSIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViRWNyKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5FQ1I+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuZWNyID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuRUNSPihzdHVicykpO1xuICB9XG5cbiAgcHVibGljIHN0dWJFY3Moc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkVDUz4sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30pIHtcbiAgICAodGhpcy5zZGsgYXMgYW55KS5lY3MgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHBhcnRpYWxBd3NTZXJ2aWNlPEFXUy5FQ1M+KHN0dWJzLCBhZGRpdGlvbmFsUHJvcGVydGllcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIFMzIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViUzMoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLlMzPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLnMzID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuUzM+KHN0dWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgU1RTIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViU1RTKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5TVFM+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuc3RzID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuU1RTPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIEVMQnYyIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViRUxCdjIoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkVMQnYyPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLmVsYnYyID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuRUxCdjI+KHN0dWJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgU1NNIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViU1NNKHN0dWJzOiBTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5TU00+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuc3NtID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuU1NNPihzdHVicykpO1xuICB9XG5cbiAgcHVibGljIHN0dWJMYW1iZGEoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkxhbWJkYT4pIHtcbiAgICAodGhpcy5zZGsgYXMgYW55KS5sYW1iZGEgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHBhcnRpYWxBd3NTZXJ2aWNlPEFXUy5MYW1iZGE+KHN0dWJzKSk7XG4gIH1cblxuICBwdWJsaWMgc3R1YlN0ZXBGdW5jdGlvbnMoc3R1YnM6IFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLlN0ZXBGdW5jdGlvbnM+KSB7XG4gICAgKHRoaXMuc2RrIGFzIGFueSkuc3RlcEZ1bmN0aW9ucyA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUocGFydGlhbEF3c1NlcnZpY2U8QVdTLlN0ZXBGdW5jdGlvbnM+KHN0dWJzKSk7XG4gIH1cblxuICBwdWJsaWMgc3R1YkNvZGVCdWlsZChzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuQ29kZUJ1aWxkPikge1xuICAgICh0aGlzLnNkayBhcyBhbnkpLmNvZGVCdWlsZCA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUocGFydGlhbEF3c1NlcnZpY2U8QVdTLkNvZGVCdWlsZD4oc3R1YnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdHViR2V0RW5kcG9pbnRTdWZmaXgoc3R1YjogKCkgPT4gc3RyaW5nKSB7XG4gICAgdGhpcy5zZGsuZ2V0RW5kcG9pbnRTdWZmaXggPSBzdHViO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrU2RrIGltcGxlbWVudHMgSVNESyB7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50UmVnaW9uOiBzdHJpbmcgPSAnYmVybXVkYS10cmlhbmdsZS0xMzM3JztcbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYSA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWMyID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3NtID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgczMgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSByb3V0ZTUzID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWNzID0gamVzdC5mbigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZWxidjIgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXRzTWFuYWdlciA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGttcyA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0ZXBGdW5jdGlvbnMgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlQnVpbGQgPSBqZXN0LmZuKCk7XG4gIHB1YmxpYyByZWFkb25seSBnZXRFbmRwb2ludFN1ZmZpeCA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFwcGVuZEN1c3RvbVVzZXJBZ2VudCA9IGplc3QuZm4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92ZUN1c3RvbVVzZXJBZ2VudCA9IGplc3QuZm4oKTtcblxuICBwdWJsaWMgY3VycmVudEFjY291bnQoKTogUHJvbWlzZTxBY2NvdW50PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGFjY291bnRJZDogJzEyMzQ1Njc4OTAxMicsIHBhcnRpdGlvbjogJ2F3cycgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgQ2xvdWRGb3JtYXRpb24gY2xpZW50IHdpdGggdGhlIGdpdmVuIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0dWJDbG91ZEZvcm1hdGlvbihzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuQ2xvdWRGb3JtYXRpb24+KSB7XG4gICAgdGhpcy5jbG91ZEZvcm1hdGlvbi5tb2NrUmV0dXJuVmFsdWUocGFydGlhbEF3c1NlcnZpY2U8QVdTLkNsb3VkRm9ybWF0aW9uPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIEVDUiBjbGllbnQgd2l0aCB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3R1YkVjcihzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuRUNSPikge1xuICAgIHRoaXMuZWNyLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuRUNSPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIFNTTSBjbGllbnQgd2l0aCB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3R1YlNzbShzdHViczogU3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuU1NNPikge1xuICAgIHRoaXMuc3NtLm1vY2tSZXR1cm5WYWx1ZShwYXJ0aWFsQXdzU2VydmljZTxBV1MuU1NNPihzdHVicykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGdldEVuZHBvaW50U3VmZml4IGNsaWVudCB3aXRoIHRoZSBnaXZlbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdHViR2V0RW5kcG9pbnRTdWZmaXgoc3R1YjogKCkgPT4gc3RyaW5nKSB7XG4gICAgdGhpcy5nZXRFbmRwb2ludFN1ZmZpeC5tb2NrUmV0dXJuVmFsdWUoc3R1YigpKTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXAgc3luY2hyb25vdXMgZmFrZSBoYW5kbGVycyBzbyB0aGF0IHRoZXkgc29ydC1vZiBmdW5jdGlvbiBsaWtlIGEgcmVhbCBBV1MgY2xpZW50XG4gKlxuICogRm9yIGV4YW1wbGUsIHR1cm5zIGFuIG9iamVjdCBsaWtlIHRoaXM6XG4gKlxuICogYGBgdHNcbiAqIHtcbiAqICAgc29tZUNhbGwob3B0czogQVdTLlNlcnZpY2UuU29tZUNhbGxJbnB1dCk6IEFXUy5TZXJ2aWNlLlNvbWVDYWxsT3V0cHV0IHtcbiAqICAgICByZXR1cm4gey4uLndoYXRldmVyLi4ufTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogSW50byBhbiBvYmplY3QgdGhhdCBpbiB0aGUgdHlwZSBzeXN0ZW0gcHJldGVuZHMgdG8gYmUgYW4gJ0FXUy5TZXJ2aWNlJ1xuICogY2xhc3MgKGV2ZW4gdGhvdWdoIGl0IHJlYWxseSBpc24ndCkgYW5kIGNhbiBiZSBjYWxsZWQgbGlrZSB0aGlzOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBzZXJ2aWNlID0gYXdhaXQgc2RrLnNvbWVTZXJ2aWNlKC4uLik7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZpY2Uuc29tZUNhbGwoLi4uKS5wcm9taXNlKCk7XG4gKiBgYGBcbiAqXG4gKiBXZSBvbmx5IGltcGxlbWVudCB0aGUgbmFycm93IHN1YnNldCBvZiB0aGUgQVdTIFNESyBBUEkgdGhhdCB0aGUgQ0RLIGFjdHVhbGx5XG4gKiB1c2VzLCBhbmQgd2UgY2hlYXQgb24gdGhlIHR5cGVzIHRvIG1ha2UgVHlwZVNjcmlwdCBoYXBweSBvbiB0aGUgcmVzdCBvZiB0aGUgQVBJLlxuICpcbiAqIE1vc3QgaW1wb3J0YW50IGZlYXR1cmUgb2YgdGhpcyBjbGFzcyBpcyB0aGF0IGl0IHdpbGwgZGVyaXZlIHRoZSBpbnB1dCBhbmQgb3V0cHV0XG4gKiB0eXBlcyBvZiB0aGUgaGFuZGxlcnMgb24gdGhlIGlucHV0IG9iamVjdCBmcm9tIHRoZSBBQ1RVQUwgQVdTIFNlcnZpY2UgY2xhc3MsXG4gKiBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRlY2xhcmUgdGhlbS5cbiAqL1xuZnVuY3Rpb24gcGFydGlhbEF3c1NlcnZpY2U8Uz4oZm5zOiBTeW5jSGFuZGxlclN1YnNldE9mPFM+LCBhZGRpdGlvbmFsUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9KTogUyB7XG4gIC8vIFN1cGVyIHVuc2FmZSBpbiBoZXJlIGJlY2F1c2UgSSBkb24ndCBrbm93IGhvdyB0byBtYWtlIFR5cGVTY3JpcHQgaGFwcHksXG4gIC8vIGJ1dCBhdCBsZWFzdCB0aGUgb3V0ZXIgdHlwZXMgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgdGhhdCBoYXBwZW5zIGluIGhlcmUgd29ya3Mgb3V0LlxuICBjb25zdCByZXQ6IGFueSA9IHt9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMoZm5zKSkge1xuICAgIHJldFtrZXldID0gKGFyZ3M6IGFueSkgPT4gbmV3IEZha2VBV1NSZXNwb25zZSgoaGFuZGxlciBhcyBhbnkpKGFyZ3MpKTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsUHJvcGVydGllcykpIHtcbiAgICByZXRba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQmVjYXVzZSBvZiB0aGUgb3ZlcmxvYWRzIGFuIEFXUyBoYW5kbGVyIHR5cGUgbG9va3MgbGlrZSB0aGlzOlxuLy9cbi8vICAge1xuLy8gICAgICAocGFyYW1zOiBJTlBVVFNUUlVDVCwgY2FsbGJhY2s/OiAoKGVycjogQVdTRXJyb3IsIGRhdGE6IHt9KSA9PiB2b2lkKSB8IHVuZGVmaW5lZCk6IFJlcXVlc3Q8T1VUUFVULCAuLi4+O1xuLy8gICAgICAoY2FsbGJhY2s/OiAoKGVycjogQVdTLkFXU0Vycm9yLCBkYXRhOiB7fSkgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiBBV1MuUmVxdWVzdDwuLi4+O1xuLy8gICB9XG4vL1xuLy8gR2V0IHRoZSBmaXJzdCBvdmVybG9hZCBhbmQgZXh0cmFjdCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzdHJ1Y3QgdHlwZXNcbnR5cGUgQXdzQ2FsbElucHV0T3V0cHV0PFQ+ID1cbiAgICBUIGV4dGVuZHMge1xuICAgICAgKGFyZ3M6IGluZmVyIElOUFVULCBjYWxsYmFjaz86ICgoZXJyOiBBV1MuQVdTRXJyb3IsIGRhdGE6IGFueSkgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiBBV1MuUmVxdWVzdDxpbmZlciBPVVRQVVQsIEFXUy5BV1NFcnJvcj47XG4gICAgICAoY2FsbGJhY2s/OiAoKGVycjogQVdTLkFXU0Vycm9yLCBkYXRhOiB7fSkgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiBBV1MuUmVxdWVzdDxhbnksIGFueT47XG4gICAgfSA/IFtJTlBVVCwgT1VUUFVUXSA6IFQ7XG5cbi8vIERldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgbW9jayBoYW5kbGVyIGZyb20gdGhlIHR5cGUgb2YgdGhlIElucHV0L091dHB1dCB0eXBlIHBhaXIuXG4vLyBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSAnbmV2ZXInLCBUeXBlU2NyaXB0IHdpbGwgcHJvcGFnYXRlIGl0IHVwd2FyZHMgbWFraW5nIGl0XG4vLyBpbXBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIGZpZWxkIHRoYXQgaGFzICduZXZlcicgYW55d2hlcmUgaW4gaXRzIHR5cGUuXG50eXBlIE1vY2tIYW5kbGVyVHlwZTxBST4gPVxuICAgIEFJIGV4dGVuZHMgW2FueSwgYW55XSA/IChpbnB1dDogQUlbMF0pID0+IEFJWzFdIDogQUk7XG5cbi8vIEFueSBzdWJzZXQgb2YgdGhlIGZ1bGwgdHlwZSB0aGF0IHN5bmNocm9ub3VzbHkgcmV0dXJucyB0aGUgb3V0cHV0IHN0cnVjdHVyZSBpcyBva2F5XG5leHBvcnQgdHlwZSBTeW5jSGFuZGxlclN1YnNldE9mPFM+ID0ge1tLIGluIGtleW9mIFNdPzogTW9ja0hhbmRsZXJUeXBlPEF3c0NhbGxJbnB1dE91dHB1dDxTW0tdPj59O1xuXG4vKipcbiAqIEZha2UgQVdTIHJlc3BvbnNlLlxuICpcbiAqIFdlIG9ubHkgZXZlciAnYXdhaXQgcmVzcG9uc2UucHJvbWlzZSgpJyBzbyB0aGF0J3MgdGhlIG9ubHkgdGhpbmcgd2UgaW1wbGVtZW50IGhlcmUuXG4gKi9cbmNsYXNzIEZha2VBV1NSZXNwb25zZTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgeDogVCkge1xuICB9XG5cbiAgcHVibGljIHByb21pc2UoKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLngpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrQm9vdHN0cmFwU3RhY2soc2RrOiBJU0RLIHwgdW5kZWZpbmVkLCBzdGFjaz86IFBhcnRpYWw8QVdTLkNsb3VkRm9ybWF0aW9uLlN0YWNrPikge1xuICByZXR1cm4gQ2xvdWRGb3JtYXRpb25TdGFjay5mcm9tU3RhdGljSW5mb3JtYXRpb24oKHNkayA/PyBuZXcgTW9ja1NkaygpKS5jbG91ZEZvcm1hdGlvbigpLCAnQ0RLVG9vbGtpdCcsIHtcbiAgICBDcmVhdGlvblRpbWU6IG5ldyBEYXRlKCksXG4gICAgU3RhY2tOYW1lOiAnQ0RLVG9vbGtpdCcsXG4gICAgU3RhY2tTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnLFxuICAgIC4uLnN0YWNrLFxuICAgIE91dHB1dHM6IFtcbiAgICAgIHsgT3V0cHV0S2V5OiAnQnVja2V0TmFtZScsIE91dHB1dFZhbHVlOiAnQlVDS0VUX05BTUUnIH0sXG4gICAgICB7IE91dHB1dEtleTogJ0J1Y2tldERvbWFpbk5hbWUnLCBPdXRwdXRWYWx1ZTogJ0JVQ0tFVF9FTkRQT0lOVCcgfSxcbiAgICAgIHsgT3V0cHV0S2V5OiAnQm9vdHN0cmFwVmVyc2lvbicsIE91dHB1dFZhbHVlOiAnMScgfSxcbiAgICAgIC4uLnN0YWNrPy5PdXRwdXRzID8/IFtdLFxuICAgIF0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Rvb2xraXRJbmZvKHN0YWNrPzogUGFydGlhbDxBV1MuQ2xvdWRGb3JtYXRpb24uU3RhY2s+KSB7XG4gIGNvbnN0IHNkayA9IG5ldyBNb2NrU2RrKCk7XG4gIHJldHVybiBUb29sa2l0SW5mby5mcm9tU3RhY2sobW9ja0Jvb3RzdHJhcFN0YWNrKHNkaywgc3RhY2spLCBzZGspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Jlc29sdmVkRW52aXJvbm1lbnQoKTogY3hhcGkuRW52aXJvbm1lbnQge1xuICByZXR1cm4ge1xuICAgIGFjY291bnQ6ICcxMjM0NTY3ODknLFxuICAgIHJlZ2lvbjogJ2Jlcm11ZGEtdHJpYW5nbGUtMTMzNycsXG4gICAgbmFtZTogJ2F3czovLzEyMzQ1Njc4OS9iZXJtdWRhLXRyaWFuZ2xlLTEzMzcnLFxuICB9O1xufVxuXG4vLyBKZXN0IGhlbHBlcnNcblxuLy8gQW4gb2JqZWN0IG9uIHdoaWNoIGFsbCBjYWxsYWJsZXMgYXJlIEplc3QgTW9ja3NcbmV4cG9ydCB0eXBlIE1vY2tlZE9iamVjdDxTIGV4dGVuZHMgb2JqZWN0PiA9IHtbSyBpbiBrZXlvZiBTXTogTW9ja2VkRnVuY3Rpb248UmVxdWlyZWQ8Uz5bS10+fTtcblxuLy8gSWYgYSBmdW5jdGlvbiwgdGhlbiBhIG1vY2tlZCB2ZXJzaW9uIG9mIGl0LCBvdGhlcndpc2UganVzdCBUXG50eXBlIE1vY2tlZEZ1bmN0aW9uPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG4gID8gamVzdC5Nb2NrSW5zdGFuY2U8UmV0dXJuVHlwZTxUPiwgamVzdC5BcmdzVHlwZTxUPj5cbiAgOiBUO1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yV2l0aENvZGUoY29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3QgcmV0ID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAocmV0IGFzIGFueSkuY29kZSA9IGNvZGU7XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
|