@sapui5/sap.fe.macros 1.140.0 → 1.141.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.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Chart.js +53 -2
- package/src/sap/fe/macros/Chart.tsx +55 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
- package/src/sap/fe/macros/CommonHelper.js +59 -15
- package/src/sap/fe/macros/CommonHelper.ts +65 -14
- package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
- package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
- package/src/sap/fe/macros/Field.js +14 -10
- package/src/sap/fe/macros/Field.ts +15 -12
- package/src/sap/fe/macros/MacroAPI.js +9 -4
- package/src/sap/fe/macros/MacroAPI.ts +9 -4
- package/src/sap/fe/macros/MultiValueField.js +10 -5
- package/src/sap/fe/macros/MultiValueField.tsx +7 -1
- package/src/sap/fe/macros/Page.js +5 -7
- package/src/sap/fe/macros/Page.tsx +4 -6
- package/src/sap/fe/macros/Paginator.js +9 -4
- package/src/sap/fe/macros/Paginator.tsx +12 -3
- package/src/sap/fe/macros/RichTextEditor.js +3 -2
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
- package/src/sap/fe/macros/Status.js +38 -13
- package/src/sap/fe/macros/Status.tsx +26 -6
- package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
- package/src/sap/fe/macros/ai/EasyFilterBar.js +195 -55
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +234 -57
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
- package/src/sap/fe/macros/chart/Chart.js +2 -2
- package/src/sap/fe/macros/chart/Chart.tsx +1 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +4 -2
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +4 -1
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
- package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +2 -2
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +1 -1
- package/src/sap/fe/macros/controls/FilterBar.js +14 -5
- package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
- package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
- package/src/sap/fe/macros/controls/Section.js +4 -3
- package/src/sap/fe/macros/controls/Section.ts +3 -2
- package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
- package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
- package/src/sap/fe/macros/field/Field.js +2 -2
- package/src/sap/fe/macros/field/Field.tsx +1 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
- package/src/sap/fe/macros/field/FieldHelper.js +2 -2
- package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
- package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
- package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +232 -2
- package/src/sap/fe/macros/filter/FilterUtils.ts +290 -4
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
- package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
- package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
- package/src/sap/fe/macros/form/Form.block.js +7 -8
- package/src/sap/fe/macros/form/Form.block.ts +4 -6
- package/src/sap/fe/macros/form/FormContainer.block.js +555 -4
- package/src/sap/fe/macros/form/FormContainer.block.ts +665 -6
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
- package/src/sap/fe/macros/form/FormDelegate.js +6 -9
- package/src/sap/fe/macros/form/FormDelegate.ts +5 -8
- package/src/sap/fe/macros/internal/DataPoint.js +3 -2
- package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
- package/src/sap/fe/macros/internal/FilterField.block.js +16 -8
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -7
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +7 -1
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +8 -0
- package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +4 -1
- package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
- package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
- package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
- package/src/sap/fe/macros/messagebundle.properties +20 -2
- package/src/sap/fe/macros/messagebundle_ar.properties +1 -1
- package/src/sap/fe/macros/messagebundle_bg.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ca.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cnr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cs.properties +1 -1
- package/src/sap/fe/macros/messagebundle_cy.properties +1 -1
- package/src/sap/fe/macros/messagebundle_da.properties +1 -1
- package/src/sap/fe/macros/messagebundle_de.properties +4 -4
- package/src/sap/fe/macros/messagebundle_el.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/src/sap/fe/macros/messagebundle_es_MX.properties +1 -1
- package/src/sap/fe/macros/messagebundle_et.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hi.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_hu.properties +1 -1
- package/src/sap/fe/macros/messagebundle_id.properties +5 -5
- package/src/sap/fe/macros/messagebundle_it.properties +1 -1
- package/src/sap/fe/macros/messagebundle_iw.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ko.properties +2 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +2 -2
- package/src/sap/fe/macros/messagebundle_lv.properties +1 -1
- package/src/sap/fe/macros/messagebundle_mk.properties +2 -2
- package/src/sap/fe/macros/messagebundle_ms.properties +1 -1
- package/src/sap/fe/macros/messagebundle_nl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_no.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pt.properties +1 -1
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ro.properties +1 -1
- package/src/sap/fe/macros/messagebundle_ru.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sh.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sl.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_sv.properties +1 -1
- package/src/sap/fe/macros/messagebundle_th.properties +1 -1
- package/src/sap/fe/macros/messagebundle_tr.properties +1 -1
- package/src/sap/fe/macros/messagebundle_uk.properties +1 -1
- package/src/sap/fe/macros/messagebundle_vi.properties +2 -2
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +1 -1
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +1 -1
- package/src/sap/fe/macros/messages/MessageButton.js +1 -1
- package/src/sap/fe/macros/messages/MessageButton.ts +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.js +3 -1
- package/src/sap/fe/macros/messages/MessagePopover.ts +2 -0
- package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -1
- package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
- package/src/sap/fe/macros/table/BasicSearch.js +1 -1
- package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
- package/src/sap/fe/macros/table/Column.js +14 -2
- package/src/sap/fe/macros/table/Column.ts +7 -0
- package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
- package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
- package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
- package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +15 -9
- package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
- package/src/sap/fe/macros/table/Table.block.js +188 -147
- package/src/sap/fe/macros/table/Table.block.tsx +41 -11
- package/src/sap/fe/macros/table/Table.js +16 -10
- package/src/sap/fe/macros/table/Table.tsx +16 -10
- package/src/sap/fe/macros/table/TableAPI.js +224 -184
- package/src/sap/fe/macros/table/TableAPI.ts +63 -19
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
- package/src/sap/fe/macros/table/TableHelper.js +2 -2
- package/src/sap/fe/macros/table/TableHelper.ts +1 -1
- package/src/sap/fe/macros/table/TreeTable.js +16 -10
- package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
- package/src/sap/fe/macros/table/Utils.js +3 -2
- package/src/sap/fe/macros/table/Utils.ts +7 -2
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -33
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -32
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
- package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
- package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +4 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +31 -13
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -1
|
@@ -955,6 +955,12 @@ const DisplayStyle = {
|
|
|
955
955
|
const criticalityIcon = buildExpressionForCriticalityIcon(convertedDataField);
|
|
956
956
|
const state = buildExpressionForCriticalityColor(convertedDataField);
|
|
957
957
|
|
|
958
|
+
// Extract tooltip from QuickInfo annotation - check DataField first, then property
|
|
959
|
+
const tooltipAnnotation =
|
|
960
|
+
dataModelObjectPath.targetObject?.annotations?.Common?.QuickInfo ||
|
|
961
|
+
enhancedValueDataModelPath.targetObject?.annotations?.Common?.QuickInfo;
|
|
962
|
+
const tooltipExpression = tooltipAnnotation ? compileExpression(getExpressionFromAnnotation(tooltipAnnotation)) : undefined;
|
|
963
|
+
|
|
958
964
|
const linkUrl = (field.convertedMetaPath as DataFieldWithUrl).Url
|
|
959
965
|
? compileExpression(
|
|
960
966
|
getExpressionFromAnnotation(
|
|
@@ -974,6 +980,7 @@ const DisplayStyle = {
|
|
|
974
980
|
state={state}
|
|
975
981
|
visible={field.displayVisible}
|
|
976
982
|
text={field.text}
|
|
983
|
+
tooltip={tooltipExpression}
|
|
977
984
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
978
985
|
class="sapMTextRenderWhitespaceWrap"
|
|
979
986
|
/>
|
|
@@ -1006,6 +1013,7 @@ const DisplayStyle = {
|
|
|
1006
1013
|
icon={criticalityIcon}
|
|
1007
1014
|
state={state}
|
|
1008
1015
|
text={field.text}
|
|
1016
|
+
tooltip={tooltipExpression}
|
|
1009
1017
|
visible={field.displayVisible}
|
|
1010
1018
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
1011
1019
|
{...requiredHelper}
|
|
@@ -173,23 +173,36 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
173
173
|
/**
|
|
174
174
|
* Generates the RadioButton template.
|
|
175
175
|
* @param field Reference to the current field instance
|
|
176
|
+
* @param forBoolean
|
|
176
177
|
* @returns An XML-based string with the radio button definition
|
|
177
178
|
*/
|
|
178
179
|
getRadioButtonTemplate(field) {
|
|
180
|
+
let forBoolean = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
179
181
|
const fixedValuesPath = "/" + field.property?.annotations?.Common?.ValueList?.CollectionPath;
|
|
180
182
|
const valueListParameterInOut = field.property?.annotations?.Common?.ValueList?.Parameters.find(valueListParameter => (valueListParameter.$Type === "com.sap.vocabularies.Common.v1.ValueListParameterInOut" || valueListParameter.$Type === "com.sap.vocabularies.Common.v1.ValueListParameterOut") && valueListParameter.LocalDataProperty.value === field.property.name);
|
|
181
183
|
|
|
182
184
|
// we know that a valueListProperty exists because we check this already in showAsRadioButton
|
|
183
|
-
const valueListKeyPath = pathInModel(valueListParameterInOut
|
|
185
|
+
const valueListKeyPath = pathInModel(valueListParameterInOut?.ValueListProperty) ?? pathInModel("");
|
|
184
186
|
let valueListDescriptionPath;
|
|
185
|
-
const valueHelpKeyTextAnnotationPath = field.dataModelPath.targetEntityType.resolvePath(fixedValuesPath)
|
|
187
|
+
const valueHelpKeyTextAnnotationPath = field.dataModelPath.targetEntityType.resolvePath(fixedValuesPath)?.entityType.keys[0].annotations?.Common?.Text?.path;
|
|
186
188
|
if (valueHelpKeyTextAnnotationPath) {
|
|
187
189
|
valueListDescriptionPath = pathInModel(valueHelpKeyTextAnnotationPath);
|
|
188
190
|
} else {
|
|
189
191
|
valueListDescriptionPath = valueListKeyPath;
|
|
190
192
|
}
|
|
193
|
+
let possibleValues;
|
|
194
|
+
if (forBoolean) {
|
|
195
|
+
possibleValues = [{
|
|
196
|
+
key: true,
|
|
197
|
+
text: field.getTranslatedText("T_RADIOBUTTONS_BOOLEAN_YES")
|
|
198
|
+
}, {
|
|
199
|
+
key: false,
|
|
200
|
+
text: field.getTranslatedText("T_RADIOBUTTONS_BOOLEAN_NO")
|
|
201
|
+
}];
|
|
202
|
+
}
|
|
191
203
|
return _jsx(RadioButtons, {
|
|
192
204
|
id: field.editStyleId,
|
|
205
|
+
possibleValues: possibleValues,
|
|
193
206
|
requiredExpression: field.requiredExpression,
|
|
194
207
|
validateFieldGroup: field.eventHandlers.validateFieldGroup,
|
|
195
208
|
fixedValuesPath: fixedValuesPath,
|
|
@@ -436,7 +449,11 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
436
449
|
let innerFieldContent;
|
|
437
450
|
switch (field.editStyle) {
|
|
438
451
|
case "CheckBox":
|
|
439
|
-
|
|
452
|
+
if (field.formatOptions.useRadioButtonsForBoolean) {
|
|
453
|
+
innerFieldContent = EditStyle.getRadioButtonTemplate(field, true);
|
|
454
|
+
} else {
|
|
455
|
+
innerFieldContent = EditStyle.getCheckBoxTemplate(field);
|
|
456
|
+
}
|
|
440
457
|
break;
|
|
441
458
|
case "DatePicker":
|
|
442
459
|
case "DateTimePicker":
|
|
@@ -476,4 +493,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
476
493
|
};
|
|
477
494
|
return EditStyle;
|
|
478
495
|
}, false);
|
|
479
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0U3R5bGUiLCJnZXRMYXlvdXREYXRhIiwiZmllbGQiLCJsYXlvdXREYXRhIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJfanN4IiwiRmxleEl0ZW1EYXRhIiwiZ3Jvd0ZhY3RvciIsImdldENvbGxhYm9yYXRpb25BdmF0YXIiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJVSUZvcm1hdHRlciIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsUGF0aCIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJBdmF0YXIiLCJ2aXNpYmxlIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsImV2ZW50SGFuZGxlcnMiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiY2hpbGRyZW4iLCJkZXBlbmRlbnRzIiwiRXZlbnREZWxlZ2F0ZUhvb2siLCJzdG9wVGFwUHJvcGFnYXRpb24iLCJnZXREYXRlVGltZVBpY2tlckdlbmVyaWMiLCJ0eXBlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0ZXh0QWxpZ24iLCJnZXRUZXh0QWxpZ25tZW50IiwiZm9ybWF0T3B0aW9ucyIsImVkaXRNb2RlQXNPYmplY3QiLCJkYXRlVGltZVBpY2tlclByb3BlcnRpZXMiLCJpZCIsImVkaXRTdHlsZUlkIiwid2lkdGgiLCJlZGl0YWJsZSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWQiLCJlbmFibGVkRXhwcmVzc2lvbiIsInJlcXVpcmVkIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiYXJpYUxhYmVsbGVkQnkiLCJ2YWx1ZSIsInZhbHVlQmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEdyb3VwSWRzIiwic2hvd1RpbWV6b25lIiwibWluRGF0ZSIsIm1pbkRhdGVFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwibWF4RGF0ZSIsIm1heERhdGVFeHByZXNzaW9uIiwiY2hhbmdlIiwibGl2ZUNoYW5nZSIsInZhbHVlRm9ybWF0IiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiZ2V0RGF0ZVRpbWVQaWNrZXIiLCJkYXRlVGltZVBpY2tlclR5cGUiLCJkYXRlVGltZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImRhdGFTb3VyY2VQYXRoIiwiRGF0ZVRpbWVQaWNrZXIiLCJUaW1lUGlja2VyIiwiZ2V0SW5wdXRUZW1wbGF0ZSIsIklucHV0IiwicGxhY2Vob2xkZXIiLCJlZGl0U3R5bGVQbGFjZWhvbGRlciIsImRlc2NyaXB0aW9uIiwic3RhdGljRGVzY3JpcHRpb24iLCJlZGl0U3R5bGUiLCJtYXhMZW5ndGgiLCJ0ZXh0TWF4TGVuZ3RoIiwic2hvd0FzUmFkaW9CdXR0b24iLCJyYWRpb0J1dHRvbkNvbmZpZ3VyZWQiLCJwcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5IiwidmFsdWVPZiIsImZpZWxkRWRpdFN0eWxlIiwidmFsdWVMaXN0UGFyYW1ldGVySW5PdXQiLCJWYWx1ZUxpc3QiLCJQYXJhbWV0ZXJzIiwiZmluZCIsInZhbHVlTGlzdFBhcmFtZXRlciIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCJuYW1lIiwiVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzIiwiZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZSIsImZpeGVkVmFsdWVzUGF0aCIsIkNvbGxlY3Rpb25QYXRoIiwidmFsdWVMaXN0S2V5UGF0aCIsInBhdGhJbk1vZGVsIiwiVmFsdWVMaXN0UHJvcGVydHkiLCJ2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGgiLCJ2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJlbnRpdHlUeXBlIiwia2V5cyIsIlRleHQiLCJwYXRoIiwiUmFkaW9CdXR0b25zIiwicmFkaW9CdXR0b25UZXh0UHJvcGVydHkiLCJyYWRpb0J1dHRvbktleVByb3BlcnR5IiwiaG9yaXpvbnRhbExheW91dCIsInJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXQiLCJnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZSIsImRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJkZWxlZ2F0ZSIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImRpc3BsYXkiLCJnZXRGaWVsZERpc3BsYXkiLCJkaXNwbGF5TW9kZSIsImhhc011bHRpbGluZUFubm90YXRpb24iLCJVSSIsIk11bHRpTGluZVRleHQiLCJtdWx0aXBsZUxpbmVzIiwiZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCIsImxhYmVsIiwiY29tcHV0ZUxhYmVsVGV4dCIsImNvbnRleHQiLCJvcHRpb25hbENvbnRlbnRFZGl0IiwiVGV4dEFyZWEiLCJyb3dzIiwidGV4dExpbmVzRWRpdCIsImdyb3dpbmciLCJ0ZXh0TWF4TGluZXMiLCJncm93aW5nTWF4TGluZXMiLCJvcHRpb25hbExheW91dERhdGEiLCJGaWVsZCIsInZhbHVlU3RhdGUiLCJlZGl0TW9kZSIsImNvbXB1dGVkRWRpdE1vZGUiLCJhZGRpdGlvbmFsVmFsdWUiLCJ0ZXh0QmluZGluZ0V4cHJlc3Npb24iLCJ2YWx1ZUhlbHAiLCJ2YWx1ZUhlbHBJZCIsImNvbnRlbnRFZGl0IiwiZ2V0Q2hlY2tCb3hUZW1wbGF0ZSIsImlzQ2hlY2tCb3hHcm91cEl0ZW0iLCJpc0ZpZWxkR3JvdXBJdGVtIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsInRleHQiLCJ3cmFwcGluZyIsInNlbGVjdCIsImdldFRleHRBcmVhVGVtcGxhdGUiLCJzaG93RXhjZWVkZWRUZXh0IiwiVGV4dEFyZWFFeCIsImNvbHMiLCJnZXRSYXRpbmdJbmRpY2F0b3JUZW1wbGF0ZSIsInRvb2x0aXAiLCJyYXRpbmdJbmRpY2F0b3JUb29sdGlwIiwiUmF0aW5nSW5kaWNhdG9yIiwibWF4VmFsdWUiLCJyYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZSIsImljb25TaXplIiwiY2xhc3MiLCJnZXRUZW1wbGF0ZVdpdGhXcmFwcGVyIiwiRmllbGRFZGl0TW9kZSIsIkRpc3BsYXkiLCJfanN4cyIsIkNvbGxhYm9yYXRpb25IQm94IiwiYWxpZ25JdGVtcyIsImdldFRlbXBsYXRlIiwiZ2V0SW5wdXRNYXNrVGVtcGxhdGUiLCJvcHRpb25hbE1hc2tJbnB1dFJ1bGVzIiwibWFzayIsIm1hc2tSdWxlIiwicnVsZSIsInB1c2giLCJNYXNrSW5wdXRSdWxlIiwibWFza0Zvcm1hdFN5bWJvbCIsInN5bWJvbCIsInJlZ2V4IiwiTWFza0lucHV0IiwicGxhY2Vob2xkZXJTeW1ib2wiLCJydWxlcyIsImlubmVyRmllbGRDb250ZW50Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFZGl0U3R5bGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRXZlbnREZWxlZ2F0ZUhvb2sgZnJvbSBcInNhcC9mZS9iYXNlL0V2ZW50RGVsZWdhdGVIb29rXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbkhCb3ggZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvQ29sbGFib3JhdGlvbkhCb3hcIjtcbmltcG9ydCBSYWRpb0J1dHRvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvUmFkaW9CdXR0b25zXCI7XG5pbXBvcnQgeyBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkLCBnZXRUZXh0QWxpZ25tZW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvZmllbGQvRmllbGRTdHJ1Y3R1cmVIZWxwZXJcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IHR5cGUgeyBDaGVja0JveCRTZWxlY3RFdmVudCB9IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSBcInNhcC9tL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBEYXRlVGltZVBpY2tlciBmcm9tIFwic2FwL20vRGF0ZVRpbWVQaWNrZXJcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vTWFza0lucHV0XCI7XG5pbXBvcnQgTWFza0lucHV0IGZyb20gXCJzYXAvbS9NYXNrSW5wdXRcIjtcbmltcG9ydCBNYXNrSW5wdXRSdWxlIGZyb20gXCJzYXAvbS9NYXNrSW5wdXRSdWxlXCI7XG5pbXBvcnQgdHlwZSB7IFJhdGluZ0luZGljYXRvciRDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9SYXRpbmdJbmRpY2F0b3JcIjtcbmltcG9ydCBSYXRpbmdJbmRpY2F0b3IgZnJvbSBcInNhcC9tL1JhdGluZ0luZGljYXRvclwiO1xuaW1wb3J0IFRleHRBcmVhIGZyb20gXCJzYXAvbS9UZXh0QXJlYVwiO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSBcInNhcC9tL1RpbWVQaWNrZXJcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRyb2wsIENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQsIGRlZmF1bHQgYXMgQ29udHJvbDEgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgRmllbGQkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcIi4uLy4uL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgVGV4dEFyZWFFeCBmcm9tIFwiLi4vLi4vZmllbGQvVGV4dEFyZWFFeFwiO1xuXG5jb25zdCBFZGl0U3R5bGUgPSB7XG5cdC8qKlxuXHQgKiBBbiBpbnRlcm5hbCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIHJldXNlZCBsYXlvdXQgZGF0YS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldExheW91dERhdGEoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRsZXQgbGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRsYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gbGF5b3V0RGF0YTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBhdmF0YXIgY29udHJvbCBuZXh0IGEgZmllbGQgbG9ja2VkLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYXZhdGFyXG5cdCAqL1xuXHRnZXRDb2xsYWJvcmF0aW9uQXZhdGFyKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGZpZWxkLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlci5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihmaWVsZC5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscylcblx0XHQpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFVJRm9ybWF0dGVyLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKGZpZWxkLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PEF2YXRhclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGRSdW50aW1lSGVscGVyOiAnc2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXInfVwiXG5cdFx0XHRcdHZpc2libGU9e2NvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb259XG5cdFx0XHRcdGluaXRpYWxzPXtjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e2NvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHByZXNzPXtmaWVsZC5ldmVudEhhbmRsZXJzLnNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIgYXMgdW5rbm93biBhcyAoKG9FdmVudDogRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IDxFdmVudERlbGVnYXRlSG9vayBzdG9wVGFwUHJvcGFnYXRpb249e3RydWV9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0F2YXRhcj5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSB0ZW1wbGF0ZSBmb3Igb25lIG9mIHRoZSBwaWNrZXJzIHJlZmVyZW5jZSBpbiB0aGUgdHlwZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdHlwZSBSZWZlcmVuY2UgdG8gb25lIG9mIHRoZSBlZGl0IHN0eWxlIHBpY2tlciB0eXBlc1xuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMsIHR5cGU6IFwiRGF0ZVBpY2tlclwiIHwgXCJEYXRlVGltZVBpY2tlclwiIHwgXCJUaW1lUGlja2VyXCIpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXG5cdFx0Y29uc3QgZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzID0ge1xuXHRcdFx0XCJjb3JlOnJlcXVpcmVcIjogXCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIixcblx0XHRcdGlkOiBmaWVsZC5lZGl0U3R5bGVJZCxcblx0XHRcdHdpZHRoOiBcIjEwMCVcIixcblx0XHRcdGVkaXRhYmxlOiBmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb24sXG5cdFx0XHRlbmFibGVkOiBmaWVsZC5lbmFibGVkRXhwcmVzc2lvbixcblx0XHRcdHJlcXVpcmVkOiBmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb24sXG5cdFx0XHR0ZXh0QWxpZ246IHRleHRBbGlnbixcblx0XHRcdGFyaWFMYWJlbGxlZEJ5OiBmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+LFxuXHRcdFx0dmFsdWU6IGZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRmaWVsZEdyb3VwSWRzOiBmaWVsZC5maWVsZEdyb3VwSWRzLFxuXHRcdFx0c2hvd1RpbWV6b25lOiBmaWVsZC5zaG93VGltZXpvbmUsXG5cdFx0XHRtaW5EYXRlOiB0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCIgfHwgdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBmaWVsZC5taW5EYXRlRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heERhdGU6IHR5cGUgPT09IFwiRGF0ZVRpbWVQaWNrZXJcIiB8fCB0eXBlID09PSBcIkRhdGVQaWNrZXJcIiA/IGZpZWxkLm1heERhdGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0Y2hhbmdlOlxuXHRcdFx0XHR0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCJcblx0XHRcdFx0XHQ/ICgoZmllbGQuY2hhbmdlIHx8IGZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlKSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZClcblx0XHRcdFx0XHQ6IChmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZCksXG5cdFx0XHRsaXZlQ2hhbmdlOiBmaWVsZC5ldmVudEhhbmRsZXJzLmxpdmVDaGFuZ2UsXG5cdFx0XHR2YWx1ZUZvcm1hdDogdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBcIm1lZGl1bVwiIDogdW5kZWZpbmVkLFxuXHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwOiBmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkXG5cdFx0fTtcblxuXHRcdGZ1bmN0aW9uIGdldERhdGVUaW1lUGlja2VyKGRhdGVUaW1lUGlja2VyVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRcdGxldCBkYXRlVGltZVBpY2tlcjtcblx0XHRcdHN3aXRjaCAoZGF0ZVRpbWVQaWNrZXJUeXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJEYXRlUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8RGF0ZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVBpY2tlcj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiRGF0ZVRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxEYXRlVGltZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVRpbWVQaWNrZXI+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIlRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxUaW1lUGlja2VyIHsuLi5kYXRlVGltZVBpY2tlclByb3BlcnRpZXN9PlxuXHRcdFx0XHRcdFx0XHR7eyBjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPiB9fVxuXHRcdFx0XHRcdFx0PC9UaW1lUGlja2VyPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZGF0ZVRpbWVQaWNrZXI7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGdldERhdGVUaW1lUGlja2VyKHR5cGUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIElucHV0IHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0SW5wdXRUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0ZWRpdGFibGU9e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0ZGVzY3JpcHRpb249e2ZpZWxkLnN0YXRpY0Rlc2NyaXB0aW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHR5cGU9e2ZpZWxkLmVkaXRTdHlsZSA9PT0gXCJNYXNrZWRcIiA/IFwiUGFzc3dvcmRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogRWRpdFN0eWxlLmdldExheW91dERhdGEoZmllbGQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0lucHV0PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgaWYgYSBmaWVsZCBzaGFsbCBiZSB0ZW1wbGF0ZWQgYXMgYSByYWRpbyBidXR0b24gZ3JvdXAuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgVGhlIGV2YWx1YXRpb24gcmVzdWx0XG5cdCAqL1xuXHRzaG93QXNSYWRpb0J1dHRvbihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBib29sZWFuIHtcblx0XHQvLyBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byByZW5kZXIgdGhlIGZpZWxkIGFzIGEgcmFkaW8gYnV0dG9uIGdyb3VwXG5cdFx0Ly8gVE9ETzogUmVtb3ZlIHRoZSBuZXh0IHR3byBsaW5lcyBvbmNlIFVYIHVwZGF0ZWQgdGhlIHZvY2FidWxhcnkgbW9kdWxlIGluY2x1ZGluZyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBhbm5vdGF0aW9uXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCByYWRpb0J1dHRvbkNvbmZpZ3VyZWQ6IGJvb2xlYW4gPVxuXHRcdFx0ZmllbGQucHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzICYmXG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMoZmllbGQucHJvcGVydHkpID09PSB0cnVlICYmXG5cdFx0XHQoKGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5ICYmXG5cdFx0XHRcdGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5LnZhbHVlT2YoKSA9PT1cblx0XHRcdFx0XHR0cnVlKSB8fFxuXHRcdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmZpZWxkRWRpdFN0eWxlID09PSBcIlJhZGlvQnV0dG9uc1wiKTtcblxuXHRcdC8vIEV4Y2x1ZGUgbm90IHN1cHBvcnRlZCBjYXNlc1xuXHRcdC8vIC0gVmFsdWVMaXN0UGFyYW1hdGVySW5PdXQgLyAuLi5PdXQgbXVzdCBub3QgYmUgZW1wdHlcblx0XHQvLyAtIFZhbHVlTGlzdFJlbGV2YW50UXVhbGlmaWVycyBhbm5vdGF0aW9uIG11c3Qgbm90IGJlIHVzZWRcblx0XHQvLyBGdXJ0aGVyIGNhc2VzIG1heSBub3QgbWFrZSBzZW5zZSB3aXRoIHJhZGlvIGJ1dHRvbnMgYnV0IHdlIGRvIG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGUgdGhlbSBidXQgbWVudGlvbiB0aGlzIGluIGRvY3VtZW50YXRpb24uXG5cdFx0Ly8gQ2hlY2sgZG9jdW1lbnRhdGlvbiwgZGlzY3VzcyBhbmQgZGVjaWRlIGJlZm9yZSBhZGRpbmcgZnVydGhlciByZXN0cmljdGlvbnMgaGVyZS5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyYWRpb0J1dHRvbkNvbmZpZ3VyZWQgJiZcblx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlckluT3V0ICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdCFmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIFJhZGlvQnV0dG9uIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgcmFkaW8gYnV0dG9uIGRlZmluaXRpb25cblx0ICovXG5cdGdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBmaXhlZFZhbHVlc1BhdGggPSBcIi9cIiArIGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LkNvbGxlY3Rpb25QYXRoO1xuXG5cdFx0Y29uc3QgdmFsdWVMaXN0UGFyYW1ldGVySW5PdXQgPSBmaWVsZC5wcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0Py5QYXJhbWV0ZXJzLmZpbmQoXG5cdFx0XHQodmFsdWVMaXN0UGFyYW1ldGVyKSA9PlxuXHRcdFx0XHQodmFsdWVMaXN0UGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dFwiIHx8XG5cdFx0XHRcdFx0dmFsdWVMaXN0UGFyYW1ldGVyLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJPdXRcIikgJiZcblx0XHRcdFx0dmFsdWVMaXN0UGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5LnZhbHVlID09PSBmaWVsZC5wcm9wZXJ0eS5uYW1lXG5cdFx0KTtcblxuXHRcdC8vIHdlIGtub3cgdGhhdCBhIHZhbHVlTGlzdFByb3BlcnR5IGV4aXN0cyBiZWNhdXNlIHdlIGNoZWNrIHRoaXMgYWxyZWFkeSBpbiBzaG93QXNSYWRpb0J1dHRvblxuXHRcdGNvbnN0IHZhbHVlTGlzdEtleVBhdGggPSBwYXRoSW5Nb2RlbCh2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCEuVmFsdWVMaXN0UHJvcGVydHkgYXMgc3RyaW5nKTtcblxuXHRcdGxldCB2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGg7XG5cdFx0Y29uc3QgdmFsdWVIZWxwS2V5VGV4dEFubm90YXRpb25QYXRoID1cblx0XHRcdGZpZWxkLmRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChmaXhlZFZhbHVlc1BhdGgpLmVudGl0eVR5cGUua2V5c1swXS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0Py5wYXRoO1xuXHRcdGlmICh2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlSGVscEtleVRleHRBbm5vdGF0aW9uUGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHZhbHVlTGlzdEtleVBhdGg7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxSYWRpb0J1dHRvbnNcblx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRyZXF1aXJlZEV4cHJlc3Npb249e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRmaXhlZFZhbHVlc1BhdGg9e2ZpeGVkVmFsdWVzUGF0aCBhcyB1bmtub3duIGFzIGB7JHtzdHJpbmd9fWB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkRXhwcmVzc2lvbj17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJhZGlvQnV0dG9uVGV4dFByb3BlcnR5PXt2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGh9XG5cdFx0XHRcdHJhZGlvQnV0dG9uS2V5UHJvcGVydHk9e3ZhbHVlTGlzdEtleVBhdGh9XG5cdFx0XHRcdGhvcml6b250YWxMYXlvdXQ9e2ZpZWxkLmZvcm1hdE9wdGlvbnMucmFkaW9CdXR0b25zSG9yaXpvbnRhbExheW91dH1cblx0XHRcdC8+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dFdpdGhWYWx1ZUhlbHAgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihcblx0XHRcdGZpZWxkLm1ldGFQYXRoLFxuXHRcdFx0ZmllbGQuY29udGV4dFBhdGhcblx0XHQpO1xuXG5cdFx0Y29uc3QgZGVsZWdhdGUgPSBGaWVsZEhlbHBlci5jb21wdXRlRmllbGRCYXNlRGVsZWdhdGUoXG5cdFx0XHRcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIixcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCBhcyBib29sZWFuXG5cdFx0KTtcblx0XHRjb25zdCBkaXNwbGF5ID0gVUlGb3JtYXR0ZXIuZ2V0RmllbGREaXNwbGF5KFxuXHRcdFx0ZmllbGQucHJvcGVydHksXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlIGFzIHN0cmluZyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXHRcdGNvbnN0IGhhc011bHRpbGluZUFubm90YXRpb24gPSAhIWZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ7XG5cdFx0Y29uc3QgbXVsdGlwbGVMaW5lcyA9IGdldE11bHRpcGxlTGluZXNGb3JEYXRhRmllbGQoZmllbGQsIGhhc011bHRpbGluZUFubm90YXRpb24pO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0XHRcdHRydWVcblx0XHQpO1xuXHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dChmaWVsZCBhcyB1bmtub3duIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkVHlwZXM+LCB7XG5cdFx0XHRjb250ZXh0OiBmaWVsZC5tZXRhUGF0aFxuXHRcdH0pO1xuXG5cdFx0bGV0IG9wdGlvbmFsQ29udGVudEVkaXQgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5wcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJpbmdcIiAmJiBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uKSB7XG5cdFx0XHRvcHRpb25hbENvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHQ8VGV4dEFyZWFcblx0XHRcdFx0XHR2YWx1ZT17ZmllbGQudmFsdWVCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdHJvd3M9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdH1cblx0XHRcdFx0XHRncm93aW5nPXsoZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgYXMgdW5rbm93biBhcyBudW1iZXIpID4gMCA/IHRydWUgOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0Z3Jvd2luZ01heExpbmVzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMaW5lc31cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgdW5rbm93biBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IG9wdGlvbmFsTGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID09PSB0cnVlKSB7XG5cdFx0XHRvcHRpb25hbExheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc2hvd0FzUmFkaW9CdXR0b24oZmllbGQpICE9PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPXtkZWxlZ2F0ZX1cblx0XHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9e2ZpZWxkLmVkaXRTdHlsZVBsYWNlaG9sZGVyfVxuXHRcdFx0XHRcdHZhbHVlU3RhdGU9e2ZpZWxkLnZhbHVlU3RhdGV9XG5cdFx0XHRcdFx0ZWRpdE1vZGU9e2ZpZWxkLmVkaXRNb2RlID8/IGZpZWxkLmNvbXB1dGVkRWRpdE1vZGV9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT17ZmllbGQudGV4dEJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGRpc3BsYXk9e2Rpc3BsYXl9XG5cdFx0XHRcdFx0bXVsdGlwbGVMaW5lcz17bXVsdGlwbGVMaW5lcyA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBtdWx0aXBsZUxpbmVzfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17ZmllbGQudmFsdWVIZWxwSWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0XHR0ZXh0QWxpZ249e3RleHRBbGlnbn1cblx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17ZmllbGQuYXJpYUxhYmVsbGVkQnkgYXMgdW5rbm93biBhcyBBcnJheTxDb250cm9sMSB8IHN0cmluZz59XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogb3B0aW9uYWxDb250ZW50RWRpdCxcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IG9wdGlvbmFsTGF5b3V0RGF0YSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBDaGVja0JveCB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldENoZWNrQm94VGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBpc0NoZWNrQm94R3JvdXBJdGVtID0gZmllbGQuZm9ybWF0T3B0aW9ucy5pc0ZpZWxkR3JvdXBJdGVtID09PSB0cnVlO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8Q2hlY2tCb3hcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCJcblx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRyZXF1aXJlZD17aXNDaGVja0JveEdyb3VwSXRlbSA/IGZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c2VsZWN0ZWQ9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtmaWVsZC5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHR0ZXh0PXtpc0NoZWNrQm94R3JvdXBJdGVtID8gZmllbGQubGFiZWwgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHdyYXBwaW5nPXtpc0NoZWNrQm94R3JvdXBJdGVtID8gdHJ1ZSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdHNlbGVjdD17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdDwvQ2hlY2tCb3g+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBUZXh0QXJlYSB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRleHRBcmVhVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBncm93aW5nID0gZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRjb25zdCBzaG93RXhjZWVkZWRUZXh0ID0gISFmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMZW5ndGg7XG5cblx0XHQvL3VuZm9ydHVuYXRlbHkgdGhpcyBvbmUgaXMgYSBcImRpZmZlcmVudFwiIGxheW91dERhdGEgdGhhbiB0aGUgb3RoZXJzLCB0aGVyZWZvcmUgdGhlIHJldXNlIGZ1bmN0aW9uIGZyb20gYWJvdmUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSB0ZXh0QXJlYSB0ZW1wbGF0ZVxuXHRcdGxldCBsYXlvdXREYXRhID0gXCJcIjtcblx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxUZXh0QXJlYUV4XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cm93cz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0fVxuXHRcdFx0XHRncm93aW5nPXtncm93aW5nfVxuXHRcdFx0XHRncm93aW5nTWF4TGluZXM9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzfVxuXHRcdFx0XHRjb2xzPXszMDB9IC8vQXMgdGhlIGRlZmF1bHQgaXMgMjAsIHRoZSBcImNvbHNcIiBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIHdpdGggYSB2YWx1ZSBvZiAzMDAgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHRleHRhcmVhIHdpbGwgb2NjdXB5IGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRzaG93RXhjZWVkZWRUZXh0PXtzaG93RXhjZWVkZWRUZXh0fVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogbGF5b3V0RGF0YSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UZXh0QXJlYUV4PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgUmF0aW5nSW5kaWNhdG9yIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHRvb2x0aXAgPSBmaWVsZC5yYXRpbmdJbmRpY2F0b3JUb29sdGlwIHx8IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX1JBVElOR19JTkRJQ0FUT1JfVElUTEVfTEFCRUx9XCI7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdG1heFZhbHVlPXtmaWVsZC5yYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3Rvb2x0aXB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGljb25TaXplPVwiMS4zNzVyZW1cIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiXG5cdFx0XHRcdGVkaXRhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogUmF0aW5nSW5kaWNhdG9yJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IEVkaXRTdHlsZS5nZXRMYXlvdXREYXRhKGZpZWxkKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9SYXRpbmdJbmRpY2F0b3I+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogSGVscHMgdG8gY2FsY3VsYXRlIHRoZSBjb250ZW50IGVkaXQgZnVuY3Rpb25hbGl0eSAvIHRlbXBsYXRpbmcuXG5cdCAqIEluY2x1ZGluZyBhIHdyYXBwZXIgYW4gaGJveCBpbiBjYXNlIG9mIGNvbGxhYm9yYXRpb24gbW9kZSBmaW5hbGx5XG5cdCAqIGl0IGNhbGxzIGludGVybmFsbHkgRWRpdFN0eWxlLmdldFRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0VGVtcGxhdGVXaXRoV3JhcHBlcihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZW50RWRpdDtcblxuXHRcdGlmICgoZmllbGQuZWRpdE1vZGUgPz8gZmllbGQuY29tcHV0ZWRFZGl0TW9kZSkgIT09IEZpZWxkRWRpdE1vZGUuRGlzcGxheSAmJiAhIWZpZWxkLmVkaXRTdHlsZSkge1xuXHRcdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID8/IGZhbHNlKSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHRcdDxDb2xsYWJvcmF0aW9uSEJveCB3aWR0aD1cIjEwMCVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHR7RWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKX1cblx0XHRcdFx0XHRcdHtFZGl0U3R5bGUuZ2V0Q29sbGFib3JhdGlvbkF2YXRhcihmaWVsZCl9XG5cdFx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uSEJveD5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gRWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udGVudEVkaXQgfHwgXCJcIjtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dE1hc2sgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG9wdGlvbmFsTWFza0lucHV0UnVsZXMgPSBbXTtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0ZXh0QWxpZ24gPSBnZXRUZXh0QWxpZ25tZW50KFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRpZiAoZmllbGQubWFzaz8ubWFza1J1bGUpIHtcblx0XHRcdGZvciAoY29uc3QgcnVsZSBvZiBmaWVsZC5tYXNrLm1hc2tSdWxlKSB7XG5cdFx0XHRcdG9wdGlvbmFsTWFza0lucHV0UnVsZXMucHVzaCg8TWFza0lucHV0UnVsZSBtYXNrRm9ybWF0U3ltYm9sPXtydWxlLnN5bWJvbH0gcmVnZXg9e3J1bGUucmVnZXh9IC8+KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1hc2tJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXNrPXtmaWVsZC5tYXNrPy5tYXNrfVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHBsYWNlaG9sZGVyU3ltYm9sPXtmaWVsZC5tYXNrPy5wbGFjZWhvbGRlclN5bWJvbH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlIGFzIChvRXZlbnQ6IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRydWxlczogb3B0aW9uYWxNYXNrSW5wdXRSdWxlcyxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NYXNrSW5wdXQ+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogRW50cnkgcG9pbnQgZm9yIGZ1cnRoZXIgdGVtcGxhdGluZyBwcm9jZXNzaW5ncy5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRlbXBsYXRlOiAoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0XHRsZXQgaW5uZXJGaWVsZENvbnRlbnQ7XG5cdFx0c3dpdGNoIChmaWVsZC5lZGl0U3R5bGUpIHtcblx0XHRcdGNhc2UgXCJDaGVja0JveFwiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRDaGVja0JveFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRjYXNlIFwiVGltZVBpY2tlclwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZCwgZmllbGQuZWRpdFN0eWxlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiSW5wdXRcIjoge1xuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiTWFza2VkXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0SW5wdXRUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIklucHV0V2l0aFZhbHVlSGVscFwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0V2l0aFZhbHVlSGVscFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiUmF0aW5nSW5kaWNhdG9yXCI6XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVGV4dEFyZWFcIjpcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0VGV4dEFyZWFUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIklucHV0TWFza1wiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5uZXJGaWVsZENvbnRlbnQ7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRTdHlsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBcUNBLE1BQU1BLFNBQVMsR0FBRztJQUNqQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGFBQWFBLENBQUNDLEtBQTJCLEVBQVU7TUFDbEQsSUFBSUMsVUFBVSxHQUFHLEVBQUU7TUFDbkIsSUFBSUQsS0FBSyxDQUFDRSxvQkFBb0IsRUFBRTtRQUMvQkQsVUFBVSxHQUFHRSxJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQzdDO01BQ0EsT0FBT0osVUFBVTtJQUNsQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDSyxzQkFBc0JBLENBQUNOLEtBQTJCLEVBQVU7TUFDM0QsTUFBTU8sa0NBQWtDLEdBQUdDLGlCQUFpQixDQUFDUixLQUFLLENBQUNTLHVCQUF1QixDQUFDO01BQzNGLE1BQU1DLCtCQUErQixHQUFHRixpQkFBaUIsQ0FDeERHLFdBQVcsQ0FBQ0MsMEJBQTBCLENBQUNaLEtBQUssQ0FBQ2EsYUFBYSxFQUFFQyx1QkFBdUIsQ0FBQ0MsZ0NBQWdDLENBQ3JILENBQUM7TUFDRCxNQUFNQyw0QkFBNEIsR0FBR1IsaUJBQWlCLENBQ3JERyxXQUFXLENBQUNDLDBCQUEwQixDQUFDWixLQUFLLENBQUNhLGFBQWEsRUFBRUMsdUJBQXVCLENBQUNHLDZCQUE2QixDQUNsSCxDQUFDO01BRUQsT0FDQ2QsSUFBQSxDQUFDZSxNQUFNO1FBQ04sZ0JBQWEsZ0VBQWdFO1FBQzdFQyxPQUFPLEVBQUVaLGtDQUFtQztRQUM1Q2EsUUFBUSxFQUFFViwrQkFBZ0M7UUFDMUNXLFdBQVcsRUFBQyxRQUFRO1FBQ3BCQyxpQkFBaUIsRUFBQyxRQUFRO1FBQzFCQyxjQUFjLEVBQUMsUUFBUTtRQUN2QkMsZUFBZSxFQUFFUiw0QkFBNkI7UUFDOUNTLEtBQUssRUFBRXpCLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ0MseUJBQThFO1FBQUFDLFFBQUEsRUFFeEc7VUFDQUMsVUFBVSxFQUFFMUIsSUFBQSxDQUFDMkIsaUJBQWlCO1lBQUNDLGtCQUFrQixFQUFFO1VBQUssQ0FBRTtRQUMzRDtNQUFDLENBQ00sQ0FBQztJQUVYLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0Msd0JBQXdCQSxDQUFDaEMsS0FBMkIsRUFBRWlDLElBQW9ELEVBQVU7TUFDbkgsTUFBTUMsbUJBQW1CLEdBQUdDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBaUJwQyxLQUFLLENBQUNxQyxRQUFRLEVBQUVyQyxLQUFLLENBQUNzQyxXQUFXLENBQUM7TUFDN0gsTUFBTUMsU0FBUyxHQUFHQyxnQkFBZ0IsQ0FDakNOLG1CQUFtQixFQUNuQmxDLEtBQUssQ0FBQ3lDLGFBQWEsRUFDbkJ6QyxLQUFLLENBQUMwQyxnQkFDUCxDQUFDO01BRUQsTUFBTUMsd0JBQXdCLEdBQUc7UUFDaEMsY0FBYyxFQUFFLGdDQUFnQztRQUNoREMsRUFBRSxFQUFFNUMsS0FBSyxDQUFDNkMsV0FBVztRQUNyQkMsS0FBSyxFQUFFLE1BQU07UUFDYkMsUUFBUSxFQUFFL0MsS0FBSyxDQUFDZ0Qsa0JBQWtCO1FBQ2xDQyxPQUFPLEVBQUVqRCxLQUFLLENBQUNrRCxpQkFBaUI7UUFDaENDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ29ELGtCQUFrQjtRQUNsQ2IsU0FBUyxFQUFFQSxTQUFTO1FBQ3BCYyxjQUFjLEVBQUVyRCxLQUFLLENBQUNxRCxjQUFvRDtRQUMxRUMsS0FBSyxFQUFFdEQsS0FBSyxDQUFDdUQsc0JBQXNCO1FBQ25DQyxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RCxhQUFhO1FBQ2xDQyxZQUFZLEVBQUV6RCxLQUFLLENBQUN5RCxZQUFZO1FBQ2hDQyxPQUFPLEVBQUV6QixJQUFJLEtBQUssZ0JBQWdCLElBQUlBLElBQUksS0FBSyxZQUFZLEdBQUdqQyxLQUFLLENBQUMyRCxpQkFBaUIsR0FBR0MsU0FBUztRQUNqR0MsT0FBTyxFQUFFNUIsSUFBSSxLQUFLLGdCQUFnQixJQUFJQSxJQUFJLEtBQUssWUFBWSxHQUFHakMsS0FBSyxDQUFDOEQsaUJBQWlCLEdBQUdGLFNBQVM7UUFDakdHLE1BQU0sRUFDTDlCLElBQUksS0FBSyxnQkFBZ0IsR0FDcEJqQyxLQUFLLENBQUMrRCxNQUFNLElBQUkvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUFNLEdBQzNDL0QsS0FBSyxDQUFDMEIsYUFBYSxDQUFDcUMsTUFBNkQ7UUFDdEZDLFVBQVUsRUFBRWhFLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ3NDLFVBQVU7UUFDMUNDLFdBQVcsRUFBRWhDLElBQUksS0FBSyxZQUFZLEdBQUcsUUFBUSxHQUFHMkIsU0FBUztRQUN6RE0sa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QztNQUN6QyxDQUFDO01BRUQsU0FBU0MsaUJBQWlCQSxDQUFDQyxrQkFBMEIsRUFBVTtRQUM5RCxJQUFJQyxjQUFjO1FBQ2xCLFFBQVFELGtCQUFrQjtVQUN6QixLQUFLLFlBQVk7WUFDaEJDLGNBQWMsR0FDYmxFLElBQUEsQ0FBQ21FLFVBQVU7Y0FBQSxHQUFLM0Isd0JBQXdCO2NBQUFmLFFBQUEsRUFDdEM7Z0JBQUUyQyxVQUFVLEVBQUVwRSxJQUFBLENBQUNxRSxVQUFVO2tCQUFrQmxCLEtBQUssRUFBRXRELEtBQUssQ0FBQ3lFO2dCQUFlLEdBQXpDLFlBQTJDO2NBQUU7WUFBQyxDQUNsRSxDQUNaO1lBQ0Q7VUFDRCxLQUFLLGdCQUFnQjtZQUNwQkosY0FBYyxHQUNibEUsSUFBQSxDQUFDdUUsY0FBYztjQUFBLEdBQUsvQix3QkFBd0I7Y0FBQWYsUUFBQSxFQUMxQztnQkFBRTJDLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7a0JBQWtCbEIsS0FBSyxFQUFFdEQsS0FBSyxDQUFDeUU7Z0JBQWUsR0FBekMsWUFBMkM7Y0FBRTtZQUFDLENBQzlELENBQ2hCO1lBQ0Q7VUFDRCxLQUFLLFlBQVk7WUFDaEJKLGNBQWMsR0FDYmxFLElBQUEsQ0FBQ3dFLFVBQVU7Y0FBQSxHQUFLaEMsd0JBQXdCO2NBQUFmLFFBQUEsRUFDdEM7Z0JBQUUyQyxVQUFVLEVBQUVwRSxJQUFBLENBQUNxRSxVQUFVO2tCQUFrQmxCLEtBQUssRUFBRXRELEtBQUssQ0FBQ3lFO2dCQUFlLEdBQXpDLFlBQTJDO2NBQUU7WUFBQyxDQUNsRSxDQUNaO1lBQ0Q7UUFDRjtRQUNBLE9BQU9KLGNBQWM7TUFDdEI7TUFFQSxPQUFPRixpQkFBaUIsQ0FBQ2xDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDMkMsZ0JBQWdCQSxDQUFDNUUsS0FBMkIsRUFBVTtNQUNyRCxNQUFNa0MsbUJBQW1CLEdBQUdDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBaUJwQyxLQUFLLENBQUNxQyxRQUFRLEVBQUVyQyxLQUFLLENBQUNzQyxXQUFXLENBQUM7TUFFN0gsTUFBTUMsU0FBUyxHQUFHQyxnQkFBZ0IsQ0FDakNOLG1CQUFtQixFQUNuQmxDLEtBQUssQ0FBQ3lDLGFBQWEsRUFDbkJ6QyxLQUFLLENBQUMwQyxnQkFDUCxDQUFDO01BRUQsT0FDQ3ZDLElBQUEsQ0FBQzBFLEtBQUs7UUFDTCxnQkFBYSxnQ0FBZ0M7UUFDN0NqQyxFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1FBQ3RCUyxLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7UUFDcEN1QixXQUFXLEVBQUU5RSxLQUFLLENBQUMrRSxvQkFBcUI7UUFDeENqQyxLQUFLLEVBQUMsTUFBTTtRQUNaQyxRQUFRLEVBQUUvQyxLQUFLLENBQUNnRCxrQkFBbUI7UUFDbkNnQyxXQUFXLEVBQUVoRixLQUFLLENBQUNpRixpQkFBa0I7UUFDckNoQyxPQUFPLEVBQUVqRCxLQUFLLENBQUNrRCxpQkFBa0I7UUFDakNDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ29ELGtCQUFtQjtRQUNuQ0ksYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0QsYUFBYztRQUNuQ2pCLFNBQVMsRUFBRUEsU0FBVTtRQUNyQk4sSUFBSSxFQUFFakMsS0FBSyxDQUFDa0YsU0FBUyxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUd0QixTQUFVO1FBQzVEUCxjQUFjLEVBQUVyRCxLQUFLLENBQUNxRCxjQUFxRDtRQUMzRThCLFNBQVMsRUFBRW5GLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzJDLGFBQWM7UUFDN0NyQixNQUFNLEVBQUUvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUFrRDtRQUM5RUMsVUFBVSxFQUFFaEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDc0MsVUFBVztRQUMzQ0Usa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7UUFBQXRDLFFBQUEsRUFFL0c7VUFDQTNCLFVBQVUsRUFBRUgsU0FBUyxDQUFDQyxhQUFhLENBQUNDLEtBQUssQ0FBQztVQUMxQ3VFLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7WUFBa0JsQixLQUFLLEVBQUV0RCxLQUFLLENBQUN5RTtVQUFlLEdBQXpDLFlBQTJDO1FBQ3hFO01BQUMsQ0FDSyxDQUFDO0lBRVYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ1ksaUJBQWlCQSxDQUFDckYsS0FBMkIsRUFBVztNQUN2RDtNQUNBO01BQ0E7TUFDQTtNQUNBLE1BQU1zRixxQkFBOEIsR0FDbkN0RixLQUFLLENBQUN1RixRQUFRLENBQUNDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyx3QkFBd0IsSUFDNURDLDJCQUEyQixDQUFDM0YsS0FBSyxDQUFDdUYsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUNsRHZGLEtBQUssQ0FBQ3VGLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDQyxNQUFNLENBQUNDLHdCQUF3QixDQUFDRixXQUFXLEVBQUVDLE1BQU0sRUFBRUcsOEJBQThCLElBQy9HNUYsS0FBSyxDQUFDdUYsUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sQ0FBQ0Msd0JBQXdCLENBQUNGLFdBQVcsRUFBRUMsTUFBTSxFQUFFRyw4QkFBOEIsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsS0FDdkgsSUFBSSxJQUNMN0YsS0FBSyxDQUFDeUMsYUFBYSxDQUFDcUQsY0FBYyxLQUFLLGNBQWMsQ0FBQzs7TUFFeEQ7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLE1BQU1DLHVCQUF1QixHQUFHL0YsS0FBSyxDQUFDdUYsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRU8sU0FBUyxFQUFFQyxVQUFVLENBQUNDLElBQUksQ0FDN0ZDLGtCQUFrQixJQUNsQixDQUFDQSxrQkFBa0IsQ0FBQ0MsS0FBSyxLQUFLLHdEQUF3RCxJQUNyRkQsa0JBQWtCLENBQUNDLEtBQUssS0FBSyxzREFBc0QsS0FDcEZELGtCQUFrQixDQUFDRSxpQkFBaUIsQ0FBQy9DLEtBQUssS0FBS3RELEtBQUssQ0FBQ3VGLFFBQVEsQ0FBQ2UsSUFDaEUsQ0FBQztNQUNELE9BQ0NoQixxQkFBcUIsSUFDckJTLHVCQUF1QixLQUFLbkMsU0FBUyxJQUNyQyxDQUFDNUQsS0FBSyxDQUFDdUYsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLE1BQU0sRUFBRWMsMkJBQTJCO0lBRWxFLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLHNCQUFzQkEsQ0FBQ3hHLEtBQTJCLEVBQVU7TUFDM0QsTUFBTXlHLGVBQWUsR0FBRyxHQUFHLEdBQUd6RyxLQUFLLENBQUN1RixRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFTyxTQUFTLEVBQUVVLGNBQWM7TUFFNUYsTUFBTVgsdUJBQXVCLEdBQUcvRixLQUFLLENBQUN1RixRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFTyxTQUFTLEVBQUVDLFVBQVUsQ0FBQ0MsSUFBSSxDQUM3RkMsa0JBQWtCLElBQ2xCLENBQUNBLGtCQUFrQixDQUFDQyxLQUFLLEtBQUssd0RBQXdELElBQ3JGRCxrQkFBa0IsQ0FBQ0MsS0FBSyxLQUFLLHNEQUFzRCxLQUNwRkQsa0JBQWtCLENBQUNFLGlCQUFpQixDQUFDL0MsS0FBSyxLQUFLdEQsS0FBSyxDQUFDdUYsUUFBUSxDQUFDZSxJQUNoRSxDQUFDOztNQUVEO01BQ0EsTUFBTUssZ0JBQWdCLEdBQUdDLFdBQVcsQ0FBQ2IsdUJBQXVCLENBQUVjLGlCQUEyQixDQUFDO01BRTFGLElBQUlDLHdCQUF3QjtNQUM1QixNQUFNQyw4QkFBOEIsR0FDbkMvRyxLQUFLLENBQUNhLGFBQWEsQ0FBQ21HLGdCQUFnQixDQUFDQyxXQUFXLENBQUNSLGVBQWUsQ0FBQyxDQUFDUyxVQUFVLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzNCLFdBQVcsRUFBRUMsTUFBTSxFQUFFMkIsSUFBSSxFQUFFQyxJQUFJO01BQ3JILElBQUlOLDhCQUE4QixFQUFFO1FBQ25DRCx3QkFBd0IsR0FBR0YsV0FBVyxDQUFDRyw4QkFBOEIsQ0FBQztNQUN2RSxDQUFDLE1BQU07UUFDTkQsd0JBQXdCLEdBQUdILGdCQUFnQjtNQUM1QztNQUVBLE9BQ0N4RyxJQUFBLENBQUNtSCxZQUFZO1FBQ1oxRSxFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1FBQ3RCTyxrQkFBa0IsRUFBRXBELEtBQUssQ0FBQ29ELGtCQUFtQjtRQUM3Q2Msa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7UUFDaEh1QyxlQUFlLEVBQUVBLGVBQTRDO1FBQzdEakQsYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0QsYUFBYztRQUNuQ0YsS0FBSyxFQUFFdEQsS0FBSyxDQUFDdUQsc0JBQXVCO1FBQ3BDTCxpQkFBaUIsRUFBRWxELEtBQUssQ0FBQ2tELGlCQUFrQjtRQUMzQ3FFLHVCQUF1QixFQUFFVCx3QkFBeUI7UUFDbERVLHNCQUFzQixFQUFFYixnQkFBaUI7UUFDekNjLGdCQUFnQixFQUFFekgsS0FBSyxDQUFDeUMsYUFBYSxDQUFDaUY7TUFBNkIsQ0FDbkUsQ0FBQztJQUVKLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLDZCQUE2QkEsQ0FBQzNILEtBQTJCLEVBQVU7TUFDbEUsTUFBTTRILDRCQUE0QixHQUFHekYsa0JBQWtCLENBQUNDLDJCQUEyQixDQUNsRnBDLEtBQUssQ0FBQ3FDLFFBQVEsRUFDZHJDLEtBQUssQ0FBQ3NDLFdBQ1AsQ0FBQztNQUVELE1BQU11RixRQUFRLEdBQUdDLFdBQVcsQ0FBQ0Msd0JBQXdCLENBQ3BELHVDQUF1QyxFQUN2Qy9ILEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQ3VGLHlCQUNyQixDQUFDO01BQ0QsTUFBTUMsT0FBTyxHQUFHdEgsV0FBVyxDQUFDdUgsZUFBZSxDQUMxQ2xJLEtBQUssQ0FBQ3VGLFFBQVEsRUFDZHZGLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzBGLFdBQVcsRUFDL0JuSSxLQUFLLENBQUMwQyxnQkFDUCxDQUFDO01BQ0QsTUFBTTBGLHNCQUFzQixHQUFHLENBQUMsQ0FBQ3BJLEtBQUssQ0FBQ3VGLFFBQVEsRUFBRUMsV0FBVyxFQUFFNkMsRUFBRSxFQUFFQyxhQUFhO01BQy9FLE1BQU1DLGFBQWEsR0FBR0MsNEJBQTRCLENBQUN4SSxLQUFLLEVBQUVvSSxzQkFBc0IsQ0FBQztNQUVqRixNQUFNN0YsU0FBUyxHQUFHQyxnQkFBZ0IsQ0FDakNvRiw0QkFBNEIsRUFDNUI1SCxLQUFLLENBQUN5QyxhQUFhLEVBQ25CekMsS0FBSyxDQUFDMEMsZ0JBQWdCLEVBQ3RCLElBQ0QsQ0FBQztNQUNELE1BQU0rRixLQUFLLEdBQUdYLFdBQVcsQ0FBQ1ksZ0JBQWdCLENBQUMxSSxLQUFLLEVBQThDO1FBQzdGMkksT0FBTyxFQUFFM0ksS0FBSyxDQUFDcUM7TUFDaEIsQ0FBQyxDQUFDO01BRUYsSUFBSXVHLG1CQUFtQixHQUFHLEVBQUU7TUFDNUIsSUFBSTVJLEtBQUssQ0FBQ3VGLFFBQVEsQ0FBQ3RELElBQUksS0FBSyxZQUFZLElBQUltRyxzQkFBc0IsRUFBRTtRQUNuRVEsbUJBQW1CLEdBQ2xCekksSUFBQSxDQUFDMEksUUFBUTtVQUNSdkYsS0FBSyxFQUFFdEQsS0FBSyxDQUFDdUQsc0JBQXVCO1VBQ3BDSixRQUFRLEVBQUVuRCxLQUFLLENBQUNvRCxrQkFBbUI7VUFDbkMwRixJQUFJLEVBQUU5SSxLQUFLLENBQUN5QyxhQUFhLENBQUNzRyxhQUFjO1VBQ3hDQyxPQUFPLEVBQUdoSixLQUFLLENBQUN5QyxhQUFhLENBQUN3RyxZQUFZLEdBQXlCLENBQUMsR0FBRyxJQUFJLEdBQUdyRixTQUFVO1VBQ3hGc0YsZUFBZSxFQUFFbEosS0FBSyxDQUFDeUMsYUFBYSxDQUFDd0csWUFBYTtVQUNsRG5HLEtBQUssRUFBQyxNQUFNO1VBQ1ppQixNQUFNLEVBQUUvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUE2RDtVQUN6RlAsYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0Q7UUFBYyxDQUNuQyxDQUNEO01BQ0Y7TUFFQSxJQUFJMkYsa0JBQWtCLEdBQUcsRUFBRTtNQUMzQixJQUFJbkosS0FBSyxDQUFDRSxvQkFBb0IsS0FBSyxJQUFJLEVBQUU7UUFDeENpSixrQkFBa0IsR0FBR2hKLElBQUEsQ0FBQ0MsWUFBWTtVQUFDQyxVQUFVLEVBQUM7UUFBRyxDQUFFLENBQUM7TUFDckQ7TUFFQSxJQUFJLElBQUksQ0FBQ2dGLGlCQUFpQixDQUFDckYsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzNDLE9BQ0NHLElBQUEsQ0FBQ2lKLEtBQUs7VUFDTCxnQkFBYSxnQ0FBZ0M7VUFDN0N2QixRQUFRLEVBQUVBLFFBQVM7VUFDbkJqRixFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1VBQ3RCUyxLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7VUFDcEN1QixXQUFXLEVBQUU5RSxLQUFLLENBQUMrRSxvQkFBcUI7VUFDeENzRSxVQUFVLEVBQUVySixLQUFLLENBQUNxSixVQUFXO1VBQzdCQyxRQUFRLEVBQUV0SixLQUFLLENBQUNzSixRQUFRLElBQUl0SixLQUFLLENBQUN1SixnQkFBaUI7VUFDbkR6RyxLQUFLLEVBQUMsTUFBTTtVQUNaSyxRQUFRLEVBQUVuRCxLQUFLLENBQUNvRCxrQkFBbUI7VUFDbkNvRyxlQUFlLEVBQUV4SixLQUFLLENBQUN5SixxQkFBc0I7VUFDN0N4QixPQUFPLEVBQUVBLE9BQVE7VUFDakJNLGFBQWEsRUFBRUEsYUFBYSxLQUFLLEtBQUssR0FBRzNFLFNBQVMsR0FBRzJFLGFBQWM7VUFDbkVtQixTQUFTLEVBQUUxSixLQUFLLENBQUMySixXQUFZO1VBQzdCbkcsYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0QsYUFBYztVQUNuQ2pCLFNBQVMsRUFBRUEsU0FBVTtVQUNyQmMsY0FBYyxFQUFFckQsS0FBSyxDQUFDcUQsY0FBc0Q7VUFDNUVvRixLQUFLLEVBQUVBLEtBQU07VUFDYjFFLE1BQU0sRUFBRS9ELEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ3FDLE1BQThDO1VBQzFFQyxVQUFVLEVBQUVoRSxLQUFLLENBQUMwQixhQUFhLENBQUNzQyxVQUFXO1VBQzNDRSxrQkFBa0IsRUFBRWxFLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ3dDLGtCQUF3RTtVQUFBdEMsUUFBQSxFQUUvRztZQUNBZ0ksV0FBVyxFQUFFaEIsbUJBQW1CO1lBQ2hDM0ksVUFBVSxFQUFFa0osa0JBQWtCO1lBQzlCNUUsVUFBVSxFQUFFcEUsSUFBQSxDQUFDcUUsVUFBVTtjQUFrQmxCLEtBQUssRUFBRXRELEtBQUssQ0FBQ3lFO1lBQWUsR0FBekMsWUFBMkM7VUFDeEU7UUFBQyxDQUNLLENBQUM7TUFFVixDQUFDLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQytCLHNCQUFzQixDQUFDeEcsS0FBSyxDQUFDO01BQzFDO0lBQ0QsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQzZKLG1CQUFtQkEsQ0FBQzdKLEtBQTJCLEVBQVU7TUFDeEQsTUFBTThKLG1CQUFtQixHQUFHOUosS0FBSyxDQUFDeUMsYUFBYSxDQUFDc0gsZ0JBQWdCLEtBQUssSUFBSTtNQUN6RSxPQUNDNUosSUFBQSxDQUFDNkosUUFBUTtRQUNSLGdCQUFhLGdDQUFnQztRQUM3Q3BILEVBQUUsRUFBRTVDLEtBQUssQ0FBQzZDLFdBQVk7UUFDdEJNLFFBQVEsRUFBRTJHLG1CQUFtQixHQUFHOUosS0FBSyxDQUFDb0Qsa0JBQWtCLEdBQUdRLFNBQVU7UUFDckVxRyxRQUFRLEVBQUVqSyxLQUFLLENBQUN1RCxzQkFBdUI7UUFDdkNSLFFBQVEsRUFBRS9DLEtBQUssQ0FBQ2dELGtCQUFtQjtRQUNuQ0MsT0FBTyxFQUFFakQsS0FBSyxDQUFDa0QsaUJBQWtCO1FBQ2pDTSxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RCxhQUFjO1FBQ25DMEcsSUFBSSxFQUFFSixtQkFBbUIsR0FBRzlKLEtBQUssQ0FBQ3lJLEtBQUssR0FBRzdFLFNBQVU7UUFDcER1RyxRQUFRLEVBQUVMLG1CQUFtQixHQUFHLElBQUksR0FBR2xHLFNBQVU7UUFDakRQLGNBQWMsRUFBRXJELEtBQUssQ0FBQ3FELGNBQXFEO1FBQzNFK0csTUFBTSxFQUFFcEssS0FBSyxDQUFDMEIsYUFBYSxDQUFDcUMsTUFBaUQ7UUFDN0VHLGtCQUFrQixFQUFFbEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDd0Msa0JBQXdFO1FBQUF0QyxRQUFBLEVBRS9HO1VBQUUyQyxVQUFVLEVBQUVwRSxJQUFBLENBQUNxRSxVQUFVO1lBQWtCbEIsS0FBSyxFQUFFdEQsS0FBSyxDQUFDeUU7VUFBZSxHQUF6QyxZQUEyQztRQUFFO01BQUMsQ0FDcEUsQ0FBQztJQUViLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0M0RixtQkFBbUJBLENBQUNySyxLQUEyQixFQUFVO01BQ3hELE1BQU1nSixPQUFPLEdBQUdoSixLQUFLLENBQUN5QyxhQUFhLENBQUN3RyxZQUFZLEdBQUcsSUFBSSxHQUFHLEtBQUs7TUFFL0QsTUFBTXFCLGdCQUFnQixHQUFHLENBQUMsQ0FBQ3RLLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzJDLGFBQWE7O01BRTVEO01BQ0EsSUFBSW5GLFVBQVUsR0FBRyxFQUFFO01BQ25CLElBQUlELEtBQUssQ0FBQ0Usb0JBQW9CLEVBQUU7UUFDL0JELFVBQVUsR0FBR0UsSUFBQSxDQUFDQyxZQUFZO1VBQUNDLFVBQVUsRUFBQztRQUFHLENBQUUsQ0FBQztNQUM3QztNQUVBLE9BQ0NGLElBQUEsQ0FBQ29LLFVBQVU7UUFDVixnQkFBYSxnQ0FBZ0M7UUFDN0MzSCxFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1FBQ3RCUyxLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7UUFDcEN1QixXQUFXLEVBQUU5RSxLQUFLLENBQUMrRSxvQkFBcUI7UUFDeEM1QixRQUFRLEVBQUVuRCxLQUFLLENBQUNvRCxrQkFBbUI7UUFDbkMwRixJQUFJLEVBQUU5SSxLQUFLLENBQUN5QyxhQUFhLENBQUNzRyxhQUFjO1FBQ3hDQyxPQUFPLEVBQUVBLE9BQVE7UUFDakJFLGVBQWUsRUFBRWxKLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQ3dHLFlBQWE7UUFDbER1QixJQUFJLEVBQUUsR0FBSSxDQUFDO1FBQUE7UUFDWDFILEtBQUssRUFBQyxNQUFNO1FBQ1pDLFFBQVEsRUFBRS9DLEtBQUssQ0FBQ2dELGtCQUFtQjtRQUNuQ0MsT0FBTyxFQUFFakQsS0FBSyxDQUFDa0QsaUJBQWtCO1FBQ2pDTSxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RCxhQUFjO1FBQ25DSCxjQUFjLEVBQUVyRCxLQUFLLENBQUNxRCxjQUFxRDtRQUMzRThCLFNBQVMsRUFBRW5GLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzJDLGFBQWM7UUFDN0NrRixnQkFBZ0IsRUFBRUEsZ0JBQWlCO1FBQ25DdkcsTUFBTSxFQUFFL0QsS0FBSyxDQUFDMEIsYUFBYSxDQUFDcUMsTUFBa0Q7UUFDOUVDLFVBQVUsRUFBRWhFLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ3NDLFVBQVc7UUFDM0NFLGtCQUFrQixFQUFFbEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDd0Msa0JBQXdFO1FBQUF0QyxRQUFBLEVBRS9HO1VBQ0EzQixVQUFVLEVBQUVBLFVBQVU7VUFDdEJzRSxVQUFVLEVBQUVwRSxJQUFBLENBQUNxRSxVQUFVO1lBQWtCbEIsS0FBSyxFQUFFdEQsS0FBSyxDQUFDeUU7VUFBZSxHQUF6QyxZQUEyQztRQUN4RTtNQUFDLENBQ1UsQ0FBQztJQUVmLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NnRywwQkFBMEIsRUFBR3pLLEtBQTJCLElBQWE7TUFDcEUsTUFBTTBLLE9BQU8sR0FBRzFLLEtBQUssQ0FBQzJLLHNCQUFzQixJQUFJLHFEQUFxRDtNQUVyRyxPQUNDeEssSUFBQSxDQUFDeUssZUFBZTtRQUNmLGdCQUFhLGdDQUFnQztRQUM3Q2hJLEVBQUUsRUFBRTVDLEtBQUssQ0FBQzZDLFdBQVk7UUFDdEJnSSxRQUFRLEVBQUU3SyxLQUFLLENBQUM4SywwQkFBMkI7UUFDM0N4SCxLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7UUFDcENtSCxPQUFPLEVBQUVBLE9BQVE7UUFDakJsSCxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RCxhQUFjO1FBQ25DdUgsUUFBUSxFQUFDLFVBQVU7UUFDbkJDLEtBQUssRUFBQywwQkFBMEI7UUFDaENqSSxRQUFRLEVBQUMsTUFBTTtRQUNmZ0IsTUFBTSxFQUFFL0QsS0FBSyxDQUFDMEIsYUFBYSxDQUFDcUMsTUFBd0Q7UUFBQW5DLFFBQUEsRUFFbkY7VUFDQTNCLFVBQVUsRUFBRUgsU0FBUyxDQUFDQyxhQUFhLENBQUNDLEtBQUs7UUFDMUM7TUFBQyxDQUNlLENBQUM7SUFFcEIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NpTCxzQkFBc0JBLENBQUNqTCxLQUEyQixFQUFVO01BQzNELElBQUk0SixXQUFXO01BRWYsSUFBSSxDQUFDNUosS0FBSyxDQUFDc0osUUFBUSxJQUFJdEosS0FBSyxDQUFDdUosZ0JBQWdCLE1BQU0yQixhQUFhLENBQUNDLE9BQU8sSUFBSSxDQUFDLENBQUNuTCxLQUFLLENBQUNrRixTQUFTLEVBQUU7UUFDOUYsSUFBSWxGLEtBQUssQ0FBQ0Usb0JBQW9CLElBQUksS0FBSyxFQUFFO1VBQ3hDMEosV0FBVyxHQUNWd0IsS0FBQSxDQUFDQyxpQkFBaUI7WUFBQ3ZJLEtBQUssRUFBQyxNQUFNO1lBQUN3SSxVQUFVLEVBQUMsS0FBSztZQUFBMUosUUFBQSxHQUM5QzlCLFNBQVMsQ0FBQ3lMLFdBQVcsQ0FBQ3ZMLEtBQUssQ0FBQyxFQUM1QkYsU0FBUyxDQUFDUSxzQkFBc0IsQ0FBQ04sS0FBSyxDQUFDO1VBQUEsQ0FDdEIsQ0FDbkI7UUFDRixDQUFDLE1BQU07VUFDTjRKLFdBQVcsR0FBRzlKLFNBQVMsQ0FBQ3lMLFdBQVcsQ0FBQ3ZMLEtBQUssQ0FBQztRQUMzQztNQUNEO01BRUEsT0FBTzRKLFdBQVcsSUFBSSxFQUFFO0lBQ3pCLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0M0QixvQkFBb0JBLENBQUN4TCxLQUEyQixFQUFVO01BQ3pELE1BQU15TCxzQkFBc0IsR0FBRyxFQUFFO01BQ2pDLE1BQU12SixtQkFBbUIsR0FBR0Msa0JBQWtCLENBQUNDLDJCQUEyQixDQUFpQnBDLEtBQUssQ0FBQ3FDLFFBQVEsRUFBRXJDLEtBQUssQ0FBQ3NDLFdBQVcsQ0FBQztNQUM3SCxNQUFNQyxTQUFTLEdBQUdDLGdCQUFnQixDQUNqQ04sbUJBQW1CLEVBQ25CbEMsS0FBSyxDQUFDeUMsYUFBYSxFQUNuQnpDLEtBQUssQ0FBQzBDLGdCQUNQLENBQUM7TUFDRCxJQUFJMUMsS0FBSyxDQUFDMEwsSUFBSSxFQUFFQyxRQUFRLEVBQUU7UUFDekIsS0FBSyxNQUFNQyxJQUFJLElBQUk1TCxLQUFLLENBQUMwTCxJQUFJLENBQUNDLFFBQVEsRUFBRTtVQUN2Q0Ysc0JBQXNCLENBQUNJLElBQUksQ0FBQzFMLElBQUEsQ0FBQzJMLGFBQWE7WUFBQ0MsZ0JBQWdCLEVBQUVILElBQUksQ0FBQ0ksTUFBTztZQUFDQyxLQUFLLEVBQUVMLElBQUksQ0FBQ0s7VUFBTSxDQUFFLENBQUMsQ0FBQztRQUNqRztNQUNEO01BRUEsT0FDQzlMLElBQUEsQ0FBQytMLFNBQVM7UUFDVCxnQkFBYSxnQ0FBZ0M7UUFDN0N0SixFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1FBQ3RCUyxLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7UUFDcEN1QixXQUFXLEVBQUU5RSxLQUFLLENBQUMrRSxvQkFBcUI7UUFDeENqQyxLQUFLLEVBQUMsTUFBTTtRQUNaQyxRQUFRLEVBQUUvQyxLQUFLLENBQUNnRCxrQkFBbUI7UUFDbkNLLGNBQWMsRUFBRXJELEtBQUssQ0FBQ3FELGNBQXFEO1FBQzNFcUksSUFBSSxFQUFFMUwsS0FBSyxDQUFDMEwsSUFBSSxFQUFFQSxJQUFLO1FBQ3ZCekksT0FBTyxFQUFFakQsS0FBSyxDQUFDa0QsaUJBQWtCO1FBQ2pDQyxRQUFRLEVBQUVuRCxLQUFLLENBQUNvRCxrQkFBbUI7UUFDbkNJLGFBQWEsRUFBRXhELEtBQUssQ0FBQ3dELGFBQWM7UUFDbkNqQixTQUFTLEVBQUVBLFNBQVU7UUFDckI0SixpQkFBaUIsRUFBRW5NLEtBQUssQ0FBQzBMLElBQUksRUFBRVMsaUJBQWtCO1FBQ2pEbkksVUFBVSxFQUFFaEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDc0MsVUFBMEQ7UUFDMUZFLGtCQUFrQixFQUFFbEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDd0Msa0JBQXdFO1FBQUF0QyxRQUFBLEVBRS9HO1VBQ0F3SyxLQUFLLEVBQUVYLHNCQUFzQjtVQUM3QmxILFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7WUFBa0JsQixLQUFLLEVBQUV0RCxLQUFLLENBQUN5RTtVQUFlLEdBQXpDLFlBQTJDO1FBQ3hFO01BQUMsQ0FDUyxDQUFDO0lBRWQsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQzhHLFdBQVcsRUFBR3ZMLEtBQTJCLElBQXlCO01BQ2pFLElBQUlxTSxpQkFBaUI7TUFDckIsUUFBUXJNLEtBQUssQ0FBQ2tGLFNBQVM7UUFDdEIsS0FBSyxVQUFVO1VBQ2RtSCxpQkFBaUIsR0FBR3ZNLFNBQVMsQ0FBQytKLG1CQUFtQixDQUFDN0osS0FBSyxDQUFDO1VBQ3hEO1FBQ0QsS0FBSyxZQUFZO1FBQ2pCLEtBQUssZ0JBQWdCO1FBQ3JCLEtBQUssWUFBWTtVQUFFO1lBQ2xCcU0saUJBQWlCLEdBQUd2TSxTQUFTLENBQUNrQyx3QkFBd0IsQ0FBQ2hDLEtBQUssRUFBRUEsS0FBSyxDQUFDa0YsU0FBUyxDQUFDO1lBQzlFO1VBQ0Q7UUFDQSxLQUFLLE9BQU87VUFBRTtZQUNibUgsaUJBQWlCLEdBQUd2TSxTQUFTLENBQUM4RSxnQkFBZ0IsQ0FBQzVFLEtBQUssQ0FBQztZQUNyRDtVQUNEO1FBQ0EsS0FBSyxRQUFRO1VBQUU7WUFDZHFNLGlCQUFpQixHQUFHdk0sU0FBUyxDQUFDOEUsZ0JBQWdCLENBQUM1RSxLQUFLLENBQUM7WUFDckQ7VUFDRDtRQUNBLEtBQUssb0JBQW9CO1VBQUU7WUFDMUJxTSxpQkFBaUIsR0FBR3ZNLFNBQVMsQ0FBQzZILDZCQUE2QixDQUFDM0gsS0FBSyxDQUFDO1lBQ2xFO1VBQ0Q7UUFDQSxLQUFLLGlCQUFpQjtVQUNyQnFNLGlCQUFpQixHQUFHdk0sU0FBUyxDQUFDMkssMEJBQTBCLENBQUN6SyxLQUFLLENBQUM7VUFDL0Q7UUFDRCxLQUFLLFVBQVU7VUFDZHFNLGlCQUFpQixHQUFHdk0sU0FBUyxDQUFDdUssbUJBQW1CLENBQUNySyxLQUFLLENBQUM7VUFDeEQ7UUFDRCxLQUFLLFdBQVc7VUFDZnFNLGlCQUFpQixHQUFHdk0sU0FBUyxDQUFDMEwsb0JBQW9CLENBQUN4TCxLQUFLLENBQUM7VUFDekQ7UUFDRDtNQUNEO01BRUEsT0FBT3FNLGlCQUFpQjtJQUN6QjtFQUNELENBQUM7RUFBQyxPQUVhdk0sU0FBUztBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
496
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0U3R5bGUiLCJnZXRMYXlvdXREYXRhIiwiZmllbGQiLCJsYXlvdXREYXRhIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJfanN4IiwiRmxleEl0ZW1EYXRhIiwiZ3Jvd0ZhY3RvciIsImdldENvbGxhYm9yYXRpb25BdmF0YXIiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJVSUZvcm1hdHRlciIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsUGF0aCIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJBdmF0YXIiLCJ2aXNpYmxlIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsImV2ZW50SGFuZGxlcnMiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiY2hpbGRyZW4iLCJkZXBlbmRlbnRzIiwiRXZlbnREZWxlZ2F0ZUhvb2siLCJzdG9wVGFwUHJvcGFnYXRpb24iLCJnZXREYXRlVGltZVBpY2tlckdlbmVyaWMiLCJ0eXBlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0ZXh0QWxpZ24iLCJnZXRUZXh0QWxpZ25tZW50IiwiZm9ybWF0T3B0aW9ucyIsImVkaXRNb2RlQXNPYmplY3QiLCJkYXRlVGltZVBpY2tlclByb3BlcnRpZXMiLCJpZCIsImVkaXRTdHlsZUlkIiwid2lkdGgiLCJlZGl0YWJsZSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWQiLCJlbmFibGVkRXhwcmVzc2lvbiIsInJlcXVpcmVkIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiYXJpYUxhYmVsbGVkQnkiLCJ2YWx1ZSIsInZhbHVlQmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEdyb3VwSWRzIiwic2hvd1RpbWV6b25lIiwibWluRGF0ZSIsIm1pbkRhdGVFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwibWF4RGF0ZSIsIm1heERhdGVFeHByZXNzaW9uIiwiY2hhbmdlIiwibGl2ZUNoYW5nZSIsInZhbHVlRm9ybWF0IiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiZ2V0RGF0ZVRpbWVQaWNrZXIiLCJkYXRlVGltZVBpY2tlclR5cGUiLCJkYXRlVGltZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImRhdGFTb3VyY2VQYXRoIiwiRGF0ZVRpbWVQaWNrZXIiLCJUaW1lUGlja2VyIiwiZ2V0SW5wdXRUZW1wbGF0ZSIsIklucHV0IiwicGxhY2Vob2xkZXIiLCJlZGl0U3R5bGVQbGFjZWhvbGRlciIsImRlc2NyaXB0aW9uIiwic3RhdGljRGVzY3JpcHRpb24iLCJlZGl0U3R5bGUiLCJtYXhMZW5ndGgiLCJ0ZXh0TWF4TGVuZ3RoIiwic2hvd0FzUmFkaW9CdXR0b24iLCJyYWRpb0J1dHRvbkNvbmZpZ3VyZWQiLCJwcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5IiwidmFsdWVPZiIsImZpZWxkRWRpdFN0eWxlIiwidmFsdWVMaXN0UGFyYW1ldGVySW5PdXQiLCJWYWx1ZUxpc3QiLCJQYXJhbWV0ZXJzIiwiZmluZCIsInZhbHVlTGlzdFBhcmFtZXRlciIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCJuYW1lIiwiVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzIiwiZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZSIsImZvckJvb2xlYW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmaXhlZFZhbHVlc1BhdGgiLCJDb2xsZWN0aW9uUGF0aCIsInZhbHVlTGlzdEtleVBhdGgiLCJwYXRoSW5Nb2RlbCIsIlZhbHVlTGlzdFByb3BlcnR5IiwidmFsdWVMaXN0RGVzY3JpcHRpb25QYXRoIiwidmFsdWVIZWxwS2V5VGV4dEFubm90YXRpb25QYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsInJlc29sdmVQYXRoIiwiZW50aXR5VHlwZSIsImtleXMiLCJUZXh0IiwicGF0aCIsInBvc3NpYmxlVmFsdWVzIiwia2V5IiwidGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiUmFkaW9CdXR0b25zIiwicmFkaW9CdXR0b25UZXh0UHJvcGVydHkiLCJyYWRpb0J1dHRvbktleVByb3BlcnR5IiwiaG9yaXpvbnRhbExheW91dCIsInJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXQiLCJnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZSIsImRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJkZWxlZ2F0ZSIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImRpc3BsYXkiLCJnZXRGaWVsZERpc3BsYXkiLCJkaXNwbGF5TW9kZSIsImhhc011bHRpbGluZUFubm90YXRpb24iLCJVSSIsIk11bHRpTGluZVRleHQiLCJtdWx0aXBsZUxpbmVzIiwiZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCIsImxhYmVsIiwiY29tcHV0ZUxhYmVsVGV4dCIsImNvbnRleHQiLCJvcHRpb25hbENvbnRlbnRFZGl0IiwiVGV4dEFyZWEiLCJyb3dzIiwidGV4dExpbmVzRWRpdCIsImdyb3dpbmciLCJ0ZXh0TWF4TGluZXMiLCJncm93aW5nTWF4TGluZXMiLCJvcHRpb25hbExheW91dERhdGEiLCJGaWVsZCIsInZhbHVlU3RhdGUiLCJlZGl0TW9kZSIsImNvbXB1dGVkRWRpdE1vZGUiLCJhZGRpdGlvbmFsVmFsdWUiLCJ0ZXh0QmluZGluZ0V4cHJlc3Npb24iLCJ2YWx1ZUhlbHAiLCJ2YWx1ZUhlbHBJZCIsImNvbnRlbnRFZGl0IiwiZ2V0Q2hlY2tCb3hUZW1wbGF0ZSIsImlzQ2hlY2tCb3hHcm91cEl0ZW0iLCJpc0ZpZWxkR3JvdXBJdGVtIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsIndyYXBwaW5nIiwic2VsZWN0IiwiZ2V0VGV4dEFyZWFUZW1wbGF0ZSIsInNob3dFeGNlZWRlZFRleHQiLCJUZXh0QXJlYUV4IiwiY29scyIsImdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlIiwidG9vbHRpcCIsInJhdGluZ0luZGljYXRvclRvb2x0aXAiLCJSYXRpbmdJbmRpY2F0b3IiLCJtYXhWYWx1ZSIsInJhdGluZ0luZGljYXRvclRhcmdldFZhbHVlIiwiaWNvblNpemUiLCJjbGFzcyIsImdldFRlbXBsYXRlV2l0aFdyYXBwZXIiLCJGaWVsZEVkaXRNb2RlIiwiRGlzcGxheSIsIl9qc3hzIiwiQ29sbGFib3JhdGlvbkhCb3giLCJhbGlnbkl0ZW1zIiwiZ2V0VGVtcGxhdGUiLCJnZXRJbnB1dE1hc2tUZW1wbGF0ZSIsIm9wdGlvbmFsTWFza0lucHV0UnVsZXMiLCJtYXNrIiwibWFza1J1bGUiLCJydWxlIiwicHVzaCIsIk1hc2tJbnB1dFJ1bGUiLCJtYXNrRm9ybWF0U3ltYm9sIiwic3ltYm9sIiwicmVnZXgiLCJNYXNrSW5wdXQiLCJwbGFjZWhvbGRlclN5bWJvbCIsInJ1bGVzIiwiaW5uZXJGaWVsZENvbnRlbnQiLCJ1c2VSYWRpb0J1dHRvbnNGb3JCb29sZWFuIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFZGl0U3R5bGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRXZlbnREZWxlZ2F0ZUhvb2sgZnJvbSBcInNhcC9mZS9iYXNlL0V2ZW50RGVsZWdhdGVIb29rXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbkhCb3ggZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvQ29sbGFib3JhdGlvbkhCb3hcIjtcbmltcG9ydCBSYWRpb0J1dHRvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvUmFkaW9CdXR0b25zXCI7XG5pbXBvcnQgeyBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkLCBnZXRUZXh0QWxpZ25tZW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvZmllbGQvRmllbGRTdHJ1Y3R1cmVIZWxwZXJcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IHR5cGUgeyBDaGVja0JveCRTZWxlY3RFdmVudCB9IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSBcInNhcC9tL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBEYXRlVGltZVBpY2tlciBmcm9tIFwic2FwL20vRGF0ZVRpbWVQaWNrZXJcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vTWFza0lucHV0XCI7XG5pbXBvcnQgTWFza0lucHV0IGZyb20gXCJzYXAvbS9NYXNrSW5wdXRcIjtcbmltcG9ydCBNYXNrSW5wdXRSdWxlIGZyb20gXCJzYXAvbS9NYXNrSW5wdXRSdWxlXCI7XG5pbXBvcnQgdHlwZSB7IFJhdGluZ0luZGljYXRvciRDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9SYXRpbmdJbmRpY2F0b3JcIjtcbmltcG9ydCBSYXRpbmdJbmRpY2F0b3IgZnJvbSBcInNhcC9tL1JhdGluZ0luZGljYXRvclwiO1xuaW1wb3J0IFRleHRBcmVhIGZyb20gXCJzYXAvbS9UZXh0QXJlYVwiO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSBcInNhcC9tL1RpbWVQaWNrZXJcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRyb2wsIENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQsIGRlZmF1bHQgYXMgQ29udHJvbDEgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgRmllbGQkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcIi4uLy4uL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgVGV4dEFyZWFFeCBmcm9tIFwiLi4vLi4vZmllbGQvVGV4dEFyZWFFeFwiO1xuXG5jb25zdCBFZGl0U3R5bGUgPSB7XG5cdC8qKlxuXHQgKiBBbiBpbnRlcm5hbCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIHJldXNlZCBsYXlvdXQgZGF0YS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldExheW91dERhdGEoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRsZXQgbGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRsYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gbGF5b3V0RGF0YTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBhdmF0YXIgY29udHJvbCBuZXh0IGEgZmllbGQgbG9ja2VkLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYXZhdGFyXG5cdCAqL1xuXHRnZXRDb2xsYWJvcmF0aW9uQXZhdGFyKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGZpZWxkLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlci5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihmaWVsZC5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscylcblx0XHQpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFVJRm9ybWF0dGVyLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKGZpZWxkLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PEF2YXRhclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGRSdW50aW1lSGVscGVyOiAnc2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXInfVwiXG5cdFx0XHRcdHZpc2libGU9e2NvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb259XG5cdFx0XHRcdGluaXRpYWxzPXtjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e2NvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHByZXNzPXtmaWVsZC5ldmVudEhhbmRsZXJzLnNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIgYXMgdW5rbm93biBhcyAoKG9FdmVudDogRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IDxFdmVudERlbGVnYXRlSG9vayBzdG9wVGFwUHJvcGFnYXRpb249e3RydWV9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0F2YXRhcj5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSB0ZW1wbGF0ZSBmb3Igb25lIG9mIHRoZSBwaWNrZXJzIHJlZmVyZW5jZSBpbiB0aGUgdHlwZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdHlwZSBSZWZlcmVuY2UgdG8gb25lIG9mIHRoZSBlZGl0IHN0eWxlIHBpY2tlciB0eXBlc1xuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMsIHR5cGU6IFwiRGF0ZVBpY2tlclwiIHwgXCJEYXRlVGltZVBpY2tlclwiIHwgXCJUaW1lUGlja2VyXCIpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXG5cdFx0Y29uc3QgZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzID0ge1xuXHRcdFx0XCJjb3JlOnJlcXVpcmVcIjogXCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIixcblx0XHRcdGlkOiBmaWVsZC5lZGl0U3R5bGVJZCxcblx0XHRcdHdpZHRoOiBcIjEwMCVcIixcblx0XHRcdGVkaXRhYmxlOiBmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb24sXG5cdFx0XHRlbmFibGVkOiBmaWVsZC5lbmFibGVkRXhwcmVzc2lvbixcblx0XHRcdHJlcXVpcmVkOiBmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb24sXG5cdFx0XHR0ZXh0QWxpZ246IHRleHRBbGlnbixcblx0XHRcdGFyaWFMYWJlbGxlZEJ5OiBmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+LFxuXHRcdFx0dmFsdWU6IGZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRmaWVsZEdyb3VwSWRzOiBmaWVsZC5maWVsZEdyb3VwSWRzLFxuXHRcdFx0c2hvd1RpbWV6b25lOiBmaWVsZC5zaG93VGltZXpvbmUsXG5cdFx0XHRtaW5EYXRlOiB0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCIgfHwgdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBmaWVsZC5taW5EYXRlRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heERhdGU6IHR5cGUgPT09IFwiRGF0ZVRpbWVQaWNrZXJcIiB8fCB0eXBlID09PSBcIkRhdGVQaWNrZXJcIiA/IGZpZWxkLm1heERhdGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0Y2hhbmdlOlxuXHRcdFx0XHR0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCJcblx0XHRcdFx0XHQ/ICgoZmllbGQuY2hhbmdlIHx8IGZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlKSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZClcblx0XHRcdFx0XHQ6IChmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZCksXG5cdFx0XHRsaXZlQ2hhbmdlOiBmaWVsZC5ldmVudEhhbmRsZXJzLmxpdmVDaGFuZ2UsXG5cdFx0XHR2YWx1ZUZvcm1hdDogdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBcIm1lZGl1bVwiIDogdW5kZWZpbmVkLFxuXHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwOiBmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkXG5cdFx0fTtcblxuXHRcdGZ1bmN0aW9uIGdldERhdGVUaW1lUGlja2VyKGRhdGVUaW1lUGlja2VyVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRcdGxldCBkYXRlVGltZVBpY2tlcjtcblx0XHRcdHN3aXRjaCAoZGF0ZVRpbWVQaWNrZXJUeXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJEYXRlUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8RGF0ZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVBpY2tlcj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiRGF0ZVRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxEYXRlVGltZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVRpbWVQaWNrZXI+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIlRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxUaW1lUGlja2VyIHsuLi5kYXRlVGltZVBpY2tlclByb3BlcnRpZXN9PlxuXHRcdFx0XHRcdFx0XHR7eyBjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPiB9fVxuXHRcdFx0XHRcdFx0PC9UaW1lUGlja2VyPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZGF0ZVRpbWVQaWNrZXI7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGdldERhdGVUaW1lUGlja2VyKHR5cGUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIElucHV0IHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0SW5wdXRUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0ZWRpdGFibGU9e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0ZGVzY3JpcHRpb249e2ZpZWxkLnN0YXRpY0Rlc2NyaXB0aW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHR5cGU9e2ZpZWxkLmVkaXRTdHlsZSA9PT0gXCJNYXNrZWRcIiA/IFwiUGFzc3dvcmRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogRWRpdFN0eWxlLmdldExheW91dERhdGEoZmllbGQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0lucHV0PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgaWYgYSBmaWVsZCBzaGFsbCBiZSB0ZW1wbGF0ZWQgYXMgYSByYWRpbyBidXR0b24gZ3JvdXAuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgVGhlIGV2YWx1YXRpb24gcmVzdWx0XG5cdCAqL1xuXHRzaG93QXNSYWRpb0J1dHRvbihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBib29sZWFuIHtcblx0XHQvLyBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byByZW5kZXIgdGhlIGZpZWxkIGFzIGEgcmFkaW8gYnV0dG9uIGdyb3VwXG5cdFx0Ly8gVE9ETzogUmVtb3ZlIHRoZSBuZXh0IHR3byBsaW5lcyBvbmNlIFVYIHVwZGF0ZWQgdGhlIHZvY2FidWxhcnkgbW9kdWxlIGluY2x1ZGluZyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBhbm5vdGF0aW9uXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCByYWRpb0J1dHRvbkNvbmZpZ3VyZWQ6IGJvb2xlYW4gPVxuXHRcdFx0ZmllbGQucHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzICYmXG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMoZmllbGQucHJvcGVydHkpID09PSB0cnVlICYmXG5cdFx0XHQoKGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5ICYmXG5cdFx0XHRcdGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5LnZhbHVlT2YoKSA9PT1cblx0XHRcdFx0XHR0cnVlKSB8fFxuXHRcdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmZpZWxkRWRpdFN0eWxlID09PSBcIlJhZGlvQnV0dG9uc1wiKTtcblxuXHRcdC8vIEV4Y2x1ZGUgbm90IHN1cHBvcnRlZCBjYXNlc1xuXHRcdC8vIC0gVmFsdWVMaXN0UGFyYW1hdGVySW5PdXQgLyAuLi5PdXQgbXVzdCBub3QgYmUgZW1wdHlcblx0XHQvLyAtIFZhbHVlTGlzdFJlbGV2YW50UXVhbGlmaWVycyBhbm5vdGF0aW9uIG11c3Qgbm90IGJlIHVzZWRcblx0XHQvLyBGdXJ0aGVyIGNhc2VzIG1heSBub3QgbWFrZSBzZW5zZSB3aXRoIHJhZGlvIGJ1dHRvbnMgYnV0IHdlIGRvIG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGUgdGhlbSBidXQgbWVudGlvbiB0aGlzIGluIGRvY3VtZW50YXRpb24uXG5cdFx0Ly8gQ2hlY2sgZG9jdW1lbnRhdGlvbiwgZGlzY3VzcyBhbmQgZGVjaWRlIGJlZm9yZSBhZGRpbmcgZnVydGhlciByZXN0cmljdGlvbnMgaGVyZS5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyYWRpb0J1dHRvbkNvbmZpZ3VyZWQgJiZcblx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlckluT3V0ICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdCFmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIFJhZGlvQnV0dG9uIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBmb3JCb29sZWFuXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgcmFkaW8gYnV0dG9uIGRlZmluaXRpb25cblx0ICovXG5cdGdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzLCBmb3JCb29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGZpeGVkVmFsdWVzUGF0aCA9IFwiL1wiICsgZmllbGQucHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdD8uQ29sbGVjdGlvblBhdGg7XG5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXG5cdFx0Ly8gd2Uga25vdyB0aGF0IGEgdmFsdWVMaXN0UHJvcGVydHkgZXhpc3RzIGJlY2F1c2Ugd2UgY2hlY2sgdGhpcyBhbHJlYWR5IGluIHNob3dBc1JhZGlvQnV0dG9uXG5cdFx0Y29uc3QgdmFsdWVMaXN0S2V5UGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlTGlzdFBhcmFtZXRlckluT3V0Py5WYWx1ZUxpc3RQcm9wZXJ0eSBhcyBzdHJpbmcpID8/IHBhdGhJbk1vZGVsKFwiXCIpO1xuXG5cdFx0bGV0IHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aDtcblx0XHRjb25zdCB2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGggPVxuXHRcdFx0ZmllbGQuZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKGZpeGVkVmFsdWVzUGF0aCk/LmVudGl0eVR5cGUua2V5c1swXS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0Py5wYXRoO1xuXHRcdGlmICh2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlSGVscEtleVRleHRBbm5vdGF0aW9uUGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHZhbHVlTGlzdEtleVBhdGg7XG5cdFx0fVxuXG5cdFx0bGV0IHBvc3NpYmxlVmFsdWVzOiB7IGtleTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw7IHRleHQ6IHN0cmluZyB9W10gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGZvckJvb2xlYW4pIHtcblx0XHRcdHBvc3NpYmxlVmFsdWVzID0gW1xuXHRcdFx0XHR7IGtleTogdHJ1ZSwgdGV4dDogZmllbGQuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1JBRElPQlVUVE9OU19CT09MRUFOX1lFU1wiKSB9LFxuXHRcdFx0XHR7IGtleTogZmFsc2UsIHRleHQ6IGZpZWxkLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9SQURJT0JVVFRPTlNfQk9PTEVBTl9OT1wiKSB9XG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmFkaW9CdXR0b25zXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0cG9zc2libGVWYWx1ZXM9e3Bvc3NpYmxlVmFsdWVzfVxuXHRcdFx0XHRyZXF1aXJlZEV4cHJlc3Npb249e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRmaXhlZFZhbHVlc1BhdGg9e2ZpeGVkVmFsdWVzUGF0aCBhcyB1bmtub3duIGFzIGB7JHtzdHJpbmd9fWB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkRXhwcmVzc2lvbj17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJhZGlvQnV0dG9uVGV4dFByb3BlcnR5PXt2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGh9XG5cdFx0XHRcdHJhZGlvQnV0dG9uS2V5UHJvcGVydHk9e3ZhbHVlTGlzdEtleVBhdGh9XG5cdFx0XHRcdGhvcml6b250YWxMYXlvdXQ9e2ZpZWxkLmZvcm1hdE9wdGlvbnMucmFkaW9CdXR0b25zSG9yaXpvbnRhbExheW91dH1cblx0XHRcdC8+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dFdpdGhWYWx1ZUhlbHAgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihcblx0XHRcdGZpZWxkLm1ldGFQYXRoLFxuXHRcdFx0ZmllbGQuY29udGV4dFBhdGhcblx0XHQpO1xuXG5cdFx0Y29uc3QgZGVsZWdhdGUgPSBGaWVsZEhlbHBlci5jb21wdXRlRmllbGRCYXNlRGVsZWdhdGUoXG5cdFx0XHRcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIixcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCBhcyBib29sZWFuXG5cdFx0KTtcblx0XHRjb25zdCBkaXNwbGF5ID0gVUlGb3JtYXR0ZXIuZ2V0RmllbGREaXNwbGF5KFxuXHRcdFx0ZmllbGQucHJvcGVydHksXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlIGFzIHN0cmluZyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXHRcdGNvbnN0IGhhc011bHRpbGluZUFubm90YXRpb24gPSAhIWZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ7XG5cdFx0Y29uc3QgbXVsdGlwbGVMaW5lcyA9IGdldE11bHRpcGxlTGluZXNGb3JEYXRhRmllbGQoZmllbGQsIGhhc011bHRpbGluZUFubm90YXRpb24pO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0XHRcdHRydWVcblx0XHQpO1xuXHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dChmaWVsZCBhcyB1bmtub3duIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkVHlwZXM+LCB7XG5cdFx0XHRjb250ZXh0OiBmaWVsZC5tZXRhUGF0aFxuXHRcdH0pO1xuXG5cdFx0bGV0IG9wdGlvbmFsQ29udGVudEVkaXQgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5wcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJpbmdcIiAmJiBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uKSB7XG5cdFx0XHRvcHRpb25hbENvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHQ8VGV4dEFyZWFcblx0XHRcdFx0XHR2YWx1ZT17ZmllbGQudmFsdWVCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdHJvd3M9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdH1cblx0XHRcdFx0XHRncm93aW5nPXsoZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgYXMgdW5rbm93biBhcyBudW1iZXIpID4gMCA/IHRydWUgOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0Z3Jvd2luZ01heExpbmVzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMaW5lc31cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgdW5rbm93biBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IG9wdGlvbmFsTGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID09PSB0cnVlKSB7XG5cdFx0XHRvcHRpb25hbExheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc2hvd0FzUmFkaW9CdXR0b24oZmllbGQpICE9PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPXtkZWxlZ2F0ZX1cblx0XHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9e2ZpZWxkLmVkaXRTdHlsZVBsYWNlaG9sZGVyfVxuXHRcdFx0XHRcdHZhbHVlU3RhdGU9e2ZpZWxkLnZhbHVlU3RhdGV9XG5cdFx0XHRcdFx0ZWRpdE1vZGU9e2ZpZWxkLmVkaXRNb2RlID8/IGZpZWxkLmNvbXB1dGVkRWRpdE1vZGV9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT17ZmllbGQudGV4dEJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGRpc3BsYXk9e2Rpc3BsYXl9XG5cdFx0XHRcdFx0bXVsdGlwbGVMaW5lcz17bXVsdGlwbGVMaW5lcyA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBtdWx0aXBsZUxpbmVzfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17ZmllbGQudmFsdWVIZWxwSWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0XHR0ZXh0QWxpZ249e3RleHRBbGlnbn1cblx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17ZmllbGQuYXJpYUxhYmVsbGVkQnkgYXMgdW5rbm93biBhcyBBcnJheTxDb250cm9sMSB8IHN0cmluZz59XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogb3B0aW9uYWxDb250ZW50RWRpdCxcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IG9wdGlvbmFsTGF5b3V0RGF0YSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBDaGVja0JveCB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldENoZWNrQm94VGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBpc0NoZWNrQm94R3JvdXBJdGVtID0gZmllbGQuZm9ybWF0T3B0aW9ucy5pc0ZpZWxkR3JvdXBJdGVtID09PSB0cnVlO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8Q2hlY2tCb3hcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCJcblx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRyZXF1aXJlZD17aXNDaGVja0JveEdyb3VwSXRlbSA/IGZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c2VsZWN0ZWQ9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtmaWVsZC5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHR0ZXh0PXtpc0NoZWNrQm94R3JvdXBJdGVtID8gZmllbGQubGFiZWwgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHdyYXBwaW5nPXtpc0NoZWNrQm94R3JvdXBJdGVtID8gdHJ1ZSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdHNlbGVjdD17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdDwvQ2hlY2tCb3g+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBUZXh0QXJlYSB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRleHRBcmVhVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBncm93aW5nID0gZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRjb25zdCBzaG93RXhjZWVkZWRUZXh0ID0gISFmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMZW5ndGg7XG5cblx0XHQvL3VuZm9ydHVuYXRlbHkgdGhpcyBvbmUgaXMgYSBcImRpZmZlcmVudFwiIGxheW91dERhdGEgdGhhbiB0aGUgb3RoZXJzLCB0aGVyZWZvcmUgdGhlIHJldXNlIGZ1bmN0aW9uIGZyb20gYWJvdmUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSB0ZXh0QXJlYSB0ZW1wbGF0ZVxuXHRcdGxldCBsYXlvdXREYXRhID0gXCJcIjtcblx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxUZXh0QXJlYUV4XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cm93cz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0fVxuXHRcdFx0XHRncm93aW5nPXtncm93aW5nfVxuXHRcdFx0XHRncm93aW5nTWF4TGluZXM9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzfVxuXHRcdFx0XHRjb2xzPXszMDB9IC8vQXMgdGhlIGRlZmF1bHQgaXMgMjAsIHRoZSBcImNvbHNcIiBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIHdpdGggYSB2YWx1ZSBvZiAzMDAgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHRleHRhcmVhIHdpbGwgb2NjdXB5IGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRzaG93RXhjZWVkZWRUZXh0PXtzaG93RXhjZWVkZWRUZXh0fVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogbGF5b3V0RGF0YSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UZXh0QXJlYUV4PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgUmF0aW5nSW5kaWNhdG9yIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHRvb2x0aXAgPSBmaWVsZC5yYXRpbmdJbmRpY2F0b3JUb29sdGlwIHx8IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX1JBVElOR19JTkRJQ0FUT1JfVElUTEVfTEFCRUx9XCI7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdG1heFZhbHVlPXtmaWVsZC5yYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3Rvb2x0aXB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGljb25TaXplPVwiMS4zNzVyZW1cIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiXG5cdFx0XHRcdGVkaXRhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogUmF0aW5nSW5kaWNhdG9yJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IEVkaXRTdHlsZS5nZXRMYXlvdXREYXRhKGZpZWxkKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9SYXRpbmdJbmRpY2F0b3I+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogSGVscHMgdG8gY2FsY3VsYXRlIHRoZSBjb250ZW50IGVkaXQgZnVuY3Rpb25hbGl0eSAvIHRlbXBsYXRpbmcuXG5cdCAqIEluY2x1ZGluZyBhIHdyYXBwZXIgYW4gaGJveCBpbiBjYXNlIG9mIGNvbGxhYm9yYXRpb24gbW9kZSBmaW5hbGx5XG5cdCAqIGl0IGNhbGxzIGludGVybmFsbHkgRWRpdFN0eWxlLmdldFRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0VGVtcGxhdGVXaXRoV3JhcHBlcihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZW50RWRpdDtcblxuXHRcdGlmICgoZmllbGQuZWRpdE1vZGUgPz8gZmllbGQuY29tcHV0ZWRFZGl0TW9kZSkgIT09IEZpZWxkRWRpdE1vZGUuRGlzcGxheSAmJiAhIWZpZWxkLmVkaXRTdHlsZSkge1xuXHRcdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID8/IGZhbHNlKSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHRcdDxDb2xsYWJvcmF0aW9uSEJveCB3aWR0aD1cIjEwMCVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHR7RWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKX1cblx0XHRcdFx0XHRcdHtFZGl0U3R5bGUuZ2V0Q29sbGFib3JhdGlvbkF2YXRhcihmaWVsZCl9XG5cdFx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uSEJveD5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gRWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udGVudEVkaXQgfHwgXCJcIjtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dE1hc2sgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG9wdGlvbmFsTWFza0lucHV0UnVsZXMgPSBbXTtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0ZXh0QWxpZ24gPSBnZXRUZXh0QWxpZ25tZW50KFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRpZiAoZmllbGQubWFzaz8ubWFza1J1bGUpIHtcblx0XHRcdGZvciAoY29uc3QgcnVsZSBvZiBmaWVsZC5tYXNrLm1hc2tSdWxlKSB7XG5cdFx0XHRcdG9wdGlvbmFsTWFza0lucHV0UnVsZXMucHVzaCg8TWFza0lucHV0UnVsZSBtYXNrRm9ybWF0U3ltYm9sPXtydWxlLnN5bWJvbH0gcmVnZXg9e3J1bGUucmVnZXh9IC8+KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1hc2tJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXNrPXtmaWVsZC5tYXNrPy5tYXNrfVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHBsYWNlaG9sZGVyU3ltYm9sPXtmaWVsZC5tYXNrPy5wbGFjZWhvbGRlclN5bWJvbH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlIGFzIChvRXZlbnQ6IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRydWxlczogb3B0aW9uYWxNYXNrSW5wdXRSdWxlcyxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NYXNrSW5wdXQ+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogRW50cnkgcG9pbnQgZm9yIGZ1cnRoZXIgdGVtcGxhdGluZyBwcm9jZXNzaW5ncy5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRlbXBsYXRlOiAoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0XHRsZXQgaW5uZXJGaWVsZENvbnRlbnQ7XG5cdFx0c3dpdGNoIChmaWVsZC5lZGl0U3R5bGUpIHtcblx0XHRcdGNhc2UgXCJDaGVja0JveFwiOlxuXHRcdFx0XHRpZiAoZmllbGQuZm9ybWF0T3B0aW9ucy51c2VSYWRpb0J1dHRvbnNGb3JCb29sZWFuKSB7XG5cdFx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZShmaWVsZCwgdHJ1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0Q2hlY2tCb3hUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRjYXNlIFwiVGltZVBpY2tlclwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZCwgZmllbGQuZWRpdFN0eWxlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiSW5wdXRcIjoge1xuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiTWFza2VkXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0SW5wdXRUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIklucHV0V2l0aFZhbHVlSGVscFwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0V2l0aFZhbHVlSGVscFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiUmF0aW5nSW5kaWNhdG9yXCI6XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVGV4dEFyZWFcIjpcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0VGV4dEFyZWFUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIklucHV0TWFza1wiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5uZXJGaWVsZENvbnRlbnQ7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRTdHlsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBcUNBLE1BQU1BLFNBQVMsR0FBRztJQUNqQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGFBQWFBLENBQUNDLEtBQTJCLEVBQVU7TUFDbEQsSUFBSUMsVUFBVSxHQUFHLEVBQUU7TUFDbkIsSUFBSUQsS0FBSyxDQUFDRSxvQkFBb0IsRUFBRTtRQUMvQkQsVUFBVSxHQUFHRSxJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQzdDO01BQ0EsT0FBT0osVUFBVTtJQUNsQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDSyxzQkFBc0JBLENBQUNOLEtBQTJCLEVBQVU7TUFDM0QsTUFBTU8s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
|
|
@@ -230,9 +230,10 @@ const EditStyle = {
|
|
|
230
230
|
/**
|
|
231
231
|
* Generates the RadioButton template.
|
|
232
232
|
* @param field Reference to the current field instance
|
|
233
|
+
* @param forBoolean
|
|
233
234
|
* @returns An XML-based string with the radio button definition
|
|
234
235
|
*/
|
|
235
|
-
getRadioButtonTemplate(field: FieldBlockProperties): string {
|
|
236
|
+
getRadioButtonTemplate(field: FieldBlockProperties, forBoolean = false): string {
|
|
236
237
|
const fixedValuesPath = "/" + field.property?.annotations?.Common?.ValueList?.CollectionPath;
|
|
237
238
|
|
|
238
239
|
const valueListParameterInOut = field.property?.annotations?.Common?.ValueList?.Parameters.find(
|
|
@@ -243,20 +244,29 @@ const EditStyle = {
|
|
|
243
244
|
);
|
|
244
245
|
|
|
245
246
|
// we know that a valueListProperty exists because we check this already in showAsRadioButton
|
|
246
|
-
const valueListKeyPath = pathInModel(valueListParameterInOut
|
|
247
|
+
const valueListKeyPath = pathInModel(valueListParameterInOut?.ValueListProperty as string) ?? pathInModel("");
|
|
247
248
|
|
|
248
249
|
let valueListDescriptionPath;
|
|
249
250
|
const valueHelpKeyTextAnnotationPath =
|
|
250
|
-
field.dataModelPath.targetEntityType.resolvePath(fixedValuesPath)
|
|
251
|
+
field.dataModelPath.targetEntityType.resolvePath(fixedValuesPath)?.entityType.keys[0].annotations?.Common?.Text?.path;
|
|
251
252
|
if (valueHelpKeyTextAnnotationPath) {
|
|
252
253
|
valueListDescriptionPath = pathInModel(valueHelpKeyTextAnnotationPath);
|
|
253
254
|
} else {
|
|
254
255
|
valueListDescriptionPath = valueListKeyPath;
|
|
255
256
|
}
|
|
256
257
|
|
|
258
|
+
let possibleValues: { key: string | number | boolean | null; text: string }[] | undefined;
|
|
259
|
+
if (forBoolean) {
|
|
260
|
+
possibleValues = [
|
|
261
|
+
{ key: true, text: field.getTranslatedText("T_RADIOBUTTONS_BOOLEAN_YES") },
|
|
262
|
+
{ key: false, text: field.getTranslatedText("T_RADIOBUTTONS_BOOLEAN_NO") }
|
|
263
|
+
];
|
|
264
|
+
}
|
|
265
|
+
|
|
257
266
|
return (
|
|
258
267
|
<RadioButtons
|
|
259
268
|
id={field.editStyleId}
|
|
269
|
+
possibleValues={possibleValues}
|
|
260
270
|
requiredExpression={field.requiredExpression}
|
|
261
271
|
validateFieldGroup={field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void}
|
|
262
272
|
fixedValuesPath={fixedValuesPath as unknown as `{${string}}`}
|
|
@@ -541,7 +551,11 @@ const EditStyle = {
|
|
|
541
551
|
let innerFieldContent;
|
|
542
552
|
switch (field.editStyle) {
|
|
543
553
|
case "CheckBox":
|
|
544
|
-
|
|
554
|
+
if (field.formatOptions.useRadioButtonsForBoolean) {
|
|
555
|
+
innerFieldContent = EditStyle.getRadioButtonTemplate(field, true);
|
|
556
|
+
} else {
|
|
557
|
+
innerFieldContent = EditStyle.getCheckBoxTemplate(field);
|
|
558
|
+
}
|
|
545
559
|
break;
|
|
546
560
|
case "DatePicker":
|
|
547
561
|
case "DateTimePicker":
|