@fgv/ts-utils 1.5.2 → 1.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validation/validators.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,MAAM,kCAAwB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,MAAM,kCAAwB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,OAAO,2BAAyB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,EAAE,EACxB,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,EAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,GACjE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAExB"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validation/validators.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,MAAM,kCAAwB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,MAAM,kCAAwB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,OAAO,2BAAyB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAClC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,EAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,GACjE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAExB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EACzB,eAAe,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EACjC,MAAM,CAAC,EAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,iBAAiB,CAAC,GACzE,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAEvB"}
@@ -21,7 +21,8 @@
21
21
  * SOFTWARE.
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.object = exports.boolean = exports.number = exports.string = void 0;
24
+ exports.arrayOf = exports.object = exports.boolean = exports.number = exports.string = void 0;
25
+ const array_1 = require("./array");
25
26
  const object_1 = require("./object");
26
27
  const boolean_1 = require("./boolean");
27
28
  const number_1 = require("./number");
@@ -56,4 +57,16 @@ function object(fields, params) {
56
57
  return new object_1.ObjectValidator({ fields, ...(params !== null && params !== void 0 ? params : {}) });
57
58
  }
58
59
  exports.object = object;
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgscUNBQThGO0FBRTlGLHVDQUE2QztBQUM3QyxxQ0FBMkM7QUFDM0MscUNBQTJDO0FBRTNDOzs7R0FHRztBQUNVLFFBQUEsTUFBTSxHQUFHLElBQUksd0JBQWUsRUFBRSxDQUFDO0FBRTVDOzs7R0FHRztBQUNVLFFBQUEsTUFBTSxHQUFHLElBQUksd0JBQWUsRUFBRSxDQUFDO0FBRTVDOzs7R0FHRztBQUNVLFFBQUEsT0FBTyxHQUFHLElBQUksMEJBQWdCLEVBQUUsQ0FBQztBQUU5Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUNsQixNQUE4QixFQUM5QixNQUFnRTtJQUVoRSxPQUFPLElBQUksd0JBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFMRCx3QkFLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBGaWVsZFZhbGlkYXRvcnMsIE9iamVjdFZhbGlkYXRvciwgT2JqZWN0VmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL29iamVjdCc7XG5cbmltcG9ydCB7IEJvb2xlYW5WYWxpZGF0b3IgfSBmcm9tICcuL2Jvb2xlYW4nO1xuaW1wb3J0IHsgTnVtYmVyVmFsaWRhdG9yIH0gZnJvbSAnLi9udW1iZXInO1xuaW1wb3J0IHsgU3RyaW5nVmFsaWRhdG9yIH0gZnJvbSAnLi9zdHJpbmcnO1xuXG4vKipcbiAqIEEge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5TdHJpbmdWYWxpZGF0b3IgfCBTdHJpbmdWYWxpZGF0b3J9IHdoaWNoIHZhbGlkYXRlcyBhIHN0cmluZyBpbiBwbGFjZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZyA9IG5ldyBTdHJpbmdWYWxpZGF0b3IoKTtcblxuLyoqXG4gKiBBIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuTnVtYmVyVmFsaWRhdG9yIHwgTnVtYmVyVmFsaWRhdG9yfSB3aGljaCB2YWxpZGF0ZXMgYSBudW1iZXIgaW4gcGxhY2UuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBudW1iZXIgPSBuZXcgTnVtYmVyVmFsaWRhdG9yKCk7XG5cbi8qKlxuICogQSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkJvb2xlYW5WYWxpZGF0b3IgfCBCb29sZWFuVmFsaWRhdG9yfSB3aGljaCB2YWxpZGF0ZXMgYSBib29sZWFuIGluIHBsYWNlLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYm9vbGVhbiA9IG5ldyBCb29sZWFuVmFsaWRhdG9yKCk7XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yIHwgT2JqZWN0VmFsaWRhdG9yfSB3aGljaCB2YWxpZGF0ZXNcbiAqIGFuIG9iamVjdCBpbiBwbGFjZS5cbiAqIEBwYXJhbSBmaWVsZHMgLSBBIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuRmllbGRWYWxpZGF0b3JzIHwgZmllbGQgdmFsaWRhdG9yIGRlZmluaXRpb259XG4gKiBkZXNjcmliaW5nIHRoZSB2YWxpZGF0aW9ucyB0byBiZSBhcHBsaWVkLlxuICogQHBhcmFtIHBhcmFtcyAtIE9wdGlvbmFsIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfCBwYXJhbWV0ZXJzfVxuICogdG8gcmVmaW5lIHRoZSBiZWhhdmlvciBvZiB0aGUgcmVzdWx0aW5nIHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IHZhbGlkYXRvcn0uXG4gKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBWYWxpZGF0b3J9IHdoaWNoIHZhbGlkYXRlcyB0aGUgZGVzaXJlZFxuICogb2JqZWN0IGluIHBsYWNlLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0PFQsIFRDPihcbiAgICBmaWVsZHM6IEZpZWxkVmFsaWRhdG9yczxULCBUQz4sXG4gICAgcGFyYW1zPzogT21pdDxPYmplY3RWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxULCBUQz4sICdmaWVsZHMnPixcbik6IE9iamVjdFZhbGlkYXRvcjxULCBUQz4ge1xuICAgIHJldHVybiBuZXcgT2JqZWN0VmFsaWRhdG9yKHsgZmllbGRzLCAuLi4ocGFyYW1zID8/IHt9KSB9KTtcbn1cbiJdfQ==
60
+ /**
61
+ * Helper function to create a {@link Validation.Classes.ArrayValidator | ArrayValidator} which
62
+ * validates an array in place.
63
+ * @param validateElement - A {@link Validation.Validator | validator} which validates each element.
64
+ * @returns A new {@link Validation.Classes.ArrayValidator | ArrayValidator } which validates the desired
65
+ * array in place.
66
+ * @public
67
+ */
68
+ function arrayOf(validateElement, params) {
69
+ return new array_1.ArrayValidator({ validateElement, ...(params !== null && params !== void 0 ? params : {}) });
70
+ }
71
+ exports.arrayOf = arrayOf;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsbUNBQTBFO0FBQzFFLHFDQUE4RjtBQUU5Rix1Q0FBNkM7QUFDN0MscUNBQTJDO0FBQzNDLHFDQUEyQztBQUczQzs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRyxJQUFJLHdCQUFlLEVBQUUsQ0FBQztBQUU1Qzs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRyxJQUFJLHdCQUFlLEVBQUUsQ0FBQztBQUU1Qzs7O0dBR0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxJQUFJLDBCQUFnQixFQUFFLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLE1BQU0sQ0FDbEIsTUFBOEIsRUFDOUIsTUFBZ0U7SUFFaEUsT0FBTyxJQUFJLHdCQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBTEQsd0JBS0M7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsT0FBTyxDQUNuQixlQUFpQyxFQUNqQyxNQUF3RTtJQUV4RSxPQUFPLElBQUksc0JBQWMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFMRCwwQkFLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBBcnJheVZhbGlkYXRvciwgQXJyYXlWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vYXJyYXknO1xuaW1wb3J0IHsgRmllbGRWYWxpZGF0b3JzLCBPYmplY3RWYWxpZGF0b3IsIE9iamVjdFZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBCb29sZWFuVmFsaWRhdG9yIH0gZnJvbSAnLi9ib29sZWFuJztcbmltcG9ydCB7IE51bWJlclZhbGlkYXRvciB9IGZyb20gJy4vbnVtYmVyJztcbmltcG9ydCB7IFN0cmluZ1ZhbGlkYXRvciB9IGZyb20gJy4vc3RyaW5nJztcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9yJztcblxuLyoqXG4gKiBBIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuU3RyaW5nVmFsaWRhdG9yIHwgU3RyaW5nVmFsaWRhdG9yfSB3aGljaCB2YWxpZGF0ZXMgYSBzdHJpbmcgaW4gcGxhY2UuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSBuZXcgU3RyaW5nVmFsaWRhdG9yKCk7XG5cbi8qKlxuICogQSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLk51bWJlclZhbGlkYXRvciB8IE51bWJlclZhbGlkYXRvcn0gd2hpY2ggdmFsaWRhdGVzIGEgbnVtYmVyIGluIHBsYWNlLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbnVtYmVyID0gbmV3IE51bWJlclZhbGlkYXRvcigpO1xuXG4vKipcbiAqIEEge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5Cb29sZWFuVmFsaWRhdG9yIHwgQm9vbGVhblZhbGlkYXRvcn0gd2hpY2ggdmFsaWRhdGVzIGEgYm9vbGVhbiBpbiBwbGFjZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGJvb2xlYW4gPSBuZXcgQm9vbGVhblZhbGlkYXRvcigpO1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLk9iamVjdFZhbGlkYXRvciB8IE9iamVjdFZhbGlkYXRvcn0gd2hpY2ggdmFsaWRhdGVzXG4gKiBhbiBvYmplY3QgaW4gcGxhY2UuXG4gKiBAcGFyYW0gZmllbGRzIC0gQSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkZpZWxkVmFsaWRhdG9ycyB8IGZpZWxkIHZhbGlkYXRvciBkZWZpbml0aW9ufVxuICogZGVzY3JpYmluZyB0aGUgdmFsaWRhdGlvbnMgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLk9iamVjdFZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zIHwgcGFyYW1ldGVyc31cbiAqIHRvIHJlZmluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHJlc3VsdGluZyB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCB2YWxpZGF0b3J9LlxuICogQHJldHVybnMgQSBuZXcge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgVmFsaWRhdG9yfSB3aGljaCB2YWxpZGF0ZXMgdGhlIGRlc2lyZWRcbiAqIG9iamVjdCBpbiBwbGFjZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdDxULCBUQyA9IHVua25vd24+KFxuICAgIGZpZWxkczogRmllbGRWYWxpZGF0b3JzPFQsIFRDPixcbiAgICBwYXJhbXM/OiBPbWl0PE9iamVjdFZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPiwgJ2ZpZWxkcyc+LFxuKTogT2JqZWN0VmFsaWRhdG9yPFQsIFRDPiB7XG4gICAgcmV0dXJuIG5ldyBPYmplY3RWYWxpZGF0b3IoeyBmaWVsZHMsIC4uLihwYXJhbXMgPz8ge30pIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkFycmF5VmFsaWRhdG9yIHwgQXJyYXlWYWxpZGF0b3J9IHdoaWNoXG4gKiB2YWxpZGF0ZXMgYW4gYXJyYXkgaW4gcGxhY2UuXG4gKiBAcGFyYW0gdmFsaWRhdGVFbGVtZW50IC0gQSB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCB2YWxpZGF0b3J9IHdoaWNoIHZhbGlkYXRlcyBlYWNoIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkFycmF5VmFsaWRhdG9yIHwgQXJyYXlWYWxpZGF0b3IgfSB3aGljaCB2YWxpZGF0ZXMgdGhlIGRlc2lyZWRcbiAqIGFycmF5IGluIHBsYWNlLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlPZjxULCBUQz4oXG4gICAgdmFsaWRhdGVFbGVtZW50OiBWYWxpZGF0b3I8VCwgVEM+LFxuICAgIHBhcmFtcz86IE9taXQ8QXJyYXlWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxULCBUQz4sICd2YWxpZGF0ZUVsZW1lbnQnPlxuKTogQXJyYXlWYWxpZGF0b3I8VCwgVEM+IHtcbiAgICByZXR1cm4gbmV3IEFycmF5VmFsaWRhdG9yKHsgdmFsaWRhdGVFbGVtZW50LCAuLi4ocGFyYW1zID8/IHt9KSB9KTtcbn1cbiJdfQ==