@aws-cdk/aws-glue-alpha 2.267.0-alpha.0 → 2.269.0-alpha.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.
Files changed (50) hide show
  1. package/.jsii +1691 -1261
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +1 -79
  4. package/README.md +106 -33
  5. package/adr/job-arguments.md +212 -0
  6. package/lib/catalog.d.ts +2 -2
  7. package/lib/catalog.js +4 -4
  8. package/lib/code.js +3 -3
  9. package/lib/connection.d.ts +44 -29
  10. package/lib/connection.js +66 -32
  11. package/lib/constants.d.ts +17 -0
  12. package/lib/constants.js +20 -2
  13. package/lib/data-format.js +5 -5
  14. package/lib/data-quality-ruleset.d.ts +20 -9
  15. package/lib/data-quality-ruleset.js +33 -6
  16. package/lib/database.d.ts +3 -1
  17. package/lib/database.js +8 -2
  18. package/lib/external-table.js +1 -1
  19. package/lib/jobs/job.d.ts +91 -10
  20. package/lib/jobs/job.js +115 -38
  21. package/lib/jobs/pyspark-etl-job.d.ts +2 -4
  22. package/lib/jobs/pyspark-etl-job.js +10 -15
  23. package/lib/jobs/pyspark-flex-etl-job.d.ts +2 -4
  24. package/lib/jobs/pyspark-flex-etl-job.js +10 -15
  25. package/lib/jobs/pyspark-streaming-job.d.ts +2 -4
  26. package/lib/jobs/pyspark-streaming-job.js +10 -15
  27. package/lib/jobs/python-shell-job.d.ts +20 -7
  28. package/lib/jobs/python-shell-job.js +30 -33
  29. package/lib/jobs/ray-job.js +8 -13
  30. package/lib/jobs/scala-spark-etl-job.d.ts +4 -5
  31. package/lib/jobs/scala-spark-etl-job.js +13 -16
  32. package/lib/jobs/scala-spark-flex-etl-job.d.ts +12 -23
  33. package/lib/jobs/scala-spark-flex-etl-job.js +20 -23
  34. package/lib/jobs/scala-spark-streaming-job.d.ts +4 -5
  35. package/lib/jobs/scala-spark-streaming-job.js +13 -16
  36. package/lib/jobs/spark-job.d.ts +9 -7
  37. package/lib/jobs/spark-job.js +23 -32
  38. package/lib/partition-projection.d.ts +36 -47
  39. package/lib/partition-projection.js +22 -40
  40. package/lib/s3-table.d.ts +7 -4
  41. package/lib/s3-table.js +12 -9
  42. package/lib/schema.js +2 -2
  43. package/lib/security-configuration.js +4 -4
  44. package/lib/storage-parameter.js +1 -1
  45. package/lib/table-base.js +1 -1
  46. package/lib/triggers/trigger-options.d.ts +103 -43
  47. package/lib/triggers/trigger-options.js +202 -3
  48. package/lib/triggers/workflow.d.ts +31 -47
  49. package/lib/triggers/workflow.js +27 -142
  50. package/package.json +7 -7
package/lib/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CrawlerState = exports.ConditionLogicalOperator = exports.PredicateLogical = exports.MaxCapacity = exports.JobType = exports.Runtime = exports.PythonVersion = exports.JobLanguage = exports.GlueVersion = exports.ExecutionClass = exports.MetricType = exports.JobState = exports.WorkerType = void 0;
3
+ exports.CrawlerState = exports.ConditionLogicalOperator = exports.PredicateLogical = exports.MaxCapacity = exports.JobType = exports.Runtime = exports.LibrarySet = exports.PythonVersion = exports.JobLanguage = exports.GlueVersion = exports.ExecutionClass = exports.MetricType = exports.JobState = exports.WorkerType = void 0;
4
4
  /**
5
5
  * The type of predefined worker that is allocated when a job runs.
6
6
  */
@@ -233,6 +233,24 @@ var PythonVersion;
233
233
  */
234
234
  PythonVersion["THREE_NINE"] = "3.9";
235
235
  })(PythonVersion || (exports.PythonVersion = PythonVersion = {}));
236
+ /**
237
+ * The set of pre-installed Python libraries available to a Python shell job running Python 3.9.
238
+ *
239
+ * @see https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html#python-shell-supported-library
240
+ */
241
+ var LibrarySet;
242
+ (function (LibrarySet) {
243
+ /**
244
+ * Include the common analytics libraries for Python 3.9 (e.g. pandas, numpy, scikit-learn,
245
+ * awswrangler).
246
+ */
247
+ LibrarySet["ANALYTICS"] = "analytics";
248
+ /**
249
+ * Do not install the common library set. Use this when your libraries are custom or conflict
250
+ * with the pre-installed ones.
251
+ */
252
+ LibrarySet["NONE"] = "none";
253
+ })(LibrarySet || (exports.LibrarySet = LibrarySet = {}));
236
254
  /**
237
255
  * AWS Glue runtime determines the runtime engine of the job.
238
256
  *
@@ -327,4 +345,4 @@ var CrawlerState;
327
345
  /** The crawler encountered an error during its operation. */
328
346
  CrawlerState["ERROR"] = "ERROR";
329
347
  })(CrawlerState || (exports.CrawlerState = CrawlerState = {}));
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxVQStGWDtBQS9GRCxXQUFZLFVBQVU7SUFDcEI7OztPQUdHO0lBQ0gsbUNBQXFCLENBQUE7SUFFckI7OztPQUdHO0lBQ0gsMkJBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILDJCQUFhLENBQUE7SUFFYjs7Ozs7T0FLRztJQUNILDJCQUFhLENBQUE7SUFFYjs7Ozs7T0FLRztJQUNILDJCQUFhLENBQUE7SUFFYjs7Ozs7O09BTUc7SUFDSCw2QkFBZSxDQUFBO0lBRWY7Ozs7OztPQU1HO0lBQ0gsNkJBQWUsQ0FBQTtJQUVmOzs7T0FHRztJQUNILCtCQUFpQixDQUFBO0lBRWpCOzs7Ozs7T0FNRztJQUNILDJCQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsMkJBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCwyQkFBYSxDQUFBO0lBRWI7Ozs7T0FJRztJQUNILDJCQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsMkJBQWEsQ0FBQTtBQUNmLENBQUMsRUEvRlcsVUFBVSwwQkFBVixVQUFVLFFBK0ZyQjtBQUVEOzs7O0dBSUc7QUFFSDs7OztHQUlHO0FBQ0gsSUFBWSxRQW1DWDtBQW5DRCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCxtQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILDZCQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsK0JBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxpQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILCtCQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsaUNBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCwrQkFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBbkNXLFFBQVEsd0JBQVIsUUFBUSxRQW1DbkI7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxVQVVY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c291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgdHlwZSBvZiBwcmVkZWZpbmVkIHdvcmtlciB0aGF0IGlzIGFsbG9jYXRlZCB3aGVuIGEgam9iIHJ1bnMuXG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtlclR5cGUge1xuICAvKipcbiAgICogU3RhbmRhcmQgV29ya2VyIFR5cGVcbiAgICogNCB2Q1BVLCAxNiBHQiBvZiBtZW1vcnkgYW5kIGEgNTBHQiBkaXNrLCBhbmQgMiBleGVjdXRvcnMgcGVyIHdvcmtlci5cbiAgICovXG4gIFNUQU5EQVJEID0gJ1N0YW5kYXJkJyxcblxuICAvKipcbiAgICogRy4xWCBXb3JrZXIgVHlwZVxuICAgKiAxIERQVSAoNCB2Q1BVLCAxNiBHQiBvZiBtZW1vcnksIDY0IEdCIGRpc2spLCBhbmQgcHJvdmlkZXMgMSBleGVjdXRvciBwZXIgd29ya2VyLiBTdWl0YWJsZSBmb3IgbWVtb3J5LWludGVuc2l2ZSBqb2JzLlxuICAgKi9cbiAgR18xWCA9ICdHLjFYJyxcblxuICAvKipcbiAgICogRy4yWCBXb3JrZXIgVHlwZVxuICAgKiAyIERQVSAoOCB2Q1BVLCAzMiBHQiBvZiBtZW1vcnksIDEyOCBHQiBkaXNrKSwgYW5kIHByb3ZpZGVzIDEgZXhlY3V0b3IgcGVyIHdvcmtlci4gU3VpdGFibGUgZm9yIG1lbW9yeS1pbnRlbnNpdmUgam9icy5cbiAgICovXG4gIEdfMlggPSAnRy4yWCcsXG5cbiAgLyoqXG4gICAqIEcuNFggV29ya2VyIFR5cGVcbiAgICogNCBEUFUgKDE2IHZDUFUsIDY0IEdCIG9mIG1lbW9yeSwgMjU2IEdCIGRpc2spLCBhbmQgcHJvdmlkZXMgMSBleGVjdXRvciBwZXIgd29ya2VyLlxuICAgKiBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXIgdHlwZSBmb3Igam9icyB3aG9zZSB3b3JrbG9hZHMgY29udGFpbiB5b3VyIG1vc3QgZGVtYW5kaW5nIHRyYW5zZm9ybXMsXG4gICAqIGFnZ3JlZ2F0aW9ucywgam9pbnMsIGFuZCBxdWVyaWVzLiBUaGlzIHdvcmtlciB0eXBlIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBBV1MgR2x1ZSB2ZXJzaW9uIDMuMCBvciBsYXRlciBqb2JzLlxuICAgKi9cbiAgR180WCA9ICdHLjRYJyxcblxuICAvKipcbiAgICogRy44WCBXb3JrZXIgVHlwZVxuICAgKiA4IERQVSAoMzIgdkNQVSwgMTI4IEdCIG9mIG1lbW9yeSwgNTEyIEdCIGRpc2spLCBhbmQgcHJvdmlkZXMgMSBleGVjdXRvciBwZXIgd29ya2VyLiBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXJcbiAgICogdHlwZSBmb3Igam9icyB3aG9zZSB3b3JrbG9hZHMgY29udGFpbiB5b3VyIG1vc3QgZGVtYW5kaW5nIHRyYW5zZm9ybXMsIGFnZ3JlZ2F0aW9ucywgam9pbnMsIGFuZCBxdWVyaWVzLlxuICAgKiBUaGlzIHdvcmtlciB0eXBlIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBBV1MgR2x1ZSB2ZXJzaW9uIDMuMCBvciBsYXRlciBqb2JzLlxuICAgKi9cbiAgR184WCA9ICdHLjhYJyxcblxuICAvKipcbiAgICogRy4xMlggV29ya2VyIFR5cGVcbiAgICogMTIgRFBVICg0OCB2Q1BVLCAxOTIgR0Igb2YgbWVtb3J5LCA3NjggR0IgZGlzayksIGFuZCBwcm92aWRlcyAxIGV4ZWN1dG9yIHBlciB3b3JrZXIuXG4gICAqIFdlIHJlY29tbWVuZCB0aGlzIHdvcmtlciB0eXBlIGZvciBqb2JzIHdpdGggdmVyeSBsYXJnZSBhbmQgcmVzb3VyY2UtaW50ZW5zaXZlIHdvcmtsb2Fkc1xuICAgKiB0aGF0IHJlcXVpcmUgc2lnbmlmaWNhbnQgY29tcHV0ZSBjYXBhY2l0eS4gVGhpcyB3b3JrZXIgdHlwZSBpcyBhdmFpbGFibGUgb25seSBmb3JcbiAgICogQVdTIEdsdWUgdmVyc2lvbiAzLjAgb3IgbGF0ZXIgam9icy5cbiAgICovXG4gIEdfMTJYID0gJ0cuMTJYJyxcblxuICAvKipcbiAgICogRy4xNlggV29ya2VyIFR5cGVcbiAgICogMTYgRFBVICg2NCB2Q1BVLCAyNTYgR0Igb2YgbWVtb3J5LCAxMDI0IEdCIGRpc2spLCBhbmQgcHJvdmlkZXMgMSBleGVjdXRvciBwZXIgd29ya2VyLlxuICAgKiBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXIgdHlwZSBmb3Igam9icyB3aXRoIHRoZSBsYXJnZXN0IGFuZCBtb3N0IHJlc291cmNlLWludGVuc2l2ZSB3b3JrbG9hZHNcbiAgICogdGhhdCByZXF1aXJlIG1heGltdW0gY29tcHV0ZSBjYXBhY2l0eS4gVGhpcyB3b3JrZXIgdHlwZSBpcyBhdmFpbGFibGUgb25seSBmb3JcbiAgICogQVdTIEdsdWUgdmVyc2lvbiAzLjAgb3IgbGF0ZXIgam9icy5cbiAgICovXG4gIEdfMTZYID0gJ0cuMTZYJyxcblxuICAvKipcbiAgICogRy4wMjVYIFdvcmtlciBUeXBlXG4gICAqIDAuMjUgRFBVICgyIHZDUFUsIDQgR0Igb2YgbWVtb3J5LCA2NCBHQiBkaXNrKSwgYW5kIHByb3ZpZGVzIDEgZXhlY3V0b3IgcGVyIHdvcmtlci4gU3VpdGFibGUgZm9yIGxvdyB2b2x1bWUgc3RyZWFtaW5nIGpvYnMuXG4gICAqL1xuICBHXzAyNVggPSAnRy4wMjVYJyxcblxuICAvKipcbiAgICogWi4yWCBXb3JrZXIgVHlwZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBBV1MgR2x1ZSBmb3IgUmF5IGlzIGNsb3NlZCB0byBuZXcgY3VzdG9tZXJzIGFzIG9mIEFwcmlsIDMwLCAyMDI2LlxuICAgKiBUaGlzIHdvcmtlciB0eXBlIHdhcyBvbmx5IHVzZWQgZm9yIFJheSBqb2JzLiBTZWVcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3c2dsdWUtcmF5LWpvYnMtYXZhaWxhYmlsaXR5LWNoYW5nZS5odG1sXG4gICAqL1xuICBaXzJYID0gJ1ouMlgnLFxuXG4gIC8qKlxuICAgKiBSLjFYIFdvcmtlciBUeXBlXG4gICAqIDEgTS1EUFUgKDQgdkNQVXMsIDMyIEdCIG1lbW9yeSksIFdlIHJlY29tbWVuZCB0aGlzIHdvcmtlciB0eXBlIGZvciBtZW1vcnktaW50ZW5zaXZlIHdvcmtsb2Fkc1xuICAgKiB0aGF0IGZyZXF1ZW50bHkgZW5jb3VudGVyIG91dC1vZi1tZW1vcnkgZXJyb3JzIG9yIHJlcXVpcmUgaGlnaCBtZW1vcnktdG8tQ1BVIHJhdGlvcy5cbiAgICovXG4gIFJfMVggPSAnUi4xWCcsXG5cbiAgLyoqXG4gICAqIFIuMlggV29ya2VyIFR5cGVcbiAgICogMiBNLURQVSAoOCB2Q1BVcywgNjQgR0IgbWVtb3J5KSwgV2UgcmVjb21tZW5kIHRoaXMgd29ya2VyIHR5cGUgZm9yIG1lbW9yeS1pbnRlbnNpdmUgd29ya2xvYWRzXG4gICAqIHRoYXQgZnJlcXVlbnRseSBlbmNvdW50ZXIgb3V0LW9mLW1lbW9yeSBlcnJvcnMgb3IgcmVxdWlyZSBoaWdoIG1lbW9yeS10by1DUFUgcmF0aW9zLlxuICAgKi9cbiAgUl8yWCA9ICdSLjJYJyxcblxuICAvKipcbiAgICogUi40WCBXb3JrZXIgVHlwZVxuICAgKiA0IE0tRFBVICgxNiB2Q1BVcywgMTI4IEdCIG1lbW9yeSksIFdlIHJlY29tbWVuZCB0aGlzIHdvcmtlciB0eXBlIGZvciBsYXJnZSBtZW1vcnktaW50ZW5zaXZlIHdvcmtsb2Fkc1xuICAgKiB0aGF0IGZyZXF1ZW50bHkgZW5jb3VudGVyIG91dC1vZi1tZW1vcnkgZXJyb3JzIG9yIHJlcXVpcmUgaGlnaCBtZW1vcnktdG8tQ1BVIHJhdGlvcy5cbiAgICovXG4gIFJfNFggPSAnUi40WCcsXG5cbiAgLyoqXG4gICAqIFIuOFggV29ya2VyIFR5cGVcbiAgICogOCBNLURQVSAoMzIgdkNQVXMsIDI1NiBHQiBtZW1vcnkpLCBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXIgdHlwZSBmb3IgdmVyeSBsYXJnZSBtZW1vcnktaW50ZW5zaXZlIHdvcmtsb2Fkc1xuICAgKiB0aGF0IGZyZXF1ZW50bHkgZW5jb3VudGVyIG91dC1vZi1tZW1vcnkgZXJyb3JzIG9yIHJlcXVpcmUgaGlnaCBtZW1vcnktdG8tQ1BVIHJhdGlvcy5cbiAgICovXG4gIFJfOFggPSAnUi44WCcsXG59XG5cbi8qKlxuICogVGhlIG51bWJlciBvZiB3b3JrZXJzIG9mIGEgZGVmaW5lZCB3b3JrZXJUeXBlIHRoYXQgYXJlIGFsbG9jYXRlZCB3aGVuIGEgam9iIHJ1bnMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtYXBpLWpvYnMtam9iLmh0bWxcbiAqL1xuXG4vKipcbiAqIEpvYiBzdGF0ZXMgZW1pdHRlZCBieSBHbHVlIHRvIENsb3VkV2F0Y2ggRXZlbnRzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2V2ZW50cy9FdmVudFR5cGVzLmh0bWwjZ2x1ZS1ldmVudC10eXBlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gSm9iU3RhdGUge1xuICAvKipcbiAgICogU3RhdGUgaW5kaWNhdGluZyBqb2IgcnVuIHN1Y2NlZWRlZFxuICAgKi9cbiAgU1VDQ0VFREVEID0gJ1NVQ0NFRURFRCcsXG5cbiAgLyoqXG4gICAqIFN0YXRlIGluZGljYXRpbmcgam9iIHJ1biBmYWlsZWRcbiAgICovXG4gIEZBSUxFRCA9ICdGQUlMRUQnLFxuXG4gIC8qKlxuICAgKiBTdGF0ZSBpbmRpY2F0aW5nIGpvYiBydW4gdGltZWQgb3V0XG4gICAqL1xuICBUSU1FT1VUID0gJ1RJTUVPVVQnLFxuXG4gIC8qKlxuICAgKiBTdGF0ZSBpbmRpY2F0aW5nIGpvYiBpcyBzdGFydGluZ1xuICAgKi9cbiAgU1RBUlRJTkcgPSAnU1RBUlRJTkcnLFxuXG4gIC8qKlxuICAgKiBTdGF0ZSBpbmRpY2F0aW5nIGpvYiBpcyBydW5uaW5nXG4gICAqL1xuICBSVU5OSU5HID0gJ1JVTk5JTkcnLFxuXG4gIC8qKlxuICAgKiBTdGF0ZSBpbmRpY2F0aW5nIGpvYiBpcyBzdG9wcGluZ1xuICAgKi9cbiAgU1RPUFBJTkcgPSAnU1RPUFBJTkcnLFxuXG4gIC8qKlxuICAgKiBTdGF0ZSBpbmRpY2F0aW5nIGpvYiBzdG9wcGVkXG4gICAqL1xuICBTVE9QUEVEID0gJ1NUT1BQRUQnLFxufVxuXG4vKipcbiAqIFRoZSBHbHVlIENsb3VkV2F0Y2ggbWV0cmljIHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvbW9uaXRvcmluZy1hd3NnbHVlLXdpdGgtY2xvdWR3YXRjaC1tZXRyaWNzLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gTWV0cmljVHlwZSB7XG4gIC8qKlxuICAgKiBBIHZhbHVlIGF0IGEgcG9pbnQgaW4gdGltZS5cbiAgICovXG4gIEdBVUdFID0gJ2dhdWdlJyxcblxuICAvKipcbiAgICogQW4gYWdncmVnYXRlIG51bWJlci5cbiAgICovXG4gIENPVU5UID0gJ2NvdW50Jyxcbn1cblxuLyoqXG4gKiBUaGUgRXhlY3V0aW9uQ2xhc3Mgd2hldGhlciB0aGUgam9iIGlzIHJ1biB3aXRoIGEgc3RhbmRhcmQgb3IgZmxleGlibGUgZXhlY3V0aW9uIGNsYXNzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLWFwaS1qb2JzLWpvYi5odG1sI2F3cy1nbHVlLWFwaS1qb2JzLWpvYi1Kb2JcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2FkZC1qb2IuaHRtbFxuICovXG5leHBvcnQgZW51bSBFeGVjdXRpb25DbGFzcyB7XG4gIC8qKlxuICAgKiBUaGUgZmxleGlibGUgZXhlY3V0aW9uIGNsYXNzIGlzIGFwcHJvcHJpYXRlIGZvciB0aW1lLWluc2Vuc2l0aXZlIGpvYnMgd2hvc2Ugc3RhcnRcbiAgICogYW5kIGNvbXBsZXRpb24gdGltZXMgbWF5IHZhcnkuXG4gICAqL1xuICBGTEVYID0gJ0ZMRVgnLFxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgZXhlY3V0aW9uIGNsYXNzIGlzIGlkZWFsIGZvciB0aW1lLXNlbnNpdGl2ZSB3b3JrbG9hZHMgdGhhdCByZXF1aXJlIGZhc3Qgam9iXG4gICAqIHN0YXJ0dXAgYW5kIGRlZGljYXRlZCByZXNvdXJjZXMuXG4gICAqL1xuICBTVEFOREFSRCA9ICdTVEFOREFSRCcsXG59XG5cbi8qKlxuICogQVdTIEdsdWUgdmVyc2lvbiBkZXRlcm1pbmVzIHRoZSB2ZXJzaW9ucyBvZiBBcGFjaGUgU3BhcmsgYW5kIFB5dGhvbiB0aGF0IGFyZSBhdmFpbGFibGUgdG8gdGhlIGpvYi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hZGQtam9iLmh0bWwuXG4gKi9cbmV4cG9ydCBlbnVtIEdsdWVWZXJzaW9uIHtcbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbiB1c2luZyBTcGFyayAyLjIuMSBhbmQgUHl0aG9uIDIuN1xuICAgKi9cbiAgVjBfOSA9ICcwLjknLFxuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMi40LjMsIFB5dGhvbiAyLjcgYW5kIFB5dGhvbiAzLjZcbiAgICovXG4gIFYxXzAgPSAnMS4wJyxcblxuICAvKipcbiAgICogR2x1ZSB2ZXJzaW9uIHVzaW5nIFNwYXJrIDIuNC4zIGFuZCBQeXRob24gMy43XG4gICAqL1xuICBWMl8wID0gJzIuMCcsXG5cbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbiB1c2luZyBTcGFyayAzLjEuMSBhbmQgUHl0aG9uIDMuN1xuICAgKi9cbiAgVjNfMCA9ICczLjAnLFxuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMy4zLjAgYW5kIFB5dGhvbiAzLjEwXG4gICAqL1xuICBWNF8wID0gJzQuMCcsXG5cbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbiB1c2luZyBTcGFyayAzLjUuNCwgUHl0aG9uIDMuMTEsIGFuZCBTY2FsYSAyLjEyLjE4XG4gICAqL1xuICBWNV8wID0gJzUuMCcsXG5cbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbiB1c2luZyBTcGFyayAzLjUuNiwgUHl0aG9uIDMuMTEsIGFuZCBTY2FsYSAyLjEyLjE4XG4gICAqL1xuICBWNV8xID0gJzUuMScsXG59XG5cbi8qKlxuICogUnVudGltZSBsYW5ndWFnZSBvZiB0aGUgR2x1ZSBqb2JcbiAqL1xuZXhwb3J0IGVudW0gSm9iTGFuZ3VhZ2Uge1xuICAvKipcbiAgICogU2NhbGFcbiAgICovXG4gIFNDQUxBID0gJ3NjYWxhJyxcblxuICAvKipcbiAgICogUHl0aG9uXG4gICAqL1xuICBQWVRIT04gPSAncHl0aG9uJyxcbn1cblxuLyoqXG4gKiBQeXRob24gdmVyc2lvblxuICovXG5leHBvcnQgZW51bSBQeXRob25WZXJzaW9uIHtcbiAgLyoqXG4gICAqIFB5dGhvbiAyICh0aGUgZXhhY3QgdmVyc2lvbiBkZXBlbmRzIG9uIEdsdWVWZXJzaW9uIGFuZCBKb2JDb21tYW5kIHVzZWQpXG4gICAqL1xuICBUV08gPSAnMicsXG5cbiAgLyoqXG4gICAqIFB5dGhvbiAzICh0aGUgZXhhY3QgdmVyc2lvbiBkZXBlbmRzIG9uIEdsdWVWZXJzaW9uIGFuZCBKb2JDb21tYW5kIHVzZWQpXG4gICAqL1xuICBUSFJFRSA9ICczJyxcblxuICAvKipcbiAgICogUHl0aG9uIDMuOSAodGhlIGV4YWN0IHZlcnNpb24gZGVwZW5kcyBvbiBHbHVlVmVyc2lvbiBhbmQgSm9iQ29tbWFuZCB1c2VkKVxuICAgKi9cbiAgVEhSRUVfTklORSA9ICczLjknLFxuXG59XG5cbi8qKlxuICogQVdTIEdsdWUgcnVudGltZSBkZXRlcm1pbmVzIHRoZSBydW50aW1lIGVuZ2luZSBvZiB0aGUgam9iLlxuICpcbiAqIEBkZXByZWNhdGVkIEFXUyBHbHVlIGZvciBSYXkgaXMgY2xvc2VkIHRvIG5ldyBjdXN0b21lcnMgYXMgb2YgQXByaWwgMzAsIDIwMjYuXG4gKiBNaWdyYXRlIHRvIEFtYXpvbiBFS1Mgd2l0aCBLdWJlUmF5IE9wZXJhdG9yLiBTZWVcbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3NnbHVlLXJheS1qb2JzLWF2YWlsYWJpbGl0eS1jaGFuZ2UuaHRtbFxuICovXG5leHBvcnQgZW51bSBSdW50aW1lIHtcbiAgLyoqXG4gICAqIFJ1bnRpbWUgZm9yIGEgR2x1ZSBmb3IgUmF5IDIuNC5cbiAgICovXG4gIFJBWV9UV09fRk9VUiA9ICdSYXkyLjQnLFxufVxuXG4vKipcbiAqIFRoZSBqb2IgdHlwZS5cbiAqL1xuZXhwb3J0IGVudW0gSm9iVHlwZSB7XG4gIC8qKlxuICAgKiBDb21tYW5kIGZvciBydW5uaW5nIGEgR2x1ZSBTcGFyayBqb2IuXG4gICAqL1xuICBFVEwgPSAnZ2x1ZWV0bCcsXG5cbiAgLyoqXG4gICAqIENvbW1hbmQgZm9yIHJ1bm5pbmcgYSBHbHVlIFNwYXJrIHN0cmVhbWluZyBqb2IuXG4gICAqL1xuICBTVFJFQU1JTkcgPSAnZ2x1ZXN0cmVhbWluZycsXG5cbiAgLyoqXG4gICAqIENvbW1hbmQgZm9yIHJ1bm5pbmcgYSBHbHVlIHB5dGhvbiBzaGVsbCBqb2IuXG4gICAqL1xuICBQWVRIT05fU0hFTEwgPSAncHl0aG9uc2hlbGwnLFxuXG4gIC8qKlxuICAgKiBDb21tYW5kIGZvciBydW5uaW5nIGEgR2x1ZSBSYXkgam9iLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBBV1MgR2x1ZSBmb3IgUmF5IGlzIGNsb3NlZCB0byBuZXcgY3VzdG9tZXJzIGFzIG9mIEFwcmlsIDMwLCAyMDI2LlxuICAgKiBNaWdyYXRlIHRvIEFtYXpvbiBFS1Mgd2l0aCBLdWJlUmF5IE9wZXJhdG9yLiBTZWVcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3c2dsdWUtcmF5LWpvYnMtYXZhaWxhYmlsaXR5LWNoYW5nZS5odG1sXG4gICAqL1xuICBSQVkgPSAnZ2x1ZXJheScsXG5cbn1cblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIEFXUyBHbHVlIGRhdGEgcHJvY2Vzc2luZyB1bml0cyAoRFBVcykgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIHdoZW4gdGhpcyBqb2IgcnVucy4gQSBEUFUgaXMgYSByZWxhdGl2ZSBtZWFzdXJlIG9mIHByb2Nlc3NpbmcgcG93ZXIgdGhhdCBjb25zaXN0cyBvZiA0IHZDUFVzIG9mIGNvbXB1dGUgY2FwYWNpdHkgYW5kIDE2IEdCIG9mIG1lbW9yeS5cbiAqL1xuZXhwb3J0IGVudW0gTWF4Q2FwYWNpdHkge1xuICAvKipcbiAgICogRFBVIHZhbHVlIG9mIDEvMTZ0aFxuICAgKi9cbiAgRFBVXzFfMTZUSCA9IDAuMDYyNSxcblxuICAvKipcbiAgICogRFBVIHZhbHVlIG9mIDFcbiAgICovXG4gIERQVV8xID0gMSxcbn1cblxuLypcbiAqIFJlcHJlc2VudHMgdGhlIGxvZ2ljYWwgb3BlcmF0b3IgZm9yIGNvbWJpbmluZyBtdWx0aXBsZSBjb25kaXRpb25zIGluIHRoZSBHbHVlIFRyaWdnZXIgQVBJLlxuICovXG5leHBvcnQgZW51bSBQcmVkaWNhdGVMb2dpY2FsIHtcbiAgLyoqXG4gICAqIEFsbCBjb25kaXRpb25zIG11c3QgYmUgdHJ1ZSBmb3IgdGhlIHByZWRpY2F0ZSB0byBiZSB0cnVlLlxuICAgKi9cbiAgQU5EID0gJ0FORCcsXG5cbiAgLyoqXG4gICAqIEF0IGxlYXN0IG9uZSBjb25kaXRpb24gbXVzdCBiZSB0cnVlIGZvciB0aGUgcHJlZGljYXRlIHRvIGJlIHRydWUuXG4gICAqL1xuICBBTlkgPSAnQU5ZJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2dpY2FsIG9wZXJhdG9yIGZvciBldmFsdWF0aW5nIGEgc2luZ2xlIGNvbmRpdGlvbiBpbiB0aGUgR2x1ZSBUcmlnZ2VyIEFQSS5cbiAqL1xuZXhwb3J0IGVudW0gQ29uZGl0aW9uTG9naWNhbE9wZXJhdG9yIHtcbiAgLyoqIFRoZSBjb25kaXRpb24gaXMgdHJ1ZSBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbC4gKi9cbiAgRVFVQUxTID0gJ0VRVUFMUycsXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgYSBjcmF3bGVyIGZvciBhIGNvbmRpdGlvbiBpbiB0aGUgR2x1ZSBUcmlnZ2VyIEFQSS5cbiAqL1xuZXhwb3J0IGVudW0gQ3Jhd2xlclN0YXRlIHtcbiAgLyoqIFRoZSBjcmF3bGVyIGlzIGN1cnJlbnRseSBydW5uaW5nLiAqL1xuICBSVU5OSU5HID0gJ1JVTk5JTkcnLFxuXG4gIC8qKiBUaGUgY3Jhd2xlciBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBjYW5jZWxsZWQuICovXG4gIENBTkNFTExJTkcgPSAnQ0FOQ0VMTElORycsXG5cbiAgLyoqIFRoZSBjcmF3bGVyIGhhcyBiZWVuIGNhbmNlbGxlZC4gKi9cbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG5cbiAgLyoqIFRoZSBjcmF3bGVyIGhhcyBjb21wbGV0ZWQgaXRzIG9wZXJhdGlvbiBzdWNjZXNzZnVsbHkuICovXG4gIFNVQ0NFRURFRCA9ICdTVUNDRUVERUQnLFxuXG4gIC8qKiBUaGUgY3Jhd2xlciBoYXMgZmFpbGVkIHRvIGNvbXBsZXRlIGl0cyBvcGVyYXRpb24uICovXG4gIEZBSUxFRCA9ICdGQUlMRUQnLFxuXG4gIC8qKiBUaGUgY3Jhd2xlciBlbmNvdW50ZXJlZCBhbiBlcnJvciBkdXJpbmcgaXRzIG9wZXJhdGlvbi4gKi9cbiAgRVJST1IgPSAnRVJST1InLFxufVxuIl19
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxVQStGWDtBQS9GRCxXQUFZLFVBQVU7SUFDcEI7OztPQUdHO0lBQ0gsbUNBQXFCLENBQUE7SUFFckI7OztPQUdHO0lBQ0gsMkJBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILDJCQUFhLENBQUE7SUFFYjs7Ozs7T0FLRztJQUNILDJCQUFhLENBQUE7SUFFYjs7Ozs7T0FLRztJQUNILDJCQUFhLENBQUE7SUFFYjs7Ozs7O09BTUc7SUFDSCw2QkFBZSxDQUFBO0lBRWY7Ozs7OztPQU1HO0lBQ0gsNkJBQWUsQ0FBQTtJQUVmOzs7T0FHRztJQUNILCtCQUFpQixDQUFBO0lBRWpCOzs7Ozs7T0FNRztJQUNILDJCQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsMkJBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCwyQkFBYSxDQUFBO0lBRWI7Ozs7T0FJRztJQUNILDJCQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gsMkJBQWEsQ0FBQTtBQUNmLENBQUMsRUEvRlcsVUFBVSwwQkFBVixVQUFVLFFBK0ZyQjtBQUVEOzs7O0dBSUc7QUFFSDs7OztHQUlHO0FBQ0gsSUFBWSxRQW1DWDtBQW5DRCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCxtQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILDZCQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsK0JBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxpQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILCtCQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsaUNBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCwrQkFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBbkNXLFFBQVEsd0JBQVIsUUFBUSxRQW1DbkI7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxVQVVY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Q0FBQTtJQUV2Qiw0REFBNEQ7SUFDNUQsdUNBQXVCLENBQUE7SUFFdkIsd0RBQXdEO0lBQ3hELGlDQUFpQixDQUFBO0lBRWpCLDZEQUE2RDtJQUM3RCwrQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFsQlcsWUFBWSw0QkFBWixZQUFZLFFBa0J2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIHR5cGUgb2YgcHJlZGVmaW5lZCB3b3JrZXIgdGhhdCBpcyBhbGxvY2F0ZWQgd2hlbiBhIGpvYiBydW5zLlxuICovXG5leHBvcnQgZW51bSBXb3JrZXJUeXBlIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIFdvcmtlciBUeXBlXG4gICAqIDQgdkNQVSwgMTYgR0Igb2YgbWVtb3J5IGFuZCBhIDUwR0IgZGlzaywgYW5kIDIgZXhlY3V0b3JzIHBlciB3b3JrZXIuXG4gICAqL1xuICBTVEFOREFSRCA9ICdTdGFuZGFyZCcsXG5cbiAgLyoqXG4gICAqIEcuMVggV29ya2VyIFR5cGVcbiAgICogMSBEUFUgKDQgdkNQVSwgMTYgR0Igb2YgbWVtb3J5LCA2NCBHQiBkaXNrKSwgYW5kIHByb3ZpZGVzIDEgZXhlY3V0b3IgcGVyIHdvcmtlci4gU3VpdGFibGUgZm9yIG1lbW9yeS1pbnRlbnNpdmUgam9icy5cbiAgICovXG4gIEdfMVggPSAnRy4xWCcsXG5cbiAgLyoqXG4gICAqIEcuMlggV29ya2VyIFR5cGVcbiAgICogMiBEUFUgKDggdkNQVSwgMzIgR0Igb2YgbWVtb3J5LCAxMjggR0IgZGlzayksIGFuZCBwcm92aWRlcyAxIGV4ZWN1dG9yIHBlciB3b3JrZXIuIFN1aXRhYmxlIGZvciBtZW1vcnktaW50ZW5zaXZlIGpvYnMuXG4gICAqL1xuICBHXzJYID0gJ0cuMlgnLFxuXG4gIC8qKlxuICAgKiBHLjRYIFdvcmtlciBUeXBlXG4gICAqIDQgRFBVICgxNiB2Q1BVLCA2NCBHQiBvZiBtZW1vcnksIDI1NiBHQiBkaXNrKSwgYW5kIHByb3ZpZGVzIDEgZXhlY3V0b3IgcGVyIHdvcmtlci5cbiAgICogV2UgcmVjb21tZW5kIHRoaXMgd29ya2VyIHR5cGUgZm9yIGpvYnMgd2hvc2Ugd29ya2xvYWRzIGNvbnRhaW4geW91ciBtb3N0IGRlbWFuZGluZyB0cmFuc2Zvcm1zLFxuICAgKiBhZ2dyZWdhdGlvbnMsIGpvaW5zLCBhbmQgcXVlcmllcy4gVGhpcyB3b3JrZXIgdHlwZSBpcyBhdmFpbGFibGUgb25seSBmb3IgQVdTIEdsdWUgdmVyc2lvbiAzLjAgb3IgbGF0ZXIgam9icy5cbiAgICovXG4gIEdfNFggPSAnRy40WCcsXG5cbiAgLyoqXG4gICAqIEcuOFggV29ya2VyIFR5cGVcbiAgICogOCBEUFUgKDMyIHZDUFUsIDEyOCBHQiBvZiBtZW1vcnksIDUxMiBHQiBkaXNrKSwgYW5kIHByb3ZpZGVzIDEgZXhlY3V0b3IgcGVyIHdvcmtlci4gV2UgcmVjb21tZW5kIHRoaXMgd29ya2VyXG4gICAqIHR5cGUgZm9yIGpvYnMgd2hvc2Ugd29ya2xvYWRzIGNvbnRhaW4geW91ciBtb3N0IGRlbWFuZGluZyB0cmFuc2Zvcm1zLCBhZ2dyZWdhdGlvbnMsIGpvaW5zLCBhbmQgcXVlcmllcy5cbiAgICogVGhpcyB3b3JrZXIgdHlwZSBpcyBhdmFpbGFibGUgb25seSBmb3IgQVdTIEdsdWUgdmVyc2lvbiAzLjAgb3IgbGF0ZXIgam9icy5cbiAgICovXG4gIEdfOFggPSAnRy44WCcsXG5cbiAgLyoqXG4gICAqIEcuMTJYIFdvcmtlciBUeXBlXG4gICAqIDEyIERQVSAoNDggdkNQVSwgMTkyIEdCIG9mIG1lbW9yeSwgNzY4IEdCIGRpc2spLCBhbmQgcHJvdmlkZXMgMSBleGVjdXRvciBwZXIgd29ya2VyLlxuICAgKiBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXIgdHlwZSBmb3Igam9icyB3aXRoIHZlcnkgbGFyZ2UgYW5kIHJlc291cmNlLWludGVuc2l2ZSB3b3JrbG9hZHNcbiAgICogdGhhdCByZXF1aXJlIHNpZ25pZmljYW50IGNvbXB1dGUgY2FwYWNpdHkuIFRoaXMgd29ya2VyIHR5cGUgaXMgYXZhaWxhYmxlIG9ubHkgZm9yXG4gICAqIEFXUyBHbHVlIHZlcnNpb24gMy4wIG9yIGxhdGVyIGpvYnMuXG4gICAqL1xuICBHXzEyWCA9ICdHLjEyWCcsXG5cbiAgLyoqXG4gICAqIEcuMTZYIFdvcmtlciBUeXBlXG4gICAqIDE2IERQVSAoNjQgdkNQVSwgMjU2IEdCIG9mIG1lbW9yeSwgMTAyNCBHQiBkaXNrKSwgYW5kIHByb3ZpZGVzIDEgZXhlY3V0b3IgcGVyIHdvcmtlci5cbiAgICogV2UgcmVjb21tZW5kIHRoaXMgd29ya2VyIHR5cGUgZm9yIGpvYnMgd2l0aCB0aGUgbGFyZ2VzdCBhbmQgbW9zdCByZXNvdXJjZS1pbnRlbnNpdmUgd29ya2xvYWRzXG4gICAqIHRoYXQgcmVxdWlyZSBtYXhpbXVtIGNvbXB1dGUgY2FwYWNpdHkuIFRoaXMgd29ya2VyIHR5cGUgaXMgYXZhaWxhYmxlIG9ubHkgZm9yXG4gICAqIEFXUyBHbHVlIHZlcnNpb24gMy4wIG9yIGxhdGVyIGpvYnMuXG4gICAqL1xuICBHXzE2WCA9ICdHLjE2WCcsXG5cbiAgLyoqXG4gICAqIEcuMDI1WCBXb3JrZXIgVHlwZVxuICAgKiAwLjI1IERQVSAoMiB2Q1BVLCA0IEdCIG9mIG1lbW9yeSwgNjQgR0IgZGlzayksIGFuZCBwcm92aWRlcyAxIGV4ZWN1dG9yIHBlciB3b3JrZXIuIFN1aXRhYmxlIGZvciBsb3cgdm9sdW1lIHN0cmVhbWluZyBqb2JzLlxuICAgKi9cbiAgR18wMjVYID0gJ0cuMDI1WCcsXG5cbiAgLyoqXG4gICAqIFouMlggV29ya2VyIFR5cGVcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgQVdTIEdsdWUgZm9yIFJheSBpcyBjbG9zZWQgdG8gbmV3IGN1c3RvbWVycyBhcyBvZiBBcHJpbCAzMCwgMjAyNi5cbiAgICogVGhpcyB3b3JrZXIgdHlwZSB3YXMgb25seSB1c2VkIGZvciBSYXkgam9icy4gU2VlXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3NnbHVlLXJheS1qb2JzLWF2YWlsYWJpbGl0eS1jaGFuZ2UuaHRtbFxuICAgKi9cbiAgWl8yWCA9ICdaLjJYJyxcblxuICAvKipcbiAgICogUi4xWCBXb3JrZXIgVHlwZVxuICAgKiAxIE0tRFBVICg0IHZDUFVzLCAzMiBHQiBtZW1vcnkpLCBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXIgdHlwZSBmb3IgbWVtb3J5LWludGVuc2l2ZSB3b3JrbG9hZHNcbiAgICogdGhhdCBmcmVxdWVudGx5IGVuY291bnRlciBvdXQtb2YtbWVtb3J5IGVycm9ycyBvciByZXF1aXJlIGhpZ2ggbWVtb3J5LXRvLUNQVSByYXRpb3MuXG4gICAqL1xuICBSXzFYID0gJ1IuMVgnLFxuXG4gIC8qKlxuICAgKiBSLjJYIFdvcmtlciBUeXBlXG4gICAqIDIgTS1EUFUgKDggdkNQVXMsIDY0IEdCIG1lbW9yeSksIFdlIHJlY29tbWVuZCB0aGlzIHdvcmtlciB0eXBlIGZvciBtZW1vcnktaW50ZW5zaXZlIHdvcmtsb2Fkc1xuICAgKiB0aGF0IGZyZXF1ZW50bHkgZW5jb3VudGVyIG91dC1vZi1tZW1vcnkgZXJyb3JzIG9yIHJlcXVpcmUgaGlnaCBtZW1vcnktdG8tQ1BVIHJhdGlvcy5cbiAgICovXG4gIFJfMlggPSAnUi4yWCcsXG5cbiAgLyoqXG4gICAqIFIuNFggV29ya2VyIFR5cGVcbiAgICogNCBNLURQVSAoMTYgdkNQVXMsIDEyOCBHQiBtZW1vcnkpLCBXZSByZWNvbW1lbmQgdGhpcyB3b3JrZXIgdHlwZSBmb3IgbGFyZ2UgbWVtb3J5LWludGVuc2l2ZSB3b3JrbG9hZHNcbiAgICogdGhhdCBmcmVxdWVudGx5IGVuY291bnRlciBvdXQtb2YtbWVtb3J5IGVycm9ycyBvciByZXF1aXJlIGhpZ2ggbWVtb3J5LXRvLUNQVSByYXRpb3MuXG4gICAqL1xuICBSXzRYID0gJ1IuNFgnLFxuXG4gIC8qKlxuICAgKiBSLjhYIFdvcmtlciBUeXBlXG4gICAqIDggTS1EUFUgKDMyIHZDUFVzLCAyNTYgR0IgbWVtb3J5KSwgV2UgcmVjb21tZW5kIHRoaXMgd29ya2VyIHR5cGUgZm9yIHZlcnkgbGFyZ2UgbWVtb3J5LWludGVuc2l2ZSB3b3JrbG9hZHNcbiAgICogdGhhdCBmcmVxdWVudGx5IGVuY291bnRlciBvdXQtb2YtbWVtb3J5IGVycm9ycyBvciByZXF1aXJlIGhpZ2ggbWVtb3J5LXRvLUNQVSByYXRpb3MuXG4gICAqL1xuICBSXzhYID0gJ1IuOFgnLFxufVxuXG4vKipcbiAqIFRoZSBudW1iZXIgb2Ygd29ya2VycyBvZiBhIGRlZmluZWQgd29ya2VyVHlwZSB0aGF0IGFyZSBhbGxvY2F0ZWQgd2hlbiBhIGpvYiBydW5zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLWFwaS1qb2JzLWpvYi5odG1sXG4gKi9cblxuLyoqXG4gKiBKb2Igc3RhdGVzIGVtaXR0ZWQgYnkgR2x1ZSB0byBDbG91ZFdhdGNoIEV2ZW50cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9ldmVudHMvRXZlbnRUeXBlcy5odG1sI2dsdWUtZXZlbnQtdHlwZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIEpvYlN0YXRlIHtcbiAgLyoqXG4gICAqIFN0YXRlIGluZGljYXRpbmcgam9iIHJ1biBzdWNjZWVkZWRcbiAgICovXG4gIFNVQ0NFRURFRCA9ICdTVUNDRUVERUQnLFxuXG4gIC8qKlxuICAgKiBTdGF0ZSBpbmRpY2F0aW5nIGpvYiBydW4gZmFpbGVkXG4gICAqL1xuICBGQUlMRUQgPSAnRkFJTEVEJyxcblxuICAvKipcbiAgICogU3RhdGUgaW5kaWNhdGluZyBqb2IgcnVuIHRpbWVkIG91dFxuICAgKi9cbiAgVElNRU9VVCA9ICdUSU1FT1VUJyxcblxuICAvKipcbiAgICogU3RhdGUgaW5kaWNhdGluZyBqb2IgaXMgc3RhcnRpbmdcbiAgICovXG4gIFNUQVJUSU5HID0gJ1NUQVJUSU5HJyxcblxuICAvKipcbiAgICogU3RhdGUgaW5kaWNhdGluZyBqb2IgaXMgcnVubmluZ1xuICAgKi9cbiAgUlVOTklORyA9ICdSVU5OSU5HJyxcblxuICAvKipcbiAgICogU3RhdGUgaW5kaWNhdGluZyBqb2IgaXMgc3RvcHBpbmdcbiAgICovXG4gIFNUT1BQSU5HID0gJ1NUT1BQSU5HJyxcblxuICAvKipcbiAgICogU3RhdGUgaW5kaWNhdGluZyBqb2Igc3RvcHBlZFxuICAgKi9cbiAgU1RPUFBFRCA9ICdTVE9QUEVEJyxcbn1cblxuLyoqXG4gKiBUaGUgR2x1ZSBDbG91ZFdhdGNoIG1ldHJpYyB0eXBlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL21vbml0b3JpbmctYXdzZ2x1ZS13aXRoLWNsb3Vkd2F0Y2gtbWV0cmljcy5odG1sXG4gKi9cbmV4cG9ydCBlbnVtIE1ldHJpY1R5cGUge1xuICAvKipcbiAgICogQSB2YWx1ZSBhdCBhIHBvaW50IGluIHRpbWUuXG4gICAqL1xuICBHQVVHRSA9ICdnYXVnZScsXG5cbiAgLyoqXG4gICAqIEFuIGFnZ3JlZ2F0ZSBudW1iZXIuXG4gICAqL1xuICBDT1VOVCA9ICdjb3VudCcsXG59XG5cbi8qKlxuICogVGhlIEV4ZWN1dGlvbkNsYXNzIHdoZXRoZXIgdGhlIGpvYiBpcyBydW4gd2l0aCBhIHN0YW5kYXJkIG9yIGZsZXhpYmxlIGV4ZWN1dGlvbiBjbGFzcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1hcGktam9icy1qb2IuaHRtbCNhd3MtZ2x1ZS1hcGktam9icy1qb2ItSm9iXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hZGQtam9iLmh0bWxcbiAqL1xuZXhwb3J0IGVudW0gRXhlY3V0aW9uQ2xhc3Mge1xuICAvKipcbiAgICogVGhlIGZsZXhpYmxlIGV4ZWN1dGlvbiBjbGFzcyBpcyBhcHByb3ByaWF0ZSBmb3IgdGltZS1pbnNlbnNpdGl2ZSBqb2JzIHdob3NlIHN0YXJ0XG4gICAqIGFuZCBjb21wbGV0aW9uIHRpbWVzIG1heSB2YXJ5LlxuICAgKi9cbiAgRkxFWCA9ICdGTEVYJyxcblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIGV4ZWN1dGlvbiBjbGFzcyBpcyBpZGVhbCBmb3IgdGltZS1zZW5zaXRpdmUgd29ya2xvYWRzIHRoYXQgcmVxdWlyZSBmYXN0IGpvYlxuICAgKiBzdGFydHVwIGFuZCBkZWRpY2F0ZWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgU1RBTkRBUkQgPSAnU1RBTkRBUkQnLFxufVxuXG4vKipcbiAqIEFXUyBHbHVlIHZlcnNpb24gZGV0ZXJtaW5lcyB0aGUgdmVyc2lvbnMgb2YgQXBhY2hlIFNwYXJrIGFuZCBQeXRob24gdGhhdCBhcmUgYXZhaWxhYmxlIHRvIHRoZSBqb2IuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYWRkLWpvYi5odG1sLlxuICovXG5leHBvcnQgZW51bSBHbHVlVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMi4yLjEgYW5kIFB5dGhvbiAyLjdcbiAgICovXG4gIFYwXzkgPSAnMC45JyxcblxuICAvKipcbiAgICogR2x1ZSB2ZXJzaW9uIHVzaW5nIFNwYXJrIDIuNC4zLCBQeXRob24gMi43IGFuZCBQeXRob24gMy42XG4gICAqL1xuICBWMV8wID0gJzEuMCcsXG5cbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbiB1c2luZyBTcGFyayAyLjQuMyBhbmQgUHl0aG9uIDMuN1xuICAgKi9cbiAgVjJfMCA9ICcyLjAnLFxuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMy4xLjEgYW5kIFB5dGhvbiAzLjdcbiAgICovXG4gIFYzXzAgPSAnMy4wJyxcblxuICAvKipcbiAgICogR2x1ZSB2ZXJzaW9uIHVzaW5nIFNwYXJrIDMuMy4wIGFuZCBQeXRob24gMy4xMFxuICAgKi9cbiAgVjRfMCA9ICc0LjAnLFxuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMy41LjQsIFB5dGhvbiAzLjExLCBhbmQgU2NhbGEgMi4xMi4xOFxuICAgKi9cbiAgVjVfMCA9ICc1LjAnLFxuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMy41LjYsIFB5dGhvbiAzLjExLCBhbmQgU2NhbGEgMi4xMi4xOFxuICAgKi9cbiAgVjVfMSA9ICc1LjEnLFxufVxuXG4vKipcbiAqIFJ1bnRpbWUgbGFuZ3VhZ2Ugb2YgdGhlIEdsdWUgam9iXG4gKi9cbmV4cG9ydCBlbnVtIEpvYkxhbmd1YWdlIHtcbiAgLyoqXG4gICAqIFNjYWxhXG4gICAqL1xuICBTQ0FMQSA9ICdzY2FsYScsXG5cbiAgLyoqXG4gICAqIFB5dGhvblxuICAgKi9cbiAgUFlUSE9OID0gJ3B5dGhvbicsXG59XG5cbi8qKlxuICogUHl0aG9uIHZlcnNpb25cbiAqL1xuZXhwb3J0IGVudW0gUHl0aG9uVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBQeXRob24gMiAodGhlIGV4YWN0IHZlcnNpb24gZGVwZW5kcyBvbiBHbHVlVmVyc2lvbiBhbmQgSm9iQ29tbWFuZCB1c2VkKVxuICAgKi9cbiAgVFdPID0gJzInLFxuXG4gIC8qKlxuICAgKiBQeXRob24gMyAodGhlIGV4YWN0IHZlcnNpb24gZGVwZW5kcyBvbiBHbHVlVmVyc2lvbiBhbmQgSm9iQ29tbWFuZCB1c2VkKVxuICAgKi9cbiAgVEhSRUUgPSAnMycsXG5cbiAgLyoqXG4gICAqIFB5dGhvbiAzLjkgKHRoZSBleGFjdCB2ZXJzaW9uIGRlcGVuZHMgb24gR2x1ZVZlcnNpb24gYW5kIEpvYkNvbW1hbmQgdXNlZClcbiAgICovXG4gIFRIUkVFX05JTkUgPSAnMy45JyxcblxufVxuXG4vKipcbiAqIFRoZSBzZXQgb2YgcHJlLWluc3RhbGxlZCBQeXRob24gbGlicmFyaWVzIGF2YWlsYWJsZSB0byBhIFB5dGhvbiBzaGVsbCBqb2IgcnVubmluZyBQeXRob24gMy45LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2FkZC1qb2ItcHl0aG9uLmh0bWwjcHl0aG9uLXNoZWxsLXN1cHBvcnRlZC1saWJyYXJ5XG4gKi9cbmV4cG9ydCBlbnVtIExpYnJhcnlTZXQge1xuICAvKipcbiAgICogSW5jbHVkZSB0aGUgY29tbW9uIGFuYWx5dGljcyBsaWJyYXJpZXMgZm9yIFB5dGhvbiAzLjkgKGUuZy4gcGFuZGFzLCBudW1weSwgc2Npa2l0LWxlYXJuLFxuICAgKiBhd3N3cmFuZ2xlcikuXG4gICAqL1xuICBBTkFMWVRJQ1MgPSAnYW5hbHl0aWNzJyxcblxuICAvKipcbiAgICogRG8gbm90IGluc3RhbGwgdGhlIGNvbW1vbiBsaWJyYXJ5IHNldC4gVXNlIHRoaXMgd2hlbiB5b3VyIGxpYnJhcmllcyBhcmUgY3VzdG9tIG9yIGNvbmZsaWN0XG4gICAqIHdpdGggdGhlIHByZS1pbnN0YWxsZWQgb25lcy5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsXG59XG5cbi8qKlxuICogQVdTIEdsdWUgcnVudGltZSBkZXRlcm1pbmVzIHRoZSBydW50aW1lIGVuZ2luZSBvZiB0aGUgam9iLlxuICpcbiAqIEBkZXByZWNhdGVkIEFXUyBHbHVlIGZvciBSYXkgaXMgY2xvc2VkIHRvIG5ldyBjdXN0b21lcnMgYXMgb2YgQXByaWwgMzAsIDIwMjYuXG4gKiBNaWdyYXRlIHRvIEFtYXpvbiBFS1Mgd2l0aCBLdWJlUmF5IE9wZXJhdG9yLiBTZWVcbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3NnbHVlLXJheS1qb2JzLWF2YWlsYWJpbGl0eS1jaGFuZ2UuaHRtbFxuICovXG5leHBvcnQgZW51bSBSdW50aW1lIHtcbiAgLyoqXG4gICAqIFJ1bnRpbWUgZm9yIGEgR2x1ZSBmb3IgUmF5IDIuNC5cbiAgICovXG4gIFJBWV9UV09fRk9VUiA9ICdSYXkyLjQnLFxufVxuXG4vKipcbiAqIFRoZSBqb2IgdHlwZS5cbiAqL1xuZXhwb3J0IGVudW0gSm9iVHlwZSB7XG4gIC8qKlxuICAgKiBDb21tYW5kIGZvciBydW5uaW5nIGEgR2x1ZSBTcGFyayBqb2IuXG4gICAqL1xuICBFVEwgPSAnZ2x1ZWV0bCcsXG5cbiAgLyoqXG4gICAqIENvbW1hbmQgZm9yIHJ1bm5pbmcgYSBHbHVlIFNwYXJrIHN0cmVhbWluZyBqb2IuXG4gICAqL1xuICBTVFJFQU1JTkcgPSAnZ2x1ZXN0cmVhbWluZycsXG5cbiAgLyoqXG4gICAqIENvbW1hbmQgZm9yIHJ1bm5pbmcgYSBHbHVlIHB5dGhvbiBzaGVsbCBqb2IuXG4gICAqL1xuICBQWVRIT05fU0hFTEwgPSAncHl0aG9uc2hlbGwnLFxuXG4gIC8qKlxuICAgKiBDb21tYW5kIGZvciBydW5uaW5nIGEgR2x1ZSBSYXkgam9iLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBBV1MgR2x1ZSBmb3IgUmF5IGlzIGNsb3NlZCB0byBuZXcgY3VzdG9tZXJzIGFzIG9mIEFwcmlsIDMwLCAyMDI2LlxuICAgKiBNaWdyYXRlIHRvIEFtYXpvbiBFS1Mgd2l0aCBLdWJlUmF5IE9wZXJhdG9yLiBTZWVcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3c2dsdWUtcmF5LWpvYnMtYXZhaWxhYmlsaXR5LWNoYW5nZS5odG1sXG4gICAqL1xuICBSQVkgPSAnZ2x1ZXJheScsXG5cbn1cblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIEFXUyBHbHVlIGRhdGEgcHJvY2Vzc2luZyB1bml0cyAoRFBVcykgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIHdoZW4gdGhpcyBqb2IgcnVucy4gQSBEUFUgaXMgYSByZWxhdGl2ZSBtZWFzdXJlIG9mIHByb2Nlc3NpbmcgcG93ZXIgdGhhdCBjb25zaXN0cyBvZiA0IHZDUFVzIG9mIGNvbXB1dGUgY2FwYWNpdHkgYW5kIDE2IEdCIG9mIG1lbW9yeS5cbiAqL1xuZXhwb3J0IGVudW0gTWF4Q2FwYWNpdHkge1xuICAvKipcbiAgICogRFBVIHZhbHVlIG9mIDEvMTZ0aFxuICAgKi9cbiAgRFBVXzFfMTZUSCA9IDAuMDYyNSxcblxuICAvKipcbiAgICogRFBVIHZhbHVlIG9mIDFcbiAgICovXG4gIERQVV8xID0gMSxcbn1cblxuLypcbiAqIFJlcHJlc2VudHMgdGhlIGxvZ2ljYWwgb3BlcmF0b3IgZm9yIGNvbWJpbmluZyBtdWx0aXBsZSBjb25kaXRpb25zIGluIHRoZSBHbHVlIFRyaWdnZXIgQVBJLlxuICovXG5leHBvcnQgZW51bSBQcmVkaWNhdGVMb2dpY2FsIHtcbiAgLyoqXG4gICAqIEFsbCBjb25kaXRpb25zIG11c3QgYmUgdHJ1ZSBmb3IgdGhlIHByZWRpY2F0ZSB0byBiZSB0cnVlLlxuICAgKi9cbiAgQU5EID0gJ0FORCcsXG5cbiAgLyoqXG4gICAqIEF0IGxlYXN0IG9uZSBjb25kaXRpb24gbXVzdCBiZSB0cnVlIGZvciB0aGUgcHJlZGljYXRlIHRvIGJlIHRydWUuXG4gICAqL1xuICBBTlkgPSAnQU5ZJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2dpY2FsIG9wZXJhdG9yIGZvciBldmFsdWF0aW5nIGEgc2luZ2xlIGNvbmRpdGlvbiBpbiB0aGUgR2x1ZSBUcmlnZ2VyIEFQSS5cbiAqL1xuZXhwb3J0IGVudW0gQ29uZGl0aW9uTG9naWNhbE9wZXJhdG9yIHtcbiAgLyoqIFRoZSBjb25kaXRpb24gaXMgdHJ1ZSBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbC4gKi9cbiAgRVFVQUxTID0gJ0VRVUFMUycsXG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgYSBjcmF3bGVyIGZvciBhIGNvbmRpdGlvbiBpbiB0aGUgR2x1ZSBUcmlnZ2VyIEFQSS5cbiAqL1xuZXhwb3J0IGVudW0gQ3Jhd2xlclN0YXRlIHtcbiAgLyoqIFRoZSBjcmF3bGVyIGlzIGN1cnJlbnRseSBydW5uaW5nLiAqL1xuICBSVU5OSU5HID0gJ1JVTk5JTkcnLFxuXG4gIC8qKiBUaGUgY3Jhd2xlciBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBjYW5jZWxsZWQuICovXG4gIENBTkNFTExJTkcgPSAnQ0FOQ0VMTElORycsXG5cbiAgLyoqIFRoZSBjcmF3bGVyIGhhcyBiZWVuIGNhbmNlbGxlZC4gKi9cbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG5cbiAgLyoqIFRoZSBjcmF3bGVyIGhhcyBjb21wbGV0ZWQgaXRzIG9wZXJhdGlvbiBzdWNjZXNzZnVsbHkuICovXG4gIFNVQ0NFRURFRCA9ICdTVUNDRUVERUQnLFxuXG4gIC8qKiBUaGUgY3Jhd2xlciBoYXMgZmFpbGVkIHRvIGNvbXBsZXRlIGl0cyBvcGVyYXRpb24uICovXG4gIEZBSUxFRCA9ICdGQUlMRUQnLFxuXG4gIC8qKiBUaGUgY3Jhd2xlciBlbmNvdW50ZXJlZCBhbiBlcnJvciBkdXJpbmcgaXRzIG9wZXJhdGlvbi4gKi9cbiAgRVJST1IgPSAnRVJST1InLFxufVxuIl19
@@ -8,7 +8,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
8
  */
9
9
  class InputFormat {
10
10
  className;
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.InputFormat", version: "2.267.0-alpha.0" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.InputFormat", version: "2.269.0-alpha.0" };
12
12
  /**
13
13
  * InputFormat for Avro files.
14
14
  *
@@ -52,7 +52,7 @@ exports.InputFormat = InputFormat;
52
52
  */
53
53
  class OutputFormat {
54
54
  className;
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.OutputFormat", version: "2.267.0-alpha.0" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.OutputFormat", version: "2.269.0-alpha.0" };
56
56
  /**
57
57
  * Writes text data with a null key (value only).
58
58
  *
@@ -89,7 +89,7 @@ exports.OutputFormat = OutputFormat;
89
89
  */
90
90
  class SerializationLibrary {
91
91
  className;
92
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SerializationLibrary", version: "2.267.0-alpha.0" };
92
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.SerializationLibrary", version: "2.269.0-alpha.0" };
93
93
  /**
94
94
  * @see https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r3.1.3/api/org/apache/hadoop/hive/serde2/avro/AvroSerDe.html
95
95
  */
@@ -142,7 +142,7 @@ exports.SerializationLibrary = SerializationLibrary;
142
142
  */
143
143
  class ClassificationString {
144
144
  value;
145
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ClassificationString", version: "2.267.0-alpha.0" };
145
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ClassificationString", version: "2.269.0-alpha.0" };
146
146
  /**
147
147
  * @see https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html#aws-glue-programming-etl-format-avro
148
148
  */
@@ -176,7 +176,7 @@ exports.ClassificationString = ClassificationString;
176
176
  * Defines the input/output formats and ser/de for a single DataFormat.
177
177
  */
178
178
  class DataFormat {
179
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataFormat", version: "2.267.0-alpha.0" };
179
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataFormat", version: "2.269.0-alpha.0" };
180
180
  /**
181
181
  * DataFormat for Apache Web Server Logs. Also works for CloudFront logs
182
182
  *
@@ -1,10 +1,27 @@
1
+ import { type IDatabaseRef } from 'aws-cdk-lib/aws-glue';
1
2
  import type { IResource, RemovalPolicy } from 'aws-cdk-lib/core';
2
3
  import { Resource } from 'aws-cdk-lib/core';
3
4
  import type * as constructs from 'constructs';
5
+ import type { ITable } from './table-base';
4
6
  /**
5
- * Properties of a DataQualityTargetTable.
7
+ * The Glue table a `DataQualityRuleset` evaluates.
6
8
  */
7
9
  export declare class DataQualityTargetTable {
10
+ /**
11
+ * Target an L2 table in a database.
12
+ *
13
+ * @param database the database that holds the table.
14
+ * @param table the table to evaluate.
15
+ */
16
+ static fromTable(database: IDatabaseRef, table: ITable): DataQualityTargetTable;
17
+ /**
18
+ * Target a table by name in a database. Use this when the table is not
19
+ * modeled as an L2 construct (e.g. it is imported or created elsewhere).
20
+ *
21
+ * @param database the database that holds the table.
22
+ * @param tableName the name of the table to evaluate.
23
+ */
24
+ static fromTableName(database: IDatabaseRef, tableName: string): DataQualityTargetTable;
8
25
  /**
9
26
  * The database name of the target table.
10
27
  */
@@ -13,7 +30,7 @@ export declare class DataQualityTargetTable {
13
30
  * The table name of the target table.
14
31
  */
15
32
  readonly tableName: string;
16
- constructor(databaseName: string, tableName: string);
33
+ private constructor();
17
34
  }
18
35
  /**
19
36
  * The Data Quality Definition Language (DQDL) document for a `DataQualityRuleset`.
@@ -57,14 +74,8 @@ export interface IDataQualityRuleset extends IResource {
57
74
  export interface DataQualityRulesetProps {
58
75
  /**
59
76
  * The name of the ruleset
60
- * @default cloudformation generated name
61
77
  */
62
- readonly rulesetName?: string;
63
- /**
64
- * The client token of the ruleset
65
- * @attribute
66
- */
67
- readonly clientToken?: string;
78
+ readonly rulesetName: string;
68
79
  /**
69
80
  * The description of the ruleset
70
81
  * @attribute
@@ -77,10 +77,38 @@ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
77
77
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
78
78
  const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
79
79
  /**
80
- * Properties of a DataQualityTargetTable.
80
+ * The Glue table a `DataQualityRuleset` evaluates.
81
81
  */
82
82
  class DataQualityTargetTable {
83
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataQualityTargetTable", version: "2.267.0-alpha.0" };
83
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataQualityTargetTable", version: "2.269.0-alpha.0" };
84
+ /**
85
+ * Target an L2 table in a database.
86
+ *
87
+ * @param database the database that holds the table.
88
+ * @param table the table to evaluate.
89
+ */
90
+ static fromTable(database, table) {
91
+ try {
92
+ jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_ITable(table);
93
+ }
94
+ catch (error) {
95
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
96
+ Error.captureStackTrace(error, this.fromTable);
97
+ }
98
+ throw error;
99
+ }
100
+ return new DataQualityTargetTable(database.databaseRef.databaseName, table.tableName);
101
+ }
102
+ /**
103
+ * Target a table by name in a database. Use this when the table is not
104
+ * modeled as an L2 construct (e.g. it is imported or created elsewhere).
105
+ *
106
+ * @param database the database that holds the table.
107
+ * @param tableName the name of the table to evaluate.
108
+ */
109
+ static fromTableName(database, tableName) {
110
+ return new DataQualityTargetTable(database.databaseRef.databaseName, tableName);
111
+ }
84
112
  /**
85
113
  * The database name of the target table.
86
114
  */
@@ -105,7 +133,7 @@ exports.DataQualityTargetTable = DataQualityTargetTable;
105
133
  */
106
134
  class Dqdl {
107
135
  dqdl;
108
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Dqdl", version: "2.267.0-alpha.0" };
136
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Dqdl", version: "2.269.0-alpha.0" };
109
137
  /**
110
138
  * Create a `Dqdl` from a raw DQDL string.
111
139
  *
@@ -151,7 +179,7 @@ let DataQualityRuleset = (() => {
151
179
  DataQualityRuleset = _classThis = _classDescriptor.value;
152
180
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
153
181
  }
154
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataQualityRuleset", version: "2.267.0-alpha.0" };
182
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataQualityRuleset", version: "2.269.0-alpha.0" };
155
183
  /** Uniquely identifies this class. */
156
184
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.DataQualityRuleset';
157
185
  static fromRulesetArn(scope, id, rulesetArn) {
@@ -192,7 +220,6 @@ let DataQualityRuleset = (() => {
192
220
  // Enhanced CDK Analytics Telemetry
193
221
  (0, metadata_resource_1.addConstructMetadata)(this, props);
194
222
  this.resource = new aws_glue_1.CfnDataQualityRuleset(this, 'Resource', {
195
- clientToken: props.clientToken,
196
223
  description: props.description,
197
224
  name: props.rulesetName,
198
225
  ruleset: props.dqdl._render(),
@@ -220,4 +247,4 @@ let DataQualityRuleset = (() => {
220
247
  return DataQualityRuleset = _classThis;
221
248
  })();
222
249
  exports.DataQualityRuleset = DataQualityRuleset;
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1xdWFsaXR5LXJ1bGVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhLXF1YWxpdHktcnVsZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFDbkMsbURBQTZEO0FBRTdELDJDQUE0QztBQUM1Qyw0RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRTs7R0FFRztBQUNILE1BQWEsc0JBQXNCOztJQUNqQzs7T0FFRztJQUNNLFlBQVksQ0FBUztJQUU5Qjs7T0FFRztJQUNNLFNBQVMsQ0FBUztJQUUzQixZQUFZLFlBQW9CLEVBQUUsU0FBaUI7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7S0FDNUI7O0FBZEgsd0RBZUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxJQUFJO0lBVXNCOztJQVRyQzs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7SUFFRCxZQUFxQyxJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtLQUFJO0lBRXJEOzs7O09BSUc7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2xCOztBQW5CSCxvQkFvQkM7QUFpRUQ7O0dBRUc7SUFFVSxrQkFBa0I7NEJBRDlCLG9DQUFrQjs7OztzQkFDcUIsZUFBUTs7OztrQ0FBaEIsU0FBUSxXQUFROzs7OzJDQXNEN0MsaUNBQWM7MENBUWQsaUNBQWM7WUFQZix3TEFBVyxXQUFXLDZEQUVyQjtZQU1ELHFMQUFXLFVBQVUsNkRBRXBCO1lBakVILDZLQWtFQzs7Ozs7UUFqRUMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyw0Q0FBNEMsQ0FBQztRQUU3RixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQTJCLEVBQUUsRUFBVSxFQUFFLFVBQWtCO1lBQ3RGLE1BQU0sTUFBTyxTQUFRLGVBQVE7Z0JBQ3BCLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQ3hCLFdBQVcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3BGO1lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUI7UUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQTJCLEVBQUUsRUFBVSxFQUFFLFdBQW1CO1lBQ3hGLE1BQU0sTUFBTyxTQUFRLGVBQVE7Z0JBQ3BCLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRSxXQUFXLEdBQUcsV0FBVyxDQUFDO2FBQ2xDO1lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUI7UUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQTJCLEVBQUUsV0FBbUI7WUFDN0UsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxNQUFNO2dCQUNmLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFlBQVksRUFBRSxXQUFXO2FBQzFCLENBQUMsQ0FBQztTQUNKO1FBRU8sUUFBUSxHQTlCTCxtREFBa0IsQ0E4Qlc7UUFFeEMsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtZQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDaEMsQ0FBQyxDQUFDOzs7Ozs7bURBbkNNLGtCQUFrQjs7OztZQW9DM0IsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQ0FBcUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUMxRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUN2QixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzdCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQ7O1dBRUc7UUFFSCxJQUFXLFdBQVc7WUFDcEIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RDtRQUVEOztXQUVHO1FBRUgsSUFBVyxVQUFVO1lBQ25CLE9BQU8sa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbkU7O1lBakVVLHVEQUFrQjs7Ozs7QUFBbEIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENmbkRhdGFRdWFsaXR5UnVsZXNldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nbHVlJztcbmltcG9ydCB0eXBlIHsgSVJlc291cmNlLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIGEgRGF0YVF1YWxpdHlUYXJnZXRUYWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFRdWFsaXR5VGFyZ2V0VGFibGUge1xuICAvKipcbiAgICogVGhlIGRhdGFiYXNlIG5hbWUgb2YgdGhlIHRhcmdldCB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZGF0YWJhc2VOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBkYXRhYmFzZU5hbWU7XG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgRGF0YSBRdWFsaXR5IERlZmluaXRpb24gTGFuZ3VhZ2UgKERRREwpIGRvY3VtZW50IGZvciBhIGBEYXRhUXVhbGl0eVJ1bGVzZXRgLlxuICpcbiAqIERRREwgaXMgYW4gYXV0aG9yZWQgc3RyaW5nIHRoYXQgR2x1ZSBwYXJzZXMgYW5kIHZhbGlkYXRlcyBhdCBkZXBsb3kgdGltZS4gQnVpbGRcbiAqIG9uZSBmcm9tIGEgcmF3IERRREwgc3RyaW5nIHdpdGgge0BsaW5rIERxZGwuZnJvbVN0cmluZ30uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvZHFkbC5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBEcWRsIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBEcWRsYCBmcm9tIGEgcmF3IERRREwgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZHFkbCB0aGUgRFFETCBkb2N1bWVudCwgZS5nLiBgUnVsZXMgPSBbIFJvd0NvdW50ID4gMTAwIF1gLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKGRxZGw6IHN0cmluZyk6IERxZGwge1xuICAgIHJldHVybiBuZXcgRHFkbChkcWRsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkcWRsOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGlzIERRREwgdG8gdGhlIHN0cmluZyBleHBlY3RlZCBieSB0aGUgR2x1ZSBydWxlc2V0IHJlc291cmNlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZHFkbDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhUXVhbGl0eVJ1bGVzZXQgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcnVsZXNldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBydWxlc2V0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBydWxlc2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVzZXROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGBEYXRhUXVhbGl0eVJ1bGVzZXRgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVF1YWxpdHlSdWxlc2V0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJ1bGVzZXRcbiAgICogQGRlZmF1bHQgY2xvdWRmb3JtYXRpb24gZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVzZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xpZW50IHRva2VuIG9mIHRoZSBydWxlc2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudFRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bGVzZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBEUURMIGRvY3VtZW50IGRlZmluaW5nIHRoZSBydWxlc2V0J3MgZGF0YSBxdWFsaXR5IHJ1bGVzLlxuICAgKlxuICAgKiBCdWlsZCBpdCB3aXRoIGBEcWRsLmZyb21TdHJpbmcoLi4uKWAuXG4gICAqL1xuICByZWFkb25seSBkcWRsOiBEcWRsO1xuXG4gIC8qKlxuICAgKiAgS2V5LVZhbHVlIHBhaXJzIHRoYXQgZGVmaW5lIHRhZ3MgZm9yIHRoZSBydWxlc2V0LlxuICAgKiAgQGRlZmF1bHQgZW1wdHkgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgdGFibGUgb2YgdGhlIHJ1bGVzZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0VGFibGU6IERhdGFRdWFsaXR5VGFyZ2V0VGFibGU7XG5cbiAgLyoqXG4gICAqIFBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBydWxlc2V0IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgR2x1ZSBEYXRhIFF1YWxpdHkgcnVsZXNldC5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIERhdGFRdWFsaXR5UnVsZXNldCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSURhdGFRdWFsaXR5UnVsZXNldCB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWdsdWUtYWxwaGEuRGF0YVF1YWxpdHlSdWxlc2V0JztcblxuICBwdWJsaWMgc3RhdGljIGZyb21SdWxlc2V0QXJuKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcnVsZXNldEFybjogc3RyaW5nKTogSURhdGFRdWFsaXR5UnVsZXNldCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJRGF0YVF1YWxpdHlSdWxlc2V0IHtcbiAgICAgIHB1YmxpYyBydWxlc2V0QXJuID0gcnVsZXNldEFybjtcbiAgICAgIHB1YmxpYyBydWxlc2V0TmFtZSA9IGNkay5Bcm4uZXh0cmFjdFJlc291cmNlTmFtZShydWxlc2V0QXJuLCAnZGF0YXF1YWxpdHlydWxlc2V0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVJ1bGVzZXROYW1lKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcnVsZXNldE5hbWU6IHN0cmluZyk6IElEYXRhUXVhbGl0eVJ1bGVzZXQge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSURhdGFRdWFsaXR5UnVsZXNldCB7XG4gICAgICBwdWJsaWMgcnVsZXNldEFybiA9IERhdGFRdWFsaXR5UnVsZXNldC5idWlsZFJ1bGVzZXRBcm4oc2NvcGUsIHJ1bGVzZXROYW1lKTtcbiAgICAgIHB1YmxpYyBydWxlc2V0TmFtZSA9IHJ1bGVzZXROYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBidWlsZFJ1bGVzZXRBcm4oc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBydWxlc2V0TmFtZTogc3RyaW5nKSA6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdnbHVlJyxcbiAgICAgIHJlc291cmNlOiAnZGF0YXF1YWxpdHlydWxlc2V0JyxcbiAgICAgIHJlc291cmNlTmFtZTogcnVsZXNldE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc291cmNlOiBDZm5EYXRhUXVhbGl0eVJ1bGVzZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YVF1YWxpdHlSdWxlc2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMucnVsZXNldE5hbWUsXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmbkRhdGFRdWFsaXR5UnVsZXNldCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjbGllbnRUb2tlbjogcHJvcHMuY2xpZW50VG9rZW4sXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBwcm9wcy5ydWxlc2V0TmFtZSxcbiAgICAgIHJ1bGVzZXQ6IHByb3BzLmRxZGwuX3JlbmRlcigpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIHRhcmdldFRhYmxlOiBwcm9wcy50YXJnZXRUYWJsZSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBydWxlc2V0LlxuICAgKi9cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgcnVsZXNldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIHJ1bGVzZXQuXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBydWxlc2V0QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIERhdGFRdWFsaXR5UnVsZXNldC5idWlsZFJ1bGVzZXRBcm4odGhpcywgdGhpcy5ydWxlc2V0TmFtZSk7XG4gIH1cbn1cbiJdfQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1xdWFsaXR5LXJ1bGVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhLXF1YWxpdHktcnVsZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFDbkMsbURBQWdGO0FBRWhGLDJDQUE0QztBQUM1Qyw0RUFBdUU7QUFDdkUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUkxRTs7R0FFRztBQUNILE1BQWEsc0JBQXNCOztJQUNqQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBc0IsRUFBRSxLQUFhOzs7Ozs7Ozs7O1FBQzNELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDdkY7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQXNCLEVBQUUsU0FBaUI7UUFDbkUsT0FBTyxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ2pGO0lBRUQ7O09BRUc7SUFDYSxZQUFZLENBQVM7SUFFckM7O09BRUc7SUFDYSxTQUFTLENBQVM7SUFFbEMsWUFBb0IsWUFBb0IsRUFBRSxTQUFpQjtRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztLQUM1Qjs7QUFuQ0gsd0RBb0NDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsSUFBSTtJQVVzQjs7SUFUckM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQs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Q29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ2ZuRGF0YVF1YWxpdHlSdWxlc2V0LCB0eXBlIElEYXRhYmFzZVJlZiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nbHVlJztcbmltcG9ydCB0eXBlIHsgSVJlc291cmNlLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSVRhYmxlIH0gZnJvbSAnLi90YWJsZS1iYXNlJztcblxuLyoqXG4gKiBUaGUgR2x1ZSB0YWJsZSBhIGBEYXRhUXVhbGl0eVJ1bGVzZXRgIGV2YWx1YXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFRdWFsaXR5VGFyZ2V0VGFibGUge1xuICAvKipcbiAgICogVGFyZ2V0IGFuIEwyIHRhYmxlIGluIGEgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhYmFzZSB0aGUgZGF0YWJhc2UgdGhhdCBob2xkcyB0aGUgdGFibGUuXG4gICAqIEBwYXJhbSB0YWJsZSB0aGUgdGFibGUgdG8gZXZhbHVhdGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZShkYXRhYmFzZTogSURhdGFiYXNlUmVmLCB0YWJsZTogSVRhYmxlKTogRGF0YVF1YWxpdHlUYXJnZXRUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRhUXVhbGl0eVRhcmdldFRhYmxlKGRhdGFiYXNlLmRhdGFiYXNlUmVmLmRhdGFiYXNlTmFtZSwgdGFibGUudGFibGVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYXJnZXQgYSB0YWJsZSBieSBuYW1lIGluIGEgZGF0YWJhc2UuIFVzZSB0aGlzIHdoZW4gdGhlIHRhYmxlIGlzIG5vdFxuICAgKiBtb2RlbGVkIGFzIGFuIEwyIGNvbnN0cnVjdCAoZS5nLiBpdCBpcyBpbXBvcnRlZCBvciBjcmVhdGVkIGVsc2V3aGVyZSkuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhYmFzZSB0aGUgZGF0YWJhc2UgdGhhdCBob2xkcyB0aGUgdGFibGUuXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGV2YWx1YXRlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVGFibGVOYW1lKGRhdGFiYXNlOiBJRGF0YWJhc2VSZWYsIHRhYmxlTmFtZTogc3RyaW5nKTogRGF0YVF1YWxpdHlUYXJnZXRUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRhUXVhbGl0eVRhcmdldFRhYmxlKGRhdGFiYXNlLmRhdGFiYXNlUmVmLmRhdGFiYXNlTmFtZSwgdGFibGVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0YWJhc2UgbmFtZSBvZiB0aGUgdGFyZ2V0IHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoZGF0YWJhc2VOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBkYXRhYmFzZU5hbWU7XG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgRGF0YSBRdWFsaXR5IERlZmluaXRpb24gTGFuZ3VhZ2UgKERRREwpIGRvY3VtZW50IGZvciBhIGBEYXRhUXVhbGl0eVJ1bGVzZXRgLlxuICpcbiAqIERRREwgaXMgYW4gYXV0aG9yZWQgc3RyaW5nIHRoYXQgR2x1ZSBwYXJzZXMgYW5kIHZhbGlkYXRlcyBhdCBkZXBsb3kgdGltZS4gQnVpbGRcbiAqIG9uZSBmcm9tIGEgcmF3IERRREwgc3RyaW5nIHdpdGgge0BsaW5rIERxZGwuZnJvbVN0cmluZ30uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvZHFkbC5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBEcWRsIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBEcWRsYCBmcm9tIGEgcmF3IERRREwgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZHFkbCB0aGUgRFFETCBkb2N1bWVudCwgZS5nLiBgUnVsZXMgPSBbIFJvd0NvdW50ID4gMTAwIF1gLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKGRxZGw6IHN0cmluZyk6IERxZGwge1xuICAgIHJldHVybiBuZXcgRHFkbChkcWRsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkcWRsOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGlzIERRREwgdG8gdGhlIHN0cmluZyBleHBlY3RlZCBieSB0aGUgR2x1ZSBydWxlc2V0IHJlc291cmNlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZHFkbDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhUXVhbGl0eVJ1bGVzZXQgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcnVsZXNldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBydWxlc2V0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBydWxlc2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVzZXROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGBEYXRhUXVhbGl0eVJ1bGVzZXRgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVF1YWxpdHlSdWxlc2V0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJ1bGVzZXRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVzZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcnVsZXNldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIERRREwgZG9jdW1lbnQgZGVmaW5pbmcgdGhlIHJ1bGVzZXQncyBkYXRhIHF1YWxpdHkgcnVsZXMuXG4gICAqXG4gICAqIEJ1aWxkIGl0IHdpdGggYERxZGwuZnJvbVN0cmluZyguLi4pYC5cbiAgICovXG4gIHJlYWRvbmx5IGRxZGw6IERxZGw7XG5cbiAgLyoqXG4gICAqICBLZXktVmFsdWUgcGFpcnMgdGhhdCBkZWZpbmUgdGFncyBmb3IgdGhlIHJ1bGVzZXQuXG4gICAqICBAZGVmYXVsdCBlbXB0eSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCB0YWJsZSBvZiB0aGUgcnVsZXNldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRUYWJsZTogRGF0YVF1YWxpdHlUYXJnZXRUYWJsZTtcblxuICAvKipcbiAgICogUG9saWN5IHRvIGFwcGx5IHdoZW4gdGhlIHJ1bGVzZXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZXNvdXJjZSB3aWxsIGJlIGRlc3Ryb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBHbHVlIERhdGEgUXVhbGl0eSBydWxlc2V0LlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRGF0YVF1YWxpdHlSdWxlc2V0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJRGF0YVF1YWxpdHlSdWxlc2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZ2x1ZS1hbHBoYS5EYXRhUXVhbGl0eVJ1bGVzZXQnO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVJ1bGVzZXRBcm4oc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBydWxlc2V0QXJuOiBzdHJpbmcpOiBJRGF0YVF1YWxpdHlSdWxlc2V0IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElEYXRhUXVhbGl0eVJ1bGVzZXQge1xuICAgICAgcHVibGljIHJ1bGVzZXRBcm4gPSBydWxlc2V0QXJuO1xuICAgICAgcHVibGljIHJ1bGVzZXROYW1lID0gY2RrLkFybi5leHRyYWN0UmVzb3VyY2VOYW1lKHJ1bGVzZXRBcm4sICdkYXRhcXVhbGl0eXJ1bGVzZXQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tUnVsZXNldE5hbWUoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBydWxlc2V0TmFtZTogc3RyaW5nKTogSURhdGFRdWFsaXR5UnVsZXNldCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJRGF0YVF1YWxpdHlSdWxlc2V0IHtcbiAgICAgIHB1YmxpYyBydWxlc2V0QXJuID0gRGF0YVF1YWxpdHlSdWxlc2V0LmJ1aWxkUnVsZXNldEFybihzY29wZSwgcnVsZXNldE5hbWUpO1xuICAgICAgcHVibGljIHJ1bGVzZXROYW1lID0gcnVsZXNldE5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkUnVsZXNldEFybihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIHJ1bGVzZXROYW1lOiBzdHJpbmcpIDogc3RyaW5nIHtcbiAgICByZXR1cm4gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dsdWUnLFxuICAgICAgcmVzb3VyY2U6ICdkYXRhcXVhbGl0eXJ1bGVzZXQnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBydWxlc2V0TmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkRhdGFRdWFsaXR5UnVsZXNldDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhUXVhbGl0eVJ1bGVzZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5ydWxlc2V0TmFtZSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuRGF0YVF1YWxpdHlSdWxlc2V0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIG5hbWU6IHByb3BzLnJ1bGVzZXROYW1lLFxuICAgICAgcnVsZXNldDogcHJvcHMuZHFkbC5fcmVuZGVyKCksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgdGFyZ2V0VGFibGU6IHByb3BzLnRhcmdldFRhYmxlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIHJ1bGVzZXQuXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBydWxlc2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLnJlZik7XG4gIH1cblxuICAvKipcbiAgICogQVJOIG9mIHRoaXMgcnVsZXNldC5cbiAgICovXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHJ1bGVzZXRBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRGF0YVF1YWxpdHlSdWxlc2V0LmJ1aWxkUnVsZXNldEFybih0aGlzLCB0aGlzLnJ1bGVzZXROYW1lKTtcbiAgfVxufVxuIl19
package/lib/database.d.ts CHANGED
@@ -1,8 +1,9 @@
1
+ import { type DatabaseReference, type IDatabaseRef } from 'aws-cdk-lib/aws-glue';
1
2
  import type { IResource } from 'aws-cdk-lib/core';
2
3
  import { RemovalPolicy, Resource } from 'aws-cdk-lib/core';
3
4
  import type { Construct } from 'constructs';
4
5
  import type { ICatalog } from './catalog';
5
- export interface IDatabase extends IResource {
6
+ export interface IDatabase extends IResource, IDatabaseRef {
6
7
  /**
7
8
  * The catalog this database belongs to.
8
9
  */
@@ -79,4 +80,5 @@ export declare class Database extends Resource implements IDatabase {
79
80
  get catalog(): ICatalog;
80
81
  get databaseName(): string;
81
82
  get databaseArn(): string;
83
+ get databaseRef(): DatabaseReference;
82
84
  }
package/lib/database.js CHANGED
@@ -70,7 +70,7 @@ let Database = (() => {
70
70
  Database = _classThis = _classDescriptor.value;
71
71
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
72
72
  }
73
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Database", version: "2.267.0-alpha.0" };
73
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Database", version: "2.269.0-alpha.0" };
74
74
  /** Uniquely identifies this class. */
75
75
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.Database';
76
76
  static fromDatabaseArn(scope, id, databaseArn) {
@@ -88,6 +88,9 @@ let Database = (() => {
88
88
  }
89
89
  databaseArn = (__runInitializers(this, _instanceExtraInitializers), databaseArn);
90
90
  databaseName = stack.splitArn(databaseArn, core_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
91
+ get databaseRef() {
92
+ return { databaseName: this.databaseName };
93
+ }
91
94
  // Materialize the account catalog only on access, so importing a database
92
95
  // does not pre-empt Catalog.encryptAccount() for the stack.
93
96
  get catalog() {
@@ -168,6 +171,9 @@ let Database = (() => {
168
171
  resourceName: this.databaseName,
169
172
  });
170
173
  }
174
+ get databaseRef() {
175
+ return { databaseName: this.databaseName };
176
+ }
171
177
  static {
172
178
  __runInitializers(_classThis, _classExtraInitializers);
173
179
  }
@@ -185,4 +191,4 @@ function validateDescription(description) {
185
191
  throw new core_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidDescriptionLength`, `description length must be less than or equal to 2048, got ${description.length}`);
186
192
  }
187
193
  }
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBbUQ7QUFFbkQsMkNBQW1IO0FBQ25ILDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRzFFLHVDQUFvQztBQWlFcEM7O0dBRUc7SUFFVSxRQUFROzRCQURwQixvQ0FBa0I7Ozs7c0JBQ1csZUFBUTs7Ozs7d0JBQWhCLFNBQVEsV0FBUTs7Ozt1Q0FpRm5DLGlDQUFjOzRDQUtkLGlDQUFjOzJDQUtkLGlDQUFjO1lBVGYsNEtBQVcsT0FBTyw2REFFakI7WUFHRCwyTEFBVyxZQUFZLDZEQUV0QjtZQUdELHdMQUFXLFdBQVcsNkRBTXJCO1lBbEdILDZLQW1HQzs7Ozs7UUFsR0Msc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxrQ0FBa0MsQ0FBQztRQUVuRixNQUFNLENBQUMsZUFBZSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFdBQW1CO1lBQzdFLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXhCLE1BQU07a0NBQVMsZUFBUTs7OzZCQUF2QixNQUFPLFNBQVEsV0FBUTs7O3FEQU0xQixpQ0FBYzt3QkFDZiw4S0FBVyxPQUFPLDZEQUVqQjs7O29CQVJNLFdBQVcsSUFEZCxtREFBTSxFQUNXLFdBQVcsRUFBQztvQkFDMUIsWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxZQUFhLENBQUM7b0JBRS9GLDBFQUEwRTtvQkFDMUUsNERBQTREO29CQUU1RCxJQUFXLE9BQU87d0JBQ2hCLE9BQU8saUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xDLENBQUM7OztZQUdILE9B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V0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0osQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLFdBQW1CO0lBQzlDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksOEJBQXVCLENBQUMsSUFBQSxzQkFBRyxFQUFBLDBCQUEwQixFQUFFLDhEQUE4RCxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2SixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbkRhdGFiYXNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEFybkZvcm1hdCwgTGF6eSwgTmFtZXMsIFJlbW92YWxQb2xpY3ksIFJlc291cmNlLCBTdGFjaywgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGxpdCwgbWVtb2l6ZWRHZXR0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElDYXRhbG9nIH0gZnJvbSAnLi9jYXRhbG9nJztcbmltcG9ydCB7IENhdGFsb2cgfSBmcm9tICcuL2NhdGFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhYmFzZSBleHRlbmRzIElSZXNvdXJjZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXRhbG9nIHRoaXMgZGF0YWJhc2UgYmVsb25ncyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2c6IElDYXRhbG9nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgYnkgQ0RLLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGRhdGFiYXNlIChmb3IgZXhhbXBsZSwgYW4gSERGUyBwYXRoKS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkLiBUaGlzIGZpZWxkIGlzIG9wdGlvbmFsIGluIEFXUzo6R2x1ZTo6RGF0YWJhc2UgRGF0YWJhc2VJbnB1dFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWdsdWUtZGF0YWJhc2UtZGF0YWJhc2VpbnB1dC5odG1sXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvblVyaT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGF0YWJhc2UgZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2F0YWxvZyBpbiB3aGljaCB0aGUgZGF0YWJhc2Ugd2lsbCBiZSBwbGFjZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBkZWZhdWx0LCBhY2NvdW50LXdpZGUgY2F0YWxvZy5cbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2c/OiBJQ2F0YWxvZztcblxuICAvKipcbiAgICogUG9saWN5IHRvIGFwcGx5IHdoZW4gdGhlIGRhdGFiYXNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2suXG4gICAqXG4gICAqIEEgZGF0YWJhc2UgaXMgYSBjb250YWluZXIgZm9yIHRhYmxlcyBhbmQgdGhlaXIgbWV0YWRhdGEsIHNvIGl0IGlzIHJldGFpbmVkXG4gICAqIGJ5IGRlZmF1bHQgdG8gYXZvaWQgYWNjaWRlbnRhbCBkYXRhIGxvc3Mgd2hlbiBpdCBpcyByZW1vdmVkIGZyb20gYSBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgR2x1ZSBkYXRhYmFzZS5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIERhdGFiYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJRGF0YWJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLkRhdGFiYXNlJztcblxuICBwdWJsaWMgc3RhdGljIGZyb21EYXRhYmFzZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBkYXRhYmFzZUFybjogc3RyaW5nKTogSURhdGFiYXNlIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSURhdGFiYXNlIHtcbiAgICAgIHB1YmxpYyBkYXRhYmFzZUFybiA9IGRhdGFiYXNlQXJuO1xuICAgICAgcHVibGljIGRhdGFiYXNlTmFtZSA9IHN0YWNrLnNwbGl0QXJuKGRhdGFiYXNlQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lITtcblxuICAgICAgLy8gTWF0ZXJpYWxpemUgdGhlIGFjY291bnQgY2F0YWxvZyBvbmx5IG9uIGFjY2Vzcywgc28gaW1wb3J0aW5nIGEgZGF0YWJhc2VcbiAgICAgIC8vIGRvZXMgbm90IHByZS1lbXB0IENhdGFsb2cuZW5jcnlwdEFjY291bnQoKSBmb3IgdGhlIHN0YWNrLlxuICAgICAgQG1lbW9pemVkR2V0dGVyXG4gICAgICBwdWJsaWMgZ2V0IGNhdGFsb2coKTogSUNhdGFsb2cge1xuICAgICAgICByZXR1cm4gQ2F0YWxvZy5mb3JBY2NvdW50KHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogTG9jYXRpb24gVVJJIG9mIHRoaXMgZGF0YWJhc2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25Vcmk/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0YWxvZz86IElDYXRhbG9nO1xuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkRhdGFiYXNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge30pLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRlRGVzY3JpcHRpb24ocHJvcHMuZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIGxldCBkYXRhYmFzZUlucHV0OiBDZm5EYXRhYmFzZS5EYXRhYmFzZUlucHV0UHJvcGVydHkgPSB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLmxvY2F0aW9uVXJpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRlTG9jYXRpb25VcmkocHJvcHMubG9jYXRpb25VcmkpO1xuICAgICAgdGhpcy5sb2NhdGlvblVyaSA9IHByb3BzLmxvY2F0aW9uVXJpO1xuICAgICAgZGF0YWJhc2VJbnB1dCA9IHtcbiAgICAgICAgbG9jYXRpb25Vcmk6IHRoaXMubG9jYXRpb25VcmksXG4gICAgICAgIC4uLmRhdGFiYXNlSW5wdXQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuX2NhdGFsb2cgPSBwcm9wcy5jYXRhbG9nO1xuXG4gICAgLy8gV2hlbiB0aGUgZGF0YWJhc2UgdXNlcyB0aGUgaW1wbGljaXQgYWNjb3VudCBjYXRhbG9nLCBpdHMgaWQgaXMgdGhlXG4gICAgLy8gYWNjb3VudCBpZC4gUmVmZXJlbmNlIHRoYXQgZGlyZWN0bHkgcmF0aGVyIHRoYW4gbWF0ZXJpYWxpemluZyB0aGUgYWNjb3VudFxuICAgIC8vIGNhdGFsb2cgc2luZ2xldG9uLCBzbyBhIHBsYWluIGBuZXcgRGF0YWJhc2UoKWAgZG9lcyBub3QgcHJlLWVtcHRcbiAgICAvLyBgQ2F0YWxvZy5lbmNyeXB0QWNjb3VudCgpYCBmb3IgdGhlIHN0YWNrLlxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuRGF0YWJhc2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY2F0YWxvZ0lkOiB0aGlzLl9jYXRhbG9nPy5jYXRhbG9nSWQgPz8gU3RhY2sub2YodGhpcykuYWNjb3VudCxcbiAgICAgIGRhdGFiYXNlSW5wdXQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5LCB7XG4gICAgICBkZWZhdWx0OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY2F0YWxvZyB0aGlzIGRhdGFiYXNlIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRoZSBpbXBsaWNpdCwgYWNjb3VudC13aWRlIGNhdGFsb2csIG1hdGVyaWFsaXplZCBvbiBmaXJzdFxuICAgKiBhY2Nlc3MuXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBjYXRhbG9nKCk6IElDYXRhbG9nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0YWxvZyA/PyBDYXRhbG9nLmZvckFjY291bnQodGhpcyk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBkYXRhYmFzZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgZGF0YWJhc2VBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dsdWUnLFxuICAgICAgcmVzb3VyY2U6ICdkYXRhYmFzZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMuZGF0YWJhc2VOYW1lLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTG9jYXRpb25VcmkobG9jYXRpb25Vcmk6IHN0cmluZyk6IHZvaWQge1xuICBpZiAobG9jYXRpb25VcmkubGVuZ3RoIDwgMSB8fCBsb2NhdGlvblVyaS5sZW5ndGggPiAxMDI0KSB7XG4gICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkTG9jYXRpb25VcmlMZW5ndGhgLCBgbG9jYXRpb25VcmkgbGVuZ3RoIG11c3QgYmUgKGluY2x1c2l2ZWx5KSBiZXR3ZWVuIDEgYW5kIDEwMjQsIGdvdCAke2xvY2F0aW9uVXJpLmxlbmd0aH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCA+IDIwNDgpIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWREZXNjcmlwdGlvbkxlbmd0aGAsIGBkZXNjcmlwdGlvbiBsZW5ndGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMjA0OCwgZ290ICR7ZGVzY3JpcHRpb24ubGVuZ3RofWApO1xuICB9XG59XG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBOEY7QUFFOUYsMkNBQW1IO0FBQ25ILDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRzFFLHVDQUFvQztBQWlFcEM7O0dBRUc7SUFFVSxRQUFROzRCQURwQixvQ0FBa0I7Ozs7c0JBQ1csZUFBUTs7Ozs7d0JBQWhCLFNBQVEsV0FBUTs7Ozt1Q0FxRm5DLGlDQUFjOzRDQUtkLGlDQUFjOzJDQUtkLGlDQUFjO1lBVGYsNEtBQVcsT0FBTyw2REFFakI7WUFHRCwyTEFBVyxZQUFZLDZEQUV0QjtZQUdELHdMQUFXLFdBQVcsNkRBTXJCO1lBdEdILDZLQTJHQzs7Ozs7UUExR0Msc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxrQ0FBa0MsQ0FBQztRQUVuRixNQUFNLENBQUMsZUFBZSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFdBQW1CO1lBQzdFLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXhCLE1BQU07a0NBQVMsZUFBUTs7OzZCQUF2QixNQUFPLFNBQVEsV0FBUTs7O3FEQVUxQixpQ0FBYzt3QkFDZiw4S0FBVyxPQUFPLDZEQUVqQjs7O29CQVpNLFdBQVcsSUFEZCxtREFBTSxFQUNXLFdBQVcsRUFBQztvQkFDMUIsWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxZQUFhLENBQUM7b0JBRS9GLElBQVcsV0FBVzt3QkFDcEIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQzdDLENBQUM7b0JBRUQsMEVBQTBFO29CQUMxRSw0REFBNEQ7b0JBRTVE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QixDQUFDLFdBQW1CO0lBQzlDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksOEJBQXVCLENBQUMsSUFBQSxzQkFBRyxFQUFBLDBCQUEwQixFQUFFLG9FQUFvRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3SixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsV0FBbUI7SUFDOUMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSw4QkFBdUIsQ0FBQyxJQUFBLHNCQUFHLEVBQUEsMEJBQTBCLEVBQUUsOERBQThELFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuRGF0YWJhc2UsIHR5cGUgRGF0YWJhc2VSZWZlcmVuY2UsIHR5cGUgSURhdGFiYXNlUmVmIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEFybkZvcm1hdCwgTGF6eSwgTmFtZXMsIFJlbW92YWxQb2xpY3ksIFJlc291cmNlLCBTdGFjaywgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGxpdCwgbWVtb2l6ZWRHZXR0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElDYXRhbG9nIH0gZnJvbSAnLi9jYXRhbG9nJztcbmltcG9ydCB7IENhdGFsb2cgfSBmcm9tICcuL2NhdGFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhYmFzZSBleHRlbmRzIElSZXNvdXJjZSwgSURhdGFiYXNlUmVmIHtcblxuICAvKipcbiAgICogVGhlIGNhdGFsb2cgdGhpcyBkYXRhYmFzZSBiZWxvbmdzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZzogSUNhdGFsb2c7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGdlbmVyYXRlZCBieSBDREsuXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgZGF0YWJhc2UgKGZvciBleGFtcGxlLCBhbiBIREZTIHBhdGgpLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQuIFRoaXMgZmllbGQgaXMgb3B0aW9uYWwgaW4gQVdTOjpHbHVlOjpEYXRhYmFzZSBEYXRhYmFzZUlucHV0XG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZ2x1ZS1kYXRhYmFzZS1kYXRhYmFzZWlucHV0Lmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uVXJpPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkYXRhYmFzZSBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXRhbG9nIGluIHdoaWNoIHRoZSBkYXRhYmFzZSB3aWxsIGJlIHBsYWNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQsIGFjY291bnQtd2lkZSBjYXRhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZz86IElDYXRhbG9nO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgdG8gYXBwbHkgd2hlbiB0aGUgZGF0YWJhc2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAgICpcbiAgICogQSBkYXRhYmFzZSBpcyBhIGNvbnRhaW5lciBmb3IgdGFibGVzIGFuZCB0aGVpciBtZXRhZGF0YSwgc28gaXQgaXMgcmV0YWluZWRcbiAgICogYnkgZGVmYXVsdCB0byBhdm9pZCBhY2NpZGVudGFsIGRhdGEgbG9zcyB3aGVuIGl0IGlzIHJlbW92ZWQgZnJvbSBhIHN0YWNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBHbHVlIGRhdGFiYXNlLlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElEYXRhYmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWdsdWUtYWxwaGEuRGF0YWJhc2UnO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURhdGFiYXNlQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGRhdGFiYXNlQXJuOiBzdHJpbmcpOiBJRGF0YWJhc2Uge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJRGF0YWJhc2Uge1xuICAgICAgcHVibGljIGRhdGFiYXNlQXJuID0gZGF0YWJhc2VBcm47XG4gICAgICBwdWJsaWMgZGF0YWJhc2VOYW1lID0gc3RhY2suc3BsaXRBcm4oZGF0YWJhc2VBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBwdWJsaWMgZ2V0IGRhdGFiYXNlUmVmKCk6IERhdGFiYXNlUmVmZXJlbmNlIHtcbiAgICAgICAgcmV0dXJuIHsgZGF0YWJhc2VOYW1lOiB0aGlzLmRhdGFiYXNlTmFtZSB9O1xuICAgICAgfVxuXG4gICAgICAvLyBNYXRlcmlhbGl6ZSB0aGUgYWNjb3VudCBjYXRhbG9nIG9ubHkgb24gYWNjZXNzLCBzbyBpbXBvcnRpbmcgYSBkYXRhYmFzZVxuICAgICAgLy8gZG9lcyBub3QgcHJlLWVtcHQgQ2F0YWxvZy5lbmNyeXB0QWNjb3VudCgpIGZvciB0aGUgc3RhY2suXG4gICAgICBAbWVtb2l6ZWRHZXR0ZXJcbiAgICAgIHB1YmxpYyBnZXQgY2F0YWxvZygpOiBJQ2F0YWxvZyB7XG4gICAgICAgIHJldHVybiBDYXRhbG9nLmZvckFjY291bnQodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiBVUkkgb2YgdGhpcyBkYXRhYmFzZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2NhdGlvblVyaT86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRhbG9nPzogSUNhdGFsb2c7XG5cbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuRGF0YWJhc2U7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFiYXNlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7fSkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsaWRhdGVEZXNjcmlwdGlvbihwcm9wcy5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgbGV0IGRhdGFiYXNlSW5wdXQ6IENmbkRhdGFiYXNlLkRhdGFiYXNlSW5wdXRQcm9wZXJ0eSA9IHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgIH07XG5cbiAgICBpZiAocHJvcHMubG9jYXRpb25VcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsaWRhdGVMb2NhdGlvblVyaShwcm9wcy5sb2NhdGlvblVyaSk7XG4gICAgICB0aGlzLmxvY2F0aW9uVXJpID0gcHJvcHMubG9jYXRpb25Vcmk7XG4gICAgICBkYXRhYmFzZUlucHV0ID0ge1xuICAgICAgICBsb2NhdGlvblVyaTogdGhpcy5sb2NhdGlvblVyaSxcbiAgICAgICAgLi4uZGF0YWJhc2VJbnB1dCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5fY2F0YWxvZyA9IHByb3BzLmNhdGFsb2c7XG5cbiAgICAvLyBXaGVuIHRoZSBkYXRhYmFzZSB1c2VzIHRoZSBpbXBsaWNpdCBhY2NvdW50IGNhdGFsb2csIGl0cyBpZCBpcyB0aGVcbiAgICAvLyBhY2NvdW50IGlkLiBSZWZlcmVuY2UgdGhhdCBkaXJlY3RseSByYXRoZXIgdGhhbiBtYXRlcmlhbGl6aW5nIHRoZSBhY2NvdW50XG4gICAgLy8gY2F0YWxvZyBzaW5nbGV0b24sIHNvIGEgcGxhaW4gYG5ldyBEYXRhYmFzZSgpYCBkb2VzIG5vdCBwcmUtZW1wdFxuICAgIC8vIGBDYXRhbG9nLmVuY3J5cHRBY2NvdW50KClgIGZvciB0aGUgc3RhY2suXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5EYXRhYmFzZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjYXRhbG9nSWQ6IHRoaXMuX2NhdGFsb2c/LmNhdGFsb2dJZCA/PyBTdGFjay5vZih0aGlzKS5hY2NvdW50LFxuICAgICAgZGF0YWJhc2VJbnB1dCxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3ksIHtcbiAgICAgIGRlZmF1bHQ6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjYXRhbG9nIHRoaXMgZGF0YWJhc2UgYmVsb25ncyB0by5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdGhlIGltcGxpY2l0LCBhY2NvdW50LXdpZGUgY2F0YWxvZywgbWF0ZXJpYWxpemVkIG9uIGZpcnN0XG4gICAqIGFjY2Vzcy5cbiAgICovXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGNhdGFsb2coKTogSUNhdGFsb2cge1xuICAgIHJldHVybiB0aGlzLl9jYXRhbG9nID8/IENhdGFsb2cuZm9yQWNjb3VudCh0aGlzKTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGRhdGFiYXNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLnJlZik7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBkYXRhYmFzZUFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmZvcm1hdEFybih7XG4gICAgICBzZXJ2aWNlOiAnZ2x1ZScsXG4gICAgICByZXNvdXJjZTogJ2RhdGFiYXNlJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5kYXRhYmFzZU5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFiYXNlUmVmKCk6IERhdGFiYXNlUmVmZXJlbmNlIHtcbiAgICByZXR1cm4geyBkYXRhYmFzZU5hbWU6IHRoaXMuZGF0YWJhc2VOYW1lIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVMb2NhdGlvblVyaShsb2NhdGlvblVyaTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChsb2NhdGlvblVyaS5sZW5ndGggPCAxIHx8IGxvY2F0aW9uVXJpLmxlbmd0aCA+IDEwMjQpIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWRMb2NhdGlvblVyaUxlbmd0aGAsIGBsb2NhdGlvblVyaSBsZW5ndGggbXVzdCBiZSAoaW5jbHVzaXZlbHkpIGJldHdlZW4gMSBhbmQgMTAyNCwgZ290ICR7bG9jYXRpb25VcmkubGVuZ3RofWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoID4gMjA0OCkge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZERlc2NyaXB0aW9uTGVuZ3RoYCwgYGRlc2NyaXB0aW9uIGxlbmd0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyMDQ4LCBnb3QgJHtkZXNjcmlwdGlvbi5sZW5ndGh9YCk7XG4gIH1cbn1cbiJdfQ==
@@ -77,7 +77,7 @@ let ExternalTable = (() => {
77
77
  ExternalTable = _classThis = _classDescriptor.value;
78
78
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
79
79
  }
80
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ExternalTable", version: "2.267.0-alpha.0" };
80
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.ExternalTable", version: "2.269.0-alpha.0" };
81
81
  /** Uniquely identifies this class. */
82
82
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.ExternalTable';
83
83
  /**
package/lib/jobs/job.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
2
2
  import * as events from 'aws-cdk-lib/aws-events';
3
+ import type { IJobRef, JobReference } from 'aws-cdk-lib/aws-glue';
3
4
  import * as iam from 'aws-cdk-lib/aws-iam';
4
5
  import type * as logs from 'aws-cdk-lib/aws-logs';
5
6
  import * as cdk from 'aws-cdk-lib/core';
@@ -12,7 +13,7 @@ import type { ISecurityConfiguration } from '../security-configuration';
12
13
  /**
13
14
  * Interface representing a new or an imported Glue Job
14
15
  */
15
- export interface IJob extends cdk.IResource, iam.IGrantable {
16
+ export interface IJob extends cdk.IResource, iam.IGrantable, IJobRef {
16
17
  /**
17
18
  * The name of the job.
18
19
  * @attribute
@@ -119,6 +120,10 @@ export declare abstract class JobBase extends cdk.Resource implements IJob {
119
120
  abstract readonly jobArn: string;
120
121
  abstract readonly jobName: string;
121
122
  abstract readonly grantPrincipal: iam.IPrincipal;
123
+ /**
124
+ * A reference to this Job resource, for use with the generated L1 ref interface.
125
+ */
126
+ get jobRef(): JobReference;
122
127
  /**
123
128
  * Create a CloudWatch Event Rule for this Glue Job when it's in a given state
124
129
  *
@@ -268,7 +273,16 @@ export interface JobProps {
268
273
  * The default arguments for every run of this Glue job,
269
274
  * specified as name-value pairs.
270
275
  *
271
- * These are emitted verbatim into the CloudFormation template, so avoid
276
+ * This map is the escape hatch for Glue job arguments that this construct does not model. It
277
+ * MUST NOT be used to set arguments that already have a dedicated prop — configure those through
278
+ * the corresponding prop instead (`continuousLogging`, `enableMetrics`,
279
+ * `enableObservabilityMetrics`, `sparkUI`, `className`, `extraJars`, `extraJarsFirst`,
280
+ * `extraPythonFiles`, `extraFiles`). Passing a construct-managed argument (e.g.
281
+ * `--enable-continuous-cloudwatch-log`, `--enable-metrics`, `--enable-spark-ui`,
282
+ * `--job-language`) or a Glue-reserved argument (`--debug`, `--mode`, `--JOB_NAME`, `--endpoint`)
283
+ * here throws at synthesis time, so there is exactly one way to express each intent.
284
+ *
285
+ * Also note that these are emitted verbatim into the CloudFormation template, so avoid
272
286
  * placing secrets here in plaintext. Pass secrets to the job at runtime
273
287
  * through AWS Secrets Manager instead. A synthesis-time warning is emitted
274
288
  * when an argument key looks like a credential and holds a plaintext literal.
@@ -324,7 +338,7 @@ export interface JobProps {
324
338
  * Glue Version
325
339
  * The version of Glue to use to execute this job
326
340
  *
327
- * @default 3.0 for ETL
341
+ * @default - determined by the job type: 4.0 for ETL and Streaming, 5.0 for Flex, 3.0 for Python Shell
328
342
  */
329
343
  readonly glueVersion?: GlueVersion;
330
344
  /**
@@ -351,26 +365,93 @@ export declare abstract class Job extends JobBase {
351
365
  * @param attrs Attributes for the Glue Job we want to import
352
366
  */
353
367
  static fromJobAttributes(scope: constructs.Construct, id: string, attrs: JobAttributes): IJob;
368
+ /**
369
+ * Argument keys that Glue reserves for its own use and that a caller must never set through
370
+ * `defaultArguments`. Unlike construct-managed arguments (which are derived from what each job
371
+ * class emits), these are owned by the Glue service itself and are reserved for every job type.
372
+ *
373
+ * @see https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html
374
+ */
375
+ private static readonly GLUE_RESERVED_ARGUMENTS;
354
376
  /**
355
377
  * The IAM role Glue assumes to run this job.
356
378
  */
357
379
  abstract readonly role: iam.IRole;
358
380
  /**
359
- * Check no usage of reserved arguments.
381
+ * The construct-managed job arguments that are actually emitted for the current configuration,
382
+ * accumulated via {@link setManagedArgument}. Passed through to `CfnJob.defaultArguments` after
383
+ * being merged with the user-supplied `defaultArguments` by {@link mergeDefaultArguments}.
384
+ */
385
+ private readonly _managedArguments;
386
+ /**
387
+ * Every argument key this construct manages, accumulated via {@link setManagedArgument} — whether
388
+ * or not the current configuration emits a value for it. This is the reserved set that a
389
+ * user-supplied `defaultArguments` must not collide with. Registering a key even when its value
390
+ * is `undefined` (feature disabled or unset) is what keeps `defaultArguments` from silently
391
+ * re-enabling it.
392
+ */
393
+ private readonly _managedArgumentKeys;
394
+ /**
395
+ * Declare `key` as construct-managed and, when `value` is defined, emit it into the job's
396
+ * arguments.
360
397
  *
398
+ * This is the single sink for every argument a job construct derives from its typed props (or
399
+ * from the job class itself). Call it once per managed key, passing `undefined` as the value when
400
+ * the corresponding feature is turned off or unset — the key is still reserved from
401
+ * `defaultArguments` either way, so a disabled feature cannot be re-enabled through the escape
402
+ * hatch. There is deliberately no other way for a subclass to emit a managed argument, so the
403
+ * reserved set can never drift from what is emitted.
404
+ *
405
+ * @param key the Glue argument key, e.g. `--enable-metrics`
406
+ * @param value the value to emit, or `undefined` to reserve the key without emitting it
407
+ */
408
+ protected setManagedArgument(key: string, value?: string): void;
409
+ /**
410
+ * Merge the customer-supplied `defaultArguments` with the arguments this construct manages.
411
+ *
412
+ * The construct owns every argument it emits — whether the value comes from a dedicated typed
413
+ * prop (e.g. `continuousLogging`, `enableMetrics`, `sparkUI`) or from the job class itself
414
+ * (e.g. `--job-language`). Those arguments, plus the arguments Glue reserves for its own use,
415
+ * MUST be configured through their dedicated props rather than the untyped `defaultArguments`
416
+ * map, so there is exactly one way to express each intent. Passing such a key through
417
+ * `defaultArguments` therefore throws instead of silently winning or being silently dropped.
418
+ *
419
+ * A managed key whose supplied value is identical to the construct's value is not contradictory,
420
+ * so it is allowed rather than rejected (auto-correcting config is preferred over errors).
421
+ * Glue-reserved keys are never emitted by the construct, so there is no value to reconcile and
422
+ * they always throw.
423
+ *
424
+ * The reserved set is `_managedArgumentKeys` — every key the construct declared through
425
+ * {@link setManagedArgument}, whether or not a value was emitted for it. It is deliberately NOT
426
+ * derived from the keys that carry a value: a typed prop that turns a feature *off* (e.g.
427
+ * `enableMetrics: false`) emits no value but still reserves its key, so `defaultArguments` cannot
428
+ * silently re-enable it.
429
+ *
430
+ * Conflict detection relies on string equality of the argument keys, which cannot see through
431
+ * unresolved tokens (e.g. a key produced by `CfnJson` that only resolves at deploy time). If a
432
+ * key is a token, the check is skipped for that key and a synthesis-time warning is emitted, so
433
+ * the (rare) case where a token key resolves to a managed argument at deploy time — in which the
434
+ * construct-managed value would silently take precedence — is surfaced rather than hidden.
435
+ *
436
+ * @param defaultArguments the caller-supplied escape-hatch arguments, if any
361
437
  * @see https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html
362
438
  */
363
- protected checkNoReservedArgs(defaultArguments?: {
439
+ protected mergeDefaultArguments(defaultArguments?: {
364
440
  [key: string]: string;
365
441
  }): {
366
442
  [key: string]: string;
367
- } | undefined;
443
+ };
368
444
  /**
369
- * Setup Continuous Logging Properties
370
- * @param role The IAM role to use for continuous logging
445
+ * Register (and, when enabled, emit) the continuous-logging arguments this job manages.
446
+ *
447
+ * All five continuous-logging keys are reserved on every job type regardless of configuration:
448
+ * they are always registered through {@link setManagedArgument}, and carry a value only when
449
+ * logging is enabled. This keeps `defaultArguments` from re-enabling logging a user turned off.
450
+ *
451
+ * @param role The IAM role to grant write access to a custom log group, if one is provided
371
452
  * @param props The properties for continuous logging configuration
372
- * @returns String containing the args for the continuous logging command
453
+ * @param securityConfiguration The security configuration attached to the job, if any
373
454
  */
374
- protected setupContinuousLogging(role: iam.IRole, props: ContinuousLoggingProps | undefined): any;
455
+ protected setupContinuousLogging(role: iam.IRole, props: ContinuousLoggingProps | undefined, securityConfiguration?: ISecurityConfiguration): void;
375
456
  protected codeS3ObjectUrl(code: Code): string;
376
457
  }