@decaf-ts/for-angular 0.0.17 → 0.0.18

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 (32) hide show
  1. package/assets/i18n/en.json +3 -73
  2. package/assets/i18n/pt.json +5 -74
  3. package/components/crud-field/crud-field.component.d.ts +12 -3
  4. package/components/crud-form/crud-form.component.d.ts +36 -14
  5. package/components/empty-state/empty-state.component.d.ts +9 -10
  6. package/components/fieldset/fieldset.component.d.ts +9 -0
  7. package/components/filter/filter.component.d.ts +11 -2
  8. package/engine/NgxBaseComponent.d.ts +39 -39
  9. package/engine/NgxCrudFormField.d.ts +2 -1
  10. package/engine/NgxRenderingEngine.d.ts +44 -16
  11. package/engine/interfaces.d.ts +10 -0
  12. package/engine/types.d.ts +8 -0
  13. package/esm2022/components/crud-field/crud-field.component.mjs +23 -3
  14. package/esm2022/components/crud-form/crud-form.component.mjs +33 -18
  15. package/esm2022/components/empty-state/empty-state.component.mjs +11 -10
  16. package/esm2022/components/fieldset/fieldset.component.mjs +7 -4
  17. package/esm2022/components/filter/filter.component.mjs +16 -6
  18. package/esm2022/components/layout/layout.component.mjs +3 -3
  19. package/esm2022/components/list-item/list-item.component.mjs +4 -4
  20. package/esm2022/components/pagination/pagination.component.mjs +6 -6
  21. package/esm2022/engine/NgxBaseComponent.mjs +48 -53
  22. package/esm2022/engine/NgxCrudFormField.mjs +1 -1
  23. package/esm2022/engine/NgxRenderingEngine.mjs +20 -4
  24. package/esm2022/engine/interfaces.mjs +1 -1
  25. package/esm2022/engine/types.mjs +1 -1
  26. package/esm2022/helpers/utils.mjs +49 -32
  27. package/esm2022/i18n/Loader.mjs +82 -0
  28. package/fesm2022/decaf-ts-for-angular.mjs +288 -134
  29. package/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
  30. package/helpers/utils.d.ts +42 -17
  31. package/i18n/Loader.d.ts +48 -0
  32. package/package.json +10 -1
@@ -38,11 +38,27 @@ import { NgxFormService } from './NgxFormService';
38
38
  * Engine-->>Client: return AngularDynamicOutput
39
39
  */
40
40
  export class NgxRenderingEngine extends RenderingEngine {
41
+ /**
42
+ * @description Current operation context for component visibility control
43
+ * @summary Static property that stores the current operation being performed,
44
+ * which is used to determine component visibility through the 'hidden' property.
45
+ * Components can specify operations where they should be hidden, and this property
46
+ * provides the context for those visibility checks. The value is typically extracted
47
+ * from the global properties during the rendering process.
48
+ *
49
+ * @private
50
+ * @static
51
+ * @type {string | undefined}
52
+ */
41
53
  static { this._operation = undefined; }
42
54
  /**
43
- * @description Creates a new instance of NgxRenderingEngine
44
- * @summary Initializes the rendering engine with the 'angular' engine type.
45
- * This constructor sets up the base configuration needed for Angular-specific rendering.
55
+ * @description Constructs a new NgxRenderingEngine instance
56
+ * @summary Initializes a new instance of the Angular rendering engine by calling the parent
57
+ * constructor with the 'angular' engine type identifier. This constructor sets up the base
58
+ * rendering engine functionality with Angular-specific configurations and prepares the
59
+ * instance for component registration and rendering operations.
60
+ *
61
+ * @constructor
46
62
  */
47
63
  constructor() {
48
64
  super('angular');
@@ -345,4 +361,4 @@ export class NgxRenderingEngine extends RenderingEngine {
345
361
  });
346
362
  }
347
363
  }
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmd4UmVuZGVyaW5nRW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvTmd4UmVuZGVyaW5nRW5naW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBS0wsb0JBQW9CLEdBSXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQTZEO2FBd0JwRixlQUFVLEdBQXVCLFNBQVMsQ0FBQztJQVcxRDs7OztPQUlHO0lBQ0g7UUFDRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0NHO0lBQ0ssbUJBQW1CLENBQ3pCLFFBQWlELEVBQ2pELEdBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLEdBQXlCLEVBQ3pCLGlCQUF5QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUU5RCxNQUFNLEdBQUcsR0FBSSxRQUFxQixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsV0FBdUMsQ0FBQztRQUU5RCxNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFE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LENBQUMsS0FBSztvQkFDdEMsT0FBTyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUEwQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3pGLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxHQUFHLEtBQUssT0FBTztvQkFDakIsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDcEMsaUNBQWlDO2dCQUNqQyx5REFBeUQ7Z0JBQ3pELFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZERlZmluaXRpb24sIFJlbmRlcmluZ0VuZ2luZSB9IGZyb20gJ0BkZWNhZi10cy91aS1kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFuZ3VsYXJGaWVsZERlZmluaXRpb24sIEtleVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBbmd1bGFyRHluYW1pY091dHB1dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBbmd1bGFyRW5naW5lS2V5cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tICdAZGVjYWYtdHMvZGItZGVjb3JhdG9ycyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRNaXJyb3IsXG4gIENvbXBvbmVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSW5qZWN0b3IsXG4gIHJlZmxlY3RDb21wb25lbnRUeXBlLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hGb3JtU2VydmljZSB9IGZyb20gJy4vTmd4Rm9ybVNlcnZpY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBbmd1bGFyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSZW5kZXJpbmdFbmdpbmUgd2l0aCBlbmhhbmNlZCBmZWF0dXJlc1xuICogQHN1bW1hcnkgVGhpcyBjbGFzcyBleHRlbmRzIHRoZSBiYXNlIFJlbmRlcmluZ0VuZ2luZSB0byBwcm92aWRlIEFuZ3VsYXItc3BlY2lmaWMgcmVuZGVyaW5nIGNhcGFiaWxpdGllc1xuICogd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzIGNvbXBhcmVkIHRvIE5neFJlbmRlcmluZ0VuZ2luZS4gSXQgaGFuZGxlcyB0aGUgY29udmVyc2lvbiBvZiBmaWVsZCBkZWZpbml0aW9uc1xuICogdG8gQW5ndWxhciBjb21wb25lbnRzLCBtYW5hZ2VzIGNvbXBvbmVudCByZWdpc3RyYXRpb24sIGFuZCBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIGNvbXBvbmVudCBjcmVhdGlvblxuICogYW5kIGlucHV0IGhhbmRsaW5nLiBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgQW5ndWxhcidzIG5ld2VyIGNvbXBvbmVudCBBUElzLlxuICpcbiAqIEB0ZW1wbGF0ZSBBbmd1bGFyRmllbGREZWZpbml0aW9uIC0gVHlwZSBmb3IgQW5ndWxhci1zcGVjaWZpYyBmaWVsZCBkZWZpbml0aW9uc1xuICogQHRlbXBsYXRlIEFuZ3VsYXJEeW5hbWljT3V0cHV0IC0gVHlwZSBmb3IgQW5ndWxhci1zcGVjaWZpYyBjb21wb25lbnQgb3V0cHV0XG4gKlxuICogQGNsYXNzIE5neFJlbmRlcmluZ0VuZ2luZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGVuZ2luZSA9IE5neFJlbmRlcmluZ0VuZ2luZS5nZXQoKTtcbiAqIGVuZ2luZS5pbml0aWFsaXplKCk7XG4gKiBjb25zdCBvdXRwdXQgPSBlbmdpbmUucmVuZGVyKG15TW9kZWwsIHt9LCB2aWV3Q29udGFpbmVyUmVmLCBpbmplY3RvciwgdGVtcGxhdGVSZWYpO1xuICogYGBgXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgRW5naW5lIGFzIE5neFJlbmRlcmluZ0VuZ2luZVxuICogICBwYXJ0aWNpcGFudCBDb21wb25lbnRzIGFzIFJlZ2lzdGVyZWRDb21wb25lbnRzXG4gKlxuICogICBDbGllbnQtPj5FbmdpbmU6IGdldCgpXG4gKiAgIENsaWVudC0+PkVuZ2luZTogaW5pdGlhbGl6ZSgpXG4gKiAgIENsaWVudC0+PkVuZ2luZTogcmVuZGVyKG1vZGVsLCBwcm9wcywgdmNyLCBpbmplY3RvciwgdHBsKVxuICogICBFbmdpbmUtPj5FbmdpbmU6IHRvRmllbGREZWZpbml0aW9uKG1vZGVsLCBwcm9wcylcbiAqICAgRW5naW5lLT4+RW5naW5lOiBmcm9tRmllbGREZWZpbml0aW9uKGZpZWxkRGVmLCB2Y3IsIGluamVjdG9yLCB0cGwpXG4gKiAgIEVuZ2luZS0+PkNvbXBvbmVudHM6IGNvbXBvbmVudHMoZmllbGREZWYudGFnKVxuICogICBDb21wb25lbnRzLS0+PkVuZ2luZTogY29tcG9uZW50IGNvbnN0cnVjdG9yXG4gKiAgIEVuZ2luZS0+PkVuZ2luZTogY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwgaW5wdXRzLCBtZXRhZGF0YSwgdmNyLCBpbmplY3RvciwgdGVtcGxhdGUpXG4gKiAgIEVuZ2luZS0tPj5DbGllbnQ6IHJldHVybiBBbmd1bGFyRHluYW1pY091dHB1dFxuICovXG5leHBvcnQgY2xhc3MgTmd4UmVuZGVyaW5nRW5naW5lIGV4dGVuZHMgUmVuZGVyaW5nRW5naW5lPEFuZ3VsYXJGaWVsZERlZmluaXRpb24sIEFuZ3VsYXJEeW5hbWljT3V0cHV0PiB7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RyeSBvZiByZWdpc3RlcmVkIGNvbXBvbmVudHNcbiAgICogQHN1bW1hcnkgU3RhdGljIHJlZ2lzdHJ5IHRoYXQgbWFwcyBjb21wb25lbnQgbmFtZXMgdG8gdGhlaXIgY29uc3RydWN0b3JzLlxuICAgKiBUaGlzIGFsbG93cyB0aGUgZW5naW5lIHRvIGxvb2sgdXAgY29tcG9uZW50cyBieSBuYW1lIHdoZW4gcmVuZGVyaW5nLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgeyBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8dW5rbm93bj4gfT59XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBfY29tcG9uZW50czogUmVjb3JkPHN0cmluZywgeyBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8dW5rbm93bj4gfT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb2xsZWN0aW9uIG9mIGNoaWxkIGNvbXBvbmVudCBvdXRwdXRzXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgb3V0cHV0cyBvZiBjaGlsZCBjb21wb25lbnRzIGR1cmluZyByZW5kZXJpbmcuXG4gICAqIEB0eXBlIHtBbmd1bGFyRHluYW1pY091dHB1dFtdfVxuICAgKi9cbiAgcHJpdmF0ZSBfY2hpbGRzITogQW5ndWxhckR5bmFtaWNPdXRwdXRbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgbW9kZWwgYmVpbmcgcmVuZGVyZWRcbiAgICogQHN1bW1hcnkgUmVmZXJlbmNlIHRvIHRoZSBtb2RlbCBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSByZW5kZXJpbmcgZW5naW5lLlxuICAgKiBAdHlwZSB7TW9kZWx9XG4gICAqL1xuICBwcml2YXRlIF9tb2RlbCE6IE1vZGVsO1xuXG4gIHByaXZhdGUgc3RhdGljIF9vcGVyYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0YXRpYyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgU2luZ2xldG9uIGluc3RhbmNlIHJlZmVyZW5jZSBmb3IgdGhlIHJlbmRlcmluZyBlbmdpbmUuXG4gICAqIEB0eXBlIHtUeXBlPHVua25vd24+IHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBUeXBlPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgTmd4UmVuZGVyaW5nRW5naW5lXG4gICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIHRoZSByZW5kZXJpbmcgZW5naW5lIHdpdGggdGhlICdhbmd1bGFyJyBlbmdpbmUgdHlwZS5cbiAgICogVGhpcyBjb25zdHJ1Y3RvciBzZXRzIHVwIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gbmVlZGVkIGZvciBBbmd1bGFyLXNwZWNpZmljIHJlbmRlcmluZy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdhbmd1bGFyJyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgZmllbGQgZGVmaW5pdGlvbiB0byBhbiBBbmd1bGFyIGNvbXBvbmVudCBvdXRwdXRcbiAgICogQHN1bW1hcnkgVGhpcyBwcml2YXRlIG1ldGhvZCB0YWtlcyBhIGZpZWxkIGRlZmluaXRpb24gYW5kIGNyZWF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgQW5ndWxhciBjb21wb25lbnQuXG4gICAqIEl0IGhhbmRsZXMgY29tcG9uZW50IGluc3RhbnRpYXRpb24sIGlucHV0IHByb3BlcnR5IG1hcHBpbmcsIGFuZCBjaGlsZCBjb21wb25lbnQgcmVuZGVyaW5nLlxuICAgKiBUaGUgbWV0aG9kIHZhbGlkYXRlcyBpbnB1dCBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlIGNvbXBvbmVudCdzIG1ldGFkYXRhIGFuZCBwcm9jZXNzZXNcbiAgICogY2hpbGQgY29tcG9uZW50cyByZWN1cnNpdmVseS5cbiAgICpcbiAgICogQHBhcmFtIHtGaWVsZERlZmluaXRpb248QW5ndWxhckZpZWxkRGVmaW5pdGlvbj59IGZpZWxkRGVmIC0gVGhlIGZpZWxkIGRlZmluaXRpb24gdG8gY29udmVydFxuICAgKiBAcGFyYW0ge1ZpZXdDb250YWluZXJSZWZ9IHZjciAtIFRoZSB2aWV3IGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGNvbXBvbmVudCBjcmVhdGlvblxuICAgKiBAcGFyYW0ge0luamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICAgKiBAcGFyYW0ge1RlbXBsYXRlUmVmPGFueT59IHRwbCAtIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIGNvbnRlbnQgcHJvamVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cnlGb3JtSWQgLSBGb3JtIGlkZW50aWZpZXIgZm9yIHRoZSBjb21wb25lbnQgcmVuZGVyZXJcbiAgICogQHJldHVybiB7QW5ndWxhckR5bmFtaWNPdXRwdXR9IFRoZSBBbmd1bGFyIGNvbXBvbmVudCBvdXRwdXQgd2l0aCBjb21wb25lbnQgcmVmZXJlbmNlIGFuZCBpbnB1dHNcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgTWV0aG9kIGFzIGZyb21GaWVsZERlZmluaXRpb25cbiAgICogICBwYXJ0aWNpcGFudCBDb21wb25lbnRzIGFzIE5neFJlbmRlcmluZ0VuZ2luZS5jb21wb25lbnRzXG4gICAqICAgcGFydGljaXBhbnQgQW5ndWxhciBhcyBBbmd1bGFyIENvcmVcbiAgICogICBwYXJ0aWNpcGFudCBQcm9jZXNzIGFzIHByb2Nlc3NDaGlsZFxuICAgKlxuICAgKiAgIE1ldGhvZC0+PkNvbXBvbmVudHM6IGNvbXBvbmVudHMoZmllbGREZWYudGFnKVxuICAgKiAgIENvbXBvbmVudHMtLT4+TWV0aG9kOiBjb21wb25lbnQgY29uc3RydWN0b3JcbiAgICogICBNZXRob2QtPj5Bbmd1bGFyOiByZWZsZWN0Q29tcG9uZW50VHlwZShjb21wb25lbnQpXG4gICAqICAgQW5ndWxhci0tPj5NZXRob2Q6IGNvbXBvbmVudE1ldGFkYXRhXG4gICAqICAgTWV0aG9kLT4+TWV0aG9kOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzXG4gICAqICAgTWV0aG9kLT4+TWV0aG9kOiBDcmVhdGUgcmVzdWx0IG9iamVjdFxuICAgKiAgIGFsdCBIYXMgY2hpbGRyZW5cbiAgICogICAgIE1ldGhvZC0+PlByb2Nlc3M6IFByb2Nlc3MgY2hpbGRyZW4gcmVjdXJzaXZlbHlcbiAgICogICAgIFByb2Nlc3MtPj5NZXRob2Q6IFJldHVybiBwcm9jZXNzZWQgY2hpbGRyZW5cbiAgICogICAgIE1ldGhvZC0+PkFuZ3VsYXI6IENyZWF0ZSBlbWJlZGRlZCB2aWV3XG4gICAqICAgICBNZXRob2QtPj5NZXRob2Q6IENyZWF0ZSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogICBlbmRcbiAgICogICBNZXRob2QtLT4+Q2FsbGVyOiByZXR1cm4gQW5ndWxhckR5bmFtaWNPdXRwdXRcbiAgICovXG4gIHByaXZhdGUgZnJvbUZpZWxkRGVmaW5pdGlvbihcbiAgICBmaWVsZERlZjogRmllbGREZWZpbml0aW9uPEFuZ3VsYXJGaWVsZERlZmluaXRpb24+LFxuICAgIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgdHBsOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgICByZWdpc3RyeUZvcm1JZDogc3RyaW5nID0gRGF0ZS5ub3coKS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKSxcbiAgKTogQW5ndWxhckR5bmFtaWNPdXRwdXQge1xuICAgIGNvbnN0IGNtcCA9IChmaWVsZERlZiBhcyBLZXlWYWx1ZSk/LlsnY29tcG9uZW50J10gfHwgTmd4UmVuZGVyaW5nRW5naW5lLmNvbXBvbmVudHMoZmllbGREZWYudGFnKTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBjbXAuY29uc3RydWN0b3IgYXMgdW5rbm93biBhcyBUeXBlPHVua25vd24+O1xuXG4gICAgY29uc3QgY29tcG9uZW50TWV0YWRhdGEgPSByZWZsZWN0Q29tcG9uZW50VHlwZShjb21wb25lbnQpO1xuICAgIGlmICghY29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNZXRhZGF0YSBmb3IgY29tcG9uZW50ICR7ZmllbGREZWYudGFnfSBub3QgZm91bmQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBpbnB1dHM6IHBvc3NpYmxlSW5wdXRzIH0gPSBjb21wb25lbnRNZXRhZGF0YTtcbiAgICBjb25zdCBpbnB1dHMgPSB7IC4uLmZpZWxkRGVmLnByb3BzIH07XG5cbiAgICBjb25zdCB1bm1hcHBlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dHMpLmZpbHRlcihpbnB1dCA9PiB7XG4gICAgICBjb25zdCBpc01hcHBlZCA9IHBvc3NpYmxlSW5wdXRzLmZpbmQoKHsgcHJvcE5hbWUgfSkgPT4gcHJvcE5hbWUgPT09IGlucHV0KTtcbiAgICAgIGlmICghaXNNYXBwZWQpIGRlbGV0ZSBpbnB1dHNbaW5wdXRdO1xuICAgICAgcmV0dXJuICFpc01hcHBlZDtcbiAgICB9KTtcblxuICAgIGlmICh1bm1hcHBlZEtleXMubGVuZ3RoID4gMClcbiAgICAgIGNvbnNvbGUud2FybihgVW5tYXBwZWQgaW5wdXQgcHJvcGVydGllcyBmb3IgY29tcG9uZW50ICR7ZmllbGREZWYudGFnfTogJHt1bm1hcHBlZEtleXMuam9pbignLCAnKX1gKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IE5neFJlbmRlcmluZ0VuZ2luZS5fb3BlcmF0aW9uO1xuXG4gICAgY29uc3QgaGlkZGVuT24gPSBpbnB1dHM/LmhpZGRlbiB8fCBbXTtcbiAgICBpZigoaGlkZGVuT24gYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wZXJhdGlvbiBhcyBzdHJpbmcpKVxuICAgICAgcmV0dXJuIHtpbnB1dHMsIGluamVjdG9yfTtcbiAgICAvLyBjb25zdCBoaWRkZW5PbiA9IGlucHV0cz8uaGlkZGVuIHx8IFtdO1xuICAgIGNvbnN0IHJlc3VsdDogQW5ndWxhckR5bmFtaWNPdXRwdXQgPSB7XG4gICAgICBjb21wb25lbnQsXG4gICAgICBpbnB1dHMsXG4gICAgICBpbmplY3RvcixcbiAgICB9O1xuXG4gICAgaWYgKGZpZWxkRGVmLnJlbmRlcmVySWQpXG4gICAgICAocmVzdWx0LmlucHV0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ3JlbmRlcmVySWQnXSA9IGZpZWxkRGVmLnJlbmRlcmVySWQ7XG5cbiAgICAvLyBwcm9jZXNzIGNoaWxkcmVuXG4gICAgaWYgKGZpZWxkRGVmLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5jaGlsZHJlbiA9IGZpZWxkRGVmLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgaWYoY2hpbGQ/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IGNoaWxkLmNoaWxkcmVuLmZpbHRlcihjID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGRlbk9uID0gYz8ucHJvcHM/LmhpZGRlbiB8fCBbXTtcbiAgICAgICAgICAgIGlmKCEoaGlkZGVuT24gYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wZXJhdGlvbiBhcyBzdHJpbmcpKVxuICAgICAgICAgICAgICByZXR1cm4gY1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgLy8gY3JlYXRlIGEgY2hpbGQgZm9ybSBhbmQgYWRkIGl0cyBjb250cm9scyBhcyBwcm9wZXJ0aWVzIG9mIGNoaWxkLnByb3BzXG4gICAgICAgIE5neEZvcm1TZXJ2aWNlLmFkZENvbnRyb2xGcm9tUHJvcHMocmVnaXN0cnlGb3JtSWQsIGNoaWxkLnByb3BzLCBpbnB1dHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tRmllbGREZWZpbml0aW9uKGNoaWxkLCB2Y3IsIGluamVjdG9yLCB0cGwsIHJlZ2lzdHJ5Rm9ybUlkKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGdlbmVyYXRpbmcgRE9NXG4gICAgdmNyLmNsZWFyKCk7XG4gICAgY29uc3QgdGVtcGxhdGUgPSB2Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRwbCwgaW5qZWN0b3IpLnJvb3ROb2RlcztcbiAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IE5neFJlbmRlcmluZ0VuZ2luZS5jcmVhdGVDb21wb25lbnQoXG4gICAgICBjb21wb25lbnQsXG4gICAgICB7IC4uLmlucHV0cywgbW9kZWw6IHRoaXMuX21vZGVsIH0sXG4gICAgICBjb21wb25lbnRNZXRhZGF0YSxcbiAgICAgIHZjcixcbiAgICAgIGluamVjdG9yLFxuICAgICAgdGVtcGxhdGUsXG4gICAgKTtcblxuICAgIHJlc3VsdC5pbnN0YW5jZSA9IE5neFJlbmRlcmluZ0VuZ2luZS5faW5zdGFuY2UgPSBjb21wb25lbnRJbnN0YW5jZS5pbnN0YW5jZSBhcyBUeXBlPHVua25vd24+O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIEFuZ3VsYXIgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IFRoaXMgc3RhdGljIHV0aWxpdHkgbWV0aG9kIGNyZWF0ZXMgYW4gQW5ndWxhciBjb21wb25lbnQgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkXG4gICAqIGlucHV0cyBhbmQgdGVtcGxhdGUuIEl0IHVzZXMgQW5ndWxhcidzIGNvbXBvbmVudCBjcmVhdGlvbiBBUEkgdG8gaW5zdGFudGlhdGUgdGhlIGNvbXBvbmVudFxuICAgKiBhbmQgdGhlbiBzZXRzIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIHVzaW5nIHRoZSBwcm92aWRlZCBtZXRhZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtUeXBlPHVua25vd24+fSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHR5cGUgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7S2V5VmFsdWV9IFtpbnB1dHM9e31dIC0gVGhlIGlucHV0IHByb3BlcnRpZXMgdG8gc2V0IG9uIHRoZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtDb21wb25lbnRNaXJyb3I8dW5rbm93bj59IG1ldGFkYXRhIC0gVGhlIGNvbXBvbmVudCBtZXRhZGF0YSBmb3IgaW5wdXQgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0ge1ZpZXdDb250YWluZXJSZWZ9IHZjciAtIFRoZSB2aWV3IGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGNvbXBvbmVudCBjcmVhdGlvblxuICAgKiBAcGFyYW0ge0luamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICAgKiBAcGFyYW0ge05vZGVbXX0gW3RlbXBsYXRlPVtdXSAtIFRoZSB0ZW1wbGF0ZSBub2RlcyB0byBwcm9qZWN0IGludG8gdGhlIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHtDb21wb25lbnRSZWY8dW5rbm93bj59IFRoZSBjcmVhdGVkIGNvbXBvbmVudCByZWZlcmVuY2VcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPHVua25vd24+LCBpbnB1dHM6IEtleVZhbHVlID0ge30sIG1ldGFkYXRhOiBDb21wb25lbnRNaXJyb3I8dW5rbm93bj4sIHZjcjogVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3I6IEluamVjdG9yLCB0ZW1wbGF0ZTogTm9kZVtdID0gW10pOiBDb21wb25lbnRSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gdmNyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQgYXMgVHlwZTx1bmtub3duPiwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogaW5qZWN0b3IgYXMgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIHByb2plY3RhYmxlTm9kZXM6IFt0ZW1wbGF0ZV0sXG4gICAgfSk7XG4gICAgdGhpcy5zZXRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIGlucHV0cywgbWV0YWRhdGEpO1xuICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgZGVjb3JhdG9yIG1ldGFkYXRhIGZyb20gYSBtb2RlbFxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGZpZWxkIGRlZmluaXRpb24gZ2VuZXJhdGVkIGZyb20gYSBtb2RlbCdzXG4gICAqIGRlY29yYXRvcnMuIEl0J3MgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgdG9GaWVsZERlZmluaXRpb24gbWV0aG9kIHRoYXRcbiAgICogY29udmVydHMgYSBtb2RlbCB0byBhIGZpZWxkIGRlZmluaXRpb24gYmFzZWQgb24gaXRzIGRlY29yYXRvcnMgYW5kIHRoZSBwcm92aWRlZFxuICAgKiBnbG9iYWwgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtNb2RlbH0gbW9kZWwgLSBUaGUgbW9kZWwgdG8gZXh0cmFjdCBkZWNvcmF0b3JzIGZyb21cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gZ2xvYmFsUHJvcHMgLSBHbG9iYWwgcHJvcGVydGllcyB0byBpbmNsdWRlIGluIHRoZSBmaWVsZCBkZWZpbml0aW9uXG4gICAqIEByZXR1cm4ge0ZpZWxkRGVmaW5pdGlvbjxBbmd1bGFyRmllbGREZWZpbml0aW9uPn0gVGhlIGZpZWxkIGRlZmluaXRpb24gZ2VuZXJhdGVkIGZyb20gdGhlIG1vZGVsXG4gICAqL1xuICBnZXREZWNvcmF0b3JzKG1vZGVsOiBNb2RlbCwgZ2xvYmFsUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogRmllbGREZWZpbml0aW9uPEFuZ3VsYXJGaWVsZERlZmluaXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy50b0ZpZWxkRGVmaW5pdGlvbihtb2RlbCwgZ2xvYmFsUHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXN0cm95cyB0aGUgY3VycmVudCBlbmdpbmUgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgVGhpcyBzdGF0aWMgbWV0aG9kIGNsZWFycyB0aGUgY3VycmVudCBpbnN0YW5jZSByZWZlcmVuY2UsIGVmZmVjdGl2ZWx5XG4gICAqIGRlc3Ryb3lpbmcgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyaW5nIGVuZ2luZS4gVGhpcyBjYW4gYmUgdXNlZFxuICAgKiB0byByZXNldCB0aGUgZW5naW5lIHN0YXRlIG9yIHRvIHByZXBhcmUgZm9yIGEgbmV3IGluc3RhbmNlIGNyZWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWRcbiAgICovXG4gIHN0YXRpYyBhc3luYyBkZXN0cm95KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIE5neFJlbmRlcmluZ0VuZ2luZS5faW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVuZGVycyBhIG1vZGVsIGludG8gYW4gQW5ndWxhciBjb21wb25lbnQgb3V0cHV0XG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIHRha2VzIGEgbW9kZWwgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIEFuZ3VsYXIgY29tcG9uZW50IG91dHB1dC5cbiAgICogSXQgZmlyc3Qgc3RvcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2RlbCwgdGhlbiBjb252ZXJ0cyBpdCB0byBhIGZpZWxkIGRlZmluaXRpb25cbiAgICogdXNpbmcgdGhlIGJhc2UgUmVuZGVyaW5nRW5naW5lJ3MgdG9GaWVsZERlZmluaXRpb24gbWV0aG9kLCBhbmQgZmluYWxseSBjb252ZXJ0c1xuICAgKiB0aGF0IGZpZWxkIGRlZmluaXRpb24gdG8gYW4gQW5ndWxhciBjb21wb25lbnQgb3V0cHV0IHVzaW5nIGZyb21GaWVsZERlZmluaXRpb24uXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCB0byByZW5kZXJcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gZ2xvYmFsUHJvcHMgLSBHbG9iYWwgcHJvcGVydGllcyB0byBwYXNzIHRvIHRoZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtWaWV3Q29udGFpbmVyUmVmfSB2Y3IgLSBUaGUgdmlldyBjb250YWluZXIgcmVmZXJlbmNlIGZvciBjb21wb25lbnQgY3JlYXRpb25cbiAgICogQHBhcmFtIHtJbmplY3Rvcn0gaW5qZWN0b3IgLSBUaGUgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxhbnk+fSB0cGwgLSBUaGUgdGVtcGxhdGUgcmVmZXJlbmNlIGZvciBjb250ZW50IHByb2plY3Rpb25cbiAgICogQHJldHVybiB7QW5ndWxhckR5bmFtaWNPdXRwdXR9IFRoZSBBbmd1bGFyIGNvbXBvbmVudCBvdXRwdXQgd2l0aCBjb21wb25lbnQgcmVmZXJlbmNlIGFuZCBpbnB1dHNcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50IGFzIENsaWVudCBDb2RlXG4gICAqICAgcGFydGljaXBhbnQgUmVuZGVyIGFzIHJlbmRlciBtZXRob2RcbiAgICogICBwYXJ0aWNpcGFudCBUb0ZpZWxkIGFzIHRvRmllbGREZWZpbml0aW9uXG4gICAqICAgcGFydGljaXBhbnQgRnJvbUZpZWxkIGFzIGZyb21GaWVsZERlZmluaXRpb25cbiAgICpcbiAgICogICBDbGllbnQtPj5SZW5kZXI6IHJlbmRlcihtb2RlbCwgZ2xvYmFsUHJvcHMsIHZjciwgaW5qZWN0b3IsIHRwbClcbiAgICogICBSZW5kZXItPj5SZW5kZXI6IFN0b3JlIG1vZGVsIHJlZmVyZW5jZVxuICAgKiAgIFJlbmRlci0+PlRvRmllbGQ6IHRvRmllbGREZWZpbml0aW9uKG1vZGVsLCBnbG9iYWxQcm9wcylcbiAgICogICBUb0ZpZWxkLS0+PlJlbmRlcjogZmllbGREZWZcbiAgICogICBSZW5kZXItPj5Gcm9tRmllbGQ6IGZyb21GaWVsZERlZmluaXRpb24oZmllbGREZWYsIHZjciwgaW5qZWN0b3IsIHRwbClcbiAgICogICBGcm9tRmllbGQtLT4+UmVuZGVyOiBBbmd1bGFyRHluYW1pY091dHB1dFxuICAgKiAgIFJlbmRlci0tPj5DbGllbnQ6IHJldHVybiBBbmd1bGFyRHluYW1pY091dHB1dFxuICAgKi9cbiAgb3ZlcnJpZGUgcmVuZGVyPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgZ2xvYmFsUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgdHBsOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgKTogQW5ndWxhckR5bmFtaWNPdXRwdXQge1xuICAgIGxldCByZXN1bHQ6IEFuZ3VsYXJEeW5hbWljT3V0cHV0O1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9tb2RlbCA9IG1vZGVsO1xuICAgICAgY29uc3QgZm9ybUlkID0gRGF0ZS5ub3coKS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKTtcbiAgICAgIGNvbnN0IGZpZWxkRGVmID0gdGhpcy50b0ZpZWxkRGVmaW5pdGlvbihtb2RlbCwgZ2xvYmFsUHJvcHMpO1xuICAgICAgY29uc3QgcHJvcHMgPSBmaWVsZERlZi5wcm9wcyBhcyBLZXlWYWx1ZTtcbiAgICAgIGlmKCFOZ3hSZW5kZXJpbmdFbmdpbmUuX29wZXJhdGlvbilcbiAgICAgICAgTmd4UmVuZGVyaW5nRW5naW5lLl9vcGVyYXRpb24gPSBwcm9wcz8uWydvcGVyYXRpb24nXSB8fCB1bmRlZmluZWQ7XG4gICAgICByZXN1bHQgPSB0aGlzLmZyb21GaWVsZERlZmluaXRpb24oZmllbGREZWYsIHZjciwgaW5qZWN0b3IsIHRwbCwgZm9ybUlkKTtcblxuICAgICAgKHJlc3VsdCEuaW5zdGFuY2UhIGFzIEtleVZhbHVlKVsnZm9ybUdyb3VwJ10gPSBOZ3hGb3JtU2VydmljZS5nZXRDb250cm9sRnJvbUZvcm0oZm9ybUlkKTtcbiAgICAgIE5neEZvcm1TZXJ2aWNlLnJlbW92ZVJlZ2lzdHJ5KGZvcm1JZCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gcmVuZGVyIE1vZGVsICR7bW9kZWwuY29uc3RydWN0b3IubmFtZX06ICR7ZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgcmVuZGVyaW5nIGVuZ2luZVxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyB0aGUgcmVuZGVyaW5nIGVuZ2luZS4gSXQgY2hlY2tzIGlmIHRoZSBlbmdpbmUgaXMgYWxyZWFkeSBpbml0aWFsaXplZFxuICAgKiBhbmQgc2V0cyB0aGUgaW5pdGlhbGl6ZWQgZmxhZyB0byB0cnVlLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBlbmdpbmUgaXMgdXNlZFxuICAgKiB0byBlbnN1cmUgaXQncyBwcm9wZXJseSBzZXQgdXAgZm9yIHJlbmRlcmluZyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxuICAgICAgcmV0dXJuO1xuICAgIC8vIFZhbGlkYXRhYmxlQnlUeXBlW11cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIGEgY29tcG9uZW50IHdpdGggdGhlIHJlbmRlcmluZyBlbmdpbmVcbiAgICogQHN1bW1hcnkgVGhpcyBzdGF0aWMgbWV0aG9kIHJlZ2lzdGVycyBhIGNvbXBvbmVudCBjb25zdHJ1Y3RvciB3aXRoIHRoZSByZW5kZXJpbmcgZW5naW5lXG4gICAqIHVuZGVyIGEgc3BlY2lmaWMgbmFtZS4gSXQgaW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudHMgcmVnaXN0cnkgaWYgbmVlZGVkIGFuZCB0aHJvd3NcbiAgICogYW4gZXJyb3IgaWYgYSBjb21wb25lbnQgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyIHRoZSBzYW1lIG5hbWUgdG8gcHJldmVudFxuICAgKiBhY2NpZGVudGFsIG92ZXJyaWRlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSB0byByZWdpc3RlciB0aGUgY29tcG9uZW50IHVuZGVyXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8dW5rbm93bj59IGNvbnN0cnVjdG9yIC0gVGhlIGNvbXBvbmVudCBjb25zdHJ1Y3RvclxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyQ29tcG9uZW50KG5hbWU6IHN0cmluZywgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb21wb25lbnRzKSB0aGlzLl9jb21wb25lbnRzID0ge307XG4gICAgaWYgKG5hbWUgaW4gdGhpcy5fY29tcG9uZW50cylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb21wb25lbnQgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyICR7bmFtZX1gKTtcbiAgICB0aGlzLl9jb21wb25lbnRzW25hbWVdID0ge1xuICAgICAgY29uc3RydWN0b3I6IGNvbnN0cnVjdG9yLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyByZWdpc3RlcmVkIGNvbXBvbmVudHMgZnJvbSB0aGUgcmVuZGVyaW5nIGVuZ2luZVxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyBtZXRob2QgcmV0cmlldmVzIGVpdGhlciBhbGwgcmVnaXN0ZXJlZCBjb21wb25lbnRzIG9yIGEgc3BlY2lmaWMgY29tcG9uZW50XG4gICAqIGJ5IGl0cyBzZWxlY3Rvci4gV2hlbiBjYWxsZWQgd2l0aG91dCBhIHNlbGVjdG9yLCBpdCByZXR1cm5zIGFuIGFycmF5IG9mIGFsbCByZWdpc3RlcmVkXG4gICAqIGNvbXBvbmVudHMuIFdoZW4gY2FsbGVkIHdpdGggYSBzZWxlY3RvciwgaXQgcmV0dXJucyB0aGUgc3BlY2lmaWMgY29tcG9uZW50IGlmIGZvdW5kLFxuICAgKiBvciB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbXBvbmVudCBpcyBub3QgcmVnaXN0ZXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcl0gLSBPcHRpb25hbCBzZWxlY3RvciB0byByZXRyaWV2ZSBhIHNwZWNpZmljIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHtPYmplY3R8QXJyYXl9IEVpdGhlciBhIHNwZWNpZmljIGNvbXBvbmVudCBvciBhbiBhcnJheSBvZiBhbGwgY29tcG9uZW50c1xuICAgKi9cbiAgc3RhdGljIGNvbXBvbmVudHMoc2VsZWN0b3I/OiBzdHJpbmcpOiBvYmplY3QgfCBzdHJpbmdbXSB7XG4gICAgaWYgKCFzZWxlY3RvcikgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29tcG9uZW50cyk7XG4gICAgaWYgKCEoc2VsZWN0b3IgaW4gdGhpcy5fY29tcG9uZW50cykpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gQ29tcG9uZW50IHJlZ2lzdGVyZWQgdW5kZXIgJHtzZWxlY3Rvcn1gKTtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50c1tzZWxlY3Rvcl07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGtleSBmb3IgcmVmbGVjdGlvbiBtZXRhZGF0YVxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyBtZXRob2QgZ2VuZXJhdGVzIGEga2V5IGZvciByZWZsZWN0aW9uIG1ldGFkYXRhIGJ5IHByZWZpeGluZyB0aGUgaW5wdXQga2V5XG4gICAqIHdpdGggdGhlIEFuZ3VsYXIgZW5naW5lJ3MgcmVmbGVjdGlvbiBwcmVmaXguIFRoaXMgaXMgdXNlZCBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZ1xuICAgKiBtZXRhZGF0YSBpbiBhIG5hbWVzcGFjZWQgd2F5IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGJhc2Uga2V5IHRvIHByZWZpeFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwcmVmaXhlZCBrZXkgZm9yIHJlZmxlY3Rpb24gbWV0YWRhdGFcbiAgICovXG4gIHN0YXRpYyBvdmVycmlkZSBrZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtBbmd1bGFyRW5naW5lS2V5cy5SRUZMRUNUfSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNldHMgaW5wdXQgcHJvcGVydGllcyBvbiBhIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyB1dGlsaXR5IG1ldGhvZCBzZXRzIGlucHV0IHByb3BlcnRpZXMgb24gYSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogYmFzZWQgb24gdGhlIHByb3ZpZGVkIGlucHV0cyBvYmplY3QgYW5kIGNvbXBvbmVudCBtZXRhZGF0YS4gSXQgaGFuZGxlcyBib3RoIHNpbXBsZVxuICAgKiB2YWx1ZXMgYW5kIG5lc3RlZCBvYmplY3RzLCByZWN1cnNpdmVseSBwcm9jZXNzaW5nIG9iamVjdCBwcm9wZXJ0aWVzLiBUaGUgbWV0aG9kXG4gICAqIHZhbGlkYXRlcyBlYWNoIGlucHV0IGFnYWluc3QgdGhlIGNvbXBvbmVudCdzIG1ldGFkYXRhIHRvIGVuc3VyZSBvbmx5IHZhbGlkIGlucHV0c1xuICAgKiBhcmUgc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBvbmVudFJlZjx1bmtub3duPn0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCByZWZlcmVuY2UgdG8gc2V0IGlucHV0cyBvblxuICAgKiBAcGFyYW0ge0tleVZhbHVlfSBpbnB1dHMgLSBUaGUgaW5wdXQgcHJvcGVydGllcyB0byBzZXRcbiAgICogQHBhcmFtIHtDb21wb25lbnRNaXJyb3I8dW5rbm93bj59IG1ldGFkYXRhIC0gVGhlIGNvbXBvbmVudCBtZXRhZGF0YSBmb3IgaW5wdXQgdmFsaWRhdGlvblxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBTZXRJbnB1dHMgYXMgc2V0SW5wdXRzXG4gICAqICAgcGFydGljaXBhbnQgUGFyc2UgYXMgcGFyc2VJbnB1dFZhbHVlXG4gICAqICAgcGFydGljaXBhbnQgQ29tcG9uZW50IGFzIENvbXBvbmVudFJlZlxuICAgKlxuICAgKiAgIENhbGxlci0+PlNldElucHV0czogc2V0SW5wdXRzKGNvbXBvbmVudCwgaW5wdXRzLCBtZXRhZGF0YSlcbiAgICogICBTZXRJbnB1dHMtPj5TZXRJbnB1dHM6IEl0ZXJhdGUgdGhyb3VnaCBpbnB1dHNcbiAgICogICBsb29wIEZvciBlYWNoIGlucHV0XG4gICAqICAgICBTZXRJbnB1dHMtPj5TZXRJbnB1dHM6IENoZWNrIGlmIGlucHV0IGV4aXN0cyBpbiBtZXRhZGF0YVxuICAgKiAgICAgYWx0IElucHV0IGlzICdwcm9wcydcbiAgICogICAgICAgU2V0SW5wdXRzLT4+UGFyc2U6IHBhcnNlSW5wdXRWYWx1ZShjb21wb25lbnQsIHZhbHVlKVxuICAgKiAgICAgICBQYXJzZS0+PlBhcnNlOiBSZWN1cnNpdmVseSBwcm9jZXNzIG5lc3RlZCBvYmplY3RzXG4gICAqICAgICAgIFBhcnNlLT4+Q29tcG9uZW50OiBzZXRJbnB1dChrZXksIHZhbHVlKVxuICAgKiAgICAgZWxzZSBJbnB1dCBpcyB2YWxpZFxuICAgKiAgICAgICBTZXRJbnB1dHMtPj5Db21wb25lbnQ6IHNldElucHV0KGtleSwgdmFsdWUpXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICovXG4gIHN0YXRpYyBzZXRJbnB1dHMoY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4sIGlucHV0czogS2V5VmFsdWUsIG1ldGFkYXRhOiBDb21wb25lbnRNaXJyb3I8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBwYXJzZUlucHV0VmFsdWUoY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4sIGlucHV0OiBLZXlWYWx1ZSkge1xuICAgICAgT2JqZWN0LmtleXMoaW5wdXQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dFtrZXldO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhIXZhbHVlKVxuICAgICAgICAgIHJldHVybiBwYXJzZUlucHV0VmFsdWUoY29tcG9uZW50LCB2YWx1ZSk7XG4gICAgICAgIGNvbXBvbmVudC5zZXRJbnB1dChrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9iamVjdC5lbnRyaWVzKGlucHV0cykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gbWV0YWRhdGEuaW5wdXRzLmZpbmQoKGl0ZW06IHsgcHJvcE5hbWU6IHN0cmluZyB9KSA9PiBpdGVtLnByb3BOYW1lID09PSBrZXkpO1xuICAgICAgaWYgKHByb3ApIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3Byb3BzJylcbiAgICAgICAgICBwYXJzZUlucHV0VmFsdWUoY29tcG9uZW50LCB2YWx1ZSk7XG4gICAgICAgIC8vIGlmKGtleSA9PT0gJ2xvY2FsZScgJiYgIXZhbHVlKVxuICAgICAgICAvLyAgIHZhbHVlID0gZ2V0TG9jYWxlRnJvbUNsYXNzTmFtZSh0aGlzLl9jb21wb25lbnROYW1lKTtcbiAgICAgICAgY29tcG9uZW50LnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmd4UmVuZGVyaW5nRW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvTmd4UmVuZGVyaW5nRW5naW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBS0wsb0JBQW9CLEdBSXJCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQTZEO0lBNEJuRzs7Ozs7Ozs7Ozs7T0FXRzthQUNZLGVBQVUsR0FBdUIsU0FBUyxDQUFDO0lBZ0IxRDs7Ozs7Ozs7T0FRRztJQUNIO1FBQ0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtDRztJQUNLLG1CQUFtQixDQUN6QixRQUFpRCxFQUNqRCxHQUFxQixFQUNyQixRQUFrQixFQUNsQixHQUF5QixFQUN6QixpQkFBeUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUU7UUFFOUQsTUFBTSxHQUFHLEdBQUksUUFBcUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakcsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFdBQXVDLENBQUM7UUFFOUQsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0Is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LEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUs7b0JBQ3RDLE9BQU8sZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBMEIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUN6RixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksR0FBRyxLQUFLLE9BQU87b0JBQ2pCLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLGlDQUFpQztnQkFDakMseURBQXlEO2dCQUN6RCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGREZWZpbml0aW9uLCBSZW5kZXJpbmdFbmdpbmUgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBbmd1bGFyRmllbGREZWZpbml0aW9uLCBLZXlWYWx1ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQW5ndWxhckR5bmFtaWNPdXRwdXQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5ndWxhckVuZ2luZUtleXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWx9IGZyb20gJ0BkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSAnQGRlY2FmLXRzL2RiLWRlY29yYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50TWlycm9yLFxuICBDb21wb25lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEluamVjdG9yLFxuICByZWZsZWN0Q29tcG9uZW50VHlwZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4Rm9ybVNlcnZpY2UgfSBmcm9tICcuL05neEZvcm1TZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQW5ndWxhciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmVuZGVyaW5nRW5naW5lIHdpdGggZW5oYW5jZWQgZmVhdHVyZXNcbiAqIEBzdW1tYXJ5IFRoaXMgY2xhc3MgZXh0ZW5kcyB0aGUgYmFzZSBSZW5kZXJpbmdFbmdpbmUgdG8gcHJvdmlkZSBBbmd1bGFyLXNwZWNpZmljIHJlbmRlcmluZyBjYXBhYmlsaXRpZXNcbiAqIHdpdGggYWRkaXRpb25hbCBmZWF0dXJlcyBjb21wYXJlZCB0byBOZ3hSZW5kZXJpbmdFbmdpbmUuIEl0IGhhbmRsZXMgdGhlIGNvbnZlcnNpb24gb2YgZmllbGQgZGVmaW5pdGlvbnNcbiAqIHRvIEFuZ3VsYXIgY29tcG9uZW50cywgbWFuYWdlcyBjb21wb25lbnQgcmVnaXN0cmF0aW9uLCBhbmQgcHJvdmlkZXMgdXRpbGl0aWVzIGZvciBjb21wb25lbnQgY3JlYXRpb25cbiAqIGFuZCBpbnB1dCBoYW5kbGluZy4gVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIEFuZ3VsYXIncyBuZXdlciBjb21wb25lbnQgQVBJcy5cbiAqXG4gKiBAdGVtcGxhdGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiAtIFR5cGUgZm9yIEFuZ3VsYXItc3BlY2lmaWMgZmllbGQgZGVmaW5pdGlvbnNcbiAqIEB0ZW1wbGF0ZSBBbmd1bGFyRHluYW1pY091dHB1dCAtIFR5cGUgZm9yIEFuZ3VsYXItc3BlY2lmaWMgY29tcG9uZW50IG91dHB1dFxuICpcbiAqIEBjbGFzcyBOZ3hSZW5kZXJpbmdFbmdpbmVcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBlbmdpbmUgPSBOZ3hSZW5kZXJpbmdFbmdpbmUuZ2V0KCk7XG4gKiBlbmdpbmUuaW5pdGlhbGl6ZSgpO1xuICogY29uc3Qgb3V0cHV0ID0gZW5naW5lLnJlbmRlcihteU1vZGVsLCB7fSwgdmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3IsIHRlbXBsYXRlUmVmKTtcbiAqIGBgYFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IEVuZ2luZSBhcyBOZ3hSZW5kZXJpbmdFbmdpbmVcbiAqICAgcGFydGljaXBhbnQgQ29tcG9uZW50cyBhcyBSZWdpc3RlcmVkQ29tcG9uZW50c1xuICpcbiAqICAgQ2xpZW50LT4+RW5naW5lOiBnZXQoKVxuICogICBDbGllbnQtPj5FbmdpbmU6IGluaXRpYWxpemUoKVxuICogICBDbGllbnQtPj5FbmdpbmU6IHJlbmRlcihtb2RlbCwgcHJvcHMsIHZjciwgaW5qZWN0b3IsIHRwbClcbiAqICAgRW5naW5lLT4+RW5naW5lOiB0b0ZpZWxkRGVmaW5pdGlvbihtb2RlbCwgcHJvcHMpXG4gKiAgIEVuZ2luZS0+PkVuZ2luZTogZnJvbUZpZWxkRGVmaW5pdGlvbihmaWVsZERlZiwgdmNyLCBpbmplY3RvciwgdHBsKVxuICogICBFbmdpbmUtPj5Db21wb25lbnRzOiBjb21wb25lbnRzKGZpZWxkRGVmLnRhZylcbiAqICAgQ29tcG9uZW50cy0tPj5FbmdpbmU6IGNvbXBvbmVudCBjb25zdHJ1Y3RvclxuICogICBFbmdpbmUtPj5FbmdpbmU6IGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIGlucHV0cywgbWV0YWRhdGEsIHZjciwgaW5qZWN0b3IsIHRlbXBsYXRlKVxuICogICBFbmdpbmUtLT4+Q2xpZW50OiByZXR1cm4gQW5ndWxhckR5bmFtaWNPdXRwdXRcbiAqL1xuZXhwb3J0IGNsYXNzIE5neFJlbmRlcmluZ0VuZ2luZSBleHRlbmRzIFJlbmRlcmluZ0VuZ2luZTxBbmd1bGFyRmllbGREZWZpbml0aW9uLCBBbmd1bGFyRHluYW1pY091dHB1dD4ge1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0cnkgb2YgY29tcG9uZW50cyBhdmFpbGFibGUgZm9yIHJlbmRlcmluZ1xuICAgKiBAc3VtbWFyeSBTdGF0aWMgcmVnaXN0cnkgdGhhdCBzdG9yZXMgYWxsIHJlZ2lzdGVyZWQgY29tcG9uZW50cyBpbmRleGVkIGJ5IHRoZWlyIHNlbGVjdG9yIG5hbWUuXG4gICAqIEVhY2ggY29tcG9uZW50IGVudHJ5IGNvbnRhaW5zIGEgY29uc3RydWN0b3IgcmVmZXJlbmNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGVcbiAgICogdGhlIGNvbXBvbmVudCBkdXJpbmcgdGhlIHJlbmRlcmluZyBwcm9jZXNzLiBUaGlzIHJlZ2lzdHJ5IGlzIHNoYXJlZCBhY3Jvc3MgYWxsIGluc3RhbmNlc1xuICAgKiBvZiB0aGUgcmVuZGVyaW5nIGVuZ2luZSBhbmQgaXMgcG9wdWxhdGVkIHRocm91Z2ggdGhlIHJlZ2lzdGVyQ29tcG9uZW50IG1ldGhvZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHN0YXRpY1xuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgeyBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8dW5rbm93bj4gfT59XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBfY29tcG9uZW50czogUmVjb3JkPHN0cmluZywgeyBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8dW5rbm93bj4gfT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50bHkgYWN0aXZlIG1vZGVsIGJlaW5nIHJlbmRlcmVkXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyBhIHJlZmVyZW5jZSB0byB0aGUgbW9kZWwgaW5zdGFuY2UgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkXG4gICAqIGJ5IHRoZSByZW5kZXJpbmcgZW5naW5lLiBUaGlzIHByb3BlcnR5IGlzIHNldCBkdXJpbmcgdGhlIHJlbmRlciBtZXRob2QgZXhlY3V0aW9uXG4gICAqIGFuZCBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIHJlbmRlcmluZyBsaWZlY3ljbGUgdG8gYWNjZXNzIG1vZGVsIGRhdGEgYW5kIG1ldGFkYXRhLlxuICAgKiBUaGUgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gKCEpIGlzIHVzZWQgYmVjYXVzZSB0aGlzIHByb3BlcnR5IGlzIGFsd2F5c1xuICAgKiBpbml0aWFsaXplZCBiZWZvcmUgdXNlIHdpdGhpbiB0aGUgcmVuZGVyIG1ldGhvZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge01vZGVsfVxuICAgKi9cbiAgcHJpdmF0ZSBfbW9kZWwhOiBNb2RlbDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgb3BlcmF0aW9uIGNvbnRleHQgZm9yIGNvbXBvbmVudCB2aXNpYmlsaXR5IGNvbnRyb2xcbiAgICogQHN1bW1hcnkgU3RhdGljIHByb3BlcnR5IHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQsXG4gICAqIHdoaWNoIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGNvbXBvbmVudCB2aXNpYmlsaXR5IHRocm91Z2ggdGhlICdoaWRkZW4nIHByb3BlcnR5LlxuICAgKiBDb21wb25lbnRzIGNhbiBzcGVjaWZ5IG9wZXJhdGlvbnMgd2hlcmUgdGhleSBzaG91bGQgYmUgaGlkZGVuLCBhbmQgdGhpcyBwcm9wZXJ0eVxuICAgKiBwcm92aWRlcyB0aGUgY29udGV4dCBmb3IgdGhvc2UgdmlzaWJpbGl0eSBjaGVja3MuIFRoZSB2YWx1ZSBpcyB0eXBpY2FsbHkgZXh0cmFjdGVkXG4gICAqIGZyb20gdGhlIGdsb2JhbCBwcm9wZXJ0aWVzIGR1cmluZyB0aGUgcmVuZGVyaW5nIHByb2Nlc3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBzdGF0aWNcbiAgICogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIF9vcGVyYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudGx5IGFjdGl2ZSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgU3RhdGljIHByb3BlcnR5IHRoYXQgbWFpbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWRcbiAgICogY29tcG9uZW50IGluc3RhbmNlLiBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSBmb3IgY29tcG9uZW50IGxpZmVjeWNsZSBtYW5hZ2VtZW50XG4gICAqIGFuZCBjYW4gYmUgY2xlYXJlZCB0aHJvdWdoIHRoZSBkZXN0cm95IG1ldGhvZC4gVGhlIHJlZmVyZW5jZSBhbGxvd3MgYWNjZXNzIHRvXG4gICAqIHRoZSBhY3RpdmUgY29tcG9uZW50IGluc3RhbmNlIGZvciBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBpbnRlcmFjdCB3aXRoIHRoZVxuICAgKiBjdXJyZW50bHkgcmVuZGVyZWQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAc3RhdGljXG4gICAqIEB0eXBlIHtUeXBlPHVua25vd24+IHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBUeXBlPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uc3RydWN0cyBhIG5ldyBOZ3hSZW5kZXJpbmdFbmdpbmUgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZSBieSBjYWxsaW5nIHRoZSBwYXJlbnRcbiAgICogY29uc3RydWN0b3Igd2l0aCB0aGUgJ2FuZ3VsYXInIGVuZ2luZSB0eXBlIGlkZW50aWZpZXIuIFRoaXMgY29uc3RydWN0b3Igc2V0cyB1cCB0aGUgYmFzZVxuICAgKiByZW5kZXJpbmcgZW5naW5lIGZ1bmN0aW9uYWxpdHkgd2l0aCBBbmd1bGFyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFuZCBwcmVwYXJlcyB0aGVcbiAgICogaW5zdGFuY2UgZm9yIGNvbXBvbmVudCByZWdpc3RyYXRpb24gYW5kIHJlbmRlcmluZyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdhbmd1bGFyJyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgZmllbGQgZGVmaW5pdGlvbiB0byBhbiBBbmd1bGFyIGNvbXBvbmVudCBvdXRwdXRcbiAgICogQHN1bW1hcnkgVGhpcyBwcml2YXRlIG1ldGhvZCB0YWtlcyBhIGZpZWxkIGRlZmluaXRpb24gYW5kIGNyZWF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgQW5ndWxhciBjb21wb25lbnQuXG4gICAqIEl0IGhhbmRsZXMgY29tcG9uZW50IGluc3RhbnRpYXRpb24sIGlucHV0IHByb3BlcnR5IG1hcHBpbmcsIGFuZCBjaGlsZCBjb21wb25lbnQgcmVuZGVyaW5nLlxuICAgKiBUaGUgbWV0aG9kIHZhbGlkYXRlcyBpbnB1dCBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlIGNvbXBvbmVudCdzIG1ldGFkYXRhIGFuZCBwcm9jZXNzZXNcbiAgICogY2hpbGQgY29tcG9uZW50cyByZWN1cnNpdmVseS5cbiAgICpcbiAgICogQHBhcmFtIHtGaWVsZERlZmluaXRpb248QW5ndWxhckZpZWxkRGVmaW5pdGlvbj59IGZpZWxkRGVmIC0gVGhlIGZpZWxkIGRlZmluaXRpb24gdG8gY29udmVydFxuICAgKiBAcGFyYW0ge1ZpZXdDb250YWluZXJSZWZ9IHZjciAtIFRoZSB2aWV3IGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGNvbXBvbmVudCBjcmVhdGlvblxuICAgKiBAcGFyYW0ge0luamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICAgKiBAcGFyYW0ge1RlbXBsYXRlUmVmPGFueT59IHRwbCAtIFRoZSB0ZW1wbGF0ZSByZWZlcmVuY2UgZm9yIGNvbnRlbnQgcHJvamVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cnlGb3JtSWQgLSBGb3JtIGlkZW50aWZpZXIgZm9yIHRoZSBjb21wb25lbnQgcmVuZGVyZXJcbiAgICogQHJldHVybiB7QW5ndWxhckR5bmFtaWNPdXRwdXR9IFRoZSBBbmd1bGFyIGNvbXBvbmVudCBvdXRwdXQgd2l0aCBjb21wb25lbnQgcmVmZXJlbmNlIGFuZCBpbnB1dHNcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgTWV0aG9kIGFzIGZyb21GaWVsZERlZmluaXRpb25cbiAgICogICBwYXJ0aWNpcGFudCBDb21wb25lbnRzIGFzIE5neFJlbmRlcmluZ0VuZ2luZS5jb21wb25lbnRzXG4gICAqICAgcGFydGljaXBhbnQgQW5ndWxhciBhcyBBbmd1bGFyIENvcmVcbiAgICogICBwYXJ0aWNpcGFudCBQcm9jZXNzIGFzIHByb2Nlc3NDaGlsZFxuICAgKlxuICAgKiAgIE1ldGhvZC0+PkNvbXBvbmVudHM6IGNvbXBvbmVudHMoZmllbGREZWYudGFnKVxuICAgKiAgIENvbXBvbmVudHMtLT4+TWV0aG9kOiBjb21wb25lbnQgY29uc3RydWN0b3JcbiAgICogICBNZXRob2QtPj5Bbmd1bGFyOiByZWZsZWN0Q29tcG9uZW50VHlwZShjb21wb25lbnQpXG4gICAqICAgQW5ndWxhci0tPj5NZXRob2Q6IGNvbXBvbmVudE1ldGFkYXRhXG4gICAqICAgTWV0aG9kLT4+TWV0aG9kOiBWYWxpZGF0ZSBpbnB1dCBwcm9wZXJ0aWVzXG4gICAqICAgTWV0aG9kLT4+TWV0aG9kOiBDcmVhdGUgcmVzdWx0IG9iamVjdFxuICAgKiAgIGFsdCBIYXMgY2hpbGRyZW5cbiAgICogICAgIE1ldGhvZC0+PlByb2Nlc3M6IFByb2Nlc3MgY2hpbGRyZW4gcmVjdXJzaXZlbHlcbiAgICogICAgIFByb2Nlc3MtPj5NZXRob2Q6IFJldHVybiBwcm9jZXNzZWQgY2hpbGRyZW5cbiAgICogICAgIE1ldGhvZC0+PkFuZ3VsYXI6IENyZWF0ZSBlbWJlZGRlZCB2aWV3XG4gICAqICAgICBNZXRob2QtPj5NZXRob2Q6IENyZWF0ZSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogICBlbmRcbiAgICogICBNZXRob2QtLT4+Q2FsbGVyOiByZXR1cm4gQW5ndWxhckR5bmFtaWNPdXRwdXRcbiAgICovXG4gIHByaXZhdGUgZnJvbUZpZWxkRGVmaW5pdGlvbihcbiAgICBmaWVsZERlZjogRmllbGREZWZpbml0aW9uPEFuZ3VsYXJGaWVsZERlZmluaXRpb24+LFxuICAgIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgdHBsOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgICByZWdpc3RyeUZvcm1JZDogc3RyaW5nID0gRGF0ZS5ub3coKS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKSxcbiAgKTogQW5ndWxhckR5bmFtaWNPdXRwdXQge1xuICAgIGNvbnN0IGNtcCA9IChmaWVsZERlZiBhcyBLZXlWYWx1ZSk/LlsnY29tcG9uZW50J10gfHwgTmd4UmVuZGVyaW5nRW5naW5lLmNvbXBvbmVudHMoZmllbGREZWYudGFnKTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBjbXAuY29uc3RydWN0b3IgYXMgdW5rbm93biBhcyBUeXBlPHVua25vd24+O1xuXG4gICAgY29uc3QgY29tcG9uZW50TWV0YWRhdGEgPSByZWZsZWN0Q29tcG9uZW50VHlwZShjb21wb25lbnQpO1xuICAgIGlmICghY29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNZXRhZGF0YSBmb3IgY29tcG9uZW50ICR7ZmllbGREZWYudGFnfSBub3QgZm91bmQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBpbnB1dHM6IHBvc3NpYmxlSW5wdXRzIH0gPSBjb21wb25lbnRNZXRhZGF0YTtcbiAgICBjb25zdCBpbnB1dHMgPSB7IC4uLmZpZWxkRGVmLnByb3BzIH07XG5cbiAgICBjb25zdCB1bm1hcHBlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dHMpLmZpbHRlcihpbnB1dCA9PiB7XG4gICAgICBjb25zdCBpc01hcHBlZCA9IHBvc3NpYmxlSW5wdXRzLmZpbmQoKHsgcHJvcE5hbWUgfSkgPT4gcHJvcE5hbWUgPT09IGlucHV0KTtcbiAgICAgIGlmICghaXNNYXBwZWQpIGRlbGV0ZSBpbnB1dHNbaW5wdXRdO1xuICAgICAgcmV0dXJuICFpc01hcHBlZDtcbiAgICB9KTtcblxuICAgIGlmICh1bm1hcHBlZEtleXMubGVuZ3RoID4gMClcbiAgICAgIGNvbnNvbGUud2FybihgVW5tYXBwZWQgaW5wdXQgcHJvcGVydGllcyBmb3IgY29tcG9uZW50ICR7ZmllbGREZWYudGFnfTogJHt1bm1hcHBlZEtleXMuam9pbignLCAnKX1gKTtcblxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IE5neFJlbmRlcmluZ0VuZ2luZS5fb3BlcmF0aW9uO1xuXG4gICAgY29uc3QgaGlkZGVuT24gPSBpbnB1dHM/LmhpZGRlbiB8fCBbXTtcbiAgICBpZigoaGlkZGVuT24gYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wZXJhdGlvbiBhcyBzdHJpbmcpKVxuICAgICAgcmV0dXJuIHtpbnB1dHMsIGluamVjdG9yfTtcbiAgICAvLyBjb25zdCBoaWRkZW5PbiA9IGlucHV0cz8uaGlkZGVuIHx8IFtdO1xuICAgIGNvbnN0IHJlc3VsdDogQW5ndWxhckR5bmFtaWNPdXRwdXQgPSB7XG4gICAgICBjb21wb25lbnQsXG4gICAgICBpbnB1dHMsXG4gICAgICBpbmplY3RvcixcbiAgICB9O1xuXG4gICAgaWYgKGZpZWxkRGVmLnJlbmRlcmVySWQpXG4gICAgICAocmVzdWx0LmlucHV0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbJ3JlbmRlcmVySWQnXSA9IGZpZWxkRGVmLnJlbmRlcmVySWQ7XG5cbiAgICAvLyBwcm9jZXNzIGNoaWxkcmVuXG4gICAgaWYgKGZpZWxkRGVmLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5jaGlsZHJlbiA9IGZpZWxkRGVmLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgaWYoY2hpbGQ/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IGNoaWxkLmNoaWxkcmVuLmZpbHRlcihjID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGRlbk9uID0gYz8ucHJvcHM/LmhpZGRlbiB8fCBbXTtcbiAgICAgICAgICAgIGlmKCEoaGlkZGVuT24gYXMgc3RyaW5nW10pLmluY2x1ZGVzKG9wZXJhdGlvbiBhcyBzdHJpbmcpKVxuICAgICAgICAgICAgICByZXR1cm4gY1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgLy8gY3JlYXRlIGEgY2hpbGQgZm9ybSBhbmQgYWRkIGl0cyBjb250cm9scyBhcyBwcm9wZXJ0aWVzIG9mIGNoaWxkLnByb3BzXG4gICAgICAgIE5neEZvcm1TZXJ2aWNlLmFkZENvbnRyb2xGcm9tUHJvcHMocmVnaXN0cnlGb3JtSWQsIGNoaWxkLnByb3BzLCBpbnB1dHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tRmllbGREZWZpbml0aW9uKGNoaWxkLCB2Y3IsIGluamVjdG9yLCB0cGwsIHJlZ2lzdHJ5Rm9ybUlkKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGdlbmVyYXRpbmcgRE9NXG4gICAgdmNyLmNsZWFyKCk7XG4gICAgY29uc3QgdGVtcGxhdGUgPSB2Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRwbCwgaW5qZWN0b3IpLnJvb3ROb2RlcztcbiAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IE5neFJlbmRlcmluZ0VuZ2luZS5jcmVhdGVDb21wb25lbnQoXG4gICAgICBjb21wb25lbnQsXG4gICAgICB7IC4uLmlucHV0cywgbW9kZWw6IHRoaXMuX21vZGVsIH0sXG4gICAgICBjb21wb25lbnRNZXRhZGF0YSxcbiAgICAgIHZjcixcbiAgICAgIGluamVjdG9yLFxuICAgICAgdGVtcGxhdGUsXG4gICAgKTtcblxuICAgIHJlc3VsdC5pbnN0YW5jZSA9IE5neFJlbmRlcmluZ0VuZ2luZS5faW5zdGFuY2UgPSBjb21wb25lbnRJbnN0YW5jZS5pbnN0YW5jZSBhcyBUeXBlPHVua25vd24+O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIEFuZ3VsYXIgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IFRoaXMgc3RhdGljIHV0aWxpdHkgbWV0aG9kIGNyZWF0ZXMgYW4gQW5ndWxhciBjb21wb25lbnQgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkXG4gICAqIGlucHV0cyBhbmQgdGVtcGxhdGUuIEl0IHVzZXMgQW5ndWxhcidzIGNvbXBvbmVudCBjcmVhdGlvbiBBUEkgdG8gaW5zdGFudGlhdGUgdGhlIGNvbXBvbmVudFxuICAgKiBhbmQgdGhlbiBzZXRzIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIHVzaW5nIHRoZSBwcm92aWRlZCBtZXRhZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtUeXBlPHVua25vd24+fSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHR5cGUgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7S2V5VmFsdWV9IFtpbnB1dHM9e31dIC0gVGhlIGlucHV0IHByb3BlcnRpZXMgdG8gc2V0IG9uIHRoZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtDb21wb25lbnRNaXJyb3I8dW5rbm93bj59IG1ldGFkYXRhIC0gVGhlIGNvbXBvbmVudCBtZXRhZGF0YSBmb3IgaW5wdXQgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0ge1ZpZXdDb250YWluZXJSZWZ9IHZjciAtIFRoZSB2aWV3IGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGNvbXBvbmVudCBjcmVhdGlvblxuICAgKiBAcGFyYW0ge0luamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICAgKiBAcGFyYW0ge05vZGVbXX0gW3RlbXBsYXRlPVtdXSAtIFRoZSB0ZW1wbGF0ZSBub2RlcyB0byBwcm9qZWN0IGludG8gdGhlIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHtDb21wb25lbnRSZWY8dW5rbm93bj59IFRoZSBjcmVhdGVkIGNvbXBvbmVudCByZWZlcmVuY2VcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPHVua25vd24+LCBpbnB1dHM6IEtleVZhbHVlID0ge30sIG1ldGFkYXRhOiBDb21wb25lbnRNaXJyb3I8dW5rbm93bj4sIHZjcjogVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0b3I6IEluamVjdG9yLCB0ZW1wbGF0ZTogTm9kZVtdID0gW10pOiBDb21wb25lbnRSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gdmNyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQgYXMgVHlwZTx1bmtub3duPiwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogaW5qZWN0b3IgYXMgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIHByb2plY3RhYmxlTm9kZXM6IFt0ZW1wbGF0ZV0sXG4gICAgfSk7XG4gICAgdGhpcy5zZXRJbnB1dHMoY29tcG9uZW50SW5zdGFuY2UsIGlucHV0cywgbWV0YWRhdGEpO1xuICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgZGVjb3JhdG9yIG1ldGFkYXRhIGZyb20gYSBtb2RlbFxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGZpZWxkIGRlZmluaXRpb24gZ2VuZXJhdGVkIGZyb20gYSBtb2RlbCdzXG4gICAqIGRlY29yYXRvcnMuIEl0J3MgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgdG9GaWVsZERlZmluaXRpb24gbWV0aG9kIHRoYXRcbiAgICogY29udmVydHMgYSBtb2RlbCB0byBhIGZpZWxkIGRlZmluaXRpb24gYmFzZWQgb24gaXRzIGRlY29yYXRvcnMgYW5kIHRoZSBwcm92aWRlZFxuICAgKiBnbG9iYWwgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtNb2RlbH0gbW9kZWwgLSBUaGUgbW9kZWwgdG8gZXh0cmFjdCBkZWNvcmF0b3JzIGZyb21cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gZ2xvYmFsUHJvcHMgLSBHbG9iYWwgcHJvcGVydGllcyB0byBpbmNsdWRlIGluIHRoZSBmaWVsZCBkZWZpbml0aW9uXG4gICAqIEByZXR1cm4ge0ZpZWxkRGVmaW5pdGlvbjxBbmd1bGFyRmllbGREZWZpbml0aW9uPn0gVGhlIGZpZWxkIGRlZmluaXRpb24gZ2VuZXJhdGVkIGZyb20gdGhlIG1vZGVsXG4gICAqL1xuICBnZXREZWNvcmF0b3JzKG1vZGVsOiBNb2RlbCwgZ2xvYmFsUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogRmllbGREZWZpbml0aW9uPEFuZ3VsYXJGaWVsZERlZmluaXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy50b0ZpZWxkRGVmaW5pdGlvbihtb2RlbCwgZ2xvYmFsUHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXN0cm95cyB0aGUgY3VycmVudCBlbmdpbmUgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgVGhpcyBzdGF0aWMgbWV0aG9kIGNsZWFycyB0aGUgY3VycmVudCBpbnN0YW5jZSByZWZlcmVuY2UsIGVmZmVjdGl2ZWx5XG4gICAqIGRlc3Ryb3lpbmcgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcmVuZGVyaW5nIGVuZ2luZS4gVGhpcyBjYW4gYmUgdXNlZFxuICAgKiB0byByZXNldCB0aGUgZW5naW5lIHN0YXRlIG9yIHRvIHByZXBhcmUgZm9yIGEgbmV3IGluc3RhbmNlIGNyZWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWRcbiAgICovXG4gIHN0YXRpYyBhc3luYyBkZXN0cm95KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIE5neFJlbmRlcmluZ0VuZ2luZS5faW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVuZGVycyBhIG1vZGVsIGludG8gYW4gQW5ndWxhciBjb21wb25lbnQgb3V0cHV0XG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIHRha2VzIGEgbW9kZWwgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIEFuZ3VsYXIgY29tcG9uZW50IG91dHB1dC5cbiAgICogSXQgZmlyc3Qgc3RvcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2RlbCwgdGhlbiBjb252ZXJ0cyBpdCB0byBhIGZpZWxkIGRlZmluaXRpb25cbiAgICogdXNpbmcgdGhlIGJhc2UgUmVuZGVyaW5nRW5naW5lJ3MgdG9GaWVsZERlZmluaXRpb24gbWV0aG9kLCBhbmQgZmluYWxseSBjb252ZXJ0c1xuICAgKiB0aGF0IGZpZWxkIGRlZmluaXRpb24gdG8gYW4gQW5ndWxhciBjb21wb25lbnQgb3V0cHV0IHVzaW5nIGZyb21GaWVsZERlZmluaXRpb24uXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCB0byByZW5kZXJcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gZ2xvYmFsUHJvcHMgLSBHbG9iYWwgcHJvcGVydGllcyB0byBwYXNzIHRvIHRoZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtWaWV3Q29udGFpbmVyUmVmfSB2Y3IgLSBUaGUgdmlldyBjb250YWluZXIgcmVmZXJlbmNlIGZvciBjb21wb25lbnQgY3JlYXRpb25cbiAgICogQHBhcmFtIHtJbmplY3Rvcn0gaW5qZWN0b3IgLSBUaGUgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAgICogQHBhcmFtIHtUZW1wbGF0ZVJlZjxhbnk+fSB0cGwgLSBUaGUgdGVtcGxhdGUgcmVmZXJlbmNlIGZvciBjb250ZW50IHByb2plY3Rpb25cbiAgICogQHJldHVybiB7QW5ndWxhckR5bmFtaWNPdXRwdXR9IFRoZSBBbmd1bGFyIGNvbXBvbmVudCBvdXRwdXQgd2l0aCBjb21wb25lbnQgcmVmZXJlbmNlIGFuZCBpbnB1dHNcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50IGFzIENsaWVudCBDb2RlXG4gICAqICAgcGFydGljaXBhbnQgUmVuZGVyIGFzIHJlbmRlciBtZXRob2RcbiAgICogICBwYXJ0aWNpcGFudCBUb0ZpZWxkIGFzIHRvRmllbGREZWZpbml0aW9uXG4gICAqICAgcGFydGljaXBhbnQgRnJvbUZpZWxkIGFzIGZyb21GaWVsZERlZmluaXRpb25cbiAgICpcbiAgICogICBDbGllbnQtPj5SZW5kZXI6IHJlbmRlcihtb2RlbCwgZ2xvYmFsUHJvcHMsIHZjciwgaW5qZWN0b3IsIHRwbClcbiAgICogICBSZW5kZXItPj5SZW5kZXI6IFN0b3JlIG1vZGVsIHJlZmVyZW5jZVxuICAgKiAgIFJlbmRlci0+PlRvRmllbGQ6IHRvRmllbGREZWZpbml0aW9uKG1vZGVsLCBnbG9iYWxQcm9wcylcbiAgICogICBUb0ZpZWxkLS0+PlJlbmRlcjogZmllbGREZWZcbiAgICogICBSZW5kZXItPj5Gcm9tRmllbGQ6IGZyb21GaWVsZERlZmluaXRpb24oZmllbGREZWYsIHZjciwgaW5qZWN0b3IsIHRwbClcbiAgICogICBGcm9tRmllbGQtLT4+UmVuZGVyOiBBbmd1bGFyRHluYW1pY091dHB1dFxuICAgKiAgIFJlbmRlci0tPj5DbGllbnQ6IHJldHVybiBBbmd1bGFyRHluYW1pY091dHB1dFxuICAgKi9cbiAgb3ZlcnJpZGUgcmVuZGVyPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgZ2xvYmFsUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgdHBsOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgKTogQW5ndWxhckR5bmFtaWNPdXRwdXQge1xuICAgIGxldCByZXN1bHQ6IEFuZ3VsYXJEeW5hbWljT3V0cHV0O1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9tb2RlbCA9IG1vZGVsO1xuICAgICAgY29uc3QgZm9ybUlkID0gRGF0ZS5ub3coKS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKTtcbiAgICAgIGNvbnN0IGZpZWxkRGVmID0gdGhpcy50b0ZpZWxkRGVmaW5pdGlvbihtb2RlbCwgZ2xvYmFsUHJvcHMpO1xuICAgICAgY29uc3QgcHJvcHMgPSBmaWVsZERlZi5wcm9wcyBhcyBLZXlWYWx1ZTtcbiAgICAgIGlmKCFOZ3hSZW5kZXJpbmdFbmdpbmUuX29wZXJhdGlvbilcbiAgICAgICAgTmd4UmVuZGVyaW5nRW5naW5lLl9vcGVyYXRpb24gPSBwcm9wcz8uWydvcGVyYXRpb24nXSB8fCB1bmRlZmluZWQ7XG4gICAgICByZXN1bHQgPSB0aGlzLmZyb21GaWVsZERlZmluaXRpb24oZmllbGREZWYsIHZjciwgaW5qZWN0b3IsIHRwbCwgZm9ybUlkKTtcblxuICAgICAgKHJlc3VsdCEuaW5zdGFuY2UhIGFzIEtleVZhbHVlKVsnZm9ybUdyb3VwJ10gPSBOZ3hGb3JtU2VydmljZS5nZXRDb250cm9sRnJvbUZvcm0oZm9ybUlkKTtcbiAgICAgIE5neEZvcm1TZXJ2aWNlLnJlbW92ZVJlZ2lzdHJ5KGZvcm1JZCk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gcmVuZGVyIE1vZGVsICR7bW9kZWwuY29uc3RydWN0b3IubmFtZX06ICR7ZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyB0aGUgcmVuZGVyaW5nIGVuZ2luZVxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyB0aGUgcmVuZGVyaW5nIGVuZ2luZS4gSXQgY2hlY2tzIGlmIHRoZSBlbmdpbmUgaXMgYWxyZWFkeSBpbml0aWFsaXplZFxuICAgKiBhbmQgc2V0cyB0aGUgaW5pdGlhbGl6ZWQgZmxhZyB0byB0cnVlLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBlbmdpbmUgaXMgdXNlZFxuICAgKiB0byBlbnN1cmUgaXQncyBwcm9wZXJseSBzZXQgdXAgZm9yIHJlbmRlcmluZyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxuICAgICAgcmV0dXJuO1xuICAgIC8vIFZhbGlkYXRhYmxlQnlUeXBlW11cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIGEgY29tcG9uZW50IHdpdGggdGhlIHJlbmRlcmluZyBlbmdpbmVcbiAgICogQHN1bW1hcnkgVGhpcyBzdGF0aWMgbWV0aG9kIHJlZ2lzdGVycyBhIGNvbXBvbmVudCBjb25zdHJ1Y3RvciB3aXRoIHRoZSByZW5kZXJpbmcgZW5naW5lXG4gICAqIHVuZGVyIGEgc3BlY2lmaWMgbmFtZS4gSXQgaW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudHMgcmVnaXN0cnkgaWYgbmVlZGVkIGFuZCB0aHJvd3NcbiAgICogYW4gZXJyb3IgaWYgYSBjb21wb25lbnQgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyIHRoZSBzYW1lIG5hbWUgdG8gcHJldmVudFxuICAgKiBhY2NpZGVudGFsIG92ZXJyaWRlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSB0byByZWdpc3RlciB0aGUgY29tcG9uZW50IHVuZGVyXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8dW5rbm93bj59IGNvbnN0cnVjdG9yIC0gVGhlIGNvbXBvbmVudCBjb25zdHJ1Y3RvclxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyQ29tcG9uZW50KG5hbWU6IHN0cmluZywgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb21wb25lbnRzKSB0aGlzLl9jb21wb25lbnRzID0ge307XG4gICAgaWYgKG5hbWUgaW4gdGhpcy5fY29tcG9uZW50cylcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBDb21wb25lbnQgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyICR7bmFtZX1gKTtcbiAgICB0aGlzLl9jb21wb25lbnRzW25hbWVdID0ge1xuICAgICAgY29uc3RydWN0b3I6IGNvbnN0cnVjdG9yLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyByZWdpc3RlcmVkIGNvbXBvbmVudHMgZnJvbSB0aGUgcmVuZGVyaW5nIGVuZ2luZVxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyBtZXRob2QgcmV0cmlldmVzIGVpdGhlciBhbGwgcmVnaXN0ZXJlZCBjb21wb25lbnRzIG9yIGEgc3BlY2lmaWMgY29tcG9uZW50XG4gICAqIGJ5IGl0cyBzZWxlY3Rvci4gV2hlbiBjYWxsZWQgd2l0aG91dCBhIHNlbGVjdG9yLCBpdCByZXR1cm5zIGFuIGFycmF5IG9mIGFsbCByZWdpc3RlcmVkXG4gICAqIGNvbXBvbmVudHMuIFdoZW4gY2FsbGVkIHdpdGggYSBzZWxlY3RvciwgaXQgcmV0dXJucyB0aGUgc3BlY2lmaWMgY29tcG9uZW50IGlmIGZvdW5kLFxuICAgKiBvciB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbXBvbmVudCBpcyBub3QgcmVnaXN0ZXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcl0gLSBPcHRpb25hbCBzZWxlY3RvciB0byByZXRyaWV2ZSBhIHNwZWNpZmljIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHtPYmplY3R8QXJyYXl9IEVpdGhlciBhIHNwZWNpZmljIGNvbXBvbmVudCBvciBhbiBhcnJheSBvZiBhbGwgY29tcG9uZW50c1xuICAgKi9cbiAgc3RhdGljIGNvbXBvbmVudHMoc2VsZWN0b3I/OiBzdHJpbmcpOiBvYmplY3QgfCBzdHJpbmdbXSB7XG4gICAgaWYgKCFzZWxlY3RvcikgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29tcG9uZW50cyk7XG4gICAgaWYgKCEoc2VsZWN0b3IgaW4gdGhpcy5fY29tcG9uZW50cykpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gQ29tcG9uZW50IHJlZ2lzdGVyZWQgdW5kZXIgJHtzZWxlY3Rvcn1gKTtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50c1tzZWxlY3Rvcl07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGtleSBmb3IgcmVmbGVjdGlvbiBtZXRhZGF0YVxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyBtZXRob2QgZ2VuZXJhdGVzIGEga2V5IGZvciByZWZsZWN0aW9uIG1ldGFkYXRhIGJ5IHByZWZpeGluZyB0aGUgaW5wdXQga2V5XG4gICAqIHdpdGggdGhlIEFuZ3VsYXIgZW5naW5lJ3MgcmVmbGVjdGlvbiBwcmVmaXguIFRoaXMgaXMgdXNlZCBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZ1xuICAgKiBtZXRhZGF0YSBpbiBhIG5hbWVzcGFjZWQgd2F5IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGJhc2Uga2V5IHRvIHByZWZpeFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwcmVmaXhlZCBrZXkgZm9yIHJlZmxlY3Rpb24gbWV0YWRhdGFcbiAgICovXG4gIHN0YXRpYyBvdmVycmlkZSBrZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtBbmd1bGFyRW5naW5lS2V5cy5SRUZMRUNUfSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNldHMgaW5wdXQgcHJvcGVydGllcyBvbiBhIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBUaGlzIHN0YXRpYyB1dGlsaXR5IG1ldGhvZCBzZXRzIGlucHV0IHByb3BlcnRpZXMgb24gYSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICogYmFzZWQgb24gdGhlIHByb3ZpZGVkIGlucHV0cyBvYmplY3QgYW5kIGNvbXBvbmVudCBtZXRhZGF0YS4gSXQgaGFuZGxlcyBib3RoIHNpbXBsZVxuICAgKiB2YWx1ZXMgYW5kIG5lc3RlZCBvYmplY3RzLCByZWN1cnNpdmVseSBwcm9jZXNzaW5nIG9iamVjdCBwcm9wZXJ0aWVzLiBUaGUgbWV0aG9kXG4gICAqIHZhbGlkYXRlcyBlYWNoIGlucHV0IGFnYWluc3QgdGhlIGNvbXBvbmVudCdzIG1ldGFkYXRhIHRvIGVuc3VyZSBvbmx5IHZhbGlkIGlucHV0c1xuICAgKiBhcmUgc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBvbmVudFJlZjx1bmtub3duPn0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCByZWZlcmVuY2UgdG8gc2V0IGlucHV0cyBvblxuICAgKiBAcGFyYW0ge0tleVZhbHVlfSBpbnB1dHMgLSBUaGUgaW5wdXQgcHJvcGVydGllcyB0byBzZXRcbiAgICogQHBhcmFtIHtDb21wb25lbnRNaXJyb3I8dW5rbm93bj59IG1ldGFkYXRhIC0gVGhlIGNvbXBvbmVudCBtZXRhZGF0YSBmb3IgaW5wdXQgdmFsaWRhdGlvblxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAgICogICBwYXJ0aWNpcGFudCBTZXRJbnB1dHMgYXMgc2V0SW5wdXRzXG4gICAqICAgcGFydGljaXBhbnQgUGFyc2UgYXMgcGFyc2VJbnB1dFZhbHVlXG4gICAqICAgcGFydGljaXBhbnQgQ29tcG9uZW50IGFzIENvbXBvbmVudFJlZlxuICAgKlxuICAgKiAgIENhbGxlci0+PlNldElucHV0czogc2V0SW5wdXRzKGNvbXBvbmVudCwgaW5wdXRzLCBtZXRhZGF0YSlcbiAgICogICBTZXRJbnB1dHMtPj5TZXRJbnB1dHM6IEl0ZXJhdGUgdGhyb3VnaCBpbnB1dHNcbiAgICogICBsb29wIEZvciBlYWNoIGlucHV0XG4gICAqICAgICBTZXRJbnB1dHMtPj5TZXRJbnB1dHM6IENoZWNrIGlmIGlucHV0IGV4aXN0cyBpbiBtZXRhZGF0YVxuICAgKiAgICAgYWx0IElucHV0IGlzICdwcm9wcydcbiAgICogICAgICAgU2V0SW5wdXRzLT4+UGFyc2U6IHBhcnNlSW5wdXRWYWx1ZShjb21wb25lbnQsIHZhbHVlKVxuICAgKiAgICAgICBQYXJzZS0+PlBhcnNlOiBSZWN1cnNpdmVseSBwcm9jZXNzIG5lc3RlZCBvYmplY3RzXG4gICAqICAgICAgIFBhcnNlLT4+Q29tcG9uZW50OiBzZXRJbnB1dChrZXksIHZhbHVlKVxuICAgKiAgICAgZWxzZSBJbnB1dCBpcyB2YWxpZFxuICAgKiAgICAgICBTZXRJbnB1dHMtPj5Db21wb25lbnQ6IHNldElucHV0KGtleSwgdmFsdWUpXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICovXG4gIHN0YXRpYyBzZXRJbnB1dHMoY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4sIGlucHV0czogS2V5VmFsdWUsIG1ldGFkYXRhOiBDb21wb25lbnRNaXJyb3I8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBwYXJzZUlucHV0VmFsdWUoY29tcG9uZW50OiBDb21wb25lbnRSZWY8dW5rbm93bj4sIGlucHV0OiBLZXlWYWx1ZSkge1xuICAgICAgT2JqZWN0LmtleXMoaW5wdXQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dFtrZXldO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhIXZhbHVlKVxuICAgICAgICAgIHJldHVybiBwYXJzZUlucHV0VmFsdWUoY29tcG9uZW50LCB2YWx1ZSk7XG4gICAgICAgIGNvbXBvbmVudC5zZXRJbnB1dChrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9iamVjdC5lbnRyaWVzKGlucHV0cykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gbWV0YWRhdGEuaW5wdXRzLmZpbmQoKGl0ZW06IHsgcHJvcE5hbWU6IHN0cmluZyB9KSA9PiBpdGVtLnByb3BOYW1lID09PSBrZXkpO1xuICAgICAgaWYgKHByb3ApIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3Byb3BzJylcbiAgICAgICAgICBwYXJzZUlucHV0VmFsdWUoY29tcG9uZW50LCB2YWx1ZSk7XG4gICAgICAgIC8vIGlmKGtleSA9PT0gJ2xvY2FsZScgJiYgIXZhbHVlKVxuICAgICAgICAvLyAgIHZhbHVlID0gZ2V0TG9jYWxlRnJvbUNsYXNzTmFtZSh0aGlzLl9jb21wb25lbnROYW1lKTtcbiAgICAgICAgY29tcG9uZW50LnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
1
  ;
2
2
  ;
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUZDLENBQUM7QUFjRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSAnQGRlY2FmLXRzL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiwgRmllbGRVcGRhdGVNb2RlLCBLZXlWYWx1ZSwgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGaWVsZFByb3BlcnRpZXMgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgY29tcG9uZW50cyB0aGF0IGhvbGQgYW4gRWxlbWVudFJlZlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGNvbXBvbmVudCBob2xkZXIgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIERPTSBlbGVtZW50IHRocm91Z2ggRWxlbWVudFJlZlxuICogQGludGVyZmFjZSBJQ29tcG9uZW50SG9sZGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21wb25lbnRIb2xkZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50J3MgRE9NIGVsZW1lbnRcbiAgICogQHByb3BlcnR5IHtFbGVtZW50UmVmfSBjb21wb25lbnQgLSBUaGUgRWxlbWVudFJlZiBpbnN0YW5jZSBwcm92aWRpbmcgYWNjZXNzIHRvIHRoZSBuYXRpdmUgRE9NIGVsZW1lbnRcbiAgICovXG4gIGNvbXBvbmVudDogRWxlbWVudFJlZjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmb3JtIGNvbXBvbmVudHMgdGhhdCBob2xkIGJvdGggYW4gRWxlbWVudFJlZiBhbmQgYSBGb3JtR3JvdXBcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgSUNvbXBvbmVudEhvbGRlciB0byBpbmNsdWRlIGEgRm9ybUdyb3VwIGZvciBmb3JtIGhhbmRsaW5nIGNhcGFiaWxpdGllc1xuICogQGludGVyZmFjZSBJRm9ybUVsZW1lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1FbGVtZW50IGV4dGVuZHMgSUNvbXBvbmVudEhvbGRlciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIEFuZ3VsYXIgRm9ybUdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZvcm0gZWxlbWVudFxuICAgKiBAcHJvcGVydHkge0Zvcm1Hcm91cHx1bmRlZmluZWR9IGZvcm1Hcm91cCAtIFRoZSBmb3JtIGdyb3VwIGluc3RhbmNlIGZvciBtYW5hZ2luZyBmb3JtIGNvbnRyb2xzIGFuZCB2YWxpZGF0aW9uXG4gICAqL1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGZpZWxkc2V0IGl0ZW0gcmVwcmVzZW50YXRpb24gaW4gdGhlIFVJLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBpdGVtcyBkaXNwbGF5ZWQgaW4gdGhlIHJlb3JkZXJhYmxlIGxpc3Qgd2l0aGluIHRoZSBmaWVsZHNldC5cbiAqIEVhY2ggaXRlbSByZXByZXNlbnRzIGEgdmFsdWUgYWRkZWQgdG8gdGhlIGZpZWxkc2V0IHdpdGggZGlzcGxheSBwcm9wZXJ0aWVzIGZvciB0aGUgVUkuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWVsZFNldEl0ZW0ge1xuICAvKiogQGRlc2NyaXB0aW9uIFNlcXVlbnRpYWwgaW5kZXggbnVtYmVyIGZvciBvcmRlcmluZyBpdGVtcyBpbiB0aGUgbGlzdCAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogQGRlc2NyaXB0aW9uIFByaW1hcnkgZGlzcGxheSB0ZXh0IGZvciB0aGUgaXRlbSAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHNlY29uZGFyeSB0ZXh0IHByb3ZpZGluZyBhZGRpdGlvbmFsIGl0ZW0gZGV0YWlscyAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmaWVsZHNldCB2YWxpZGF0aW9uIGV2ZW50IGRhdGEuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdmFsaWRhdGlvbiBldmVudHMgZW1pdHRlZCB3aGVuIGZvcm0gdmFsaWRhdGlvbiBvY2N1cnMuXG4gKiBVc2VkIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gZm9ybSBjb21wb25lbnRzIGFuZCB0aGUgZmllbGRzZXQgY29udGFpbmVyLlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmllbGRTZXRWYWxpZGF0aW9uRXZlbnQge1xuICAvKiogQGRlc2NyaXB0aW9uIFRoZSBGb3JtR3JvdXAgY29udGFpbmluZyB0aGUgdmFsaWRhdGVkIGZvcm0gY29udHJvbHMgKi9cbiAgZm9ybUdyb3VwOiAgRm9ybUFycmF5IHwgRm9ybUdyb3VwO1xuICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IGZvcm0gdmFsdWUgYmVpbmcgdmFsaWRhdGVkICovXG4gIHZhbHVlOiB1bmtub3duO1xuICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGZvcm0gdmFsaWRhdGlvbiBwYXNzZWQgb3IgZmFpbGVkICovXG4gIGlzVmFsaWQ6IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBpbmRpdmlkdWFsIGZpbHRlciBxdWVyeSBpdGVtc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgc2luZ2xlIGZpbHRlciBjcml0ZXJpb24gaW4gYSBmaWx0ZXIgcXVlcnkuXG4gKiBFYWNoIGl0ZW0gcmVwcmVzZW50cyBvbmUgY29uZGl0aW9uIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRhdGEsIGNvbnNpc3Rpbmcgb2ZcbiAqIGFuIGluZGV4IChmaWVsZCBuYW1lKSwgYSBjb25kaXRpb24gKGNvbXBhcmlzb24gb3BlcmF0b3IpLCBhbmQgYSB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAaW50ZXJmYWNlIElGaWx0ZXJRdWVyeUl0ZW1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaW5kZXhdIC0gT3B0aW9uYWwgZmllbGQgbmFtZSBvciBpbmRleCB0byBmaWx0ZXIgb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY29uZGl0aW9uXSAtIE9wdGlvbmFsIGNvbXBhcmlzb24gY29uZGl0aW9uIChlLmcuLCAnRXF1YWwnLCAnQ29udGFpbnMnLCAnR3JlYXRlciBUaGFuJylcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdmFsdWVdIC0gT3B0aW9uYWwgdmFsdWUgdG8gY29tcGFyZSB0aGUgZmllbGQgYWdhaW5zdFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyUXVlcnlJdGVtIHtcbiAgaW5kZXg/OiBzdHJpbmcsXG4gIGNvbmRpdGlvbj86IHN0cmluZyxcbiAgdmFsdWU/OiBzdHJpbmdcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3Igc29ydGluZyBjb25maWd1cmF0aW9uIG9iamVjdHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3Igc3BlY2lmeWluZyBzb3J0IGNyaXRlcmlhIGluY2x1ZGluZyB0aGUgZmllbGRcbiAqIHRvIHNvcnQgYnkgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNvcnQgKGFzY2VuZGluZyBvciBkZXNjZW5kaW5nKS5cbiAqIEBpbnRlcmZhY2UgSVNvcnRPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBmaWVsZCBuYW1lIG9yIHByb3BlcnR5IHRvIHNvcnQgYnlcbiAqIEBwcm9wZXJ0eSB7T3JkZXJEaXJlY3Rpb259IGRpcmVjdGlvbiAtIFRoZSBzb3J0IGRpcmVjdGlvbiAoQVNDIG9yIERTQylcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnRPYmplY3Qge1xuICB2YWx1ZTogc3RyaW5nLFxuICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGNvbXBsZXRlIGZpbHRlciBxdWVyeSBjb25maWd1cmF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb21wbGV0ZSBzdHJ1Y3R1cmUgZm9yIGZpbHRlciBhbmQgc29ydCBvcGVyYXRpb25zLlxuICogQ29tYmluZXMgbXVsdGlwbGUgZmlsdGVyIGNyaXRlcmlhIHdpdGggc29ydGluZyBjb25maWd1cmF0aW9uIHRvIHByb3ZpZGVcbiAqIGNvbXByZWhlbnNpdmUgZGF0YSBmaWx0ZXJpbmcgYW5kIG9yZGVyaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBpbnRlcmZhY2UgSUZpbHRlclF1ZXJ5XG4gKiBAcHJvcGVydHkge0lGaWx0ZXJRdWVyeUl0ZW1bXSB8IHVuZGVmaW5lZH0gcXVlcnkgLSBBcnJheSBvZiBmaWx0ZXIgY3JpdGVyaWEgb3IgdW5kZWZpbmVkIGZvciBubyBmaWx0ZXJpbmdcbiAqIEBwcm9wZXJ0eSB7SVNvcnRPYmplY3R9IHNvcnQgLSBTb3J0aW5nIGNvbmZpZ3VyYXRpb24gc3BlY2lmeWluZyBmaWVsZCBhbmQgZGlyZWN0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJRdWVyeSB7XG4gIHF1ZXJ5OiBJRmlsdGVyUXVlcnlJdGVtW10gfCB1bmRlZmluZWQsXG4gIHNvcnQ6IElTb3J0T2JqZWN0XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGlucHV0IHByb3BlcnRpZXNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgRmllbGRQcm9wZXJ0aWVzIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIEFuZ3VsYXIgY29tcG9uZW50cy5cbiAqIEluY2x1ZGVzIHVwZGF0ZSBtb2RlIGZvciBmb3JtIGNvbnRyb2xzIGFuZCBvcHRpb25hbCBGb3JtR3JvdXAgYW5kIEZvcm1Db250cm9sIHJlZmVyZW5jZXMuXG4gKiBAaW50ZXJmYWNlIElDb21wb25lbnRJbnB1dFxuICogQHByb3BlcnR5IHtGaWVsZFVwZGF0ZU1vZGV9IFt1cGRhdGVNb2RlXSAtIFdoZW4gdGhlIGZpZWxkIHZhbHVlIHNob3VsZCBiZSB1cGRhdGVkXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gW2Zvcm1Hcm91cF0gLSBPcHRpb25hbCBGb3JtR3JvdXAgcmVmZXJlbmNlXG4gKiBAcHJvcGVydHkge0Zvcm1Db250cm9sfSBbZm9ybUNvbnRyb2xdIC0gT3B0aW9uYWwgRm9ybUNvbnRyb2wgcmVmZXJlbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21wb25lbnRJbnB1dCBleHRlbmRzIEZpZWxkUHJvcGVydGllcyB7XG4gIHVwZGF0ZU1vZGU/OiBGaWVsZFVwZGF0ZU1vZGU7XG4gIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBkeW5hbWljYWxseSBjcmVhdGluZyBBbmd1bGFyIGNvbXBvbmVudHMuXG4gKiBDb250YWlucyB0aGUgY29tcG9uZW50IG5hbWUsIGlucHV0IHByb3BlcnRpZXMsIGluamVjdG9yLCBhbmQgb3B0aW9uYWwgY2hpbGQgY29tcG9uZW50cy5cbiAqIEBpbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gcmVuZGVyXG4gKiBAcHJvcGVydHkge0lDb21wb25lbnRJbnB1dH0gaW5wdXRzIC0gVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7RW52aXJvbm1lbnRJbmplY3RvciB8IEluamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQHByb3BlcnR5IHtJQ29tcG9uZW50Q29uZmlnW119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnQgY29uZmlndXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZyB7XG4gIGNvbXBvbmVudDogc3RyaW5nO1xuICBpbnB1dHM6IElDb21wb25lbnRJbnB1dDtcbiAgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3RvcjtcbiAgY2hpbGRyZW4/OiBJQ29tcG9uZW50Q29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgZm9yIEFuZ3VsYXIgY29tcG9uZW50cywgaW5jbHVkaW5nXG4gKiBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LCBzZWxlY3Rvciwgc3RhbmRhbG9uZSBzdGF0dXMsIGltcG9ydHMsIHRlbXBsYXRlLCBhbmQgc3R5bGVzLlxuICogVGhpcyBpcyB1c2VkIGZvciByZWZsZWN0aW9uIGFuZCBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbi5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFuZ2VEZXRlY3Rpb24gLSBUaGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3RhbmRhbG9uZSAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBzdGFuZGFsb25lXG4gKiBAcHJvcGVydHkgaW1wb3J0cyAtIEFycmF5IG9mIGltcG9ydGVkIG1vZHVsZXMvY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIEhUTUwgdGVtcGxhdGUgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN0eWxlcyAtIEFycmF5IG9mIENTUyBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGEge1xuICBjaGFuZ2VEZXRlY3Rpb246IG51bWJlcjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgc3RhbmRhbG9uZTogYm9vbGVhbjtcbiAgaW1wb3J0czogKG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duKVtdO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICBzdHlsZXM6IHN0cmluZ1tdO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE91dHB1dCBzdHJ1Y3R1cmUgZnJvbSB0aGUgQW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG91dHB1dCBwcm9kdWNlZCBieSB0aGUgTmd4UmVuZGVyaW5nRW5naW5lXG4gKiB3aGVuIHJlbmRlcmluZyBhIGNvbXBvbmVudC4gQ29udGFpbnMgdGhlIGNvbXBvbmVudCB0eXBlLCBpbnB1dHMsIGluamVjdG9yLFxuICogY29udGVudCBub2RlcywgYW5kIGNoaWxkIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBbmd1bGFyRHluYW1pY091dHB1dFxuICogQHByb3BlcnR5IHtUeXBlPHVua25vd24+fSBjb21wb25lbnQgLSBUaGUgQW5ndWxhciBjb21wb25lbnQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZW5kZXJlcklkXSAtIE9wdGlvbmFsIHVuaXF1ZSBJRCBmb3IgdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW2lucHV0c10gLSBPcHRpb25hbCBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge0luamVjdG9yfSBbaW5qZWN0b3JdIC0gT3B0aW9uYWwgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Tm9kZVtdW119IFtjb250ZW50XSAtIE9wdGlvbmFsIGNvbnRlbnQgbm9kZXMgZm9yIHByb2plY3Rpb25cbiAqIEBwcm9wZXJ0eSB7QW5ndWxhckR5bmFtaWNPdXRwdXRbXX0gW2NoaWxkcmVuXSAtIE9wdGlvbmFsIGNoaWxkIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7VHlwZTx1bmtub3duPn0gW2luc3RhbmNlXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IFtmb3JtR3JvdXBdIC0gT3B0aW9uYWwgY29tcG9uZW50IEZvcm1Hcm91cFxuICogQHByb3BlcnR5IHtGb3JtQ29udHJvbH0gW2Zvcm1Db250cm9sXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBGb3JtQ29udHJvbFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRHluYW1pY091dHB1dCB7XG4gIGNvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG4gIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBjb250ZW50PzogTm9kZVtdW107XG4gIGNoaWxkcmVuPzogQW5ndWxhckR5bmFtaWNPdXRwdXRbXTtcbiAgaW5zdGFuY2U/OiBUeXBlPHVua25vd24+O1xuICBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w7XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBvcHRpb24gdHlwZSBmb3IgaW5wdXQgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tbW9uIHN0cnVjdHVyZSBmb3Igb3B0aW9ucyB1c2VkIGluIHNlbGVjdCwgcmFkaW8sIGFuZCBjaGVja2JveCBpbnB1dHMuXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZGlzcGxheSB0ZXh0LCB2YWx1ZSwgZGlzYWJsZWQgc3RhdGUsIENTUyBjbGFzcywgYW5kIGljb24uXG4gKiBAaW50ZXJmYWNlIElucHV0T3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCAtIFRoZSBkaXNwbGF5IHRleHQgZm9yIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nT3JCb29sZWFufSBbZGlzYWJsZWRdIC0gV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV0gLSBDU1MgY2xhc3MgbmFtZSBmb3Igc3R5bGluZyB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ljb25dIC0gSWNvbiB0byBkaXNwbGF5IHdpdGggdGhlIG9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9wdGlvbiB7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBTdHJpbmdPckJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGNvbXBvbmVudCByZWZyZXNoIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgcmVmcmVzaCBldmVudCBmb3IgbGlzdCBjb21wb25lbnRzLlxuICogQ29udGFpbnMgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGEgZm9yIHRoZSBsaXN0LlxuICogQGludGVyZmFjZSBJTGlzdENvbXBvbmVudFJlZnJlc2hFdmVudFxuICogQHByb3BlcnR5IHtLZXlWYWx1ZVtdfSBkYXRhIC0gQXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnQge1xuICBkYXRhOiBLZXlWYWx1ZVtdO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gc2VydmljZSBjb250cm9sIHN0cnVjdHVyZVxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBhIGZvcm0gY29udHJvbCBtYW5hZ2VkIGJ5IHRoZSBmb3JtIHNlcnZpY2UuXG4gKiBDb250YWlucyB0aGUgRm9ybUdyb3VwIGNvbnRyb2wgYW5kIHRoZSBhc3NvY2lhdGVkIGZpZWxkIHByb3BlcnRpZXMgZm9yIHJlbmRlcmluZy5cbiAqIEBpbnRlcmZhY2UgRm9ybVNlcnZpY2VDb250cm9sXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Hcm91cCBmb3IgdGhlIGNvbnRyb2xcbiAqIEBwcm9wZXJ0eSB7QW5ndWxhckZpZWxkRGVmaW5pdGlvbn0gcHJvcHMgLSBUaGUgZmllbGQgcHJvcGVydGllcyBmb3IgcmVuZGVyaW5nIHRoZSBjb250cm9sXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZXJ2aWNlQ29udHJvbCB7XG4gIGNvbnRyb2w6IEZvcm1Hcm91cDtcbiAgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb247XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGl0ZW0gY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGN1c3RvbSBldmVudHMgdHJpZ2dlcmVkIGJ5IGxpc3QgaXRlbXMuXG4gKiBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGFjdGlvbiBhbmQgcHJpbWFyeSBrZXkuXG4gKiBAaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhY3Rpb24gLSBUaGUgYWN0aW9uIHBlcmZvcm1lZCBvbiB0aGUgbGlzdCBpdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrXSAtIE9wdGlvbmFsIHByaW1hcnkga2V5IG9mIHRoZSBhZmZlY3RlZCBpdGVtXG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1DdXN0b21FdmVudCBleHRlbmRzIEJhc2VDdXN0b21FdmVudCB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBwaz86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIGludGVyZmFjZSBmb3IgY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYmFzZSBzdHJ1Y3R1cmUgZm9yIGN1c3RvbSBldmVudHMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQ29udGFpbnMgcHJvcGVydGllcyBmb3IgdGhlIGV2ZW50IGRhdGEsIHRhcmdldCBlbGVtZW50LCBuYW1lLCBhbmQgY29tcG9uZW50LlxuICogQGludGVyZmFjZSBCYXNlQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtIVE1MRWxlbWVudH0gW3RhcmdldF0gLSBUaGUgdGFyZ2V0IGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUN1c3RvbUV2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wb25lbnQ6IHN0cmluZztcbiAgZGF0YT86IHVua25vd247XG4gIHRhcmdldD86IEhUTUxFbGVtZW50O1xufVxuXG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUZDLENBQUM7QUFjRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSAnQGRlY2FmLXRzL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiwgRmllbGRVcGRhdGVNb2RlLCBLZXlWYWx1ZSwgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGaWVsZFByb3BlcnRpZXMgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgY29tcG9uZW50cyB0aGF0IGhvbGQgYW4gRWxlbWVudFJlZlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGNvbXBvbmVudCBob2xkZXIgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIERPTSBlbGVtZW50IHRocm91Z2ggRWxlbWVudFJlZlxuICogQGludGVyZmFjZSBJQ29tcG9uZW50SG9sZGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21wb25lbnRIb2xkZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50J3MgRE9NIGVsZW1lbnRcbiAgICogQHByb3BlcnR5IHtFbGVtZW50UmVmfSBjb21wb25lbnQgLSBUaGUgRWxlbWVudFJlZiBpbnN0YW5jZSBwcm92aWRpbmcgYWNjZXNzIHRvIHRoZSBuYXRpdmUgRE9NIGVsZW1lbnRcbiAgICovXG4gIGNvbXBvbmVudDogRWxlbWVudFJlZjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmb3JtIGNvbXBvbmVudHMgdGhhdCBob2xkIGJvdGggYW4gRWxlbWVudFJlZiBhbmQgYSBGb3JtR3JvdXBcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgSUNvbXBvbmVudEhvbGRlciB0byBpbmNsdWRlIGEgRm9ybUdyb3VwIGZvciBmb3JtIGhhbmRsaW5nIGNhcGFiaWxpdGllc1xuICogQGludGVyZmFjZSBJRm9ybUVsZW1lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1FbGVtZW50IGV4dGVuZHMgSUNvbXBvbmVudEhvbGRlciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIEFuZ3VsYXIgRm9ybUdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZvcm0gZWxlbWVudFxuICAgKiBAcHJvcGVydHkge0Zvcm1Hcm91cHx1bmRlZmluZWR9IGZvcm1Hcm91cCAtIFRoZSBmb3JtIGdyb3VwIGluc3RhbmNlIGZvciBtYW5hZ2luZyBmb3JtIGNvbnRyb2xzIGFuZCB2YWxpZGF0aW9uXG4gICAqL1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGZpZWxkc2V0IGl0ZW0gcmVwcmVzZW50YXRpb24gaW4gdGhlIFVJLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBpdGVtcyBkaXNwbGF5ZWQgaW4gdGhlIHJlb3JkZXJhYmxlIGxpc3Qgd2l0aGluIHRoZSBmaWVsZHNldC5cbiAqIEVhY2ggaXRlbSByZXByZXNlbnRzIGEgdmFsdWUgYWRkZWQgdG8gdGhlIGZpZWxkc2V0IHdpdGggZGlzcGxheSBwcm9wZXJ0aWVzIGZvciB0aGUgVUkuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWVsZFNldEl0ZW0ge1xuICAvKiogQGRlc2NyaXB0aW9uIFNlcXVlbnRpYWwgaW5kZXggbnVtYmVyIGZvciBvcmRlcmluZyBpdGVtcyBpbiB0aGUgbGlzdCAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogQGRlc2NyaXB0aW9uIFByaW1hcnkgZGlzcGxheSB0ZXh0IGZvciB0aGUgaXRlbSAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHNlY29uZGFyeSB0ZXh0IHByb3ZpZGluZyBhZGRpdGlvbmFsIGl0ZW0gZGV0YWlscyAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmaWVsZHNldCB2YWxpZGF0aW9uIGV2ZW50IGRhdGEuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdmFsaWRhdGlvbiBldmVudHMgZW1pdHRlZCB3aGVuIGZvcm0gdmFsaWRhdGlvbiBvY2N1cnMuXG4gKiBVc2VkIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gZm9ybSBjb21wb25lbnRzIGFuZCB0aGUgZmllbGRzZXQgY29udGFpbmVyLlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmllbGRTZXRWYWxpZGF0aW9uRXZlbnQge1xuICAvKiogQGRlc2NyaXB0aW9uIFRoZSBGb3JtR3JvdXAgY29udGFpbmluZyB0aGUgdmFsaWRhdGVkIGZvcm0gY29udHJvbHMgKi9cbiAgZm9ybUdyb3VwOiAgRm9ybUFycmF5IHwgRm9ybUdyb3VwO1xuICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IGZvcm0gdmFsdWUgYmVpbmcgdmFsaWRhdGVkICovXG4gIHZhbHVlOiB1bmtub3duO1xuICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGZvcm0gdmFsaWRhdGlvbiBwYXNzZWQgb3IgZmFpbGVkICovXG4gIGlzVmFsaWQ6IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBpbmRpdmlkdWFsIGZpbHRlciBxdWVyeSBpdGVtc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgc2luZ2xlIGZpbHRlciBjcml0ZXJpb24gaW4gYSBmaWx0ZXIgcXVlcnkuXG4gKiBFYWNoIGl0ZW0gcmVwcmVzZW50cyBvbmUgY29uZGl0aW9uIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRhdGEsIGNvbnNpc3Rpbmcgb2ZcbiAqIGFuIGluZGV4IChmaWVsZCBuYW1lKSwgYSBjb25kaXRpb24gKGNvbXBhcmlzb24gb3BlcmF0b3IpLCBhbmQgYSB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAaW50ZXJmYWNlIElGaWx0ZXJRdWVyeUl0ZW1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaW5kZXhdIC0gT3B0aW9uYWwgZmllbGQgbmFtZSBvciBpbmRleCB0byBmaWx0ZXIgb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY29uZGl0aW9uXSAtIE9wdGlvbmFsIGNvbXBhcmlzb24gY29uZGl0aW9uIChlLmcuLCAnRXF1YWwnLCAnQ29udGFpbnMnLCAnR3JlYXRlciBUaGFuJylcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdmFsdWVdIC0gT3B0aW9uYWwgdmFsdWUgdG8gY29tcGFyZSB0aGUgZmllbGQgYWdhaW5zdFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyUXVlcnlJdGVtIHtcbiAgaW5kZXg/OiBzdHJpbmcsXG4gIGNvbmRpdGlvbj86IHN0cmluZyxcbiAgdmFsdWU/OiBzdHJpbmdcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3Igc29ydGluZyBjb25maWd1cmF0aW9uIG9iamVjdHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3Igc3BlY2lmeWluZyBzb3J0IGNyaXRlcmlhIGluY2x1ZGluZyB0aGUgZmllbGRcbiAqIHRvIHNvcnQgYnkgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNvcnQgKGFzY2VuZGluZyBvciBkZXNjZW5kaW5nKS5cbiAqIEBpbnRlcmZhY2UgSVNvcnRPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBmaWVsZCBuYW1lIG9yIHByb3BlcnR5IHRvIHNvcnQgYnlcbiAqIEBwcm9wZXJ0eSB7T3JkZXJEaXJlY3Rpb259IGRpcmVjdGlvbiAtIFRoZSBzb3J0IGRpcmVjdGlvbiAoQVNDIG9yIERTQylcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnRPYmplY3Qge1xuICB2YWx1ZTogc3RyaW5nLFxuICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGNvbXBsZXRlIGZpbHRlciBxdWVyeSBjb25maWd1cmF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb21wbGV0ZSBzdHJ1Y3R1cmUgZm9yIGZpbHRlciBhbmQgc29ydCBvcGVyYXRpb25zLlxuICogQ29tYmluZXMgbXVsdGlwbGUgZmlsdGVyIGNyaXRlcmlhIHdpdGggc29ydGluZyBjb25maWd1cmF0aW9uIHRvIHByb3ZpZGVcbiAqIGNvbXByZWhlbnNpdmUgZGF0YSBmaWx0ZXJpbmcgYW5kIG9yZGVyaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBpbnRlcmZhY2UgSUZpbHRlclF1ZXJ5XG4gKiBAcHJvcGVydHkge0lGaWx0ZXJRdWVyeUl0ZW1bXSB8IHVuZGVmaW5lZH0gcXVlcnkgLSBBcnJheSBvZiBmaWx0ZXIgY3JpdGVyaWEgb3IgdW5kZWZpbmVkIGZvciBubyBmaWx0ZXJpbmdcbiAqIEBwcm9wZXJ0eSB7SVNvcnRPYmplY3R9IHNvcnQgLSBTb3J0aW5nIGNvbmZpZ3VyYXRpb24gc3BlY2lmeWluZyBmaWVsZCBhbmQgZGlyZWN0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJRdWVyeSB7XG4gIHF1ZXJ5OiBJRmlsdGVyUXVlcnlJdGVtW10gfCB1bmRlZmluZWQsXG4gIHNvcnQ6IElTb3J0T2JqZWN0XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGlucHV0IHByb3BlcnRpZXNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgRmllbGRQcm9wZXJ0aWVzIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIEFuZ3VsYXIgY29tcG9uZW50cy5cbiAqIEluY2x1ZGVzIHVwZGF0ZSBtb2RlIGZvciBmb3JtIGNvbnRyb2xzIGFuZCBvcHRpb25hbCBGb3JtR3JvdXAgYW5kIEZvcm1Db250cm9sIHJlZmVyZW5jZXMuXG4gKiBAaW50ZXJmYWNlIElDb21wb25lbnRJbnB1dFxuICogQHByb3BlcnR5IHtGaWVsZFVwZGF0ZU1vZGV9IFt1cGRhdGVNb2RlXSAtIFdoZW4gdGhlIGZpZWxkIHZhbHVlIHNob3VsZCBiZSB1cGRhdGVkXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gW2Zvcm1Hcm91cF0gLSBPcHRpb25hbCBGb3JtR3JvdXAgcmVmZXJlbmNlXG4gKiBAcHJvcGVydHkge0Zvcm1Db250cm9sfSBbZm9ybUNvbnRyb2xdIC0gT3B0aW9uYWwgRm9ybUNvbnRyb2wgcmVmZXJlbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21wb25lbnRJbnB1dCBleHRlbmRzIEZpZWxkUHJvcGVydGllcyB7XG4gIHVwZGF0ZU1vZGU/OiBGaWVsZFVwZGF0ZU1vZGU7XG4gIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBkeW5hbWljYWxseSBjcmVhdGluZyBBbmd1bGFyIGNvbXBvbmVudHMuXG4gKiBDb250YWlucyB0aGUgY29tcG9uZW50IG5hbWUsIGlucHV0IHByb3BlcnRpZXMsIGluamVjdG9yLCBhbmQgb3B0aW9uYWwgY2hpbGQgY29tcG9uZW50cy5cbiAqIEBpbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gcmVuZGVyXG4gKiBAcHJvcGVydHkge0lDb21wb25lbnRJbnB1dH0gaW5wdXRzIC0gVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7RW52aXJvbm1lbnRJbmplY3RvciB8IEluamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQHByb3BlcnR5IHtJQ29tcG9uZW50Q29uZmlnW119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnQgY29uZmlndXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZyB7XG4gIGNvbXBvbmVudDogc3RyaW5nO1xuICBpbnB1dHM6IElDb21wb25lbnRJbnB1dDtcbiAgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3RvcjtcbiAgY2hpbGRyZW4/OiBJQ29tcG9uZW50Q29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgZm9yIEFuZ3VsYXIgY29tcG9uZW50cywgaW5jbHVkaW5nXG4gKiBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LCBzZWxlY3Rvciwgc3RhbmRhbG9uZSBzdGF0dXMsIGltcG9ydHMsIHRlbXBsYXRlLCBhbmQgc3R5bGVzLlxuICogVGhpcyBpcyB1c2VkIGZvciByZWZsZWN0aW9uIGFuZCBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbi5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFuZ2VEZXRlY3Rpb24gLSBUaGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3RhbmRhbG9uZSAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBzdGFuZGFsb25lXG4gKiBAcHJvcGVydHkgaW1wb3J0cyAtIEFycmF5IG9mIGltcG9ydGVkIG1vZHVsZXMvY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIEhUTUwgdGVtcGxhdGUgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN0eWxlcyAtIEFycmF5IG9mIENTUyBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGEge1xuICBjaGFuZ2VEZXRlY3Rpb246IG51bWJlcjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgc3RhbmRhbG9uZTogYm9vbGVhbjtcbiAgaW1wb3J0czogKG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duKVtdO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICBzdHlsZXM6IHN0cmluZ1tdO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE91dHB1dCBzdHJ1Y3R1cmUgZnJvbSB0aGUgQW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG91dHB1dCBwcm9kdWNlZCBieSB0aGUgTmd4UmVuZGVyaW5nRW5naW5lXG4gKiB3aGVuIHJlbmRlcmluZyBhIGNvbXBvbmVudC4gQ29udGFpbnMgdGhlIGNvbXBvbmVudCB0eXBlLCBpbnB1dHMsIGluamVjdG9yLFxuICogY29udGVudCBub2RlcywgYW5kIGNoaWxkIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBbmd1bGFyRHluYW1pY091dHB1dFxuICogQHByb3BlcnR5IHtUeXBlPHVua25vd24+fSBjb21wb25lbnQgLSBUaGUgQW5ndWxhciBjb21wb25lbnQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZW5kZXJlcklkXSAtIE9wdGlvbmFsIHVuaXF1ZSBJRCBmb3IgdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW2lucHV0c10gLSBPcHRpb25hbCBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge0luamVjdG9yfSBbaW5qZWN0b3JdIC0gT3B0aW9uYWwgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Tm9kZVtdW119IFtjb250ZW50XSAtIE9wdGlvbmFsIGNvbnRlbnQgbm9kZXMgZm9yIHByb2plY3Rpb25cbiAqIEBwcm9wZXJ0eSB7QW5ndWxhckR5bmFtaWNPdXRwdXRbXX0gW2NoaWxkcmVuXSAtIE9wdGlvbmFsIGNoaWxkIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7VHlwZTx1bmtub3duPn0gW2luc3RhbmNlXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IFtmb3JtR3JvdXBdIC0gT3B0aW9uYWwgY29tcG9uZW50IEZvcm1Hcm91cFxuICogQHByb3BlcnR5IHtGb3JtQ29udHJvbH0gW2Zvcm1Db250cm9sXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBGb3JtQ29udHJvbFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRHluYW1pY091dHB1dCB7XG4gIGNvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG4gIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBjb250ZW50PzogTm9kZVtdW107XG4gIGNoaWxkcmVuPzogQW5ndWxhckR5bmFtaWNPdXRwdXRbXTtcbiAgaW5zdGFuY2U/OiBUeXBlPHVua25vd24+O1xuICBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w7XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBvcHRpb24gdHlwZSBmb3IgaW5wdXQgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tbW9uIHN0cnVjdHVyZSBmb3Igb3B0aW9ucyB1c2VkIGluIHNlbGVjdCwgcmFkaW8sIGFuZCBjaGVja2JveCBpbnB1dHMuXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZGlzcGxheSB0ZXh0LCB2YWx1ZSwgZGlzYWJsZWQgc3RhdGUsIENTUyBjbGFzcywgYW5kIGljb24uXG4gKiBAaW50ZXJmYWNlIElucHV0T3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCAtIFRoZSBkaXNwbGF5IHRleHQgZm9yIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nT3JCb29sZWFufSBbZGlzYWJsZWRdIC0gV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV0gLSBDU1MgY2xhc3MgbmFtZSBmb3Igc3R5bGluZyB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ljb25dIC0gSWNvbiB0byBkaXNwbGF5IHdpdGggdGhlIG9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9wdGlvbiB7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBTdHJpbmdPckJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGNvbXBvbmVudCByZWZyZXNoIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgcmVmcmVzaCBldmVudCBmb3IgbGlzdCBjb21wb25lbnRzLlxuICogQ29udGFpbnMgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGEgZm9yIHRoZSBsaXN0LlxuICogQGludGVyZmFjZSBJTGlzdENvbXBvbmVudFJlZnJlc2hFdmVudFxuICogQHByb3BlcnR5IHtLZXlWYWx1ZVtdfSBkYXRhIC0gQXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnQge1xuICBkYXRhOiBLZXlWYWx1ZVtdO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gc2VydmljZSBjb250cm9sIHN0cnVjdHVyZVxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBhIGZvcm0gY29udHJvbCBtYW5hZ2VkIGJ5IHRoZSBmb3JtIHNlcnZpY2UuXG4gKiBDb250YWlucyB0aGUgRm9ybUdyb3VwIGNvbnRyb2wgYW5kIHRoZSBhc3NvY2lhdGVkIGZpZWxkIHByb3BlcnRpZXMgZm9yIHJlbmRlcmluZy5cbiAqIEBpbnRlcmZhY2UgRm9ybVNlcnZpY2VDb250cm9sXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Hcm91cCBmb3IgdGhlIGNvbnRyb2xcbiAqIEBwcm9wZXJ0eSB7QW5ndWxhckZpZWxkRGVmaW5pdGlvbn0gcHJvcHMgLSBUaGUgZmllbGQgcHJvcGVydGllcyBmb3IgcmVuZGVyaW5nIHRoZSBjb250cm9sXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZXJ2aWNlQ29udHJvbCB7XG4gIGNvbnRyb2w6IEZvcm1Hcm91cDtcbiAgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb247XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGl0ZW0gY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGN1c3RvbSBldmVudHMgdHJpZ2dlcmVkIGJ5IGxpc3QgaXRlbXMuXG4gKiBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGFjdGlvbiBhbmQgcHJpbWFyeSBrZXkuXG4gKiBAaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhY3Rpb24gLSBUaGUgYWN0aW9uIHBlcmZvcm1lZCBvbiB0aGUgbGlzdCBpdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrXSAtIE9wdGlvbmFsIHByaW1hcnkga2V5IG9mIHRoZSBhZmZlY3RlZCBpdGVtXG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1DdXN0b21FdmVudCBleHRlbmRzIEJhc2VDdXN0b21FdmVudCB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBwaz86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIGludGVyZmFjZSBmb3IgY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYmFzZSBzdHJ1Y3R1cmUgZm9yIGN1c3RvbSBldmVudHMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQ29udGFpbnMgcHJvcGVydGllcyBmb3IgdGhlIGV2ZW50IGRhdGEsIHRhcmdldCBlbGVtZW50LCBuYW1lLCBhbmQgY29tcG9uZW50LlxuICogQGludGVyZmFjZSBCYXNlQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtIVE1MRWxlbWVudH0gW3RhcmdldF0gLSBUaGUgdGFyZ2V0IGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUN1c3RvbUV2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wb25lbnQ6IHN0cmluZztcbiAgZGF0YT86IHVua25vd247XG4gIHRhcmdldD86IEhUTUxFbGVtZW50O1xufVxuXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24gKGkxOG4pIHJlc291cmNlIGZpbGUgcGF0aHMuXG4gKlxuICogQHByb3BlcnR5IHByZWZpeCAtIFRoZSBwcmVmaXggdG8gYmUgdXNlZCBmb3IgdGhlIHJlc291cmNlIGZpbGUgcGF0aC5cbiAqIEBwcm9wZXJ0eSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSByZXNvdXJjZSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4blJlc291cmNlQ29uZmlnIHsgcHJlZml4OiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nIH1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlQ3VzdG9tRXZlbnQsIEZvcm1TZXJ2aWNlQ29udHJvbCwgSW5wdXRPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5cblxuZXhwb3J0IHR5cGUgSGFuZGxlckxpa2UgPSBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPj5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBrZXktdmFsdWUgcGFpciB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cyBhbmQgYW55IHR5cGUgb2YgdmFsdWVzLlxuICogVGhpcyBpcyBjb21tb25seSB1c2VkIGZvciBkeW5hbWljIGRhdGEgc3RydWN0dXJlcyB3aGVyZSB0aGUgcHJvcGVydGllcyBhcmUgbm90IGtub3duIGF0IGNvbXBpbGUgdGltZS5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBLZXlWYWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEtleVZhbHVlID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBmdW5jdGlvbiB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIG9mIGFueSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhbnkgdHlwZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIHBhcmFtZXRlcnMgb3IgdmFyaWFibGVzXG4gKiB3aGVyZSB0aGUgZXhhY3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuXG4gKiBAdHlwZWRlZiBGdW5jdGlvbkxpa2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBGdW5jdGlvbkxpa2UgPSAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRWxlbWVudCBzaXplIG9wdGlvbnMgZm9yIFVJIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHNpemUgdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gVUkgZWxlbWVudHMuXG4gKiBUaGVzZSBzaXplcyBjb250cm9sIHRoZSBkaW1lbnNpb25zIGFuZCBsYXlvdXQgYmVoYXZpb3Igb2YgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHsoJ3NtYWxsJ3wnbWVkaXVtJ3wnbGFyZ2UnfCd4bGFyZ2UnfCcyeGxhcmdlJ3wnYXV0byd8J2V4cGFuZCd8J2Jsb2NrJyl9IEVsZW1lbnRTaXplc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFNpemVzID1cbiAgfCAnc21hbGwnXG4gIHwgJ21lZGl1bSdcbiAgfCAnbGFyZ2UnXG4gIHwgJ3hsYXJnZSdcbiAgfCAnMnhsYXJnZSdcbiAgfCAnYXV0bydcbiAgfCAnZXhwYW5kJ1xuICB8ICdibG9jayc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2ljIHBvc2l0aW9uIG9wdGlvbnMgZm9yIFVJIGVsZW1lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBwb3NpdGlvbiB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHBvc2l0aW9ucyBjb250cm9sIHRoZSBhbGlnbm1lbnQgYW5kIHBsYWNlbWVudCBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnbGVmdCd8J2NlbnRlcid8J3JpZ2h0J3wndG9wJ3wnYm90dG9tJyl9IEVsZW1lbnRQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbnMgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFeHRlbmRlZCBwb3NpdGlvbiBvcHRpb25zIGZvciBmbGV4IGxheW91dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2ljIEVsZW1lbnRQb3NpdGlvbnMgd2l0aCBhZGRpdGlvbmFsIGZsZXgtc3BlY2lmaWMgcG9zaXRpb24gdmFsdWVzLlxuICogVGhlc2UgcG9zaXRpb25zIGFyZSB1c2VkIGZvciBjb250cm9sbGluZyBhbGlnbm1lbnQgYW5kIGRpc3RyaWJ1dGlvbiBpbiBmbGV4IGNvbnRhaW5lcnMuXG4gKiBAdHlwZWRlZiB7KEVsZW1lbnRQb3NpdGlvbnN8J3N0cmV0Y2gnfCdtaWRkbGUnfCdhcm91bmQnfCdiZXR3ZWVuJyl9IEZsZXhQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZsZXhQb3NpdGlvbnMgPVxuICB8IEVsZW1lbnRQb3NpdGlvbnNcbiAgfCAnc3RyZXRjaCdcbiAgfCAnbWlkZGxlJ1xuICB8ICdhcm91bmQnXG4gIHwgJ2JldHdlZW4nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgbW9kZSBvcHRpb25zIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB3aGVuIGZvcm0gZmllbGQgdmFsdWVzIHNob3VsZCBiZSB1cGRhdGVkIGluIHRoZSBtb2RlbC5cbiAqIC0gJ2NoYW5nZSc6IFVwZGF0ZSBvbiBldmVyeSBjaGFuZ2UgZXZlbnRcbiAqIC0gJ2JsdXInOiBVcGRhdGUgd2hlbiB0aGUgZmllbGQgbG9zZXMgZm9jdXNcbiAqIC0gJ3N1Ym1pdCc6IFVwZGF0ZSBvbmx5IHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkXG4gKiBAdHlwZWRlZiB7KCdjaGFuZ2UnfCdibHVyJ3wnc3VibWl0Jyl9IEZpZWxkVXBkYXRlTW9kZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRVcGRhdGVNb2RlID0gJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JztcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZCBieSB0aGUgZW5naW5lLlxuICogQ29udGFpbnMgYW4gb3B0aW9uYWwgcmVuZGVyZXJJZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlbmRlcmVkIGluc3RhbmNlLlxuICogQGludGVyZmFjZSBSZW5kZXJlZE1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgbW9kZWwgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbCB7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvc3NpYmxlIGlucHV0IHR5cGVzIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgaW5wdXQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBmb3JtIGZpZWxkcy5cbiAqIEluY2x1ZGVzIHN0YW5kYXJkIEhUTUwgaW5wdXQgdHlwZXMgbGlrZSBjaGVja2JveCwgcmFkaW8sIGFuZCBzZWxlY3QsXG4gKiBhcyB3ZWxsIGFzIElvbmljJ3MgVGV4dEZpZWxkVHlwZXMgYW5kIHRleHRhcmVhLlxuICogQHR5cGVkZWYgeygnY2hlY2tib3gnfCdyYWRpbyd8J3NlbGVjdCd8VGV4dEZpZWxkVHlwZXN8J3RleHRhcmVhJyl9IFBvc3NpYmxlSW5wdXRUeXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUG9zc2libGVJbnB1dFR5cGVzID1cbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgVGV4dEZpZWxkVHlwZXNcbiAgfCAndGV4dGFyZWEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaWVsZCBkZWZpbml0aW9uIGZvciBBbmd1bGFyIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0eXBlIHRoYXQgY29tYmluZXMgcHJvcGVydGllcyBmcm9tIHZhcmlvdXMgSW9uaWMgY29tcG9uZW50c1xuICogdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmaWVsZCBpbiBhbiBBbmd1bGFyIGZvcm0uIEl0IG9taXRzIGNlcnRhaW4gcHJvcGVydGllc1xuICogZnJvbSBJb25JbnB1dCwgcGlja3Mgc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIElvblNlbGVjdCwgSW9uVGV4dGFyZWEsIGFuZCBJb25DaGVja2JveCxcbiAqIGFuZCBhZGRzIGN1c3RvbSBwcm9wZXJ0aWVzIGxpa2UgdHlwZSBhbmQgY2xhc3NOYW1lLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckZpZWxkRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgdHlwZSBvZiBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNsYXNzTmFtZSAtIENTUyBjbGFzcyBuYW1lKHMpIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2FuY2VsVGV4dF0gLSBUZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludGVyZmFjZV0gLSBJbnRlcmZhY2Ugc3R5bGUgZm9yIHNlbGVjdCAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NlbGVjdGVkVGV4dF0gLSBUZXh0IGZvciBzZWxlY3RlZCBvcHRpb24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtpbnRlcmZhY2VPcHRpb25zXSAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcmZhY2UgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtyb3dzXSAtIE51bWJlciBvZiByb3dzIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbY29sc10gLSBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsaWdubWVudF0gLSBBbGlnbm1lbnQgb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2p1c3RpZnldIC0gSnVzdGlmaWNhdGlvbiBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NoZWNrZWRdIC0gV2hldGhlciBjaGVja2JveCBpcyBjaGVja2VkIChmcm9tIElvbkNoZWNrYm94KVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiA9IE9taXQ8XG4gIElvbklucHV0LFxuICB8ICdpb25JbnB1dCdcbiAgfCAnaW9uRm9jdXMnXG4gIHwgJ2lvbkNoYW5nZSdcbiAgfCAnaW9uQmx1cidcbiAgfCAnZ2V0SW5wdXRFbGVtZW50J1xuICB8ICdzZXRGb2N1cydcbiAgfCAnbGFiZWwnXG4gIHwgJ2VsJ1xuICB8ICd6J1xuICB8ICd0eXBlJ1xuPiAmXG4gIFBpY2s8XG4gICAgSW9uU2VsZWN0LFxuICAgICdjYW5jZWxUZXh0JyB8ICdpbnRlcmZhY2UnIHwgJ3NlbGVjdGVkVGV4dCcgfCAnaW50ZXJmYWNlT3B0aW9ucydcbiAgPiAmXG4gIFBpY2s8SW9uVGV4dGFyZWEsICdyb3dzJyB8ICdjb2xzJz4gJlxuICBQaWNrPElvbkNoZWNrYm94LCAnYWxpZ25tZW50JyB8ICdqdXN0aWZ5JyB8ICdjaGVja2VkJz4gJiB7XG4gIHR5cGU6IFBvc3NpYmxlSW5wdXRUeXBlcztcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RyaW5nIG9yIGJvb2xlYW4gcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuIHZhbHVlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgYm9vbGVhbiBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4uXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIHZhbHVlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0cmluZ3Mgb3IgYm9vbGVhbnMuXG4gKiBAdHlwZWRlZiB7KCd0cnVlJ3wnZmFsc2UnfGJvb2xlYW4pfSBTdHJpbmdPckJvb2xlYW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ09yQm9vbGVhbiA9ICd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3Igc2VsZWN0IGlucHV0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgSW5wdXRPcHRpb24gaW50ZXJmYWNlIHdpdGggYSBzZWxlY3RlZCBwcm9wZXJ0eSB0byBpbmRpY2F0ZVxuICogd2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBTZWxlY3RPcHRpb24gPSBJbnB1dE9wdGlvbiAmIHsgc2VsZWN0ZWQ/OiBib29sZWFuIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciByYWRpbyBpbnB1dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIElucHV0T3B0aW9uIGludGVyZmFjZSB3aXRoIGEgY2hlY2tlZCBwcm9wZXJ0eSB0byBpbmRpY2F0ZVxuICogd2hldGhlciB0aGUgb3B0aW9uIGlzIGNoZWNrZWQgYnkgZGVmYXVsdC5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFJhZGlvT3B0aW9uID0gSW5wdXRPcHRpb24gJiB7IGNoZWNrZWQ/OiBib29sZWFuIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBjaGVja2JveCBpbnB1dHNcbiAqIEBzdW1tYXJ5IEFsaWFzIGZvciBSYWRpb09wdGlvbiwgYXMgY2hlY2tib3ggb3B0aW9ucyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyByYWRpbyBvcHRpb25zLlxuICogQHR5cGVkZWYge1JhZGlvT3B0aW9ufSBDaGVja2JveE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ2hlY2tib3hPcHRpb24gPSBSYWRpb09wdGlvbjtcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRhcmdldCBvcHRpb25zIGZvciBIVE1MIGZvcm1zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSB0YXJnZXQgdmFsdWVzIGZvciBIVE1MIGZvcm1zLCBpbmNsdWRpbmcgc3RhbmRhcmQgdGFyZ2V0c1xuICogbGlrZSAnX2JsYW5rJywgJ19zZWxmJywgJ19wYXJlbnQnLCBhbmQgJ190b3AnLCBhcyB3ZWxsIGFzIGN1c3RvbSBzdHJpbmcgdmFsdWVzLlxuICogQHR5cGVkZWYgeygnX2JsYW5rJ3wnX3NlbGYnfCdfcGFyZW50J3wnX3RvcCd8c3RyaW5nKX0gSFRNTEZvcm1UYXJnZXRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEhUTUxGb3JtVGFyZ2V0ID0gJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnIHwgc3RyaW5nO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElMaXN0SXRlbVByb3Age1xuLy8gICByZW5kZXI/OiBzdHJpbmcgfCBib29sZWFuO1xuLy8gICB0cmFuc2xhdGVQcm9wcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuLy8gICBidXR0b24/OiBTdHJpbmdPckJvb2xlYW47XG4vLyAgIGljb24/OiBzdHJpbmc7XG4vLyAgIGljb25TbG90PzogJ3N0YXJ0JyB8ICdlbmQnO1xuLy8gICB0aXRsZT86IHN0cmluZztcbi8vICAgZGVzY3JpdHBpb24/OiBzdHJpbmc7XG4vLyAgIGluZm8/OiBzdHJpbmc7XG4vLyAgIHN1YmluZm8/OiBzdHJpbmc7XG4vLyB9XG5cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGZvciBmb3JtIHNlcnZpY2UgY29udHJvbHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBmb3JtIGNvbnRyb2xzIG1hbmFnZWQgYnkgdGhlIGZvcm0gc2VydmljZS5cbiAqIEl0J3MgYSBuZXN0ZWQgcmVjb3JkIHdoZXJlIHRoZSBvdXRlciBrZXkgaXMgdGhlIGZvcm0gZ3JvdXAgbmFtZSwgdGhlIGlubmVyIGtleVxuICogaXMgdGhlIGNvbnRyb2wgbmFtZSwgYW5kIHRoZSB2YWx1ZSBjb250YWlucyB0aGUgZm9ybSBncm91cCBhbmQgZmllbGQgcHJvcGVydGllcy5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2w6IEZvcm1Hcm91cDsgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb24gfT4+fSBGb3JtU2VydmljZUNvbnRyb2xzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VydmljZUNvbnRyb2xzID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFJlY29yZDxzdHJpbmcsIEZvcm1TZXJ2aWNlQ29udHJvbD5cbj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlbmRlcmVyIGN1c3RvbSBldmVudCB0eXBlXG4gKiBAc3VtbWFyeSBDb21iaW5lcyBCYXNlQ3VzdG9tRXZlbnQgd2l0aCBLZXlWYWx1ZSBwcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIGZsZXhpYmxlXG4gKiBjdXN0b20gZXZlbnQgdHlwZSBmb3IgcmVuZGVyZXIgY29tcG9uZW50cy4gVGhpcyBhbGxvd3MgZXZlbnRzIHRvIGNhcnJ5IGJvdGhcbiAqIHN0YW5kYXJkIGV2ZW50IHByb3BlcnRpZXMgYW5kIGFkZGl0aW9uYWwgY3VzdG9tIGRhdGEuXG4gKiBAdHlwZWRlZiBSZW5kZXJlckN1c3RvbUV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBSZW5kZXJlckN1c3RvbUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYgS2V5VmFsdWU7XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ1JVRCBmb3JtIGV2ZW50IHR5cGVcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgQmFzZUN1c3RvbUV2ZW50IHRvIGluY2x1ZGUgb3B0aW9uYWwgaGFuZGxlcnMgZm9yIENSVUQgZm9ybSBvcGVyYXRpb25zLlxuICogVGhpcyBldmVudCB0eXBlIGlzIHVzZWQgZm9yIGZvcm0tcmVsYXRlZCBhY3Rpb25zIGxpa2UgY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUgb3BlcmF0aW9ucy5cbiAqIEB0eXBlZGVmIENydWRGb3JtRXZlbnRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW2hhbmRsZXJzXSAtIE9wdGlvbmFsIGhhbmRsZXJzIGZvciBmb3JtIG9wZXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIENydWRGb3JtRXZlbnQgPSBCYXNlQ3VzdG9tRXZlbnQgJiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGhhbmRsZXJzPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRm9ybSBwYXJlbnQgZ3JvdXAgdHVwbGVcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSB0dXBsZSBjb250YWluaW5nIGEgRm9ybUdyb3VwIGFuZCBpdHMgYXNzb2NpYXRlZCBzdHJpbmcgaWRlbnRpZmllci5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgbWFuYWdpbmcgaGllcmFyY2hpY2FsIGZvcm0gc3RydWN0dXJlcyBhbmQgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMuXG4gKiBAdHlwZWRlZiB7W0Zvcm1Hcm91cCwgc3RyaW5nXX0gRm9ybVBhcmVudEdyb3VwXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGb3JtUGFyZW50R3JvdXAgPSBbRm9ybUdyb3VwLCAgc3RyaW5nXTtcblxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlQ3VzdG9tRXZlbnQsIEZvcm1TZXJ2aWNlQ29udHJvbCwgSW5wdXRPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5cblxuZXhwb3J0IHR5cGUgSGFuZGxlckxpa2UgPSBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPj5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBrZXktdmFsdWUgcGFpciB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cyBhbmQgYW55IHR5cGUgb2YgdmFsdWVzLlxuICogVGhpcyBpcyBjb21tb25seSB1c2VkIGZvciBkeW5hbWljIGRhdGEgc3RydWN0dXJlcyB3aGVyZSB0aGUgcHJvcGVydGllcyBhcmUgbm90IGtub3duIGF0IGNvbXBpbGUgdGltZS5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBLZXlWYWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEtleVZhbHVlID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBmdW5jdGlvbiB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIG9mIGFueSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhbnkgdHlwZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIHBhcmFtZXRlcnMgb3IgdmFyaWFibGVzXG4gKiB3aGVyZSB0aGUgZXhhY3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuXG4gKiBAdHlwZWRlZiBGdW5jdGlvbkxpa2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBGdW5jdGlvbkxpa2UgPSAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRWxlbWVudCBzaXplIG9wdGlvbnMgZm9yIFVJIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHNpemUgdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gVUkgZWxlbWVudHMuXG4gKiBUaGVzZSBzaXplcyBjb250cm9sIHRoZSBkaW1lbnNpb25zIGFuZCBsYXlvdXQgYmVoYXZpb3Igb2YgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHsoJ3NtYWxsJ3wnbWVkaXVtJ3wnbGFyZ2UnfCd4bGFyZ2UnfCcyeGxhcmdlJ3wnYXV0byd8J2V4cGFuZCd8J2Jsb2NrJyl9IEVsZW1lbnRTaXplc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFNpemVzID1cbiAgfCAnc21hbGwnXG4gIHwgJ21lZGl1bSdcbiAgfCAnbGFyZ2UnXG4gIHwgJ3hsYXJnZSdcbiAgfCAnMnhsYXJnZSdcbiAgfCAnYXV0bydcbiAgfCAnZXhwYW5kJ1xuICB8ICdibG9jayc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2ljIHBvc2l0aW9uIG9wdGlvbnMgZm9yIFVJIGVsZW1lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBwb3NpdGlvbiB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHBvc2l0aW9ucyBjb250cm9sIHRoZSBhbGlnbm1lbnQgYW5kIHBsYWNlbWVudCBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnbGVmdCd8J2NlbnRlcid8J3JpZ2h0J3wndG9wJ3wnYm90dG9tJyl9IEVsZW1lbnRQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbnMgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFeHRlbmRlZCBwb3NpdGlvbiBvcHRpb25zIGZvciBmbGV4IGxheW91dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2ljIEVsZW1lbnRQb3NpdGlvbnMgd2l0aCBhZGRpdGlvbmFsIGZsZXgtc3BlY2lmaWMgcG9zaXRpb24gdmFsdWVzLlxuICogVGhlc2UgcG9zaXRpb25zIGFyZSB1c2VkIGZvciBjb250cm9sbGluZyBhbGlnbm1lbnQgYW5kIGRpc3RyaWJ1dGlvbiBpbiBmbGV4IGNvbnRhaW5lcnMuXG4gKiBAdHlwZWRlZiB7KEVsZW1lbnRQb3NpdGlvbnN8J3N0cmV0Y2gnfCdtaWRkbGUnfCdhcm91bmQnfCdiZXR3ZWVuJyl9IEZsZXhQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZsZXhQb3NpdGlvbnMgPVxuICB8IEVsZW1lbnRQb3NpdGlvbnNcbiAgfCAnc3RyZXRjaCdcbiAgfCAnbWlkZGxlJ1xuICB8ICdhcm91bmQnXG4gIHwgJ2JldHdlZW4nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgbW9kZSBvcHRpb25zIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB3aGVuIGZvcm0gZmllbGQgdmFsdWVzIHNob3VsZCBiZSB1cGRhdGVkIGluIHRoZSBtb2RlbC5cbiAqIC0gJ2NoYW5nZSc6IFVwZGF0ZSBvbiBldmVyeSBjaGFuZ2UgZXZlbnRcbiAqIC0gJ2JsdXInOiBVcGRhdGUgd2hlbiB0aGUgZmllbGQgbG9zZXMgZm9jdXNcbiAqIC0gJ3N1Ym1pdCc6IFVwZGF0ZSBvbmx5IHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkXG4gKiBAdHlwZWRlZiB7KCdjaGFuZ2UnfCdibHVyJ3wnc3VibWl0Jyl9IEZpZWxkVXBkYXRlTW9kZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRVcGRhdGVNb2RlID0gJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JztcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZCBieSB0aGUgZW5naW5lLlxuICogQ29udGFpbnMgYW4gb3B0aW9uYWwgcmVuZGVyZXJJZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlbmRlcmVkIGluc3RhbmNlLlxuICogQGludGVyZmFjZSBSZW5kZXJlZE1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgbW9kZWwgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbCB7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvc3NpYmxlIGlucHV0IHR5cGVzIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgaW5wdXQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBmb3JtIGZpZWxkcy5cbiAqIEluY2x1ZGVzIHN0YW5kYXJkIEhUTUwgaW5wdXQgdHlwZXMgbGlrZSBjaGVja2JveCwgcmFkaW8sIGFuZCBzZWxlY3QsXG4gKiBhcyB3ZWxsIGFzIElvbmljJ3MgVGV4dEZpZWxkVHlwZXMgYW5kIHRleHRhcmVhLlxuICogQHR5cGVkZWYgeygnY2hlY2tib3gnfCdyYWRpbyd8J3NlbGVjdCd8VGV4dEZpZWxkVHlwZXN8J3RleHRhcmVhJyl9IFBvc3NpYmxlSW5wdXRUeXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUG9zc2libGVJbnB1dFR5cGVzID1cbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgVGV4dEZpZWxkVHlwZXNcbiAgfCAndGV4dGFyZWEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaWVsZCBkZWZpbml0aW9uIGZvciBBbmd1bGFyIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0eXBlIHRoYXQgY29tYmluZXMgcHJvcGVydGllcyBmcm9tIHZhcmlvdXMgSW9uaWMgY29tcG9uZW50c1xuICogdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmaWVsZCBpbiBhbiBBbmd1bGFyIGZvcm0uIEl0IG9taXRzIGNlcnRhaW4gcHJvcGVydGllc1xuICogZnJvbSBJb25JbnB1dCwgcGlja3Mgc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIElvblNlbGVjdCwgSW9uVGV4dGFyZWEsIGFuZCBJb25DaGVja2JveCxcbiAqIGFuZCBhZGRzIGN1c3RvbSBwcm9wZXJ0aWVzIGxpa2UgdHlwZSBhbmQgY2xhc3NOYW1lLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckZpZWxkRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgdHlwZSBvZiBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNsYXNzTmFtZSAtIENTUyBjbGFzcyBuYW1lKHMpIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2FuY2VsVGV4dF0gLSBUZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludGVyZmFjZV0gLSBJbnRlcmZhY2Ugc3R5bGUgZm9yIHNlbGVjdCAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NlbGVjdGVkVGV4dF0gLSBUZXh0IGZvciBzZWxlY3RlZCBvcHRpb24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtpbnRlcmZhY2VPcHRpb25zXSAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcmZhY2UgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtyb3dzXSAtIE51bWJlciBvZiByb3dzIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbY29sc10gLSBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsaWdubWVudF0gLSBBbGlnbm1lbnQgb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2p1c3RpZnldIC0gSnVzdGlmaWNhdGlvbiBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NoZWNrZWRdIC0gV2hldGhlciBjaGVja2JveCBpcyBjaGVja2VkIChmcm9tIElvbkNoZWNrYm94KVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiA9IE9taXQ8XG4gIElvbklucHV0LFxuICB8ICdpb25JbnB1dCdcbiAgfCAnaW9uRm9jdXMnXG4gIHwgJ2lvbkNoYW5nZSdcbiAgfCAnaW9uQmx1cidcbiAgfCAnZ2V0SW5wdXRFbGVtZW50J1xuICB8ICdzZXRGb2N1cydcbiAgfCAnbGFiZWwnXG4gIHwgJ2VsJ1xuICB8ICd6J1xuICB8ICd0eXBlJ1xuPiAmXG4gIFBpY2s8XG4gICAgSW9uU2VsZWN0LFxuICAgICdjYW5jZWxUZXh0JyB8ICdpbnRlcmZhY2UnIHwgJ3NlbGVjdGVkVGV4dCcgfCAnaW50ZXJmYWNlT3B0aW9ucydcbiAgPiAmXG4gIFBpY2s8SW9uVGV4dGFyZWEsICdyb3dzJyB8ICdjb2xzJz4gJlxuICBQaWNrPElvbkNoZWNrYm94LCAnYWxpZ25tZW50JyB8ICdqdXN0aWZ5JyB8ICdjaGVja2VkJz4gJiB7XG4gIHR5cGU6IFBvc3NpYmxlSW5wdXRUeXBlcztcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RyaW5nIG9yIGJvb2xlYW4gcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuIHZhbHVlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgYm9vbGVhbiBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4uXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIHZhbHVlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0cmluZ3Mgb3IgYm9vbGVhbnMuXG4gKiBAdHlwZWRlZiB7KCd0cnVlJ3wnZmFsc2UnfGJvb2xlYW4pfSBTdHJpbmdPckJvb2xlYW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ09yQm9vbGVhbiA9ICd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuO1xuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBDUlVEIGZpZWxkIGlucHV0c1xuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHVuaW9uIHR5cGUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgU2VsZWN0T3B0aW9uIG9yIFJhZGlvT3B0aW9uLlxuICogVGhpcyBpcyB1c2VkIGZvciBkZWZpbmluZyBvcHRpb25zIGluIGZvcm0gZmllbGRzIHRoYXQgc3VwcG9ydCBib3RoIHNlbGVjdCBhbmQgcmFkaW8gaW5wdXQgdHlwZXMuXG4gKiBAdHlwZWRlZiB7KFNlbGVjdE9wdGlvbnxSYWRpb09wdGlvbil9IENydWRGaWVsZE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZEZpZWxkT3B0aW9uID0gU2VsZWN0T3B0aW9uIHwgUmFkaW9PcHRpb247XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBzZWxlY3QgaW5wdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBJbnB1dE9wdGlvbiBpbnRlcmZhY2Ugd2l0aCBhIHNlbGVjdGVkIHByb3BlcnR5IHRvIGluZGljYXRlXG4gKiB3aGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFNlbGVjdE9wdGlvbiA9IElucHV0T3B0aW9uICYgeyBzZWxlY3RlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIHJhZGlvIGlucHV0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgSW5wdXRPcHRpb24gaW50ZXJmYWNlIHdpdGggYSBjaGVja2VkIHByb3BlcnR5IHRvIGluZGljYXRlXG4gKiB3aGV0aGVyIHRoZSBvcHRpb24gaXMgY2hlY2tlZCBieSBkZWZhdWx0LlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUmFkaW9PcHRpb24gPSBJbnB1dE9wdGlvbiAmIHsgY2hlY2tlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIGNoZWNrYm94IGlucHV0c1xuICogQHN1bW1hcnkgQWxpYXMgZm9yIFJhZGlvT3B0aW9uLCBhcyBjaGVja2JveCBvcHRpb25zIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGFzIHJhZGlvIG9wdGlvbnMuXG4gKiBAdHlwZWRlZiB7UmFkaW9PcHRpb259IENoZWNrYm94T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDaGVja2JveE9wdGlvbiA9IFJhZGlvT3B0aW9uO1xuXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFyZ2V0IG9wdGlvbnMgZm9yIEhUTUwgZm9ybXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB2YWx1ZXMgZm9yIEhUTUwgZm9ybXMsIGluY2x1ZGluZyBzdGFuZGFyZCB0YXJnZXRzXG4gKiBsaWtlICdfYmxhbmsnLCAnX3NlbGYnLCAnX3BhcmVudCcsIGFuZCAnX3RvcCcsIGFzIHdlbGwgYXMgY3VzdG9tIHN0cmluZyB2YWx1ZXMuXG4gKiBAdHlwZWRlZiB7KCdfYmxhbmsnfCdfc2VsZid8J19wYXJlbnQnfCdfdG9wJ3xzdHJpbmcpfSBIVE1MRm9ybVRhcmdldFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgSFRNTEZvcm1UYXJnZXQgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgfCBzdHJpbmc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUxpc3RJdGVtUHJvcCB7XG4vLyAgIHJlbmRlcj86IHN0cmluZyB8IGJvb2xlYW47XG4vLyAgIHRyYW5zbGF0ZVByb3BzPzogc3RyaW5nIHwgc3RyaW5nW107XG4vLyAgIGJ1dHRvbj86IFN0cmluZ09yQm9vbGVhbjtcbi8vICAgaWNvbj86IHN0cmluZztcbi8vICAgaWNvblNsb3Q/OiAnc3RhcnQnIHwgJ2VuZCc7XG4vLyAgIHRpdGxlPzogc3RyaW5nO1xuLy8gICBkZXNjcml0cGlvbj86IHN0cmluZztcbi8vICAgaW5mbz86IHN0cmluZztcbi8vICAgc3ViaW5mbz86IHN0cmluZztcbi8vIH1cblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZm9yIGZvcm0gc2VydmljZSBjb250cm9sc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGZvcm0gY29udHJvbHMgbWFuYWdlZCBieSB0aGUgZm9ybSBzZXJ2aWNlLlxuICogSXQncyBhIG5lc3RlZCByZWNvcmQgd2hlcmUgdGhlIG91dGVyIGtleSBpcyB0aGUgZm9ybSBncm91cCBuYW1lLCB0aGUgaW5uZXIga2V5XG4gKiBpcyB0aGUgY29udHJvbCBuYW1lLCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIHRoZSBmb3JtIGdyb3VwIGFuZCBmaWVsZCBwcm9wZXJ0aWVzLlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHsgY29udHJvbDogRm9ybUdyb3VwOyBwcm9wczogQW5ndWxhckZpZWxkRGVmaW5pdGlvbiB9Pj59IEZvcm1TZXJ2aWNlQ29udHJvbHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1TZXJ2aWNlQ29udHJvbHMgPSBSZWNvcmQ8XG4gIHN0cmluZyxcbiAgUmVjb3JkPHN0cmluZywgRm9ybVNlcnZpY2VDb250cm9sPlxuPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVuZGVyZXIgY3VzdG9tIGV2ZW50IHR5cGVcbiAqIEBzdW1tYXJ5IENvbWJpbmVzIEJhc2VDdXN0b21FdmVudCB3aXRoIEtleVZhbHVlIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgZmxleGlibGVcbiAqIGN1c3RvbSBldmVudCB0eXBlIGZvciByZW5kZXJlciBjb21wb25lbnRzLiBUaGlzIGFsbG93cyBldmVudHMgdG8gY2FycnkgYm90aFxuICogc3RhbmRhcmQgZXZlbnQgcHJvcGVydGllcyBhbmQgYWRkaXRpb25hbCBjdXN0b20gZGF0YS5cbiAqIEB0eXBlZGVmIFJlbmRlcmVyQ3VzdG9tRXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlcmVyQ3VzdG9tRXZlbnQgPSBCYXNlQ3VzdG9tRXZlbnQgJiBLZXlWYWx1ZTtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDUlVEIGZvcm0gZXZlbnQgdHlwZVxuICogQHN1bW1hcnkgRXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQgdG8gaW5jbHVkZSBvcHRpb25hbCBoYW5kbGVycyBmb3IgQ1JVRCBmb3JtIG9wZXJhdGlvbnMuXG4gKiBUaGlzIGV2ZW50IHR5cGUgaXMgdXNlZCBmb3IgZm9ybS1yZWxhdGVkIGFjdGlvbnMgbGlrZSBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBvcGVyYXRpb25zLlxuICogQHR5cGVkZWYgQ3J1ZEZvcm1FdmVudFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbaGFuZGxlcnNdIC0gT3B0aW9uYWwgaGFuZGxlcnMgZm9yIGZvcm0gb3BlcmF0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZEZvcm1FdmVudCA9IEJhc2VDdXN0b21FdmVudCAmIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgaGFuZGxlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHBhcmVudCBncm91cCB0dXBsZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHR1cGxlIGNvbnRhaW5pbmcgYSBGb3JtR3JvdXAgYW5kIGl0cyBhc3NvY2lhdGVkIHN0cmluZyBpZGVudGlmaWVyLlxuICogVGhpcyBpcyB1c2VkIGZvciBtYW5hZ2luZyBoaWVyYXJjaGljYWwgZm9ybSBzdHJ1Y3R1cmVzIGFuZCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcy5cbiAqIEB0eXBlZGVmIHtbRm9ybUdyb3VwLCBzdHJpbmddfSBGb3JtUGFyZW50R3JvdXBcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1QYXJlbnRHcm91cCA9IFtGb3JtR3JvdXAsICBzdHJpbmddO1xuXG4iXX0=