cdk-import 0.2.153 → 0.2.154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -26,8 +26,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.importProducts = exports.importProduct = exports.importResourceType = void 0;
27
27
  const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
+ const caseutil = __importStar(require("case"));
29
30
  const cfn_registry_1 = require("./cfn-registry");
30
31
  const cfn_resource_generator_1 = require("./cfn-resource-generator");
32
+ const sc_construct_generator_1 = require("./sc-construct-generator");
31
33
  const service_catalog_1 = require("./service-catalog");
32
34
  /**
33
35
  * Entry point to import CFN resource types
@@ -57,9 +59,11 @@ exports.importResourceType = importResourceType;
57
59
  async function importProduct(options) {
58
60
  var _a;
59
61
  const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
60
- await (0, service_catalog_1.describeProductAggregate)(options);
61
- //TODO CodeGen
62
- return outdir; //just for typechecking
62
+ const product = await (0, service_catalog_1.describeProductAggregate)(options);
63
+ const gen = new sc_construct_generator_1.ServiceCatalogProvisioningConstructGenerator(product);
64
+ fs.mkdirSync(outdir, { recursive: true });
65
+ fs.writeFileSync(path.join(outdir, `${caseutil.header(gen.name).toLowerCase()}.ts`), gen.render());
66
+ return gen.name;
63
67
  }
64
68
  exports.importProduct = importProduct;
65
69
  ;
@@ -76,7 +80,7 @@ async function importProducts(options) {
76
80
  await Promise.all(availableProducts.map(async (product) => {
77
81
  const productVersion = await importProduct({
78
82
  outdir: outdir,
79
- productId: product.Id,
83
+ productId: product.ProductId,
80
84
  });
81
85
  productVersions.push(productVersion);
82
86
  }));
@@ -84,4 +88,4 @@ async function importProducts(options) {
84
88
  }
85
89
  exports.importProducts = importProducts;
86
90
  ;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtRjtBQUNuRixxRUFBZ0U7QUFDaEUsdURBQXNIO0FBU3RIOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsWUFBb0IsRUFBRSxnQkFBd0IsRUFBRSxPQUFrQzs7SUFDekgsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUM7SUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG1DQUFvQixFQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFPLENBQUMsQ0FBQztJQUU1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZDQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXRFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkIsQ0FBQztBQWJELGdEQWFDO0FBQUEsQ0FBQztBQWFGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQTZCOztJQUMvRCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUVyQyxNQUFNLElBQUEsMENBQXdCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFeEMsY0FBYztJQUVkLE9BQU8sTUFBTSxDQUFDLENBQUMsdUJBQXVCO0FBQ3hDLENBQUM7QUFSRCxzQ0FRQztBQUFBLENBQUM7QUFFRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUE2Qjs7SUFDaEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUM7SUFDckMsSUFBSSxlQUFlLEdBQWEsRUFBRSxDQUFDO0lBRW5DLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLHdDQUFzQixHQUFFLENBQUM7SUFFekQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUU7WUFDMUMsTUFBTSxFQUFFLE1BQU07WUFDZCxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUc7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRUosT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQWZELHdDQWVDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBkZXNjcmliZVJlc291cmNlVHlwZSwgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIH0gZnJvbSAnLi9jZm4tcmVnaXN0cnknO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IgfSBmcm9tICcuL2Nmbi1yZXNvdXJjZS1nZW5lcmF0b3InO1xuaW1wb3J0IHsgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlLCBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zLCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMgZXh0ZW5kcyBEZXNjcmliZVJlc291cmNlVHlwZU9wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCIuXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgQ0ZOIHJlc291cmNlIHR5cGVzXG4gKlxuICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgbmFtZSBvciBBUk4gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSBfcmVzb3VyY2VWZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSByZXNvdXJjZSB0eXBlIChpZ25vcmVkIGZvciBub3cpXG4gKiBAcGFyYW0gb3V0ZGlyIHRoZSBvdXQgZm9sZGVyIHRvIHVzZSAoZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5KVxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UmVzb3VyY2VUeXBlKHJlc291cmNlTmFtZTogc3RyaW5nLCBfcmVzb3VyY2VWZXJzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGNvbnN0IHR5cGUgPSBhd2FpdCBkZXNjcmliZVJlc291cmNlVHlwZShyZXNvdXJjZU5hbWUsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IHR5cGVTY2hlbWEgPSBKU09OLnBhcnNlKHR5cGUuU2NoZW1hISk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IENmblJlc291cmNlR2VuZXJhdG9yKHR5cGUuVHlwZU5hbWUsIHR5cGUsIHR5cGVTY2hlbWEpO1xuXG4gIGZzLm1rZGlyU3luYyhvdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dGRpciwgJ2luZGV4LnRzJyksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIHR5cGUuVHlwZU5hbWU7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBpbXBvcnRpbmcgcHJvZHVjdHMgaW50byB5b3VyIGxvY2FsIHdvcmtzcGFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFByb2R1Y3RPcHRpb25zIGV4dGVuZHMgRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIGluIHdoaWNoIHByb2R1Y3QgY29uc3RydWN0cyAoYXMgc2VwYXJhdGUgY2xhc3MgZmlsZXMpIHdpbGwgYmUgb3V0cHV0IHRvLlxuICAgKiBAZGVmYXVsdCBcIi4vc2MtcHJvZHVjdHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IHRvIGltcG9ydCBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZS5cbiAqXG4gKiBAcmV0dXJucyBuYW1lIG9mIHRoZSBwcm9kdWN0IHZlcnNpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3Qob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG5cbiAgYXdhaXQgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlKG9wdGlvbnMpO1xuXG4gIC8vVE9ETyBDb2RlR2VuXG5cbiAgcmV0dXJuIG91dGRpcjsgLy9qdXN0IGZvciB0eXBlY2hlY2tpbmdcbn07XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IGFsbCBhdmFpbGFibGUgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2VzIHdpdGggYERFRkFVTFRgIHBhcmFtZXRlcnMuXG4gKlxuICogQHJldHVybnMgbmFtZXMgb2YgdGhlIHByb2R1Y3QgdmVyc2lvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3RzKG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGxldCBwcm9kdWN0VmVyc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgYXZhaWxhYmxlUHJvZHVjdHMgPSBhd2FpdCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzKCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoYXZhaWxhYmxlUHJvZHVjdHMubWFwKGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdFZlcnNpb24gPSBhd2FpdCBpbXBvcnRQcm9kdWN0KCB7XG4gICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5JZCEsXG4gICAgfSk7XG4gICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyxpREFBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHFFQUF3RjtBQUN4Rix1REFBc0g7QUFTdEg7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxZQUFvQixFQUFFLGdCQUF3QixFQUFFLE9BQWtDOztJQUN6SCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUksNkNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixDQUFDO0FBYkQsZ0RBYUM7QUFBQSxDQUFDO0FBYUY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsT0FBNkI7O0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksR0FBRyxDQUFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwwQ0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHFFQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVuRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEIsQ0FBQztBQVZELHNDQVVDO0FBQUEsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQTZCOztJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsd0NBQXNCLEdBQUUsQ0FBQztJQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLGFBQWEsQ0FBRTtZQUMxQyxNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBVTtTQUM5QixDQUFDLENBQUM7UUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBZkQsd0NBZUM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhc2V1dGlsIGZyb20gJ2Nhc2UnO1xuaW1wb3J0IHsgZGVzY3JpYmVSZXNvdXJjZVR5cGUsIERlc2NyaWJlUmVzb3VyY2VUeXBlT3B0aW9ucyB9IGZyb20gJy4vY2ZuLXJlZ2lzdHJ5JztcbmltcG9ydCB7IENmblJlc291cmNlR2VuZXJhdG9yIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yIH0gZnJvbSAnLi9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yJztcbmltcG9ydCB7IGRlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZSwgRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucywgZmV0Y2hBdmFpbGFibGVQcm9kdWN0cyB9IGZyb20gJy4vc2VydmljZS1jYXRhbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXNvdXJjZVR5cGVPcHRpb25zIGV4dGVuZHMgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IENGTiByZXNvdXJjZSB0eXBlc1xuICpcbiAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb3IgQVJOIG9mIHRoZSByZXNvdXJjZSB0eXBlXG4gKiBAcGFyYW0gX3Jlc291cmNlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgcmVzb3VyY2UgdHlwZSAoaWdub3JlZCBmb3Igbm93KVxuICogQHBhcmFtIG91dGRpciB0aGUgb3V0IGZvbGRlciB0byB1c2UgKGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSlcbiAqIEByZXR1cm5zIG5hbWUgb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc291cmNlVHlwZShyZXNvdXJjZU5hbWU6IHN0cmluZywgX3Jlc291cmNlVmVyc2lvbjogc3RyaW5nLCBvcHRpb25zOiBJbXBvcnRSZXNvdXJjZVR5cGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuICBjb25zdCB0eXBlID0gYXdhaXQgZGVzY3JpYmVSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCBvcHRpb25zKTtcblxuICBjb25zdCB0eXBlU2NoZW1hID0gSlNPTi5wYXJzZSh0eXBlLlNjaGVtYSEpO1xuXG4gIGNvbnN0IGdlbiA9IG5ldyBDZm5SZXNvdXJjZUdlbmVyYXRvcih0eXBlLlR5cGVOYW1lLCB0eXBlLCB0eXBlU2NoZW1hKTtcblxuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRkaXIsICdpbmRleC50cycpLCBnZW4ucmVuZGVyKCkpO1xuXG4gIHJldHVybiB0eXBlLlR5cGVOYW1lO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgaW1wb3J0aW5nIHByb2R1Y3RzIGludG8geW91ciBsb2NhbCB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRQcm9kdWN0T3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBpbiB3aGljaCBwcm9kdWN0IGNvbnN0cnVjdHMgKGFzIHNlcGFyYXRlIGNsYXNzIGZpbGVzKSB3aWxsIGJlIG91dHB1dCB0by5cbiAgICogQGRlZmF1bHQgXCIuL3NjLXByb2R1Y3RzXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2UuXG4gKlxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRQcm9kdWN0KG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuXG4gIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9ucyk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yKHByb2R1Y3QpO1xuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCBgJHtjYXNldXRpbC5oZWFkZXIoZ2VuLm5hbWUpLnRvTG93ZXJDYXNlKCl9LnRzYCksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIGdlbi5uYW1lO1xufTtcblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgYWxsIGF2YWlsYWJsZSBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZXMgd2l0aCBgREVGQVVMVGAgcGFyYW1ldGVycy5cbiAqXG4gKiBAcmV0dXJucyBuYW1lcyBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UHJvZHVjdHMob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgbGV0IHByb2R1Y3RWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBhdmFpbGFibGVQcm9kdWN0cyA9IGF3YWl0IGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChhdmFpbGFibGVQcm9kdWN0cy5tYXAoYXN5bmMgKHByb2R1Y3QpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0VmVyc2lvbiA9IGF3YWl0IGltcG9ydFByb2R1Y3QoIHtcbiAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LlByb2R1Y3RJZCEsXG4gICAgfSk7XG4gICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { ProductDataAggregate } from './service-catalog';
2
+ /**
3
+ * Generator to emit classes and information on provisioning details for a product.
4
+ */
5
+ export declare class ServiceCatalogProvisioningConstructGenerator {
6
+ private readonly productDataAggregate;
7
+ private readonly hasParameters;
8
+ private readonly sanitizedTypeName;
9
+ private readonly resourceAttributes;
10
+ private readonly constructClassName;
11
+ private readonly propsStructName;
12
+ private readonly outputKeys;
13
+ readonly name: string;
14
+ /**
15
+ * @param productData the aggregate details on a product with information on inputs and outputs of the template.
16
+ */
17
+ constructor(productData: ProductDataAggregate);
18
+ /**
19
+ * Render the type into a TypeScript class file defining the props and the wrapped L1 construct AWS::ServiceCatalog::CloudFormationProvisionedProduct.
20
+ *
21
+ * @returns the rendered class file content
22
+ */
23
+ render(): string;
24
+ private emitImports;
25
+ private emitInterface;
26
+ private emitBase;
27
+ private emitParameters;
28
+ private emitParameterMap;
29
+ private emitDefinitionTypes;
30
+ private emitConstructClass;
31
+ }
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ServiceCatalogProvisioningConstructGenerator = void 0;
27
+ const case_1 = require("case");
28
+ const j2j = __importStar(require("json2jsii"));
29
+ /**
30
+ * Generator to emit classes and information on provisioning details for a product.
31
+ */
32
+ class ServiceCatalogProvisioningConstructGenerator {
33
+ /**
34
+ * @param productData the aggregate details on a product with information on inputs and outputs of the template.
35
+ */
36
+ constructor(productData) {
37
+ this.productDataAggregate = productData;
38
+ this.sanitizedTypeName = (0, case_1.pascal)(this.productDataAggregate.product.Name);
39
+ this.constructClassName = j2j.TypeGenerator.normalizeTypeName(this.sanitizedTypeName);
40
+ this.propsStructName = j2j.TypeGenerator.normalizeTypeName(`${this.constructClassName}Props`);
41
+ this.name = this.sanitizedTypeName;
42
+ this.resourceAttributes = new Array();
43
+ this.outputKeys = this.productDataAggregate.params.ProvisioningArtifactOutputKeys.map(key => key.Key);
44
+ this.hasParameters = this.productDataAggregate.params.ProvisioningArtifactParameters.length > 0;
45
+ const attributeNames = [
46
+ 'provisionedProductId',
47
+ 'cloudFormationStackArn',
48
+ 'recordId',
49
+ ...this.outputKeys.map(case_1.camel),
50
+ ];
51
+ for (const attr of attributeNames) {
52
+ this.resourceAttributes.push(attr);
53
+ }
54
+ }
55
+ /**
56
+ * Render the type into a TypeScript class file defining the props and the wrapped L1 construct AWS::ServiceCatalog::CloudFormationProvisionedProduct.
57
+ *
58
+ * @returns the rendered class file content
59
+ */
60
+ render() {
61
+ const code = new j2j.Code();
62
+ this.emitImports(code);
63
+ this.emitInterface(code);
64
+ this.emitBase(code);
65
+ if (this.hasParameters) {
66
+ this.emitParameterMap(code);
67
+ this.emitDefinitionTypes(code);
68
+ }
69
+ this.emitConstructClass(code);
70
+ return code.render();
71
+ }
72
+ emitImports(code) {
73
+ code.line('// Generated by cdk-import');
74
+ code.line("import * as cdk from 'aws-cdk-lib';");
75
+ code.line("import * as constructs from 'constructs';");
76
+ code.line("import * as sc from 'aws-cdk-lib/aws-servicecatalog';");
77
+ code.line();
78
+ }
79
+ emitInterface(code) {
80
+ code.openBlock(`export interface I${this.constructClassName} extends cdk.IResource`);
81
+ this.resourceAttributes.forEach(attr => {
82
+ code.line(`readonly ${attr}: string;`);
83
+ });
84
+ code.closeBlock();
85
+ code.line();
86
+ }
87
+ emitBase(code) {
88
+ code.openBlock(`abstract class ${this.constructClassName}Base extends cdk.Resource implements I${this.constructClassName}`);
89
+ this.resourceAttributes.forEach(attr => {
90
+ code.line(`public abstract readonly ${attr}: string;`);
91
+ });
92
+ code.closeBlock();
93
+ code.line();
94
+ }
95
+ emitParameters(code) {
96
+ code.line(' provisioningParameters:');
97
+ code.line(' Object.entries(props).map(([k, v]) => {');
98
+ code.line(' return {');
99
+ code.line(' key: ParameterKeys.valueOf(k) as string,');
100
+ code.line(' value: v as string,');
101
+ code.line(' }');
102
+ code.line(' }),');
103
+ }
104
+ emitParameterMap(code) {
105
+ var _a;
106
+ code.openBlock('enum ParameterKeys');
107
+ (_a = this.productDataAggregate.params.ProvisioningArtifactParameters) === null || _a === void 0 ? void 0 : _a.forEach(p => {
108
+ code.line(`${(0, case_1.camel)(p.ParameterKey)} = '${p.ParameterKey}',`);
109
+ });
110
+ code.closeBlock();
111
+ code.line();
112
+ code.openBlock('namespace ParameterKeys');
113
+ code.line('const reverseMap = new Map<string, ParameterKeys>();');
114
+ code.line('Object.keys(ParameterKeys).forEach((s: string) => {');
115
+ code.line(' const e = (<any>ParameterKeys)[s];');
116
+ code.line(' reverseMap.set(s, e);');
117
+ code.line('});');
118
+ code.line('export function valueOf(str: string) {');
119
+ code.line(' return reverseMap.get(str);');
120
+ code.line('}');
121
+ code.closeBlock();
122
+ }
123
+ emitDefinitionTypes(code) {
124
+ code.openBlock(`export interface ${this.constructClassName}Props`);
125
+ this.productDataAggregate.params.ProvisioningArtifactParameters.forEach(pa => {
126
+ var _a, _b, _c, _d;
127
+ let optional = '';
128
+ code.line('/**');
129
+ (pa.Description != undefined) ? code.line(` * ${pa.Description}`) : null;
130
+ if (pa.DefaultValue) {
131
+ optional += '?';
132
+ (((_a = pa.ParameterConstraints) === null || _a === void 0 ? void 0 : _a.ConstraintDescription) != undefined) ? code.line(` * ${(_b = pa.ParameterConstraints) === null || _b === void 0 ? void 0 : _b.ConstraintDescription}`) : null;
133
+ code.line(' *');
134
+ code.line(` * @default ${pa.DefaultValue}`);
135
+ }
136
+ code.line(' */');
137
+ code.line(`readonly ${(0, case_1.camel)(pa.ParameterKey)}${optional}: ${((_d = (_c = pa.ParameterConstraints) === null || _c === void 0 ? void 0 : _c.AllowedValues) === null || _d === void 0 ? void 0 : _d.length) ? pa.ParameterKey : 'string'};`);
138
+ code.line();
139
+ });
140
+ code.closeBlock();
141
+ code.line();
142
+ }
143
+ emitConstructClass(code) {
144
+ var _a;
145
+ code.line('/**');
146
+ code.line(` * A Service Catalog CloudFormation \`${this.sanitizedTypeName}\` product.`);
147
+ code.line(' *');
148
+ code.line(' * @cloudformationResource AWS::ServiceCatalog::CloudFormationProvisionedProduct');
149
+ code.line(' * @stability external');
150
+ code.line(' */');
151
+ code.openBlock(`export class ${this.constructClassName} extends ${this.constructClassName}Base`);
152
+ for (const prop of this.resourceAttributes) {
153
+ code.line('/**');
154
+ code.line(` * Attribute \`${this.sanitizedTypeName}.${prop}\``);
155
+ code.line(' */');
156
+ code.line(`public readonly ${(0, case_1.camel)(prop)}: string;`);
157
+ }
158
+ code.line('private readonly provisionedProduct: sc.CfnCloudFormationProvisionedProduct;');
159
+ code.line();
160
+ code.line('/**');
161
+ code.line(` * Create a new Service Catalog \`${this.sanitizedTypeName}\` product.`);
162
+ code.line(' *');
163
+ code.line(' * @param scope - scope in which this resource is defined');
164
+ code.line(' * @param id - scoped id of the resource');
165
+ if (this.hasParameters) {
166
+ code.line(' * @param props - resource properties');
167
+ }
168
+ code.line(' */');
169
+ if (this.hasParameters) {
170
+ code.openBlock(`constructor(scope: constructs.Construct, id: string, props: ${this.propsStructName})`);
171
+ }
172
+ else {
173
+ code.openBlock('constructor(scope: constructs.Construct, id: string)');
174
+ }
175
+ code.line('super(scope, id);');
176
+ code.line('');
177
+ code.line("this.provisionedProduct = new sc.CfnCloudFormationProvisionedProduct(this, 'Resource', {");
178
+ code.line(' provisionedProductName: this.node.id,');
179
+ code.line(` provisioningArtifactName: '${this.productDataAggregate.provisioningArtifact.Name}',`);
180
+ code.line(` productName: '${this.productDataAggregate.product.Name}',`);
181
+ // generate provisioning parameters from props to avoid redundant defaults
182
+ if (this.hasParameters) {
183
+ this.emitParameters(code);
184
+ }
185
+ ;
186
+ code.line('});');
187
+ code.line();
188
+ code.line('this.provisionedProductId = this.provisionedProduct.ref;');
189
+ code.line("this.cloudFormationStackArn = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'CloudformationStackArn'));");
190
+ code.line("this.recordId = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'RecordId'));");
191
+ (_a = this.outputKeys) === null || _a === void 0 ? void 0 : _a.forEach(output => {
192
+ code.line(`this.${(0, case_1.camel)(output)} = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'Outputs.${output}'));`);
193
+ });
194
+ code.closeBlock();
195
+ // Close construct class
196
+ code.closeBlock();
197
+ }
198
+ }
199
+ exports.ServiceCatalogProvisioningConstructGenerator = ServiceCatalogProvisioningConstructGenerator;
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uc3RydWN0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQXFDO0FBQ3JDLCtDQUFpQztBQUdqQzs7R0FFRztBQUNILE1BQWEsNENBQTRDO0lBVXZEOztPQUVHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLDhCQUErQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFJLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsOEJBQStCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVqRyxNQUFNLGNBQWMsR0FBYTtZQUMvQixzQkFBc0I7WUFD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QStILENBQUMsQ0FBQztRQUMzSSxJQUFJLENBQUMsSUFBSSxDQUFDLG1HQUFtRyxDQUFDLENBQUM7UUFDL0csTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUEsWUFBSyxFQUFDLE1BQU0sQ0FBQyxtRkFBbUYsTUFBTSxNQUFNLENBQUMsQ0FBQztRQUNsSSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQXhMRCxvR0F3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXNjYWwsIGNhbWVsIH0gZnJvbSAnY2FzZSc7XG5pbXBvcnQgKiBhcyBqMmogZnJvbSAnanNvbjJqc2lpJztcbmltcG9ydCB7IFByb2R1Y3REYXRhQWdncmVnYXRlIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuXG4vKipcbiAqIEdlbmVyYXRvciB0byBlbWl0IGNsYXNzZXMgYW5kIGluZm9ybWF0aW9uIG9uIHByb3Zpc2lvbmluZyBkZXRhaWxzIGZvciBhIHByb2R1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ1Byb3Zpc2lvbmluZ0NvbnN0cnVjdEdlbmVyYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdERhdGFBZ2dyZWdhdGU6IFByb2R1Y3REYXRhQWdncmVnYXRlO1xuICBwcml2YXRlIHJlYWRvbmx5IGhhc1BhcmFtZXRlcnM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkVHlwZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnN0cnVjdENsYXNzTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzU3RydWN0TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEtleXM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvZHVjdERhdGEgdGhlIGFnZ3JlZ2F0ZSBkZXRhaWxzIG9uIGEgcHJvZHVjdCB3aXRoIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9kdWN0RGF0YTogUHJvZHVjdERhdGFBZ2dyZWdhdGUpIHtcbiAgICB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlID0gcHJvZHVjdERhdGE7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHBhc2NhbCh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuTmFtZSEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gajJqLlR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUodGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBqMmouVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuc2FuaXRpemVkVHlwZU5hbWU7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMub3V0cHV0S2V5cyA9IHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0S2V5cyEubWFwKGtleSA9PiBrZXkuS2V5ISk7XG4gICAgdGhpcy5oYXNQYXJhbWV0ZXJzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzIS5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgJ3Byb3Zpc2lvbmVkUHJvZHVjdElkJyxcbiAgICAgICdjbG91ZEZvcm1hdGlvblN0YWNrQXJuJyxcbiAgICAgICdyZWNvcmRJZCcsXG4gICAgICAuLi50aGlzLm91dHB1dEtleXMubWFwKGNhbWVsKSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBhdHRyIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHR5cGUgaW50byBhIFR5cGVTY3JpcHQgY2xhc3MgZmlsZSBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSB3cmFwcGVkIEwxIGNvbnN0cnVjdCBBV1M6OlNlcnZpY2VDYXRhbG9nOjpDbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdC5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdEludGVyZmFjZShjb2RlKTtcbiAgICB0aGlzLmVtaXRCYXNlKGNvZGUpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuZW1pdFBhcmFtZXRlck1hcChjb2RlKTtcbiAgICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Q29uc3RydWN0Q2xhc3MoY29kZSk7XG4gICAgcmV0dXJuIGNvZGUucmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbXBvcnRzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvLyBHZW5lcmF0ZWQgYnkgY2RrLWltcG9ydCcpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XCIpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIHNjIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZXJ2aWNlY2F0YWxvZyc7XCIpO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW50ZXJmYWNlKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgSSR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgY2RrLklSZXNvdXJjZWApO1xuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHJlYWRvbmx5ICR7YXR0cn06IHN0cmluZztgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEJhc2UoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLm9wZW5CbG9jayhgYWJzdHJhY3QgY2xhc3MgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1CYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSSR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9YCk7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgIGNvZGUubGluZShgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5ICR7YXR0cn06IHN0cmluZztgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBhcmFtZXRlcnMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJyAgcHJvdmlzaW9uaW5nUGFyYW1ldGVyczonKTtcbiAgICBjb2RlLmxpbmUoJyAgICBPYmplY3QuZW50cmllcyhwcm9wcykubWFwKChbaywgdl0pID0+IHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgIHJldHVybiB7Jyk7XG4gICAgY29kZS5saW5lKCcgICAgICAgIGtleTogUGFyYW1ldGVyS2V5cy52YWx1ZU9mKGspIGFzIHN0cmluZywnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgICAgdmFsdWU6IHYgYXMgc3RyaW5nLCcpO1xuICAgIGNvZGUubGluZSgnICAgICAgfScpO1xuICAgIGNvZGUubGluZSgnICAgIH0pLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UGFyYW1ldGVyTWFwKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soJ2VudW0gUGFyYW1ldGVyS2V5cycpO1xuICAgIHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0UGFyYW1ldGVycz8uZm9yRWFjaChwID0+IHtcbiAgICAgIGNvZGUubGluZShgJHtjYW1lbChwLlBhcmFtZXRlcktleSEpfSA9ICcke3AuUGFyYW1ldGVyS2V5fScsYCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgY29kZS5vcGVuQmxvY2soJ25hbWVzcGFjZSBQYXJhbWV0ZXJLZXlzJyk7XG4gICAgY29kZS5saW5lKCdjb25zdCByZXZlcnNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFBhcmFtZXRlcktleXM+KCk7Jyk7XG4gICAgY29kZS5saW5lKCdPYmplY3Qua2V5cyhQYXJhbWV0ZXJLZXlzKS5mb3JFYWNoKChzOiBzdHJpbmcpID0+IHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgY29uc3QgZSA9ICg8YW55PlBhcmFtZXRlcktleXMpW3NdOycpO1xuICAgIGNvZGUubGluZSgnICByZXZlcnNlTWFwLnNldChzLCBlKTsnKTtcbiAgICBjb2RlLmxpbmUoJ30pOycpO1xuICAgIGNvZGUubGluZSgnZXhwb3J0IGZ1bmN0aW9uIHZhbHVlT2Yoc3RyOiBzdHJpbmcpIHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgcmV0dXJuIHJldmVyc2VNYXAuZ2V0KHN0cik7Jyk7XG4gICAgY29kZS5saW5lKCd9Jyk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXREZWZpbml0aW9uVHlwZXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGludGVyZmFjZSAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfVByb3BzYCk7XG4gICAgdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzIS5mb3JFYWNoKHBhID0+IHtcbiAgICAgIGxldCBvcHRpb25hbCA9ICcnO1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIChwYS5EZXNjcmlwdGlvbiAhPSB1bmRlZmluZWQpID8gY29kZS5saW5lKGAgKiAke3BhLkRlc2NyaXB0aW9ufWApOiBudWxsO1xuICAgICAgaWYgKHBhLkRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBvcHRpb25hbCArPSAnPyc7XG4gICAgICAgIChwYS5QYXJhbWV0ZXJDb25zdHJhaW50cz8uQ29uc3RyYWludERlc2NyaXB0aW9uICE9IHVuZGVmaW5lZCkgPyBjb2RlLmxpbmUoYCAqICR7cGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkNvbnN0cmFpbnREZXNjcmlwdGlvbn1gKTogbnVsbDtcbiAgICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgICBjb2RlLmxpbmUoYCAqIEBkZWZhdWx0ICR7cGEuRGVmYXVsdFZhbHVlfWApO1xuICAgICAgfVxuXG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2NhbWVsKHBhLlBhcmFtZXRlcktleSEpfSR7b3B0aW9uYWx9OiAke3BhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5BbGxvd2VkVmFsdWVzPy5sZW5ndGggPyBwYS5QYXJhbWV0ZXJLZXkgOiAnc3RyaW5nJ307YCk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENvbnN0cnVjdENsYXNzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIEEgU2VydmljZSBDYXRhbG9nIENsb3VkRm9ybWF0aW9uIFxcYCR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX1cXGAgcHJvZHVjdC5gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKCcgKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSBBV1M6OlNlcnZpY2VDYXRhbG9nOjpDbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdCcpO1xuICAgIGNvZGUubGluZSgnICogQHN0YWJpbGl0eSBleHRlcm5hbCcpO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZWApO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogQXR0cmlidXRlIFxcYCR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX0uJHtwcm9wfVxcYGApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5ICR7Y2FtZWwocHJvcCl9OiBzdHJpbmc7YCk7XG4gICAgfVxuICAgIGNvZGUubGluZSgncHJpdmF0ZSByZWFkb25seSBwcm92aXNpb25lZFByb2R1Y3Q6IHNjLkNmbkNsb3VkRm9ybWF0aW9uUHJvdmlzaW9uZWRQcm9kdWN0OycpO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIENyZWF0ZSBhIG5ldyBTZXJ2aWNlIENhdGFsb2cgXFxgJHt0aGlzLnNhbml0aXplZFR5cGVOYW1lfVxcYCBwcm9kdWN0LmApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZCcpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZScpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllcycpO1xuICAgIH1cbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMucHJvcHNTdHJ1Y3ROYW1lfSlgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5vcGVuQmxvY2soJ2NvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZyknKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCdzdXBlcihzY29wZSwgaWQpOycpO1xuICAgIGNvZGUubGluZSgnJyk7XG4gICAgY29kZS5saW5lKFwidGhpcy5wcm92aXNpb25lZFByb2R1Y3QgPSBuZXcgc2MuQ2ZuQ2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3QodGhpcywgJ1Jlc291cmNlJywge1wiKTtcbiAgICBjb2RlLmxpbmUoJyAgcHJvdmlzaW9uZWRQcm9kdWN0TmFtZTogdGhpcy5ub2RlLmlkLCcpO1xuICAgIGNvZGUubGluZShgICBwcm92aXNpb25pbmdBcnRpZmFjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuTmFtZSF9JyxgKTtcbiAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lIX0nLGApO1xuXG4gICAgLy8gZ2VuZXJhdGUgcHJvdmlzaW9uaW5nIHBhcmFtZXRlcnMgZnJvbSBwcm9wcyB0byBhdm9pZCByZWR1bmRhbnQgZGVmYXVsdHNcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLmVtaXRQYXJhbWV0ZXJzKGNvZGUpO1xuICAgIH07XG4gICAgY29kZS5saW5lKCd9KTsnKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLmxpbmUoJ3RoaXMucHJvdmlzaW9uZWRQcm9kdWN0SWQgPSB0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdC5yZWY7Jyk7XG4gICAgY29kZS5saW5lKFwidGhpcy5jbG91ZEZvcm1hdGlvblN0YWNrQXJuID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnQ2xvdWRmb3JtYXRpb25TdGFja0FybicpKTtcIik7XG4gICAgY29kZS5saW5lKFwidGhpcy5yZWNvcmRJZCA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LmxvZ2ljYWxJZCwgJ1JlY29yZElkJykpO1wiKTtcbiAgICB0aGlzLm91dHB1dEtleXM/LmZvckVhY2gob3V0cHV0ID0+IHtcbiAgICAgIGNvZGUubGluZShgdGhpcy4ke2NhbWVsKG91dHB1dCl9ID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnT3V0cHV0cy4ke291dHB1dH0nKSk7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxufSJdfQ==
@@ -26,7 +26,7 @@ export interface DescribeProductAggregateOptions {
26
26
  /**
27
27
  * The product Id.
28
28
  */
29
- readonly productId: string;
29
+ readonly productId?: string;
30
30
  /**
31
31
  * The provisioning artifact Id.
32
32
  */
@@ -111,7 +111,12 @@ async function describeProduct(options) {
111
111
  validateProductData(options.productId, describeProductResponse);
112
112
  const provisioningArtifact = resolveProvisioningArtifact(describeProductResponse.ProvisioningArtifacts, options.provisioningArtifactId);
113
113
  const launchPath = resolveLaunchPath(describeProductResponse.LaunchPaths, options.launchPathId);
114
- const parameters = await describeProvisioningParameters(options);
114
+ const parameters = await describeProvisioningParameters({
115
+ productId: options.productId,
116
+ provisioningArtifactId: provisioningArtifact.Id,
117
+ launchPathId: launchPath.Id,
118
+ client: sc,
119
+ });
115
120
  return {
116
121
  product: describeProductResponse.ProductViewSummary,
117
122
  provisioningArtifact: provisioningArtifact,
@@ -186,4 +191,4 @@ function validateProductData(productId, product) {
186
191
  throw new Error(`Cannot resolve launch paths for product: ${productId}`);
187
192
  }
188
193
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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RTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQWlEO0lBQy9GLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksU0FBUyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+O1xuICBkZXNjcmliZVByb2R1Y3QoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb2R1Y3QoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBgREVGQVVMVGAgdmFsdWUgZm9yIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgYW5kIGxhdW5jaCBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIFNlcnZpY2UgQ2F0YWxvZyBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudDtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggcGF0aCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFBhdGhJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgZnJvbSBsaXN0IG9mIGF2YWlsYWJsZSBhcnRpZmFjdHMuXG4gKiBJZiBubyBxdWVyeSBhcnRpZmFjdCBJZCBpcyBwcm92aWRlZCwgdGhlIGFydGlmYWN0IG1hcmtlZCBgREVGQVVMVGAgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIG5vIGBERUZBVUxUYCBhcnRpZmFjdCBleGlzdHMsIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgYXJ0aWZhY3Qgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzIGxpc3Qgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0cyBmb3IgYSBwcm9kdWN0XG4gKiBAcGFyYW0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCBxdWVyeSBhcnRpZmFjdCBJZFxuICogQHJldHVybnMgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbFxuICovXG5mdW5jdGlvbiByZXNvbHZlUHJvdmlzaW9uaW5nQXJ0aWZhY3QocHJvdmlzaW9uaW5nQXJ0aWZhY3RzOiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3RzLCBwcm92aXNpb25pbmdBcnRpZmFjdElkPzogc3RyaW5nKTpcbkFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdCB7XG4gIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdElkKSB7XG4gICAgY29uc3QgcHJvdmlzaW9uaW5nQXJ0aWZhY3QgPSBwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLklkID09IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuICAgIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdC5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGlkOiAke3Byb3Zpc2lvbmluZ0FydGlmYWN0SWR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdC5wb3AoKSE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5HdWlkYW5jZSA9PSAnREVGQVVMVCcpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLkd1aWRhbmNlID09ICdERUZBVUxUJykucG9wKCkhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHByb3Zpc2lvbmluZ0FydGlmYWN0cy5zb3J0KChhLCBiKSA9PiBhLkNyZWF0ZWRUaW1lIS52YWx1ZU9mKCkgLSBiLkNyZWF0ZWRUaW1lIS52YWx1ZU9mKCkpLnBvcCgpITtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgZGVmYXVsdCBvciBsYXRlc3QgcHJvdmlzaW9uaW5nIGFydGlmYWN0LicpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHF1ZXJpZWQgbGF1bmNoIHBhdGggZnJvbSBsaXN0IG9mIGF2YWlsYWJsZSBsYXVuY2ggcGF0aHMuXG4gKiBAcGFyYW0gbGF1bmNoUGF0aHMgbGlzdCBvZiBhdmFpbGFibGUgbGF1bmNoIHBhdGhzIGZvciB0aGUgcHJvZHVjdFxuICogQHBhcmFtIGxhdW5jaFBhdGhJZCB0aGUgcXVlcnkgbGF1bmNoIHBhdGgncyBJZFxuICogQHJldHVybnMgdGhlIGxhdW5jaCBwYXRoIHN1bW1hcnkgZm9yIHRoZSBxdWVyeSBsYXVuY2ggcGF0aFxuICovXG5mdW5jdGlvbiByZXNvbHZlTGF1bmNoUGF0aChsYXVuY2hQYXRoczogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJpZXMsIGxhdW5jaFBhdGhJZD86IHN0cmluZyk6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeSB7XG4gIGlmIChsYXVuY2hQYXRoSWQpIHtcbiAgICBjb25zdCBsYXVuY2hQYXRoID0gbGF1bmNoUGF0aHMuZmlsdGVyKGxwID0+IGxwLklkID09IGxhdW5jaFBhdGhJZCk7XG4gICAgaWYgKGxhdW5jaFBhdGgubGVuZ3RoID09IDAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCBsYXVuY2ggcGF0aCBpZDogJHtsYXVuY2hQYXRoSWR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsYXVuY2hQYXRoLnBvcCgpITtcbiAgICB9XG5cbiAgfSBlbHNlIGlmIChsYXVuY2hQYXRocy5sZW5ndGggPT0gMSkge1xuICAgIHJldHVybiBsYXVuY2hQYXRocy5wb3AoKSE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBiZXR3ZWVuIG11bHRpcGxlIGxhdW5jaCBwYXRocy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGFsbCB0aGUgYXZhaWxhYmxlIG9yIHF1ZXJpZWQgc2VydmljZSBjYXRhbG9nIHByb2R1Y3QocykgZm9yIHRoZSBjYWxsZXIuXG4gKlxuICogQHJldHVybnMgbGlzdCBvZiBwcm9kdWN0IHZpZXcgc3VtbWFyaWVzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRlc2NyaWJlUHJvZHVjdChvcHRpb25zOiBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zKTogUHJvbWlzZTxQcm9kdWN0RGF0YUFnZ3JlZ2F0ZT4ge1xuICBjb25zdCBzYzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50ID0gb3B0aW9ucy5jbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2U6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb2R1Y3Qoe1xuICAgIElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgfSk7XG4gIHZhbGlkYXRlUHJvZHVjdERhdGEob3B0aW9ucy5wcm9kdWN0SWQsIGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdBcnRpZmFjdDogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLlByb3Zpc2lvbmluZ0FydGlmYWN0cyEsXG4gICAgb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkKTtcblxuICBjb25zdCBsYXVuY2hQYXRoOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkgPSByZXNvbHZlTGF1bmNoUGF0aChkZXNjcmliZVByb2R1Y3RSZXNwb25zZS5MYXVuY2hQYXRocyEsIG9wdGlvbnMubGF1bmNoUGF0aElkKTtcblxuICBjb25zdCBwYXJhbWV0ZXJzOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0ID0gYXdhaXQgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgcHJvZHVjdDogZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvZHVjdFZpZXdTdW1tYXJ5ISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdDogcHJvdmlzaW9uaW5nQXJ0aWZhY3QsXG4gICAgbGF1bmNoUGF0aDogbGF1bmNoUGF0aCxcbiAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbGwgdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoY2xpZW50PzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBjbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm9kdWN0Vmlld1N1bW1hcmllcyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0ID0gYXdhaXQgc2Muc2VhcmNoUHJvZHVjdHMoe1xuICAgICAgUGFnZVRva2VuOiB0b2tlbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwcm92aXNpb24gYW4gYXJ0aWZhY3QuXG4gKiBJbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhlIHByb2R1Y3QuXG4gKlxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6XG5Qcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcblxuICBjb25zdCBzYyA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIFByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgUHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogb3B0aW9ucy5sYXVuY2hQYXRoSWQsXG4gIH0pO1xuXG4gIHJldHVybiBwcm92aXNpb25pbmdQYXJhbWV0ZXJzO1xufVxuXG4vKipcbiAqIEhvbGRzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIGEgcHJvZHVjdCBhcnRpZmFjdCB0byBwcm92aXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdERhdGFBZ2dyZWdhdGUge1xuICAvKipcbiAgICogQ29yZSBwcm9kdWN0IGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgYWN0dWFsIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdDtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIGxhdW5jaCBwYXRoIGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgcGVybWlzc2lvbnMvYWJpbGl0eSBmb3IgZW5kIHVzZXIgdG8gcHJvdmlzaW9uIHRoZSBwcm9kdWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiBwcm92aXNpb25pbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAgICogSG9sZHMgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhlIGRvd25zdHJlYW0gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBwYXJhbXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ7XG59XG5cbi8qKlxuICogTWFrZXMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gc2VydmljZSBjYXRhbG9nIHRvIGdldCBhbGwgaW5mb3JtYXRpb25cbiAqIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIFByb2R1Y3RWZXJzaW9uRGF0YSBhZ2dyZWdhdGUgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZSA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdCh7XG4gICAgcHJvZHVjdElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgICBsYXVuY2hQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4gcHJvZHVjdERhdGFBZ2dyZWdhdGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcsIHByb2R1Y3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQpOiB2b2lkIHtcbiAgaWYgKHByb2R1Y3QuUHJvZHVjdFZpZXdTdW1tYXJ5ID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgcHJvZHVjdCBkZXRhaWxzIGZvciAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0cyA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9IGVsc2UgaWYgKHByb2R1Y3QuTGF1bmNoUGF0aHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBsYXVuY2ggcGF0aHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9XG59Il19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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O1FBQ2pELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7UUFDbEMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQjtRQUN0RCxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQWlEO0lBQy9GLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksU0FBUyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+O1xuICBkZXNjcmliZVByb2R1Y3QoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb2R1Y3QoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBgREVGQVVMVGAgdmFsdWUgZm9yIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgYW5kIGxhdW5jaCBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIFNlcnZpY2UgQ2F0YWxvZyBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudDtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm92aXNpb25pbmdBcnRpZmFjdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHBhdGggSWQuXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hQYXRoSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZyb20gbGlzdCBvZiBhdmFpbGFibGUgYXJ0aWZhY3RzLlxuICogSWYgbm8gcXVlcnkgYXJ0aWZhY3QgSWQgaXMgcHJvdmlkZWQsIHRoZSBhcnRpZmFjdCBtYXJrZWQgYERFRkFVTFRgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiBubyBgREVGQVVMVGAgYXJ0aWZhY3QgZXhpc3RzLCB0aGUgbW9zdCByZWNlbnRseSBjcmVhdGVkIGFydGlmYWN0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHByb3Zpc2lvbmluZ0FydGlmYWN0cyBsaXN0IG9mIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIGEgcHJvZHVjdFxuICogQHBhcmFtIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQgcXVlcnkgYXJ0aWZhY3QgSWRcbiAqIEByZXR1cm5zIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBkZXRhaWxcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KHByb3Zpc2lvbmluZ0FydGlmYWN0czogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0cywgcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZD86IHN0cmluZyk6XG5BV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3Qge1xuICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCkge1xuICAgIGNvbnN0IHByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5JZCA9PSBwcm92aXNpb25pbmdBcnRpZmFjdElkKTtcbiAgICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3QubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc3BlY2lmaWVkIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBpZDogJHtwcm92aXNpb25pbmdBcnRpZmFjdElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3QucG9wKCkhO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHByb3Zpc2lvbmluZ0FydGlmYWN0cy5maWx0ZXIocGEgPT4gcGEuR3VpZGFuY2UgPT0gJ0RFRkFVTFQnKS5sZW5ndGggPT0gMSkge1xuICAgICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5HdWlkYW5jZSA9PSAnREVGQVVMVCcpLnBvcCgpITtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuc29ydCgoYSwgYikgPT4gYS5DcmVhdGVkVGltZSEudmFsdWVPZigpIC0gYi5DcmVhdGVkVGltZSEudmFsdWVPZigpKS5wb3AoKSE7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXNvbHZlIGRlZmF1bHQgb3IgbGF0ZXN0IHByb3Zpc2lvbmluZyBhcnRpZmFjdC4nKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBxdWVyaWVkIGxhdW5jaCBwYXRoIGZyb20gbGlzdCBvZiBhdmFpbGFibGUgbGF1bmNoIHBhdGhzLlxuICogQHBhcmFtIGxhdW5jaFBhdGhzIGxpc3Qgb2YgYXZhaWxhYmxlIGxhdW5jaCBwYXRocyBmb3IgdGhlIHByb2R1Y3RcbiAqIEBwYXJhbSBsYXVuY2hQYXRoSWQgdGhlIHF1ZXJ5IGxhdW5jaCBwYXRoJ3MgSWRcbiAqIEByZXR1cm5zIHRoZSBsYXVuY2ggcGF0aCBzdW1tYXJ5IGZvciB0aGUgcXVlcnkgbGF1bmNoIHBhdGhcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUxhdW5jaFBhdGgobGF1bmNoUGF0aHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyaWVzLCBsYXVuY2hQYXRoSWQ/OiBzdHJpbmcpOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkge1xuICBpZiAobGF1bmNoUGF0aElkKSB7XG4gICAgY29uc3QgbGF1bmNoUGF0aCA9IGxhdW5jaFBhdGhzLmZpbHRlcihscCA9PiBscC5JZCA9PSBsYXVuY2hQYXRoSWQpO1xuICAgIGlmIChsYXVuY2hQYXRoLmxlbmd0aCA9PSAwICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgbGF1bmNoIHBhdGggaWQ6ICR7bGF1bmNoUGF0aElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGF1bmNoUGF0aC5wb3AoKSE7XG4gICAgfVxuXG4gIH0gZWxzZSBpZiAobGF1bmNoUGF0aHMubGVuZ3RoID09IDEpIHtcbiAgICByZXR1cm4gbGF1bmNoUGF0aHMucG9wKCkhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgYmV0d2VlbiBtdWx0aXBsZSBsYXVuY2ggcGF0aHMuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBhbGwgdGhlIGF2YWlsYWJsZSBvciBxdWVyaWVkIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0KHMpIGZvciB0aGUgY2FsbGVyLlxuICpcbiAqIEByZXR1cm5zIGxpc3Qgb2YgcHJvZHVjdCB2aWV3IHN1bW1hcmllc1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3Qob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2M6IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0T3V0cHV0ID0gYXdhaXQgc2MuZGVzY3JpYmVQcm9kdWN0KHtcbiAgICBJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gIH0pO1xuICB2YWxpZGF0ZVByb2R1Y3REYXRhKG9wdGlvbnMucHJvZHVjdElkISwgZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ0FydGlmYWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3QgPSByZXNvbHZlUHJvdmlzaW9uaW5nQXJ0aWZhY3QoZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvdmlzaW9uaW5nQXJ0aWZhY3RzISxcbiAgICBvcHRpb25zLnByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuXG4gIGNvbnN0IGxhdW5jaFBhdGg6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeSA9IHJlc29sdmVMYXVuY2hQYXRoKGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLkxhdW5jaFBhdGhzISwgb3B0aW9ucy5sYXVuY2hQYXRoSWQpO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIHByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQhLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IHByb3Zpc2lvbmluZ0FydGlmYWN0LklkISxcbiAgICBsYXVuY2hQYXRoSWQ6IGxhdW5jaFBhdGguSWQhLFxuICAgIGNsaWVudDogc2MsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcHJvZHVjdDogZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvZHVjdFZpZXdTdW1tYXJ5ISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdDogcHJvdmlzaW9uaW5nQXJ0aWZhY3QsXG4gICAgbGF1bmNoUGF0aDogbGF1bmNoUGF0aCxcbiAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbGwgdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoY2xpZW50PzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBjbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm9kdWN0Vmlld1N1bW1hcmllcyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0ID0gYXdhaXQgc2Muc2VhcmNoUHJvZHVjdHMoe1xuICAgICAgUGFnZVRva2VuOiB0b2tlbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwcm92aXNpb24gYW4gYXJ0aWZhY3QuXG4gKiBJbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhlIHByb2R1Y3QuXG4gKlxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6XG5Qcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcblxuICBjb25zdCBzYyA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIFByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgUHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogb3B0aW9ucy5sYXVuY2hQYXRoSWQsXG4gIH0pO1xuXG4gIHJldHVybiBwcm92aXNpb25pbmdQYXJhbWV0ZXJzO1xufVxuXG4vKipcbiAqIEhvbGRzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIGEgcHJvZHVjdCBhcnRpZmFjdCB0byBwcm92aXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdERhdGFBZ2dyZWdhdGUge1xuICAvKipcbiAgICogQ29yZSBwcm9kdWN0IGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgYWN0dWFsIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdDtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIGxhdW5jaCBwYXRoIGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgcGVybWlzc2lvbnMvYWJpbGl0eSBmb3IgZW5kIHVzZXIgdG8gcHJvdmlzaW9uIHRoZSBwcm9kdWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiBwcm92aXNpb25pbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAgICogSG9sZHMgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhlIGRvd25zdHJlYW0gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBwYXJhbXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ7XG59XG5cbi8qKlxuICogTWFrZXMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gc2VydmljZSBjYXRhbG9nIHRvIGdldCBhbGwgaW5mb3JtYXRpb25cbiAqIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIFByb2R1Y3RWZXJzaW9uRGF0YSBhZ2dyZWdhdGUgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZSA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdCh7XG4gICAgcHJvZHVjdElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgICBsYXVuY2hQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4gcHJvZHVjdERhdGFBZ2dyZWdhdGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcsIHByb2R1Y3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQpOiB2b2lkIHtcbiAgaWYgKHByb2R1Y3QuUHJvZHVjdFZpZXdTdW1tYXJ5ID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgcHJvZHVjdCBkZXRhaWxzIGZvciAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0cyA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9IGVsc2UgaWYgKHByb2R1Y3QuTGF1bmNoUGF0aHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBsYXVuY2ggcGF0aHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9XG59Il19
package/package.json CHANGED
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "main": "lib/index.js",
61
61
  "license": "Apache-2.0",
62
- "version": "0.2.153",
62
+ "version": "0.2.154",
63
63
  "jest": {
64
64
  "testMatch": [
65
65
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",