@decaf-ts/for-angular 0.0.5 → 0.0.6

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 (24) hide show
  1. package/dist/lib/components/component-renderer/component-renderer.component.d.ts +3 -3
  2. package/dist/lib/components/crud-field/crud-field.component.d.ts +1 -3
  3. package/dist/lib/components/crud-form/crud-form.component.d.ts +1 -1
  4. package/dist/lib/components/model-renderer/model-renderer.component.d.ts +3 -4
  5. package/dist/lib/engine/NgxCrudFormField.d.ts +3 -7
  6. package/dist/lib/engine/NgxRenderingEngine.d.ts +2 -3
  7. package/dist/lib/engine/NgxRenderingEngine2.d.ts +5 -6
  8. package/dist/lib/engine/ValidatorFactory.d.ts +2 -2
  9. package/dist/lib/engine/types.d.ts +4 -3
  10. package/dist/lib/esm2022/components/component-renderer/component-renderer.component.mjs +6 -3
  11. package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +20 -11
  12. package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +1 -2
  13. package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +8 -7
  14. package/dist/lib/esm2022/engine/NgxCrudFormField.mjs +21 -15
  15. package/dist/lib/esm2022/engine/NgxFormService.mjs +1 -1
  16. package/dist/lib/esm2022/engine/NgxRenderingEngine.mjs +2 -4
  17. package/dist/lib/esm2022/engine/NgxRenderingEngine2.mjs +5 -6
  18. package/dist/lib/esm2022/engine/ValidatorFactory.mjs +4 -4
  19. package/dist/lib/esm2022/engine/types.mjs +1 -1
  20. package/dist/lib/esm2022/for-angular.module.mjs +1 -1
  21. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs +59 -45
  22. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
  23. package/dist/lib/for-angular.module.d.ts +2 -1
  24. package/package.json +3 -5
@@ -70,7 +70,7 @@ export class ValidatorFactory {
70
70
  * Enables Validators handling method to access parent and child properties using consistent dot-notation in Angular forms.
71
71
  *
72
72
  * @param {AbstractControl} control - The control to wrap in a proxy.
73
- * @returns {PathProxy<any>} A proxy object exposing form values and enabling recursive parent access.
73
+ * @returns {PathProxy<unknown>} A proxy object exposing form values and enabling recursive parent access.
74
74
  */
75
75
  static createProxy(control) {
76
76
  return PathProxyEngine.create(control, {
@@ -89,14 +89,14 @@ export class ValidatorFactory {
89
89
  // const control = value.controls[prop];
90
90
  // return control instanceof FormControl ? control.value : control;
91
91
  // }
92
- return target[prop];
92
+ return target?.[prop];
93
93
  },
94
94
  getParent: function (target) {
95
- return target._parent;
95
+ return target?.['_parent'];
96
96
  },
97
97
  ignoreUndefined: true,
98
98
  ignoreNull: true,
99
99
  });
100
100
  }
101
101
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL1ZhbGlkYXRvckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDZixVQUFVLEVBQ1YsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFtQixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYyxFQUFFLElBQVksRUFHekUsRUFBRTtJQUNGLE1BQU0saUJBQWlCLEdBQXdCO1FBQzdDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7UUFDdEUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztRQUM5QyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO0tBQzNDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxHQUFHLEtBQUssY0FBYyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQTRCO1FBQ3JDLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSztRQUNyQixpRUFBaUU7UUFDakUsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDMUUsQ0FBQztJQUVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQTJCLEVBQUUsR0FBVztRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sV0FBVyxHQUFnQixDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDckYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDbEMsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQTRCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBYyxDQUFDO1lBRTVELHFEQUFxRDtZQUNyRCxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssV0FBVztnQkFDaEQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDOUYsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVkLDZEQUE2RDtZQUM3RCxJQUFJLEtBQUssR0FBbUIsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQVMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxNQUFNLE1BQU0sR0FBYyxPQUFPLFlBQVksU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLE9BQStCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlILEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFtQixDQUFDO1lBQ2pFLENBQUM7WUFFRCxJQUFJLElBQXdCLENBQUM7WUFDN0IsSUFBSSxDQUFDO2dCQUNILElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksR0FBRyxHQUFHLEdBQUcsa0NBQWtDLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO1lBQ3pDLEtBQUssRUFBRSxHQUFHLEdBQUcsV0FBVztTQUN6QixDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBd0I7UUFDekMsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNyQyxRQUFRLENBQUMsTUFBVyxFQUFFLElBQVk7Z0JBQ2hDLElBQUksTUFBTSxZQUFZLFdBQVc7b0JBQy9CLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFFdEIsSUFBSSxNQUFNLFlBQVksU0FBUyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sT0FBTyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNsRSxDQUFDO2dCQUVELDhCQUE4QjtnQkFDOUIsb0NBQW9DO2dCQUNwQyx3QkFBd0I7Z0JBQ3hCLEVBQUU7Z0JBQ0Ysb0NBQW9DO2dCQUNwQywwQ0FBMEM7Z0JBQzFDLHFFQUFxRTtnQkFDckUsSUFBSTtnQkFFSixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsU0FBUyxFQUFFLFVBQVMsTUFBVztnQkFDN0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3hCLENBQUM7WUFDRCxlQUFlLEVBQUUsSUFBSTtZQUNyQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvblZhbGlkYXRpb25LZXlzLFxuICBERUZBVUxUX1BBVFRFUk5TLFxuICBQYXRoUHJveHksXG4gIFBhdGhQcm94eUVuZ2luZSxcbiAgVmFsaWRhdGlvbixcbiAgVmFsaWRhdGlvbktleXMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7IEZpZWxkUHJvcGVydGllcywgSFRNTDVJbnB1dFR5cGVzLCBwYXJzZVZhbHVlQnlUeXBlIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgQW5ndWxhckVuZ2luZUtleXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICpcbiAqIFJlc29sdmVzIHRoZSBjb3JyZWN0IHZhbGlkYXRvciBrZXkgYW5kIGl0cyBhc3NvY2lhdGVkIHByb3BlcnRpZXMgYmFzZWQgb24gdGhlIGlucHV0IGtleSBhbmQgdHlwZS5cbiAqXG4gKiBXaGVuIHRoZSB2YWxpZGF0aW9uIGtleSBpcyBUWVBFLCBpdCdzIG5lY2Vzc2FyeSB0byByZXNvbHZlIHRoZSBhY3R1YWwgdmFsaWRhdG9yIGJhc2VkIG9uIHRoZVxuICogZmllbGQncyB0eXBlIChlLmcuLCAncGFzc3dvcmQnLCAnZW1haWwnLCAndXJsJykgaW5zdGVhZCBvZiB1c2luZyB0aGUgZ2VuZXJpYyBnZXRWYWxpZGF0b3IoXCJ0eXBlXCIpIGxvZ2ljLlxuICogVGhpcyBhbGxvd3MgZGlyZWN0bHkgaW52b2tpbmcgc3BlY2lmaWMgdmFsaWRhdG9ycyBsaWtlIGdldFZhbGlkYXRvcigncGFzc3dvcmQnKSwgZW5zdXJpbmcgdGhlIGNvcnJlY3RcbiAqIGJlaGF2aW9yIGZvciB0eXBlLWJhc2VkIHZhbGlkYXRpb24uXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSAoZS5nLiwgJ3R5cGUnLCAncmVxdWlyZWQnLCBldGMuKS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0aGF0IG5lZWRzIGJlIHByb3ZpZGVkIHRvIHRoZSB2YWxpZGF0b3IuXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSBmaWVsZCdzIGRlY2xhcmVkIHR5cGUuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgdmFsaWRhdG9yIGtleSBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgcHJvcHMuXG4gKi9cbmNvbnN0IHJlc29sdmVWYWxpZGF0b3JLZXlQcm9wcyA9IChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHR5cGU6IHN0cmluZyk6IHtcbiAgdmFsaWRhdG9yS2V5OiBzdHJpbmc7XG4gIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufSA9PiB7XG4gIGNvbnN0IHBhdHRlcm5WYWxpZGF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgIFtWYWxpZGF0aW9uS2V5cy5QQVNTV09SRF06IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gICAgW1ZhbGlkYXRpb25LZXlzLkVNQUlMXTogREVGQVVMVF9QQVRURVJOUy5FTUFJTCxcbiAgICBbVmFsaWRhdGlvbktleXMuVVJMXTogREVGQVVMVF9QQVRURVJOUy5VUkwsXG4gIH07XG5cbiAgY29uc3QgaXNUeXBlQmFzZWQgPSBrZXkgPT09IFZhbGlkYXRpb25LZXlzLlRZUEUgJiYgT2JqZWN0LmtleXMocGF0dGVyblZhbGlkYXRvcnMpLmluY2x1ZGVzKHR5cGUpO1xuICBjb25zdCB2YWxpZGF0b3JLZXkgPSBpc1R5cGVCYXNlZCA/IHR5cGUgOiBrZXk7XG4gIGNvbnN0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBbdmFsaWRhdG9yS2V5XTogdmFsdWUsXG4gICAgLy8gRW1haWwsIFBhc3N3b3JkLCBhbmQgVVJMIGFyZSB2YWxpZGF0ZWQgdXNpbmcgdGhlIFwicGF0dGVyblwiIGtleVxuICAgIC4uLihpc1R5cGVCYXNlZCAmJiB7IFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXTogcGF0dGVyblZhbGlkYXRvcnNbdHlwZV0gfSksXG4gIH07XG5cbiAgcmV0dXJuIHsgdmFsaWRhdG9yS2V5LCBwcm9wcyB9O1xufTtcblxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yRmFjdG9yeSB7XG4gIHN0YXRpYyBzcGF3bihmaWVsZFByb3BzOiBGaWVsZFByb3BlcnRpZXMsIGtleTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGlmICghVmFsaWRhdGlvbi5rZXlzKCkuaW5jbHVkZXMoa2V5KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY3VzdG9tIHZhbGlkYXRpb24nKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckZuOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIHR5cGUgfSA9IGZpZWxkUHJvcHM7XG4gICAgICBjb25zdCB7IHZhbGlkYXRvcktleSwgcHJvcHMgfSA9IHJlc29sdmVWYWxpZGF0b3JLZXlQcm9wcyhrZXksIGZpZWxkUHJvcHNba2V5IGFzIGtleW9mIEZpZWxkUHJvcGVydGllc10sIHR5cGUpO1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gVmFsaWRhdGlvbi5nZXQodmFsaWRhdG9yS2V5KSBhcyBWYWxpZGF0b3I7XG5cbiAgICAgIC8vIHBhcnNlVmFsdWVCeVR5cGUgZG9lcyBub3Qgc3VwcG9ydCB1bmRlZmluZWQgdmFsdWVzXG4gICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHBhcnNlVmFsdWVCeVR5cGUodHlwZSwgdHlwZSA9PT0gSFRNTDVJbnB1dFR5cGVzLkNIRUNLQk9YID8gbmFtZSA6IGNvbnRyb2wudmFsdWUsIGZpZWxkUHJvcHMpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBDcmVhdGUgYSBwcm94eSB0byBlbmFibGUgYWNjZXNzIHRvIHBhcmVudCBhbmQgY2hpbGQgdmFsdWVzXG4gICAgICBsZXQgcHJveHk6IFBhdGhQcm94eTxhbnk+ID0gVmFsaWRhdG9yRmFjdG9yeS5jcmVhdGVQcm94eSh7fSBhcyBhbnkpO1xuICAgICAgaWYgKE9iamVjdC52YWx1ZXMoQ29tcGFyaXNvblZhbGlkYXRpb25LZXlzKS5pbmNsdWRlcyhrZXkgYXMgYW55KSkge1xuICAgICAgICBjb25zdCBwYXJlbnQ6IEZvcm1Hcm91cCA9IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgPyBjb250cm9sIDogKGNvbnRyb2wgYXMgUmVjb3JkPHN0cmluZywgYW55PilbQW5ndWxhckVuZ2luZUtleXMuUEFSRU5UXTtcbiAgICAgICAgcHJveHkgPSBWYWxpZGF0b3JGYWN0b3J5LmNyZWF0ZVByb3h5KHBhcmVudCkgYXMgUGF0aFByb3h5PGFueT47XG4gICAgICB9XG5cbiAgICAgIGxldCBlcnJzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBlcnJzID0gdmFsaWRhdG9yLmhhc0Vycm9ycyh2YWx1ZSwgcHJvcHMsIHByb3h5KTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgZXJycyA9IGAke2tleX0gdmFsaWRhdG9yIGZhaWxlZCB0byB2YWxpZGF0ZTogJHtlfWA7XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVycnMgPyB7IFt2YWxpZGF0b3JLZXldOiB0cnVlIH0gOiBudWxsO1xuICAgIH07XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsaWRhdG9yRm4sICduYW1lJywge1xuICAgICAgdmFsdWU6IGAke2tleX1WYWxpZGF0b3JgLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRvckZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBwcm94eSB3cmFwcGVyIGZvciBhbiBBbmd1bGFyIEFic3RyYWN0Q29udHJvbCB0byBhc3Npc3Qgd2l0aCBjdXN0b20gdmFsaWRhdGlvbiBsb2dpYy5cbiAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgYSBzdHJ1Y3R1cmVkIHByb3h5IG9iamVjdCB0aGF0IHNpbXVsYXRlcyBhIGhpZXJhcmNoaWNhbCB0cmVlIG9mIGZvcm0gdmFsdWVzLlxuICAgKiBFbmFibGVzIFZhbGlkYXRvcnMgaGFuZGxpbmcgbWV0aG9kIHRvIGFjY2VzcyBwYXJlbnQgYW5kIGNoaWxkIHByb3BlcnRpZXMgdXNpbmcgY29uc2lzdGVudCBkb3Qtbm90YXRpb24gaW4gQW5ndWxhciBmb3Jtcy5cbiAgICpcbiAgICogQHBhcmFtIHtBYnN0cmFjdENvbnRyb2x9IGNvbnRyb2wgLSBUaGUgY29udHJvbCB0byB3cmFwIGluIGEgcHJveHkuXG4gICAqIEByZXR1cm5zIHtQYXRoUHJveHk8YW55Pn0gQSBwcm94eSBvYmplY3QgZXhwb3NpbmcgZm9ybSB2YWx1ZXMgYW5kIGVuYWJsaW5nIHJlY3Vyc2l2ZSBwYXJlbnQgYWNjZXNzLlxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVByb3h5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFBhdGhQcm94eTxhbnk+IHtcbiAgICByZXR1cm4gUGF0aFByb3h5RW5naW5lLmNyZWF0ZShjb250cm9sLCB7XG4gICAgICBnZXRWYWx1ZSh0YXJnZXQ6IGFueSwgcHJvcDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKVxuICAgICAgICAgIHJldHVybiB0YXJnZXQudmFsdWU7XG5cbiAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0YXJnZXQuY29udHJvbHNbcHJvcF07XG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCA/IGNvbnRyb2wudmFsdWUgOiBjb250cm9sO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29uc3QgdmFsdWUgPSB0YXJnZXRbcHJvcF07XG4gICAgICAgIC8vIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZvcm1Db250cm9sKVxuICAgICAgICAvLyAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIC8vICAgY29uc3QgY29udHJvbCA9IHZhbHVlLmNvbnRyb2xzW3Byb3BdO1xuICAgICAgICAvLyAgIHJldHVybiBjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wgPyBjb250cm9sLnZhbHVlIDogY29udHJvbDtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgICB9LFxuICAgICAgZ2V0UGFyZW50OiBmdW5jdGlvbih0YXJnZXQ6IGFueSkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0Ll9wYXJlbnQ7XG4gICAgICB9LFxuICAgICAgaWdub3JlVW5kZWZpbmVkOiB0cnVlLFxuICAgICAgaWdub3JlTnVsbDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL1ZhbGlkYXRvckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDZixVQUFVLEVBQ1YsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFtQixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLaEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYyxFQUFFLElBQVksRUFHekUsRUFBRTtJQUNGLE1BQU0saUJBQWlCLEdBQTRCO1FBQ2pELENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7UUFDdEUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztRQUM5QyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO0tBQzNDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxHQUFHLEtBQUssY0FBYyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQTRCO1FBQ3JDLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSztRQUNyQixpRUFBaUU7UUFDakUsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDMUUsQ0FBQztJQUVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQTJCLEVBQUUsR0FBVztRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sV0FBVyxHQUFnQixDQUFDLE9BQXdCLEVBQTJCLEVBQUU7WUFDckYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDbEMsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQTRCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBYyxDQUFDO1lBRTVELHFEQUFxRDtZQUNyRCxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssV0FBVztnQkFDaEQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztnQkFDOUYsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVkLDZEQUE2RDtZQUM3RCxJQUFJLEtBQUssR0FBdUIsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQXFCLENBQUMsQ0FBQztZQUNwRixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBOEIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLE1BQU0sTUFBTSxHQUFjLE9BQU8sWUFBWSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsT0FBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkgsS0FBSyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQXVCLENBQUM7WUFDckUsQ0FBQztZQUVELElBQUksSUFBd0IsQ0FBQztZQUM3QixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLEdBQUcsR0FBRyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoRCxDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUU7WUFDekMsS0FBSyxFQUFFLEdBQUcsR0FBRyxXQUFXO1NBQ3pCLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUF3QjtRQUN6QyxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxNQUF1QixFQUFFLElBQVk7Z0JBQzVDLElBQUksTUFBTSxZQUFZLFdBQVc7b0JBQy9CLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFFdEIsSUFBSSxNQUFNLFlBQVksU0FBUyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sT0FBTyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNsRSxDQUFDO2dCQUVELDhCQUE4QjtnQkFDOUIsb0NBQW9DO2dCQUNwQyx3QkFBd0I7Z0JBQ3hCLEVBQUU7Z0JBQ0Ysb0NBQW9DO2dCQUNwQywwQ0FBMEM7Z0JBQzFDLHFFQUFxRTtnQkFDckUsSUFBSTtnQkFFSixPQUFRLE1BQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsU0FBUyxFQUFFLFVBQVMsTUFBdUI7Z0JBQ3pDLE9BQU8sTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBDb21wYXJpc29uVmFsaWRhdGlvbktleXMsXG4gIERFRkFVTFRfUEFUVEVSTlMsXG4gIFBhdGhQcm94eSxcbiAgUGF0aFByb3h5RW5naW5lLFxuICBWYWxpZGF0aW9uLFxuICBWYWxpZGF0aW9uS2V5cyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgRmllbGRQcm9wZXJ0aWVzLCBIVE1MNUlucHV0VHlwZXMsIHBhcnNlVmFsdWVCeVR5cGUgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBbmd1bGFyRW5naW5lS2V5cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgQ29tcGFyaXNvblZhbGlkYXRpb25LZXkgPSB0eXBlb2YgQ29tcGFyaXNvblZhbGlkYXRpb25LZXlzW2tleW9mIHR5cGVvZiBDb21wYXJpc29uVmFsaWRhdGlvbktleXNdO1xuXG4vKipcbiAqXG4gKiBSZXNvbHZlcyB0aGUgY29ycmVjdCB2YWxpZGF0b3Iga2V5IGFuZCBpdHMgYXNzb2NpYXRlZCBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBpbnB1dCBrZXkgYW5kIHR5cGUuXG4gKlxuICogV2hlbiB0aGUgdmFsaWRhdGlvbiBrZXkgaXMgVFlQRSwgaXQncyBuZWNlc3NhcnkgdG8gcmVzb2x2ZSB0aGUgYWN0dWFsIHZhbGlkYXRvciBiYXNlZCBvbiB0aGVcbiAqIGZpZWxkJ3MgdHlwZSAoZS5nLiwgJ3Bhc3N3b3JkJywgJ2VtYWlsJywgJ3VybCcpIGluc3RlYWQgb2YgdXNpbmcgdGhlIGdlbmVyaWMgZ2V0VmFsaWRhdG9yKFwidHlwZVwiKSBsb2dpYy5cbiAqIFRoaXMgYWxsb3dzIGRpcmVjdGx5IGludm9raW5nIHNwZWNpZmljIHZhbGlkYXRvcnMgbGlrZSBnZXRWYWxpZGF0b3IoJ3Bhc3N3b3JkJyksIGVuc3VyaW5nIHRoZSBjb3JyZWN0XG4gKiBiZWhhdmlvciBmb3IgdHlwZS1iYXNlZCB2YWxpZGF0aW9uLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUgdmFsaWRhdGlvbiBrZXkgKGUuZy4sICd0eXBlJywgJ3JlcXVpcmVkJywgZXRjLikuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdGhhdCBuZWVkcyBiZSBwcm92aWRlZCB0byB0aGUgdmFsaWRhdG9yLlxuICogQHBhcmFtIHR5cGUgLSBUaGUgZmllbGQncyBkZWNsYXJlZCB0eXBlLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIHZhbGlkYXRvciBrZXkgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHByb3BzLlxuICovXG5jb25zdCByZXNvbHZlVmFsaWRhdG9yS2V5UHJvcHMgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCB0eXBlOiBzdHJpbmcpOiB7XG4gIHZhbGlkYXRvcktleTogc3RyaW5nO1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59ID0+IHtcbiAgY29uc3QgcGF0dGVyblZhbGlkYXRvcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIFtWYWxpZGF0aW9uS2V5cy5QQVNTV09SRF06IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gICAgW1ZhbGlkYXRpb25LZXlzLkVNQUlMXTogREVGQVVMVF9QQVRURVJOUy5FTUFJTCxcbiAgICBbVmFsaWRhdGlvbktleXMuVVJMXTogREVGQVVMVF9QQVRURVJOUy5VUkwsXG4gIH07XG5cbiAgY29uc3QgaXNUeXBlQmFzZWQgPSBrZXkgPT09IFZhbGlkYXRpb25LZXlzLlRZUEUgJiYgT2JqZWN0LmtleXMocGF0dGVyblZhbGlkYXRvcnMpLmluY2x1ZGVzKHR5cGUpO1xuICBjb25zdCB2YWxpZGF0b3JLZXkgPSBpc1R5cGVCYXNlZCA/IHR5cGUgOiBrZXk7XG4gIGNvbnN0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBbdmFsaWRhdG9yS2V5XTogdmFsdWUsXG4gICAgLy8gRW1haWwsIFBhc3N3b3JkLCBhbmQgVVJMIGFyZSB2YWxpZGF0ZWQgdXNpbmcgdGhlIFwicGF0dGVyblwiIGtleVxuICAgIC4uLihpc1R5cGVCYXNlZCAmJiB7IFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXTogcGF0dGVyblZhbGlkYXRvcnNbdHlwZV0gfSksXG4gIH07XG5cbiAgcmV0dXJuIHsgdmFsaWRhdG9yS2V5LCBwcm9wcyB9O1xufTtcblxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yRmFjdG9yeSB7XG4gIHN0YXRpYyBzcGF3bihmaWVsZFByb3BzOiBGaWVsZFByb3BlcnRpZXMsIGtleTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGlmICghVmFsaWRhdGlvbi5rZXlzKCkuaW5jbHVkZXMoa2V5KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY3VzdG9tIHZhbGlkYXRpb24nKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckZuOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIHR5cGUgfSA9IGZpZWxkUHJvcHM7XG4gICAgICBjb25zdCB7IHZhbGlkYXRvcktleSwgcHJvcHMgfSA9IHJlc29sdmVWYWxpZGF0b3JLZXlQcm9wcyhrZXksIGZpZWxkUHJvcHNba2V5IGFzIGtleW9mIEZpZWxkUHJvcGVydGllc10sIHR5cGUpO1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gVmFsaWRhdGlvbi5nZXQodmFsaWRhdG9yS2V5KSBhcyBWYWxpZGF0b3I7XG5cbiAgICAgIC8vIHBhcnNlVmFsdWVCeVR5cGUgZG9lcyBub3Qgc3VwcG9ydCB1bmRlZmluZWQgdmFsdWVzXG4gICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHBhcnNlVmFsdWVCeVR5cGUodHlwZSwgdHlwZSA9PT0gSFRNTDVJbnB1dFR5cGVzLkNIRUNLQk9YID8gbmFtZSA6IGNvbnRyb2wudmFsdWUsIGZpZWxkUHJvcHMpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBDcmVhdGUgYSBwcm94eSB0byBlbmFibGUgYWNjZXNzIHRvIHBhcmVudCBhbmQgY2hpbGQgdmFsdWVzXG4gICAgICBsZXQgcHJveHk6IFBhdGhQcm94eTx1bmtub3duPiA9IFZhbGlkYXRvckZhY3RvcnkuY3JlYXRlUHJveHkoe30gYXMgQWJzdHJhY3RDb250cm9sKTtcbiAgICAgIGlmIChPYmplY3QudmFsdWVzKENvbXBhcmlzb25WYWxpZGF0aW9uS2V5cykuaW5jbHVkZXMoa2V5IGFzIENvbXBhcmlzb25WYWxpZGF0aW9uS2V5KSkge1xuICAgICAgICBjb25zdCBwYXJlbnQ6IEZvcm1Hcm91cCA9IGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgPyBjb250cm9sIDogKGNvbnRyb2wgYXMgS2V5VmFsdWUpW0FuZ3VsYXJFbmdpbmVLZXlzLlBBUkVOVF07XG4gICAgICAgIHByb3h5ID0gVmFsaWRhdG9yRmFjdG9yeS5jcmVhdGVQcm94eShwYXJlbnQpIGFzIFBhdGhQcm94eTx1bmtub3duPjtcbiAgICAgIH1cblxuICAgICAgbGV0IGVycnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVycnMgPSB2YWxpZGF0b3IuaGFzRXJyb3JzKHZhbHVlLCBwcm9wcywgcHJveHkpO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICBlcnJzID0gYCR7a2V5fSB2YWxpZGF0b3IgZmFpbGVkIHRvIHZhbGlkYXRlOiAke2V9YDtcbiAgICAgICAgY29uc29sZS53YXJuKGVycnMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXJycyA/IHsgW3ZhbGlkYXRvcktleV06IHRydWUgfSA6IG51bGw7XG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0b3JGbiwgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogYCR7a2V5fVZhbGlkYXRvcmAsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yRm47XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIHByb3h5IHdyYXBwZXIgZm9yIGFuIEFuZ3VsYXIgQWJzdHJhY3RDb250cm9sIHRvIGFzc2lzdCB3aXRoIGN1c3RvbSB2YWxpZGF0aW9uIGxvZ2ljLlxuICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyBhIHN0cnVjdHVyZWQgcHJveHkgb2JqZWN0IHRoYXQgc2ltdWxhdGVzIGEgaGllcmFyY2hpY2FsIHRyZWUgb2YgZm9ybSB2YWx1ZXMuXG4gICAqIEVuYWJsZXMgVmFsaWRhdG9ycyBoYW5kbGluZyBtZXRob2QgdG8gYWNjZXNzIHBhcmVudCBhbmQgY2hpbGQgcHJvcGVydGllcyB1c2luZyBjb25zaXN0ZW50IGRvdC1ub3RhdGlvbiBpbiBBbmd1bGFyIGZvcm1zLlxuICAgKlxuICAgKiBAcGFyYW0ge0Fic3RyYWN0Q29udHJvbH0gY29udHJvbCAtIFRoZSBjb250cm9sIHRvIHdyYXAgaW4gYSBwcm94eS5cbiAgICogQHJldHVybnMge1BhdGhQcm94eTx1bmtub3duPn0gQSBwcm94eSBvYmplY3QgZXhwb3NpbmcgZm9ybSB2YWx1ZXMgYW5kIGVuYWJsaW5nIHJlY3Vyc2l2ZSBwYXJlbnQgYWNjZXNzLlxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVByb3h5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFBhdGhQcm94eTx1bmtub3duPiB7XG4gICAgcmV0dXJuIFBhdGhQcm94eUVuZ2luZS5jcmVhdGUoY29udHJvbCwge1xuICAgICAgZ2V0VmFsdWUodGFyZ2V0OiBBYnN0cmFjdENvbnRyb2wsIHByb3A6IHN0cmluZyk6IHVua25vd24ge1xuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgcmV0dXJuIHRhcmdldC52YWx1ZTtcblxuICAgICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRhcmdldC5jb250cm9sc1twcm9wXTtcbiAgICAgICAgICByZXR1cm4gY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sID8gY29udHJvbC52YWx1ZSA6IGNvbnRyb2w7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgLy8gaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgIC8vICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICAgICAgICAvL1xuICAgICAgICAvLyBpZiAodmFsdWUgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgLy8gICBjb25zdCBjb250cm9sID0gdmFsdWUuY29udHJvbHNbcHJvcF07XG4gICAgICAgIC8vICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCA/IGNvbnRyb2wudmFsdWUgOiBjb250cm9sO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgS2V5VmFsdWUpPy5bcHJvcF07XG4gICAgICB9LFxuICAgICAgZ2V0UGFyZW50OiBmdW5jdGlvbih0YXJnZXQ6IEFic3RyYWN0Q29udHJvbCkgIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldD8uWydfcGFyZW50J107XG4gICAgICB9LFxuICAgICAgaWdub3JlVW5kZWZpbmVkOiB0cnVlLFxuICAgICAgaWdub3JlTnVsbDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkUHJvcGVydGllcyB9IGZyb20gJ0BkZWNhZi10cy91aS1kZWNvcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgS2V5VmFsdWUgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFbGVtZW50IHNpemUgb3B0aW9ucyBmb3IgVUkgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgc2l6ZSB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHNpemVzIGNvbnRyb2wgdGhlIGRpbWVuc2lvbnMgYW5kIGxheW91dCBiZWhhdmlvciBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnc21hbGwnfCdtZWRpdW0nfCdsYXJnZSd8J3hsYXJnZSd8JzJ4bGFyZ2UnfCdhdXRvJ3wnZXhwYW5kJ3wnYmxvY2snKX0gRWxlbWVudFNpemVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBFbGVtZW50U2l6ZXMgPVxuICB8ICdzbWFsbCdcbiAgfCAnbWVkaXVtJ1xuICB8ICdsYXJnZSdcbiAgfCAneGxhcmdlJ1xuICB8ICcyeGxhcmdlJ1xuICB8ICdhdXRvJ1xuICB8ICdleHBhbmQnXG4gIHwgJ2Jsb2NrJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzaWMgcG9zaXRpb24gb3B0aW9ucyBmb3IgVUkgZWxlbWVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHBvc2l0aW9uIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIFVJIGVsZW1lbnRzLlxuICogVGhlc2UgcG9zaXRpb25zIGNvbnRyb2wgdGhlIGFsaWdubWVudCBhbmQgcGxhY2VtZW50IG9mIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7KCdsZWZ0J3wnY2VudGVyJ3wncmlnaHQnfCd0b3AnfCdib3R0b20nKX0gRWxlbWVudFBvc2l0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFBvc2l0aW9ucyA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIHBvc2l0aW9uIG9wdGlvbnMgZm9yIGZsZXggbGF5b3V0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzaWMgRWxlbWVudFBvc2l0aW9ucyB3aXRoIGFkZGl0aW9uYWwgZmxleC1zcGVjaWZpYyBwb3NpdGlvbiB2YWx1ZXMuXG4gKiBUaGVzZSBwb3NpdGlvbnMgYXJlIHVzZWQgZm9yIGNvbnRyb2xsaW5nIGFsaWdubWVudCBhbmQgZGlzdHJpYnV0aW9uIGluIGZsZXggY29udGFpbmVycy5cbiAqIEB0eXBlZGVmIHsoRWxlbWVudFBvc2l0aW9uc3wnc3RyZXRjaCd8J21pZGRsZSd8J2Fyb3VuZCd8J2JldHdlZW4nKX0gRmxleFBvc2l0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmxleFBvc2l0aW9ucyA9XG4gIHwgRWxlbWVudFBvc2l0aW9uc1xuICB8ICdzdHJldGNoJ1xuICB8ICdtaWRkbGUnXG4gIHwgJ2Fyb3VuZCdcbiAgfCAnYmV0d2Vlbic7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBtb2RlIG9wdGlvbnMgZm9yIGZvcm0gZmllbGRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHdoZW4gZm9ybSBmaWVsZCB2YWx1ZXMgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gdGhlIG1vZGVsLlxuICogLSAnY2hhbmdlJzogVXBkYXRlIG9uIGV2ZXJ5IGNoYW5nZSBldmVudFxuICogLSAnYmx1cic6IFVwZGF0ZSB3aGVuIHRoZSBmaWVsZCBsb3NlcyBmb2N1c1xuICogLSAnc3VibWl0JzogVXBkYXRlIG9ubHkgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWRcbiAqIEB0eXBlZGVmIHsoJ2NoYW5nZSd8J2JsdXInfCdzdWJtaXQnKX0gRmllbGRVcGRhdGVNb2RlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGaWVsZFVwZGF0ZU1vZGUgPSAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRhZGF0YSBzdHJ1Y3R1cmUgZm9yIEFuZ3VsYXIgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIG1ldGFkYXRhIGZvciBBbmd1bGFyIGNvbXBvbmVudHMsIGluY2x1ZGluZ1xuICogY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSwgc2VsZWN0b3IsIHN0YW5kYWxvbmUgc3RhdHVzLCBpbXBvcnRzLCB0ZW1wbGF0ZSwgYW5kIHN0eWxlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgcmVmbGVjdGlvbiBhbmQgZHluYW1pYyBjb21wb25lbnQgY3JlYXRpb24uXG4gKiBAaW50ZXJmYWNlIENvbXBvbmVudE1ldGFkYXRhXG4gKiBAcHJvcGVydHkge251bWJlcn0gY2hhbmdlRGV0ZWN0aW9uIC0gVGhlIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kgbnVtYmVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2VsZWN0b3IgLSBUaGUgQ1NTIHNlbGVjdG9yIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHN0YW5kYWxvbmUgLSBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgc3RhbmRhbG9uZVxuICogQHByb3BlcnR5IGltcG9ydHMgLSBBcnJheSBvZiBpbXBvcnRlZCBtb2R1bGVzL2NvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZW1wbGF0ZSAtIFRoZSBIVE1MIHRlbXBsYXRlIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBzdHlsZXMgLSBBcnJheSBvZiBDU1Mgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE1ldGFkYXRhIHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBudW1iZXI7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIHN0YW5kYWxvbmU6IGJvb2xlYW47XG4gIGltcG9ydHM6IChuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bilbXTtcbiAgdGVtcGxhdGU6IHN0cmluZztcbiAgc3R5bGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3V0cHV0IHN0cnVjdHVyZSBmcm9tIHRoZSBBbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgb3V0cHV0IHByb2R1Y2VkIGJ5IHRoZSBOZ3hSZW5kZXJpbmdFbmdpbmVcbiAqIHdoZW4gcmVuZGVyaW5nIGEgY29tcG9uZW50LiBDb250YWlucyB0aGUgY29tcG9uZW50IHR5cGUsIGlucHV0cywgaW5qZWN0b3IsXG4gKiBjb250ZW50IG5vZGVzLCBhbmQgY2hpbGQgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFuZ3VsYXJEeW5hbWljT3V0cHV0XG4gKiBAcHJvcGVydHkge1R5cGU8dW5rbm93bj59IGNvbXBvbmVudCAtIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBbaW5wdXRzXSAtIE9wdGlvbmFsIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7SW5qZWN0b3J9IFtpbmplY3Rvcl0gLSBPcHRpb25hbCBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQHByb3BlcnR5IHtOb2RlW11bXX0gW2NvbnRlbnRdIC0gT3B0aW9uYWwgY29udGVudCBub2RlcyBmb3IgcHJvamVjdGlvblxuICogQHByb3BlcnR5IHtBbmd1bGFyRHluYW1pY091dHB1dFtdfSBbY2hpbGRyZW5dIC0gT3B0aW9uYWwgY2hpbGQgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtUeXBlPHVua25vd24+fSBbaW5zdGFuY2VdIC0gT3B0aW9uYWwgY29tcG9uZW50IGluc3RhbmNlXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gW2Zvcm1Hcm91cF0gLSBPcHRpb25hbCBjb21wb25lbnQgRm9ybUdyb3VwXG4gKiBAcHJvcGVydHkge0Zvcm1Db250cm9sfSBbZm9ybUNvbnRyb2xdIC0gT3B0aW9uYWwgY29tcG9uZW50IEZvcm1Db250cm9sXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJEeW5hbWljT3V0cHV0IHtcbiAgY29tcG9uZW50OiBUeXBlPHVua25vd24+O1xuICByZW5kZXJlcklkPzogc3RyaW5nO1xuICBpbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaW5qZWN0b3I/OiBJbmplY3RvcjtcbiAgY29udGVudD86IE5vZGVbXVtdO1xuICBjaGlsZHJlbj86IEFuZ3VsYXJEeW5hbWljT3V0cHV0W107XG4gIGluc3RhbmNlPzogVHlwZTx1bmtub3duPjtcbiAgZm9ybUdyb3VwPzogRm9ybUdyb3VwO1xuICBmb3JtQ29udHJvbD86IEZvcm1Db250cm9sO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZFxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYmFzaWMgc3RydWN0dXJlIGZvciBtb2RlbHMgdGhhdCBjYW4gYmUgcmVuZGVyZWQgYnkgdGhlIGVuZ2luZS5cbiAqIENvbnRhaW5zIGFuIG9wdGlvbmFsIHJlbmRlcmVySWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSByZW5kZXJlZCBpbnN0YW5jZS5cbiAqIEBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZW5kZXJlcklkXSAtIE9wdGlvbmFsIHVuaXF1ZSBJRCBmb3IgdGhlIHJlbmRlcmVkIG1vZGVsIGluc3RhbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmVkTW9kZWwge1xuICByZW5kZXJlcklkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQb3NzaWJsZSBpbnB1dCB0eXBlcyBmb3IgZm9ybSBmaWVsZHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIGlucHV0IHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQgaW4gZm9ybSBmaWVsZHMuXG4gKiBJbmNsdWRlcyBzdGFuZGFyZCBIVE1MIGlucHV0IHR5cGVzIGxpa2UgY2hlY2tib3gsIHJhZGlvLCBhbmQgc2VsZWN0LFxuICogYXMgd2VsbCBhcyBJb25pYydzIFRleHRGaWVsZFR5cGVzIGFuZCB0ZXh0YXJlYS5cbiAqIEB0eXBlZGVmIHsoJ2NoZWNrYm94J3wncmFkaW8nfCdzZWxlY3QnfFRleHRGaWVsZFR5cGVzfCd0ZXh0YXJlYScpfSBQb3NzaWJsZUlucHV0VHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFBvc3NpYmxlSW5wdXRUeXBlcyA9XG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpbydcbiAgfCAnc2VsZWN0J1xuICB8IFRleHRGaWVsZFR5cGVzXG4gIHwgJ3RleHRhcmVhJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRmllbGQgZGVmaW5pdGlvbiBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBBIGNvbXByZWhlbnNpdmUgdHlwZSB0aGF0IGNvbWJpbmVzIHByb3BlcnRpZXMgZnJvbSB2YXJpb3VzIElvbmljIGNvbXBvbmVudHNcbiAqIHRvIGRlZmluZSB0aGUgc3RydWN0dXJlIG9mIGEgZmllbGQgaW4gYW4gQW5ndWxhciBmb3JtLiBJdCBvbWl0cyBjZXJ0YWluIHByb3BlcnRpZXNcbiAqIGZyb20gSW9uSW5wdXQsIHBpY2tzIHNwZWNpZmljIHByb3BlcnRpZXMgZnJvbSBJb25TZWxlY3QsIElvblRleHRhcmVhLCBhbmQgSW9uQ2hlY2tib3gsXG4gKiBhbmQgYWRkcyBjdXN0b20gcHJvcGVydGllcyBsaWtlIHR5cGUgYW5kIGNsYXNzTmFtZS5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFuZ3VsYXJGaWVsZERlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7UG9zc2libGVJbnB1dFR5cGVzfSB0eXBlIC0gVGhlIHR5cGUgb2YgaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN0cmluZ1tdfSBjbGFzc05hbWUgLSBDU1MgY2xhc3MgbmFtZShzKSBmb3IgdGhlIGZpZWxkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NhbmNlbFRleHRdIC0gVGV4dCBmb3IgdGhlIGNhbmNlbCBidXR0b24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpbnRlcmZhY2VdIC0gSW50ZXJmYWNlIHN0eWxlIGZvciBzZWxlY3QgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzZWxlY3RlZFRleHRdIC0gVGV4dCBmb3Igc2VsZWN0ZWQgb3B0aW9uIChmcm9tIElvblNlbGVjdClcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBbaW50ZXJmYWNlT3B0aW9uc10gLSBPcHRpb25zIGZvciB0aGUgaW50ZXJmYWNlIChmcm9tIElvblNlbGVjdClcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcm93c10gLSBOdW1iZXIgb2Ygcm93cyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2NvbHNdIC0gTnVtYmVyIG9mIGNvbHVtbnMgZm9yIHRleHRhcmVhIChmcm9tIElvblRleHRhcmVhKVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthbGlnbm1lbnRdIC0gQWxpZ25tZW50IG9mIGNoZWNrYm94IChmcm9tIElvbkNoZWNrYm94KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtqdXN0aWZ5XSAtIEp1c3RpZmljYXRpb24gb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtjaGVja2VkXSAtIFdoZXRoZXIgY2hlY2tib3ggaXMgY2hlY2tlZCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEFuZ3VsYXJGaWVsZERlZmluaXRpb24gPSBPbWl0PFxuICBJb25JbnB1dCxcbiAgfCAnaW9uSW5wdXQnXG4gIHwgJ2lvbkZvY3VzJ1xuICB8ICdpb25DaGFuZ2UnXG4gIHwgJ2lvbkJsdXInXG4gIHwgJ2dldElucHV0RWxlbWVudCdcbiAgfCAnc2V0Rm9jdXMnXG4gIHwgJ2xhYmVsJ1xuICB8ICdlbCdcbiAgfCAneidcbiAgfCAndHlwZSdcbj4gJlxuICBQaWNrPFxuICAgIElvblNlbGVjdCxcbiAgICAnY2FuY2VsVGV4dCcgfCAnaW50ZXJmYWNlJyB8ICdzZWxlY3RlZFRleHQnIHwgJ2ludGVyZmFjZU9wdGlvbnMnXG4gID4gJlxuICBQaWNrPElvblRleHRhcmVhLCAncm93cycgfCAnY29scyc+ICZcbiAgUGljazxJb25DaGVja2JveCwgJ2FsaWdubWVudCcgfCAnanVzdGlmeScgfCAnY2hlY2tlZCc+ICYge1xuICB0eXBlOiBQb3NzaWJsZUlucHV0VHlwZXM7XG4gIGNsYXNzTmFtZTogc3RyaW5nIHwgc3RyaW5nW107XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0cmluZyBvciBib29sZWFuIHJlcHJlc2VudGF0aW9uIG9mIGEgYm9vbGVhbiB2YWx1ZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHZhbHVlIHRoYXQgY2FuIGJlIGVpdGhlciBhIGJvb2xlYW4gb3IgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuLlxuICogVGhpcyBpcyB1c2VmdWwgZm9yIGhhbmRsaW5nIGF0dHJpYnV0ZSB2YWx1ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBzdHJpbmdzIG9yIGJvb2xlYW5zLlxuICogQHR5cGVkZWYgeygndHJ1ZSd8J2ZhbHNlJ3xib29sZWFuKX0gU3RyaW5nT3JCb29sZWFuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdPckJvb2xlYW4gPSAndHJ1ZScgfCAnZmFsc2UnIHwgYm9vbGVhbjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIHNlbGVjdCBpbnB1dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIElucHV0T3B0aW9uIGludGVyZmFjZSB3aXRoIGEgc2VsZWN0ZWQgcHJvcGVydHkgdG8gaW5kaWNhdGVcbiAqIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0T3B0aW9uID0gSW5wdXRPcHRpb24gJiB7IHNlbGVjdGVkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3IgcmFkaW8gaW5wdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBJbnB1dE9wdGlvbiBpbnRlcmZhY2Ugd2l0aCBhIGNoZWNrZWQgcHJvcGVydHkgdG8gaW5kaWNhdGVcbiAqIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBjaGVja2VkIGJ5IGRlZmF1bHQuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBSYWRpb09wdGlvbiA9IElucHV0T3B0aW9uICYgeyBjaGVja2VkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3IgY2hlY2tib3ggaW5wdXRzXG4gKiBAc3VtbWFyeSBBbGlhcyBmb3IgUmFkaW9PcHRpb24sIGFzIGNoZWNrYm94IG9wdGlvbnMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgcmFkaW8gb3B0aW9ucy5cbiAqIEB0eXBlZGVmIHtSYWRpb09wdGlvbn0gQ2hlY2tib3hPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIENoZWNrYm94T3B0aW9uID0gUmFkaW9PcHRpb247XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2Ugb3B0aW9uIHR5cGUgZm9yIGlucHV0IGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBzdHJ1Y3R1cmUgZm9yIG9wdGlvbnMgdXNlZCBpbiBzZWxlY3QsIHJhZGlvLCBhbmQgY2hlY2tib3ggaW5wdXRzLlxuICogQ29udGFpbnMgcHJvcGVydGllcyBmb3IgdGhlIGRpc3BsYXkgdGV4dCwgdmFsdWUsIGRpc2FibGVkIHN0YXRlLCBDU1MgY2xhc3MsIGFuZCBpY29uLlxuICogQGludGVyZmFjZSBJbnB1dE9wdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgLSBUaGUgZGlzcGxheSB0ZXh0IGZvciB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHZhbHVlIC0gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge1N0cmluZ09yQm9vbGVhbn0gW2Rpc2FibGVkXSAtIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGFzc05hbWVdIC0gQ1NTIGNsYXNzIG5hbWUgZm9yIHN0eWxpbmcgdGhlIG9wdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpY29uXSAtIEljb24gdG8gZGlzcGxheSB3aXRoIHRoZSBvcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPcHRpb24ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gIGRpc2FibGVkPzogU3RyaW5nT3JCb29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRhcmdldCBvcHRpb25zIGZvciBIVE1MIGZvcm1zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSB0YXJnZXQgdmFsdWVzIGZvciBIVE1MIGZvcm1zLCBpbmNsdWRpbmcgc3RhbmRhcmQgdGFyZ2V0c1xuICogbGlrZSAnX2JsYW5rJywgJ19zZWxmJywgJ19wYXJlbnQnLCBhbmQgJ190b3AnLCBhcyB3ZWxsIGFzIGN1c3RvbSBzdHJpbmcgdmFsdWVzLlxuICogQHR5cGVkZWYgeygnX2JsYW5rJ3wnX3NlbGYnfCdfcGFyZW50J3wnX3RvcCd8c3RyaW5nKX0gSFRNTEZvcm1UYXJnZXRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEhUTUxGb3JtVGFyZ2V0ID0gJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnIHwgc3RyaW5nO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElMaXN0SXRlbVByb3Age1xuLy8gICByZW5kZXI/OiBzdHJpbmcgfCBib29sZWFuO1xuLy8gICB0cmFuc2xhdGVQcm9wcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuLy8gICBidXR0b24/OiBTdHJpbmdPckJvb2xlYW47XG4vLyAgIGljb24/OiBzdHJpbmc7XG4vLyAgIGljb25TbG90PzogJ3N0YXJ0JyB8ICdlbmQnO1xuLy8gICB0aXRsZT86IHN0cmluZztcbi8vICAgZGVzY3JpdHBpb24/OiBzdHJpbmc7XG4vLyAgIGluZm8/OiBzdHJpbmc7XG4vLyAgIHN1YmluZm8/OiBzdHJpbmc7XG4vLyB9XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbGlzdCBjb21wb25lbnQgcmVmcmVzaCBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBhIHJlZnJlc2ggZXZlbnQgZm9yIGxpc3QgY29tcG9uZW50cy5cbiAqIENvbnRhaW5zIGFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgdGhlIG5ldyBkYXRhIGZvciB0aGUgbGlzdC5cbiAqIEBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnRcbiAqIEBwcm9wZXJ0eSB7S2V5VmFsdWVbXX0gZGF0YSAtIEFycmF5IG9mIGtleS12YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgdGhlIG5ldyBkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29tcG9uZW50UmVmcmVzaEV2ZW50IHtcbiAgZGF0YTogS2V5VmFsdWVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VydmljZUNvbnRyb2wge1xuICBjb250cm9sOiBGb3JtR3JvdXA7XG4gIHByb3BzOiBBbmd1bGFyRmllbGREZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGZvciBmb3JtIHNlcnZpY2UgY29udHJvbHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBmb3JtIGNvbnRyb2xzIG1hbmFnZWQgYnkgdGhlIGZvcm0gc2VydmljZS5cbiAqIEl0J3MgYSBuZXN0ZWQgcmVjb3JkIHdoZXJlIHRoZSBvdXRlciBrZXkgaXMgdGhlIGZvcm0gZ3JvdXAgbmFtZSwgdGhlIGlubmVyIGtleVxuICogaXMgdGhlIGNvbnRyb2wgbmFtZSwgYW5kIHRoZSB2YWx1ZSBjb250YWlucyB0aGUgZm9ybSBncm91cCBhbmQgZmllbGQgcHJvcGVydGllcy5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2w6IEZvcm1Hcm91cDsgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb24gfT4+fSBGb3JtU2VydmljZUNvbnRyb2xzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VydmljZUNvbnRyb2xzID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFJlY29yZDxzdHJpbmcsIEZvcm1TZXJ2aWNlQ29udHJvbD5cbj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWwgcmVuZGVyIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBjdXN0b20gZXZlbnRzIHRyaWdnZXJlZCBkdXJpbmcgbW9kZWwgcmVuZGVyaW5nLlxuICogQ29udGFpbnMgdGhlIGV2ZW50IGRldGFpbCwgY29tcG9uZW50IG5hbWUsIGFuZCBldmVudCBuYW1lLlxuICogQGludGVyZmFjZSBNb2RlbFJlbmRlckN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge0Jhc2VDdXN0b21FdmVudH0gZGV0YWlsIC0gVGhlIGRldGFpbGVkIGV2ZW50IGluZm9ybWF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsUmVuZGVyQ3VzdG9tRXZlbnQge1xuICBkZXRhaWw6IEJhc2VDdXN0b21FdmVudDtcbiAgY29tcG9uZW50OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGl0ZW0gY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGN1c3RvbSBldmVudHMgdHJpZ2dlcmVkIGJ5IGxpc3QgaXRlbXMuXG4gKiBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGFjdGlvbiBhbmQgcHJpbWFyeSBrZXkuXG4gKiBAaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhY3Rpb24gLSBUaGUgYWN0aW9uIHBlcmZvcm1lZCBvbiB0aGUgbGlzdCBpdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrXSAtIE9wdGlvbmFsIHByaW1hcnkga2V5IG9mIHRoZSBhZmZlY3RlZCBpdGVtXG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1DdXN0b21FdmVudCBleHRlbmRzIEJhc2VDdXN0b21FdmVudCB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBwaz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBpbnRlcmZhY2UgZm9yIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGJhc2Ugc3RydWN0dXJlIGZvciBjdXN0b20gZXZlbnRzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIENvbnRhaW5zIHByb3BlcnRpZXMgZm9yIHRoZSBldmVudCBkYXRhLCB0YXJnZXQgZWxlbWVudCwgbmFtZSwgYW5kIGNvbXBvbmVudC5cbiAqIEBpbnRlcmZhY2UgQmFzZUN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtuYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDdXN0b21FdmVudCB7XG4gIGRhdGE6IGFueTtcbiAgdGFyZ2V0PzogSFRNTEVsZW1lbnQ7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGNvbXBvbmVudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIGludGVyZmFjZSBmb3IgY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYmFzZSBzdHJ1Y3R1cmUgZm9yIGN1c3RvbSBldmVudHMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQ29udGFpbnMgcHJvcGVydGllcyBmb3IgdGhlIGV2ZW50IGRhdGEsIHRhcmdldCBlbGVtZW50LCBuYW1lLCBhbmQgY29tcG9uZW50LlxuICogQGludGVyZmFjZSBCYXNlQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtIVE1MRWxlbWVudH0gW3RhcmdldF0gLSBUaGUgdGFyZ2V0IGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIENydWRGb3JtRXZlbnQgPSBCYXNlQ3VzdG9tRXZlbnQgJiB7XG4gIGhhbmRsZXJzPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07Ly8gZXhwb3J0IHR5cGUgQ3J1ZEZvcm1FdmVudCA9IEJhc2VDdXN0b21FdmVudCAmIHtoYW5kbGVycz86IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gYW55IHwgUHJvbWlzZTxhbnk+Pn1cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXQgZXh0ZW5kcyBGaWVsZFByb3BlcnRpZXMge1xuICB1cGRhdGVNb2RlPzogRmllbGRVcGRhdGVNb2RlO1xuICBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Q29uZmlnIHtcbiAgY29tcG9uZW50OiBzdHJpbmc7XG4gIGlucHV0czogQ29tcG9uZW50SW5wdXQ7XG4gIGluamVjdG9yOiBhbnk7XG4gIGNoaWxkcmVuPzogQ29tcG9uZW50Q29uZmlnW107XG59XG5cbmV4cG9ydCB0eXBlIEZvcm1QYXJlbnRHcm91cCA9IFtGb3JtR3JvdXAsICBzdHJpbmddO1xuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkUHJvcGVydGllcyB9IGZyb20gJ0BkZWNhZi10cy91aS1kZWNvcmF0b3JzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEtleVZhbHVlID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEZ1bmN0aW9uTGlrZSA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFbGVtZW50IHNpemUgb3B0aW9ucyBmb3IgVUkgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgc2l6ZSB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHNpemVzIGNvbnRyb2wgdGhlIGRpbWVuc2lvbnMgYW5kIGxheW91dCBiZWhhdmlvciBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnc21hbGwnfCdtZWRpdW0nfCdsYXJnZSd8J3hsYXJnZSd8JzJ4bGFyZ2UnfCdhdXRvJ3wnZXhwYW5kJ3wnYmxvY2snKX0gRWxlbWVudFNpemVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBFbGVtZW50U2l6ZXMgPVxuICB8ICdzbWFsbCdcbiAgfCAnbWVkaXVtJ1xuICB8ICdsYXJnZSdcbiAgfCAneGxhcmdlJ1xuICB8ICcyeGxhcmdlJ1xuICB8ICdhdXRvJ1xuICB8ICdleHBhbmQnXG4gIHwgJ2Jsb2NrJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzaWMgcG9zaXRpb24gb3B0aW9ucyBmb3IgVUkgZWxlbWVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHBvc2l0aW9uIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIFVJIGVsZW1lbnRzLlxuICogVGhlc2UgcG9zaXRpb25zIGNvbnRyb2wgdGhlIGFsaWdubWVudCBhbmQgcGxhY2VtZW50IG9mIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7KCdsZWZ0J3wnY2VudGVyJ3wncmlnaHQnfCd0b3AnfCdib3R0b20nKX0gRWxlbWVudFBvc2l0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFBvc2l0aW9ucyA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIHBvc2l0aW9uIG9wdGlvbnMgZm9yIGZsZXggbGF5b3V0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzaWMgRWxlbWVudFBvc2l0aW9ucyB3aXRoIGFkZGl0aW9uYWwgZmxleC1zcGVjaWZpYyBwb3NpdGlvbiB2YWx1ZXMuXG4gKiBUaGVzZSBwb3NpdGlvbnMgYXJlIHVzZWQgZm9yIGNvbnRyb2xsaW5nIGFsaWdubWVudCBhbmQgZGlzdHJpYnV0aW9uIGluIGZsZXggY29udGFpbmVycy5cbiAqIEB0eXBlZGVmIHsoRWxlbWVudFBvc2l0aW9uc3wnc3RyZXRjaCd8J21pZGRsZSd8J2Fyb3VuZCd8J2JldHdlZW4nKX0gRmxleFBvc2l0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmxleFBvc2l0aW9ucyA9XG4gIHwgRWxlbWVudFBvc2l0aW9uc1xuICB8ICdzdHJldGNoJ1xuICB8ICdtaWRkbGUnXG4gIHwgJ2Fyb3VuZCdcbiAgfCAnYmV0d2Vlbic7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBtb2RlIG9wdGlvbnMgZm9yIGZvcm0gZmllbGRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHdoZW4gZm9ybSBmaWVsZCB2YWx1ZXMgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gdGhlIG1vZGVsLlxuICogLSAnY2hhbmdlJzogVXBkYXRlIG9uIGV2ZXJ5IGNoYW5nZSBldmVudFxuICogLSAnYmx1cic6IFVwZGF0ZSB3aGVuIHRoZSBmaWVsZCBsb3NlcyBmb2N1c1xuICogLSAnc3VibWl0JzogVXBkYXRlIG9ubHkgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWRcbiAqIEB0eXBlZGVmIHsoJ2NoYW5nZSd8J2JsdXInfCdzdWJtaXQnKX0gRmllbGRVcGRhdGVNb2RlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGaWVsZFVwZGF0ZU1vZGUgPSAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRhZGF0YSBzdHJ1Y3R1cmUgZm9yIEFuZ3VsYXIgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIG1ldGFkYXRhIGZvciBBbmd1bGFyIGNvbXBvbmVudHMsIGluY2x1ZGluZ1xuICogY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSwgc2VsZWN0b3IsIHN0YW5kYWxvbmUgc3RhdHVzLCBpbXBvcnRzLCB0ZW1wbGF0ZSwgYW5kIHN0eWxlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgcmVmbGVjdGlvbiBhbmQgZHluYW1pYyBjb21wb25lbnQgY3JlYXRpb24uXG4gKiBAaW50ZXJmYWNlIENvbXBvbmVudE1ldGFkYXRhXG4gKiBAcHJvcGVydHkge251bWJlcn0gY2hhbmdlRGV0ZWN0aW9uIC0gVGhlIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kgbnVtYmVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2VsZWN0b3IgLSBUaGUgQ1NTIHNlbGVjdG9yIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHN0YW5kYWxvbmUgLSBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgc3RhbmRhbG9uZVxuICogQHByb3BlcnR5IGltcG9ydHMgLSBBcnJheSBvZiBpbXBvcnRlZCBtb2R1bGVzL2NvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZW1wbGF0ZSAtIFRoZSBIVE1MIHRlbXBsYXRlIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBzdHlsZXMgLSBBcnJheSBvZiBDU1Mgc3R5bGVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE1ldGFkYXRhIHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBudW1iZXI7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIHN0YW5kYWxvbmU6IGJvb2xlYW47XG4gIGltcG9ydHM6IChuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bilbXTtcbiAgdGVtcGxhdGU6IHN0cmluZztcbiAgc3R5bGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3V0cHV0IHN0cnVjdHVyZSBmcm9tIHRoZSBBbmd1bGFyIHJlbmRlcmluZyBlbmdpbmVcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgb3V0cHV0IHByb2R1Y2VkIGJ5IHRoZSBOZ3hSZW5kZXJpbmdFbmdpbmVcbiAqIHdoZW4gcmVuZGVyaW5nIGEgY29tcG9uZW50LiBDb250YWlucyB0aGUgY29tcG9uZW50IHR5cGUsIGlucHV0cywgaW5qZWN0b3IsXG4gKiBjb250ZW50IG5vZGVzLCBhbmQgY2hpbGQgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFuZ3VsYXJEeW5hbWljT3V0cHV0XG4gKiBAcHJvcGVydHkge1R5cGU8dW5rbm93bj59IGNvbXBvbmVudCAtIFRoZSBBbmd1bGFyIGNvbXBvbmVudCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBbaW5wdXRzXSAtIE9wdGlvbmFsIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7SW5qZWN0b3J9IFtpbmplY3Rvcl0gLSBPcHRpb25hbCBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQHByb3BlcnR5IHtOb2RlW11bXX0gW2NvbnRlbnRdIC0gT3B0aW9uYWwgY29udGVudCBub2RlcyBmb3IgcHJvamVjdGlvblxuICogQHByb3BlcnR5IHtBbmd1bGFyRHluYW1pY091dHB1dFtdfSBbY2hpbGRyZW5dIC0gT3B0aW9uYWwgY2hpbGQgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtUeXBlPHVua25vd24+fSBbaW5zdGFuY2VdIC0gT3B0aW9uYWwgY29tcG9uZW50IGluc3RhbmNlXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gW2Zvcm1Hcm91cF0gLSBPcHRpb25hbCBjb21wb25lbnQgRm9ybUdyb3VwXG4gKiBAcHJvcGVydHkge0Zvcm1Db250cm9sfSBbZm9ybUNvbnRyb2xdIC0gT3B0aW9uYWwgY29tcG9uZW50IEZvcm1Db250cm9sXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJEeW5hbWljT3V0cHV0IHtcbiAgY29tcG9uZW50OiBUeXBlPHVua25vd24+O1xuICByZW5kZXJlcklkPzogc3RyaW5nO1xuICBpbnB1dHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaW5qZWN0b3I/OiBJbmplY3RvcjtcbiAgY29udGVudD86IE5vZGVbXVtdO1xuICBjaGlsZHJlbj86IEFuZ3VsYXJEeW5hbWljT3V0cHV0W107XG4gIGluc3RhbmNlPzogVHlwZTx1bmtub3duPjtcbiAgZm9ybUdyb3VwPzogRm9ybUdyb3VwO1xuICBmb3JtQ29udHJvbD86IEZvcm1Db250cm9sO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZFxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYmFzaWMgc3RydWN0dXJlIGZvciBtb2RlbHMgdGhhdCBjYW4gYmUgcmVuZGVyZWQgYnkgdGhlIGVuZ2luZS5cbiAqIENvbnRhaW5zIGFuIG9wdGlvbmFsIHJlbmRlcmVySWQgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSByZW5kZXJlZCBpbnN0YW5jZS5cbiAqIEBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZW5kZXJlcklkXSAtIE9wdGlvbmFsIHVuaXF1ZSBJRCBmb3IgdGhlIHJlbmRlcmVkIG1vZGVsIGluc3RhbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmVkTW9kZWwge1xuICByZW5kZXJlcklkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQb3NzaWJsZSBpbnB1dCB0eXBlcyBmb3IgZm9ybSBmaWVsZHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIGlucHV0IHR5cGVzIHRoYXQgY2FuIGJlIHVzZWQgaW4gZm9ybSBmaWVsZHMuXG4gKiBJbmNsdWRlcyBzdGFuZGFyZCBIVE1MIGlucHV0IHR5cGVzIGxpa2UgY2hlY2tib3gsIHJhZGlvLCBhbmQgc2VsZWN0LFxuICogYXMgd2VsbCBhcyBJb25pYydzIFRleHRGaWVsZFR5cGVzIGFuZCB0ZXh0YXJlYS5cbiAqIEB0eXBlZGVmIHsoJ2NoZWNrYm94J3wncmFkaW8nfCdzZWxlY3QnfFRleHRGaWVsZFR5cGVzfCd0ZXh0YXJlYScpfSBQb3NzaWJsZUlucHV0VHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFBvc3NpYmxlSW5wdXRUeXBlcyA9XG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpbydcbiAgfCAnc2VsZWN0J1xuICB8IFRleHRGaWVsZFR5cGVzXG4gIHwgJ3RleHRhcmVhJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRmllbGQgZGVmaW5pdGlvbiBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBBIGNvbXByZWhlbnNpdmUgdHlwZSB0aGF0IGNvbWJpbmVzIHByb3BlcnRpZXMgZnJvbSB2YXJpb3VzIElvbmljIGNvbXBvbmVudHNcbiAqIHRvIGRlZmluZSB0aGUgc3RydWN0dXJlIG9mIGEgZmllbGQgaW4gYW4gQW5ndWxhciBmb3JtLiBJdCBvbWl0cyBjZXJ0YWluIHByb3BlcnRpZXNcbiAqIGZyb20gSW9uSW5wdXQsIHBpY2tzIHNwZWNpZmljIHByb3BlcnRpZXMgZnJvbSBJb25TZWxlY3QsIElvblRleHRhcmVhLCBhbmQgSW9uQ2hlY2tib3gsXG4gKiBhbmQgYWRkcyBjdXN0b20gcHJvcGVydGllcyBsaWtlIHR5cGUgYW5kIGNsYXNzTmFtZS5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFuZ3VsYXJGaWVsZERlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7UG9zc2libGVJbnB1dFR5cGVzfSB0eXBlIC0gVGhlIHR5cGUgb2YgaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN0cmluZ1tdfSBjbGFzc05hbWUgLSBDU1MgY2xhc3MgbmFtZShzKSBmb3IgdGhlIGZpZWxkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NhbmNlbFRleHRdIC0gVGV4dCBmb3IgdGhlIGNhbmNlbCBidXR0b24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpbnRlcmZhY2VdIC0gSW50ZXJmYWNlIHN0eWxlIGZvciBzZWxlY3QgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzZWxlY3RlZFRleHRdIC0gVGV4dCBmb3Igc2VsZWN0ZWQgb3B0aW9uIChmcm9tIElvblNlbGVjdClcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBbaW50ZXJmYWNlT3B0aW9uc10gLSBPcHRpb25zIGZvciB0aGUgaW50ZXJmYWNlIChmcm9tIElvblNlbGVjdClcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcm93c10gLSBOdW1iZXIgb2Ygcm93cyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2NvbHNdIC0gTnVtYmVyIG9mIGNvbHVtbnMgZm9yIHRleHRhcmVhIChmcm9tIElvblRleHRhcmVhKVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthbGlnbm1lbnRdIC0gQWxpZ25tZW50IG9mIGNoZWNrYm94IChmcm9tIElvbkNoZWNrYm94KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtqdXN0aWZ5XSAtIEp1c3RpZmljYXRpb24gb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtjaGVja2VkXSAtIFdoZXRoZXIgY2hlY2tib3ggaXMgY2hlY2tlZCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEFuZ3VsYXJGaWVsZERlZmluaXRpb24gPSBPbWl0PFxuICBJb25JbnB1dCxcbiAgfCAnaW9uSW5wdXQnXG4gIHwgJ2lvbkZvY3VzJ1xuICB8ICdpb25DaGFuZ2UnXG4gIHwgJ2lvbkJsdXInXG4gIHwgJ2dldElucHV0RWxlbWVudCdcbiAgfCAnc2V0Rm9jdXMnXG4gIHwgJ2xhYmVsJ1xuICB8ICdlbCdcbiAgfCAneidcbiAgfCAndHlwZSdcbj4gJlxuICBQaWNrPFxuICAgIElvblNlbGVjdCxcbiAgICAnY2FuY2VsVGV4dCcgfCAnaW50ZXJmYWNlJyB8ICdzZWxlY3RlZFRleHQnIHwgJ2ludGVyZmFjZU9wdGlvbnMnXG4gID4gJlxuICBQaWNrPElvblRleHRhcmVhLCAncm93cycgfCAnY29scyc+ICZcbiAgUGljazxJb25DaGVja2JveCwgJ2FsaWdubWVudCcgfCAnanVzdGlmeScgfCAnY2hlY2tlZCc+ICYge1xuICB0eXBlOiBQb3NzaWJsZUlucHV0VHlwZXM7XG4gIGNsYXNzTmFtZTogc3RyaW5nIHwgc3RyaW5nW107XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0cmluZyBvciBib29sZWFuIHJlcHJlc2VudGF0aW9uIG9mIGEgYm9vbGVhbiB2YWx1ZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHZhbHVlIHRoYXQgY2FuIGJlIGVpdGhlciBhIGJvb2xlYW4gb3IgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuLlxuICogVGhpcyBpcyB1c2VmdWwgZm9yIGhhbmRsaW5nIGF0dHJpYnV0ZSB2YWx1ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBzdHJpbmdzIG9yIGJvb2xlYW5zLlxuICogQHR5cGVkZWYgeygndHJ1ZSd8J2ZhbHNlJ3xib29sZWFuKX0gU3RyaW5nT3JCb29sZWFuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdPckJvb2xlYW4gPSAndHJ1ZScgfCAnZmFsc2UnIHwgYm9vbGVhbjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIHNlbGVjdCBpbnB1dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIElucHV0T3B0aW9uIGludGVyZmFjZSB3aXRoIGEgc2VsZWN0ZWQgcHJvcGVydHkgdG8gaW5kaWNhdGVcbiAqIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0T3B0aW9uID0gSW5wdXRPcHRpb24gJiB7IHNlbGVjdGVkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3IgcmFkaW8gaW5wdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBJbnB1dE9wdGlvbiBpbnRlcmZhY2Ugd2l0aCBhIGNoZWNrZWQgcHJvcGVydHkgdG8gaW5kaWNhdGVcbiAqIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBjaGVja2VkIGJ5IGRlZmF1bHQuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBSYWRpb09wdGlvbiA9IElucHV0T3B0aW9uICYgeyBjaGVja2VkPzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3IgY2hlY2tib3ggaW5wdXRzXG4gKiBAc3VtbWFyeSBBbGlhcyBmb3IgUmFkaW9PcHRpb24sIGFzIGNoZWNrYm94IG9wdGlvbnMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgcmFkaW8gb3B0aW9ucy5cbiAqIEB0eXBlZGVmIHtSYWRpb09wdGlvbn0gQ2hlY2tib3hPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIENoZWNrYm94T3B0aW9uID0gUmFkaW9PcHRpb247XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2Ugb3B0aW9uIHR5cGUgZm9yIGlucHV0IGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBzdHJ1Y3R1cmUgZm9yIG9wdGlvbnMgdXNlZCBpbiBzZWxlY3QsIHJhZGlvLCBhbmQgY2hlY2tib3ggaW5wdXRzLlxuICogQ29udGFpbnMgcHJvcGVydGllcyBmb3IgdGhlIGRpc3BsYXkgdGV4dCwgdmFsdWUsIGRpc2FibGVkIHN0YXRlLCBDU1MgY2xhc3MsIGFuZCBpY29uLlxuICogQGludGVyZmFjZSBJbnB1dE9wdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgLSBUaGUgZGlzcGxheSB0ZXh0IGZvciB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHZhbHVlIC0gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge1N0cmluZ09yQm9vbGVhbn0gW2Rpc2FibGVkXSAtIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGFzc05hbWVdIC0gQ1NTIGNsYXNzIG5hbWUgZm9yIHN0eWxpbmcgdGhlIG9wdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpY29uXSAtIEljb24gdG8gZGlzcGxheSB3aXRoIHRoZSBvcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPcHRpb24ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gIGRpc2FibGVkPzogU3RyaW5nT3JCb29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRhcmdldCBvcHRpb25zIGZvciBIVE1MIGZvcm1zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSB0YXJnZXQgdmFsdWVzIGZvciBIVE1MIGZvcm1zLCBpbmNsdWRpbmcgc3RhbmRhcmQgdGFyZ2V0c1xuICogbGlrZSAnX2JsYW5rJywgJ19zZWxmJywgJ19wYXJlbnQnLCBhbmQgJ190b3AnLCBhcyB3ZWxsIGFzIGN1c3RvbSBzdHJpbmcgdmFsdWVzLlxuICogQHR5cGVkZWYgeygnX2JsYW5rJ3wnX3NlbGYnfCdfcGFyZW50J3wnX3RvcCd8c3RyaW5nKX0gSFRNTEZvcm1UYXJnZXRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEhUTUxGb3JtVGFyZ2V0ID0gJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnIHwgc3RyaW5nO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElMaXN0SXRlbVByb3Age1xuLy8gICByZW5kZXI/OiBzdHJpbmcgfCBib29sZWFuO1xuLy8gICB0cmFuc2xhdGVQcm9wcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuLy8gICBidXR0b24/OiBTdHJpbmdPckJvb2xlYW47XG4vLyAgIGljb24/OiBzdHJpbmc7XG4vLyAgIGljb25TbG90PzogJ3N0YXJ0JyB8ICdlbmQnO1xuLy8gICB0aXRsZT86IHN0cmluZztcbi8vICAgZGVzY3JpdHBpb24/OiBzdHJpbmc7XG4vLyAgIGluZm8/OiBzdHJpbmc7XG4vLyAgIHN1YmluZm8/OiBzdHJpbmc7XG4vLyB9XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbGlzdCBjb21wb25lbnQgcmVmcmVzaCBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBhIHJlZnJlc2ggZXZlbnQgZm9yIGxpc3QgY29tcG9uZW50cy5cbiAqIENvbnRhaW5zIGFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgdGhlIG5ldyBkYXRhIGZvciB0aGUgbGlzdC5cbiAqIEBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnRcbiAqIEBwcm9wZXJ0eSB7S2V5VmFsdWVbXX0gZGF0YSAtIEFycmF5IG9mIGtleS12YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgdGhlIG5ldyBkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElMaXN0Q29tcG9uZW50UmVmcmVzaEV2ZW50IHtcbiAgZGF0YTogS2V5VmFsdWVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VydmljZUNvbnRyb2wge1xuICBjb250cm9sOiBGb3JtR3JvdXA7XG4gIHByb3BzOiBBbmd1bGFyRmllbGREZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGZvciBmb3JtIHNlcnZpY2UgY29udHJvbHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBmb3JtIGNvbnRyb2xzIG1hbmFnZWQgYnkgdGhlIGZvcm0gc2VydmljZS5cbiAqIEl0J3MgYSBuZXN0ZWQgcmVjb3JkIHdoZXJlIHRoZSBvdXRlciBrZXkgaXMgdGhlIGZvcm0gZ3JvdXAgbmFtZSwgdGhlIGlubmVyIGtleVxuICogaXMgdGhlIGNvbnRyb2wgbmFtZSwgYW5kIHRoZSB2YWx1ZSBjb250YWlucyB0aGUgZm9ybSBncm91cCBhbmQgZmllbGQgcHJvcGVydGllcy5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2w6IEZvcm1Hcm91cDsgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb24gfT4+fSBGb3JtU2VydmljZUNvbnRyb2xzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VydmljZUNvbnRyb2xzID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFJlY29yZDxzdHJpbmcsIEZvcm1TZXJ2aWNlQ29udHJvbD5cbj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWwgcmVuZGVyIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBjdXN0b20gZXZlbnRzIHRyaWdnZXJlZCBkdXJpbmcgbW9kZWwgcmVuZGVyaW5nLlxuICogQ29udGFpbnMgdGhlIGV2ZW50IGRldGFpbCwgY29tcG9uZW50IG5hbWUsIGFuZCBldmVudCBuYW1lLlxuICogQGludGVyZmFjZSBNb2RlbFJlbmRlckN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge0Jhc2VDdXN0b21FdmVudH0gZGV0YWlsIC0gVGhlIGRldGFpbGVkIGV2ZW50IGluZm9ybWF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsUmVuZGVyQ3VzdG9tRXZlbnQge1xuICBkZXRhaWw6IEJhc2VDdXN0b21FdmVudDtcbiAgY29tcG9uZW50OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGl0ZW0gY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGN1c3RvbSBldmVudHMgdHJpZ2dlcmVkIGJ5IGxpc3QgaXRlbXMuXG4gKiBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGFjdGlvbiBhbmQgcHJpbWFyeSBrZXkuXG4gKiBAaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhY3Rpb24gLSBUaGUgYWN0aW9uIHBlcmZvcm1lZCBvbiB0aGUgbGlzdCBpdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrXSAtIE9wdGlvbmFsIHByaW1hcnkga2V5IG9mIHRoZSBhZmZlY3RlZCBpdGVtXG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1DdXN0b21FdmVudCBleHRlbmRzIEJhc2VDdXN0b21FdmVudCB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBwaz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBpbnRlcmZhY2UgZm9yIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGJhc2Ugc3RydWN0dXJlIGZvciBjdXN0b20gZXZlbnRzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIENvbnRhaW5zIHByb3BlcnRpZXMgZm9yIHRoZSBldmVudCBkYXRhLCB0YXJnZXQgZWxlbWVudCwgbmFtZSwgYW5kIGNvbXBvbmVudC5cbiAqIEBpbnRlcmZhY2UgQmFzZUN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtuYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDdXN0b21FdmVudCB7XG4gIGRhdGE6IHVua25vd247XG4gIHRhcmdldD86IEhUTUxFbGVtZW50O1xuICBuYW1lPzogc3RyaW5nO1xuICBjb21wb25lbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBpbnRlcmZhY2UgZm9yIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGJhc2Ugc3RydWN0dXJlIGZvciBjdXN0b20gZXZlbnRzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIENvbnRhaW5zIHByb3BlcnRpZXMgZm9yIHRoZSBldmVudCBkYXRhLCB0YXJnZXQgZWxlbWVudCwgbmFtZSwgYW5kIGNvbXBvbmVudC5cbiAqIEBpbnRlcmZhY2UgQmFzZUN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtuYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDcnVkRm9ybUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBoYW5kbGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRJbnB1dCBleHRlbmRzIEZpZWxkUHJvcGVydGllcyB7XG4gIHVwZGF0ZU1vZGU/OiBGaWVsZFVwZGF0ZU1vZGU7XG4gIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb25maWcge1xuICBjb21wb25lbnQ6IHN0cmluZztcbiAgaW5wdXRzOiBDb21wb25lbnRJbnB1dDtcbiAgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3RvcjtcbiAgY2hpbGRyZW4/OiBDb21wb25lbnRDb25maWdbXTtcbn1cblxuZXhwb3J0IHR5cGUgRm9ybVBhcmVudEdyb3VwID0gW0Zvcm1Hcm91cCwgIHN0cmluZ107XG5cblxuXG4iXX0=
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
115
115
  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
116
116
  }]
117
117
  }] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9mb3ItYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBdUIsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFlBQVksRUFDWixNQUFNLEVBQ04sVUFBVSxFQUNWLE9BQU8sRUFDUCxTQUFTLEVBQ1QsYUFBYSxFQUNiLFFBQVEsRUFDVCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFcEQsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixNQUFNO0lBQ04sZUFBZTtJQUNmLFlBQVk7SUFDWixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsYUFBYTtJQUNiLFVBQVU7SUFDVixZQUFZO0lBQ1osV0FBVztJQUNYLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsYUFBYTtDQUNkLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxTQUFTLENBQUMsUUFBeUI7SUFDakQsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQWUsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFPSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtTQUMzQixDQUFDO0lBQ0osQ0FBQzsrR0FkVSxnQkFBZ0I7Z0hBQWhCLGdCQUFnQixZQWhEM0IsTUFBTTtZQUNOLGVBQWU7WUFDZixZQUFZO1lBQ1osTUFBTTtZQUNOLE9BQU87WUFDUCxRQUFRO1lBQ1IsU0FBUztZQUNULGFBQWE7WUFDYixVQUFVO1lBQ1YsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWEsYUFiYixNQUFNO1lBQ04sZUFBZTtZQUNmLFlBQVk7WUFDWixNQUFNO1lBQ04sT0FBTztZQUNQLFFBQVE7WUFDUixTQUFTO1lBQ1QsYUFBYTtZQUNiLFVBQVU7WUFDVixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsYUFBYTtnSEFtQ0YsZ0JBQWdCLFlBaEQzQixNQUFNO1lBQ04sZUFBZTtZQUNmLFlBQVk7WUFDWixNQUFNO1lBQ04sT0FBTztZQUNQLFFBQVE7WUFDUixTQUFTO1lBRVQsVUFBVTtZQUNWLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFIZixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlOzs0RkFvQ0osZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxvQkFBb0I7b0JBQzdCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTW9kdWxlV2l0aFByb3ZpZGVycywgTk9fRVJST1JTX1NDSEVNQX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgSW9uQXBwLFxuICBJb25Sb3V0ZXJPdXRsZXQsXG4gIElvblNwbGl0UGFuZSxcbiAgSW9uSW1nLFxuICBJb25Db250ZW50LFxuICBJb25UZXh0LFxuICBJb25CdXR0b24sXG4gIElvblJvdXRlckxpbmssXG4gIElvblRpdGxlXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gJ0BkZWNhZi10cy9sb2dnaW5nJztcblxuY29uc3QgQ29tcG9uZW50c0FuZE1vZHVsZXMgPSBbXG4gIElvbkFwcCxcbiAgSW9uUm91dGVyT3V0bGV0LFxuICBJb25TcGxpdFBhbmUsXG4gIElvbkltZyxcbiAgSW9uVGV4dCxcbiAgSW9uVGl0bGUsXG4gIElvbkJ1dHRvbixcbiAgSW9uUm91dGVyTGluayxcbiAgSW9uQ29udGVudCxcbiAgQ29tbW9uTW9kdWxlLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVHJhbnNsYXRlTW9kdWxlLFxuICBUcmFuc2xhdGVQaXBlLFxuXTtcblxuY29uc3QgbG9nID0gTG9nZ2luZy5mb3IoXCJmb3ItYW5ndWxhclwiKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2dnZXIoaW5zdGFuY2U6IG9iamVjdCB8IHN0cmluZyk6IExvZ2dlciB7XG4gIHJldHVybiBsb2cuZm9yKGluc3RhbmNlIGFzIGFueSk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1haW4gQW5ndWxhciBtb2R1bGUgZm9yIHRoZSBEZWNhZiBmcmFtZXdvcmtcbiAqIEBzdW1tYXJ5IFRoZSBGb3JBbmd1bGFyTW9kdWxlIHByb3ZpZGVzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIGludGVncmF0aW5nIERlY2FmIHdpdGggQW5ndWxhciBhcHBsaWNhdGlvbnMuXG4gKiBJdCBpbXBvcnRzIGFuZCBleHBvcnRzIGNvbW1vbiBBbmd1bGFyIGFuZCBJb25pYyBjb21wb25lbnRzIGFuZCBtb2R1bGVzIG5lZWRlZCBmb3IgRGVjYWYgYXBwbGljYXRpb25zLFxuICogaW5jbHVkaW5nIGZvcm0gaGFuZGxpbmcsIHRyYW5zbGF0aW9uIHN1cHBvcnQsIGFuZCBJb25pYyBVSSBjb21wb25lbnRzLiBUaGlzIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWRcbiAqIGRpcmVjdGx5IG9yIHZpYSB0aGUgZm9yUm9vdCgpIG1ldGhvZCBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uIGluIHRoZSBhcHBsaWNhdGlvbidzIHJvb3QgbW9kdWxlLlxuICpcbiAqIEBjbGFzcyBGb3JBbmd1bGFyTW9kdWxlXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gSW4geW91ciBhcHAgbW9kdWxlOlxuICogQE5nTW9kdWxlKHtcbiAqICAgaW1wb3J0czogW1xuICogICAgIEZvckFuZ3VsYXJNb2R1bGUuZm9yUm9vdCgpLFxuICogICAgIC8vIG90aGVyIGltcG9ydHNcbiAqICAgXSxcbiAqICAgLy8gLi4uXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7fVxuICogYGBgXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IENvbXBvbmVudHNBbmRNb2R1bGVzLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBDb21wb25lbnRzQW5kTW9kdWxlcyxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5PX0VSUk9SU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JBbmd1bGFyTW9kdWxlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbW9kdWxlIHdpdGggcHJvdmlkZXJzIGZvciByb290IG1vZHVsZSBpbXBvcnRcbiAgICogQHN1bW1hcnkgVGhpcyBzdGF0aWMgbWV0aG9kIHByb3ZpZGVzIHRoZSBwcm9wZXIgd2F5IHRvIGltcG9ydCB0aGUgRm9yQW5ndWxhck1vZHVsZSBpbiB0aGUgYXBwbGljYXRpb24nc1xuICAgKiByb290IG1vZHVsZS4gSXQgcmV0dXJucyBhIE1vZHVsZVdpdGhQcm92aWRlcnMgb2JqZWN0IHRoYXQgaW5jbHVkZXMgdGhlIEZvckFuZ3VsYXJNb2R1bGUgaXRzZWxmLlxuICAgKiBVc2luZyBmb3JSb290KCkgZW5zdXJlcyB0aGF0IHRoZSBtb2R1bGUgYW5kIGl0cyBwcm92aWRlcnMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkIGFuZCBvbmx5XG4gICAqIGluc3RhbnRpYXRlZCBvbmNlIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHJldHVybiB7TW9kdWxlV2l0aFByb3ZpZGVyczxGb3JBbmd1bGFyTW9kdWxlPn0gVGhlIG1vZHVsZSB3aXRoIGl0cyBwcm92aWRlcnNcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Rm9yQW5ndWxhck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRm9yQW5ndWxhck1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9mb3ItYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBdUIsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFlBQVksRUFDWixNQUFNLEVBQ04sVUFBVSxFQUNWLE9BQU8sRUFDUCxTQUFTLEVBQ1QsYUFBYSxFQUNiLFFBQVEsRUFDVCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFHcEQsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixNQUFNO0lBQ04sZUFBZTtJQUNmLFlBQVk7SUFDWixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsYUFBYTtJQUNiLFVBQVU7SUFDVixZQUFZO0lBQ1osV0FBVztJQUNYLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsYUFBYTtDQUNkLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxTQUFTLENBQUMsUUFBeUM7SUFDakUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQWlDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7U0FDM0IsQ0FBQztJQUNKLENBQUM7K0dBZFUsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsWUFoRDNCLE1BQU07WUFDTixlQUFlO1lBQ2YsWUFBWTtZQUNaLE1BQU07WUFDTixPQUFPO1lBQ1AsUUFBUTtZQUNSLFNBQVM7WUFDVCxhQUFhO1lBQ2IsVUFBVTtZQUNWLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhLGFBYmIsTUFBTTtZQUNOLGVBQWU7WUFDZixZQUFZO1lBQ1osTUFBTTtZQUNOLE9BQU87WUFDUCxRQUFRO1lBQ1IsU0FBUztZQUNULGFBQWE7WUFDYixVQUFVO1lBQ1YsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7Z0hBbUNGLGdCQUFnQixZQWhEM0IsTUFBTTtZQUNOLGVBQWU7WUFDZixZQUFZO1lBQ1osTUFBTTtZQUNOLE9BQU87WUFDUCxRQUFRO1lBQ1IsU0FBUztZQUVULFVBQVU7WUFDVixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBSGYsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTs7NEZBb0NKLGdCQUFnQjtrQkFONUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5PX0VSUk9SU19TQ0hFTUF9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIElvbkFwcCxcbiAgSW9uUm91dGVyT3V0bGV0LFxuICBJb25TcGxpdFBhbmUsXG4gIElvbkltZyxcbiAgSW9uQ29udGVudCxcbiAgSW9uVGV4dCxcbiAgSW9uQnV0dG9uLFxuICBJb25Sb3V0ZXJMaW5rLFxuICBJb25UaXRsZVxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tICdAZGVjYWYtdHMvbG9nZ2luZyc7XG5pbXBvcnQgeyBGdW5jdGlvbkxpa2UgfSBmcm9tICcuL2VuZ2luZSc7XG5cbmNvbnN0IENvbXBvbmVudHNBbmRNb2R1bGVzID0gW1xuICBJb25BcHAsXG4gIElvblJvdXRlck91dGxldCxcbiAgSW9uU3BsaXRQYW5lLFxuICBJb25JbWcsXG4gIElvblRleHQsXG4gIElvblRpdGxlLFxuICBJb25CdXR0b24sXG4gIElvblJvdXRlckxpbmssXG4gIElvbkNvbnRlbnQsXG4gIENvbW1vbk1vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlUGlwZSxcbl07XG5cbmNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKFwiZm9yLWFuZ3VsYXJcIik7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyKGluc3RhbmNlOiBzdHJpbmcgfCBGdW5jdGlvbkxpa2UgfCB1bmtub3duKTogTG9nZ2VyIHtcbiAgcmV0dXJuIGxvZy5mb3IoaW5zdGFuY2UgYXMgc3RyaW5nIHwgRnVuY3Rpb25MaWtlKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFpbiBBbmd1bGFyIG1vZHVsZSBmb3IgdGhlIERlY2FmIGZyYW1ld29ya1xuICogQHN1bW1hcnkgVGhlIEZvckFuZ3VsYXJNb2R1bGUgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgaW50ZWdyYXRpbmcgRGVjYWYgd2l0aCBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqIEl0IGltcG9ydHMgYW5kIGV4cG9ydHMgY29tbW9uIEFuZ3VsYXIgYW5kIElvbmljIGNvbXBvbmVudHMgYW5kIG1vZHVsZXMgbmVlZGVkIGZvciBEZWNhZiBhcHBsaWNhdGlvbnMsXG4gKiBpbmNsdWRpbmcgZm9ybSBoYW5kbGluZywgdHJhbnNsYXRpb24gc3VwcG9ydCwgYW5kIElvbmljIFVJIGNvbXBvbmVudHMuIFRoaXMgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZFxuICogZGlyZWN0bHkgb3IgdmlhIHRoZSBmb3JSb290KCkgbWV0aG9kIGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24gaW4gdGhlIGFwcGxpY2F0aW9uJ3Mgcm9vdCBtb2R1bGUuXG4gKlxuICogQGNsYXNzIEZvckFuZ3VsYXJNb2R1bGVcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiB5b3VyIGFwcCBtb2R1bGU6XG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgRm9yQW5ndWxhck1vZHVsZS5mb3JSb290KCksXG4gKiAgICAgLy8gb3RoZXIgaW1wb3J0c1xuICogICBdLFxuICogICAvLyAuLi5cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogQ29tcG9uZW50c0FuZE1vZHVsZXMsXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IENvbXBvbmVudHNBbmRNb2R1bGVzLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvckFuZ3VsYXJNb2R1bGUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBtb2R1bGUgd2l0aCBwcm92aWRlcnMgZm9yIHJvb3QgbW9kdWxlIGltcG9ydFxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyBtZXRob2QgcHJvdmlkZXMgdGhlIHByb3BlciB3YXkgdG8gaW1wb3J0IHRoZSBGb3JBbmd1bGFyTW9kdWxlIGluIHRoZSBhcHBsaWNhdGlvbidzXG4gICAqIHJvb3QgbW9kdWxlLiBJdCByZXR1cm5zIGEgTW9kdWxlV2l0aFByb3ZpZGVycyBvYmplY3QgdGhhdCBpbmNsdWRlcyB0aGUgRm9yQW5ndWxhck1vZHVsZSBpdHNlbGYuXG4gICAqIFVzaW5nIGZvclJvb3QoKSBlbnN1cmVzIHRoYXQgdGhlIG1vZHVsZSBhbmQgaXRzIHByb3ZpZGVycyBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYW5kIG9ubHlcbiAgICogaW5zdGFudGlhdGVkIG9uY2UgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtNb2R1bGVXaXRoUHJvdmlkZXJzPEZvckFuZ3VsYXJNb2R1bGU+fSBUaGUgbW9kdWxlIHdpdGggaXRzIHByb3ZpZGVyc1xuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGb3JBbmd1bGFyTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBGb3JBbmd1bGFyTW9kdWxlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { UIKeys, parseValueByType, HTML5InputTypes, HTML5CheckTypes, escapeHtml, parseToNumber, RenderingEngine, RenderingError } from '@decaf-ts/ui-decorators';
2
2
  import * as i0 from '@angular/core';
3
- import { reflectComponentType, inject, EnvironmentInjector, EventEmitter, ViewContainerRef, TemplateRef, ViewChild, Input, Output, Component, ElementRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
+ import { reflectComponentType, inject, EnvironmentInjector, EventEmitter, ViewContainerRef, TemplateRef, ViewChild, Input, Output, Component, Injector, ElementRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
4
4
  import { VALIDATION_PARENT_KEY, ValidationKeys, DEFAULT_PATTERNS, Validation, ComparisonValidationKeys, PathProxyEngine, isValidDate, parseDate, Model, sf } from '@decaf-ts/decorator-validation';
5
5
  import * as i1 from '@angular/common';
6
6
  import { NgComponentOutlet, Location } from '@angular/common';
@@ -10,10 +10,11 @@ import * as i2 from '@angular/forms';
10
10
  import { FormGroup, FormControl, Validators } from '@angular/forms';
11
11
  import { getLogger, ForAngularModule } from 'src/lib/for-angular.module';
12
12
  import { NgxRenderingEngine2 as NgxRenderingEngine2$1 } from 'src/lib/engine/NgxRenderingEngine2';
13
- import { __decorate, __metadata } from 'tslib';
13
+ import { __decorate } from 'tslib';
14
+ import * as i3 from '@ngx-translate/core';
15
+ import { TranslateService } from '@ngx-translate/core';
14
16
  import * as i1$1 from '@ionic/angular/standalone';
15
17
  import { IonInput, IonItem, IonCheckbox, IonRadioGroup, IonRadio, IonSelect, IonSelectOption, IonLabel, IonTextarea, IonText, IonIcon } from '@ionic/angular/standalone';
16
- import * as i3 from '@ngx-translate/core';
17
18
 
18
19
  /**
19
20
  * @description Angular engine key constants
@@ -241,7 +242,7 @@ class ValidatorFactory {
241
242
  * Enables Validators handling method to access parent and child properties using consistent dot-notation in Angular forms.
242
243
  *
243
244
  * @param {AbstractControl} control - The control to wrap in a proxy.
244
- * @returns {PathProxy<any>} A proxy object exposing form values and enabling recursive parent access.
245
+ * @returns {PathProxy<unknown>} A proxy object exposing form values and enabling recursive parent access.
245
246
  */
246
247
  static createProxy(control) {
247
248
  return PathProxyEngine.create(control, {
@@ -260,10 +261,10 @@ class ValidatorFactory {
260
261
  // const control = value.controls[prop];
261
262
  // return control instanceof FormControl ? control.value : control;
262
263
  // }
263
- return target[prop];
264
+ return target?.[prop];
264
265
  },
265
266
  getParent: function (target) {
266
- return target._parent;
267
+ return target?.['_parent'];
267
268
  },
268
269
  ignoreUndefined: true,
269
270
  ignoreNull: true,
@@ -661,8 +662,8 @@ class NgxRenderingEngine2 extends RenderingEngine {
661
662
  * Method-->>Caller: return AngularDynamicOutput
662
663
  */
663
664
  fromFieldDefinition(fieldDef, vcr, injector, tpl, registryFormId = Date.now().toString(36).toUpperCase()) {
664
- const cmp = fieldDef?.component || NgxRenderingEngine2.components(fieldDef.tag);
665
- const component = (cmp.constructor);
665
+ const cmp = fieldDef?.['component'] || NgxRenderingEngine2.components(fieldDef.tag);
666
+ const component = cmp.constructor;
666
667
  const componentMetadata = reflectComponentType(component);
667
668
  if (!componentMetadata) {
668
669
  throw new InternalError(`Metadata for component ${fieldDef.tag} not found.`);
@@ -710,7 +711,7 @@ class NgxRenderingEngine2 extends RenderingEngine {
710
711
  * @param {ComponentMirror<unknown>} metadata - The component metadata for input validation
711
712
  * @param {ViewContainerRef} vcr - The view container reference for component creation
712
713
  * @param {Injector} injector - The Angular injector for dependency injection
713
- * @param {any} [template=[]] - The template nodes to project into the component
714
+ * @param {Node[]} [template=[]] - The template nodes to project into the component
714
715
  * @return {ComponentRef<unknown>} The created component reference
715
716
  */
716
717
  static createComponent(component, inputs = {}, metadata, vcr, injector, template = []) {
@@ -797,10 +798,9 @@ class NgxRenderingEngine2 extends RenderingEngine {
797
798
  * and sets the initialized flag to true. This method is called before the engine is used
798
799
  * to ensure it's properly set up for rendering operations.
799
800
  *
800
- * @param {...any[]} args - Initialization arguments
801
801
  * @return {Promise<void>} A promise that resolves when initialization is complete
802
802
  */
803
- async initialize(...args) {
803
+ async initialize() {
804
804
  if (this.initialized)
805
805
  return;
806
806
  // ValidatableByType[]
@@ -1099,13 +1099,11 @@ class NgxRenderingEngine extends RenderingEngine {
1099
1099
  * @description Initializes the rendering engine
1100
1100
  * @summary This method initializes the rendering engine. It checks if the engine is already initialized
1101
1101
  * and sets the initialized flag to true. This method is called before the engine is used.
1102
- * @param {...any[]} args - Initialization arguments
1103
1102
  * @return {Promise<void>} A promise that resolves when initialization is complete
1104
1103
  */
1105
- async initialize(...args) {
1104
+ async initialize() {
1106
1105
  if (this.initialized)
1107
1106
  return;
1108
- // ValidatableByType[]
1109
1107
  this.initialized = true;
1110
1108
  }
1111
1109
  /**
@@ -1271,9 +1269,12 @@ class ComponentRendererComponent {
1271
1269
  * @memberOf ComponentRendererComponent
1272
1270
  */
1273
1271
  ngOnInit() {
1274
- if (!this.parent)
1272
+ if (!this.parent) {
1275
1273
  this.createComponent(this.tag, this.globals);
1276
- this.createParentComponent();
1274
+ }
1275
+ else {
1276
+ this.createParentComponent();
1277
+ }
1277
1278
  }
1278
1279
  /**
1279
1280
  * @description Cleans up resources when the component is destroyed.
@@ -1494,8 +1495,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1494
1495
  * ModelRenderer-->>App: Emit events
1495
1496
  */
1496
1497
  class ModelRendererComponent {
1497
- constructor(injector) {
1498
- this.injector = injector;
1498
+ constructor() {
1499
1499
  /**
1500
1500
  * @description Global variables to be passed to the rendered component
1501
1501
  */
@@ -1504,8 +1504,10 @@ class ModelRendererComponent {
1504
1504
  * @description Event emitter for custom events from the rendered component
1505
1505
  */
1506
1506
  this.listenEvent = new EventEmitter();
1507
+ this.injector = inject(Injector);
1507
1508
  this.JSON = JSON;
1508
1509
  }
1510
+ // constructor() {}
1509
1511
  /**
1510
1512
  * @description Refreshes the rendered model
1511
1513
  * @param {string | M} model - The model to be rendered
@@ -1527,7 +1529,7 @@ class ModelRendererComponent {
1527
1529
  */
1528
1530
  ngOnChanges(changes) {
1529
1531
  if (changes[BaseComponentProps.MODEL]) {
1530
- const { currentValue, previousValue, firstChange } = changes[BaseComponentProps.MODEL];
1532
+ const { currentValue } = changes[BaseComponentProps.MODEL];
1531
1533
  this.refresh(currentValue);
1532
1534
  }
1533
1535
  }
@@ -1571,13 +1573,13 @@ class ModelRendererComponent {
1571
1573
  }
1572
1574
  }
1573
1575
  }
1574
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1576
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1575
1577
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ModelRendererComponent, isStandalone: true, selector: "ngx-decaf-model-renderer", inputs: { model: "model", globals: "globals", rendererId: "rendererId" }, outputs: { listenEvent: "listenEvent" }, viewQueries: [{ propertyName: "inner", first: true, predicate: ["inner"], descendants: true, read: TemplateRef, static: true }, { propertyName: "vcr", first: true, predicate: ["componentOuter"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ComponentRendererComponent, selector: "ngx-decaf-component-renderer", inputs: ["tag", "globals", "parent"], outputs: ["listenEvent"] }] }); }
1576
1578
  }
1577
1579
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModelRendererComponent, decorators: [{
1578
1580
  type: Component,
1579
1581
  args: [{ standalone: true, imports: [ForAngularModule, NgComponentOutlet, ComponentRendererComponent], selector: 'ngx-decaf-model-renderer', template: " <ng-template #componentOuter></ng-template>\n <ng-template #inner>\n <div [id]=\"rendererId || null\">\n @for (child of output?.children; track child) {\n @if(child?.children?.length) {\n <ngx-decaf-component-renderer [parent]=\"child\" />\n } @else {\n <ng-container\n #childComponents\n *ngComponentOutlet=\"\n child.component;\n injector: child.injector;\n inputs: child.inputs;\n content:child.content;\n \"\n />\n }\n }\n </div>\n </ng-template>\n" }]
1580
- }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { model: [{
1582
+ }], propDecorators: { model: [{
1581
1583
  type: Input,
1582
1584
  args: [{ required: true }]
1583
1585
  }], globals: [{
@@ -1603,8 +1605,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1603
1605
  * implementing both CrudFormField and ControlValueAccessor interfaces.
1604
1606
  */
1605
1607
  class NgxCrudFormField {
1606
- constructor(elementRef) {
1607
- this.elementRef = elementRef;
1608
+ constructor() {
1609
+ this.translateService = inject(TranslateService);
1610
+ // protected constructor() {}
1608
1611
  /**
1609
1612
  * @summary String formatting function
1610
1613
  * @description Provides access to the sf function for error message formatting
@@ -1616,15 +1619,13 @@ class NgxCrudFormField {
1616
1619
  * @description Function called when the field value changes
1617
1620
  * @property {function(): unknown} onChange - onChange event handler
1618
1621
  */
1619
- this.onChange = () => {
1620
- };
1622
+ this.onChange = () => { };
1621
1623
  /**
1622
1624
  * @summary Touch callback function
1623
1625
  * @description Function called when the field is touched
1624
1626
  * @property {function(): unknown} onTouch - onTouch event handler
1625
1627
  */
1626
- this.onTouch = () => {
1627
- };
1628
+ this.onTouch = () => { };
1628
1629
  }
1629
1630
  /**
1630
1631
  * @summary Write value to the field
@@ -1694,16 +1695,21 @@ class NgxCrudFormField {
1694
1695
  /**
1695
1696
  * @summary Get field errors
1696
1697
  * @description Retrieves all errors associated with the field
1697
- * @returns {Array<{key: string, message: string}>} An array of error objects
1698
+ * @returns {string|void} An array of error objects
1698
1699
  */
1699
1700
  getErrors(parent) {
1700
- const collapsableContainer = parent.closest('ion-accordion-group');
1701
- if (collapsableContainer)
1702
- collapsableContainer.setAttribute('value', 'open');
1703
- return Object.keys(this.formControl.errors ?? {}).map(key => ({
1704
- key: key,
1705
- message: key,
1706
- }));
1701
+ const formControl = this.formControl;
1702
+ if ((!formControl.pristine || formControl.touched) && !formControl.valid) {
1703
+ const collapsableContainer = parent.closest('ion-accordion-group');
1704
+ if (collapsableContainer)
1705
+ collapsableContainer.setAttribute('value', 'open');
1706
+ const errors = Object.keys(formControl.errors ?? {}).map(key => ({
1707
+ key: key,
1708
+ message: key,
1709
+ }));
1710
+ for (const error of errors)
1711
+ return `* ${this.sf(this.translateService.instant(`errors.${error?.['message']}`), this[error?.['key']] ?? "")}`;
1712
+ }
1707
1713
  }
1708
1714
  }
1709
1715
 
@@ -1751,9 +1757,8 @@ class NgxCrudFormField {
1751
1757
  * @memberOf module:for-angular
1752
1758
  */
1753
1759
  let CrudFieldComponent = class CrudFieldComponent extends NgxCrudFormField {
1754
- constructor(elementRef) {
1755
- super(elementRef);
1756
- this.elementRef = elementRef;
1760
+ constructor() {
1761
+ super(...arguments);
1757
1762
  /**
1758
1763
  * @description The parent field path, if this field is nested.
1759
1764
  * @summary Specifies the full dot-delimited path of the parent field. This is only set when the field is nested.
@@ -1772,6 +1777,15 @@ let CrudFieldComponent = class CrudFieldComponent extends NgxCrudFormField {
1772
1777
  * @memberOf CrudFieldComponent
1773
1778
  */
1774
1779
  this.value = '';
1780
+ /**
1781
+ * @description Interface style for select inputs.
1782
+ * @summary Specifies the interface style for select inputs, such as 'alert', 'action-sheet', or 'popover'.
1783
+ * This determines how the select options are presented to the user.
1784
+ *
1785
+ * @type {SelectInterface}
1786
+ * @memberOf CrudFieldComponent
1787
+ */
1788
+ this.interface = 'popover';
1775
1789
  /**
1776
1790
  * @description Spellcheck attribute for text inputs.
1777
1791
  * @summary Enables or disables spellchecking for text inputs.
@@ -1843,6 +1857,8 @@ let CrudFieldComponent = class CrudFieldComponent extends NgxCrudFormField {
1843
1857
  */
1844
1858
  this.translatable = true;
1845
1859
  }
1860
+ // constructor() {
1861
+ // }
1846
1862
  ngOnInit() {
1847
1863
  // super.onInit(this.updateOn);
1848
1864
  if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation)) {
@@ -1861,12 +1877,11 @@ let CrudFieldComponent = class CrudFieldComponent extends NgxCrudFormField {
1861
1877
  if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation))
1862
1878
  this.onDestroy();
1863
1879
  }
1864
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1865
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CrudFieldComponent, isStandalone: true, selector: "ngx-decaf-crud-field", inputs: { operation: "operation", name: "name", path: "path", childOf: "childOf", type: "type", value: "value", disabled: "disabled", label: "label", placeholder: "placeholder", format: "format", hidden: "hidden", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly", required: "required", step: "step", equals: "equals", different: "different", lessThan: "lessThan", lessThanOrEqual: "lessThanOrEqual", greaterThan: "greaterThan", greaterThanOrEqual: "greaterThanOrEqual", cols: "cols", rows: "rows", alignment: "alignment", checked: "checked", justify: "justify", cancelText: "cancelText", interface: "interface", options: "options", mode: "mode", spellcheck: "spellcheck", inputmode: "inputmode", autocomplete: "autocomplete", fill: "fill", labelPlacement: "labelPlacement", updateOn: "updateOn", formGroup: "formGroup", formControl: "formControl", translatable: "translatable", uid: "uid" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text class=\"dcf-display-block\" [innerHTML]=\"value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-item>\n <ion-select\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate : label) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n @if((!formControl.pristine || formControl.touched) && !formControl.valid) {\n <div class=\"error dcf-error dcf-flex dcf-flex-top\">\n @for(error of getErrors(container); track error.key) {\n * {{ sf((\"errors.\" + error.message) | translate, this[error.key]) }}\n }\n </div>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-8)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1$1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
1880
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1881
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CrudFieldComponent, isStandalone: true, selector: "ngx-decaf-crud-field", inputs: { operation: "operation", name: "name", path: "path", childOf: "childOf", type: "type", value: "value", disabled: "disabled", label: "label", placeholder: "placeholder", format: "format", hidden: "hidden", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly", required: "required", step: "step", equals: "equals", different: "different", lessThan: "lessThan", lessThanOrEqual: "lessThanOrEqual", greaterThan: "greaterThan", greaterThanOrEqual: "greaterThanOrEqual", cols: "cols", rows: "rows", alignment: "alignment", checked: "checked", justify: "justify", cancelText: "cancelText", interface: "interface", options: "options", mode: "mode", spellcheck: "spellcheck", inputmode: "inputmode", autocomplete: "autocomplete", fill: "fill", labelPlacement: "labelPlacement", updateOn: "updateOn", formGroup: "formGroup", formControl: "formControl", translatable: "translatable", uid: "uid" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-8)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1$1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
1866
1882
  };
1867
1883
  CrudFieldComponent = __decorate([
1868
- Dynamic(),
1869
- __metadata("design:paramtypes", [ElementRef])
1884
+ Dynamic()
1870
1885
  ], CrudFieldComponent);
1871
1886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, decorators: [{
1872
1887
  type: Component,
@@ -1882,8 +1897,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1882
1897
  IonLabel,
1883
1898
  IonText,
1884
1899
  IonTextarea,
1885
- ], selector: 'ngx-decaf-crud-field', schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text class=\"dcf-display-block\" [innerHTML]=\"value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-item>\n <ion-select\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate : label) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n @if((!formControl.pristine || formControl.touched) && !formControl.valid) {\n <div class=\"error dcf-error dcf-flex dcf-flex-top\">\n @for(error of getErrors(container); track error.key) {\n * {{ sf((\"errors.\" + error.message) | translate, this[error.key]) }}\n }\n </div>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-8)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"] }]
1886
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { operation: [{
1900
+ ], selector: 'ngx-decaf-crud-field', schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-8)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"] }]
1901
+ }], propDecorators: { operation: [{
1887
1902
  type: Input,
1888
1903
  args: [{ required: true }]
1889
1904
  }], name: [{
@@ -2059,7 +2074,6 @@ let CrudFormComponent = class CrudFormComponent {
2059
2074
  if (!NgxFormService.validateFields(this.formGroup))
2060
2075
  return false;
2061
2076
  const data = NgxFormService.getFormData(this.formGroup);
2062
- console.log('Submit=', data);
2063
2077
  this.submitEvent.emit({
2064
2078
  data,
2065
2079
  component: 'FormReactiveComponent',