@rjsf/core 3.0.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/cjs/components/AddButton.js +2 -1
  2. package/dist/cjs/components/ErrorList.js +2 -1
  3. package/dist/cjs/components/Form.js +17 -5
  4. package/dist/cjs/components/IconButton.js +2 -1
  5. package/dist/cjs/components/fields/ArrayField.js +108 -51
  6. package/dist/cjs/components/fields/BooleanField.js +3 -1
  7. package/dist/cjs/components/fields/DescriptionField.js +2 -1
  8. package/dist/cjs/components/fields/MultiSchemaField.js +4 -1
  9. package/dist/cjs/components/fields/NullField.js +2 -1
  10. package/dist/cjs/components/fields/NumberField.js +2 -1
  11. package/dist/cjs/components/fields/ObjectField.js +5 -2
  12. package/dist/cjs/components/fields/SchemaField.js +4 -2
  13. package/dist/cjs/components/fields/StringField.js +2 -1
  14. package/dist/cjs/components/fields/TitleField.js +2 -1
  15. package/dist/cjs/components/fields/UnsupportedField.js +2 -1
  16. package/dist/cjs/components/fields/index.js +2 -1
  17. package/dist/cjs/components/widgets/AltDateTimeWidget.js +2 -1
  18. package/dist/cjs/components/widgets/AltDateWidget.js +2 -1
  19. package/dist/cjs/components/widgets/BaseInput.js +2 -1
  20. package/dist/cjs/components/widgets/CheckboxWidget.js +2 -1
  21. package/dist/cjs/components/widgets/CheckboxesWidget.js +2 -1
  22. package/dist/cjs/components/widgets/ColorWidget.js +2 -1
  23. package/dist/cjs/components/widgets/DateTimeWidget.js +2 -1
  24. package/dist/cjs/components/widgets/DateWidget.js +2 -1
  25. package/dist/cjs/components/widgets/EmailWidget.js +2 -1
  26. package/dist/cjs/components/widgets/FileWidget.js +2 -1
  27. package/dist/cjs/components/widgets/HiddenWidget.js +2 -1
  28. package/dist/cjs/components/widgets/PasswordWidget.js +2 -1
  29. package/dist/cjs/components/widgets/RadioWidget.js +2 -1
  30. package/dist/cjs/components/widgets/RangeWidget.js +2 -1
  31. package/dist/cjs/components/widgets/SelectWidget.js +2 -1
  32. package/dist/cjs/components/widgets/TextWidget.js +2 -1
  33. package/dist/cjs/components/widgets/TextareaWidget.js +2 -1
  34. package/dist/cjs/components/widgets/URLWidget.js +2 -1
  35. package/dist/cjs/components/widgets/UpDownWidget.js +2 -1
  36. package/dist/cjs/components/widgets/index.js +2 -1
  37. package/dist/cjs/index.js +2 -1
  38. package/dist/cjs/types.js +2 -1
  39. package/dist/cjs/utils.js +19 -7
  40. package/dist/cjs/validate.js +2 -1
  41. package/dist/cjs/withTheme.js +2 -1
  42. package/dist/es/components/AddButton.js +2 -1
  43. package/dist/es/components/ErrorList.js +2 -1
  44. package/dist/es/components/Form.js +17 -5
  45. package/dist/es/components/IconButton.js +2 -1
  46. package/dist/es/components/fields/ArrayField.js +109 -52
  47. package/dist/es/components/fields/BooleanField.js +3 -1
  48. package/dist/es/components/fields/DescriptionField.js +2 -1
  49. package/dist/es/components/fields/MultiSchemaField.js +4 -1
  50. package/dist/es/components/fields/NullField.js +2 -1
  51. package/dist/es/components/fields/NumberField.js +2 -1
  52. package/dist/es/components/fields/ObjectField.js +5 -2
  53. package/dist/es/components/fields/SchemaField.js +4 -2
  54. package/dist/es/components/fields/StringField.js +2 -1
  55. package/dist/es/components/fields/TitleField.js +2 -1
  56. package/dist/es/components/fields/UnsupportedField.js +2 -1
  57. package/dist/es/components/fields/index.js +2 -1
  58. package/dist/es/components/widgets/AltDateTimeWidget.js +2 -1
  59. package/dist/es/components/widgets/AltDateWidget.js +2 -1
  60. package/dist/es/components/widgets/BaseInput.js +2 -1
  61. package/dist/es/components/widgets/CheckboxWidget.js +2 -1
  62. package/dist/es/components/widgets/CheckboxesWidget.js +2 -1
  63. package/dist/es/components/widgets/ColorWidget.js +2 -1
  64. package/dist/es/components/widgets/DateTimeWidget.js +2 -1
  65. package/dist/es/components/widgets/DateWidget.js +2 -1
  66. package/dist/es/components/widgets/EmailWidget.js +2 -1
  67. package/dist/es/components/widgets/FileWidget.js +2 -1
  68. package/dist/es/components/widgets/HiddenWidget.js +2 -1
  69. package/dist/es/components/widgets/PasswordWidget.js +2 -1
  70. package/dist/es/components/widgets/RadioWidget.js +2 -1
  71. package/dist/es/components/widgets/RangeWidget.js +2 -1
  72. package/dist/es/components/widgets/SelectWidget.js +2 -1
  73. package/dist/es/components/widgets/TextWidget.js +2 -1
  74. package/dist/es/components/widgets/TextareaWidget.js +2 -1
  75. package/dist/es/components/widgets/URLWidget.js +2 -1
  76. package/dist/es/components/widgets/UpDownWidget.js +2 -1
  77. package/dist/es/components/widgets/index.js +2 -1
  78. package/dist/es/index.js +2 -1
  79. package/dist/es/types.js +2 -1
  80. package/dist/es/utils.js +17 -7
  81. package/dist/es/validate.js +2 -1
  82. package/dist/es/withTheme.js +2 -1
  83. package/dist/react-jsonschema-form.js +3 -3
  84. package/dist/react-jsonschema-form.js.map +1 -1
  85. package/index.d.ts +31 -23
  86. package/lib/components/AddButton.js +2 -1
  87. package/lib/components/ErrorList.js +2 -1
  88. package/lib/components/Form.js +17 -5
  89. package/lib/components/IconButton.js +2 -1
  90. package/lib/components/fields/ArrayField.js +109 -52
  91. package/lib/components/fields/BooleanField.js +3 -1
  92. package/lib/components/fields/DescriptionField.js +2 -1
  93. package/lib/components/fields/MultiSchemaField.js +4 -1
  94. package/lib/components/fields/NullField.js +2 -1
  95. package/lib/components/fields/NumberField.js +2 -1
  96. package/lib/components/fields/ObjectField.js +5 -2
  97. package/lib/components/fields/SchemaField.js +4 -2
  98. package/lib/components/fields/StringField.js +2 -1
  99. package/lib/components/fields/TitleField.js +2 -1
  100. package/lib/components/fields/UnsupportedField.js +2 -1
  101. package/lib/components/fields/index.js +2 -1
  102. package/lib/components/widgets/AltDateTimeWidget.js +2 -1
  103. package/lib/components/widgets/AltDateWidget.js +2 -1
  104. package/lib/components/widgets/BaseInput.js +2 -1
  105. package/lib/components/widgets/CheckboxWidget.js +2 -1
  106. package/lib/components/widgets/CheckboxesWidget.js +2 -1
  107. package/lib/components/widgets/ColorWidget.js +2 -1
  108. package/lib/components/widgets/DateTimeWidget.js +2 -1
  109. package/lib/components/widgets/DateWidget.js +2 -1
  110. package/lib/components/widgets/EmailWidget.js +2 -1
  111. package/lib/components/widgets/FileWidget.js +2 -1
  112. package/lib/components/widgets/HiddenWidget.js +2 -1
  113. package/lib/components/widgets/PasswordWidget.js +2 -1
  114. package/lib/components/widgets/RadioWidget.js +2 -1
  115. package/lib/components/widgets/RangeWidget.js +2 -1
  116. package/lib/components/widgets/SelectWidget.js +2 -1
  117. package/lib/components/widgets/TextWidget.js +2 -1
  118. package/lib/components/widgets/TextareaWidget.js +2 -1
  119. package/lib/components/widgets/URLWidget.js +2 -1
  120. package/lib/components/widgets/UpDownWidget.js +2 -1
  121. package/lib/components/widgets/index.js +2 -1
  122. package/lib/index.js +2 -1
  123. package/lib/types.js +2 -1
  124. package/lib/utils.js +17 -7
  125. package/lib/validate.js +2 -1
  126. package/lib/withTheme.js +2 -1
  127. package/package.json +6 -7
@@ -37,7 +37,7 @@ import IconButton from "../IconButton";
37
37
  import React, { Component } from "react";
38
38
  import includes from "core-js-pure/es/array/includes";
39
39
  import * as types from "../../types";
40
- import { getWidget, getDefaultFormState, getUiOptions, isMultiSelect, isFilesArray, isFixedItems, allowAdditionalItems, optionsList, retrieveSchema, toIdSchema, getDefaultRegistry } from "../../utils";
40
+ import { getWidget, getDefaultFormState, getUiOptions, isMultiSelect, isFilesArray, isFixedItems, allowAdditionalItems, isCustomWidget, optionsList, retrieveSchema, toIdSchema, getDefaultRegistry } from "../../utils";
41
41
  import { nanoid } from "nanoid";
42
42
 
43
43
  function ArrayFieldTitle(_ref) {
@@ -437,6 +437,15 @@ function (_Component) {
437
437
  });
438
438
  }
439
439
 
440
+ if (isMultiSelect(schema, rootSchema)) {
441
+ // If array has enum or uniqueItems set to true, call renderMultiSelect() to render the default multiselect widget or a custom widget, if specified.
442
+ return this.renderMultiSelect();
443
+ }
444
+
445
+ if (isCustomWidget(uiSchema)) {
446
+ return this.renderCustomWidget();
447
+ }
448
+
440
449
  if (isFixedItems(schema)) {
441
450
  return this.renderFixedArray();
442
451
  }
@@ -445,10 +454,6 @@ function (_Component) {
445
454
  return this.renderFiles();
446
455
  }
447
456
 
448
- if (isMultiSelect(schema, rootSchema)) {
449
- return this.renderMultiSelect();
450
- }
451
-
452
457
  return this.renderNormalArray();
453
458
  }
454
459
  }, {
@@ -471,6 +476,7 @@ function (_Component) {
471
476
  onBlur = _this$props5.onBlur,
472
477
  onFocus = _this$props5.onFocus,
473
478
  idPrefix = _this$props5.idPrefix,
479
+ idSeparator = _this$props5.idSeparator,
474
480
  rawErrors = _this$props5.rawErrors;
475
481
  var title = schema.title === undefined ? name : schema.title;
476
482
  var ArrayFieldTemplate = registry.ArrayFieldTemplate,
@@ -489,7 +495,7 @@ function (_Component) {
489
495
  var itemSchema = retrieveSchema(schema.items, rootSchema, item);
490
496
  var itemErrorSchema = errorSchema ? errorSchema[index] : undefined;
491
497
  var itemIdPrefix = idSchema.$id + "_" + index;
492
- var itemIdSchema = toIdSchema(itemSchema, itemIdPrefix, rootSchema, item, idPrefix);
498
+ var itemIdSchema = toIdSchema(itemSchema, itemIdPrefix, rootSchema, item, idPrefix, idSeparator);
493
499
  return _this2.renderArrayFieldItem({
494
500
  key: key,
495
501
  index: index,
@@ -526,37 +532,31 @@ function (_Component) {
526
532
  return React.createElement(Component, arrayProps);
527
533
  }
528
534
  }, {
529
- key: "renderMultiSelect",
530
- value: function renderMultiSelect() {
535
+ key: "renderCustomWidget",
536
+ value: function renderCustomWidget() {
531
537
  var _this$props6 = this.props,
532
538
  schema = _this$props6.schema,
533
539
  idSchema = _this$props6.idSchema,
534
540
  uiSchema = _this$props6.uiSchema,
535
- formData = _this$props6.formData,
536
541
  disabled = _this$props6.disabled,
537
542
  readonly = _this$props6.readonly,
538
543
  required = _this$props6.required,
539
- label = _this$props6.label,
540
544
  placeholder = _this$props6.placeholder,
541
545
  autofocus = _this$props6.autofocus,
542
546
  onBlur = _this$props6.onBlur,
543
547
  onFocus = _this$props6.onFocus,
548
+ items = _this$props6.formData,
544
549
  _this$props6$registry = _this$props6.registry,
545
550
  registry = _this$props6$registry === void 0 ? getDefaultRegistry() : _this$props6$registry,
546
- rawErrors = _this$props6.rawErrors;
547
- var items = this.props.formData;
551
+ rawErrors = _this$props6.rawErrors,
552
+ name = _this$props6.name;
548
553
  var widgets = registry.widgets,
549
- rootSchema = registry.rootSchema,
550
554
  formContext = registry.formContext;
551
- var itemsSchema = retrieveSchema(schema.items, rootSchema, formData);
552
- var enumOptions = optionsList(itemsSchema);
555
+ var title = schema.title || name;
553
556
 
554
- var _getUiOptions$enumOpt = _objectSpread({}, getUiOptions(uiSchema), {
555
- enumOptions: enumOptions
556
- }),
557
- _getUiOptions$enumOpt2 = _getUiOptions$enumOpt.widget,
558
- widget = _getUiOptions$enumOpt2 === void 0 ? "select" : _getUiOptions$enumOpt2,
559
- options = _objectWithoutProperties(_getUiOptions$enumOpt, ["widget"]);
557
+ var _getUiOptions2 = _objectSpread({}, getUiOptions(uiSchema)),
558
+ widget = _getUiOptions2.widget,
559
+ options = _objectWithoutProperties(_getUiOptions2, ["widget"]);
560
560
 
561
561
  var Widget = getWidget(schema, widget, widgets);
562
562
  return React.createElement(Widget, {
@@ -572,7 +572,7 @@ function (_Component) {
572
572
  disabled: disabled,
573
573
  readonly: readonly,
574
574
  required: required,
575
- label: label,
575
+ label: title,
576
576
  placeholder: placeholder,
577
577
  formContext: formContext,
578
578
  autofocus: autofocus,
@@ -580,73 +580,129 @@ function (_Component) {
580
580
  });
581
581
  }
582
582
  }, {
583
- key: "renderFiles",
584
- value: function renderFiles() {
583
+ key: "renderMultiSelect",
584
+ value: function renderMultiSelect() {
585
585
  var _this$props7 = this.props,
586
586
  schema = _this$props7.schema,
587
- uiSchema = _this$props7.uiSchema,
588
587
  idSchema = _this$props7.idSchema,
589
- name = _this$props7.name,
588
+ uiSchema = _this$props7.uiSchema,
589
+ formData = _this$props7.formData,
590
590
  disabled = _this$props7.disabled,
591
591
  readonly = _this$props7.readonly,
592
+ required = _this$props7.required,
593
+ placeholder = _this$props7.placeholder,
592
594
  autofocus = _this$props7.autofocus,
593
595
  onBlur = _this$props7.onBlur,
594
596
  onFocus = _this$props7.onFocus,
595
597
  _this$props7$registry = _this$props7.registry,
596
598
  registry = _this$props7$registry === void 0 ? getDefaultRegistry() : _this$props7$registry,
597
- rawErrors = _this$props7.rawErrors;
598
- var title = schema.title || name;
599
+ rawErrors = _this$props7.rawErrors,
600
+ name = _this$props7.name;
599
601
  var items = this.props.formData;
600
602
  var widgets = registry.widgets,
603
+ rootSchema = registry.rootSchema,
601
604
  formContext = registry.formContext;
605
+ var itemsSchema = retrieveSchema(schema.items, rootSchema, formData);
606
+ var title = schema.title || name;
607
+ var enumOptions = optionsList(itemsSchema);
602
608
 
603
- var _getUiOptions2 = getUiOptions(uiSchema),
604
- _getUiOptions2$widget = _getUiOptions2.widget,
605
- widget = _getUiOptions2$widget === void 0 ? "files" : _getUiOptions2$widget,
606
- options = _objectWithoutProperties(_getUiOptions2, ["widget"]);
609
+ var _getUiOptions$enumOpt = _objectSpread({}, getUiOptions(uiSchema), {
610
+ enumOptions: enumOptions
611
+ }),
612
+ _getUiOptions$enumOpt2 = _getUiOptions$enumOpt.widget,
613
+ widget = _getUiOptions$enumOpt2 === void 0 ? "select" : _getUiOptions$enumOpt2,
614
+ options = _objectWithoutProperties(_getUiOptions$enumOpt, ["widget"]);
607
615
 
608
616
  var Widget = getWidget(schema, widget, widgets);
609
617
  return React.createElement(Widget, {
610
- options: options,
611
618
  id: idSchema && idSchema.$id,
612
619
  multiple: true,
613
620
  onChange: this.onSelectChange,
614
621
  onBlur: onBlur,
615
622
  onFocus: onFocus,
623
+ options: options,
616
624
  schema: schema,
617
- title: title,
625
+ registry: registry,
618
626
  value: items,
619
627
  disabled: disabled,
620
628
  readonly: readonly,
629
+ required: required,
630
+ label: title,
631
+ placeholder: placeholder,
621
632
  formContext: formContext,
622
633
  autofocus: autofocus,
623
634
  rawErrors: rawErrors
624
635
  });
625
636
  }
626
637
  }, {
627
- key: "renderFixedArray",
628
- value: function renderFixedArray() {
629
- var _this3 = this;
630
-
638
+ key: "renderFiles",
639
+ value: function renderFiles() {
631
640
  var _this$props8 = this.props,
632
641
  schema = _this$props8.schema,
633
642
  uiSchema = _this$props8.uiSchema,
634
- formData = _this$props8.formData,
635
- errorSchema = _this$props8.errorSchema,
636
- idPrefix = _this$props8.idPrefix,
637
643
  idSchema = _this$props8.idSchema,
638
644
  name = _this$props8.name,
639
- required = _this$props8.required,
640
645
  disabled = _this$props8.disabled,
641
646
  readonly = _this$props8.readonly,
642
647
  autofocus = _this$props8.autofocus,
643
- _this$props8$registry = _this$props8.registry,
644
- registry = _this$props8$registry === void 0 ? getDefaultRegistry() : _this$props8$registry,
645
648
  onBlur = _this$props8.onBlur,
646
649
  onFocus = _this$props8.onFocus,
650
+ _this$props8$registry = _this$props8.registry,
651
+ registry = _this$props8$registry === void 0 ? getDefaultRegistry() : _this$props8$registry,
647
652
  rawErrors = _this$props8.rawErrors;
648
653
  var title = schema.title || name;
649
654
  var items = this.props.formData;
655
+ var widgets = registry.widgets,
656
+ formContext = registry.formContext;
657
+
658
+ var _getUiOptions3 = getUiOptions(uiSchema),
659
+ _getUiOptions3$widget = _getUiOptions3.widget,
660
+ widget = _getUiOptions3$widget === void 0 ? "files" : _getUiOptions3$widget,
661
+ options = _objectWithoutProperties(_getUiOptions3, ["widget"]);
662
+
663
+ var Widget = getWidget(schema, widget, widgets);
664
+ return React.createElement(Widget, {
665
+ options: options,
666
+ id: idSchema && idSchema.$id,
667
+ multiple: true,
668
+ onChange: this.onSelectChange,
669
+ onBlur: onBlur,
670
+ onFocus: onFocus,
671
+ schema: schema,
672
+ title: title,
673
+ value: items,
674
+ disabled: disabled,
675
+ readonly: readonly,
676
+ formContext: formContext,
677
+ autofocus: autofocus,
678
+ rawErrors: rawErrors
679
+ });
680
+ }
681
+ }, {
682
+ key: "renderFixedArray",
683
+ value: function renderFixedArray() {
684
+ var _this3 = this;
685
+
686
+ var _this$props9 = this.props,
687
+ schema = _this$props9.schema,
688
+ uiSchema = _this$props9.uiSchema,
689
+ formData = _this$props9.formData,
690
+ errorSchema = _this$props9.errorSchema,
691
+ idPrefix = _this$props9.idPrefix,
692
+ idSeparator = _this$props9.idSeparator,
693
+ idSchema = _this$props9.idSchema,
694
+ name = _this$props9.name,
695
+ required = _this$props9.required,
696
+ disabled = _this$props9.disabled,
697
+ readonly = _this$props9.readonly,
698
+ autofocus = _this$props9.autofocus,
699
+ _this$props9$registry = _this$props9.registry,
700
+ registry = _this$props9$registry === void 0 ? getDefaultRegistry() : _this$props9$registry,
701
+ onBlur = _this$props9.onBlur,
702
+ onFocus = _this$props9.onFocus,
703
+ rawErrors = _this$props9.rawErrors;
704
+ var title = schema.title || name;
705
+ var items = this.props.formData;
650
706
  var ArrayFieldTemplate = registry.ArrayFieldTemplate,
651
707
  rootSchema = registry.rootSchema,
652
708
  fields = registry.fields,
@@ -676,7 +732,7 @@ function (_Component) {
676
732
  var additional = index >= itemSchemas.length;
677
733
  var itemSchema = additional ? retrieveSchema(schema.additionalItems, rootSchema, item) : itemSchemas[index];
678
734
  var itemIdPrefix = idSchema.$id + "_" + index;
679
- var itemIdSchema = toIdSchema(itemSchema, itemIdPrefix, rootSchema, item, idPrefix);
735
+ var itemIdSchema = toIdSchema(itemSchema, itemIdPrefix, rootSchema, item, idPrefix, idSeparator);
680
736
  var itemUiSchema = additional ? uiSchema.additionalItems || {} : Array.isArray(uiSchema.items) ? uiSchema.items[index] : uiSchema.items || {};
681
737
  var itemErrorSchema = errorSchema ? errorSchema[index] : undefined;
682
738
  return _this3.renderArrayFieldItem({
@@ -729,12 +785,12 @@ function (_Component) {
729
785
  onBlur = props.onBlur,
730
786
  onFocus = props.onFocus,
731
787
  rawErrors = props.rawErrors;
732
- var _this$props9 = this.props,
733
- disabled = _this$props9.disabled,
734
- readonly = _this$props9.readonly,
735
- uiSchema = _this$props9.uiSchema,
736
- _this$props9$registry = _this$props9.registry,
737
- registry = _this$props9$registry === void 0 ? getDefaultRegistry() : _this$props9$registry;
788
+ var _this$props10 = this.props,
789
+ disabled = _this$props10.disabled,
790
+ readonly = _this$props10.readonly,
791
+ uiSchema = _this$props10.uiSchema,
792
+ _this$props10$registr = _this$props10.registry,
793
+ registry = _this$props10$registr === void 0 ? getDefaultRegistry() : _this$props10$registr;
738
794
  var SchemaField = registry.fields.SchemaField;
739
795
 
740
796
  var _orderable$removable$ = _objectSpread({
@@ -831,4 +887,5 @@ if (process.env.NODE_ENV !== "production") {
831
887
  ArrayField.propTypes = types.fieldProps;
832
888
  }
833
889
 
834
- export default ArrayField;
890
+ export default ArrayField;
891
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9BcnJheUZpZWxkLmpzIl0sIm5hbWVzIjpbIkFkZEJ1dHRvbiIsIkljb25CdXR0b24iLCJSZWFjdCIsIkNvbXBvbmVudCIsImluY2x1ZGVzIiwidHlwZXMiLCJnZXRXaWRnZXQiLCJnZXREZWZhdWx0Rm9ybVN0YXRlIiwiZ2V0VWlPcHRpb25zIiwiaXNNdWx0aVNlbGVjdCIsImlzRmlsZXNBcnJheSIsImlzRml4ZWRJdGVtcyIsImFsbG93QWRkaXRpb25hbEl0ZW1zIiwiaXNDdXN0b21XaWRnZXQiLCJvcHRpb25zTGlzdCIsInJldHJpZXZlU2NoZW1hIiwidG9JZFNjaGVtYSIsImdldERlZmF1bHRSZWdpc3RyeSIsIm5hbm9pZCIsIkFycmF5RmllbGRUaXRsZSIsIlRpdGxlRmllbGQiLCJpZFNjaGVtYSIsInRpdGxlIiwicmVxdWlyZWQiLCJpZCIsIiRpZCIsIkFycmF5RmllbGREZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uRmllbGQiLCJkZXNjcmlwdGlvbiIsIkRlZmF1bHRBcnJheUl0ZW0iLCJwcm9wcyIsImJ0blN0eWxlIiwiZmxleCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiZm9udFdlaWdodCIsImtleSIsImNsYXNzTmFtZSIsImhhc1Rvb2xiYXIiLCJjaGlsZHJlbiIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImhhc01vdmVVcCIsImhhc01vdmVEb3duIiwiZGlzYWJsZWQiLCJyZWFkb25seSIsIm9uUmVvcmRlckNsaWNrIiwiaW5kZXgiLCJoYXNSZW1vdmUiLCJvbkRyb3BJbmRleENsaWNrIiwiRGVmYXVsdEZpeGVkQXJyYXlGaWVsZFRlbXBsYXRlIiwidWlTY2hlbWEiLCJzY2hlbWEiLCJpdGVtcyIsIm1hcCIsImNhbkFkZCIsIm9uQWRkQ2xpY2siLCJEZWZhdWx0Tm9ybWFsQXJyYXlGaWVsZFRlbXBsYXRlIiwicCIsImdlbmVyYXRlUm93SWQiLCJnZW5lcmF0ZUtleWVkRm9ybURhdGEiLCJmb3JtRGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJrZXllZFRvUGxhaW5Gb3JtRGF0YSIsImtleWVkRm9ybURhdGEiLCJrZXllZEl0ZW0iLCJBcnJheUZpZWxkIiwicmVnaXN0cnkiLCJyb290U2NoZW1hIiwiaXRlbVNjaGVtYSIsImFkZGl0aW9uYWxJdGVtcyIsInVuZGVmaW5lZCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJvbkNoYW5nZSIsIm5ld0tleWVkRm9ybURhdGFSb3ciLCJfZ2V0TmV3Rm9ybURhdGFSb3ciLCJuZXdLZXllZEZvcm1EYXRhIiwic3RhdGUiLCJzZXRTdGF0ZSIsInVwZGF0ZWRLZXllZEZvcm1EYXRhIiwic3BsaWNlIiwibmV3RXJyb3JTY2hlbWEiLCJlcnJvclNjaGVtYSIsImkiLCJwYXJzZUludCIsImZpbHRlciIsIl8iLCJuZXdJbmRleCIsInRhcmdldCIsImJsdXIiLCJyZU9yZGVyQXJyYXkiLCJfbmV3S2V5ZWRGb3JtRGF0YSIsInNsaWNlIiwidmFsdWUiLCJuZXdGb3JtRGF0YSIsImpzb25WYWx1ZSIsInR5cGUiLCJmb3JtSXRlbXMiLCJhZGRhYmxlIiwibWF4SXRlbXMiLCJsZW5ndGgiLCJoYXNPd25Qcm9wZXJ0eSIsImZpZWxkcyIsIlVuc3VwcG9ydGVkRmllbGQiLCJyZW5kZXJNdWx0aVNlbGVjdCIsInJlbmRlckN1c3RvbVdpZGdldCIsInJlbmRlckZpeGVkQXJyYXkiLCJyZW5kZXJGaWxlcyIsInJlbmRlck5vcm1hbEFycmF5IiwibmFtZSIsImF1dG9mb2N1cyIsIm9uQmx1ciIsIm9uRm9jdXMiLCJpZFByZWZpeCIsImlkU2VwYXJhdG9yIiwicmF3RXJyb3JzIiwiQXJyYXlGaWVsZFRlbXBsYXRlIiwiZm9ybUNvbnRleHQiLCJpdGVtc1NjaGVtYSIsImFycmF5UHJvcHMiLCJjYW5BZGRJdGVtIiwiaXRlbUVycm9yU2NoZW1hIiwiaXRlbUlkUHJlZml4IiwiaXRlbUlkU2NoZW1hIiwicmVuZGVyQXJyYXlGaWVsZEl0ZW0iLCJjYW5Nb3ZlVXAiLCJjYW5Nb3ZlRG93biIsIml0ZW1EYXRhIiwiaXRlbVVpU2NoZW1hIiwicGxhY2Vob2xkZXIiLCJ3aWRnZXRzIiwid2lkZ2V0Iiwib3B0aW9ucyIsIldpZGdldCIsIm9uU2VsZWN0Q2hhbmdlIiwiZW51bU9wdGlvbnMiLCJpdGVtU2NoZW1hcyIsImFkZGl0aW9uYWxTY2hlbWEiLCJjb25jYXQiLCJhZGRpdGlvbmFsIiwiY2FuUmVtb3ZlIiwiVGVtcGxhdGUiLCJTY2hlbWFGaWVsZCIsIm9yZGVyYWJsZSIsInJlbW92YWJsZSIsImhhcyIsIm1vdmVVcCIsIm1vdmVEb3duIiwicmVtb3ZlIiwidG9vbGJhciIsIk9iamVjdCIsImtleXMiLCJzb21lIiwiaXNJdGVtUmVxdWlyZWQiLCJvbkNoYW5nZUZvckluZGV4Iiwib25BZGRJbmRleENsaWNrIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwibmV4dEZvcm1EYXRhIiwicHJldmlvdXNLZXllZEZvcm1EYXRhIiwicHJldmlvdXNLZXllZEZvcm1EYXR1bSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsImZpZWxkUHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxTQUFQLE1BQXNCLGNBQXRCO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixlQUF2QjtBQUNBLE9BQU9DLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixnQ0FBckI7QUFDQSxPQUFPLEtBQUtDLEtBQVosTUFBdUIsYUFBdkI7QUFFQSxTQUNFQyxTQURGLEVBRUVDLG1CQUZGLEVBR0VDLFlBSEYsRUFJRUMsYUFKRixFQUtFQyxZQUxGLEVBTUVDLFlBTkYsRUFPRUMsb0JBUEYsRUFRRUMsY0FSRixFQVNFQyxXQVRGLEVBVUVDLGNBVkYsRUFXRUMsVUFYRixFQVlFQyxrQkFaRixRQWFPLGFBYlA7QUFjQSxTQUFTQyxNQUFULFFBQXVCLFFBQXZCOztB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bEgsS0FBRDtBQUZiLFNBQVA7QUFJRCxPQUxELENBREosR0FPSWEscUJBQXFCLENBQUNxRyxZQUFELENBUjNCO0FBU0EsYUFBTztBQUNML0YsUUFBQUEsYUFBYSxFQUFFYTtBQURWLE9BQVA7QUFHRDs7OztFQTFDc0I1RSxTOztnQkFBbkJpRSxVLGtCQUNrQjtBQUNwQmpCLEVBQUFBLFFBQVEsRUFBRSxFQURVO0FBRXBCVSxFQUFBQSxRQUFRLEVBQUUsRUFGVTtBQUdwQnhDLEVBQUFBLFFBQVEsRUFBRSxFQUhVO0FBSXBCRSxFQUFBQSxRQUFRLEVBQUUsS0FKVTtBQUtwQnFCLEVBQUFBLFFBQVEsRUFBRSxLQUxVO0FBTXBCQyxFQUFBQSxRQUFRLEVBQUUsS0FOVTtBQU9wQm9FLEVBQUFBLFNBQVMsRUFBRTtBQVBTLEM7O0FBeW9CeEIsSUFBSW1ELE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDbEcsRUFBQUEsVUFBVSxDQUFDbUcsU0FBWCxHQUF1QmxLLEtBQUssQ0FBQ21LLFVBQTdCO0FBQ0Q7O0FBRUQsZUFBZXBHLFVBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWRkQnV0dG9uIGZyb20gXCIuLi9BZGRCdXR0b25cIjtcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gXCIuLi9JY29uQnV0dG9uXCI7XG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgaW5jbHVkZXMgZnJvbSBcImNvcmUtanMtcHVyZS9lcy9hcnJheS9pbmNsdWRlc1wiO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIGdldFdpZGdldCxcbiAgZ2V0RGVmYXVsdEZvcm1TdGF0ZSxcbiAgZ2V0VWlPcHRpb25zLFxuICBpc011bHRpU2VsZWN0LFxuICBpc0ZpbGVzQXJyYXksXG4gIGlzRml4ZWRJdGVtcyxcbiAgYWxsb3dBZGRpdGlvbmFsSXRlbXMsXG4gIGlzQ3VzdG9tV2lkZ2V0LFxuICBvcHRpb25zTGlzdCxcbiAgcmV0cmlldmVTY2hlbWEsXG4gIHRvSWRTY2hlbWEsXG4gIGdldERlZmF1bHRSZWdpc3RyeSxcbn0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tIFwibmFub2lkXCI7XG5cbmZ1bmN0aW9uIEFycmF5RmllbGRUaXRsZSh7IFRpdGxlRmllbGQsIGlkU2NoZW1hLCB0aXRsZSwgcmVxdWlyZWQgfSkge1xuICBpZiAoIXRpdGxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaWQgPSBgJHtpZFNjaGVtYS4kaWR9X190aXRsZWA7XG4gIHJldHVybiA8VGl0bGVGaWVsZCBpZD17aWR9IHRpdGxlPXt0aXRsZX0gcmVxdWlyZWQ9e3JlcXVpcmVkfSAvPjtcbn1cblxuZnVuY3Rpb24gQXJyYXlGaWVsZERlc2NyaXB0aW9uKHsgRGVzY3JpcHRpb25GaWVsZCwgaWRTY2hlbWEsIGRlc2NyaXB0aW9uIH0pIHtcbiAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGlkID0gYCR7aWRTY2hlbWEuJGlkfV9fZGVzY3JpcHRpb25gO1xuICByZXR1cm4gPERlc2NyaXB0aW9uRmllbGQgaWQ9e2lkfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IC8+O1xufVxuXG4vLyBVc2VkIGluIHRoZSB0d28gdGVtcGxhdGVzXG5mdW5jdGlvbiBEZWZhdWx0QXJyYXlJdGVtKHByb3BzKSB7XG4gIGNvbnN0IGJ0blN0eWxlID0ge1xuICAgIGZsZXg6IDEsXG4gICAgcGFkZGluZ0xlZnQ6IDYsXG4gICAgcGFkZGluZ1JpZ2h0OiA2LFxuICAgIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLFxuICB9O1xuICByZXR1cm4gKFxuICAgIDxkaXYga2V5PXtwcm9wcy5rZXl9IGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtwcm9wcy5oYXNUb29sYmFyID8gXCJjb2wteHMtOVwiIDogXCJjb2wteHMtMTJcIn0+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7cHJvcHMuaGFzVG9vbGJhciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXhzLTMgYXJyYXktaXRlbS10b29sYm94XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLWdyb3VwXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1hcm91bmRcIixcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgeyhwcm9wcy5oYXNNb3ZlVXAgfHwgcHJvcHMuaGFzTW92ZURvd24pICYmIChcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBpY29uPVwiYXJyb3ctdXBcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb3ZlIHVwXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhcnJheS1pdGVtLW1vdmUtdXBcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtidG5TdHlsZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMucmVhZG9ubHkgfHwgIXByb3BzLmhhc01vdmVVcH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5vblJlb3JkZXJDbGljayhwcm9wcy5pbmRleCwgcHJvcHMuaW5kZXggLSAxKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsocHJvcHMuaGFzTW92ZVVwIHx8IHByb3BzLmhhc01vdmVEb3duKSAmJiAoXG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj1cImFycm93LWRvd25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFycmF5LWl0ZW0tbW92ZS1kb3duXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTW92ZSBkb3duXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgcHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMucmVhZG9ubHkgfHwgIXByb3BzLmhhc01vdmVEb3duXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uUmVvcmRlckNsaWNrKHByb3BzLmluZGV4LCBwcm9wcy5pbmRleCArIDEpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Byb3BzLmhhc1JlbW92ZSAmJiAoXG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgaWNvbj1cInJlbW92ZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlJlbW92ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYXJyYXktaXRlbS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtidG5TdHlsZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMucmVhZG9ubHl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17cHJvcHMub25Ecm9wSW5kZXhDbGljayhwcm9wcy5pbmRleCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIERlZmF1bHRGaXhlZEFycmF5RmllbGRUZW1wbGF0ZShwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldCBjbGFzc05hbWU9e3Byb3BzLmNsYXNzTmFtZX0gaWQ9e3Byb3BzLmlkU2NoZW1hLiRpZH0+XG4gICAgICA8QXJyYXlGaWVsZFRpdGxlXG4gICAgICAgIGtleT17YGFycmF5LWZpZWxkLXRpdGxlLSR7cHJvcHMuaWRTY2hlbWEuJGlkfWB9XG4gICAgICAgIFRpdGxlRmllbGQ9e3Byb3BzLlRpdGxlRmllbGR9XG4gICAgICAgIGlkU2NoZW1hPXtwcm9wcy5pZFNjaGVtYX1cbiAgICAgICAgdGl0bGU9e3Byb3BzLnVpU2NoZW1hW1widWk6dGl0bGVcIl0gfHwgcHJvcHMudGl0bGV9XG4gICAgICAgIHJlcXVpcmVkPXtwcm9wcy5yZXF1aXJlZH1cbiAgICAgIC8+XG5cbiAgICAgIHsocHJvcHMudWlTY2hlbWFbXCJ1aTpkZXNjcmlwdGlvblwiXSB8fCBwcm9wcy5zY2hlbWEuZGVzY3JpcHRpb24pICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImZpZWxkLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBrZXk9e2BmaWVsZC1kZXNjcmlwdGlvbi0ke3Byb3BzLmlkU2NoZW1hLiRpZH1gfT5cbiAgICAgICAgICB7cHJvcHMudWlTY2hlbWFbXCJ1aTpkZXNjcmlwdGlvblwiXSB8fCBwcm9wcy5zY2hlbWEuZGVzY3JpcHRpb259XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJyb3cgYXJyYXktaXRlbS1saXN0XCJcbiAgICAgICAga2V5PXtgYXJyYXktaXRlbS1saXN0LSR7cHJvcHMuaWRTY2hlbWEuJGlkfWB9PlxuICAgICAgICB7cHJvcHMuaXRlbXMgJiYgcHJvcHMuaXRlbXMubWFwKERlZmF1bHRBcnJheUl0ZW0pfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtwcm9wcy5jYW5BZGQgJiYgKFxuICAgICAgICA8QWRkQnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYXJyYXktaXRlbS1hZGRcIlxuICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uQWRkQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkIHx8IHByb3BzLnJlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5mdW5jdGlvbiBEZWZhdWx0Tm9ybWFsQXJyYXlGaWVsZFRlbXBsYXRlKHByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGZpZWxkc2V0IGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfSBpZD17cHJvcHMuaWRTY2hlbWEuJGlkfT5cbiAgICAgIDxBcnJheUZpZWxkVGl0bGVcbiAgICAgICAga2V5PXtgYXJyYXktZmllbGQtdGl0bGUtJHtwcm9wcy5pZFNjaGVtYS4kaWR9YH1cbiAgICAgICAgVGl0bGVGaWVsZD17cHJvcHMuVGl0bGVGaWVsZH1cbiAgICAgICAgaWRTY2hlbWE9e3Byb3BzLmlkU2NoZW1hfVxuICAgICAgICB0aXRsZT17cHJvcHMudWlTY2hlbWFbXCJ1aTp0aXRsZVwiXSB8fCBwcm9wcy50aXRsZX1cbiAgICAgICAgcmVxdWlyZWQ9e3Byb3BzLnJlcXVpcmVkfVxuICAgICAgLz5cblxuICAgICAgeyhwcm9wcy51aVNjaGVtYVtcInVpOmRlc2NyaXB0aW9uXCJdIHx8IHByb3BzLnNjaGVtYS5kZXNjcmlwdGlvbikgJiYgKFxuICAgICAgICA8QXJyYXlGaWVsZERlc2NyaXB0aW9uXG4gICAgICAgICAga2V5PXtgYXJyYXktZmllbGQtZGVzY3JpcHRpb24tJHtwcm9wcy5pZFNjaGVtYS4kaWR9YH1cbiAgICAgICAgICBEZXNjcmlwdGlvbkZpZWxkPXtwcm9wcy5EZXNjcmlwdGlvbkZpZWxkfVxuICAgICAgICAgIGlkU2NoZW1hPXtwcm9wcy5pZFNjaGVtYX1cbiAgICAgICAgICBkZXNjcmlwdGlvbj17XG4gICAgICAgICAgICBwcm9wcy51aVNjaGVtYVtcInVpOmRlc2NyaXB0aW9uXCJdIHx8IHByb3BzLnNjaGVtYS5kZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwicm93IGFycmF5LWl0ZW0tbGlzdFwiXG4gICAgICAgIGtleT17YGFycmF5LWl0ZW0tbGlzdC0ke3Byb3BzLmlkU2NoZW1hLiRpZH1gfT5cbiAgICAgICAge3Byb3BzLml0ZW1zICYmIHByb3BzLml0ZW1zLm1hcChwID0+IERlZmF1bHRBcnJheUl0ZW0ocCkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtwcm9wcy5jYW5BZGQgJiYgKFxuICAgICAgICA8QWRkQnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYXJyYXktaXRlbS1hZGRcIlxuICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uQWRkQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkIHx8IHByb3BzLnJlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVJvd0lkKCkge1xuICByZXR1cm4gbmFub2lkKCk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlS2V5ZWRGb3JtRGF0YShmb3JtRGF0YSkge1xuICByZXR1cm4gIUFycmF5LmlzQXJyYXkoZm9ybURhdGEpXG4gICAgPyBbXVxuICAgIDogZm9ybURhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogZ2VuZXJhdGVSb3dJZCgpLFxuICAgICAgICAgIGl0ZW0sXG4gICAgICAgIH07XG4gICAgICB9KTtcbn1cblxuZnVuY3Rpb24ga2V5ZWRUb1BsYWluRm9ybURhdGEoa2V5ZWRGb3JtRGF0YSkge1xuICByZXR1cm4ga2V5ZWRGb3JtRGF0YS5tYXAoa2V5ZWRJdGVtID0+IGtleWVkSXRlbS5pdGVtKTtcbn1cblxuY2xhc3MgQXJyYXlGaWVsZCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgdWlTY2hlbWE6IHt9LFxuICAgIGZvcm1EYXRhOiBbXSxcbiAgICBpZFNjaGVtYToge30sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICByZWFkb25seTogZmFsc2UsXG4gICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBjb25zdCB7IGZvcm1EYXRhIH0gPSBwcm9wcztcbiAgICBjb25zdCBrZXllZEZvcm1EYXRhID0gZ2VuZXJhdGVLZXllZEZvcm1EYXRhKGZvcm1EYXRhKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAga2V5ZWRGb3JtRGF0YSxcbiAgICAgIHVwZGF0ZWRLZXllZEZvcm1EYXRhOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgIC8vIERvbid0IGNhbGwgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIGlmIGtleWVkIGZvcm1kYXRhIHdhcyBqdXN0IHVwZGF0ZWQuXG4gICAgaWYgKHByZXZTdGF0ZS51cGRhdGVkS2V5ZWRGb3JtRGF0YSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbmV4dEZvcm1EYXRhID0gbmV4dFByb3BzLmZvcm1EYXRhIHx8IFtdO1xuICAgIGNvbnN0IHByZXZpb3VzS2V5ZWRGb3JtRGF0YSA9IHByZXZTdGF0ZS5rZXllZEZvcm1EYXRhIHx8IFtdO1xuICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPVxuICAgICAgbmV4dEZvcm1EYXRhLmxlbmd0aCA9PT0gcHJldmlvdXNLZXllZEZvcm1EYXRhLmxlbmd0aFxuICAgICAgICA/IHByZXZpb3VzS2V5ZWRGb3JtRGF0YS5tYXAoKHByZXZpb3VzS2V5ZWRGb3JtRGF0dW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBrZXk6IHByZXZpb3VzS2V5ZWRGb3JtRGF0dW0ua2V5LFxuICAgICAgICAgICAgICBpdGVtOiBuZXh0Rm9ybURhdGFbaW5kZXhdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICA6IGdlbmVyYXRlS2V5ZWRGb3JtRGF0YShuZXh0Rm9ybURhdGEpO1xuICAgIHJldHVybiB7XG4gICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgIH07XG4gIH1cblxuICBnZXQgaXRlbVRpdGxlKCkge1xuICAgIGNvbnN0IHsgc2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiBzY2hlbWEuaXRlbXMudGl0bGUgfHwgc2NoZW1hLml0ZW1zLmRlc2NyaXB0aW9uIHx8IFwiSXRlbVwiO1xuICB9XG5cbiAgaXNJdGVtUmVxdWlyZWQoaXRlbVNjaGVtYSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1TY2hlbWEudHlwZSkpIHtcbiAgICAgIC8vIFdoaWxlIHdlIGRvbid0IHlldCBzdXBwb3J0IGNvbXBvc2l0ZS9udWxsYWJsZSBqc29uc2NoZW1hIHR5cGVzLCBpdCdzXG4gICAgICAvLyBmdXR1cmUtcHJvb2YgdG8gY2hlY2sgZm9yIHJlcXVpcmVtZW50IGFnYWluc3QgdGhlc2UuXG4gICAgICByZXR1cm4gIWluY2x1ZGVzKGl0ZW1TY2hlbWEudHlwZSwgXCJudWxsXCIpO1xuICAgIH1cbiAgICAvLyBBbGwgbm9uLW51bGwgYXJyYXkgaXRlbSB0eXBlcyBhcmUgaW5oZXJlbnRseSByZXF1aXJlZCBieSBkZXNpZ25cbiAgICByZXR1cm4gaXRlbVNjaGVtYS50eXBlICE9PSBcIm51bGxcIjtcbiAgfVxuXG4gIGNhbkFkZEl0ZW0oZm9ybUl0ZW1zKSB7XG4gICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCB7IGFkZGFibGUgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgaWYgKGFkZGFibGUgIT09IGZhbHNlKSB7XG4gICAgICAvLyBpZiB1aTpvcHRpb25zLmFkZGFibGUgd2FzIG5vdCBleHBsaWNpdGx5IHNldCB0byBmYWxzZSwgd2UgY2FuIGFkZFxuICAgICAgLy8gYW5vdGhlciBpdGVtIGlmIHdlIGhhdmUgbm90IGV4Y2VlZGVkIG1heEl0ZW1zIHlldFxuICAgICAgaWYgKHNjaGVtYS5tYXhJdGVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFkZGFibGUgPSBmb3JtSXRlbXMubGVuZ3RoIDwgc2NoZW1hLm1heEl0ZW1zO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkYWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhZGRhYmxlO1xuICB9XG5cbiAgX2dldE5ld0Zvcm1EYXRhUm93ID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgc2NoZW1hLCByZWdpc3RyeSA9IGdldERlZmF1bHRSZWdpc3RyeSgpIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgcm9vdFNjaGVtYSB9ID0gcmVnaXN0cnk7XG4gICAgbGV0IGl0ZW1TY2hlbWEgPSBzY2hlbWEuaXRlbXM7XG4gICAgaWYgKGlzRml4ZWRJdGVtcyhzY2hlbWEpICYmIGFsbG93QWRkaXRpb25hbEl0ZW1zKHNjaGVtYSkpIHtcbiAgICAgIGl0ZW1TY2hlbWEgPSBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGVmYXVsdEZvcm1TdGF0ZShpdGVtU2NoZW1hLCB1bmRlZmluZWQsIHJvb3RTY2hlbWEpO1xuICB9O1xuXG4gIG9uQWRkQ2xpY2sgPSBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YVJvdyA9IHtcbiAgICAgIGtleTogZ2VuZXJhdGVSb3dJZCgpLFxuICAgICAgaXRlbTogdGhpcy5fZ2V0TmV3Rm9ybURhdGFSb3coKSxcbiAgICB9O1xuICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBbLi4udGhpcy5zdGF0ZS5rZXllZEZvcm1EYXRhLCBuZXdLZXllZEZvcm1EYXRhUm93XTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBrZXllZEZvcm1EYXRhOiBuZXdLZXllZEZvcm1EYXRhLFxuICAgICAgICB1cGRhdGVkS2V5ZWRGb3JtRGF0YTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiBvbkNoYW5nZShrZXllZFRvUGxhaW5Gb3JtRGF0YShuZXdLZXllZEZvcm1EYXRhKSlcbiAgICApO1xuICB9O1xuXG4gIG9uQWRkSW5kZXhDbGljayA9IGluZGV4ID0+IHtcbiAgICByZXR1cm4gZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgbmV3S2V5ZWRGb3JtRGF0YVJvdyA9IHtcbiAgICAgICAga2V5OiBnZW5lcmF0ZVJvd0lkKCksXG4gICAgICAgIGl0ZW06IHRoaXMuX2dldE5ld0Zvcm1EYXRhUm93KCksXG4gICAgICB9O1xuICAgICAgbGV0IG5ld0tleWVkRm9ybURhdGEgPSBbLi4udGhpcy5zdGF0ZS5rZXllZEZvcm1EYXRhXTtcbiAgICAgIG5ld0tleWVkRm9ybURhdGEuc3BsaWNlKGluZGV4LCAwLCBuZXdLZXllZEZvcm1EYXRhUm93KTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpKVxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG9uRHJvcEluZGV4Q2xpY2sgPSBpbmRleCA9PiB7XG4gICAgcmV0dXJuIGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHsga2V5ZWRGb3JtRGF0YSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIC8vIHJlZnMgIzE5NTogcmV2YWxpZGF0ZSB0byBlbnN1cmUgcHJvcGVybHkgcmVpbmRleGluZyBlcnJvcnNcbiAgICAgIGxldCBuZXdFcnJvclNjaGVtYTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmVycm9yU2NoZW1hKSB7XG4gICAgICAgIG5ld0Vycm9yU2NoZW1hID0ge307XG4gICAgICAgIGNvbnN0IGVycm9yU2NoZW1hID0gdGhpcy5wcm9wcy5lcnJvclNjaGVtYTtcbiAgICAgICAgZm9yIChsZXQgaSBpbiBlcnJvclNjaGVtYSkge1xuICAgICAgICAgIGkgPSBwYXJzZUludChpKTtcbiAgICAgICAgICBpZiAoaSA8IGluZGV4KSB7XG4gICAgICAgICAgICBuZXdFcnJvclNjaGVtYVtpXSA9IGVycm9yU2NoZW1hW2ldO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IGluZGV4KSB7XG4gICAgICAgICAgICBuZXdFcnJvclNjaGVtYVtpIC0gMV0gPSBlcnJvclNjaGVtYVtpXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0tleWVkRm9ybURhdGEgPSBrZXllZEZvcm1EYXRhLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGtleWVkRm9ybURhdGE6IG5ld0tleWVkRm9ybURhdGEsXG4gICAgICAgICAgdXBkYXRlZEtleWVkRm9ybURhdGE6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IG9uQ2hhbmdlKGtleWVkVG9QbGFpbkZvcm1EYXRhKG5ld0tleWVkRm9ybURhdGEpLCBuZXdFcnJvclNjaGVtYSlcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBvblJlb3JkZXJDbGljayA9IChpbmRleCwgbmV3SW5kZXgpID0+IHtcbiAgICByZXR1cm4gZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnRhcmdldC5ibHVyKCk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgbGV0IG5ld0Vycm9yU2NoZW1hO1xuICAgICAgaWYgKHRoaXMucHJvcHMuZXJyb3JTY2hlbWEpIHtcbiAgICAgICAgbmV3RXJyb3JTY2hlbWEgPSB7fTtcbiAgICAgICAgY29uc3QgZXJyb3JTY2hlbWEgPSB0aGlzLnByb3BzLmVycm9yU2NoZW1hO1xuICAgICAgICBmb3IgKGxldCBpIGluIGVycm9yU2NoZW1hKSB7XG4gICAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHtcbiAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hW25ld0luZGV4XSA9IGVycm9yU2NoZW1hW2luZGV4XTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGkgPT0gbmV3SW5kZXgpIHtcbiAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hW2luZGV4XSA9IGVycm9yU2NoZW1hW25ld0luZGV4XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3RXJyb3JTY2hlbWFbaV0gPSBlcnJvclNjaGVtYVtpXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBrZXllZEZvcm1EYXRhIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgZnVuY3Rpb24gcmVPcmRlckFycmF5KCkge1xuICAgICAgICAvLyBDb3B5IGl0ZW1cbiAgICAgICAgbGV0IF9uZXdLZXllZEZvcm1EYXRhID0ga2V5ZWRGb3JtRGF0YS5zbGljZSgpO1xuXG4gICAgICAgIC8vIE1vdmVzIGl0ZW0gZnJvbSBpbmRleCB0byBuZXdJbmRleFxuICAgICAgICBfbmV3S2V5ZWRGb3JtRGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBfbmV3S2V5ZWRGb3JtRGF0YS5zcGxpY2UobmV3SW5kZXgsIDAsIGtleWVkRm9ybURhdGFbaW5kZXhdKTtcblxuICAgICAgICByZXR1cm4gX25ld0tleWVkRm9ybURhdGE7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdLZXllZEZvcm1EYXRhID0gcmVPcmRlckFycmF5KCk7XG4gICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICB7XG4gICAgICAgICAga2V5ZWRGb3JtRGF0YTogbmV3S2V5ZWRGb3JtRGF0YSxcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gb25DaGFuZ2Uoa2V5ZWRUb1BsYWluRm9ybURhdGEobmV3S2V5ZWRGb3JtRGF0YSksIG5ld0Vycm9yU2NoZW1hKVxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG9uQ2hhbmdlRm9ySW5kZXggPSBpbmRleCA9PiB7XG4gICAgcmV0dXJuICh2YWx1ZSwgZXJyb3JTY2hlbWEpID0+IHtcbiAgICAgIGNvbnN0IHsgZm9ybURhdGEsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgbmV3Rm9ybURhdGEgPSBmb3JtRGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byB0cmVhdCB1bmRlZmluZWQgaXRlbXMgYXMgbnVsbHMgdG8gaGF2ZSB2YWxpZGF0aW9uLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RkZWdydW50L2pzb25zY2hlbWEvaXNzdWVzLzIwNlxuICAgICAgICBjb25zdCBqc29uVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogdmFsdWU7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gaSA/IGpzb25WYWx1ZSA6IGl0ZW07XG4gICAgICB9KTtcbiAgICAgIG9uQ2hhbmdlKFxuICAgICAgICBuZXdGb3JtRGF0YSxcbiAgICAgICAgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICB0aGlzLnByb3BzLmVycm9yU2NoZW1hICYmIHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcHMuZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBbaW5kZXhdOiBlcnJvclNjaGVtYSxcbiAgICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgb25TZWxlY3RDaGFuZ2UgPSB2YWx1ZSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNjaGVtYSxcbiAgICAgIHVpU2NoZW1hLFxuICAgICAgaWRTY2hlbWEsXG4gICAgICByZWdpc3RyeSA9IGdldERlZmF1bHRSZWdpc3RyeSgpLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgcm9vdFNjaGVtYSB9ID0gcmVnaXN0cnk7XG4gICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoXCJpdGVtc1wiKSkge1xuICAgICAgY29uc3QgeyBmaWVsZHMgfSA9IHJlZ2lzdHJ5O1xuICAgICAgY29uc3QgeyBVbnN1cHBvcnRlZEZpZWxkIH0gPSBmaWVsZHM7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxVbnN1cHBvcnRlZEZpZWxkXG4gICAgICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgaWRTY2hlbWE9e2lkU2NoZW1hfVxuICAgICAgICAgIHJlYXNvbj1cIk1pc3NpbmcgaXRlbXMgZGVmaW5pdGlvblwiXG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNNdWx0aVNlbGVjdChzY2hlbWEsIHJvb3RTY2hlbWEpKSB7XG4gICAgICAvLyBJZiBhcnJheSBoYXMgZW51bSBvciB1bmlxdWVJdGVtcyBzZXQgdG8gdHJ1ZSwgY2FsbCByZW5kZXJNdWx0aVNlbGVjdCgpIHRvIHJlbmRlciB0aGUgZGVmYXVsdCBtdWx0aXNlbGVjdCB3aWRnZXQgb3IgYSBjdXN0b20gd2lkZ2V0LCBpZiBzcGVjaWZpZWQuXG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJNdWx0aVNlbGVjdCgpO1xuICAgIH1cbiAgICBpZiAoaXNDdXN0b21XaWRnZXQodWlTY2hlbWEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJDdXN0b21XaWRnZXQoKTtcbiAgICB9XG4gICAgaWYgKGlzRml4ZWRJdGVtcyhzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJGaXhlZEFycmF5KCk7XG4gICAgfVxuICAgIGlmIChpc0ZpbGVzQXJyYXkoc2NoZW1hLCB1aVNjaGVtYSwgcm9vdFNjaGVtYSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckZpbGVzKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlbmRlck5vcm1hbEFycmF5KCk7XG4gIH1cblxuICByZW5kZXJOb3JtYWxBcnJheSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBzY2hlbWEsXG4gICAgICB1aVNjaGVtYSxcbiAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgaWRTY2hlbWEsXG4gICAgICBuYW1lLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgYXV0b2ZvY3VzLFxuICAgICAgcmVnaXN0cnkgPSBnZXREZWZhdWx0UmVnaXN0cnkoKSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uRm9jdXMsXG4gICAgICBpZFByZWZpeCxcbiAgICAgIGlkU2VwYXJhdG9yLFxuICAgICAgcmF3RXJyb3JzLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHRpdGxlID0gc2NoZW1hLnRpdGxlID09PSB1bmRlZmluZWQgPyBuYW1lIDogc2NoZW1hLnRpdGxlO1xuICAgIGNvbnN0IHsgQXJyYXlGaWVsZFRlbXBsYXRlLCByb290U2NoZW1hLCBmaWVsZHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IFRpdGxlRmllbGQsIERlc2NyaXB0aW9uRmllbGQgfSA9IGZpZWxkcztcbiAgICBjb25zdCBpdGVtc1NjaGVtYSA9IHJldHJpZXZlU2NoZW1hKHNjaGVtYS5pdGVtcywgcm9vdFNjaGVtYSk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBrZXllZFRvUGxhaW5Gb3JtRGF0YSh0aGlzLnN0YXRlLmtleWVkRm9ybURhdGEpO1xuICAgIGNvbnN0IGFycmF5UHJvcHMgPSB7XG4gICAgICBjYW5BZGQ6IHRoaXMuY2FuQWRkSXRlbShmb3JtRGF0YSksXG4gICAgICBpdGVtczogdGhpcy5zdGF0ZS5rZXllZEZvcm1EYXRhLm1hcCgoa2V5ZWRJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgaXRlbSB9ID0ga2V5ZWRJdGVtO1xuICAgICAgICBjb25zdCBpdGVtU2NoZW1hID0gcmV0cmlldmVTY2hlbWEoc2NoZW1hLml0ZW1zLCByb290U2NoZW1hLCBpdGVtKTtcbiAgICAgICAgY29uc3QgaXRlbUVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWEgPyBlcnJvclNjaGVtYVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGl0ZW1JZFByZWZpeCA9IGlkU2NoZW1hLiRpZCArIFwiX1wiICsgaW5kZXg7XG4gICAgICAgIGNvbnN0IGl0ZW1JZFNjaGVtYSA9IHRvSWRTY2hlbWEoXG4gICAgICAgICAgaXRlbVNjaGVtYSxcbiAgICAgICAgICBpdGVtSWRQcmVmaXgsXG4gICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIGlkUHJlZml4LFxuICAgICAgICAgIGlkU2VwYXJhdG9yXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlckFycmF5RmllbGRJdGVtKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgY2FuTW92ZVVwOiBpbmRleCA+IDAsXG4gICAgICAgICAgY2FuTW92ZURvd246IGluZGV4IDwgZm9ybURhdGEubGVuZ3RoIC0gMSxcbiAgICAgICAgICBpdGVtU2NoZW1hOiBpdGVtU2NoZW1hLFxuICAgICAgICAgIGl0ZW1JZFNjaGVtYSxcbiAgICAgICAgICBpdGVtRXJyb3JTY2hlbWEsXG4gICAgICAgICAgaXRlbURhdGE6IGl0ZW0sXG4gICAgICAgICAgaXRlbVVpU2NoZW1hOiB1aVNjaGVtYS5pdGVtcyxcbiAgICAgICAgICBhdXRvZm9jdXM6IGF1dG9mb2N1cyAmJiBpbmRleCA9PT0gMCxcbiAgICAgICAgICBvbkJsdXIsXG4gICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGNsYXNzTmFtZTogYGZpZWxkIGZpZWxkLWFycmF5IGZpZWxkLWFycmF5LW9mLSR7aXRlbXNTY2hlbWEudHlwZX1gLFxuICAgICAgRGVzY3JpcHRpb25GaWVsZCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWRTY2hlbWEsXG4gICAgICB1aVNjaGVtYSxcbiAgICAgIG9uQWRkQ2xpY2s6IHRoaXMub25BZGRDbGljayxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBzY2hlbWEsXG4gICAgICB0aXRsZSxcbiAgICAgIFRpdGxlRmllbGQsXG4gICAgICBmb3JtQ29udGV4dCxcbiAgICAgIGZvcm1EYXRhLFxuICAgICAgcmF3RXJyb3JzLFxuICAgICAgcmVnaXN0cnksXG4gICAgfTtcblxuICAgIC8vIENoZWNrIGlmIGEgY3VzdG9tIHJlbmRlciBmdW5jdGlvbiB3YXMgcGFzc2VkIGluXG4gICAgY29uc3QgQ29tcG9uZW50ID1cbiAgICAgIHVpU2NoZW1hW1widWk6QXJyYXlGaWVsZFRlbXBsYXRlXCJdIHx8XG4gICAgICBBcnJheUZpZWxkVGVtcGxhdGUgfHxcbiAgICAgIERlZmF1bHROb3JtYWxBcnJheUZpZWxkVGVtcGxhdGU7XG4gICAgcmV0dXJuIDxDb21wb25lbnQgey4uLmFycmF5UHJvcHN9IC8+O1xuICB9XG5cbiAgcmVuZGVyQ3VzdG9tV2lkZ2V0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNjaGVtYSxcbiAgICAgIGlkU2NoZW1hLFxuICAgICAgdWlTY2hlbWEsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIGF1dG9mb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uRm9jdXMsXG4gICAgICBmb3JtRGF0YTogaXRlbXMsXG4gICAgICByZWdpc3RyeSA9IGdldERlZmF1bHRSZWdpc3RyeSgpLFxuICAgICAgcmF3RXJyb3JzLFxuICAgICAgbmFtZSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHdpZGdldHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB0aXRsZSA9IHNjaGVtYS50aXRsZSB8fCBuYW1lO1xuXG4gICAgY29uc3QgeyB3aWRnZXQsIC4uLm9wdGlvbnMgfSA9IHtcbiAgICAgIC4uLmdldFVpT3B0aW9ucyh1aVNjaGVtYSksXG4gICAgfTtcbiAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuICAgIHJldHVybiAoXG4gICAgICA8V2lkZ2V0XG4gICAgICAgIGlkPXtpZFNjaGVtYSAmJiBpZFNjaGVtYS4kaWR9XG4gICAgICAgIG11bHRpcGxlXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uU2VsZWN0Q2hhbmdlfVxuICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgIHJlZ2lzdHJ5PXtyZWdpc3RyeX1cbiAgICAgICAgdmFsdWU9e2l0ZW1zfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgICAgcmVxdWlyZWQ9e3JlcXVpcmVkfVxuICAgICAgICBsYWJlbD17dGl0bGV9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgZm9ybUNvbnRleHQ9e2Zvcm1Db250ZXh0fVxuICAgICAgICBhdXRvZm9jdXM9e2F1dG9mb2N1c31cbiAgICAgICAgcmF3RXJyb3JzPXtyYXdFcnJvcnN9XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICByZW5kZXJNdWx0aVNlbGVjdCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBzY2hlbWEsXG4gICAgICBpZFNjaGVtYSxcbiAgICAgIHVpU2NoZW1hLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIGF1dG9mb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uRm9jdXMsXG4gICAgICByZWdpc3RyeSA9IGdldERlZmF1bHRSZWdpc3RyeSgpLFxuICAgICAgcmF3RXJyb3JzLFxuICAgICAgbmFtZSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvcHMuZm9ybURhdGE7XG4gICAgY29uc3QgeyB3aWRnZXRzLCByb290U2NoZW1hLCBmb3JtQ29udGV4dCB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgaXRlbXNTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYShzY2hlbWEuaXRlbXMsIHJvb3RTY2hlbWEsIGZvcm1EYXRhKTtcbiAgICBjb25zdCB0aXRsZSA9IHNjaGVtYS50aXRsZSB8fCBuYW1lO1xuICAgIGNvbnN0IGVudW1PcHRpb25zID0gb3B0aW9uc0xpc3QoaXRlbXNTY2hlbWEpO1xuICAgIGNvbnN0IHsgd2lkZ2V0ID0gXCJzZWxlY3RcIiwgLi4ub3B0aW9ucyB9ID0ge1xuICAgICAgLi4uZ2V0VWlPcHRpb25zKHVpU2NoZW1hKSxcbiAgICAgIGVudW1PcHRpb25zLFxuICAgIH07XG4gICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICByZXR1cm4gKFxuICAgICAgPFdpZGdldFxuICAgICAgICBpZD17aWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkfVxuICAgICAgICBtdWx0aXBsZVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vblNlbGVjdENoYW5nZX1cbiAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICByZWdpc3RyeT17cmVnaXN0cnl9XG4gICAgICAgIHZhbHVlPXtpdGVtc31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAgIHJlcXVpcmVkPXtyZXF1aXJlZH1cbiAgICAgICAgbGFiZWw9e3RpdGxlfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGZvcm1Db250ZXh0PXtmb3JtQ29udGV4dH1cbiAgICAgICAgYXV0b2ZvY3VzPXthdXRvZm9jdXN9XG4gICAgICAgIHJhd0Vycm9ycz17cmF3RXJyb3JzfVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyRmlsZXMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc2NoZW1hLFxuICAgICAgdWlTY2hlbWEsXG4gICAgICBpZFNjaGVtYSxcbiAgICAgIG5hbWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgYXV0b2ZvY3VzLFxuICAgICAgb25CbHVyLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIHJlZ2lzdHJ5ID0gZ2V0RGVmYXVsdFJlZ2lzdHJ5KCksXG4gICAgICByYXdFcnJvcnMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdGl0bGUgPSBzY2hlbWEudGl0bGUgfHwgbmFtZTtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvcHMuZm9ybURhdGE7XG4gICAgY29uc3QgeyB3aWRnZXRzLCBmb3JtQ29udGV4dCB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgeyB3aWRnZXQgPSBcImZpbGVzXCIsIC4uLm9wdGlvbnMgfSA9IGdldFVpT3B0aW9ucyh1aVNjaGVtYSk7XG4gICAgY29uc3QgV2lkZ2V0ID0gZ2V0V2lkZ2V0KHNjaGVtYSwgd2lkZ2V0LCB3aWRnZXRzKTtcbiAgICByZXR1cm4gKFxuICAgICAgPFdpZGdldFxuICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICBpZD17aWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkfVxuICAgICAgICBtdWx0aXBsZVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vblNlbGVjdENoYW5nZX1cbiAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIHZhbHVlPXtpdGVtc31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAgIGZvcm1Db250ZXh0PXtmb3JtQ29udGV4dH1cbiAgICAgICAgYXV0b2ZvY3VzPXthdXRvZm9jdXN9XG4gICAgICAgIHJhd0Vycm9ycz17cmF3RXJyb3JzfVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyRml4ZWRBcnJheSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBzY2hlbWEsXG4gICAgICB1aVNjaGVtYSxcbiAgICAgIGZvcm1EYXRhLFxuICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICBpZFByZWZpeCxcbiAgICAgIGlkU2VwYXJhdG9yLFxuICAgICAgaWRTY2hlbWEsXG4gICAgICBuYW1lLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgYXV0b2ZvY3VzLFxuICAgICAgcmVnaXN0cnkgPSBnZXREZWZhdWx0UmVnaXN0cnkoKSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uRm9jdXMsXG4gICAgICByYXdFcnJvcnMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdGl0bGUgPSBzY2hlbWEudGl0bGUgfHwgbmFtZTtcbiAgICBsZXQgaXRlbXMgPSB0aGlzLnByb3BzLmZvcm1EYXRhO1xuICAgIGNvbnN0IHsgQXJyYXlGaWVsZFRlbXBsYXRlLCByb290U2NoZW1hLCBmaWVsZHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IFRpdGxlRmllbGQgfSA9IGZpZWxkcztcbiAgICBjb25zdCBpdGVtU2NoZW1hcyA9IHNjaGVtYS5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PlxuICAgICAgcmV0cmlldmVTY2hlbWEoaXRlbSwgcm9vdFNjaGVtYSwgZm9ybURhdGFbaW5kZXhdKVxuICAgICk7XG4gICAgY29uc3QgYWRkaXRpb25hbFNjaGVtYSA9IGFsbG93QWRkaXRpb25hbEl0ZW1zKHNjaGVtYSlcbiAgICAgID8gcmV0cmlldmVTY2hlbWEoc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywgcm9vdFNjaGVtYSwgZm9ybURhdGEpXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA8IGl0ZW1TY2hlbWFzLmxlbmd0aCkge1xuICAgICAgLy8gdG8gbWFrZSBzdXJlIGF0IGxlYXN0IGFsbCBmaXhlZCBpdGVtcyBhcmUgZ2VuZXJhdGVkXG4gICAgICBpdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQobmV3IEFycmF5KGl0ZW1TY2hlbWFzLmxlbmd0aCAtIGl0ZW1zLmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8vIFRoZXNlIGFyZSB0aGUgcHJvcHMgcGFzc2VkIGludG8gdGhlIHJlbmRlciBmdW5jdGlvblxuICAgIGNvbnN0IGFycmF5UHJvcHMgPSB7XG4gICAgICBjYW5BZGQ6IHRoaXMuY2FuQWRkSXRlbShpdGVtcykgJiYgYWRkaXRpb25hbFNjaGVtYSxcbiAgICAgIGNsYXNzTmFtZTogXCJmaWVsZCBmaWVsZC1hcnJheSBmaWVsZC1hcnJheS1maXhlZC1pdGVtc1wiLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBpZFNjaGVtYSxcbiAgICAgIGZvcm1EYXRhLFxuICAgICAgaXRlbXM6IHRoaXMuc3RhdGUua2V5ZWRGb3JtRGF0YS5tYXAoKGtleWVkSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIGl0ZW0gfSA9IGtleWVkSXRlbTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGluZGV4ID49IGl0ZW1TY2hlbWFzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgaXRlbVNjaGVtYSA9IGFkZGl0aW9uYWxcbiAgICAgICAgICA/IHJldHJpZXZlU2NoZW1hKHNjaGVtYS5hZGRpdGlvbmFsSXRlbXMsIHJvb3RTY2hlbWEsIGl0ZW0pXG4gICAgICAgICAgOiBpdGVtU2NoZW1hc1tpbmRleF07XG4gICAgICAgIGNvbnN0IGl0ZW1JZFByZWZpeCA9IGlkU2NoZW1hLiRpZCArIFwiX1wiICsgaW5kZXg7XG4gICAgICAgIGNvbnN0IGl0ZW1JZFNjaGVtYSA9IHRvSWRTY2hlbWEoXG4gICAgICAgICAgaXRlbVNjaGVtYSxcbiAgICAgICAgICBpdGVtSWRQcmVmaXgsXG4gICAgICAgICAgcm9vdFNjaGVtYSxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIGlkUHJlZml4LFxuICAgICAgICAgIGlkU2VwYXJhdG9yXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGl0ZW1VaVNjaGVtYSA9IGFkZGl0aW9uYWxcbiAgICAgICAgICA/IHVpU2NoZW1hLmFkZGl0aW9uYWxJdGVtcyB8fCB7fVxuICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh1aVNjaGVtYS5pdGVtcylcbiAgICAgICAgICA/IHVpU2NoZW1hLml0ZW1zW2luZGV4XVxuICAgICAgICAgIDogdWlTY2hlbWEuaXRlbXMgfHwge307XG4gICAgICAgIGNvbnN0IGl0ZW1FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hID8gZXJyb3JTY2hlbWFbaW5kZXhdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlckFycmF5RmllbGRJdGVtKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgY2FuUmVtb3ZlOiBhZGRpdGlvbmFsLFxuICAgICAgICAgIGNhbk1vdmVVcDogaW5kZXggPj0gaXRlbVNjaGVtYXMubGVuZ3RoICsgMSxcbiAgICAgICAgICBjYW5Nb3ZlRG93bjogYWRkaXRpb25hbCAmJiBpbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEsXG4gICAgICAgICAgaXRlbVNjaGVtYSxcbiAgICAgICAgICBpdGVtRGF0YTogaXRlbSxcbiAgICAgICAgICBpdGVtVWlTY2hlbWEsXG4gICAgICAgICAgaXRlbUlkU2NoZW1hLFxuICAgICAgICAgIGl0ZW1FcnJvclNjaGVtYSxcbiAgICAgICAgICBhdXRvZm9jdXM6IGF1dG9mb2N1cyAmJiBpbmRleCA9PT0gMCxcbiAgICAgICAgICBvbkJsdXIsXG4gICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIG9uQWRkQ2xpY2s6IHRoaXMub25BZGRDbGljayxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBzY2hlbWEsXG4gICAgICB1aVNjaGVtYSxcbiAgICAgIHRpdGxlLFxuICAgICAgVGl0bGVGaWVsZCxcbiAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgcmF3RXJyb3JzLFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBpZiBhIGN1c3RvbSB0ZW1wbGF0ZSB0ZW1wbGF0ZSB3YXMgcGFzc2VkIGluXG4gICAgY29uc3QgVGVtcGxhdGUgPVxuICAgICAgdWlTY2hlbWFbXCJ1aTpBcnJheUZpZWxkVGVtcGxhdGVcIl0gfHxcbiAgICAgIEFycmF5RmllbGRUZW1wbGF0ZSB8fFxuICAgICAgRGVmYXVsdEZpeGVkQXJyYXlGaWVsZFRlbXBsYXRlO1xuICAgIHJldHVybiA8VGVtcGxhdGUgey4uLmFycmF5UHJvcHN9IC8+O1xuICB9XG5cbiAgcmVuZGVyQXJyYXlGaWVsZEl0ZW0ocHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBpbmRleCxcbiAgICAgIGNhblJlbW92ZSA9IHRydWUsXG4gICAgICBjYW5Nb3ZlVXAgPSB0cnVlLFxuICAgICAgY2FuTW92ZURvd24gPSB0cnVlLFxuICAgICAgaXRlbVNjaGVtYSxcbiAgICAgIGl0ZW1EYXRhLFxuICAgICAgaXRlbVVpU2NoZW1hLFxuICAgICAgaXRlbUlkU2NoZW1hLFxuICAgICAgaXRlbUVycm9yU2NoZW1hLFxuICAgICAgYXV0b2ZvY3VzLFxuICAgICAgb25CbHVyLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIHJhd0Vycm9ycyxcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgZGlzYWJsZWQsXG4gICAgICByZWFkb25seSxcbiAgICAgIHVpU2NoZW1hLFxuICAgICAgcmVnaXN0cnkgPSBnZXREZWZhdWx0UmVnaXN0cnkoKSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7XG4gICAgICBmaWVsZHM6IHsgU2NoZW1hRmllbGQgfSxcbiAgICB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgeyBvcmRlcmFibGUsIHJlbW92YWJsZSB9ID0ge1xuICAgICAgb3JkZXJhYmxlOiB0cnVlLFxuICAgICAgcmVtb3ZhYmxlOiB0cnVlLFxuICAgICAgLi4udWlTY2hlbWFbXCJ1aTpvcHRpb25zXCJdLFxuICAgIH07XG4gICAgY29uc3QgaGFzID0ge1xuICAgICAgbW92ZVVwOiBvcmRlcmFibGUgJiYgY2FuTW92ZVVwLFxuICAgICAgbW92ZURvd246IG9yZGVyYWJsZSAmJiBjYW5Nb3ZlRG93bixcbiAgICAgIHJlbW92ZTogcmVtb3ZhYmxlICYmIGNhblJlbW92ZSxcbiAgICB9O1xuICAgIGhhcy50b29sYmFyID0gT2JqZWN0LmtleXMoaGFzKS5zb21lKGtleSA9PiBoYXNba2V5XSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hpbGRyZW46IChcbiAgICAgICAgPFNjaGVtYUZpZWxkXG4gICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgIHNjaGVtYT17aXRlbVNjaGVtYX1cbiAgICAgICAgICB1aVNjaGVtYT17aXRlbVVpU2NoZW1hfVxuICAgICAgICAgIGZvcm1EYXRhPXtpdGVtRGF0YX1cbiAgICAgICAgICBlcnJvclNjaGVtYT17aXRlbUVycm9yU2NoZW1hfVxuICAgICAgICAgIGlkU2NoZW1hPXtpdGVtSWRTY2hlbWF9XG4gICAgICAgICAgcmVxdWlyZWQ9e3RoaXMuaXNJdGVtUmVxdWlyZWQoaXRlbVNjaGVtYSl9XG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2VGb3JJbmRleChpbmRleCl9XG4gICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICByZWdpc3RyeT17dGhpcy5wcm9wcy5yZWdpc3RyeX1cbiAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICByZWFkb25seT17dGhpcy5wcm9wcy5yZWFkb25seX1cbiAgICAgICAgICBhdXRvZm9jdXM9e2F1dG9mb2N1c31cbiAgICAgICAgICByYXdFcnJvcnM9e3Jhd0Vycm9yc31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBjbGFzc05hbWU6IFwiYXJyYXktaXRlbVwiLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBoYXNUb29sYmFyOiBoYXMudG9vbGJhcixcbiAgICAgIGhhc01vdmVVcDogaGFzLm1vdmVVcCxcbiAgICAgIGhhc01vdmVEb3duOiBoYXMubW92ZURvd24sXG4gICAgICBoYXNSZW1vdmU6IGhhcy5yZW1vdmUsXG4gICAgICBpbmRleCxcbiAgICAgIGtleSxcbiAgICAgIG9uQWRkSW5kZXhDbGljazogdGhpcy5vbkFkZEluZGV4Q2xpY2ssXG4gICAgICBvbkRyb3BJbmRleENsaWNrOiB0aGlzLm9uRHJvcEluZGV4Q2xpY2ssXG4gICAgICBvblJlb3JkZXJDbGljazogdGhpcy5vblJlb3JkZXJDbGljayxcbiAgICAgIHJlYWRvbmx5LFxuICAgIH07XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBBcnJheUZpZWxkLnByb3BUeXBlcyA9IHR5cGVzLmZpZWxkUHJvcHM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFycmF5RmllbGQ7XG4iXX0=
@@ -59,6 +59,7 @@ function BooleanField(props) {
59
59
  enumOptions: enumOptions
60
60
  }),
61
61
  schema: schema,
62
+ uiSchema: uiSchema,
62
63
  id: idSchema && idSchema.$id,
63
64
  onChange: onChange,
64
65
  onFocus: onFocus,
@@ -86,4 +87,5 @@ BooleanField.defaultProps = {
86
87
  readonly: false,
87
88
  autofocus: false
88
89
  };
89
- export default BooleanField;
90
+ export default BooleanField;
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9Cb29sZWFuRmllbGQuanMiXSwibmFtZXMiOlsiUmVhY3QiLCJ0eXBlcyIsImdldFdpZGdldCIsImdldFVpT3B0aW9ucyIsIm9wdGlvbnNMaXN0IiwiZ2V0RGVmYXVsdFJlZ2lzdHJ5IiwiQm9vbGVhbkZpZWxkIiwicHJvcHMiLCJzY2hlbWEiLCJuYW1lIiwidWlTY2hlbWEiLCJpZFNjaGVtYSIsImZvcm1EYXRhIiwicmVnaXN0cnkiLCJyZXF1aXJlZCIsImRpc2FibGVkIiwicmVhZG9ubHkiLCJhdXRvZm9jdXMiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJvbkJsdXIiLCJyYXdFcnJvcnMiLCJ0aXRsZSIsIndpZGdldHMiLCJmb3JtQ29udGV4dCIsImZpZWxkcyIsIndpZGdldCIsIm9wdGlvbnMiLCJXaWRnZXQiLCJlbnVtT3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsIm9uZU9mIiwibWFwIiwib3B0aW9uIiwiZW51bU5hbWVzIiwiJGlkIiwidW5kZWZpbmVkIiwiRGVzY3JpcHRpb25GaWVsZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsImZpZWxkUHJvcHMiLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxNQUFrQixPQUFsQjtBQUNBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixhQUF2QjtBQUVBLFNBQ0VDLFNBREYsRUFFRUMsWUFGRixFQUdFQyxXQUhGLEVBSUVDLGtCQUpGLFFBS08sYUFMUDs7QUFPQSxTQUFTQyxZQUFULENBQXNCQyxLQUF0QixFQUE2QjtBQUFBLE1BRXpCQyxNQUZ5QixHQWdCdkJELEtBaEJ1QixDQUV6QkMsTUFGeUI7QUFBQSxNQUd6QkMsSUFIeUIsR0FnQnZCRixLQWhCdUIsQ0FHekJFLElBSHlCO0FBQUEsTUFJekJDLFFBSnlCLEdBZ0J2QkgsS0FoQnVCLENBSXpCRyxRQUp5QjtBQUFBLE1BS3pC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ZSxTQUFWLEdBQXNCNUIsSUFBdEIsR0FBNkJhLEtBUnRDO0FBU0UsSUFBQSxLQUFLLEVBQUVWLFFBVFQ7QUFVRSxJQUFBLFFBQVEsRUFBRUUsUUFWWjtBQVdFLElBQUEsUUFBUSxFQUFFQyxRQVhaO0FBWUUsSUFBQSxRQUFRLEVBQUVDLFFBWlo7QUFhRSxJQUFBLFFBQVEsRUFBRUgsUUFiWjtBQWNFLElBQUEsV0FBVyxFQUFFVyxXQWRmO0FBZUUsSUFBQSxTQUFTLEVBQUVQLFNBZmI7QUFnQkUsSUFBQSxTQUFTLEVBQUVJLFNBaEJiO0FBaUJFLElBQUEsZ0JBQWdCLEVBQUVJLE1BQU0sQ0FBQ2E7QUFqQjNCLElBREY7QUFxQkQ7O0FBRUQsSUFBSUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekNuQyxFQUFBQSxZQUFZLENBQUNvQyxTQUFiLEdBQXlCekMsS0FBSyxDQUFDMEMsVUFBL0I7QUFDRDs7QUFFRHJDLFlBQVksQ0FBQ3NDLFlBQWIsR0FBNEI7QUFDMUJsQyxFQUFBQSxRQUFRLEVBQUUsRUFEZ0I7QUFFMUJLLEVBQUFBLFFBQVEsRUFBRSxLQUZnQjtBQUcxQkMsRUFBQUEsUUFBUSxFQUFFLEtBSGdCO0FBSTFCQyxFQUFBQSxTQUFTLEVBQUU7QUFKZSxDQUE1QjtBQU9BLGVBQWVYLFlBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0V2lkZ2V0LFxuICBnZXRVaU9wdGlvbnMsXG4gIG9wdGlvbnNMaXN0LFxuICBnZXREZWZhdWx0UmVnaXN0cnksXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBCb29sZWFuRmllbGQocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIHNjaGVtYSxcbiAgICBuYW1lLFxuICAgIHVpU2NoZW1hLFxuICAgIGlkU2NoZW1hLFxuICAgIGZvcm1EYXRhLFxuICAgIHJlZ2lzdHJ5ID0gZ2V0RGVmYXVsdFJlZ2lzdHJ5KCksXG4gICAgcmVxdWlyZWQsXG4gICAgZGlzYWJsZWQsXG4gICAgcmVhZG9ubHksXG4gICAgYXV0b2ZvY3VzLFxuICAgIG9uQ2hhbmdlLFxuICAgIG9uRm9jdXMsXG4gICAgb25CbHVyLFxuICAgIHJhd0Vycm9ycyxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7IHRpdGxlIH0gPSBzY2hlbWE7XG4gIGNvbnN0IHsgd2lkZ2V0cywgZm9ybUNvbnRleHQsIGZpZWxkcyB9ID0gcmVnaXN0cnk7XG4gIGNvbnN0IHsgd2lkZ2V0ID0gXCJjaGVja2JveFwiLCAuLi5vcHRpb25zIH0gPSBnZXRVaU9wdGlvbnModWlTY2hlbWEpO1xuICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoc2NoZW1hLCB3aWRnZXQsIHdpZGdldHMpO1xuXG4gIGxldCBlbnVtT3B0aW9ucztcblxuICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEub25lT2YpKSB7XG4gICAgZW51bU9wdGlvbnMgPSBvcHRpb25zTGlzdCh7XG4gICAgICBvbmVPZjogc2NoZW1hLm9uZU9mLm1hcChvcHRpb24gPT4gKHtcbiAgICAgICAgLi4ub3B0aW9uLFxuICAgICAgICB0aXRsZTogb3B0aW9uLnRpdGxlIHx8IChvcHRpb24uY29uc3QgPT09IHRydWUgPyBcIlllc1wiIDogXCJOb1wiKSxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBlbnVtT3B0aW9ucyA9IG9wdGlvbnNMaXN0KHtcbiAgICAgIGVudW06IHNjaGVtYS5lbnVtIHx8IFt0cnVlLCBmYWxzZV0sXG4gICAgICBlbnVtTmFtZXM6XG4gICAgICAgIHNjaGVtYS5lbnVtTmFtZXMgfHxcbiAgICAgICAgKHNjaGVtYS5lbnVtICYmIHNjaGVtYS5lbnVtWzBdID09PSBmYWxzZVxuICAgICAgICAgID8gW1wiTm9cIiwgXCJZZXNcIl1cbiAgICAgICAgICA6IFtcIlllc1wiLCBcIk5vXCJdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFdpZGdldFxuICAgICAgb3B0aW9ucz17eyAuLi5vcHRpb25zLCBlbnVtT3B0aW9ucyB9fVxuICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICBpZD17aWRTY2hlbWEgJiYgaWRTY2hlbWEuJGlkfVxuICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgbGFiZWw9e3RpdGxlID09PSB1bmRlZmluZWQgPyBuYW1lIDogdGl0bGV9XG4gICAgICB2YWx1ZT17Zm9ybURhdGF9XG4gICAgICByZXF1aXJlZD17cmVxdWlyZWR9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICByZWdpc3RyeT17cmVnaXN0cnl9XG4gICAgICBmb3JtQ29udGV4dD17Zm9ybUNvbnRleHR9XG4gICAgICBhdXRvZm9jdXM9e2F1dG9mb2N1c31cbiAgICAgIHJhd0Vycm9ycz17cmF3RXJyb3JzfVxuICAgICAgRGVzY3JpcHRpb25GaWVsZD17ZmllbGRzLkRlc2NyaXB0aW9uRmllbGR9XG4gICAgLz5cbiAgKTtcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBCb29sZWFuRmllbGQucHJvcFR5cGVzID0gdHlwZXMuZmllbGRQcm9wcztcbn1cblxuQm9vbGVhbkZpZWxkLmRlZmF1bHRQcm9wcyA9IHtcbiAgdWlTY2hlbWE6IHt9LFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIHJlYWRvbmx5OiBmYWxzZSxcbiAgYXV0b2ZvY3VzOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJvb2xlYW5GaWVsZDtcbiJdfQ==
@@ -29,4 +29,5 @@ if (process.env.NODE_ENV !== "production") {
29
29
  };
30
30
  }
31
31
 
32
- export default DescriptionField;
32
+ export default DescriptionField;
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9EZXNjcmlwdGlvbkZpZWxkLmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiUHJvcFR5cGVzIiwiRGVzY3JpcHRpb25GaWVsZCIsInByb3BzIiwiaWQiLCJkZXNjcmlwdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsInN0cmluZyIsIm9uZU9mVHlwZSIsImVsZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLFlBQXRCOztBQUVBLFNBQVNDLGdCQUFULENBQTBCQyxLQUExQixFQUFpQztBQUFBLE1BQ3ZCQyxFQUR1QixHQUNIRCxLQURHLENBQ3ZCQyxFQUR1QjtBQUFBLE1BQ25CQyxXQURtQixHQUNIRixLQURHLENBQ25CRSxXQURtQjs7QUFFL0IsTUFBSSxDQUFDQSxXQUFMLEVBQWtCO0FBQ2hCLFdBQU8sSUFBUDtBQUNEOztBQUNELE1BQUksT0FBT0EsV0FBUCxLQUF1QixRQUEzQixFQUFxQztBQUNuQyxXQUNFO0FBQUcsTUFBQSxFQUFFLEVBQUVELEVBQVA7QUFBVyxNQUFBLFNBQVMsRUFBQztBQUFyQixPQUNHQyxXQURILENBREY7QUFLRCxHQU5ELE1BTU87QUFDTCxXQUNFO0FBQUssTUFBQSxFQUFFLEVBQUVELEVBQVQ7QUFBYSxNQUFBLFNBQVMsRUFBQztBQUF2QixPQUNHQyxXQURILENBREY7QUFLRDtBQUNGOztBQUVELElBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDTixFQUFBQSxnQkFBZ0IsQ0FBQ08sU0FBakIsR0FBNkI7QUFDM0JMLElBQUFBLEVBQUUsRUFBRUgsU0FBUyxDQUFDUyxNQURhO0FBRTNCTCxJQUFBQSxXQUFXLEVBQUVKLFNBQVMsQ0FBQ1UsU0FBVixDQUFvQixDQUFDVixTQUFTLENBQUNTLE1BQVgsRUFBbUJULFNBQVMsQ0FBQ1csT0FBN0IsQ0FBcEI7QUFGYyxHQUE3QjtBQUlEOztBQUVELGVBQWVWLGdCQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5mdW5jdGlvbiBEZXNjcmlwdGlvbkZpZWxkKHByb3BzKSB7XG4gIGNvbnN0IHsgaWQsIGRlc2NyaXB0aW9uIH0gPSBwcm9wcztcbiAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh0eXBlb2YgZGVzY3JpcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHAgaWQ9e2lkfSBjbGFzc05hbWU9XCJmaWVsZC1kZXNjcmlwdGlvblwiPlxuICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICA8L3A+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBpZD17aWR9IGNsYXNzTmFtZT1cImZpZWxkLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBEZXNjcmlwdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVzY3JpcHRpb25GaWVsZDtcbiJdfQ==
@@ -147,6 +147,7 @@ function (_Component) {
147
147
  errorSchema = _this$props3.errorSchema,
148
148
  formData = _this$props3.formData,
149
149
  idPrefix = _this$props3.idPrefix,
150
+ idSeparator = _this$props3.idSeparator,
150
151
  idSchema = _this$props3.idSchema,
151
152
  onBlur = _this$props3.onBlur,
152
153
  onChange = _this$props3.onChange,
@@ -207,6 +208,7 @@ function (_Component) {
207
208
  errorSchema: errorSchema,
208
209
  idSchema: idSchema,
209
210
  idPrefix: idPrefix,
211
+ idSeparator: idSeparator,
210
212
  formData: formData,
211
213
  onChange: onChange,
212
214
  onBlur: onBlur,
@@ -239,4 +241,5 @@ if (process.env.NODE_ENV !== "production") {
239
241
  };
240
242
  }
241
243
 
242
- export default AnyOfField;
244
+ export default AnyOfField;
245
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9NdWx0aVNjaGVtYUZpZWxkLmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwidHlwZXMiLCJnZXRVaU9wdGlvbnMiLCJnZXRXaWRnZXQiLCJndWVzc1R5cGUiLCJyZXRyaWV2ZVNjaGVtYSIsImdldERlZmF1bHRGb3JtU3RhdGUiLCJnZXRNYXRjaGluZ09wdGlvbiIsImRlZXBFcXVhbHMiLCJBbnlPZkZpZWxkIiwicHJvcHMiLCJvcHRpb24iLCJzZWxlY3RlZE9wdGlvbiIsInBhcnNlSW50IiwiZm9ybURhdGEiLCJvbkNoYW5nZSIsIm9wdGlvbnMiLCJyZWdpc3RyeSIsInJvb3RTY2hlbWEiLCJuZXdPcHRpb24iLCJuZXdGb3JtRGF0YSIsInVuZGVmaW5lZCIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiT2JqZWN0IiwiYXNzaWduIiwib3B0aW9uc1RvRGlzY2FyZCIsInNsaWNlIiwic3BsaWNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJzZXRTdGF0ZSIsInN0YXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwiaWRTY2hlbWEiLCIkaWQiLCJtYXRjaGluZ09wdGlvbiIsImJhc2VUeXBlIiwiZGlzYWJsZWQiLCJlcnJvclNjaGVtYSIsImlkUHJlZml4IiwiaWRTZXBhcmF0b3IiLCJvbkJsdXIiLCJvbkZvY3VzIiwidWlTY2hlbWEiLCJzY2hlbWEiLCJfU2NoZW1hRmllbGQiLCJmaWVsZHMiLCJTY2hlbWFGaWVsZCIsIndpZGdldHMiLCJ3aWRnZXQiLCJ1aU9wdGlvbnMiLCJXaWRnZXQiLCJvcHRpb25TY2hlbWEiLCJlbnVtT3B0aW9ucyIsIm1hcCIsImluZGV4IiwibGFiZWwiLCJ0aXRsZSIsInZhbHVlIiwib25lT2YiLCJvbk9wdGlvbkNoYW5nZSIsImRlZmF1bHRQcm9wcyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsImFycmF5T2Yi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Vlg7QUFXRSxRQUFBLFFBQVEsRUFBRTNCLFFBWFo7QUFZRSxRQUFBLFFBQVEsRUFBRXNCO0FBWlosUUFqQkosQ0FERjtBQW1DRDs7OztFQWpLc0J4QyxTOztBQW9LekJVLFVBQVUsQ0FBQ3NELFlBQVgsR0FBMEI7QUFDeEJ4QixFQUFBQSxRQUFRLEVBQUUsS0FEYztBQUV4QkMsRUFBQUEsV0FBVyxFQUFFLEVBRlc7QUFHeEJMLEVBQUFBLFFBQVEsRUFBRSxFQUhjO0FBSXhCVSxFQUFBQSxRQUFRLEVBQUU7QUFKYyxDQUExQjs7QUFPQSxJQUFJbUIsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekN6RCxFQUFBQSxVQUFVLENBQUMwRCxTQUFYLEdBQXVCO0FBQ3JCbkQsSUFBQUEsT0FBTyxFQUFFaEIsU0FBUyxDQUFDb0UsT0FBVixDQUFrQnBFLFNBQVMsQ0FBQ3FFLE1BQTVCLEVBQW9DQyxVQUR4QjtBQUVyQmhDLElBQUFBLFFBQVEsRUFBRXRDLFNBQVMsQ0FBQ3VFLE1BRkM7QUFHckIxQixJQUFBQSxRQUFRLEVBQUU3QyxTQUFTLENBQUNxRSxNQUhDO0FBSXJCbEMsSUFBQUEsUUFBUSxFQUFFbkMsU0FBUyxDQUFDcUUsTUFKQztBQUtyQnZELElBQUFBLFFBQVEsRUFBRWQsU0FBUyxDQUFDd0UsR0FMQztBQU1yQmhDLElBQUFBLFdBQVcsRUFBRXhDLFNBQVMsQ0FBQ3FFLE1BTkY7QUFPckJwRCxJQUFBQSxRQUFRLEVBQUVoQixLQUFLLENBQUNnQixRQUFOLENBQWVxRDtBQVBKLEdBQXZCO0FBU0Q7O0FBRUQsZUFBZTdELFVBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGdldFVpT3B0aW9ucyxcbiAgZ2V0V2lkZ2V0LFxuICBndWVzc1R5cGUsXG4gIHJldHJpZXZlU2NoZW1hLFxuICBnZXREZWZhdWx0Rm9ybVN0YXRlLFxuICBnZXRNYXRjaGluZ09wdGlvbixcbiAgZGVlcEVxdWFscyxcbn0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNsYXNzIEFueU9mRmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIGNvbnN0IHsgZm9ybURhdGEsIG9wdGlvbnMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc2VsZWN0ZWRPcHRpb246IHRoaXMuZ2V0TWF0Y2hpbmdPcHRpb24oZm9ybURhdGEsIG9wdGlvbnMpLFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICBpZiAoXG4gICAgICAhZGVlcEVxdWFscyh0aGlzLnByb3BzLmZvcm1EYXRhLCBwcmV2UHJvcHMuZm9ybURhdGEpICYmXG4gICAgICB0aGlzLnByb3BzLmlkU2NoZW1hLiRpZCA9PT0gcHJldlByb3BzLmlkU2NoZW1hLiRpZFxuICAgICkge1xuICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb24gPSB0aGlzLmdldE1hdGNoaW5nT3B0aW9uKFxuICAgICAgICB0aGlzLnByb3BzLmZvcm1EYXRhLFxuICAgICAgICB0aGlzLnByb3BzLm9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmICghcHJldlN0YXRlIHx8IG1hdGNoaW5nT3B0aW9uID09PSB0aGlzLnN0YXRlLnNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uOiBtYXRjaGluZ09wdGlvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldE1hdGNoaW5nT3B0aW9uKGZvcm1EYXRhLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyByb290U2NoZW1hIH0gPSB0aGlzLnByb3BzLnJlZ2lzdHJ5O1xuXG4gICAgbGV0IG9wdGlvbiA9IGdldE1hdGNoaW5nT3B0aW9uKGZvcm1EYXRhLCBvcHRpb25zLCByb290U2NoZW1hKTtcbiAgICBpZiAob3B0aW9uICE9PSAwKSB7XG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgZm9ybSBkYXRhIG1hdGNoZXMgbm9uZSBvZiB0aGUgb3B0aW9ucywgdXNlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICAvLyBvcHRpb24sIGFzc3VtaW5nIGl0J3MgYXZhaWxhYmxlOyBvdGhlcndpc2UgdXNlIHRoZSBmaXJzdCBvcHRpb25cbiAgICByZXR1cm4gdGhpcyAmJiB0aGlzLnN0YXRlID8gdGhpcy5zdGF0ZS5zZWxlY3RlZE9wdGlvbiA6IDA7XG4gIH1cblxuICBvbk9wdGlvbkNoYW5nZSA9IG9wdGlvbiA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBwYXJzZUludChvcHRpb24sIDEwKTtcbiAgICBjb25zdCB7IGZvcm1EYXRhLCBvbkNoYW5nZSwgb3B0aW9ucywgcmVnaXN0cnkgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyByb290U2NoZW1hIH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCBuZXdPcHRpb24gPSByZXRyaWV2ZVNjaGVtYShcbiAgICAgIG9wdGlvbnNbc2VsZWN0ZWRPcHRpb25dLFxuICAgICAgcm9vdFNjaGVtYSxcbiAgICAgIGZvcm1EYXRhXG4gICAgKTtcblxuICAgIC8vIElmIHRoZSBuZXcgb3B0aW9uIGlzIG9mIHR5cGUgb2JqZWN0IGFuZCB0aGUgY3VycmVudCBkYXRhIGlzIGFuIG9iamVjdCxcbiAgICAvLyBkaXNjYXJkIHByb3BlcnRpZXMgYWRkZWQgdXNpbmcgdGhlIG9sZCBvcHRpb24uXG4gICAgbGV0IG5ld0Zvcm1EYXRhID0gdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgIGd1ZXNzVHlwZShmb3JtRGF0YSkgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIChuZXdPcHRpb24udHlwZSA9PT0gXCJvYmplY3RcIiB8fCBuZXdPcHRpb24ucHJvcGVydGllcylcbiAgICApIHtcbiAgICAgIG5ld0Zvcm1EYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgZm9ybURhdGEpO1xuXG4gICAgICBjb25zdCBvcHRpb25zVG9EaXNjYXJkID0gb3B0aW9ucy5zbGljZSgpO1xuICAgICAgb3B0aW9uc1RvRGlzY2FyZC5zcGxpY2Uoc2VsZWN0ZWRPcHRpb24sIDEpO1xuXG4gICAgICAvLyBEaXNjYXJkIGFueSBkYXRhIGFkZGVkIHVzaW5nIG90aGVyIG9wdGlvbnNcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnNUb0Rpc2NhcmQpIHtcbiAgICAgICAgaWYgKG9wdGlvbi5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9uLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGlmIChuZXdGb3JtRGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdGb3JtRGF0YVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBDYWxsIGdldERlZmF1bHRGb3JtU3RhdGUgdG8gbWFrZSBzdXJlIGRlZmF1bHRzIGFyZSBwb3B1bGF0ZWQgb24gY2hhbmdlLlxuICAgIG9uQ2hhbmdlKFxuICAgICAgZ2V0RGVmYXVsdEZvcm1TdGF0ZShvcHRpb25zW3NlbGVjdGVkT3B0aW9uXSwgbmV3Rm9ybURhdGEsIHJvb3RTY2hlbWEpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0ZWRPcHRpb246IHBhcnNlSW50KG9wdGlvbiwgMTApLFxuICAgIH0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBiYXNlVHlwZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICBmb3JtRGF0YSxcbiAgICAgIGlkUHJlZml4LFxuICAgICAgaWRTZXBhcmF0b3IsXG4gICAgICBpZFNjaGVtYSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9wdGlvbnMsXG4gICAgICByZWdpc3RyeSxcbiAgICAgIHVpU2NoZW1hLFxuICAgICAgc2NoZW1hLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgX1NjaGVtYUZpZWxkID0gcmVnaXN0cnkuZmllbGRzLlNjaGVtYUZpZWxkO1xuICAgIGNvbnN0IHsgd2lkZ2V0cyB9ID0gcmVnaXN0cnk7XG4gICAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbiB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHdpZGdldCA9IFwic2VsZWN0XCIsIC4uLnVpT3B0aW9ucyB9ID0gZ2V0VWlPcHRpb25zKHVpU2NoZW1hKTtcbiAgICBjb25zdCBXaWRnZXQgPSBnZXRXaWRnZXQoeyB0eXBlOiBcIm51bWJlclwiIH0sIHdpZGdldCwgd2lkZ2V0cyk7XG5cbiAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW3NlbGVjdGVkT3B0aW9uXSB8fCBudWxsO1xuICAgIGxldCBvcHRpb25TY2hlbWE7XG5cbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICAvLyBJZiB0aGUgc3Vic2NoZW1hIGRvZXNuJ3QgZGVjbGFyZSBhIHR5cGUsIGluZmVyIHRoZSB0eXBlIGZyb20gdGhlXG4gICAgICAvLyBwYXJlbnQgc2NoZW1hXG4gICAgICBvcHRpb25TY2hlbWEgPSBvcHRpb24udHlwZVxuICAgICAgICA/IG9wdGlvblxuICAgICAgICA6IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbiwgeyB0eXBlOiBiYXNlVHlwZSB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnVtT3B0aW9ucyA9IG9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoe1xuICAgICAgbGFiZWw6IG9wdGlvbi50aXRsZSB8fCBgT3B0aW9uICR7aW5kZXggKyAxfWAsXG4gICAgICB2YWx1ZTogaW5kZXgsXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxXaWRnZXRcbiAgICAgICAgICAgIGlkPXtgJHtpZFNjaGVtYS4kaWR9JHtcbiAgICAgICAgICAgICAgc2NoZW1hLm9uZU9mID8gXCJfX29uZW9mX3NlbGVjdFwiIDogXCJfX2FueW9mX3NlbGVjdFwiXG4gICAgICAgICAgICB9YH1cbiAgICAgICAgICAgIHNjaGVtYT17eyB0eXBlOiBcIm51bWJlclwiLCBkZWZhdWx0OiAwIH19XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbk9wdGlvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAgIG9wdGlvbnM9e3sgZW51bU9wdGlvbnMgfX1cbiAgICAgICAgICAgIHsuLi51aU9wdGlvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge29wdGlvbiAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgPF9TY2hlbWFGaWVsZFxuICAgICAgICAgICAgc2NoZW1hPXtvcHRpb25TY2hlbWF9XG4gICAgICAgICAgICB1aVNjaGVtYT17dWlTY2hlbWF9XG4gICAgICAgICAgICBlcnJvclNjaGVtYT17ZXJyb3JTY2hlbWF9XG4gICAgICAgICAgICBpZFNjaGVtYT17aWRTY2hlbWF9XG4gICAgICAgICAgICBpZFByZWZpeD17aWRQcmVmaXh9XG4gICAgICAgICAgICBpZFNlcGFyYXRvcj17aWRTZXBhcmF0b3J9XG4gICAgICAgICAgICBmb3JtRGF0YT17Zm9ybURhdGF9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICByZWdpc3RyeT17cmVnaXN0cnl9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuQW55T2ZGaWVsZC5kZWZhdWx0UHJvcHMgPSB7XG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZXJyb3JTY2hlbWE6IHt9LFxuICBpZFNjaGVtYToge30sXG4gIHVpU2NoZW1hOiB7fSxcbn07XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgQW55T2ZGaWVsZC5wcm9wVHlwZXMgPSB7XG4gICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCkuaXNSZXF1aXJlZCxcbiAgICBiYXNlVHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB1aVNjaGVtYTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBpZFNjaGVtYTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBmb3JtRGF0YTogUHJvcFR5cGVzLmFueSxcbiAgICBlcnJvclNjaGVtYTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByZWdpc3RyeTogdHlwZXMucmVnaXN0cnkuaXNSZXF1aXJlZCxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQW55T2ZGaWVsZDtcbiJdfQ==
@@ -51,4 +51,5 @@ if (process.env.NODE_ENV !== "production") {
51
51
  NullField.propTypes = types.fieldProps;
52
52
  }
53
53
 
54
- export default NullField;
54
+ export default NullField;
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9OdWxsRmllbGQuanMiXSwibmFtZXMiOlsiQ29tcG9uZW50IiwidHlwZXMiLCJOdWxsRmllbGQiLCJwcm9wcyIsImZvcm1EYXRhIiwidW5kZWZpbmVkIiwib25DaGFuZ2UiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJmaWVsZFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxTQUFULFFBQTBCLE9BQTFCO0FBQ0EsT0FBTyxLQUFLQyxLQUFaLE1BQXVCLGFBQXZCOztJQUVNQyxTOzs7Ozs7Ozs7Ozs7O3dDQUNnQjtBQUNsQixVQUFJLEtBQUtDLEtBQUwsQ0FBV0MsUUFBWCxLQUF3QkMsU0FBNUIsRUFBdUM7QUFDckMsYUFBS0YsS0FBTCxDQUFXRyxRQUFYLENBQW9CLElBQXBCO0FBQ0Q7QUFDRjs7OzZCQUVRO0FBQ1AsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUFUcUJOLFM7O0FBWXhCLElBQUlPLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDUCxFQUFBQSxTQUFTLENBQUNRLFNBQVYsR0FBc0JULEtBQUssQ0FBQ1UsVUFBNUI7QUFDRDs7QUFFRCxlQUFlVCxTQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuY2xhc3MgTnVsbEZpZWxkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZm9ybURhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShudWxsKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBOdWxsRmllbGQucHJvcFR5cGVzID0gdHlwZXMuZmllbGRQcm9wcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVsbEZpZWxkO1xuIl19
@@ -134,4 +134,5 @@ if (process.env.NODE_ENV !== "production") {
134
134
  NumberField.defaultProps = {
135
135
  uiSchema: {}
136
136
  };
137
- export default NumberField;
137
+ export default NumberField;
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9OdW1iZXJGaWVsZC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsInR5cGVzIiwiYXNOdW1iZXIiLCJ0cmFpbGluZ0NoYXJNYXRjaGVyV2l0aFByZWZpeCIsInRyYWlsaW5nQ2hhck1hdGNoZXIiLCJOdW1iZXJGaWVsZCIsInByb3BzIiwidmFsdWUiLCJzZXRTdGF0ZSIsImxhc3RWYWx1ZSIsImNoYXJBdCIsInByb2Nlc3NlZCIsIm1hdGNoIiwicmVwbGFjZSIsIm9uQ2hhbmdlIiwic3RhdGUiLCJTdHJpbmdGaWVsZCIsInJlZ2lzdHJ5IiwiZmllbGRzIiwiZm9ybURhdGEiLCJyZSIsIlJlZ0V4cCIsImhhbmRsZUNoYW5nZSIsIkNvbXBvbmVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsImZpZWxkUHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJ1aVNjaGVtYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLE1BQWtCLE9BQWxCO0FBRUEsT0FBTyxLQUFLQyxLQUFaLE1BQXVCLGFBQXZCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixhQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsSUFBTUMsNkJBQTZCLEdBQUcsZUFBdEMsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLElBQU1DLG1CQUFtQixHQUFHLFNBQTVCO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWlCTUMsVzs7Ozs7QUFDSix1QkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQixxRkFBTUEsS0FBTjs7QUFEaUIsbUVBUUosVUFBQUMsS0FBSyxFQUFJO0FBQ3RCO0FBQ0EsWUFBS0MsUUFBTCxDQUFjO0FBQUVDLFFBQUFBLFNBQVMsRUFBRUY7QUFBYixPQUFkLEVBRnNCLENBSXRCO0FBQ0E7OztBQUNBLFVBQUksVUFBR0EsS0FBSCxFQUFXRyxNQUFYLENBQWtCLENBQWxCLE1BQXlCLEdBQTdCLEVBQWtDO0FBQ2hDSCxRQUFBQSxLQUFLLGNBQU9BLEtBQVAsQ0FBTDtBQUNELE9BUnFCLENBVXRCO0FBQ0E7QUFDQTs7O0FBQ0EsVUFBSUksU0FBUyxHQUNYLE9BQU9KLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLEtBQUssQ0FBQ0ssS0FBTixDQUFZVCw2QkFBWixDQUE3QixHQUNJRCxRQUFRLENBQUNLLEtBQUssQ0FBQ00sT0FBTixDQUFjVCxtQkFBZCxFQUFtQyxFQUFuQyxDQUFELENBRFosR0FFSUYsUUFBUSxDQUFDSyxLQUFELENBSGQ7O0FBS0EsWUFBS0QsS0FBTCxDQUFXUSxRQUFYLENBQW9CSCxTQUFwQjtBQUNELEtBM0JrQjs7QUFHakIsVUFBS0ksS0FBTCxHQUFhO0FBQ1hOLE1BQUFBLFNBQVMsRUFBRUgsS0FBSyxDQUFDQztBQUROLEtBQWI7QUFIaUI7QUFNbEI7Ozs7NkJBdUJRO0FBQUEsVUFDQ1MsV0FERCxHQUNpQixLQUFLVixLQUFMLENBQVdXLFFBQVgsQ0FBb0JDLE1BRHJDLENBQ0NGLFdBREQ7O0FBQUEsd0JBRXdCLEtBQUtWLEtBRjdCO0FBQUEsVUFFQ2EsUUFGRCxlQUVDQSxRQUZEO0FBQUEsVUFFY2IsS0FGZDs7QUFBQSxVQUdDRyxTQUhELEdBR2UsS0FBS00sS0FIcEIsQ0FHQ04sU0FIRDtBQUtQLFVBQUlGLEtBQUssR0FBR1ksUUFBWjs7QUFFQSxVQUFJLE9BQU9WLFNBQVAsS0FBcUIsUUFBckIsSUFBaUMsT0FBT0YsS0FBUCxLQUFpQixRQUF0RCxFQUFnRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQSxZQUFNYSxFQUFFLEdBQUcsSUFBSUMsTUFBSixDQUFXLFVBQUdkLEtBQUgsRUFBV00sT0FBWCxDQUFtQixHQUFuQixFQUF3QixLQUF4QixJQUFpQyxTQUE1QyxDQUFYLENBSjhELENBTTlEO0FBQ0E7O0FBQ0EsWUFBSUosU0FBUyxDQUFDRyxLQUFWLENBQWdCUSxFQUFoQixDQUFKLEVBQXlCO0FBQ3ZCYixVQUFBQSxLQUFLLEdBQUdFLFNBQVI7QUFDRDtBQUNGOztBQUVELGFBQ0Usb0JBQUMsV0FBRCxlQUFpQkgsS0FBakI7QUFBd0IsUUFBQSxRQUFRLEVBQUVDLEtBQWxDO0FBQXlDLFFBQUEsUUFBUSxFQUFFLEtBQUtlO0FBQXhELFNBREY7QUFHRDs7OztFQXJEdUJ0QixLQUFLLENBQUN1QixTOztBQXdEaEMsSUFBSUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekNyQixFQUFBQSxXQUFXLENBQUNzQixTQUFaLEdBQXdCMUIsS0FBSyxDQUFDMkIsVUFBOUI7QUFDRDs7QUFFRHZCLFdBQVcsQ0FBQ3dCLFlBQVosR0FBMkI7QUFDekJDLEVBQUFBLFFBQVEsRUFBRTtBQURlLENBQTNCO0FBSUEsZUFBZXpCLFdBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgYXNOdW1iZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IGVuZHMgaW4gYSAuIGNoYXJhY3Rlciwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIG9mXG4vLyBkaWdpdHMgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiAwIGNoYXJhY3RlcnMgdXAgdW50aWwgdGhlIGVuZCBvZiB0aGUgbGluZS5cbi8vIEVuc3VyaW5nIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHByZWZpeGVkIGNoYXJhY3RlciBpcyBpbXBvcnRhbnQgc28gdGhhdFxuLy8geW91IGRvbid0IGluY29ycmVjdGx5IG1hdGNoIGFnYWluc3QgXCIwXCIuXG5jb25zdCB0cmFpbGluZ0NoYXJNYXRjaGVyV2l0aFByZWZpeCA9IC9cXC4oWzAtOV0qMCkqJC87XG5cbi8vIFRoaXMgaXMgdXNlZCBmb3IgdHJpbW1pbmcgdGhlIHRyYWlsaW5nIDAgYW5kIC4gY2hhcmFjdGVycyB3aXRob3V0IGFmZmVjdGluZ1xuLy8gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZy4gSXRzIHBvc3NpYmxlIHRvIHVzZSBvbmUgUmVnRXggd2l0aCBncm91cHMgZm9yIHRoaXNcbi8vIGZ1bmN0aW9uYWxpdHksIGJ1dCBpdCBpcyBmYWlybHkgY29tcGxleCBjb21wYXJlZCB0byBzaW1wbHkgZGVmaW5pbmcgdHdvXG4vLyBkaWZmZXJlbnQgbWF0Y2hlcnMuXG5jb25zdCB0cmFpbGluZ0NoYXJNYXRjaGVyID0gL1swLl0wKiQvO1xuXG4vKipcbiAqIFRoZSBOdW1iZXJGaWVsZCBjbGFzcyBoYXMgc29tZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBkZWFsaW5nIHdpdGggdHJhaWxpbmdcbiAqIGRlY2ltYWwgcG9pbnRzIGFuZC9vciB6ZXJvZXMuIFRoaXMgbG9naWMgaXMgZGVzaWduZWQgdG8gYWxsb3cgdHJhaWxpbmcgdmFsdWVzXG4gKiB0byBiZSB2aXNpYmxlIGluIHRoZSBpbnB1dCBlbGVtZW50LCBidXQgbm90IGJlIHJlcHJlc2VudGVkIGluIHRoZVxuICogY29ycmVzcG9uZGluZyBmb3JtIGRhdGEuXG4gKlxuICogVGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqIDEuIFdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMgdGhlIHZhbHVlIGlzIGNhY2hlZCBpbiB0aGUgY29tcG9uZW50IHN0YXRlXG4gKlxuICogMi4gVGhlIHZhbHVlIGlzIHRoZW4gbm9ybWFsaXplZCwgcmVtb3ZpbmcgdHJhaWxpbmcgZGVjaW1hbCBwb2ludHMgYW5kIHplcm9zLFxuICogICAgdGhlbiBwYXNzZWQgdG8gdGhlIFwib25DaGFuZ2VcIiBjYWxsYmFja1xuICpcbiAqIDMuIFdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW5kZXJlZCwgdGhlIGZvcm1EYXRhIHZhbHVlIGlzIGNoZWNrZWQgYWdhaW5zdCB0aGVcbiAqICAgIHZhbHVlIGNhY2hlZCBpbiB0aGUgc3RhdGUuIElmIGl0IG1hdGNoZXMgdGhlIGNhY2hlZCB2YWx1ZSwgdGhlIGNhY2hlZFxuICogICAgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBpbnB1dCBpbnN0ZWFkIG9mIHRoZSBmb3JtRGF0YSB2YWx1ZVxuICovXG5jbGFzcyBOdW1iZXJGaWVsZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGxhc3RWYWx1ZTogcHJvcHMudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZSA9IHZhbHVlID0+IHtcbiAgICAvLyBDYWNoZSB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gY29tcG9uZW50IHN0YXRlXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxhc3RWYWx1ZTogdmFsdWUgfSk7XG5cbiAgICAvLyBOb3JtYWxpemUgZGVjaW1hbHMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGEgemVybyBjaGFyYWN0ZXIgaW4gYWR2YW5jZSBzb1xuICAgIC8vIHRoYXQgdGhlIHJlc3Qgb2YgdGhlIG5vcm1hbGl6YXRpb24gbG9naWMgaXMgc2ltcGxlclxuICAgIGlmIChgJHt2YWx1ZX1gLmNoYXJBdCgwKSA9PT0gXCIuXCIpIHtcbiAgICAgIHZhbHVlID0gYDAke3ZhbHVlfWA7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgKHRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgd2lkZ2V0IHVzZWQgaXMgYVxuICAgIC8vIDxzZWxlY3Q+LCBkdWUgdG8gYW4gZW51bSBkZWNsYXJhdGlvbiBldGMpIHRoZW4sIGlmIHRoZSB2YWx1ZSBlbmRzIGluIGFcbiAgICAvLyB0cmFpbGluZyBkZWNpbWFsIHBvaW50IG9yIG11bHRpcGxlIHplcm9lcywgc3RyaXAgdGhlIHRyYWlsaW5nIHZhbHVlc1xuICAgIGxldCBwcm9jZXNzZWQgPVxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLm1hdGNoKHRyYWlsaW5nQ2hhck1hdGNoZXJXaXRoUHJlZml4KVxuICAgICAgICA/IGFzTnVtYmVyKHZhbHVlLnJlcGxhY2UodHJhaWxpbmdDaGFyTWF0Y2hlciwgXCJcIikpXG4gICAgICAgIDogYXNOdW1iZXIodmFsdWUpO1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShwcm9jZXNzZWQpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IFN0cmluZ0ZpZWxkIH0gPSB0aGlzLnByb3BzLnJlZ2lzdHJ5LmZpZWxkcztcbiAgICBjb25zdCB7IGZvcm1EYXRhLCAuLi5wcm9wcyB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IGxhc3RWYWx1ZSB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGxldCB2YWx1ZSA9IGZvcm1EYXRhO1xuXG4gICAgaWYgKHR5cGVvZiBsYXN0VmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBDb25zdHJ1Y3QgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBjaGVja3MgZm9yIGEgc3RyaW5nIHRoYXQgY29uc2lzdHNcbiAgICAgIC8vIG9mIHRoZSBmb3JtRGF0YSB2YWx1ZSBzdWZmaXhlZCB3aXRoIHplcm8gb3Igb25lICcuJyBjaGFyYWN0ZXJzIGFuZCB6ZXJvXG4gICAgICAvLyBvciBtb3JlICcwJyBjaGFyYWN0ZXJzXG4gICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYCR7dmFsdWV9YC5yZXBsYWNlKFwiLlwiLCBcIlxcXFwuXCIpICsgXCJcXFxcLj8wKiRcIik7XG5cbiAgICAgIC8vIElmIHRoZSBjYWNoZWQgXCJsYXN0VmFsdWVcIiBpcyBhIG1hdGNoLCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBmb3JtRGF0YVxuICAgICAgLy8gdmFsdWUgdG8gcHJldmVudCB0aGUgaW5wdXQgdmFsdWUgZnJvbSBjaGFuZ2luZyBpbiB0aGUgVUlcbiAgICAgIGlmIChsYXN0VmFsdWUubWF0Y2gocmUpKSB7XG4gICAgICAgIHZhbHVlID0gbGFzdFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3RyaW5nRmllbGQgey4uLnByb3BzfSBmb3JtRGF0YT17dmFsdWV9IG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX0gLz5cbiAgICApO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgTnVtYmVyRmllbGQucHJvcFR5cGVzID0gdHlwZXMuZmllbGRQcm9wcztcbn1cblxuTnVtYmVyRmllbGQuZGVmYXVsdFByb3BzID0ge1xuICB1aVNjaGVtYToge30sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJGaWVsZDtcbiJdfQ==