@aws-cdk/toolkit-lib 1.6.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,15 +36,17 @@ class ResourceGraph {
36
36
  }
37
37
  if ('Fn::ImportValue' in value) {
38
38
  const exp = exports[value['Fn::ImportValue']];
39
- const v = exp.value;
40
- if ('Fn::GetAtt' in v) {
41
- const id = Array.isArray(v['Fn::GetAtt']) ? v['Fn::GetAtt'][0] : v['Fn::GetAtt'].split('.')[0];
42
- return [`${exp.stackName}.${id}`];
39
+ if (exp != null) {
40
+ const v = exp.value;
41
+ if ('Fn::GetAtt' in v) {
42
+ const id = Array.isArray(v['Fn::GetAtt']) ? v['Fn::GetAtt'][0] : v['Fn::GetAtt'].split('.')[0];
43
+ return [`${exp.stackName}.${id}`];
44
+ }
45
+ if ('Ref' in v) {
46
+ return [`${exp.stackName}.${v.Ref}`];
47
+ }
48
+ return [`${exp.stackName}.${v}`];
43
49
  }
44
- if ('Ref' in v) {
45
- return [`${exp.stackName}.${v.Ref}`];
46
- }
47
- return [`${exp.stackName}.${v}`];
48
50
  }
49
51
  const result = [];
50
52
  if ('DependsOn' in value) {
@@ -118,4 +120,4 @@ class ResourceGraph {
118
120
  }
119
121
  }
120
122
  exports.ResourceGraph = ResourceGraph;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrREFBMkQ7QUFFM0Q7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDakIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFrRDtRQUN6RSxNQUFNLE9BQU8sR0FBdUQsTUFBTSxDQUFDLFdBQVcsQ0FDcEYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ3BDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7YUFDcEUsR0FBRyxDQUNGLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FNekQsQ0FDSixDQUNKLENBQ0YsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDNUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFxQyxDQUNqRixDQUNGLENBQ0YsQ0FBQztRQUVGLDJCQUEyQjtRQUMz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Q0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSw0QkFBWSxDQUFDLFFBQVEsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSw0QkFBWSxDQUFDLFFBQVEsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUE3SUQsc0NBNklDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblJlc291cmNlLCBDbG91ZEZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG4vKipcbiAqIEFuIGltbXV0YWJsZSBkaXJlY3RlZCBncmFwaCBvZiByZXNvdXJjZXMgZnJvbSBtdWx0aXBsZSBDbG91ZEZvcm1hdGlvbiBzdGFja3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUdyYXBoIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tU3RhY2tzKHN0YWNrczogT21pdDxDbG91ZEZvcm1hdGlvblN0YWNrLCAnZW52aXJvbm1lbnQnPltdKTogUmVzb3VyY2VHcmFwaCB7XG4gICAgY29uc3QgZXhwb3J0czogeyBbcDogc3RyaW5nXTogeyBzdGFja05hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9IH0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBzdGFja3MuZmxhdE1hcCgocykgPT5cbiAgICAgICAgT2JqZWN0LnZhbHVlcyhzLnRlbXBsYXRlLk91dHB1dHMgPz8ge30pXG4gICAgICAgICAgLmZpbHRlcigobykgPT4gby5FeHBvcnQgIT0gbnVsbCAmJiB0eXBlb2Ygby5FeHBvcnQuTmFtZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChvKSA9PlxuICAgICAgICAgICAgICBbby5FeHBvcnQuTmFtZSwgeyBzdGFja05hbWU6IHMuc3RhY2tOYW1lLCB2YWx1ZTogby5WYWx1ZSB9XSBhcyBbXG4gICAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IGFueTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdCByZXNvdXJjZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBzdGFja3MuZmxhdE1hcCgocykgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMocy50ZW1wbGF0ZS5SZXNvdXJjZXMgPz8ge30pLm1hcChcbiAgICAgICAgICAoW2lkLCByZXNdKSA9PiBbYCR7cy5zdGFja05hbWV9LiR7aWR9YCwgcmVzXSBhcyBbc3RyaW5nLCBDbG91ZEZvcm1hdGlvblJlc291cmNlXSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDEuIEJ1aWxkIGFkamFjZW5jeSBsaXN0c1xuICAgIGNvbnN0IGVkZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8c3RyaW5nPj4gPSB7fTtcbiAgICBjb25zdCByZXZlcnNlRWRnZXM6IFJlY29yZDxzdHJpbmcsIFNldDxzdHJpbmc+PiA9IHt9O1xuICAgIGZvciAoY29uc3QgaWQgb2YgT2JqZWN0LmtleXMocmVzb3VyY2VzKSkge1xuICAgICAgZWRnZXNbaWRdID0gbmV3IFNldCgpO1xuICAgICAgcmV2ZXJzZUVkZ2VzW2lkXSA9IG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICAvLyAyLiBEZXRlY3QgZGVwZW5kZW5jaWVzIGJ5IHNlYXJjaGluZyBmb3IgUmVmL0ZuOjpHZXRBdHRcbiAgICBjb25zdCBmaW5kRGVwZW5kZW5jaWVzID0gKHN0YWNrTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nW10gPT4ge1xuICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gW107XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHJlcykgPT4gZmluZERlcGVuZGVuY2llcyhzdGFja05hbWUsIHJlcykpO1xuICAgICAgfVxuICAgICAgaWYgKCdSZWYnIGluIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbYCR7c3RhY2tOYW1lfS4ke3ZhbHVlLlJlZn1gXTtcbiAgICAgIH1cbiAgICAgIGlmICgnRm46OkdldEF0dCcgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgcmVmVGFyZ2V0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZVsnRm46OkdldEF0dCddKVxuICAgICAgICAgID8gdmFsdWVbJ0ZuOjpHZXRBdHQnXVswXVxuICAgICAgICAgIDogdmFsdWVbJ0ZuOjpHZXRBdHQnXS5zcGxpdCgnLicpWzBdO1xuICAgICAgICByZXR1cm4gW2Ake3N0YWNrTmFtZX0uJHtyZWZUYXJnZXR9YF07XG4gICAgICB9XG4gICAgICBpZiAoJ0ZuOjpJbXBvcnRWYWx1ZScgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgZXhwID0gZXhwb3J0c1t2YWx1ZVsnRm46OkltcG9ydFZhbHVlJ11dO1xuICAgICAgICBjb25zdCB2ID0gZXhwLnZhbHVlO1xuICAgICAgICBpZiAoJ0ZuOjpHZXRBdHQnIGluIHYpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IEFycmF5LmlzQXJyYXkodlsnRm46OkdldEF0dCddKSA/IHZbJ0ZuOjpHZXRBdHQnXVswXSA6IHZbJ0ZuOjpHZXRBdHQnXS5zcGxpdCgnLicpWzBdO1xuICAgICAgICAgIHJldHVybiBbYCR7ZXhwLnN0YWNrTmFtZX0uJHtpZH1gXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ1JlZicgaW4gdikge1xuICAgICAgICAgIHJldHVybiBbYCR7ZXhwLnN0YWNrTmFtZX0uJHt2LlJlZn1gXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Ake2V4cC5zdGFja05hbWV9LiR7dn1gXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmICgnRGVwZW5kc09uJyBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZS5EZXBlbmRzT24pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4udmFsdWUuRGVwZW5kc09uLm1hcCgocjogc3RyaW5nKSA9PiBgJHtzdGFja05hbWV9LiR7cn1gKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goYCR7c3RhY2tOYW1lfS4ke3ZhbHVlLkRlcGVuZHNPbn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goLi4uT2JqZWN0LnZhbHVlcyh2YWx1ZSkuZmxhdE1hcCgocmVzKSA9PiBmaW5kRGVwZW5kZW5jaWVzKHN0YWNrTmFtZSwgcmVzKSkpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbaWQsIHJlc10gb2YgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VzKSkge1xuICAgICAgY29uc3Qgc3RhY2tOYW1lID0gaWQuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IGRlcHMgPSBmaW5kRGVwZW5kZW5jaWVzKHN0YWNrTmFtZSwgcmVzIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgaWYgKGRlcCBpbiByZXNvdXJjZXMgJiYgZGVwICE9PSBpZCkge1xuICAgICAgICAgIGVkZ2VzW2lkXS5hZGQoZGVwKTtcbiAgICAgICAgICByZXZlcnNlRWRnZXNbZGVwXS5hZGQoaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUdyYXBoKGVkZ2VzLCByZXZlcnNlRWRnZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlZGdlczogUmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgcmV2ZXJzZUVkZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8c3RyaW5nPj4gPSB7fTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGVkZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8c3RyaW5nPj4sIHJldmVyc2VFZGdlczogUmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+KSB7XG4gICAgdGhpcy5lZGdlcyA9IGVkZ2VzO1xuICAgIHRoaXMucmV2ZXJzZUVkZ2VzID0gcmV2ZXJzZUVkZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNvcnRlZCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci5cbiAgICovXG4gIGdldCBzb3J0ZWROb2RlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG91dERlZ3JlZSA9IE9iamVjdC5rZXlzKHRoaXMuZWRnZXMpLnJlZHVjZSgoYWNjLCBrKSA9PiB7XG4gICAgICBhY2Nba10gPSB0aGlzLmVkZ2VzW2tdLnNpemU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4pO1xuXG4gICAgY29uc3QgcXVldWUgPSBPYmplY3Qua2V5cyhvdXREZWdyZWUpLmZpbHRlcigoaykgPT4gb3V0RGVncmVlW2tdID09PSAwKTtcblxuICAgIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBub2RlID0gcXVldWUuc2hpZnQoKSE7XG4gICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgIGZvciAoY29uc3Qgbnh0IG9mIHRoaXMucmV2ZXJzZUVkZ2VzW25vZGVdKSB7XG4gICAgICAgIG91dERlZ3JlZVtueHRdLS07XG4gICAgICAgIGlmIChvdXREZWdyZWVbbnh0XSA9PT0gMCkge1xuICAgICAgICAgIHF1ZXVlLnB1c2gobnh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGluTmVpZ2hib3JzKG5vZGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIShub2RlIGluIHRoaXMuZWRnZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBOb2RlICR7bm9kZX0gbm90IGZvdW5kIGluIHRoZSBncmFwaGApO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJldmVyc2VFZGdlc1tub2RlXSB8fCBbXSk7XG4gIH1cblxuICBwdWJsaWMgb3V0TmVpZ2hib3JzKG5vZGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIShub2RlIGluIHRoaXMuZWRnZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBOb2RlICR7bm9kZX0gbm90IGZvdW5kIGluIHRoZSBncmFwaGApO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVkZ2VzW25vZGVdIHx8IFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFub3RoZXIgZ3JhcGggd2l0aCB0aGUgc2FtZSBub2RlcywgYnV0IHdpdGggdGhlIGVkZ2VzIGludmVydGVkXG4gICAqL1xuICBwdWJsaWMgb3Bwb3NpdGUoKTogUmVzb3VyY2VHcmFwaCB7XG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUdyYXBoKHRoaXMucmV2ZXJzZUVkZ2VzLCB0aGlzLmVkZ2VzKTtcbiAgfVxufVxuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrREFBMkQ7QUFFM0Q7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDakIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFrRDtRQUN6RSxNQUFNLE9BQU8sR0FBdUQsTUFBTSxDQUFDLFdBQVcsQ0FDcEYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ3BDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7YUFDcEUsR0FBRyxDQUNGLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FNekQsQ0FDSixDQUNKLENBQ0YsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDNUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFxQyxDQUNqRixDQUNGLENBQ0YsQ0FBQztRQUVGLDJCQUEyQjtRQUMz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LENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSw0QkFBWSxDQUFDLFFBQVEsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSw0QkFBWSxDQUFDLFFBQVEsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUEvSUQsc0NBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblJlc291cmNlLCBDbG91ZEZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG4vKipcbiAqIEFuIGltbXV0YWJsZSBkaXJlY3RlZCBncmFwaCBvZiByZXNvdXJjZXMgZnJvbSBtdWx0aXBsZSBDbG91ZEZvcm1hdGlvbiBzdGFja3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUdyYXBoIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tU3RhY2tzKHN0YWNrczogT21pdDxDbG91ZEZvcm1hdGlvblN0YWNrLCAnZW52aXJvbm1lbnQnPltdKTogUmVzb3VyY2VHcmFwaCB7XG4gICAgY29uc3QgZXhwb3J0czogeyBbcDogc3RyaW5nXTogeyBzdGFja05hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9IH0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBzdGFja3MuZmxhdE1hcCgocykgPT5cbiAgICAgICAgT2JqZWN0LnZhbHVlcyhzLnRlbXBsYXRlLk91dHB1dHMgPz8ge30pXG4gICAgICAgICAgLmZpbHRlcigobykgPT4gby5FeHBvcnQgIT0gbnVsbCAmJiB0eXBlb2Ygby5FeHBvcnQuTmFtZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChvKSA9PlxuICAgICAgICAgICAgICBbby5FeHBvcnQuTmFtZSwgeyBzdGFja05hbWU6IHMuc3RhY2tOYW1lLCB2YWx1ZTogby5WYWx1ZSB9XSBhcyBbXG4gICAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IGFueTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdCByZXNvdXJjZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBzdGFja3MuZmxhdE1hcCgocykgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMocy50ZW1wbGF0ZS5SZXNvdXJjZXMgPz8ge30pLm1hcChcbiAgICAgICAgICAoW2lkLCByZXNdKSA9PiBbYCR7cy5zdGFja05hbWV9LiR7aWR9YCwgcmVzXSBhcyBbc3RyaW5nLCBDbG91ZEZvcm1hdGlvblJlc291cmNlXSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDEuIEJ1aWxkIGFkamFjZW5jeSBsaXN0c1xuICAgIGNvbnN0IGVkZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8c3RyaW5nPj4gPSB7fTtcbiAgICBjb25zdCByZXZlcnNlRWRnZXM6IFJlY29yZDxzdHJpbmcsIFNldDxzdHJpbmc+PiA9IHt9O1xuICAgIGZvciAoY29uc3QgaWQgb2YgT2JqZWN0LmtleXMocmVzb3VyY2VzKSkge1xuICAgICAgZWRnZXNbaWRdID0gbmV3IFNldCgpO1xuICAgICAgcmV2ZXJzZUVkZ2VzW2lkXSA9IG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICAvLyAyLiBEZXRlY3QgZGVwZW5kZW5jaWVzIGJ5IHNlYXJjaGluZyBmb3IgUmVmL0ZuOjpHZXRBdHRcbiAgICBjb25zdCBmaW5kRGVwZW5kZW5jaWVzID0gKHN0YWNrTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nW10gPT4ge1xuICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gW107XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHJlcykgPT4gZmluZERlcGVuZGVuY2llcyhzdGFja05hbWUsIHJlcykpO1xuICAgICAgfVxuICAgICAgaWYgKCdSZWYnIGluIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbYCR7c3RhY2tOYW1lfS4ke3ZhbHVlLlJlZn1gXTtcbiAgICAgIH1cbiAgICAgIGlmICgnRm46OkdldEF0dCcgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgcmVmVGFyZ2V0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZVsnRm46OkdldEF0dCddKVxuICAgICAgICAgID8gdmFsdWVbJ0ZuOjpHZXRBdHQnXVswXVxuICAgICAgICAgIDogdmFsdWVbJ0ZuOjpHZXRBdHQnXS5zcGxpdCgnLicpWzBdO1xuICAgICAgICByZXR1cm4gW2Ake3N0YWNrTmFtZX0uJHtyZWZUYXJnZXR9YF07XG4gICAgICB9XG4gICAgICBpZiAoJ0ZuOjpJbXBvcnRWYWx1ZScgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgZXhwID0gZXhwb3J0c1t2YWx1ZVsnRm46OkltcG9ydFZhbHVlJ11dO1xuICAgICAgICBpZiAoZXhwICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB2ID0gZXhwLnZhbHVlO1xuICAgICAgICAgIGlmICgnRm46OkdldEF0dCcgaW4gdikge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBBcnJheS5pc0FycmF5KHZbJ0ZuOjpHZXRBdHQnXSkgPyB2WydGbjo6R2V0QXR0J11bMF0gOiB2WydGbjo6R2V0QXR0J10uc3BsaXQoJy4nKVswXTtcbiAgICAgICAgICAgIHJldHVybiBbYCR7ZXhwLnN0YWNrTmFtZX0uJHtpZH1gXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCdSZWYnIGluIHYpIHtcbiAgICAgICAgICAgIHJldHVybiBbYCR7ZXhwLnN0YWNrTmFtZX0uJHt2LlJlZn1gXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtgJHtleHAuc3RhY2tOYW1lfS4ke3Z9YF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmICgnRGVwZW5kc09uJyBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZS5EZXBlbmRzT24pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goLi4udmFsdWUuRGVwZW5kc09uLm1hcCgocjogc3RyaW5nKSA9PiBgJHtzdGFja05hbWV9LiR7cn1gKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goYCR7c3RhY2tOYW1lfS4ke3ZhbHVlLkRlcGVuZHNPbn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goLi4uT2JqZWN0LnZhbHVlcyh2YWx1ZSkuZmxhdE1hcCgocmVzKSA9PiBmaW5kRGVwZW5kZW5jaWVzKHN0YWNrTmFtZSwgcmVzKSkpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbaWQsIHJlc10gb2YgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VzKSkge1xuICAgICAgY29uc3Qgc3RhY2tOYW1lID0gaWQuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IGRlcHMgPSBmaW5kRGVwZW5kZW5jaWVzKHN0YWNrTmFtZSwgcmVzIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHtcbiAgICAgICAgaWYgKGRlcCBpbiByZXNvdXJjZXMgJiYgZGVwICE9PSBpZCkge1xuICAgICAgICAgIGVkZ2VzW2lkXS5hZGQoZGVwKTtcbiAgICAgICAgICByZXZlcnNlRWRnZXNbZGVwXS5hZGQoaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUdyYXBoKGVkZ2VzLCByZXZlcnNlRWRnZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlZGdlczogUmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgcmV2ZXJzZUVkZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8c3RyaW5nPj4gPSB7fTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGVkZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8c3RyaW5nPj4sIHJldmVyc2VFZGdlczogUmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+KSB7XG4gICAgdGhpcy5lZGdlcyA9IGVkZ2VzO1xuICAgIHRoaXMucmV2ZXJzZUVkZ2VzID0gcmV2ZXJzZUVkZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNvcnRlZCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci5cbiAgICovXG4gIGdldCBzb3J0ZWROb2RlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG91dERlZ3JlZSA9IE9iamVjdC5rZXlzKHRoaXMuZWRnZXMpLnJlZHVjZSgoYWNjLCBrKSA9PiB7XG4gICAgICBhY2Nba10gPSB0aGlzLmVkZ2VzW2tdLnNpemU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4pO1xuXG4gICAgY29uc3QgcXVldWUgPSBPYmplY3Qua2V5cyhvdXREZWdyZWUpLmZpbHRlcigoaykgPT4gb3V0RGVncmVlW2tdID09PSAwKTtcblxuICAgIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBub2RlID0gcXVldWUuc2hpZnQoKSE7XG4gICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgIGZvciAoY29uc3Qgbnh0IG9mIHRoaXMucmV2ZXJzZUVkZ2VzW25vZGVdKSB7XG4gICAgICAgIG91dERlZ3JlZVtueHRdLS07XG4gICAgICAgIGlmIChvdXREZWdyZWVbbnh0XSA9PT0gMCkge1xuICAgICAgICAgIHF1ZXVlLnB1c2gobnh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGluTmVpZ2hib3JzKG5vZGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIShub2RlIGluIHRoaXMuZWRnZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBOb2RlICR7bm9kZX0gbm90IGZvdW5kIGluIHRoZSBncmFwaGApO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJldmVyc2VFZGdlc1tub2RlXSB8fCBbXSk7XG4gIH1cblxuICBwdWJsaWMgb3V0TmVpZ2hib3JzKG5vZGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIShub2RlIGluIHRoaXMuZWRnZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBOb2RlICR7bm9kZX0gbm90IGZvdW5kIGluIHRoZSBncmFwaGApO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVkZ2VzW25vZGVdIHx8IFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFub3RoZXIgZ3JhcGggd2l0aCB0aGUgc2FtZSBub2RlcywgYnV0IHdpdGggdGhlIGVkZ2VzIGludmVydGVkXG4gICAqL1xuICBwdWJsaWMgb3Bwb3NpdGUoKTogUmVzb3VyY2VHcmFwaCB7XG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUdyYXBoKHRoaXMucmV2ZXJzZUVkZ2VzLCB0aGlzLmVkZ2VzKTtcbiAgfVxufVxuIl19
@@ -11,6 +11,11 @@ interface StackGroup {
11
11
  localStacks: CloudFormationStack[];
12
12
  deployedStacks: CloudFormationStack[];
13
13
  }
14
+ interface StackGroup {
15
+ environment: cxapi.Environment;
16
+ localStacks: CloudFormationStack[];
17
+ deployedStacks: CloudFormationStack[];
18
+ }
14
19
  export declare function usePrescribedMappings(mappingGroups: MappingGroup[], sdkProvider: SdkProvider): Promise<ResourceMapping[]>;
15
20
  export declare function getDeployedStacks(sdkProvider: SdkProvider, environment: cxapi.Environment): Promise<CloudFormationStack[]>;
16
21
  export declare function formatEnvironmentSectionHeader(environment: cxapi.Environment): string;
@@ -152,4 +152,4 @@ async function groupStacks(sdkProvider, localStacks, additionalStackNames) {
152
152
  }
153
153
  return groups;
154
154
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBMkJBLHNEQXFGQztBQUVELDhDQTRCQztBQUVELHdFQUdDO0FBRUQsa0RBRUM7QUFFRCwwREFFQztBQVdELGtDQTZCQztBQWxNRCxzRUFJc0M7QUFHdEMscUNBQTJEO0FBRTNELHNDQUFpQztBQUNqQyx3Q0FBK0M7QUFFL0MscURBQXFFO0FBQ3JFLHFDQUFzQztBQUV0QywrREFBMkQ7QUFFM0QsNENBQTBCO0FBQzFCLDRDQUEwQjtBQVFuQixLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQTZCLEVBQzdCLFdBQXdCO0lBTXhCLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7SUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELEtBQUssSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtQ0FBbUMsV0FBVyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsWUFBWSxDQUFDLEdBQUcs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SUFFRixNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFDO0lBQ2hDLEtBQUssSUFBSSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBc0IsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsV0FBVztZQUNYLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyIGFzIGZtdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcixcbiAgZm9ybWF0VHlwZWRNYXBwaW5ncyBhcyBmbXRUeXBlZE1hcHBpbmdzLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlLCBpbmRleEJ5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJy4vZGlnZXN0JztcbmltcG9ydCB0eXBlIHsgTWFwcGluZ0dyb3VwIH0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG5leHBvcnQgKiBmcm9tICcuL2V4Y2x1ZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0JztcblxuaW50ZXJmYWNlIFN0YWNrR3JvdXAge1xuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1c2VQcmVzY3JpYmVkTWFwcGluZ3MoXG4gIG1hcHBpbmdHcm91cHM6IE1hcHBpbmdHcm91cFtdLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4pOiBQcm9taXNlPFJlc291cmNlTWFwcGluZ1tdPiB7XG4gIGludGVyZmFjZSBNYXBwaW5nR3JvdXBXaXRoU3RhY2tzIGV4dGVuZHMgTWFwcGluZ0dyb3VwIHtcbiAgICBzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrR3JvdXBzOiBNYXBwaW5nR3JvdXBXaXRoU3RhY2tzW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBtYXBwaW5nR3JvdXBzKSB7XG4gICAgc3RhY2tHcm91cHMucHVzaCh7XG4gICAgICAuLi5ncm91cCxcbiAgICAgIHN0YWNrczogYXdhaXQgZ2V0RGVwbG95ZWRTdGFja3Moc2RrUHJvdmlkZXIsIGVudmlyb25tZW50T2YoZ3JvdXApKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBkZXN0aW5hdGlvbnNcbiAgZm9yIChsZXQgZ3JvdXAgb2Ygc3RhY2tHcm91cHMpIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3QgZGVzdGluYXRpb24gb2YgT2JqZWN0LnZhbHVlcyhncm91cC5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoZGVzdGluYXRpb25zLmhhcyhkZXN0aW5hdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIGRlc3RpbmF0aW9uIHJlc291cmNlICcke2Rlc3RpbmF0aW9ufScgaW4gZW52aXJvbm1lbnQgJHtncm91cC5hY2NvdW50fS8ke2dyb3VwLnJlZ2lvbn1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGVzdGluYXRpb25zLmFkZChkZXN0aW5hdGlvbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZXNvdXJjZU1hcHBpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgZm9yIChjb25zdCBbc291cmNlLCBkZXN0aW5hdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFpblVzZShzb3VyY2UsIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgU291cmNlIHJlc291cmNlICcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblVzZShkZXN0aW5hdGlvbiwgZ3JvdXAuc3RhY2tzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgIGBEZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGFscmVhZHkgaW4gdXNlIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudE9mKGdyb3VwKTtcbiAgICAgIGNvbnN0IHNyYyA9IG1ha2VMb2NhdGlvbihzb3VyY2UsIGVudmlyb25tZW50LCBncm91cC5zdGFja3MpO1xuICAgICAgY29uc3QgZHN0ID0gbWFrZUxvY2F0aW9uKGRlc3RpbmF0aW9uLCBlbnZpcm9ubWVudCk7XG4gICAgICByZXN1bHQucHVzaChuZXcgUmVzb3VyY2VNYXBwaW5nKHNyYywgZHN0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gaW5Vc2UobG9jYXRpb246IHN0cmluZywgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gbG9jYXRpb24uc3BsaXQoJy4nKTtcbiAgICBpZiAoc3RhY2tOYW1lID09IG51bGwgfHwgbG9naWNhbElkID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEludmFsaWQgbG9jYXRpb24gJyR7bG9jYXRpb259J2ApO1xuICAgIH1cbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcbiAgICByZXR1cm4gc3RhY2sgIT0gbnVsbCAmJiBzdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Lltsb2dpY2FsSWRdICE9IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBlbnZpcm9ubWVudE9mKGdyb3VwOiBNYXBwaW5nR3JvdXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudDogZ3JvdXAuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogZ3JvdXAucmVnaW9uLFxuICAgICAgbmFtZTogJycsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VMb2NhdGlvbihcbiAgICBsb2M6IHN0cmluZyxcbiAgICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10gPSBbXSxcbiAgKTogUmVzb3VyY2VMb2NhdGlvbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvYy5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHN0YWNrID0gc3RhY2tzLmZpbmQoKHMpID0+IHMuc3RhY2tOYW1lID09PSBzdGFja05hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUxvY2F0aW9uKFxuICAgICAge1xuICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICB0ZW1wbGF0ZTogc3RhY2s/LnRlbXBsYXRlID8/IHt9LFxuICAgICAgfSxcbiAgICAgIGxvZ2ljYWxJZCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZXBsb3llZFN0YWNrcyhcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPENsb3VkRm9ybWF0aW9uU3RhY2tbXT4ge1xuICBjb25zdCBjZm4gPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoZW52aXJvbm1lbnQsIE1vZGUuRm9yUmVhZGluZykpLnNkay5jbG91ZEZvcm1hdGlvbigpO1xuXG4gIGNvbnN0IHN1bW1hcmllcyA9IGF3YWl0IGNmbi5wYWdpbmF0ZWRMaXN0U3RhY2tzKHtcbiAgICBTdGFja1N0YXR1c0ZpbHRlcjogW1xuICAgICAgJ0NSRUFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX0NPTVBMRVRFJyxcbiAgICAgICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgICAgJ0lNUE9SVF9DT01QTEVURScsXG4gICAgICAnUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgIF0sXG4gIH0pO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZSA9IGFzeW5jIChzdW1tYXJ5OiBTdGFja1N1bW1hcnkpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQgPSBhd2FpdCBjZm4uZ2V0VGVtcGxhdGUoeyBTdGFja05hbWU6IHN1bW1hcnkuU3RhY2tOYW1lISB9KTtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRlc2VyaWFsaXplU3RydWN0dXJlKHRlbXBsYXRlQ29tbWFuZE91dHB1dC5UZW1wbGF0ZUJvZHkgPz8gJ3t9Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgc3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoc3VtbWFyaWVzLm1hcChub3JtYWxpemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcihlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQpIHtcbiAgY29uc3QgZW52ID0gYGF3czovLyR7ZW52aXJvbm1lbnQuYWNjb3VudH0vJHtlbnZpcm9ubWVudC5yZWdpb259YDtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKHN0cmVhbSA9PiBmbXRFbnZpcm9ubWVudFNlY3Rpb25IZWFkZXIoc3RyZWFtLCBlbnYpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFR5cGVkTWFwcGluZ3MobWFwcGluZ3M6IFR5cGVkTWFwcGluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKChzdHJlYW0pID0+IGZtdFR5cGVkTWFwcGluZ3Moc3RyZWFtLCBtYXBwaW5ncykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QW1iaWd1b3VzTWFwcGluZ3MocGF0aHM6IFtzdHJpbmdbXSwgc3RyaW5nW11dW10pOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VG9TdHJlYW0oKHN0cmVhbSkgPT4gZm10QW1iaWd1b3VzTWFwcGluZ3Moc3RyZWFtLCBwYXRocykpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRUb1N0cmVhbShjYjogKHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtKSA9PiB2b2lkKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RyZWFtID0gbmV3IFN0cmluZ1dyaXRlU3RyZWFtKCk7XG4gIGNiKHN0cmVhbSk7XG4gIHJldHVybiBzdHJlYW0udG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBzdGFjayBncm91cHMsIGVhY2ggY29udGFpbmluZyB0aGUgbG9jYWwgc3RhY2tzIGFuZCB0aGUgZGVwbG95ZWQgc3RhY2tzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhdHRlcm5zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3JvdXBTdGFja3Moc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLCBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdLCBhZGRpdGlvbmFsU3RhY2tOYW1lczogc3RyaW5nW10pIHtcbiAgY29uc3QgZW52aXJvbm1lbnRzOiBNYXA8c3RyaW5nLCBjeGFwaS5FbnZpcm9ubWVudD4gPSBuZXcgTWFwKCk7XG5cbiAgZm9yIChjb25zdCBzdGFjayBvZiBsb2NhbFN0YWNrcykge1xuICAgIGNvbnN0IGVudmlyb25tZW50ID0gYXdhaXQgc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgICBjb25zdCBrZXkgPSBoYXNoT2JqZWN0KGVudmlyb25tZW50KTtcbiAgICBlbnZpcm9ubWVudHMuc2V0KGtleSwgZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgY29uc3QgbG9jYWxCeUVudmlyb25tZW50ID0gYXdhaXQgaW5kZXhCeShsb2NhbFN0YWNrcyxcbiAgICBhc3luYyAocykgPT4gaGFzaE9iamVjdChhd2FpdCBzZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQocy5lbnZpcm9ubWVudCkpLFxuICApO1xuXG4gIGNvbnN0IGdyb3VwczogU3RhY2tHcm91cFtdID0gW107XG4gIGZvciAobGV0IGtleSBvZiBsb2NhbEJ5RW52aXJvbm1lbnQua2V5cygpKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudHMuZ2V0KGtleSkhO1xuICAgIGNvbnN0IGFsbERlcGxveWVkU3RhY2tzID0gYXdhaXQgZ2V0RGVwbG95ZWRTdGFja3Moc2RrUHJvdmlkZXIsIGVudmlyb25tZW50KTtcbiAgICBjb25zdCBsb2NhbCA9IGxvY2FsQnlFbnZpcm9ubWVudC5nZXQoa2V5KSE7XG4gICAgY29uc3QgaGFzTG9jYWxDb3VudGVycGFydCA9IChzOiBDbG91ZEZvcm1hdGlvblN0YWNrKSA9PiBsb2NhbC5zb21lKChsKSA9PiBsLnN0YWNrTmFtZSA9PT0gcy5zdGFja05hbWUpO1xuICAgIGNvbnN0IHdhc0V4cGxpY2l0bHlQcm92aWRlZCA9IChzOiBDbG91ZEZvcm1hdGlvblN0YWNrKSA9PiBhZGRpdGlvbmFsU3RhY2tOYW1lcy5pbmNsdWRlcyhzLnN0YWNrTmFtZSk7XG5cbiAgICBncm91cHMucHVzaCh7XG4gICAgICBlbnZpcm9ubWVudCxcbiAgICAgIGRlcGxveWVkU3RhY2tzOiBhbGxEZXBsb3llZFN0YWNrcy5maWx0ZXIocyA9PiBoYXNMb2NhbENvdW50ZXJwYXJ0KHMpIHx8IHdhc0V4cGxpY2l0bHlQcm92aWRlZChzKSksXG4gICAgICBsb2NhbFN0YWNrczogbG9jYWwsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufVxuIl19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBaUNBLHNEQXFGQztBQUVELDhDQTRCQztBQUVELHdFQUdDO0FBRUQsa0RBRUM7QUFFRCwwREFFQztBQVdELGtDQTZCQztBQXhNRCxzRUFJc0M7QUFHdEMscUNBQTJEO0FBRTNELHNDQUFpQztBQUNqQyx3Q0FBK0M7QUFFL0MscURBQXFFO0FBQ3JFLHFDQUFzQztBQUV0QywrREFBMkQ7QUFFM0QsNENBQTBCO0FBQzFCLDRDQUEwQjtBQWNuQixLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQTZCLEVBQzdCLFdBQXdCO0lBTXhCLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7SUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELEtBQUssSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtQ0FBbUMsV0FBVyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsWUFBWSxDQUFDLEdBQUcs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SUFFRixNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFDO0lBQ2hDLEtBQUssSUFBSSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBc0IsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsV0FBVztZQUNYLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyIGFzIGZtdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcixcbiAgZm9ybWF0VHlwZWRNYXBwaW5ncyBhcyBmbXRUeXBlZE1hcHBpbmdzLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlLCBpbmRleEJ5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJy4vZGlnZXN0JztcbmltcG9ydCB0eXBlIHsgTWFwcGluZ0dyb3VwIH0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG5leHBvcnQgKiBmcm9tICcuL2V4Y2x1ZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0JztcblxuaW50ZXJmYWNlIFN0YWNrR3JvdXAge1xuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG59XG5cbmludGVyZmFjZSBTdGFja0dyb3VwIHtcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50O1xuICBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xuICBkZXBsb3llZFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXNlUHJlc2NyaWJlZE1hcHBpbmdzKFxuICBtYXBwaW5nR3JvdXBzOiBNYXBwaW5nR3JvdXBbXSxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuKTogUHJvbWlzZTxSZXNvdXJjZU1hcHBpbmdbXT4ge1xuICBpbnRlcmZhY2UgTWFwcGluZ0dyb3VwV2l0aFN0YWNrcyBleHRlbmRzIE1hcHBpbmdHcm91cCB7XG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIH1cblxuICBjb25zdCBzdGFja0dyb3VwczogTWFwcGluZ0dyb3VwV2l0aFN0YWNrc1tdID0gW107XG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgbWFwcGluZ0dyb3Vwcykge1xuICAgIHN0YWNrR3JvdXBzLnB1c2goe1xuICAgICAgLi4uZ3JvdXAsXG4gICAgICBzdGFja3M6IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudE9mKGdyb3VwKSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgZGVzdGluYXRpb25zXG4gIGZvciAobGV0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgY29uc3QgZGVzdGluYXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGRlc3RpbmF0aW9uIG9mIE9iamVjdC52YWx1ZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKGRlc3RpbmF0aW9ucy5oYXMoZGVzdGluYXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSBkZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9ucy5hZGQoZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVzb3VyY2VNYXBwaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBzdGFja0dyb3Vwcykge1xuICAgIGZvciAoY29uc3QgW3NvdXJjZSwgZGVzdGluYXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghaW5Vc2Uoc291cmNlLCBncm91cC5zdGFja3MpKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFNvdXJjZSByZXNvdXJjZSAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5Vc2UoZGVzdGluYXRpb24sIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRGVzdGluYXRpb24gcmVzb3VyY2UgJyR7ZGVzdGluYXRpb259JyBhbHJlYWR5IGluIHVzZSBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gZW52aXJvbm1lbnRPZihncm91cCk7XG4gICAgICBjb25zdCBzcmMgPSBtYWtlTG9jYXRpb24oc291cmNlLCBlbnZpcm9ubWVudCwgZ3JvdXAuc3RhY2tzKTtcbiAgICAgIGNvbnN0IGRzdCA9IG1ha2VMb2NhdGlvbihkZXN0aW5hdGlvbiwgZW52aXJvbm1lbnQpO1xuICAgICAgcmVzdWx0LnB1c2gobmV3IFJlc291cmNlTWFwcGluZyhzcmMsIGRzdCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIGluVXNlKGxvY2F0aW9uOiBzdHJpbmcsIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvY2F0aW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHN0YWNrTmFtZSA9PSBudWxsIHx8IGxvZ2ljYWxJZCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBJbnZhbGlkIGxvY2F0aW9uICcke2xvY2F0aW9ufSdgKTtcbiAgICB9XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZCgocykgPT4gcy5zdGFja05hbWUgPT09IHN0YWNrTmFtZSk7XG4gICAgcmV0dXJuIHN0YWNrICE9IG51bGwgJiYgc3RhY2sudGVtcGxhdGUuUmVzb3VyY2VzPy5bbG9naWNhbElkXSAhPSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gZW52aXJvbm1lbnRPZihncm91cDogTWFwcGluZ0dyb3VwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnQ6IGdyb3VwLmFjY291bnQsXG4gICAgICByZWdpb246IGdyb3VwLnJlZ2lvbixcbiAgICAgIG5hbWU6ICcnLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBtYWtlTG9jYXRpb24oXG4gICAgbG9jOiBzdHJpbmcsXG4gICAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuICAgIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdID0gW10sXG4gICk6IFJlc291cmNlTG9jYXRpb24ge1xuICAgIGNvbnN0IFtzdGFja05hbWUsIGxvZ2ljYWxJZF0gPSBsb2Muc3BsaXQoJy4nKTtcbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcblxuICAgIHJldHVybiBuZXcgUmVzb3VyY2VMb2NhdGlvbihcbiAgICAgIHtcbiAgICAgICAgc3RhY2tOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgdGVtcGxhdGU6IHN0YWNrPy50ZW1wbGF0ZSA/PyB7fSxcbiAgICAgIH0sXG4gICAgICBsb2dpY2FsSWQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVwbG95ZWRTdGFja3MoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuKTogUHJvbWlzZTxDbG91ZEZvcm1hdGlvblN0YWNrW10+IHtcbiAgY29uc3QgY2ZuID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KGVudmlyb25tZW50LCBNb2RlLkZvclJlYWRpbmcpKS5zZGsuY2xvdWRGb3JtYXRpb24oKTtcblxuICBjb25zdCBzdW1tYXJpZXMgPSBhd2FpdCBjZm4ucGFnaW5hdGVkTGlzdFN0YWNrcyh7XG4gICAgU3RhY2tTdGF0dXNGaWx0ZXI6IFtcbiAgICAgICdDUkVBVEVfQ09NUExFVEUnLFxuICAgICAgJ1VQREFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICAgICdJTVBPUlRfQ09NUExFVEUnLFxuICAgICAgJ1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICBdLFxuICB9KTtcblxuICBjb25zdCBub3JtYWxpemUgPSBhc3luYyAoc3VtbWFyeTogU3RhY2tTdW1tYXJ5KSA9PiB7XG4gICAgY29uc3QgdGVtcGxhdGVDb21tYW5kT3V0cHV0ID0gYXdhaXQgY2ZuLmdldFRlbXBsYXRlKHsgU3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEgfSk7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBkZXNlcmlhbGl6ZVN0cnVjdHVyZSh0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQuVGVtcGxhdGVCb2R5ID8/ICd7fScpO1xuICAgIHJldHVybiB7XG4gICAgICBlbnZpcm9ubWVudCxcbiAgICAgIHN0YWNrTmFtZTogc3VtbWFyeS5TdGFja05hbWUhLFxuICAgICAgdGVtcGxhdGUsXG4gICAgfTtcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgcmV0dXJuIFByb21pc2UuYWxsKHN1bW1hcmllcy5tYXAobm9ybWFsaXplKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbnZpcm9ubWVudFNlY3Rpb25IZWFkZXIoZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50KSB7XG4gIGNvbnN0IGVudiA9IGBhd3M6Ly8ke2Vudmlyb25tZW50LmFjY291bnR9LyR7ZW52aXJvbm1lbnQucmVnaW9ufWA7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbShzdHJlYW0gPT4gZm10RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyKHN0cmVhbSwgZW52KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUeXBlZE1hcHBpbmdzKG1hcHBpbmdzOiBUeXBlZE1hcHBpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbSgoc3RyZWFtKSA9PiBmbXRUeXBlZE1hcHBpbmdzKHN0cmVhbSwgbWFwcGluZ3MpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEFtYmlndW91c01hcHBpbmdzKHBhdGhzOiBbc3RyaW5nW10sIHN0cmluZ1tdXVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKChzdHJlYW0pID0+IGZtdEFtYmlndW91c01hcHBpbmdzKHN0cmVhbSwgcGF0aHMpKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VG9TdHJlYW0oY2I6IChzdHJlYW06IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkgPT4gdm9pZCk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBTdHJpbmdXcml0ZVN0cmVhbSgpO1xuICBjYihzdHJlYW0pO1xuICByZXR1cm4gc3RyZWFtLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2Ygc3RhY2sgZ3JvdXBzLCBlYWNoIGNvbnRhaW5pbmcgdGhlIGxvY2FsIHN0YWNrcyBhbmQgdGhlIGRlcGxveWVkIHN0YWNrcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdyb3VwU3RhY2tzKHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlciwgbG9jYWxTdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSwgYWRkaXRpb25hbFN0YWNrTmFtZXM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGVudmlyb25tZW50czogTWFwPHN0cmluZywgY3hhcGkuRW52aXJvbm1lbnQ+ID0gbmV3IE1hcCgpO1xuXG4gIGZvciAoY29uc3Qgc3RhY2sgb2YgbG9jYWxTdGFja3MpIHtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gICAgY29uc3Qga2V5ID0gaGFzaE9iamVjdChlbnZpcm9ubWVudCk7XG4gICAgZW52aXJvbm1lbnRzLnNldChrZXksIGVudmlyb25tZW50KTtcbiAgfVxuXG4gIGNvbnN0IGxvY2FsQnlFbnZpcm9ubWVudCA9IGF3YWl0IGluZGV4QnkobG9jYWxTdGFja3MsXG4gICAgYXN5bmMgKHMpID0+IGhhc2hPYmplY3QoYXdhaXQgc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHMuZW52aXJvbm1lbnQpKSxcbiAgKTtcblxuICBjb25zdCBncm91cHM6IFN0YWNrR3JvdXBbXSA9IFtdO1xuICBmb3IgKGxldCBrZXkgb2YgbG9jYWxCeUVudmlyb25tZW50LmtleXMoKSkge1xuICAgIGNvbnN0IGVudmlyb25tZW50ID0gZW52aXJvbm1lbnRzLmdldChrZXkpITtcbiAgICBjb25zdCBhbGxEZXBsb3llZFN0YWNrcyA9IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudCk7XG4gICAgY29uc3QgbG9jYWwgPSBsb2NhbEJ5RW52aXJvbm1lbnQuZ2V0KGtleSkhO1xuICAgIGNvbnN0IGhhc0xvY2FsQ291bnRlcnBhcnQgPSAoczogQ2xvdWRGb3JtYXRpb25TdGFjaykgPT4gbG9jYWwuc29tZSgobCkgPT4gbC5zdGFja05hbWUgPT09IHMuc3RhY2tOYW1lKTtcbiAgICBjb25zdCB3YXNFeHBsaWNpdGx5UHJvdmlkZWQgPSAoczogQ2xvdWRGb3JtYXRpb25TdGFjaykgPT4gYWRkaXRpb25hbFN0YWNrTmFtZXMuaW5jbHVkZXMocy5zdGFja05hbWUpO1xuXG4gICAgZ3JvdXBzLnB1c2goe1xuICAgICAgZW52aXJvbm1lbnQsXG4gICAgICBkZXBsb3llZFN0YWNrczogYWxsRGVwbG95ZWRTdGFja3MuZmlsdGVyKHMgPT4gaGFzTG9jYWxDb3VudGVycGFydChzKSB8fCB3YXNFeHBsaWNpdGx5UHJvdmlkZWQocykpLFxuICAgICAgbG9jYWxTdGFja3M6IGxvY2FsLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn1cbiJdfQ==