construct-hub 0.4.17 → 0.4.20

Sign up to get free protection for your applications and to get access to all the features.
@@ -64,6 +64,7 @@ async function handler(event, context) {
64
64
  let shouldContinue = true;
65
65
  do {
66
66
  await aws_embedded_metrics_1.metricScope((metrics) => async () => {
67
+ console.log('Polling changes from npm replica');
67
68
  const changes = await npm.changes(updatedMarker);
68
69
  // Clear automatically set dimensions - we don't need them (see https://github.com/awslabs/aws-embedded-metrics-node/issues/73)
69
70
  metrics.setDimensions();
@@ -112,6 +113,7 @@ async function handler(event, context) {
112
113
  version: infos.version,
113
114
  };
114
115
  // "Fire-and-forget" invocation here.
116
+ console.log(`Sending ${invokeArgs.tarballUrl} for staging`);
115
117
  await aws
116
118
  .lambda()
117
119
  .invokeAsync({
@@ -125,6 +127,7 @@ async function handler(event, context) {
125
127
  }
126
128
  // Updating the S3 stored marker with the new seq id as communicated by nano.
127
129
  await saveLastTransactionMarker(context, stagingBucket, updatedMarker, knownVersions);
130
+ console.log('Successfully updated marker');
128
131
  }
129
132
  finally {
130
133
  // Markers may not always be numeric (but in practice they are now), so we protect against that...
@@ -375,4 +378,4 @@ function getRelevantVersionInfos(changes, metrics, denyList, licenseList, knownV
375
378
  name.startsWith('@cdktf/'));
376
379
  }
377
380
  }
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLWpzLWZvbGxvd2VyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvbnBtanMvbnBtLWpzLWZvbGxvd2VyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsK0JBQWtDO0FBRWxDLCtEQUs4QjtBQUU5Qix5REFBdUQ7QUFDdkQsaUVBQWlFO0FBQ2pFLHVGQUE4RTtBQUM5RSwwRkFBb0Y7QUFDcEYsOERBQThEO0FBQzlELDhFQUFvRTtBQUNwRSx1RUFJbUM7QUFDbkMsK0VBQTZFO0FBRTdFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ3RELEtBQUs7SUFDTCxTQUFTO0lBQ1QsUUFBUTtJQUNSLE9BQU87SUFDUCxPQUFPO0NBQ1IsQ0FBQyxDQUFDO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRTs7Ozs7R0FLRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUVoRSxvQ0FBb0M7QUFDcEMsb0NBQWEsQ0FBQyxTQUFTLEdBQUcsMkNBQWlCLENBQUM7QUFFNUMscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxzQ0FBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyQyxpRUFBaUU7QUFDakUsc0NBQWtCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFFcEM7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFxQixFQUFFLE9BQWdCO0lBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhELE1BQU0sYUFBYSxHQUFHLDhCQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEQsTUFBTSxlQUFlLEdBQUcsOEJBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVwRCxNQUFNLFFBQVEsR0FBRyxNQUFNLHFDQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsTUFBTSx3Q0FBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLDBDQUFZLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFbkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEdBQzVDLE1BQU0seUJBQXlCLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXRELGtDQUFrQztJQUNsQyxJQUFJLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFFbEMsZ0dBQWdHO0lBQ2hHLDBEQUEwRDtJQUMxRCxJQUFJLHNCQUFzQixHQUFHLEtBQU0sQ0FBQztJQUNwQyxnR0FBZ0c7SUFDaEcsaUVBQWlFO0lBQ2pFLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztJQUUxQixHQUFHO1FBQ0QsTUFBTSxrQ0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFakQsK0hBQStIO1lBQy9ILE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUV4QixnRUFBZ0U7WUFDaEUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDL0MsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDakMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTdCLElBQUk7Z0JBQ0YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQTRCLENBQUM7Z0JBRW5ELDhEQUE4RDtnQkFDOUQsSUFBSSxZQUE4QixDQUFDO2dCQUNuQyw4QkFBOEI7Z0JBQzlCLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEtBQUssRUFBRTtvQkFDM0IsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDN0MsT0FBTyxDQUFDLFNBQVMsMENBRWYsU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFDOUIsMkJBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7d0JBQ0YsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLFlBQVksR0FBRyxRQUFRLEVBQUU7NEJBQ25ELFlBQVksR0FBRyxRQUFRLENBQUM7eUJBQ3pCO3FCQUNGO2lCQUNGO2dCQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEtBQUssQ0FBQyxNQUFNLGFBQWEsQ0FBQyxDQUFDO2dCQUM5RCxPQUFPLENBQUMsU0FBUyxtQ0FBMEIsS0FBSyxDQUFDLE1BQU0sRUFBRSwyQkFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVyRSxJQUFJLFlBQVksSUFBSSxZQUFZLEdBQUcsa0JBQWtCLEVBQUU7b0JBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQ1QsZ0RBQWdELFlBQVksMkJBQTJCLENBQ3hGLENBQUM7aUJBQ0g7cUJBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO29CQUNsRSxjQUFjLEdBQUcsS0FBSyxDQUFDO2lCQUN4QjtxQkFBTTtvQkFDTCx3RUFBd0U7b0JBQ3hFLHlFQUF5RTtvQkFDekUsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQzFDLEtBQUssRUFDTCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFdBQVcsRUFDWCxhQUFhLENBQ2QsQ0FBQztvQkFDRixPQUFPLENBQUMsR0FBRyxDQUNULGNBQWMsWUFBWSxDQUFDLE1BQU0scUNBQXFDLENBQ3ZFLENBQUM7b0JBQ0YsT0FBTyxDQUFDLFNBQVMsNERBRWYsWUFBWSxDQUFDLE1BQU0sRUFDbkIsMkJBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztvQkFFRixnQ0FBZ0M7b0JBQ2hDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTt3QkFDbEQsTUFBTSxVQUFVLEdBQW1COzRCQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNOzRCQUM1QixRQUFRLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRTs0QkFDaEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJOzRCQUNoQixHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTs0QkFDcEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTzs0QkFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3lCQUN2QixDQUFDO3dCQUNGLHFDQUFxQzt3QkFDckMsTUFBTSxHQUFHOzZCQUNOLE1BQU0sRUFBRTs2QkFDUixXQUFXLENBQUM7NEJBQ1gsWUFBWSxFQUFFLGVBQWU7NEJBQzdCLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO3lCQUNoRCxDQUFDOzZCQUNELE9BQU8sRUFBRSxDQUFDO3dCQUNiLHFFQUFxRTt3QkFDckUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNoRSxDQUFDLENBQUMsQ0FDSCxDQUFDO2lCQUNIO2dCQUVELDZFQUE2RTtnQkFDN0UsTUFBTSx5QkFBeUIsQ0FDN0IsT0FBTyxFQUNQLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxDQUNkLENBQUM7YUFDSDtvQkFBUztnQkFDUixrR0FBa0c7Z0JBQ2xHLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQ3BFLE9BQU8sQ0FBQyxTQUFTLDJCQUVmLE9BQU8sYUFBYSxLQUFLLFFBQVE7d0JBQy9CLENBQUMsQ0FBQyxhQUFhO3dCQUNmLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQzNCLDJCQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7aUJBQ0g7Z0JBRUQsT0FBTyxDQUFDLFNBQVMsb0RBRWYsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsRUFDdEIsMkJBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLFNBQVMsdUNBRWYsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEVBQ2xDLDJCQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ04sUUFDQyxjQUFjO1FBQ2QsT0FBTyxDQUFDLHdCQUF3QixFQUFFLElBQUksc0JBQXNCLEVBQzVEO0lBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQXZKRCwwQkF1SkM7QUFFRCxpQ0FBaUM7QUFDakM7Ozs7Ozs7R0FPRztBQUNILEtBQUssVUFBVSx5QkFBeUIsQ0FDdEMsYUFBcUIsRUFDckIsUUFBc0I7SUFFdEIsSUFBSTtRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRzthQUN2QixFQUFFLEVBQUU7YUFDSixTQUFTLENBQUM7WUFDVCxNQUFNLEVBQUUsYUFBYTtZQUNyQixHQUFHLEVBQUUsMENBQWdCO1NBQ3RCLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNiLElBQUksUUFBUSxDQUFDLGVBQWUsS0FBSyxNQUFNLEVBQUU7WUFDdkMsUUFBUSxDQUFDLElBQUksR0FBRyxpQkFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQVksQ0FBQyxDQUFDLENBQUM7U0FDaEU7UUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3JFLElBQUksR0FBRyxLQUFLLGVBQWUsRUFBRTtnQkFDM0IsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1lBQ3BDLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7b0JBQ3RELEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3BDO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLFVBQVUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUNsRTthQUNGO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVCLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztTQUM3RDtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTVELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDdkQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3QixPQUFPLENBQUMsSUFBSSxDQUNWLDBCQUEwQixXQUFXLGdGQUFnRixDQUN0SCxDQUFDO1lBQ0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxRDtRQUVELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDOUIsTUFBTSxLQUFLLENBQUM7U0FDYjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsdUJBQXVCLGFBQWEsSUFBSSwwQ0FBZ0IseUNBQXlDLENBQ2xHLENBQUM7UUFDRixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsS0FBSyxVQUFVLHlCQUF5QixDQUN0QyxPQUFnQixFQUNoQixhQUFxQixFQUNyQixNQUF1QixFQUN2QixhQUFnQztJQUVoQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdELE9BQU8sU0FBUyxDQUNkLE9BQU8sRUFDUCxhQUFhLEVBQ2IsMENBQWdCLEVBQ2hCLElBQUksQ0FBQyxTQUFTLENBQ1osRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQ3pCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ1gsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQ3pCLE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFO1lBQy9CLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUMsRUFDRCxDQUFDLENBQ0YsRUFDRDtRQUNFLFdBQVcsRUFBRSxrQkFBa0I7S0FDaEMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUNELFlBQVk7QUFFWixpQ0FBaUM7QUFDakM7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFNBQVMsQ0FDaEIsT0FBZ0IsRUFDaEIsTUFBYyxFQUNkLEdBQVcsRUFDWCxJQUFpQixFQUNqQixPQUFpRSxFQUFFO0lBRW5FLE9BQU8sR0FBRztTQUNQLEVBQUUsRUFBRTtTQUNKLFNBQVMsQ0FBQztRQUNULE1BQU0sRUFBRSxNQUFNO1FBQ2QsR0FBRyxFQUFFLEdBQUc7UUFDUixJQUFJLEVBQUUsSUFBSTtRQUNWLFFBQVEsRUFBRTtZQUNSLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ3hDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQzFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNyQyxHQUFHLElBQUksQ0FBQyxRQUFRO1NBQ2pCO1FBQ0QsR0FBRyxJQUFJO0tBQ1IsQ0FBQztTQUNELE9BQU8sRUFBRSxDQUFDO0FBQ2YsQ0FBQztBQUNELFlBQVk7QUFFWjs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsT0FBMEIsRUFDMUIsT0FBc0IsRUFDdEIsUUFBd0IsRUFDeEIsV0FBOEIsRUFDOUIsYUFBZ0M7SUFFaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7SUFFM0MsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7UUFDNUIsdUVBQXVFO1FBQ3ZFLGtFQUFrRTtRQUNsRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxPQUFPLENBQUMsS0FBSyxDQUNYLElBQUksTUFBTSxDQUFDLEdBQUcsMENBQTBDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDcEUsQ0FBQztZQUNGLE9BQU8sQ0FBQyxTQUFTLG1EQUFrQyxDQUFDLEVBQUUsMkJBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRSxTQUFTO1NBQ1Y7UUFFRCwyR0FBMkc7UUFDM0csSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ2xELE9BQU8sQ0FBQyxLQUFLLENBQ1gsSUFBSSxNQUFNLENBQUMsR0FBRyxpRUFBaUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUMzRixDQUFDO1lBQ0YsT0FBTyxDQUFDLFNBQVMsbURBQWtDLENBQUMsRUFBRSwyQkFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLFNBQVM7U0FDVjtRQUVELG1FQUFtRTtRQUNuRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUMvQixPQUFPLENBQUMsS0FBSyxDQUNYLElBQUksTUFBTSxDQUFDLEdBQUcsOENBQThDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDeEUsQ0FBQztZQUNGLE9BQU8sQ0FBQyxTQUFTLG1EQUFrQyxDQUFDLEVBQUUsMkJBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRSxTQUFTO1NBQ1Y7UUFFRCxzRUFBc0U7UUFDdEUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FDWCxJQUFJLE1BQU0sQ0FBQyxHQUFHLDBDQUEwQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQ3BFLENBQUM7WUFDRixPQUFPLENBQUMsU0FBUyxtREFBa0MsQ0FBQyxFQUFFLDJCQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEUsU0FBUztTQUNWO1FBRUQsaURBQWlEO1FBQ2pELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUMzRCxnREFBZ0Q7YUFDL0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssVUFBVSxDQUFDO1lBQzNELG9EQUFvRDthQUNuRCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQVUsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sQ0FBQyxTQUFTLG9EQUVmLHFCQUFxQixDQUFDLE1BQU0sRUFDNUIsMkJBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztRQUVGLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxxQkFBcUIsRUFBRTtZQUN2RCxNQUFNLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2pELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUU7Z0JBQ3JDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7b0JBQ2pCLHFEQUFxRDtvQkFDckQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLE1BQU0sQ0FBQyxHQUFHLDhCQUE4QixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxPQUFPLHlCQUF5QixDQUNoRyxDQUFDO2lCQUNIO3FCQUFNLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3BDLGlDQUFpQztvQkFDakMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQzVELENBQUM7d0JBQ0YsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ3RDLE9BQU8sQ0FBQyxTQUFTLDRDQUErQixDQUFDLEVBQUUsMkJBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDL0QsU0FBUztxQkFDVjtvQkFFRCxPQUFPLENBQUMsU0FBUyxnREFFZixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUMvQiwyQkFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztvQkFDRixNQUFNLFVBQVUsR0FDZCxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO29CQUM1RCxPQUFPLENBQUMsU0FBUywrQ0FFZixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsQiwyQkFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO29CQUNGLElBQUksVUFBVSxFQUFFO3dCQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztxQkFDbkQ7eUJBQU07d0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLE1BQU0sQ0FBQyxHQUFHLGNBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUNiLElBQUksT0FBTyx3Q0FDVCxLQUFLLENBQUMsT0FBTyxJQUFJLFlBQ25CLEVBQUUsQ0FDSCxDQUFDO3dCQUNGLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUN2QztpQkFDRjtnQkFDRCxtRUFBbUU7YUFDcEU7U0FDRjtLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUM7SUFFZDs7Ozs7Ozs7OztPQVVHO0lBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxLQUFrQjtRQUM1QyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ3RCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCw2REFBNkQ7UUFDN0QsT0FBTyxDQUNMLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDdkMsb0NBQW9DO1lBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUM7WUFDdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0MsMkJBQTJCLENBQzVCO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM1QywyQkFBMkIsQ0FDNUI7WUFDRCx5QkFBeUI7WUFDekIsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUywyQkFBMkIsQ0FBQyxJQUFZO1FBQy9DLHlFQUF5RTtRQUV6RSxtQ0FBbUM7UUFDbkMsT0FBTyxDQUNMLElBQUksS0FBSyxZQUFZO1lBQ3JCLG1CQUFtQjtZQUNuQixJQUFJLEtBQUssYUFBYTtZQUN0QixJQUFJLEtBQUssU0FBUztZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUM1QixpQkFBaUI7WUFDakIsSUFBSSxLQUFLLE9BQU87WUFDaEIsbUNBQW1DLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM5QyxpQkFBaUI7WUFDakIsSUFBSSxLQUFLLE9BQU87WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FDM0IsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29uc29sZSBmcm9tICdjb25zb2xlJztcbmltcG9ydCB7IGd1bnppcFN5bmMgfSBmcm9tICd6bGliJztcblxuaW1wb3J0IHtcbiAgbWV0cmljU2NvcGUsXG4gIENvbmZpZ3VyYXRpb24sXG4gIE1ldHJpY3NMb2dnZXIsXG4gIFVuaXQsXG59IGZyb20gJ2F3cy1lbWJlZGRlZC1tZXRyaWNzJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCwgU2NoZWR1bGVkRXZlbnQgfSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IGNhcHR1cmVIVFRQc0dsb2JhbCB9IGZyb20gJ2F3cy14cmF5LXNkay1jb3JlJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgeyBEZW55TGlzdENsaWVudCB9IGZyb20gJy4uLy4uL2JhY2tlbmQvZGVueS1saXN0L2NsaWVudC5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IExpY2Vuc2VMaXN0Q2xpZW50IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9saWNlbnNlLWxpc3QvY2xpZW50LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0ICogYXMgYXdzIGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2F3cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IHJlcXVpcmVFbnYgfSBmcm9tICcuLi8uLi9iYWNrZW5kL3NoYXJlZC9lbnYubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBNZXRyaWNOYW1lLFxuICBNQVJLRVJfRklMRV9OQU1FLFxuICBNRVRSSUNTX05BTUVTUEFDRSxcbn0gZnJvbSAnLi9jb25zdGFudHMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBDb3VjaENoYW5nZXMsIERhdGFiYXNlQ2hhbmdlIH0gZnJvbSAnLi9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgUGFja2FnZVZlcnNpb24gfSBmcm9tICcuL3N0YWdlLWFuZC1ub3RpZnkubGFtYmRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBub3JtYWxpemVOUE1NZXRhZGF0YSA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1yZWdpc3RyeS1tZXRhZGF0YScpO1xuXG5jb25zdCBDT05TVFJVQ1RfS0VZV09SRFM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ2NkaycsXG4gICdhd3MtY2RrJyxcbiAgJ2F3c2NkaycsXG4gICdjZGs4cycsXG4gICdjZGt0ZicsXG5dKTtcbmNvbnN0IE5QTV9SRVBMSUNBX1JFR0lTVFJZX1VSTCA9ICdodHRwczovL3JlcGxpY2F0ZS5ucG1qcy5jb20vJztcblxuLyoqXG4gKiBUaGUgcmVsZWFzZSBkYXRlIG9mIGBhd3MtY2RrQDAuOC4wYC4gQW55dGhpbmcgZWFybGllciB0aGFuIHRoaXMgYmFzaWNhbGx5IGlzXG4gKiBub3QgYSByZWxldmFudCBwYWNrYWdlLCBhcyBpdCBjYW5ub3QgcG9zc2libHkgYmUgYSBjb25zdHJ1Y3RzLWJhc2VkIHBhY2thZ2UuXG4gKiBUaGlzIGlzIHVzZWQgdG8gZmFzdC1mb3J3YXJkIG92ZXIgYm9yaW5nIHN0dWZmIHdoZW4gdGhlIHNlcXVlbmNlIG51bWJlciBpc1xuICogcmVzZXQuXG4gKi9cbmNvbnN0IERBV05fT0ZfQ09OU1RSVUNUUyA9IG5ldyBEYXRlKCcyMDE4LTA3LTMxVDEzOjQzOjA0LjYxNVonKTtcblxuLy8gQ29uZmlndXJlIGVtYmVkZGVkIG1ldHJpY3MgZm9ybWF0XG5Db25maWd1cmF0aW9uLm5hbWVzcGFjZSA9IE1FVFJJQ1NfTkFNRVNQQUNFO1xuXG4vLyBNYWtlIHN1cmUgWC1SYXkgdHJhY2VzIHdpbGwgaW5jbHVkZSBIVFRQKHMpIGNhbGxzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNhcHR1cmVIVFRQc0dsb2JhbChyZXF1aXJlKCdodHRwcycpKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jYXB0dXJlSFRUUHNHbG9iYWwocmVxdWlyZSgnaHR0cCcpKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHRyaWdnZXJzIG9uIGEgZml4ZWQgc2NoZWR1bGUgYW5kIHJlYWRzIGEgc3RyZWFtIG9mIGNoYW5nZXMgZnJvbSBucG1qcyBjb3VjaGRiIF9jaGFuZ2VzIGVuZHBvaW50LlxuICogVXBvbiBpbnZvY2F0aW9uIHRoZSBmdW5jdGlvbiBzdGFydHMgcmVhZGluZyBmcm9tIGEgc2VxdWVuY2Ugc3RvcmVkIGluIGFuIHMzIG9iamVjdCAtIHRoZSBgbWFya2VyYC5cbiAqIElmIHRoZSBtYXJrZXIgZmFpbHMgdG8gbG9hZCAob3IgZG8gbm90IGV4aXN0KSwgdGhlIHN0cmVhbSB3aWxsIHN0YXJ0IGZyb20gYG5vd2AgLSB0aGUgbGF0ZXN0IGNoYW5nZS5cbiAqIEZvciBlYWNoIGNoYW5nZTpcbiAqICAtIHRoZSBwYWNrYWdlIHZlcnNpb24gdGFyYmFsbCB3aWxsIGJlIGNvcGllZCBmcm9tIHRoZSBucG0gcmVnaXN0cnkgdG8gYSBzdGF0aW5nIGJ1Y2tldC5cbiAqICAtIGEgbWVzc2FnZSB3aWxsIGJlIHNlbnQgdG8gYW4gc3FzIHF1ZXVlXG4gKiBucG0gcmVnaXN0cnkgQVBJIGRvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vcmVnaXN0cnkvYmxvYi9tYXN0ZXIvZG9jcy9SRUdJU1RSWS1BUEkubWRcbiAqIEBwYXJhbSBjb250ZXh0IGEgTGFtYmRhIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBTY2hlZHVsZWRFdmVudCwgY29udGV4dDogQ29udGV4dCkge1xuICBjb25zb2xlLmxvZyhgRXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpfWApO1xuXG4gIGNvbnN0IHN0YWdpbmdCdWNrZXQgPSByZXF1aXJlRW52KCdCVUNLRVRfTkFNRScpO1xuICBjb25zdCBzdGFnaW5nRnVuY3Rpb24gPSByZXF1aXJlRW52KCdGVU5DVElPTl9OQU1FJyk7XG5cbiAgY29uc3QgZGVueUxpc3QgPSBhd2FpdCBEZW55TGlzdENsaWVudC5uZXdDbGllbnQoKTtcbiAgY29uc3QgbGljZW5zZUxpc3QgPSBhd2FpdCBMaWNlbnNlTGlzdENsaWVudC5uZXdDbGllbnQoKTtcblxuICBjb25zdCBucG0gPSBuZXcgQ291Y2hDaGFuZ2VzKE5QTV9SRVBMSUNBX1JFR0lTVFJZX1VSTCwgJ3JlZ2lzdHJ5Jyk7XG5cbiAgY29uc3QgeyBtYXJrZXI6IGluaXRpYWxNYXJrZXIsIGtub3duVmVyc2lvbnMgfSA9XG4gICAgYXdhaXQgbG9hZExhc3RUcmFuc2FjdGlvbk1hcmtlcihzdGFnaW5nQnVja2V0LCBucG0pO1xuXG4gIC8vIFRoZSBsYXN0IHdyaXR0ZW4gbWFya2VyIHNlcSBpZC5cbiAgbGV0IHVwZGF0ZWRNYXJrZXIgPSBpbml0aWFsTWFya2VyO1xuXG4gIC8vIFRoZSBzbG93ZXN0IGJhdGNoIHByb2Nlc3NpbmcgdGltZSBzbyBmYXIgKHN0YXJ0cyBhdCAzMCBzZWNvbmRzKS4gVGhpcyBpcyBob3cgbXVjaCB0aW1lIHNob3VsZFxuICAvLyBiZSBsZWZ0IGJlZm9yZSB0aW1lb3V0IGlmIGEgbmV3IGJhdGNoIGlzIHRvIGJlIGZldGNoZWQuXG4gIGxldCBtYXhCYXRjaFByb2Nlc3NpbmdUaW1lID0gMzBfMDAwO1xuICAvLyBXaGV0aGVyIHdlIHNob3VsZCBjb250aW51ZSByZWFkaW5nIG1vcmUgaXRlbXMgb3Igbm90Li4uIFRoaXMgaXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIGN1cnJlbnRcbiAgLy8gbGF0ZXN0IGNoYW5nZSBpcyByZWFjaGVkIChpLmU6IG5leHQgcGFnZSBvZiBjaGFuZ2VzIGlzIGVtcHR5KS5cbiAgbGV0IHNob3VsZENvbnRpbnVlID0gdHJ1ZTtcblxuICBkbyB7XG4gICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSBhd2FpdCBucG0uY2hhbmdlcyh1cGRhdGVkTWFya2VyKTtcblxuICAgICAgLy8gQ2xlYXIgYXV0b21hdGljYWxseSBzZXQgZGltZW5zaW9ucyAtIHdlIGRvbid0IG5lZWQgdGhlbSAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2F3cy1lbWJlZGRlZC1tZXRyaWNzLW5vZGUvaXNzdWVzLzczKVxuICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG5cbiAgICAgIC8vIFJlY29yZGluZyBjdXJyZW50IHNlcSByYW5nZSBhbmQgdXBkYXRpbmcgdGhlIGB1cGRhdGVkTWFya2VyYC5cbiAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ1N0YXJ0U2VxJywgdXBkYXRlZE1hcmtlcik7XG4gICAgICB1cGRhdGVkTWFya2VyID0gY2hhbmdlcy5sYXN0X3NlcTtcbiAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0VuZFNlcScsIHVwZGF0ZWRNYXJrZXIpO1xuXG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBiYXRjaCA9IGNoYW5nZXMucmVzdWx0cyBhcyByZWFkb25seSBDaGFuZ2VbXTtcblxuICAgICAgICAvLyBUaGUgbW9zdCByZWNlbnQgXCJtb2RpZmllZFwiIHRpbWVzdGFtcCBvYnNlcnZlZCBpbiB0aGUgYmF0Y2guXG4gICAgICAgIGxldCBsYXN0TW9kaWZpZWQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgICAgIC8vIEVtaXQgbnBtLmpzIHJlcGxpY2F0aW9uIGxhZ1xuICAgICAgICBmb3IgKGNvbnN0IHsgZG9jIH0gb2YgYmF0Y2gpIHtcbiAgICAgICAgICBpZiAoZG9jPy50aW1lPy5tb2RpZmllZCkge1xuICAgICAgICAgICAgY29uc3QgbW9kaWZpZWQgPSBuZXcgRGF0ZShkb2MudGltZS5tb2RpZmllZCk7XG4gICAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgICAgTWV0cmljTmFtZS5OUE1KU19DSEFOR0VfQUdFLFxuICAgICAgICAgICAgICBzdGFydFRpbWUgLSBtb2RpZmllZC5nZXRUaW1lKCksXG4gICAgICAgICAgICAgIFVuaXQuTWlsbGlzZWNvbmRzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGxhc3RNb2RpZmllZCA9PSBudWxsIHx8IGxhc3RNb2RpZmllZCA8IG1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgIGxhc3RNb2RpZmllZCA9IG1vZGlmaWVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCBhIGJhdGNoIG9mICR7YmF0Y2gubGVuZ3RofSBlbGVtZW50KHMpYCk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuQ0hBTkdFX0NPVU5ULCBiYXRjaC5sZW5ndGgsIFVuaXQuQ291bnQpO1xuXG4gICAgICAgIGlmIChsYXN0TW9kaWZpZWQgJiYgbGFzdE1vZGlmaWVkIDwgREFXTl9PRl9DT05TVFJVQ1RTKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgU2tpcHBpbmcgYmF0Y2ggYXMgdGhlIGxhdGVzdCBtb2RpZmljYXRpb24gaXMgJHtsYXN0TW9kaWZpZWR9LCB3aGljaCBpcyBwcmUtQ29uc3RydWN0c2BcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGJhdGNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCAwIGNoYW5nZXMsIGNhdWdodCB1cCB0byBcIm5vd1wiLCBleGl0aW5nLi4uJyk7XG4gICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPYnRhaW4gdGhlIG1vZGlmaWVkIHBhY2thZ2UgdmVyc2lvbiBmcm9tIHRoZSB1cGRhdGUgZXZlbnQsIGFuZCBmaWx0ZXJcbiAgICAgICAgICAvLyBvdXQgcGFja2FnZXMgdGhhdCBhcmUgbm90IG9mIGludGVyZXN0IHRvIHVzIChub3QgY29uc3RydWN0IGxpYnJhcmllcykuXG4gICAgICAgICAgY29uc3QgdmVyc2lvbkluZm9zID0gZ2V0UmVsZXZhbnRWZXJzaW9uSW5mb3MoXG4gICAgICAgICAgICBiYXRjaCxcbiAgICAgICAgICAgIG1ldHJpY3MsXG4gICAgICAgICAgICBkZW55TGlzdCxcbiAgICAgICAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgICAgICAga25vd25WZXJzaW9uc1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgSWRlbnRpZmllZCAke3ZlcnNpb25JbmZvcy5sZW5ndGh9IHJlbGV2YW50IHBhY2thZ2UgdmVyc2lvbiB1cGRhdGUocylgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuUkVMRVZBTlRfUEFDS0FHRV9WRVJTSU9OUyxcbiAgICAgICAgICAgIHZlcnNpb25JbmZvcy5sZW5ndGgsXG4gICAgICAgICAgICBVbml0LkNvdW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFByb2Nlc3MgYWxsIHJlbWFpbmluZyB1cGRhdGVzXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICB2ZXJzaW9uSW5mb3MubWFwKGFzeW5jICh7IGluZm9zLCBtb2RpZmllZCwgc2VxIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW52b2tlQXJnczogUGFja2FnZVZlcnNpb24gPSB7XG4gICAgICAgICAgICAgICAgaW50ZWdyaXR5OiBpbmZvcy5kaXN0LnNoYXN1bSxcbiAgICAgICAgICAgICAgICBtb2RpZmllZDogbW9kaWZpZWQudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBpbmZvcy5uYW1lLFxuICAgICAgICAgICAgICAgIHNlcTogc2VxPy50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHRhcmJhbGxVcmw6IGluZm9zLmRpc3QudGFyYmFsbCxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBpbmZvcy52ZXJzaW9uLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAvLyBcIkZpcmUtYW5kLWZvcmdldFwiIGludm9jYXRpb24gaGVyZS5cbiAgICAgICAgICAgICAgYXdhaXQgYXdzXG4gICAgICAgICAgICAgICAgLmxhbWJkYSgpXG4gICAgICAgICAgICAgICAgLmludm9rZUFzeW5jKHtcbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogc3RhZ2luZ0Z1bmN0aW9uLFxuICAgICAgICAgICAgICAgICAgSW52b2tlQXJnczogSlNPTi5zdHJpbmdpZnkoaW52b2tlQXJncywgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucHJvbWlzZSgpO1xuICAgICAgICAgICAgICAvLyBSZWNvcmQgdGhhdCB0aGlzIGlzIG5vdyBhIFwia25vd25cIiB2ZXJzaW9uIChubyBuZWVkIHRvIHJlLWRpc2NvdmVyKVxuICAgICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChgJHtpbmZvcy5uYW1lfUAke2luZm9zLnZlcnNpb259YCwgbW9kaWZpZWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRpbmcgdGhlIFMzIHN0b3JlZCBtYXJrZXIgd2l0aCB0aGUgbmV3IHNlcSBpZCBhcyBjb21tdW5pY2F0ZWQgYnkgbmFuby5cbiAgICAgICAgYXdhaXQgc2F2ZUxhc3RUcmFuc2FjdGlvbk1hcmtlcihcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHN0YWdpbmdCdWNrZXQsXG4gICAgICAgICAgdXBkYXRlZE1hcmtlcixcbiAgICAgICAgICBrbm93blZlcnNpb25zXG4gICAgICAgICk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICAvLyBNYXJrZXJzIG1heSBub3QgYWx3YXlzIGJlIG51bWVyaWMgKGJ1dCBpbiBwcmFjdGljZSB0aGV5IGFyZSBub3cpLCBzbyB3ZSBwcm90ZWN0IGFnYWluc3QgdGhhdC4uLlxuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZWRNYXJrZXIgPT09ICdudW1iZXInIHx8IC9eXFxkKyQvLnRlc3QodXBkYXRlZE1hcmtlcikpIHtcbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuTEFTVF9TRVEsXG4gICAgICAgICAgICB0eXBlb2YgdXBkYXRlZE1hcmtlciA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgPyB1cGRhdGVkTWFya2VyXG4gICAgICAgICAgICAgIDogcGFyc2VJbnQodXBkYXRlZE1hcmtlciksXG4gICAgICAgICAgICBVbml0Lk5vbmVcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgTWV0cmljTmFtZS5CQVRDSF9QUk9DRVNTSU5HX1RJTUUsXG4gICAgICAgICAgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSxcbiAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICApO1xuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICBNZXRyaWNOYW1lLlJFTUFJTklOR19USU1FLFxuICAgICAgICAgIGNvbnRleHQuZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzKCksXG4gICAgICAgICAgVW5pdC5NaWxsaXNlY29uZHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9IHdoaWxlIChcbiAgICBzaG91bGRDb250aW51ZSAmJlxuICAgIGNvbnRleHQuZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzKCkgPj0gbWF4QmF0Y2hQcm9jZXNzaW5nVGltZVxuICApO1xuXG4gIGNvbnNvbGUubG9nKCdBbGwgZG9uZSBoZXJlLCB3ZSBoYXZlIHN1Y2Nlc3MhJyk7XG5cbiAgcmV0dXJuIHsgaW5pdGlhbE1hcmtlciwgdXBkYXRlZE1hcmtlciB9O1xufVxuXG4vLyNyZWdpb24gTGFzdCB0cmFuc2FjdGlvbiBtYXJrZXJcbi8qKlxuICogTG9hZHMgdGhlIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIGZyb20gUzMuXG4gKlxuICogQHBhcmFtIHJlZ2lzdHJ5IGEgTmFubyBkYXRhYmFzZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBOcG1qcy5jb20gQ291Y2hEQiBpbnN0YW5jZS5cbiAqXG4gKiBAcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIGFuZCB0aGUgbWFwIG9mIHBhY2thZ2UgbmFtZXMgKyB2ZXJzaW9ucyB0byB0aGUgbGFzdCBtb2RpZmljYXRpb25cbiAqICAgICAgICAgIG9mIHRoYXQgcGFja2FnZSB2ZXJzaW9uIHRoYXQgd2FzIHByb2Nlc3NlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZExhc3RUcmFuc2FjdGlvbk1hcmtlcihcbiAgc3RhZ2luZ0J1Y2tldDogc3RyaW5nLFxuICByZWdpc3RyeTogQ291Y2hDaGFuZ2VzXG4pOiBQcm9taXNlPHsgbWFya2VyOiBzdHJpbmcgfCBudW1iZXI7IGtub3duVmVyc2lvbnM6IE1hcDxzdHJpbmcsIERhdGU+IH0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF3c1xuICAgICAgLnMzKClcbiAgICAgIC5nZXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IHN0YWdpbmdCdWNrZXQsXG4gICAgICAgIEtleTogTUFSS0VSX0ZJTEVfTkFNRSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpO1xuICAgIGlmIChyZXNwb25zZS5Db250ZW50RW5jb2RpbmcgPT09ICdnemlwJykge1xuICAgICAgcmVzcG9uc2UuQm9keSA9IGd1bnppcFN5bmMoQnVmZmVyLmZyb20ocmVzcG9uc2UuQm9keSEgYXMgYW55KSk7XG4gICAgfVxuICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZS5Cb2R5IS50b1N0cmluZygndXRmLTgnKSwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgIT09ICdrbm93blZlcnNpb25zJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgRGF0ZT4oKTtcbiAgICAgIGZvciAoY29uc3QgW3BrZ1ZlcnNpb24sIGlzb10gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXNvID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaXNvID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIG1hcC5zZXQocGtnVmVyc2lvbiwgbmV3IERhdGUoaXNvKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgSWdub3JpbmcgaW52YWxpZCBlbnRyeTogJHtwa2dWZXJzaW9ufSA9PiAke2lzb31gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICBkYXRhID0geyBtYXJrZXI6IGRhdGEudG9GaXhlZCgpLCBrbm93blZlcnNpb25zOiBuZXcgTWFwKCkgfTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYFJlYWQgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXI6ICR7ZGF0YS5tYXJrZXJ9YCk7XG5cbiAgICBjb25zdCBkYlVwZGF0ZVNlcSA9IChhd2FpdCByZWdpc3RyeS5pbmZvKCkpLnVwZGF0ZV9zZXE7XG4gICAgaWYgKGRiVXBkYXRlU2VxIDwgZGF0YS5tYXJrZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEN1cnJlbnQgREIgdXBkYXRlX3NlcSAoJHtkYlVwZGF0ZVNlcX0pIGlzIGxvd2VyIHRoYW4gbWFya2VyIChDb3VjaERCIGluc3RhbmNlIHdhcyBsaWtlbHkgcmVwbGFjZWQpLCByZXNldHRpbmcgdG8gMCFgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgbWFya2VyOiAnMCcsIGtub3duVmVyc2lvbnM6IGRhdGEua25vd25WZXJzaW9uIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgIT09ICdOb1N1Y2hLZXknKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYE1hcmtlciBvYmplY3QgKHMzOi8vJHtzdGFnaW5nQnVja2V0fS8ke01BUktFUl9GSUxFX05BTUV9KSBkb2VzIG5vdCBleGlzdCwgc3RhcnRpbmcgZnJvbSBzY3JhdGNoYFxuICAgICk7XG4gICAgcmV0dXJuIHsgbWFya2VyOiAnMCcsIGtub3duVmVyc2lvbnM6IG5ldyBNYXAoKSB9O1xuICB9XG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgaW4gUzMuXG4gKlxuICogQHBhcmFtIG1hcmtlciB0aGUgbGFzdCB0cmFuc2FjdGlvbiBtYXJrZXIgdmFsdWVcbiAqIEBwYXJhbSBrbm93blZlcnNpb25zIHRoZSBtYXAgb2YgcGFja2FnZSBuYW1lICsgdmVyc2lvbiB0byBsYXN0IG1vZGlmaWVkIHRpbWVzdGFtcCBvZiBwYWNrYWdlcyB0aGF0IGhhdmUgYmVlbiBwcm9jZXNzZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVMYXN0VHJhbnNhY3Rpb25NYXJrZXIoXG4gIGNvbnRleHQ6IENvbnRleHQsXG4gIHN0YWdpbmdCdWNrZXQ6IHN0cmluZyxcbiAgbWFya2VyOiBzdHJpbmcgfCBudW1iZXIsXG4gIGtub3duVmVyc2lvbnM6IE1hcDxzdHJpbmcsIERhdGU+XG4pIHtcbiAgY29uc29sZS5sb2coYFVwZGF0aW5nIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIHRvICR7bWFya2VyfWApO1xuICByZXR1cm4gcHV0T2JqZWN0KFxuICAgIGNvbnRleHQsXG4gICAgc3RhZ2luZ0J1Y2tldCxcbiAgICBNQVJLRVJfRklMRV9OQU1FLFxuICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgeyBtYXJrZXIsIGtub3duVmVyc2lvbnMgfSxcbiAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAyXG4gICAgKSxcbiAgICB7XG4gICAgICBDb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH1cbiAgKTtcbn1cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gQXN5bmNocm9ub3VzIFByaW1pdGl2ZXNcbi8qKlxuICogUHV0cyBhbiBvYmplY3QgaW4gdGhlIHN0YWdpbmcgYnVja2V0LCB3aXRoIHN0YW5kYXJkaXplZCBvYmplY3QgbWV0YWRhdGEuXG4gKlxuICogQHBhcmFtIGtleSAgdGhlIGtleSBmb3IgdGhlIG9iamVjdCB0byBiZSBwdXQuXG4gKiBAcGFyYW0gYm9keSB0aGUgYm9keSBvZiB0aGUgb2JqZWN0IHRvIGJlIHB1dC5cbiAqIEBwYXJhbSBvcHRzIGFueSBvdGhlciBvcHRpb25zIHRvIHVzZSB3aGVuIHNlbmRpbmcgdGhlIFMzIHJlcXVlc3QuXG4gKlxuICogQHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgUzMgcmVxdWVzdC5cbiAqL1xuZnVuY3Rpb24gcHV0T2JqZWN0KFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBidWNrZXQ6IHN0cmluZyxcbiAga2V5OiBzdHJpbmcsXG4gIGJvZHk6IEFXUy5TMy5Cb2R5LFxuICBvcHRzOiBPbWl0PEFXUy5TMy5QdXRPYmplY3RSZXF1ZXN0LCAnQnVja2V0JyB8ICdLZXknIHwgJ0JvZHknPiA9IHt9XG4pIHtcbiAgcmV0dXJuIGF3c1xuICAgIC5zMygpXG4gICAgLnB1dE9iamVjdCh7XG4gICAgICBCdWNrZXQ6IGJ1Y2tldCxcbiAgICAgIEtleToga2V5LFxuICAgICAgQm9keTogYm9keSxcbiAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICdMYW1iZGEtTG9nLUdyb3VwJzogY29udGV4dC5sb2dHcm91cE5hbWUsXG4gICAgICAgICdMYW1iZGEtTG9nLVN0cmVhbSc6IGNvbnRleHQubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgJ0xhbWJkYS1SdW4tSWQnOiBjb250ZXh0LmF3c1JlcXVlc3RJZCxcbiAgICAgICAgLi4ub3B0cy5NZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRzLFxuICAgIH0pXG4gICAgLnByb21pc2UoKTtcbn1cbi8vI2VuZHJlZ2lvblxuXG4vKipcbiAqIE9idGFpbnMgdGhlIGBWZXJzaW9uSW5mb2AgY29ycmVzcG9uZGluZyB0byB0aGUgbW9kaWZpZWQgdmVyc2lvbihzKSBpbiB0aGVcbiAqIHByb3ZpZGVkIGBDaGFuZ2VgIG9iamVjdHMsIGVuc3VyZXMgdGhleSBhcmUgcmVsZXZhbnQgKGNvbnN0cnVjdCBsaWJyYXJpZXMpLFxuICogYW5kIHJldHVybnMgdGhvc2Ugb25seS5cbiAqXG4gKiBAcGFyYW0gY2hhbmdlcyB0aGUgY2hhbmdlcyB0byBiZSBwcm9jZXNzZWQuXG4gKiBAcGFyYW0gbWV0cmljcyB0aGUgbWV0cmljcyBsb2dnZXIgdG8gdXNlLlxuICogQHBhcmFtIGRlbnlMaXN0IGRlbnkgbGlzdCBjbGllbnRcbiAqXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2YgYFZlcnNpb25JbmZvYCBvYmplY3RzXG4gKi9cbmZ1bmN0aW9uIGdldFJlbGV2YW50VmVyc2lvbkluZm9zKFxuICBjaGFuZ2VzOiByZWFkb25seSBDaGFuZ2VbXSxcbiAgbWV0cmljczogTWV0cmljc0xvZ2dlcixcbiAgZGVueUxpc3Q6IERlbnlMaXN0Q2xpZW50LFxuICBsaWNlbnNlTGlzdDogTGljZW5zZUxpc3RDbGllbnQsXG4gIGtub3duVmVyc2lvbnM6IE1hcDxzdHJpbmcsIERhdGU+XG4pOiByZWFkb25seSBVcGRhdGVkVmVyc2lvbltdIHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PFVwZGF0ZWRWZXJzaW9uPigpO1xuXG4gIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICAvLyBGaWx0ZXIgb3V0IGFsbCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgYSBcIm5hbWVcIiBpbiB0aGUgZG9jdW1lbnQsIGFzXG4gICAgLy8gdGhlc2UgYXJlIHNjaGVtYXMsIHdoaWNoIGFyZSBub3QgcmVsZXZhbnQgdG8gb3VyIGJ1c2luZXNzIGhlcmUuXG4gICAgaWYgKGNoYW5nZS5kb2MubmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENoYW5nZWQgZG9jdW1lbnQgY29udGFpbnMgbm8gJ25hbWUnOiAke2NoYW5nZS5pZH1gXG4gICAgICApO1xuICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5VTlBST0NFU1NBQkxFX0VOVElUWSwgMSwgVW5pdC5Db3VudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgbm9ybWFsaXplIGZ1bmN0aW9uIGNoYW5nZSB0aGUgb2JqZWN0IGluIHBsYWNlLCBpZiB0aGUgZG9jIG9iamVjdCBpcyBpbnZhbGlkIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmIChub3JtYWxpemVOUE1NZXRhZGF0YShjaGFuZ2UuZG9jKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENoYW5nZWQgZG9jdW1lbnQgaW52YWxpZCwgbnBtIG5vcm1hbGl6ZSByZXR1cm5lZCB1bmRlZmluZWQ6ICR7Y2hhbmdlLmlkfWBcbiAgICAgICk7XG4gICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIFNvbWV0aW1lcywgdGhlcmUgYXJlIG5vIHZlcnNpb25zIGluIHRoZSBkb2N1bWVudC4gV2Ugc2tpcCB0aG9zZS5cbiAgICBpZiAoY2hhbmdlLmRvYy52ZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENoYW5nZWQgZG9jdW1lbnQgY29udGFpbnMgbm8gJ3ZlcnNpb25zJzogJHtjaGFuZ2UuaWR9YFxuICAgICAgKTtcbiAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksIDEsIFVuaXQuQ291bnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gU29tZXRpbWVzLCB0aGVyZSBpcyBubyAndGltZScgZW50cnkgaW4gdGhlIGRvY3VtZW50LiBXZSBza2lwIHRob3NlLlxuICAgIGlmIChjaGFuZ2UuZG9jLnRpbWUgPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGNvbnRhaW5zIG5vICd0aW1lJzogJHtjaGFuZ2UuaWR9YFxuICAgICAgKTtcbiAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksIDEsIFVuaXQuQ291bnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBsYXN0IG1vZGlmaWNhdGlvbiBkYXRlIGZyb20gdGhlIGNoYW5nZVxuICAgIGNvbnN0IHBhY2thZ2VWZXJzaW9uVXBkYXRlcyA9IE9iamVjdC5lbnRyaWVzKGNoYW5nZS5kb2MudGltZSlcbiAgICAgIC8vIElnbm9yZSB0aGUgXCJjcmVhdGVkXCIgYW5kIFwibW9kaWZpZWRcIiBrZXlzIGhlcmVcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09ICdjcmVhdGVkJyAmJiBrZXkgIT09ICdtb2RpZmllZCcpXG4gICAgICAvLyBQYXJzZSBhbGwgdGhlIGRhdGVzIHRvIGVuc3VyZSB0aGV5IGFyZSBjb21wYXJhYmxlXG4gICAgICAubWFwKChbdmVyc2lvbiwgaXNvRGF0ZV0pID0+IFt2ZXJzaW9uLCBuZXcgRGF0ZShpc29EYXRlKV0gYXMgY29uc3QpO1xuICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQ09VTlQsXG4gICAgICBwYWNrYWdlVmVyc2lvblVwZGF0ZXMubGVuZ3RoLFxuICAgICAgVW5pdC5Db3VudFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IFt2ZXJzaW9uLCBtb2RpZmllZF0gb2YgcGFja2FnZVZlcnNpb25VcGRhdGVzKSB7XG4gICAgICBjb25zdCBrbm93bktleSA9IGAke2NoYW5nZS5kb2MubmFtZX1AJHt2ZXJzaW9ufWA7XG4gICAgICBjb25zdCBrbm93biA9IGtub3duVmVyc2lvbnMuZ2V0KGtub3duS2V5KTtcbiAgICAgIGlmIChrbm93biA9PSBudWxsIHx8IGtub3duIDwgbW9kaWZpZWQpIHtcbiAgICAgICAgY29uc3QgaW5mb3MgPSBjaGFuZ2UuZG9jLnZlcnNpb25zW3ZlcnNpb25dO1xuICAgICAgICBpZiAoaW5mb3MgPT0gbnVsbCkge1xuICAgICAgICAgIC8vIENvdWxkIGJlIHRoZSB2ZXJzaW9uIGluIHF1ZXN0aW9uIHdhcyB1bi1wdWJsaXNoZWQuXG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIENvdWxkIG5vdCBmaW5kIGluZm8gZm9yIFwiJHtjaGFuZ2UuZG9jLm5hbWV9QCR7dmVyc2lvbn1cIi4gV2FzIGl0IHVuLXB1Ymxpc2hlZD9gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0NvbnN0cnVjdExpYnJhcnkoaW5mb3MpKSB7XG4gICAgICAgICAgLy8gc2tpcCBpZiB0aGlzIHBhY2thZ2UgaXMgZGVuaWVkXG4gICAgICAgICAgY29uc3QgZGVuaWVkID0gZGVueUxpc3QubG9va3VwKGluZm9zLm5hbWUsIGluZm9zLnZlcnNpb24pO1xuICAgICAgICAgIGlmIChkZW5pZWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIFBhY2thZ2UgZGVuaWVkOiAke0pTT04uc3RyaW5naWZ5KGRlbmllZCl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGtub3duVmVyc2lvbnMuc2V0KGtub3duS2V5LCBtb2RpZmllZCk7XG4gICAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkRFTllfTElTVEVEX0NPVU5ULCAxLCBVbml0LkNvdW50KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgTWV0cmljTmFtZS5QQUNLQUdFX1ZFUlNJT05fQUdFLFxuICAgICAgICAgICAgRGF0ZS5ub3coKSAtIG1vZGlmaWVkLmdldFRpbWUoKSxcbiAgICAgICAgICAgIFVuaXQuTWlsbGlzZWNvbmRzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBpc0VsaWdpYmxlID1cbiAgICAgICAgICAgIGxpY2Vuc2VMaXN0Lmxvb2t1cChpbmZvcy5saWNlbnNlID8/ICdVTkxJQ0VOU0VEJykgIT0gbnVsbDtcbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuSU5FTElHSUJMRV9MSUNFTlNFLFxuICAgICAgICAgICAgaXNFbGlnaWJsZSA/IDAgOiAxLFxuICAgICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlzRWxpZ2libGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgaW5mb3MsIG1vZGlmaWVkLCBzZXE6IGNoYW5nZS5zZXEgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgWyR7Y2hhbmdlLnNlcX1dIFBhY2thZ2UgXCIke1xuICAgICAgICAgICAgICAgIGNoYW5nZS5kb2MubmFtZVxuICAgICAgICAgICAgICB9QCR7dmVyc2lvbn1cIiBkb2VzIG5vdCB1c2UgYWxsb3ctbGlzdGVkIGxpY2Vuc2U6ICR7XG4gICAgICAgICAgICAgICAgaW5mb3MubGljZW5zZSA/PyAnVU5MSUNFTlNFRCdcbiAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChrbm93bktleSwgbW9kaWZpZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBFbHNlIHRoaXMgaXMgbm90IGEgY29uc3RydWN0IGxpYnJhcnksIHNvIHdlJ2xsIGp1c3QgaWdub3JlIGl0Li4uXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgcGFja2FnZSBpcyBcImludGVyZXN0aW5nXCIgdG8gQ29uc3RydWN0SHViIG9yIG5vdC4gVGhpcyBpcyByZWxhdGVkIGJ1dFxuICAgKiBub3QgbmVjZXNzYXJpbHkgaWRlbnRpY2FsIHRvIHRoZSBsb2dpYyBpbiB0aGUgaW5nZXN0aW9uIHByb2Nlc3MgdGhhdCBhbm5vdGF0ZXMgcGFja2FnZSBtZXRhZGF0YVxuICAgKiB3aXRoIGEgY29uc3RydWN0IGZyYW1ld29yayBuYW1lICsgdmVyc2lvbiAodGhvc2UgY291bGQgdWx0aW1hdGVseSBiZSByZS1mYWN0b3JlZCB0byBzaGFyZSBtb3JlXG4gICAqIG9mIHRoZSBsb2dpYy9oZXVyaXN0aWNzLCB0aG91Z2gpLlxuICAgKlxuICAgKiBDb25jcmV0ZWx5LCBpdCBjaGVja3MgZm9yIGEgbGlzdCBvZiBrbm93biBcIm9mZmljaWFsXCIgcGFja2FnZXMgZm9yIHZhcmlvdXMgY29uc3RydWN0IGZyYW1ld29ya3MsXG4gICAqIGFuZCBwYWNrYWdlcyB0aGF0IGhhdmUgYSBkZXBlbmRlbmN5IG9uIHN1Y2ggYSBwYWNrYWdlLiBJdCBhbHNvIGhhcyBhIGtleXdvcmRzIGFsbG93LWxpc3QgYXMgYVxuICAgKiBmYWxsLWJhY2sgKHRoZSBjdXJyZW50IGRlcGVuZGVuY3ktYmFzZWQgbG9naWMgZG9lcyBub3QgY29uc2lkZXIgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgYW5kXG4gICAqIG1pZ2h0IGhlbmNlIG1pc3MgY2VydGFpbiByYXJlIHVzZS1jYXNlcywgd2hpY2gga2V5d29yZHMgd291bGQgcmVzY3VlKS5cbiAgICovXG4gIGZ1bmN0aW9uIGlzQ29uc3RydWN0TGlicmFyeShpbmZvczogVmVyc2lvbkluZm8pOiBib29sZWFuIHtcbiAgICBpZiAoaW5mb3MuanNpaSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFRoZSBcImNvbnN0cnVjdHNcIiBwYWNrYWdlIGlzIGEgc2lnbiBvZiBhIGNvbnN0cnVjdHMgbGlicmFyeVxuICAgIHJldHVybiAoXG4gICAgICBpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UoaW5mb3MubmFtZSkgfHxcbiAgICAgIC8vIFJlY3Vyc2l2ZWx5IGFwcGx5IG9uIGRlcGVuZGVuY2llc1xuICAgICAgT2JqZWN0LmtleXMoaW5mb3MuZGVwZW5kZW5jaWVzID8/IHt9KS5zb21lKGlzQ29uc3RydWN0RnJhbWV3b3JrUGFja2FnZSkgfHxcbiAgICAgIE9iamVjdC5rZXlzKGluZm9zLmRldkRlcGVuZGVuY2llcyA/PyB7fSkuc29tZShcbiAgICAgICAgaXNDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlXG4gICAgICApIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbmZvcy5wZWVyRGVwZW5kZW5jaWVzID8/IHt9KS5zb21lKFxuICAgICAgICBpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2VcbiAgICAgICkgfHxcbiAgICAgIC8vIEtleXdvcmQtYmFzZWQgZmFsbGJhY2tcbiAgICAgIGluZm9zLmtleXdvcmRzPy5zb21lKChrdykgPT4gQ09OU1RSVUNUX0tFWVdPUkRTLmhhcyhrdykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWNrYWdlIGlzIG9uZSBvZiB0aGUga25vd24gY29uc3RydWN0IGZyYW1ld29yaydzIGZpcnN0IHBhcnR5IHBhY2thZ2VzOlxuICAgKiAtIEBhd3MtY2RrLypcbiAgICogLSBAY2RrdGYvKlxuICAgKiAtIGNkazhzIG9yIGNkazhzLXBsdXNcbiAgICovXG4gIGZ1bmN0aW9uIGlzQ29uc3RydWN0RnJhbWV3b3JrUGFja2FnZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBJTVBPUlRBTlQgTk9URTogUHJlZml4IG1hdGNoaW5nIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIEBzY29wZS8gbmFtZXMuXG5cbiAgICAvLyBUaGUgbG93LWxldmVsIGNvbnN0cnVjdHMgcGFja2FnZVxuICAgIHJldHVybiAoXG4gICAgICBuYW1lID09PSAnY29uc3RydWN0cycgfHxcbiAgICAgIC8vIEFXUyBDREsgUGFja2FnZXNcbiAgICAgIG5hbWUgPT09ICdhd3MtY2RrLWxpYicgfHxcbiAgICAgIG5hbWUgPT09ICdtb25vY2RrJyB8fFxuICAgICAgbmFtZS5zdGFydHNXaXRoKCdAYXdzLWNkay8nKSB8fFxuICAgICAgLy8gQ0RLOHMgcGFja2FnZXNcbiAgICAgIG5hbWUgPT09ICdjZGs4cycgfHxcbiAgICAgIC9eY2RrOHMtcGx1cyg/Oi0oPzoxN3wyMHwyMXwyMikpPyQvLnRlc3QobmFtZSkgfHxcbiAgICAgIC8vIENES1RmIHBhY2thZ2VzXG4gICAgICBuYW1lID09PSAnY2RrdGYnIHx8XG4gICAgICBuYW1lLnN0YXJ0c1dpdGgoJ0BjZGt0Zi8nKVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc2NoZW1lIG9mIGEgcGFja2FnZSB2ZXJzaW9uIGluIHRoZSB1cGRhdGUuIEluY2x1ZGVzIHRoZSBwYWNrYWdlLmpzb24ga2V5cywgYXMgd2VsbCBhcyBzb21lIGFkZGl0aW9uYWwgbnBtIG1ldGFkYXRhXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vcmVnaXN0cnkvYmxvYi9tYXN0ZXIvZG9jcy9SRUdJU1RSWS1BUEkubWQjdmVyc2lvblxuICovXG5pbnRlcmZhY2UgVmVyc2lvbkluZm8ge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgZGV2RGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmNpZXM/OiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkganNpaTogdW5rbm93bjtcbiAgcmVhZG9ubHkgbGljZW5zZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICByZWFkb25seSBrZXl3b3Jkczogc3RyaW5nW107XG4gIHJlYWRvbmx5IGRpc3Q6IHtcbiAgICByZWFkb25seSBzaGFzdW06IHN0cmluZztcbiAgICByZWFkb25seSB0YXJiYWxsOiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVwZGF0ZWRWZXJzaW9uIHtcbiAgLyoqXG4gICAqIFRoZSBgVmVyc2lvbkluZm9gIGZvciB0aGUgbW9kaWZpZWQgcGFja2FnZSB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5mb3M6IFZlcnNpb25JbmZvO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgYFZlcnNpb25JbmZvYCB3YXMgbGFzdCBtb2RpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGlmaWVkOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgQ291Y2hEQiB0cmFuc2FjdGlvbiBudW1iZXIgZm9yIHRoZSB1cGRhdGUuXG4gICAqL1xuICByZWFkb25seSBzZXE/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmludGVyZmFjZSBEb2N1bWVudCB7XG4gIC8qKlxuICAgKiBhIExpc3Qgb2YgYWxsIFZlcnNpb24gb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2VcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25zOiB7IFtrZXk6IHN0cmluZ106IFZlcnNpb25JbmZvIHwgdW5kZWZpbmVkIH07XG5cbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlJ3MgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGltZXN0YW1wcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVudC4gVGhlIHZhbHVlcyBhcmUgSVNPLTg2MDEgZW5jb2RlZFxuICAgKiB0aW1lc3RhbXBzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZToge1xuICAgIHJlYWRvbmx5IGNyZWF0ZWQ6IHN0cmluZztcbiAgICByZWFkb25seSBtb2RpZmllZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IFt2ZXJzaW9uOiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuaW50ZXJmYWNlIENoYW5nZSBleHRlbmRzIERhdGFiYXNlQ2hhbmdlIHtcbiAgcmVhZG9ubHkgZG9jOiBEb2N1bWVudDtcbn1cbiJdfQ==
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLWpzLWZvbGxvd2VyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvbnBtanMvbnBtLWpzLWZvbGxvd2VyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsK0JBQWtDO0FBRWxDLCtEQUs4QjtBQUU5Qix5REFBdUQ7QUFDdkQsaUVBQWlFO0FBQ2pFLHVGQUE4RTtBQUM5RSwwRkFBb0Y7QUFDcEYsOERBQThEO0FBQzlELDhFQUFvRTtBQUNwRSx1RUFJbUM7QUFDbkMsK0VBQTZFO0FBRTdFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sa0JBQWtCLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ3RELEtBQUs7SUFDTCxTQUFTO0lBQ1QsUUFBUTtJQUNSLE9BQU87SUFDUCxPQUFPO0NBQ1IsQ0FBQyxDQUFDO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRTs7Ozs7R0FLRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUVoRSxvQ0FBb0M7QUFDcEMsb0NBQWEsQ0FBQyxTQUFTLEdBQUcsMkNBQWlCLENBQUM7QUFFNUMscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxzQ0FBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyQyxpRUFBaUU7QUFDakUsc0NBQWtCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFFcEM7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFxQixFQUFFLE9BQWdCO0lBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FB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QixJQUFJLEtBQUssT0FBTztZQUNoQixtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzlDLGlCQUFpQjtZQUNqQixJQUFJLEtBQUssT0FBTztZQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zb2xlIGZyb20gJ2NvbnNvbGUnO1xuaW1wb3J0IHsgZ3VuemlwU3luYyB9IGZyb20gJ3psaWInO1xuXG5pbXBvcnQge1xuICBtZXRyaWNTY29wZSxcbiAgQ29uZmlndXJhdGlvbixcbiAgTWV0cmljc0xvZ2dlcixcbiAgVW5pdCxcbn0gZnJvbSAnYXdzLWVtYmVkZGVkLW1ldHJpY3MnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0LCBTY2hlZHVsZWRFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgY2FwdHVyZUhUVFBzR2xvYmFsIH0gZnJvbSAnYXdzLXhyYXktc2RrLWNvcmUnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmltcG9ydCB7IERlbnlMaXN0Q2xpZW50IH0gZnJvbSAnLi4vLi4vYmFja2VuZC9kZW55LWxpc3QvY2xpZW50LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgTGljZW5zZUxpc3RDbGllbnQgfSBmcm9tICcuLi8uLi9iYWNrZW5kL2xpY2Vuc2UtbGlzdC9jbGllbnQubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnLi4vLi4vYmFja2VuZC9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgcmVxdWlyZUVudiB9IGZyb20gJy4uLy4uL2JhY2tlbmQvc2hhcmVkL2Vudi5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7XG4gIE1ldHJpY05hbWUsXG4gIE1BUktFUl9GSUxFX05BTUUsXG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxufSBmcm9tICcuL2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IENvdWNoQ2hhbmdlcywgRGF0YWJhc2VDaGFuZ2UgfSBmcm9tICcuL2NvdWNoLWNoYW5nZXMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBQYWNrYWdlVmVyc2lvbiB9IGZyb20gJy4vc3RhZ2UtYW5kLW5vdGlmeS5sYW1iZGEnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IG5vcm1hbGl6ZU5QTU1ldGFkYXRhID0gcmVxdWlyZSgnbm9ybWFsaXplLXJlZ2lzdHJ5LW1ldGFkYXRhJyk7XG5cbmNvbnN0IENPTlNUUlVDVF9LRVlXT1JEUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnY2RrJyxcbiAgJ2F3cy1jZGsnLFxuICAnYXdzY2RrJyxcbiAgJ2NkazhzJyxcbiAgJ2Nka3RmJyxcbl0pO1xuY29uc3QgTlBNX1JFUExJQ0FfUkVHSVNUUllfVVJMID0gJ2h0dHBzOi8vcmVwbGljYXRlLm5wbWpzLmNvbS8nO1xuXG4vKipcbiAqIFRoZSByZWxlYXNlIGRhdGUgb2YgYGF3cy1jZGtAMC44LjBgLiBBbnl0aGluZyBlYXJsaWVyIHRoYW4gdGhpcyBiYXNpY2FsbHkgaXNcbiAqIG5vdCBhIHJlbGV2YW50IHBhY2thZ2UsIGFzIGl0IGNhbm5vdCBwb3NzaWJseSBiZSBhIGNvbnN0cnVjdHMtYmFzZWQgcGFja2FnZS5cbiAqIFRoaXMgaXMgdXNlZCB0byBmYXN0LWZvcndhcmQgb3ZlciBib3Jpbmcgc3R1ZmYgd2hlbiB0aGUgc2VxdWVuY2UgbnVtYmVyIGlzXG4gKiByZXNldC5cbiAqL1xuY29uc3QgREFXTl9PRl9DT05TVFJVQ1RTID0gbmV3IERhdGUoJzIwMTgtMDctMzFUMTM6NDM6MDQuNjE1WicpO1xuXG4vLyBDb25maWd1cmUgZW1iZWRkZWQgbWV0cmljcyBmb3JtYXRcbkNvbmZpZ3VyYXRpb24ubmFtZXNwYWNlID0gTUVUUklDU19OQU1FU1BBQ0U7XG5cbi8vIE1ha2Ugc3VyZSBYLVJheSB0cmFjZXMgd2lsbCBpbmNsdWRlIEhUVFAocykgY2FsbHMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY2FwdHVyZUhUVFBzR2xvYmFsKHJlcXVpcmUoJ2h0dHBzJykpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNhcHR1cmVIVFRQc0dsb2JhbChyZXF1aXJlKCdodHRwJykpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgb24gYSBmaXhlZCBzY2hlZHVsZSBhbmQgcmVhZHMgYSBzdHJlYW0gb2YgY2hhbmdlcyBmcm9tIG5wbWpzIGNvdWNoZGIgX2NoYW5nZXMgZW5kcG9pbnQuXG4gKiBVcG9uIGludm9jYXRpb24gdGhlIGZ1bmN0aW9uIHN0YXJ0cyByZWFkaW5nIGZyb20gYSBzZXF1ZW5jZSBzdG9yZWQgaW4gYW4gczMgb2JqZWN0IC0gdGhlIGBtYXJrZXJgLlxuICogSWYgdGhlIG1hcmtlciBmYWlscyB0byBsb2FkIChvciBkbyBub3QgZXhpc3QpLCB0aGUgc3RyZWFtIHdpbGwgc3RhcnQgZnJvbSBgbm93YCAtIHRoZSBsYXRlc3QgY2hhbmdlLlxuICogRm9yIGVhY2ggY2hhbmdlOlxuICogIC0gdGhlIHBhY2thZ2UgdmVyc2lvbiB0YXJiYWxsIHdpbGwgYmUgY29waWVkIGZyb20gdGhlIG5wbSByZWdpc3RyeSB0byBhIHN0YXRpbmcgYnVja2V0LlxuICogIC0gYSBtZXNzYWdlIHdpbGwgYmUgc2VudCB0byBhbiBzcXMgcXVldWVcbiAqIG5wbSByZWdpc3RyeSBBUEkgZG9jczogaHR0cHM6Ly9naXRodWIuY29tL25wbS9yZWdpc3RyeS9ibG9iL21hc3Rlci9kb2NzL1JFR0lTVFJZLUFQSS5tZFxuICogQHBhcmFtIGNvbnRleHQgYSBMYW1iZGEgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IFNjaGVkdWxlZEV2ZW50LCBjb250ZXh0OiBDb250ZXh0KSB7XG4gIGNvbnNvbGUubG9nKGBFdmVudDogJHtKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMil9YCk7XG5cbiAgY29uc3Qgc3RhZ2luZ0J1Y2tldCA9IHJlcXVpcmVFbnYoJ0JVQ0tFVF9OQU1FJyk7XG4gIGNvbnN0IHN0YWdpbmdGdW5jdGlvbiA9IHJlcXVpcmVFbnYoJ0ZVTkNUSU9OX05BTUUnKTtcblxuICBjb25zdCBkZW55TGlzdCA9IGF3YWl0IERlbnlMaXN0Q2xpZW50Lm5ld0NsaWVudCgpO1xuICBjb25zdCBsaWNlbnNlTGlzdCA9IGF3YWl0IExpY2Vuc2VMaXN0Q2xpZW50Lm5ld0NsaWVudCgpO1xuXG4gIGNvbnN0IG5wbSA9IG5ldyBDb3VjaENoYW5nZXMoTlBNX1JFUExJQ0FfUkVHSVNUUllfVVJMLCAncmVnaXN0cnknKTtcblxuICBjb25zdCB7IG1hcmtlcjogaW5pdGlhbE1hcmtlciwga25vd25WZXJzaW9ucyB9ID1cbiAgICBhd2FpdCBsb2FkTGFzdFRyYW5zYWN0aW9uTWFya2VyKHN0YWdpbmdCdWNrZXQsIG5wbSk7XG5cbiAgLy8gVGhlIGxhc3Qgd3JpdHRlbiBtYXJrZXIgc2VxIGlkLlxuICBsZXQgdXBkYXRlZE1hcmtlciA9IGluaXRpYWxNYXJrZXI7XG5cbiAgLy8gVGhlIHNsb3dlc3QgYmF0Y2ggcHJvY2Vzc2luZyB0aW1lIHNvIGZhciAoc3RhcnRzIGF0IDMwIHNlY29uZHMpLiBUaGlzIGlzIGhvdyBtdWNoIHRpbWUgc2hvdWxkXG4gIC8vIGJlIGxlZnQgYmVmb3JlIHRpbWVvdXQgaWYgYSBuZXcgYmF0Y2ggaXMgdG8gYmUgZmV0Y2hlZC5cbiAgbGV0IG1heEJhdGNoUHJvY2Vzc2luZ1RpbWUgPSAzMF8wMDA7XG4gIC8vIFdoZXRoZXIgd2Ugc2hvdWxkIGNvbnRpbnVlIHJlYWRpbmcgbW9yZSBpdGVtcyBvciBub3QuLi4gVGhpcyBpcyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgY3VycmVudFxuICAvLyBsYXRlc3QgY2hhbmdlIGlzIHJlYWNoZWQgKGkuZTogbmV4dCBwYWdlIG9mIGNoYW5nZXMgaXMgZW1wdHkpLlxuICBsZXQgc2hvdWxkQ29udGludWUgPSB0cnVlO1xuXG4gIGRvIHtcbiAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ1BvbGxpbmcgY2hhbmdlcyBmcm9tIG5wbSByZXBsaWNhJyk7XG4gICAgICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgbnBtLmNoYW5nZXModXBkYXRlZE1hcmtlcik7XG5cbiAgICAgIC8vIENsZWFyIGF1dG9tYXRpY2FsbHkgc2V0IGRpbWVuc2lvbnMgLSB3ZSBkb24ndCBuZWVkIHRoZW0gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83MylcbiAgICAgIG1ldHJpY3Muc2V0RGltZW5zaW9ucygpO1xuXG4gICAgICAvLyBSZWNvcmRpbmcgY3VycmVudCBzZXEgcmFuZ2UgYW5kIHVwZGF0aW5nIHRoZSBgdXBkYXRlZE1hcmtlcmAuXG4gICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdTdGFydFNlcScsIHVwZGF0ZWRNYXJrZXIpO1xuICAgICAgdXBkYXRlZE1hcmtlciA9IGNoYW5nZXMubGFzdF9zZXE7XG4gICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFbmRTZXEnLCB1cGRhdGVkTWFya2VyKTtcblxuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmF0Y2ggPSBjaGFuZ2VzLnJlc3VsdHMgYXMgcmVhZG9ubHkgQ2hhbmdlW107XG5cbiAgICAgICAgLy8gVGhlIG1vc3QgcmVjZW50IFwibW9kaWZpZWRcIiB0aW1lc3RhbXAgb2JzZXJ2ZWQgaW4gdGhlIGJhdGNoLlxuICAgICAgICBsZXQgbGFzdE1vZGlmaWVkOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBFbWl0IG5wbS5qcyByZXBsaWNhdGlvbiBsYWdcbiAgICAgICAgZm9yIChjb25zdCB7IGRvYyB9IG9mIGJhdGNoKSB7XG4gICAgICAgICAgaWYgKGRvYz8udGltZT8ubW9kaWZpZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gbmV3IERhdGUoZG9jLnRpbWUubW9kaWZpZWQpO1xuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICAgIE1ldHJpY05hbWUuTlBNSlNfQ0hBTkdFX0FHRSxcbiAgICAgICAgICAgICAgc3RhcnRUaW1lIC0gbW9kaWZpZWQuZ2V0VGltZSgpLFxuICAgICAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChsYXN0TW9kaWZpZWQgPT0gbnVsbCB8fCBsYXN0TW9kaWZpZWQgPCBtb2RpZmllZCkge1xuICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQgPSBtb2RpZmllZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgYSBiYXRjaCBvZiAke2JhdGNoLmxlbmd0aH0gZWxlbWVudChzKWApO1xuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkNIQU5HRV9DT1VOVCwgYmF0Y2gubGVuZ3RoLCBVbml0LkNvdW50KTtcblxuICAgICAgICBpZiAobGFzdE1vZGlmaWVkICYmIGxhc3RNb2RpZmllZCA8IERBV05fT0ZfQ09OU1RSVUNUUykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFNraXBwaW5nIGJhdGNoIGFzIHRoZSBsYXRlc3QgbW9kaWZpY2F0aW9uIGlzICR7bGFzdE1vZGlmaWVkfSwgd2hpY2ggaXMgcHJlLUNvbnN0cnVjdHNgXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChiYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgMCBjaGFuZ2VzLCBjYXVnaHQgdXAgdG8gXCJub3dcIiwgZXhpdGluZy4uLicpO1xuICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT2J0YWluIHRoZSBtb2RpZmllZCBwYWNrYWdlIHZlcnNpb24gZnJvbSB0aGUgdXBkYXRlIGV2ZW50LCBhbmQgZmlsdGVyXG4gICAgICAgICAgLy8gb3V0IHBhY2thZ2VzIHRoYXQgYXJlIG5vdCBvZiBpbnRlcmVzdCB0byB1cyAobm90IGNvbnN0cnVjdCBsaWJyYXJpZXMpLlxuICAgICAgICAgIGNvbnN0IHZlcnNpb25JbmZvcyA9IGdldFJlbGV2YW50VmVyc2lvbkluZm9zKFxuICAgICAgICAgICAgYmF0Y2gsXG4gICAgICAgICAgICBtZXRyaWNzLFxuICAgICAgICAgICAgZGVueUxpc3QsXG4gICAgICAgICAgICBsaWNlbnNlTGlzdCxcbiAgICAgICAgICAgIGtub3duVmVyc2lvbnNcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYElkZW50aWZpZWQgJHt2ZXJzaW9uSW5mb3MubGVuZ3RofSByZWxldmFudCBwYWNrYWdlIHZlcnNpb24gdXBkYXRlKHMpYFxuICAgICAgICAgICk7XG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICAgICAgICB2ZXJzaW9uSW5mb3MubGVuZ3RoLFxuICAgICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBQcm9jZXNzIGFsbCByZW1haW5pbmcgdXBkYXRlc1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdmVyc2lvbkluZm9zLm1hcChhc3luYyAoeyBpbmZvcywgbW9kaWZpZWQsIHNlcSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGludm9rZUFyZ3M6IFBhY2thZ2VWZXJzaW9uID0ge1xuICAgICAgICAgICAgICAgIGludGVncml0eTogaW5mb3MuZGlzdC5zaGFzdW0sXG4gICAgICAgICAgICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgbmFtZTogaW5mb3MubmFtZSxcbiAgICAgICAgICAgICAgICBzZXE6IHNlcT8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0YXJiYWxsVXJsOiBpbmZvcy5kaXN0LnRhcmJhbGwsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogaW5mb3MudmVyc2lvbixcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgLy8gXCJGaXJlLWFuZC1mb3JnZXRcIiBpbnZvY2F0aW9uIGhlcmUuXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTZW5kaW5nICR7aW52b2tlQXJncy50YXJiYWxsVXJsfSBmb3Igc3RhZ2luZ2ApO1xuICAgICAgICAgICAgICBhd2FpdCBhd3NcbiAgICAgICAgICAgICAgICAubGFtYmRhKClcbiAgICAgICAgICAgICAgICAuaW52b2tlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiBzdGFnaW5nRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICBJbnZva2VBcmdzOiBKU09OLnN0cmluZ2lmeShpbnZva2VBcmdzLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5wcm9taXNlKCk7XG4gICAgICAgICAgICAgIC8vIFJlY29yZCB0aGF0IHRoaXMgaXMgbm93IGEgXCJrbm93blwiIHZlcnNpb24gKG5vIG5lZWQgdG8gcmUtZGlzY292ZXIpXG4gICAgICAgICAgICAgIGtub3duVmVyc2lvbnMuc2V0KGAke2luZm9zLm5hbWV9QCR7aW5mb3MudmVyc2lvbn1gLCBtb2RpZmllZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGluZyB0aGUgUzMgc3RvcmVkIG1hcmtlciB3aXRoIHRoZSBuZXcgc2VxIGlkIGFzIGNvbW11bmljYXRlZCBieSBuYW5vLlxuICAgICAgICBhd2FpdCBzYXZlTGFzdFRyYW5zYWN0aW9uTWFya2VyKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc3RhZ2luZ0J1Y2tldCxcbiAgICAgICAgICB1cGRhdGVkTWFya2VyLFxuICAgICAgICAgIGtub3duVmVyc2lvbnNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1N1Y2Nlc3NmdWxseSB1cGRhdGVkIG1hcmtlcicpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gTWFya2VycyBtYXkgbm90IGFsd2F5cyBiZSBudW1lcmljIChidXQgaW4gcHJhY3RpY2UgdGhleSBhcmUgbm93KSwgc28gd2UgcHJvdGVjdCBhZ2FpbnN0IHRoYXQuLi5cbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVkTWFya2VyID09PSAnbnVtYmVyJyB8fCAvXlxcZCskLy50ZXN0KHVwZGF0ZWRNYXJrZXIpKSB7XG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICBNZXRyaWNOYW1lLkxBU1RfU0VRLFxuICAgICAgICAgICAgdHlwZW9mIHVwZGF0ZWRNYXJrZXIgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgID8gdXBkYXRlZE1hcmtlclxuICAgICAgICAgICAgICA6IHBhcnNlSW50KHVwZGF0ZWRNYXJrZXIpLFxuICAgICAgICAgICAgVW5pdC5Ob25lXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuQkFUQ0hfUFJPQ0VTU0lOR19USU1FLFxuICAgICAgICAgIERhdGUubm93KCkgLSBzdGFydFRpbWUsXG4gICAgICAgICAgVW5pdC5NaWxsaXNlY29uZHNcbiAgICAgICAgKTtcbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgTWV0cmljTmFtZS5SRU1BSU5JTkdfVElNRSxcbiAgICAgICAgICBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpLFxuICAgICAgICAgIFVuaXQuTWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfSB3aGlsZSAoXG4gICAgc2hvdWxkQ29udGludWUgJiZcbiAgICBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpID49IG1heEJhdGNoUHJvY2Vzc2luZ1RpbWVcbiAgKTtcblxuICBjb25zb2xlLmxvZygnQWxsIGRvbmUgaGVyZSwgd2UgaGF2ZSBzdWNjZXNzIScpO1xuXG4gIHJldHVybiB7IGluaXRpYWxNYXJrZXIsIHVwZGF0ZWRNYXJrZXIgfTtcbn1cblxuLy8jcmVnaW9uIExhc3QgdHJhbnNhY3Rpb24gbWFya2VyXG4vKipcbiAqIExvYWRzIHRoZSBsYXN0IHRyYW5zYWN0aW9uIG1hcmtlciBmcm9tIFMzLlxuICpcbiAqIEBwYXJhbSByZWdpc3RyeSBhIE5hbm8gZGF0YWJhc2UgY29ycmVzcG9uZGluZyB0byB0aGUgTnBtanMuY29tIENvdWNoREIgaW5zdGFuY2UuXG4gKlxuICogQHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBsYXN0IHRyYW5zYWN0aW9uIG1hcmtlciBhbmQgdGhlIG1hcCBvZiBwYWNrYWdlIG5hbWVzICsgdmVyc2lvbnMgdG8gdGhlIGxhc3QgbW9kaWZpY2F0aW9uXG4gKiAgICAgICAgICBvZiB0aGF0IHBhY2thZ2UgdmVyc2lvbiB0aGF0IHdhcyBwcm9jZXNzZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRMYXN0VHJhbnNhY3Rpb25NYXJrZXIoXG4gIHN0YWdpbmdCdWNrZXQ6IHN0cmluZyxcbiAgcmVnaXN0cnk6IENvdWNoQ2hhbmdlc1xuKTogUHJvbWlzZTx7IG1hcmtlcjogc3RyaW5nIHwgbnVtYmVyOyBrbm93blZlcnNpb25zOiBNYXA8c3RyaW5nLCBEYXRlPiB9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhd3NcbiAgICAgIC5zMygpXG4gICAgICAuZ2V0T2JqZWN0KHtcbiAgICAgICAgQnVja2V0OiBzdGFnaW5nQnVja2V0LFxuICAgICAgICBLZXk6IE1BUktFUl9GSUxFX05BTUUsXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKTtcbiAgICBpZiAocmVzcG9uc2UuQ29udGVudEVuY29kaW5nID09PSAnZ3ppcCcpIHtcbiAgICAgIHJlc3BvbnNlLkJvZHkgPSBndW56aXBTeW5jKEJ1ZmZlci5mcm9tKHJlc3BvbnNlLkJvZHkhIGFzIGFueSkpO1xuICAgIH1cbiAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UuQm9keSEudG9TdHJpbmcoJ3V0Zi04JyksIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAna25vd25WZXJzaW9ucycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIERhdGU+KCk7XG4gICAgICBmb3IgKGNvbnN0IFtwa2dWZXJzaW9uLCBpc29dIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgICAgICBpZiAodHlwZW9mIGlzbyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGlzbyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBtYXAuc2V0KHBrZ1ZlcnNpb24sIG5ldyBEYXRlKGlzbykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYElnbm9yaW5nIGludmFsaWQgZW50cnk6ICR7cGtnVmVyc2lvbn0gPT4gJHtpc299YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXA7XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0YSA9IHsgbWFya2VyOiBkYXRhLnRvRml4ZWQoKSwga25vd25WZXJzaW9uczogbmV3IE1hcCgpIH07XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGBSZWFkIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyOiAke2RhdGEubWFya2VyfWApO1xuXG4gICAgY29uc3QgZGJVcGRhdGVTZXEgPSAoYXdhaXQgcmVnaXN0cnkuaW5mbygpKS51cGRhdGVfc2VxO1xuICAgIGlmIChkYlVwZGF0ZVNlcSA8IGRhdGEubWFya2VyKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBDdXJyZW50IERCIHVwZGF0ZV9zZXEgKCR7ZGJVcGRhdGVTZXF9KSBpcyBsb3dlciB0aGFuIG1hcmtlciAoQ291Y2hEQiBpbnN0YW5jZSB3YXMgbGlrZWx5IHJlcGxhY2VkKSwgcmVzZXR0aW5nIHRvIDAhYFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IG1hcmtlcjogJzAnLCBrbm93blZlcnNpb25zOiBkYXRhLmtub3duVmVyc2lvbiB9O1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvci5jb2RlICE9PSAnTm9TdWNoS2V5Jykge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBNYXJrZXIgb2JqZWN0IChzMzovLyR7c3RhZ2luZ0J1Y2tldH0vJHtNQVJLRVJfRklMRV9OQU1FfSkgZG9lcyBub3QgZXhpc3QsIHN0YXJ0aW5nIGZyb20gc2NyYXRjaGBcbiAgICApO1xuICAgIHJldHVybiB7IG1hcmtlcjogJzAnLCBrbm93blZlcnNpb25zOiBuZXcgTWFwKCkgfTtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIGluIFMzLlxuICpcbiAqIEBwYXJhbSBtYXJrZXIgdGhlIGxhc3QgdHJhbnNhY3Rpb24gbWFya2VyIHZhbHVlXG4gKiBAcGFyYW0ga25vd25WZXJzaW9ucyB0aGUgbWFwIG9mIHBhY2thZ2UgbmFtZSArIHZlcnNpb24gdG8gbGFzdCBtb2RpZmllZCB0aW1lc3RhbXAgb2YgcGFja2FnZXMgdGhhdCBoYXZlIGJlZW4gcHJvY2Vzc2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiBzYXZlTGFzdFRyYW5zYWN0aW9uTWFya2VyKFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBzdGFnaW5nQnVja2V0OiBzdHJpbmcsXG4gIG1hcmtlcjogc3RyaW5nIHwgbnVtYmVyLFxuICBrbm93blZlcnNpb25zOiBNYXA8c3RyaW5nLCBEYXRlPlxuKSB7XG4gIGNvbnNvbGUubG9nKGBVcGRhdGluZyBsYXN0IHRyYW5zYWN0aW9uIG1hcmtlciB0byAke21hcmtlcn1gKTtcbiAgcmV0dXJuIHB1dE9iamVjdChcbiAgICBjb250ZXh0LFxuICAgIHN0YWdpbmdCdWNrZXQsXG4gICAgTUFSS0VSX0ZJTEVfTkFNRSxcbiAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgIHsgbWFya2VyLCBrbm93blZlcnNpb25zIH0sXG4gICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgMlxuICAgICksXG4gICAge1xuICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9XG4gICk7XG59XG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIEFzeW5jaHJvbm91cyBQcmltaXRpdmVzXG4vKipcbiAqIFB1dHMgYW4gb2JqZWN0IGluIHRoZSBzdGFnaW5nIGJ1Y2tldCwgd2l0aCBzdGFuZGFyZGl6ZWQgb2JqZWN0IG1ldGFkYXRhLlxuICpcbiAqIEBwYXJhbSBrZXkgIHRoZSBrZXkgZm9yIHRoZSBvYmplY3QgdG8gYmUgcHV0LlxuICogQHBhcmFtIGJvZHkgdGhlIGJvZHkgb2YgdGhlIG9iamVjdCB0byBiZSBwdXQuXG4gKiBAcGFyYW0gb3B0cyBhbnkgb3RoZXIgb3B0aW9ucyB0byB1c2Ugd2hlbiBzZW5kaW5nIHRoZSBTMyByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIFMzIHJlcXVlc3QuXG4gKi9cbmZ1bmN0aW9uIHB1dE9iamVjdChcbiAgY29udGV4dDogQ29udGV4dCxcbiAgYnVja2V0OiBzdHJpbmcsXG4gIGtleTogc3RyaW5nLFxuICBib2R5OiBBV1MuUzMuQm9keSxcbiAgb3B0czogT21pdDxBV1MuUzMuUHV0T2JqZWN0UmVxdWVzdCwgJ0J1Y2tldCcgfCAnS2V5JyB8ICdCb2R5Jz4gPSB7fVxuKSB7XG4gIHJldHVybiBhd3NcbiAgICAuczMoKVxuICAgIC5wdXRPYmplY3Qoe1xuICAgICAgQnVja2V0OiBidWNrZXQsXG4gICAgICBLZXk6IGtleSxcbiAgICAgIEJvZHk6IGJvZHksXG4gICAgICBNZXRhZGF0YToge1xuICAgICAgICAnTGFtYmRhLUxvZy1Hcm91cCc6IGNvbnRleHQubG9nR3JvdXBOYW1lLFxuICAgICAgICAnTGFtYmRhLUxvZy1TdHJlYW0nOiBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsXG4gICAgICAgICdMYW1iZGEtUnVuLUlkJzogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgIC4uLm9wdHMuTWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4ub3B0cyxcbiAgICB9KVxuICAgIC5wcm9taXNlKCk7XG59XG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPYnRhaW5zIHRoZSBgVmVyc2lvbkluZm9gIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1vZGlmaWVkIHZlcnNpb24ocykgaW4gdGhlXG4gKiBwcm92aWRlZCBgQ2hhbmdlYCBvYmplY3RzLCBlbnN1cmVzIHRoZXkgYXJlIHJlbGV2YW50IChjb25zdHJ1Y3QgbGlicmFyaWVzKSxcbiAqIGFuZCByZXR1cm5zIHRob3NlIG9ubHkuXG4gKlxuICogQHBhcmFtIGNoYW5nZXMgdGhlIGNoYW5nZXMgdG8gYmUgcHJvY2Vzc2VkLlxuICogQHBhcmFtIG1ldHJpY3MgdGhlIG1ldHJpY3MgbG9nZ2VyIHRvIHVzZS5cbiAqIEBwYXJhbSBkZW55TGlzdCBkZW55IGxpc3QgY2xpZW50XG4gKlxuICogQHJldHVybnMgYSBsaXN0IG9mIGBWZXJzaW9uSW5mb2Agb2JqZWN0c1xuICovXG5mdW5jdGlvbiBnZXRSZWxldmFudFZlcnNpb25JbmZvcyhcbiAgY2hhbmdlczogcmVhZG9ubHkgQ2hhbmdlW10sXG4gIG1ldHJpY3M6IE1ldHJpY3NMb2dnZXIsXG4gIGRlbnlMaXN0OiBEZW55TGlzdENsaWVudCxcbiAgbGljZW5zZUxpc3Q6IExpY2Vuc2VMaXN0Q2xpZW50LFxuICBrbm93blZlcnNpb25zOiBNYXA8c3RyaW5nLCBEYXRlPlxuKTogcmVhZG9ubHkgVXBkYXRlZFZlcnNpb25bXSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxVcGRhdGVkVmVyc2lvbj4oKTtcblxuICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgLy8gRmlsdGVyIG91dCBhbGwgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGEgXCJuYW1lXCIgaW4gdGhlIGRvY3VtZW50LCBhc1xuICAgIC8vIHRoZXNlIGFyZSBzY2hlbWFzLCB3aGljaCBhcmUgbm90IHJlbGV2YW50IHRvIG91ciBidXNpbmVzcyBoZXJlLlxuICAgIGlmIChjaGFuZ2UuZG9jLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGNvbnRhaW5zIG5vICduYW1lJzogJHtjaGFuZ2UuaWR9YFxuICAgICAgKTtcbiAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksIDEsIFVuaXQuQ291bnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gVGhlIG5vcm1hbGl6ZSBmdW5jdGlvbiBjaGFuZ2UgdGhlIG9iamVjdCBpbiBwbGFjZSwgaWYgdGhlIGRvYyBvYmplY3QgaXMgaW52YWxpZCBpdCB3aWxsIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAobm9ybWFsaXplTlBNTWV0YWRhdGEoY2hhbmdlLmRvYykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGludmFsaWQsIG5wbSBub3JtYWxpemUgcmV0dXJuZWQgdW5kZWZpbmVkOiAke2NoYW5nZS5pZH1gXG4gICAgICApO1xuICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5VTlBST0NFU1NBQkxFX0VOVElUWSwgMSwgVW5pdC5Db3VudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBTb21ldGltZXMsIHRoZXJlIGFyZSBubyB2ZXJzaW9ucyBpbiB0aGUgZG9jdW1lbnQuIFdlIHNraXAgdGhvc2UuXG4gICAgaWYgKGNoYW5nZS5kb2MudmVyc2lvbnMgPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDaGFuZ2VkIGRvY3VtZW50IGNvbnRhaW5zIG5vICd2ZXJzaW9ucyc6ICR7Y2hhbmdlLmlkfWBcbiAgICAgICk7XG4gICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIFNvbWV0aW1lcywgdGhlcmUgaXMgbm8gJ3RpbWUnIGVudHJ5IGluIHRoZSBkb2N1bWVudC4gV2Ugc2tpcCB0aG9zZS5cbiAgICBpZiAoY2hhbmdlLmRvYy50aW1lID09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBbJHtjaGFuZ2Uuc2VxfV0gQ2hhbmdlZCBkb2N1bWVudCBjb250YWlucyBubyAndGltZSc6ICR7Y2hhbmdlLmlkfWBcbiAgICAgICk7XG4gICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgbGFzdCBtb2RpZmljYXRpb24gZGF0ZSBmcm9tIHRoZSBjaGFuZ2VcbiAgICBjb25zdCBwYWNrYWdlVmVyc2lvblVwZGF0ZXMgPSBPYmplY3QuZW50cmllcyhjaGFuZ2UuZG9jLnRpbWUpXG4gICAgICAvLyBJZ25vcmUgdGhlIFwiY3JlYXRlZFwiIGFuZCBcIm1vZGlmaWVkXCIga2V5cyBoZXJlXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSAnY3JlYXRlZCcgJiYga2V5ICE9PSAnbW9kaWZpZWQnKVxuICAgICAgLy8gUGFyc2UgYWxsIHRoZSBkYXRlcyB0byBlbnN1cmUgdGhleSBhcmUgY29tcGFyYWJsZVxuICAgICAgLm1hcCgoW3ZlcnNpb24sIGlzb0RhdGVdKSA9PiBbdmVyc2lvbiwgbmV3IERhdGUoaXNvRGF0ZSldIGFzIGNvbnN0KTtcbiAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgIE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgcGFja2FnZVZlcnNpb25VcGRhdGVzLmxlbmd0aCxcbiAgICAgIFVuaXQuQ291bnRcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBbdmVyc2lvbiwgbW9kaWZpZWRdIG9mIHBhY2thZ2VWZXJzaW9uVXBkYXRlcykge1xuICAgICAgY29uc3Qga25vd25LZXkgPSBgJHtjaGFuZ2UuZG9jLm5hbWV9QCR7dmVyc2lvbn1gO1xuICAgICAgY29uc3Qga25vd24gPSBrbm93blZlcnNpb25zLmdldChrbm93bktleSk7XG4gICAgICBpZiAoa25vd24gPT0gbnVsbCB8fCBrbm93biA8IG1vZGlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGluZm9zID0gY2hhbmdlLmRvYy52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgICAgICAgaWYgKGluZm9zID09IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3VsZCBiZSB0aGUgdmVyc2lvbiBpbiBxdWVzdGlvbiB3YXMgdW4tcHVibGlzaGVkLlxuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFske2NoYW5nZS5zZXF9XSBDb3VsZCBub3QgZmluZCBpbmZvIGZvciBcIiR7Y2hhbmdlLmRvYy5uYW1lfUAke3ZlcnNpb259XCIuIFdhcyBpdCB1bi1wdWJsaXNoZWQ/YFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNDb25zdHJ1Y3RMaWJyYXJ5KGluZm9zKSkge1xuICAgICAgICAgIC8vIHNraXAgaWYgdGhpcyBwYWNrYWdlIGlzIGRlbmllZFxuICAgICAgICAgIGNvbnN0IGRlbmllZCA9IGRlbnlMaXN0Lmxvb2t1cChpbmZvcy5uYW1lLCBpbmZvcy52ZXJzaW9uKTtcbiAgICAgICAgICBpZiAoZGVuaWVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYFske2NoYW5nZS5zZXF9XSBQYWNrYWdlIGRlbmllZDogJHtKU09OLnN0cmluZ2lmeShkZW5pZWQpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBrbm93blZlcnNpb25zLnNldChrbm93bktleSwgbW9kaWZpZWQpO1xuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5ERU5ZX0xJU1RFRF9DT1VOVCwgMSwgVW5pdC5Db3VudCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0FHRSxcbiAgICAgICAgICAgIERhdGUubm93KCkgLSBtb2RpZmllZC5nZXRUaW1lKCksXG4gICAgICAgICAgICBVbml0Lk1pbGxpc2Vjb25kc1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgaXNFbGlnaWJsZSA9XG4gICAgICAgICAgICBsaWNlbnNlTGlzdC5sb29rdXAoaW5mb3MubGljZW5zZSA/PyAnVU5MSUNFTlNFRCcpICE9IG51bGw7XG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgICAgICAgIGlzRWxpZ2libGUgPyAwIDogMSxcbiAgICAgICAgICAgIFVuaXQuQ291bnRcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpc0VsaWdpYmxlKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGluZm9zLCBtb2RpZmllZCwgc2VxOiBjaGFuZ2Uuc2VxIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYFske2NoYW5nZS5zZXF9XSBQYWNrYWdlIFwiJHtcbiAgICAgICAgICAgICAgICBjaGFuZ2UuZG9jLm5hbWVcbiAgICAgICAgICAgICAgfUAke3ZlcnNpb259XCIgZG9lcyBub3QgdXNlIGFsbG93LWxpc3RlZCBsaWNlbnNlOiAke1xuICAgICAgICAgICAgICAgIGluZm9zLmxpY2Vuc2UgPz8gJ1VOTElDRU5TRUQnXG4gICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAga25vd25WZXJzaW9ucy5zZXQoa25vd25LZXksIG1vZGlmaWVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRWxzZSB0aGlzIGlzIG5vdCBhIGNvbnN0cnVjdCBsaWJyYXJ5LCBzbyB3ZSdsbCBqdXN0IGlnbm9yZSBpdC4uLlxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIC8qKlxuICAgKiBUaGlzIGRldGVybWluZXMgd2hldGhlciBhIHBhY2thZ2UgaXMgXCJpbnRlcmVzdGluZ1wiIHRvIENvbnN0cnVjdEh1YiBvciBub3QuIFRoaXMgaXMgcmVsYXRlZCBidXRcbiAgICogbm90IG5lY2Vzc2FyaWx5IGlkZW50aWNhbCB0byB0aGUgbG9naWMgaW4gdGhlIGluZ2VzdGlvbiBwcm9jZXNzIHRoYXQgYW5ub3RhdGVzIHBhY2thZ2UgbWV0YWRhdGFcbiAgICogd2l0aCBhIGNvbnN0cnVjdCBmcmFtZXdvcmsgbmFtZSArIHZlcnNpb24gKHRob3NlIGNvdWxkIHVsdGltYXRlbHkgYmUgcmUtZmFjdG9yZWQgdG8gc2hhcmUgbW9yZVxuICAgKiBvZiB0aGUgbG9naWMvaGV1cmlzdGljcywgdGhvdWdoKS5cbiAgICpcbiAgICogQ29uY3JldGVseSwgaXQgY2hlY2tzIGZvciBhIGxpc3Qgb2Yga25vd24gXCJvZmZpY2lhbFwiIHBhY2thZ2VzIGZvciB2YXJpb3VzIGNvbnN0cnVjdCBmcmFtZXdvcmtzLFxuICAgKiBhbmQgcGFja2FnZXMgdGhhdCBoYXZlIGEgZGVwZW5kZW5jeSBvbiBzdWNoIGEgcGFja2FnZS4gSXQgYWxzbyBoYXMgYSBrZXl3b3JkcyBhbGxvdy1saXN0IGFzIGFcbiAgICogZmFsbC1iYWNrICh0aGUgY3VycmVudCBkZXBlbmRlbmN5LWJhc2VkIGxvZ2ljIGRvZXMgbm90IGNvbnNpZGVyIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGFuZFxuICAgKiBtaWdodCBoZW5jZSBtaXNzIGNlcnRhaW4gcmFyZSB1c2UtY2FzZXMsIHdoaWNoIGtleXdvcmRzIHdvdWxkIHJlc2N1ZSkuXG4gICAqL1xuICBmdW5jdGlvbiBpc0NvbnN0cnVjdExpYnJhcnkoaW5mb3M6IFZlcnNpb25JbmZvKTogYm9vbGVhbiB7XG4gICAgaWYgKGluZm9zLmpzaWkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUaGUgXCJjb25zdHJ1Y3RzXCIgcGFja2FnZSBpcyBhIHNpZ24gb2YgYSBjb25zdHJ1Y3RzIGxpYnJhcnlcbiAgICByZXR1cm4gKFxuICAgICAgaXNDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlKGluZm9zLm5hbWUpIHx8XG4gICAgICAvLyBSZWN1cnNpdmVseSBhcHBseSBvbiBkZXBlbmRlbmNpZXNcbiAgICAgIE9iamVjdC5rZXlzKGluZm9zLmRlcGVuZGVuY2llcyA/PyB7fSkuc29tZShpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UpIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbmZvcy5kZXZEZXBlbmRlbmNpZXMgPz8ge30pLnNvbWUoXG4gICAgICAgIGlzQ29uc3RydWN0RnJhbWV3b3JrUGFja2FnZVxuICAgICAgKSB8fFxuICAgICAgT2JqZWN0LmtleXMoaW5mb3MucGVlckRlcGVuZGVuY2llcyA/PyB7fSkuc29tZShcbiAgICAgICAgaXNDb25zdHJ1Y3RGcmFtZXdvcmtQYWNrYWdlXG4gICAgICApIHx8XG4gICAgICAvLyBLZXl3b3JkLWJhc2VkIGZhbGxiYWNrXG4gICAgICBpbmZvcy5rZXl3b3Jkcz8uc29tZSgoa3cpID0+IENPTlNUUlVDVF9LRVlXT1JEUy5oYXMoa3cpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUGFja2FnZSBpcyBvbmUgb2YgdGhlIGtub3duIGNvbnN0cnVjdCBmcmFtZXdvcmsncyBmaXJzdCBwYXJ0eSBwYWNrYWdlczpcbiAgICogLSBAYXdzLWNkay8qXG4gICAqIC0gQGNka3RmLypcbiAgICogLSBjZGs4cyBvciBjZGs4cy1wbHVzXG4gICAqL1xuICBmdW5jdGlvbiBpc0NvbnN0cnVjdEZyYW1ld29ya1BhY2thZ2UobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gSU1QT1JUQU5UIE5PVEU6IFByZWZpeCBtYXRjaGluZyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBAc2NvcGUvIG5hbWVzLlxuXG4gICAgLy8gVGhlIGxvdy1sZXZlbCBjb25zdHJ1Y3RzIHBhY2thZ2VcbiAgICByZXR1cm4gKFxuICAgICAgbmFtZSA9PT0gJ2NvbnN0cnVjdHMnIHx8XG4gICAgICAvLyBBV1MgQ0RLIFBhY2thZ2VzXG4gICAgICBuYW1lID09PSAnYXdzLWNkay1saWInIHx8XG4gICAgICBuYW1lID09PSAnbW9ub2NkaycgfHxcbiAgICAgIG5hbWUuc3RhcnRzV2l0aCgnQGF3cy1jZGsvJykgfHxcbiAgICAgIC8vIENESzhzIHBhY2thZ2VzXG4gICAgICBuYW1lID09PSAnY2RrOHMnIHx8XG4gICAgICAvXmNkazhzLXBsdXMoPzotKD86MTd8MjB8MjF8MjIpKT8kLy50ZXN0KG5hbWUpIHx8XG4gICAgICAvLyBDREtUZiBwYWNrYWdlc1xuICAgICAgbmFtZSA9PT0gJ2Nka3RmJyB8fFxuICAgICAgbmFtZS5zdGFydHNXaXRoKCdAY2RrdGYvJylcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNjaGVtZSBvZiBhIHBhY2thZ2UgdmVyc2lvbiBpbiB0aGUgdXBkYXRlLiBJbmNsdWRlcyB0aGUgcGFja2FnZS5qc29uIGtleXMsIGFzIHdlbGwgYXMgc29tZSBhZGRpdGlvbmFsIG5wbSBtZXRhZGF0YVxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnBtL3JlZ2lzdHJ5L2Jsb2IvbWFzdGVyL2RvY3MvUkVHSVNUUlktQVBJLm1kI3ZlcnNpb25cbiAqL1xuaW50ZXJmYWNlIFZlcnNpb25JbmZvIHtcbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IGRldkRlcGVuZGVuY2llcz86IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzPzogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlYWRvbmx5IGpzaWk6IHVua25vd247XG4gIHJlYWRvbmx5IGxpY2Vuc2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgcmVhZG9ubHkga2V5d29yZHM6IHN0cmluZ1tdO1xuICByZWFkb25seSBkaXN0OiB7XG4gICAgcmVhZG9ubHkgc2hhc3VtOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdGFyYmFsbDogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVcGRhdGVkVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBUaGUgYFZlcnNpb25JbmZvYCBmb3IgdGhlIG1vZGlmaWVkIHBhY2thZ2UgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGluZm9zOiBWZXJzaW9uSW5mbztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIGBWZXJzaW9uSW5mb2Agd2FzIGxhc3QgbW9kaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllZDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIENvdWNoREIgdHJhbnNhY3Rpb24gbnVtYmVyIGZvciB0aGUgdXBkYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRG9jdW1lbnQge1xuICAvKipcbiAgICogYSBMaXN0IG9mIGFsbCBWZXJzaW9uIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uczogeyBba2V5OiBzdHJpbmddOiBWZXJzaW9uSW5mbyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSdzIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZG9jdW1lbnQuIFRoZSB2YWx1ZXMgYXJlIElTTy04NjAxIGVuY29kZWRcbiAgICogdGltZXN0YW1wcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWU6IHtcbiAgICByZWFkb25seSBjcmVhdGVkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgbW9kaWZpZWQ6IHN0cmluZztcbiAgICByZWFkb25seSBbdmVyc2lvbjogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmludGVyZmFjZSBDaGFuZ2UgZXh0ZW5kcyBEYXRhYmFzZUNoYW5nZSB7XG4gIHJlYWRvbmx5IGRvYzogRG9jdW1lbnQ7XG59XG4iXX0=
@@ -529,7 +529,7 @@ class NpmJs {
529
529
  }
530
530
  exports.NpmJs = NpmJs;
531
531
  _a = JSII_RTTI_SYMBOL_1;
532
- NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.17" };
532
+ NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.20" };
533
533
  /**
534
534
  * How often 'rate' goes into 'duration' (rounded up)
535
535
  */
@@ -50,7 +50,7 @@ class TagCondition {
50
50
  }
51
51
  exports.TagCondition = TagCondition;
52
52
  _a = JSII_RTTI_SYMBOL_1;
53
- TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.17" };
53
+ TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.20" };
54
54
  /**
55
55
  * Logic operators for performing specific conditional logic.
56
56
  */
@@ -130,7 +130,7 @@ class TagConditionField {
130
130
  }
131
131
  exports.TagConditionField = TagConditionField;
132
132
  _b = JSII_RTTI_SYMBOL_1;
133
- TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.17" };
133
+ TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.20" };
134
134
  /**
135
135
  * Target the README of the package to dictate whether a tag is relevant.
136
136
  */
@@ -147,5 +147,5 @@ class TagConditionReadme {
147
147
  }
148
148
  exports.TagConditionReadme = TagConditionReadme;
149
149
  _c = JSII_RTTI_SYMBOL_1;
150
- TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.17" };
150
+ TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.20" };
151
151
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4RUEsSUFBWSxrQkFHWDtBQUhELFdBQVksa0JBQWtCO0lBQzVCLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQUc3QjtBQXNCRDs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFDaEM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFxQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFxQjtRQUNqQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFjO1FBQzVCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O0FBdkNILG9DQTBDQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0Isb0NBQVcsQ0FBQTtJQUNYLGtDQUFTLENBQUE7SUFDVCxvQ0FBVyxDQUFBO0lBQ1gsMENBQWlCLENBQUE7SUFDakIsOENBQXFCLENBQUE7SUFDckIsb0RBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVBXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBT2hDO0FBRUQsTUFBTSxpQkFBa0IsU0FBUSxZQUFZO0lBRTFDLFlBQ21CLElBQTJCLEVBQzNCLFFBQXdCO1FBRXpDLEtBQUssRUFBRSxDQUFDO1FBSFMsU0FBSSxHQUFKLElBQUksQ0FBdUI7UUFDM0IsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFIM0IsWUFBTyxHQUFHLElBQUksQ0FBQztJQU0vQixDQUFDO0lBRU0sSUFBSTtRQUNULE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuRCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxxQkFBc0IsU0FBUSxZQUFZO0lBRTlDLFlBQ21CLElBQTJCLEVBQzNCLE1BQTJCLEVBQzNCLEdBQWMsRUFDZCxLQUFjLEVBQ2QsT0FBcUM7UUFFdEQsS0FBSyxFQUFFLENBQUM7UUFOUyxTQUFJLEdBQUosSUFBSSxDQUF1QjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFXO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUNkLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBTnhDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO0lBU25DLENBQUM7SUFFTSxJQUFJO1FBQ1QsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBQzVCLFlBQW9DLEtBQWU7UUFBZixVQUFLLEdBQUwsS0FBSyxDQUFVO0lBQUcsQ0FBQztJQUV2RDs7O09BR0c7SUFDSSxFQUFFLENBQUMsS0FBVTtRQUNsQixPQUFPLElBQUkscUJBQXFCLENBQzlCLHFCQUFxQixDQUFDLE1BQU0sRUFDNUIsa0JBQWtCLENBQUMsWUFBWSxFQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQ2IsS0FBVSxFQUNWLFVBQXVDLEVBQUU7UUFFekMsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixxQkFBcUIsQ0FBQyxRQUFRLEVBQzlCLGtCQUFrQixDQUFDLFlBQVksRUFDL0IsSUFBSSxDQUFDLEtBQUssRUFDVixLQUFLLEVBQ0wsT0FBTyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIscUJBQXFCLENBQUMsV0FBVyxFQUNqQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQy9CLElBQUksQ0FBQyxLQUFLLEVBQ1YsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDOztBQTlDSCw4Q0ErQ0M7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDN0IsZ0JBQXNCLENBQUM7SUFFdkI7OztPQUdHO0lBQ0ksUUFBUSxDQUNiLEtBQWEsRUFDYixVQUF1QyxFQUFFO1FBRXpDLE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIscUJBQXFCLENBQUMsUUFBUSxFQUM5QixrQkFBa0IsQ0FBQyxNQUFNLEVBQ3pCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLEtBQUssRUFDTCxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7O0FBbEJILGdEQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhY2thZ2VUYWdHcm91cCB9IGZyb20gJy4uL3BhY2thZ2UtdGFnLWdyb3VwJztcblxuaW50ZXJmYWNlIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIHRhZyBiZWluZyBhcHBsaWVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaGV4IHZhbHVlIHN0cmluZyBmb3IgdGhlIGNvbG9yIG9mIHRoZSB0YWcgd2hlbiBkaXNwbGF5ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQgZXh0ZW5kcyBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodCBleHRlbmRzIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIEljb24gZGlzcGxheWVkIG5leHQgdG8gaGlnaGxpZ2h0IG9uIHBhY2thZ2UgY2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hGaWx0ZXIge1xuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciBmaWx0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXk6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiBncm91cCB0byBpbmNsdWRlIGZpbHRlciBpblxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdyb3VwYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBncm91cEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlVGFnR3JvdXAgdG8gaW5jbHVkZSBmaWx0ZXIgaW5cbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwPzogUGFja2FnZVRhZ0dyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRhZywgdXNlZCBmb3Igc2VhcmNoLiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHRhZ3MuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWdsaWdodGluZyB0YWcgb24gcGFja2FnZSBjYXJkXG4gICAqIEBkZWZhdWx0IGRvbid0IGhpZ2hsaWdodCB0YWdcbiAgICovXG4gIHJlYWRvbmx5IGhpZ2hsaWdodD86IEhpZ2hsaWdodDtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3Igc2hvd2luZyB0YWcgYXMga2V5d29yZFxuICAgKiBAZGVmYXVsdCBkb24ndCBzaG93IHRhZyBpbiBrZXl3b3JkIGxpc3RcbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmQ/OiBLZXl3b3JkO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBzaG93aW5nIHRhZyBhcyBzZWFyY2ggZmlsdGVyXG4gICAqIEBkZWZhdWx0IGRvbid0IHNob3cgdGFnIGluIHNlYXJjaCBmaWx0ZXJzXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYXBwbHlpbmcgY3VzdG9tIHRhZ3MgdG8gcmVsZXZhbnQgcGFja2FnZXMuIEN1c3RvbSB0YWdzIGFyZVxuICogZGlzcGxheWVkIG9uIHRoZSBwYWNrYWdlIGRldGFpbHMgcGFnZSwgYW5kIGNhbiBiZSB1c2VkIGZvciBzZWFyY2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZyBleHRlbmRzIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbG9naWMgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHRoZVxuICAgKiBwYWNrYWdlIGhhcyB0aGUgdGFnIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gVGFnQ29uZGl0aW9uU291cmNlIHtcbiAgUEFDS0FHRV9KU09OID0gJ1BBQ0tBR0VfSlNPTicsXG4gIFJFQURNRSA9ICdSRUFETUUnLFxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgY29uZmlnIGZvciBhIHRhZyBjb25kaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdDb25kaXRpb25Db25maWcge1xuICByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGU7XG4gIHJlYWRvbmx5IHNvdXJjZT86IFRhZ0NvbmRpdGlvblNvdXJjZTtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBUYWdDb25kaXRpb25Db25maWdbXTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIHRhZyBkZWNsYXJhdGlvbiB0byBiZSBwYXNzZWQgdG8gbGFtYmRhcyB2aWEgZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVGFnQ29uZmlnIGV4dGVuZHMgUGFja2FnZVRhZ0Jhc2Uge1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBDb25kaXRpb24gZm9yIGFwcGx5aW5nIGEgY3VzdG9tIHRhZyB0byBhIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuICYmIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIG9ubHkgd2hlbiBhbGwgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmVcbiAgICogdHJ1ZS5cbiAgICovXG4gIHN0YXRpYyBhbmQoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5BTkQsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gfHwgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgYW55IG9mIHRoZSBjb25kaXRpb24gYXJndW1lbnRzIGFyZVxuICAgKiB0cnVlLlxuICAgKi9cbiAgc3RhdGljIG9yKC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuT1IsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSAhIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBjb25kaXRpb24gYXJndW1lbnQgaXMgZmFsc2VcbiAgICovXG4gIHN0YXRpYyBub3QoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5OT1QsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYXJnZXQgYSBmaWVsZCB3aXRoaW4gdGhlIGBwYWNrYWdlLmpzb25gIHRvIGFzc2VydCBhZ2FpbnN0LiBOZXN0ZWQgZmllbGRzXG4gICAqIGNhbiBiZSBhY2Nlc3NlZCBieSBwYXNzaW5nIG11bHRpcGxlIGtleXMuXG4gICAqIGBUYWdDb25kaXRpb24uZmllbGQoJ2tleTEnLCAna2V5MicpYCB3aWxsIGFjY2Vzc1xuICAgKiBgcGFja2FnZUpzb24/LmtleTE/LmtleTJgLlxuICAgKi9cbiAgc3RhdGljIGZpZWxkKC4uLmtleXM6IHN0cmluZ1tdKTogVGFnQ29uZGl0aW9uRmllbGQge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uRmllbGQoa2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIHdpdGggbG9naWMgdGFyZ2V0aW5nIHRoZSBSRUFETUUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICBzdGF0aWMgcmVhZG1lKCk6IFRhZ0NvbmRpdGlvblJlYWRtZSB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25SZWFkbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBMb2dpYyBvcGVyYXRvcnMgZm9yIHBlcmZvcm1pbmcgc3BlY2lmaWMgY29uZGl0aW9uYWwgbG9naWMuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUicsXG4gIE5PVCA9ICdOT1QnLFxuICBFUVVBTFMgPSAnRVFVQUxTJyxcbiAgSU5DTFVERVMgPSAnSU5DTFVERVMnLFxuICBTVEFSVFNfV0lUSCA9ICdTVEFSVFNfV0lUSCcsXG59XG5cbmNsYXNzIFRhZ0NvbmRpdGlvbkxvZ2ljIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9naWMgPSB0cnVlO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZHJlbjogVGFnQ29uZGl0aW9uW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLm1hcCgoY29uZCkgPT4gY29uZC5iaW5kKCkpLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGFnQ29uZGl0aW9uUHJlZGljYXRlIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJlZGljYXRlID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlPzogVGFnQ29uZGl0aW9uU291cmNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Pzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZT86IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBUYWdDb25kaXRpb25JbmNsdWRlc09wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhcmdldCBhIGZpZWxkIHRvIHVzZSBpbiBsb2dpYyB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25GaWVsZCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmdbXSkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgPT09IGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBzcGVjaWZpZWQgZmllbGQgd2l0aGluIHRoZVxuICAgKiBwYWNrYWdlJ3MgcGFja2FnZS5qc29uIGlzIGVxdWFsIHRvIHRoZSBwYXNzZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgZXEodmFsdWU6IGFueSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuRVFVQUxTLFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIHNwZWNpZmllZFxuICAgKiBmaWVsZCB3aXRoaW4gdGhlIHBhY2thZ2UncyBwYWNrYWdlLmpzb24gaW5jbHVkZXMgdGhlIHZhbHVlLiBUaGlzIHdvcmtzIGZvclxuICAgKiBhcnJheXMgb3Igc3RyaW5ncy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUEFDS0FHRV9KU09OLFxuICAgICAgdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLnN0YXJ0c1dpdGgodmFsdWUpYCBjb25kaXRpb24gd2hpY2ggYXBwbGllcyBpZiB0aGUgc3BlY2lmaWVkXG4gICAqIGZpZWxkIHdpdGhpbiB0aGUgcGFja2FnZSdzIHBhY2thZ2UuanNvbiBiZWdpbnMgd2l0aCB0aGUgdmFsdWUuIFRoaXMgd29ya3NcbiAgICogb25seSBmb3Igc3RyaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGFydHNXaXRoKHZhbHVlOiBzdHJpbmcpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLlNUQVJUU19XSVRILFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYXJnZXQgdGhlIFJFQURNRSBvZiB0aGUgcGFja2FnZSB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25SZWFkbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgcmVhZG1lLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIFJFQURNRVxuICAgKiBpbmNsdWRlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUkVBRE1FLFxuICAgICAgdW5kZWZpbmVkLCAvLyBubyBrZXlcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgaW5jbHVkZXNgIG9wZXJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBhcHBlYXIgYXQgbGVhc3QgdGhpcyBtYW55IHRpbWVzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBhdExlYXN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJpbmcgbWF0Y2hlcyBtdXN0IG1hdGNoIHRoZSBjYXNpbmcgb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gVGhpcyBvcHRpb25cbiAgICogaXMgaWdub3JlZCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIGlzIGFuIGFycmF5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG4iXX0=
@@ -13,7 +13,7 @@ class FilterType {
13
13
  }
14
14
  exports.FilterType = FilterType;
15
15
  _a = JSII_RTTI_SYMBOL_1;
16
- FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.17" };
16
+ FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.20" };
17
17
  class FilterTypeRadio extends FilterType {
18
18
  bind() {
19
19
  return { type: 'radio' };
@@ -45,5 +45,5 @@ class PackageTagGroup {
45
45
  }
46
46
  exports.PackageTagGroup = PackageTagGroup;
47
47
  _b = JSII_RTTI_SYMBOL_1;
48
- PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.17" };
48
+ PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.20" };
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWctZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFzQixVQUFVO0lBQzlCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBUEgsZ0NBVUM7OztBQUVELE1BQU0sZUFBZ0IsU0FBUSxVQUFVO0lBQy9CLElBQUk7UUFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsVUFBVTtJQUNsQyxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUF3QkQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFLMUIsWUFBNEIsRUFBVSxFQUFFLEtBQTRCO1FBQXhDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7O0FBbEJILDBDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyVHlwZVZhbHVlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXJUeXBlIHtcbiAgc3RhdGljIGNoZWNrYm94KCk6IEZpbHRlclR5cGUge1xuICAgIHJldHVybiBuZXcgRmlsdGVyVHlwZUNoZWNrYm94KCk7XG4gIH1cblxuICBzdGF0aWMgcmFkaW8oKTogRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJUeXBlUmFkaW8oKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZTtcbn1cblxuY2xhc3MgRmlsdGVyVHlwZVJhZGlvIGV4dGVuZHMgRmlsdGVyVHlwZSB7XG4gIHB1YmxpYyBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3JhZGlvJyB9O1xuICB9XG59XG5cbmNsYXNzIEZpbHRlclR5cGVDaGVja2JveCBleHRlbmRzIEZpbHRlclR5cGUge1xuICBwdWJsaWMgYmluZCgpOiBGaWx0ZXJUeXBlVmFsdWUge1xuICAgIHJldHVybiB7IHR5cGU6ICdjaGVja2JveCcgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEdyb3VwIGxhYmVsIHRvIGRpc3BsYXkuIEZhbGxzIGJhY2sgdG8gaWQgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgdG8gc2hvdyB3aXRoaW4gYSB0b29sdGlwIG5leHQgdG8gdGhlIGZpbHRlciBsYWJlbFxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzcGVjaWZ5IHRoZSBncm91cCBmaWx0ZXIgdHlwZS4gRGVmYXVsdHMgdG8gY2hlY2tib3ggaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyVHlwZT86IEZpbHRlclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGN1c3RvbSBwYWNrYWdlIHRhZyBncm91cFxuICovXG5leHBvcnQgY2xhc3MgUGFja2FnZVRhZ0dyb3VwIHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsIHByb3BzPzogUGFja2FnZVRhZ0dyb3VwUHJvcHMpIHtcbiAgICB0aGlzLmxhYmVsID0gcHJvcHM/LmxhYmVsO1xuICAgIHRoaXMudG9vbHRpcCA9IHByb3BzPy50b29sdGlwO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IChwcm9wcz8uZmlsdGVyVHlwZSA/PyBGaWx0ZXJUeXBlLmNoZWNrYm94KCkpLmJpbmQoKS50eXBlO1xuICB9XG5cbiAgcHVibGljIGJpbmQoKTogUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyVHlwZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -31,5 +31,5 @@ class PreloadFile {
31
31
  }
32
32
  exports.PreloadFile = PreloadFile;
33
33
  _a = JSII_RTTI_SYMBOL_1;
34
- PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.17" };
34
+ PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.20" };
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlbG9hZC1maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWtDO0FBRWxDOzs7R0FHRztBQUNILE1BQWEsV0FBVztJQWdCdEIsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBZjdDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGlCQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBSU0sSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDOztBQXBCSCxrQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGphdmFzY3JpcHQgZmlsZSB0byBsb2FkIGJlZm9yZSB0aGUgd2ViYXBwLlxuICogVGhpcyBjYW4gYWxsb3cgb3BlcmF0b3JzIHRvIGFkZCB0aGVpciBvd24gY2xpZW50IG1vbml0b3JzIG9yIGFuYWx5dGljcyBpZiB0aGV5IHdpc2hcbiAqL1xuZXhwb3J0IGNsYXNzIFByZWxvYWRGaWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcmVsb2FkRmlsZSBpbnN0YW5jZSBmcm9tIGEgZmlsZXBhdGggdG8gbG9hZFxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICBjb25zdCBkYXRhID0gcmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgcmV0dXJuIG5ldyBQcmVsb2FkRmlsZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUHJlbG9hZEZpbGUgaW5zdGFuY2UgZGlyZWN0bHkgZnJvbSBzb3VyY2UgY29kZVxuICAgKi9cbiAgc3RhdGljIGZyb21Db2RlKGNvZGU6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICByZXR1cm4gbmV3IFByZWxvYWRGaWxlKGNvZGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYXRhOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGJpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG59XG4iXX0=
package/lib/s3/storage.js CHANGED
@@ -52,6 +52,6 @@ class S3StorageFactory extends constructs_1.Construct {
52
52
  }
53
53
  exports.S3StorageFactory = S3StorageFactory;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.17" };
55
+ S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.20" };
56
56
  S3StorageFactory.UID = 'S3StorageFactory';
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zMy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBQ3JELHlDQUF5QztBQUN6QywyQ0FBdUM7QUFjdkM7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBc0I3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixRQUErQixFQUFFO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBNUJEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUN2QixLQUFnQixFQUNoQixRQUErQixFQUFFO1FBRWpDLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFxQixDQUFDO0lBQ3hFLENBQUM7SUFlRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUNkLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixTQUFTLFdBQVcsQ0FBQyxNQUFpQjtZQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0Qsa0JBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUzQyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUN0QyxXQUFXLEVBQUUsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDM0MsS0FBSyxFQUFFLG9CQUFvQixNQUFNLENBQUMsVUFBVSxTQUFTLFNBQVMsQ0FBQyxVQUFVLEVBQUU7YUFDNUUsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELDZFQUE2RTtRQUM3RSxrRkFBa0Y7UUFDbEYseUJBQXlCO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xELENBQUM7O0FBNURILDRDQTZEQzs7O0FBM0N5QixvQkFBRyxHQUFHLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBTdGFjaywgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgUzNTdG9yYWdlRmFjdG9yeWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1N0b3JhZ2VGYWN0b3J5UHJvcHMge1xuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZmFjdG9yeSB3aWxsIHJldHVybiB0aGUgZmFpbG92ZXIgYnVja2V0cyBpbnN0ZWFkIG9mIHRoZSBwcmltYXJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbG92ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBzMyBzdG9yYWdlIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFMzU3RvcmFnZUZhY3RvcnkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0cmlldmUgb3IgY3JlYXRlIHRoZSBzdG9yYWdlIGZhY3RvcnkgZm9yIHRoZSBjdXJyZW50IHNjb3BlLlxuICAgKlxuICAgKiBUaGlzIGlzIHN0YWNrIHNpbmdsZXRvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcm9wczogUzNTdG9yYWdlRmFjdG9yeVByb3BzID0ge31cbiAgKTogUzNTdG9yYWdlRmFjdG9yeSB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgY29uc3QgZmFjdG9yeSA9IHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFMzU3RvcmFnZUZhY3RvcnkuVUlEKTtcbiAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgIHJldHVybiBuZXcgUzNTdG9yYWdlRmFjdG9yeShzdGFjaywgUzNTdG9yYWdlRmFjdG9yeS5VSUQsIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKFMzU3RvcmFnZUZhY3RvcnkuVUlEKSBhcyBTM1N0b3JhZ2VGYWN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVUlEID0gJ1MzU3RvcmFnZUZhY3RvcnknO1xuXG4gIHByaXZhdGUgZmFpbG92ZXJBY3RpdmU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFMzU3RvcmFnZUZhY3RvcnlQcm9wcyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5mYWlsb3ZlckFjdGl2ZSA9IHByb3BzLmZhaWxvdmVyID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBidWNrZXQgaW4gYSBzdG9yYWdlIGNvbmZpZyBhd2FyZSBtYW5uZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIHMzLkJ1Y2tldFxuICAgKi9cbiAgcHVibGljIG5ld0J1Y2tldChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBzMy5CdWNrZXRQcm9wc1xuICApOiBzMy5CdWNrZXQge1xuICAgIGZ1bmN0aW9uIGZhaWxvdmVyRm9yKGJ1Y2tldDogczMuQnVja2V0KTogczMuQnVja2V0IHtcbiAgICAgIGNvbnN0IF9mYWlsb3ZlciA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGBGYWlsb3ZlciR7aWR9YCwgcHJvcHMpO1xuICAgICAgVGFncy5vZihfZmFpbG92ZXIpLmFkZCgnZmFpbG92ZXInLCAndHJ1ZScpO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnU25hcHNob3RDb21tYW5kJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFNuYXBzaG90ICR7YnVja2V0Lm5vZGUucGF0aH1gLFxuICAgICAgICB2YWx1ZTogYGF3cyBzMyBzeW5jIHMzOi8vJHtidWNrZXQuYnVja2V0TmFtZX0gczM6Ly8ke19mYWlsb3Zlci5idWNrZXROYW1lfWAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZmFpbG92ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgcHJpbWFyeSA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBub3RlIHRoYXQgd2UgY3JlYXRlIHRoZSBmYWlsb3ZlciBidWNrZXQgZXZlbiBpZiB3ZSBkb24ndCBjdXJyZW50bHkgdXNlIGl0LlxuICAgIC8vIHRoaXMgaXMgYmVjYXVzZSBjb25kaXRpb25pbmcgYnVja2V0IGNyZWF0aW9uIHdpbGwgZXZlbnR1YWxseSBmYWlsIHNpbmNlIGJ1Y2tldHNcbiAgICAvLyBhcmUgbm9ybWFsbHkgcmV0YWluZWQuXG4gICAgY29uc3QgZmFpbG92ZXIgPSBmYWlsb3ZlckZvcihwcmltYXJ5KTtcblxuICAgIHJldHVybiB0aGlzLmZhaWxvdmVyQWN0aXZlID8gZmFpbG92ZXIgOiBwcmltYXJ5O1xuICB9XG59XG4iXX0=
@@ -245,7 +245,7 @@ class SpdxLicense {
245
245
  }
246
246
  exports.SpdxLicense = SpdxLicense;
247
247
  _a = JSII_RTTI_SYMBOL_1;
248
- SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.17" };
248
+ SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.20" };
249
249
  SpdxLicense._ALL = new Map();
250
250
  //#region Individual SPDX Licenses
251
251
  /**
package/package.json CHANGED
@@ -183,7 +183,7 @@
183
183
  "main": "lib/index.js",
184
184
  "license": "Apache-2.0",
185
185
  "homepage": "https://github.com/cdklabs",
186
- "version": "0.4.17",
186
+ "version": "0.4.20",
187
187
  "jest": {
188
188
  "maxConcurrency": 2,
189
189
  "moduleNameMapper": {
@@ -14,4 +14,5 @@
14
14
  52.63.231.178/32
15
15
  20.201.28.148/32
16
16
  20.205.243.168/32
17
- 102.133.202.248/32
17
+ 102.133.202.248/32
18
+ 20.248.137.49/32
@@ -15,6 +15,7 @@
15
15
  20.201.28.151/32
16
16
  20.205.243.166/32
17
17
  102.133.202.242/32
18
+ 20.248.137.48/32
18
19
  18.181.13.223/32
19
20
  54.238.117.237/32
20
21
  54.168.17.15/32
@@ -27,4 +28,5 @@
27
28
  3.106.158.203/32
28
29
  20.201.28.152/32
29
30
  20.205.243.160/32
30
- 102.133.202.246/32
31
+ 102.133.202.246/32
32
+ 20.248.137.50/32
@@ -14,4 +14,5 @@
14
14
  52.64.108.95/32
15
15
  20.201.28.151/32
16
16
  20.205.243.166/32
17
- 102.133.202.242/32
17
+ 102.133.202.242/32
18
+ 20.248.137.48/32