@hitsoft/e-donusum 1.0.61 → 1.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/config/providers/auto-send-rule-doc-type-route.provider.d.ts +9 -0
  2. package/config/providers/auto-send-rule-route.provider.d.ts +9 -0
  3. package/config/providers/auto-send-rule-scenario-route.provider.d.ts +9 -0
  4. package/esm2020/config/e-donusum-config.module.mjs +8 -2
  5. package/esm2020/config/providers/auto-send-rule-doc-type-route.provider.mjs +19 -0
  6. package/esm2020/config/providers/auto-send-rule-route.provider.mjs +19 -0
  7. package/esm2020/config/providers/auto-send-rule-scenario-route.provider.mjs +19 -0
  8. package/esm2020/config/providers/hit-providers/route.provider.mjs +2 -1
  9. package/esm2020/config/providers/hit-providers/wizard-route.provider.mjs +3 -2
  10. package/esm2020/config/providers/paramse-dispatch-route.provider.mjs +1 -1
  11. package/esm2020/config/providers/paramse-invoice-route.provider.mjs +1 -1
  12. package/esm2020/lib/auto-send-rule-doc-types/auto-send-rule-doc-type/auto-send-rule-doc-type-routing.module.mjs +26 -0
  13. package/esm2020/lib/auto-send-rule-doc-types/auto-send-rule-doc-type/auto-send-rule-doc-type.module.mjs +52 -0
  14. package/esm2020/lib/auto-send-rule-doc-types/auto-send-rule-doc-type/components/auto-send-rule-doc-type.component.mjs +98 -0
  15. package/esm2020/lib/auto-send-rule-scenarios/auto-send-rule-scenario/auto-send-rule-scenario-routing.module.mjs +26 -0
  16. package/esm2020/lib/auto-send-rule-scenarios/auto-send-rule-scenario/auto-send-rule-scenario.module.mjs +52 -0
  17. package/esm2020/lib/auto-send-rule-scenarios/auto-send-rule-scenario/components/auto-send-rule-scenario.component.mjs +97 -0
  18. package/esm2020/lib/auto-send-rules/auto-send-rule/auto-send-rule-routing.module.mjs +26 -0
  19. package/esm2020/lib/auto-send-rules/auto-send-rule/auto-send-rule.module.mjs +52 -0
  20. package/esm2020/lib/auto-send-rules/auto-send-rule/components/auto-send-rule.component.mjs +106 -0
  21. package/esm2020/lib/components/hit-document-serial/hit-document-serial.component.mjs +5 -4
  22. package/esm2020/lib/components/hit-paramas-invoices/hit-params-invoice.component.mjs +6 -4
  23. package/esm2020/lib/components/hit-params-dispatches/hit-params-dispatch.component.mjs +6 -4
  24. package/esm2020/lib/document-serials/document-serial/components/document-serial.component.mjs +5 -4
  25. package/esm2020/lib/e-donusum-routing.module.mjs +11 -2
  26. package/esm2020/lib/paramse-dispatches/paramse-dispatch/components/paramse-dispatch.component.mjs +6 -4
  27. package/esm2020/lib/paramse-invoices/paramse-invoice/components/paramse-invoice.component.mjs +6 -4
  28. package/esm2020/lib/proxy/auto-send-rule-doc-types/auto-send-rule-doc-type.service.mjs +50 -0
  29. package/esm2020/lib/proxy/auto-send-rule-doc-types/models.mjs +2 -0
  30. package/esm2020/lib/proxy/auto-send-rule-scenarios/auto-send-rule-scenario.service.mjs +50 -0
  31. package/esm2020/lib/proxy/auto-send-rule-scenarios/models.mjs +2 -0
  32. package/esm2020/lib/proxy/auto-send-rules/auto-send-rule.service.mjs +50 -0
  33. package/esm2020/lib/proxy/auto-send-rules/models.mjs +2 -0
  34. package/esm2020/lib/proxy/document-serials/document-serial.service.mjs +2 -2
  35. package/esm2020/lib/proxy/document-serials/models.mjs +1 -1
  36. package/esm2020/lib/proxy/paramse-dispatches/models.mjs +1 -1
  37. package/esm2020/lib/proxy/paramse-dispatches/paramse-dispatch.service.mjs +2 -2
  38. package/esm2020/lib/proxy/paramse-invoices/models.mjs +1 -1
  39. package/esm2020/lib/proxy/paramse-invoices/paramse-invoice.service.mjs +2 -2
  40. package/fesm2015/hitsoft-e-donusum-config.mjs +171 -115
  41. package/fesm2015/hitsoft-e-donusum-config.mjs.map +1 -1
  42. package/fesm2015/hitsoft-e-donusum.mjs +739 -164
  43. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  44. package/fesm2020/hitsoft-e-donusum-config.mjs +171 -115
  45. package/fesm2020/hitsoft-e-donusum-config.mjs.map +1 -1
  46. package/fesm2020/hitsoft-e-donusum.mjs +757 -164
  47. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  48. package/lib/auto-send-rule-doc-types/auto-send-rule-doc-type/auto-send-rule-doc-type-routing.module.d.ts +7 -0
  49. package/lib/auto-send-rule-doc-types/auto-send-rule-doc-type/auto-send-rule-doc-type.module.d.ts +15 -0
  50. package/lib/auto-send-rule-doc-types/auto-send-rule-doc-type/components/auto-send-rule-doc-type.component.d.ts +33 -0
  51. package/lib/auto-send-rule-scenarios/auto-send-rule-scenario/auto-send-rule-scenario-routing.module.d.ts +7 -0
  52. package/lib/auto-send-rule-scenarios/auto-send-rule-scenario/auto-send-rule-scenario.module.d.ts +15 -0
  53. package/lib/auto-send-rule-scenarios/auto-send-rule-scenario/components/auto-send-rule-scenario.component.d.ts +33 -0
  54. package/lib/auto-send-rules/auto-send-rule/auto-send-rule-routing.module.d.ts +7 -0
  55. package/lib/auto-send-rules/auto-send-rule/auto-send-rule.module.d.ts +15 -0
  56. package/lib/auto-send-rules/auto-send-rule/components/auto-send-rule.component.d.ts +33 -0
  57. package/lib/proxy/auto-send-rule-doc-types/auto-send-rule-doc-type.service.d.ts +19 -0
  58. package/lib/proxy/auto-send-rule-doc-types/models.d.ts +26 -0
  59. package/lib/proxy/auto-send-rule-scenarios/auto-send-rule-scenario.service.d.ts +19 -0
  60. package/lib/proxy/auto-send-rule-scenarios/models.d.ts +26 -0
  61. package/lib/proxy/auto-send-rules/auto-send-rule.service.d.ts +19 -0
  62. package/lib/proxy/auto-send-rules/models.d.ts +56 -0
  63. package/lib/proxy/document-serials/models.d.ts +4 -0
  64. package/lib/proxy/paramse-dispatches/models.d.ts +8 -0
  65. package/lib/proxy/paramse-invoices/models.d.ts +8 -0
  66. package/package.json +1 -1
@@ -52,13 +52,15 @@ export class HitParamsDispatchComponent {
52
52
  await this.getParamsDispatch(true);
53
53
  }
54
54
  buildForm() {
55
- const { defaultScenario, defaultDisType, defaultDisSerial, useDefScenario, isShowBatchNSerial, useDefDisType, noPrice, inventoryTrAddress, receiverChannel, noRemainOrder, useSouWhoAdr, useCusStockCode, useBarcode, itemTreeOption, orderReferenceField } = this.paramsDispatchDto || {};
55
+ const { defaultScenario, defaultDisType, defaultDisSerial, useDefScenario, isShowBatchNSerial, useDefDisType, noPrice, inventoryTrAddress, receiverChannel, noRemainOrder, useSouWhoAdr, useCusStockCode, useBarcode, itemTreeOption, orderReferenceField, isPartnerCatalogNum, isPartnerCatalogDesc } = this.paramsDispatchDto || {};
56
56
  this.formParamsDispatch = this.fb.group({
57
57
  defaultScenario: [defaultScenario ?? 0, []],
58
58
  defaultDisType: [defaultDisType ?? 0, []],
59
59
  defaultDisSerial: [defaultDisSerial ?? null, [Validators.required, Validators.maxLength(3)]],
60
60
  useDefScenario: [useDefScenario ?? false, []],
61
61
  isShowBatchNSerial: [isShowBatchNSerial ?? false, []],
62
+ isPartnerCatalogNum: [isPartnerCatalogNum ?? false, []],
63
+ isPartnerCatalogDesc: [isPartnerCatalogDesc ?? false, []],
62
64
  useDefDisType: [useDefDisType ?? false, []],
63
65
  noPrice: [noPrice ?? false, []],
64
66
  inventoryTrAddress: [inventoryTrAddress ?? 0, []],
@@ -118,13 +120,13 @@ export class HitParamsDispatchComponent {
118
120
  }
119
121
  }
120
122
  HitParamsDispatchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsDispatchComponent, deps: [{ token: i1.ListService }, { token: i1.TrackByService }, { token: i2.ParamseDispatchService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }, { token: i5.HitParamsDispatchesService }, { token: i3.ToasterService }, { token: i6.HitScenarioTypesService }, { token: i7.HitDocumentTypesService }, { token: i8.HitInventoryTransferAddressesService }], target: i0.ɵɵFactoryTarget.Component });
121
- HitParamsDispatchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsDispatchComponent, selector: "hit-params-dispatch", inputs: { IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsDispatch\" id=\"paramse-dispatch\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-default-dis-serial\">\r\n {{ 'eDonusum::DefaultDisSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"paramse-dispatch-default-dis-serial\" formControlName=\"defaultDisSerial\"\r\n class=\"form-control\" maxlength=\"8\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-def-scenario\"\r\n formControlName=\"useDefScenario\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-def-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-def-dis-type\"\r\n formControlName=\"useDefDisType\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-def-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefDisType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-is-show-batch-n-serial\"\r\n formControlName=\"isShowBatchNSerial\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-no-price\" formControlName=\"noPrice\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-no-price\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoPrice' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-no-remain-order\"\r\n formControlName=\"noRemainOrder\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-no-remain-order\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoRemainOrder' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-sm-6\" *ngIf=false>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-receiver-channel\"\r\n formControlName=\"receiverChannel\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-receiver-channel\" class=\"form-check-label\">\r\n {{ 'eDonusum::ReceiverChannel' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-sou-who-adr\"\r\n formControlName=\"useSouWhoAdr\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-sou-who-adr\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseSouWhoAdr' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-cus-stock-code\"\r\n formControlName=\"useCusStockCode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-cus-stock-code\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseCusStockCode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-barcode\"\r\n formControlName=\"useBarcode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-barcode\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseBarcode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefScenario.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-scenario\" formControlName=\"defaultScenario\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefDisType.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-dispatch-default-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-dispatch-default-dis-type\" formControlName=\"defaultDisType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-inventory-tr-address\">\r\n {{ 'eDonusum::InventoryTrAddress' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-dispatch-inventory-tr-address\"\r\n formControlName=\"inventoryTrAddress\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"inventoryTransferAddressDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-dispatch-item-trees-options\" formControlName=\"itemTreeOption\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-order-reference-fields\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-dispatch-order-reference-fields\"\r\n formControlName=\"orderReferenceField\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"orderReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"paramse-dispatch\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i10.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i10.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i11.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
123
+ HitParamsDispatchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsDispatchComponent, selector: "hit-params-dispatch", inputs: { IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form\r\n [formGroup]=\"formParamsDispatch\"\r\n id=\"paramse-dispatch\"\r\n (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-default-dis-serial\">\r\n {{ 'eDonusum::DefaultDisSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input\r\n id=\"paramse-dispatch-default-dis-serial\"\r\n formControlName=\"defaultDisSerial\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-use-def-scenario\"\r\n formControlName=\"useDefScenario\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-use-def-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-use-def-dis-type\"\r\n formControlName=\"useDefDisType\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-use-def-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefDisType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"params-invoice-is-partner-catalog-num\"\r\n formControlName=\"isPartnerCatalogNum\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-num\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogNum' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"params-invoice-is-partner-catalog-desc\"\r\n formControlName=\"isPartnerCatalogDesc\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-desc\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogDesc' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-is-show-batch-n-serial\"\r\n formControlName=\"isShowBatchNSerial\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"false\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-no-price\"\r\n formControlName=\"noPrice\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-no-price\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoPrice' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"false\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-no-remain-order\"\r\n formControlName=\"noRemainOrder\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-no-remain-order\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoRemainOrder' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-sm-6\" *ngIf=false>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-receiver-channel\"\r\n formControlName=\"receiverChannel\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-receiver-channel\" class=\"form-check-label\">\r\n {{ 'eDonusum::ReceiverChannel' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-sou-who-adr\"\r\n formControlName=\"useSouWhoAdr\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-sou-who-adr\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseSouWhoAdr' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-cus-stock-code\"\r\n formControlName=\"useCusStockCode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-cus-stock-code\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseCusStockCode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-barcode\"\r\n formControlName=\"useBarcode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-barcode\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseBarcode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefScenario.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"params-invoice-default-scenario\"\r\n formControlName=\"defaultScenario\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefDisType.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-dispatch-default-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"params-dispatch-default-dis-type\"\r\n formControlName=\"defaultDisType\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-inventory-tr-address\">\r\n {{ 'eDonusum::InventoryTrAddress' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"paramse-dispatch-inventory-tr-address\"\r\n formControlName=\"inventoryTrAddress\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"inventoryTransferAddressDataSource\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"paramse-dispatch-item-trees-options\"\r\n formControlName=\"itemTreeOption\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-order-reference-fields\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"paramse-dispatch-order-reference-fields\"\r\n formControlName=\"orderReferenceField\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"orderReferenceFields\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonType=\"submit\"\r\n formName=\"paramse-dispatch\"\r\n [disabled]=\"submitButtonDisabled\"\r\n [hidden]=\"IsSubmitButtonHidden\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i10.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i10.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i11.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
122
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsDispatchComponent, decorators: [{
123
125
  type: Component,
124
- args: [{ selector: 'hit-params-dispatch', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsDispatch\" id=\"paramse-dispatch\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-default-dis-serial\">\r\n {{ 'eDonusum::DefaultDisSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"paramse-dispatch-default-dis-serial\" formControlName=\"defaultDisSerial\"\r\n class=\"form-control\" maxlength=\"8\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-def-scenario\"\r\n formControlName=\"useDefScenario\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-def-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-def-dis-type\"\r\n formControlName=\"useDefDisType\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-def-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefDisType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-is-show-batch-n-serial\"\r\n formControlName=\"isShowBatchNSerial\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-no-price\" formControlName=\"noPrice\"\r\n class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-no-price\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoPrice' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-no-remain-order\"\r\n formControlName=\"noRemainOrder\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-no-remain-order\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoRemainOrder' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-sm-6\" *ngIf=false>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-receiver-channel\"\r\n formControlName=\"receiverChannel\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-receiver-channel\" class=\"form-check-label\">\r\n {{ 'eDonusum::ReceiverChannel' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-sou-who-adr\"\r\n formControlName=\"useSouWhoAdr\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-sou-who-adr\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseSouWhoAdr' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-cus-stock-code\"\r\n formControlName=\"useCusStockCode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-cus-stock-code\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseCusStockCode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-barcode\"\r\n formControlName=\"useBarcode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-barcode\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseBarcode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefScenario.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-invoice-default-scenario\" formControlName=\"defaultScenario\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefDisType.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-dispatch-default-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"params-dispatch-default-dis-type\" formControlName=\"defaultDisType\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-inventory-tr-address\">\r\n {{ 'eDonusum::InventoryTrAddress' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-dispatch-inventory-tr-address\"\r\n formControlName=\"inventoryTrAddress\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"inventoryTransferAddressDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-dispatch-item-trees-options\" formControlName=\"itemTreeOption\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-order-reference-fields\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box id=\"paramse-dispatch-order-reference-fields\"\r\n formControlName=\"orderReferenceField\" class=\"form-control\" displayExpr=\"displayName\"\r\n valueExpr=\"id\" [dataSource]=\"orderReferenceFields\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"paramse-dispatch\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
126
+ args: [{ selector: 'hit-params-dispatch', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form\r\n [formGroup]=\"formParamsDispatch\"\r\n id=\"paramse-dispatch\"\r\n (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-sm-2\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-default-dis-serial\">\r\n {{ 'eDonusum::DefaultDisSerial' | abpLocalization }} *\r\n </label>\r\n\r\n <input\r\n id=\"paramse-dispatch-default-dis-serial\"\r\n formControlName=\"defaultDisSerial\"\r\n class=\"form-control\"\r\n maxlength=\"8\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md\">\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-use-def-scenario\"\r\n formControlName=\"useDefScenario\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-use-def-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefScenario' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-use-def-dis-type\"\r\n formControlName=\"useDefDisType\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-use-def-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseDefDisType' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"params-invoice-is-partner-catalog-num\"\r\n formControlName=\"isPartnerCatalogNum\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-num\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogNum' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"params-invoice-is-partner-catalog-desc\"\r\n formControlName=\"isPartnerCatalogDesc\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"params-invoice-is-partner-catalog-desc\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsPartnerCatalogDesc' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-is-show-batch-n-serial\"\r\n formControlName=\"isShowBatchNSerial\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-is-show-batch-n-serial\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsShowBatchNSerial' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"false\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-no-price\"\r\n formControlName=\"noPrice\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-no-price\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoPrice' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"false\">\r\n <div class=\"col-md\">\r\n <div class=\"form-check mb-3\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"paramse-dispatch-no-remain-order\"\r\n formControlName=\"noRemainOrder\"\r\n class=\"form-check-input\"\r\n />\r\n\r\n <label for=\"paramse-dispatch-no-remain-order\" class=\"form-check-label\">\r\n {{ 'eDonusum::NoRemainOrder' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-sm-6\" *ngIf=false>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-receiver-channel\"\r\n formControlName=\"receiverChannel\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-receiver-channel\" class=\"form-check-label\">\r\n {{ 'eDonusum::ReceiverChannel' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-sou-who-adr\"\r\n formControlName=\"useSouWhoAdr\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-sou-who-adr\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseSouWhoAdr' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-cus-stock-code\"\r\n formControlName=\"useCusStockCode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-cus-stock-code\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseCusStockCode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=false>\r\n <div class=\"col-sm-12\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"paramse-dispatch-use-barcode\"\r\n formControlName=\"useBarcode\" class=\"form-check-input\" />\r\n\r\n <label for=\"paramse-dispatch-use-barcode\" class=\"form-check-label\">\r\n {{ 'eDonusum::UseBarcode' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md\">\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefScenario.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-invoice-default-scenario\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultScenario' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"params-invoice-default-scenario\"\r\n formControlName=\"defaultScenario\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"scenarioTypeDataSource\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"formParamsDispatch.controls.useDefDisType.value\">\r\n <div class=\"col-md\">\r\n <div class=\"mb-3\">\r\n <label for=\"params-dispatch-default-dis-type\" class=\"form-check-label\">\r\n {{ 'eDonusum::DefaultInvType' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"params-dispatch-default-dis-type\"\r\n formControlName=\"defaultDisType\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"documentTypeDataSource\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-inventory-tr-address\">\r\n {{ 'eDonusum::InventoryTrAddress' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"paramse-dispatch-inventory-tr-address\"\r\n formControlName=\"inventoryTrAddress\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"inventoryTransferAddressDataSource\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-item-trees-options\">\r\n {{ 'eDonusum::ItemTreesOptions' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"paramse-dispatch-item-trees-options\"\r\n formControlName=\"itemTreeOption\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"itemTreeOptions\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"paramse-dispatch-order-reference-fields\">\r\n {{ 'eDonusum::OrderReferenceField' | abpLocalization }}\r\n </label>\r\n\r\n <dx-select-box\r\n id=\"paramse-dispatch-order-reference-fields\"\r\n formControlName=\"orderReferenceField\"\r\n class=\"form-control\"\r\n displayExpr=\"displayName\"\r\n valueExpr=\"id\"\r\n [dataSource]=\"orderReferenceFields\"\r\n >\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonType=\"submit\"\r\n formName=\"paramse-dispatch\"\r\n [disabled]=\"submitButtonDisabled\"\r\n [hidden]=\"IsSubmitButtonHidden\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
125
127
  }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i1.TrackByService }, { type: i2.ParamseDispatchService }, { type: i3.ConfirmationService }, { type: i4.FormBuilder }, { type: i5.HitParamsDispatchesService }, { type: i3.ToasterService }, { type: i6.HitScenarioTypesService }, { type: i7.HitDocumentTypesService }, { type: i8.HitInventoryTransferAddressesService }]; }, propDecorators: { IsSubmitButtonHidden: [{
126
128
  type: Input
127
129
  }], valid: [{
128
130
  type: Output
129
131
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1kaXNwYXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wYXJhbXMtZGlzcGF0Y2hlcy9oaXQtcGFyYW1zLWRpc3BhdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1kaXNwYXRjaGVzL2hpdC1wYXJhbXMtZGlzcGF0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixXQUFXLEVBQWtDLE1BQU0sY0FBYyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQVlyQyxNQUFNLE9BQU8sMEJBQTBCO0lBaUJyQyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUErQixFQUN2QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sMEJBQXNELEVBQ3RELGNBQThCLEVBQzlCLHVCQUFnRCxFQUNoRCx1QkFBZ0QsRUFDaEQsb0NBQTBFO1FBVDNFLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUFDdkMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDTiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQseUNBQW9DLEdBQXBDLG9DQUFvQyxDQUFzQztRQXRCN0YseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBUXBCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU1QixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQWEzQyxDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxvQ0FBb0MsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RixJQUFJLENBQUMsa0NBQWtDLEdBQUcsSUFBSSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sRUFDSixlQUFlLEVBQ2YsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixPQUFPLEVBQ1Asa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsY0FBYyxFQUNkLG1CQUFtQixFQUNwQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFFakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3RDLGVBQWUsRUFBRSxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLGNBQWMsRUFBRSxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLGdCQUFnQixFQUFFLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUYsY0FBYyxFQUFFLENBQUMsY0FBYyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDN0Msa0JBQWtCLEVBQUUsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3JELGFBQWEsRUFBRSxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQy9CLGtCQUFrQixFQUFFLENBQUMsa0JBQWtCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxlQUFlLEVBQUUsQ0FBQyxlQUFlLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxhQUFhLEVBQUUsQ0FBQyxhQUFhLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxZQUFZLEVBQUUsQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxlQUFlLEVBQUUsQ0FBQyxlQUFlLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxjQUFjLEVBQUUsQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxtQkFBbUIsRUFBRSxDQUFDLG1CQUFtQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDcEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDbkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUMzRDtRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ1osR0FBRyxFQUFFLENBQUM7Z0JBQ04sSUFBSSxFQUFFLENBQUM7Z0JBQ1AsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUVqQyw0REFBNEQ7UUFFNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUI7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUs7YUFDakMsQ0FBQztZQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkQsT0FBTzthQUNKLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNwQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQ2Q7YUFDQSxTQUFTLENBQ1IsS0FBSyxJQUFJLEVBQUU7WUFDVCxrRUFBa0U7WUFFbEUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUUvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBRS9ELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxZQUFxQixLQUFLO1FBQ2hELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBRTlCLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEEzSlUsMEJBQTBCOzJHQUExQiwwQkFBMEIscUlBSjFCLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsMEJDdkI5RSxva2FBd05NOzJGRDdMTywwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUNkLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztxYUFpQm5FLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGRvd25sb2FkQmxvYiwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUGFyYW1zZURpc3BhdGNoRHRvLCBQYXJhbXNlRGlzcGF0Y2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJveHkvcGFyYW1zZS1kaXNwYXRjaGVzJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIaXRQYXJhbXNEaXNwYXRjaGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtcGFyYW1zLWRpc3BhdGNoZXMvaGl0LXBhcmFtcy1kaXNwYXRjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXNjZW5hcmlvLXR5cGVzL2hpdC1zY2VuYXJpby10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXREb2N1bWVudFR5cGVzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZG9jdW1lbnQtdHlwZXMvaGl0LWRvY3VtZW50LXR5cGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdEludmVudG9yeVRyYW5zZmVyQWRkcmVzc2VzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtaW52ZW50b3J5LXRyYW5zZmVyLWFkZHJlc3Nlcy9oaXQtaW52ZW50b3J5LXRyYW5zZmVyLWFkZHJlc3Muc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1kaXNwYXRjaCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1wYXJhbXMtZGlzcGF0Y2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRQYXJhbXNEaXNwYXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9ybVBhcmFtc0Rpc3BhdGNoOiBGb3JtR3JvdXA7XHJcblxyXG4gIHBhcmFtc0Rpc3BhdGNoRHRvPzogUGFyYW1zZURpc3BhdGNoRHRvO1xyXG5cclxuICBzdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzY2VuYXJpb1R5cGVEYXRhU291cmNlOiBhbnk7XHJcbiAgZG9jdW1lbnRUeXBlRGF0YVNvdXJjZTogYW55O1xyXG4gIGludmVudG9yeVRyYW5zZmVyQWRkcmVzc0RhdGFTb3VyY2U6IGFueTtcclxuICBpdGVtVHJlZU9wdGlvbnM6IGFueTtcclxuICBvcmRlclJlZmVyZW5jZUZpZWxkczogYW55O1xyXG5cclxuICBASW5wdXQoKSBJc1N1Ym1pdEJ1dHRvbkhpZGRlbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBQYXJhbXNlRGlzcGF0Y2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zRGlzcGF0Y2hlc1NlcnZpY2U6IEhpdFBhcmFtc0Rpc3BhdGNoZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlOiBIaXRTY2VuYXJpb1R5cGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0RG9jdW1lbnRUeXBlc1NlcnZpY2U6IEhpdERvY3VtZW50VHlwZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBoaXRJbnZlbnRvcnlUcmFuc2ZlckFkZHJlc3Nlc1NlcnZpY2U6IEhpdEludmVudG9yeVRyYW5zZmVyQWRkcmVzc2VzU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgIHRoaXMuaGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UuZ2V0U2NlbmFyaW9UeXBlc0xvb2t1cCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5zY2VuYXJpb1R5cGVEYXRhU291cmNlID0gZGF0YTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaGl0RG9jdW1lbnRUeXBlc1NlcnZpY2UuZ2V0RG9jdW1lbnRUeXBlc0xvb2t1cCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudFR5cGVEYXRhU291cmNlID0gZGF0YTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaGl0SW52ZW50b3J5VHJhbnNmZXJBZGRyZXNzZXNTZXJ2aWNlLmdldEludmVudG9yeVRyYW5zZmVyQWRkcmVzcygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pbnZlbnRvcnlUcmFuc2ZlckFkZHJlc3NEYXRhU291cmNlID0gZGF0YTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaGl0UGFyYW1zRGlzcGF0Y2hlc1NlcnZpY2UuZ2V0SXRlbVRyZWVPcHRpb25zKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLml0ZW1UcmVlT3B0aW9ucyA9IGRhdGE7XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuaGl0UGFyYW1zRGlzcGF0Y2hlc1NlcnZpY2UuZ2V0T3JkZXJSZWZlcmVuY2VGaWVsZHMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJSZWZlcmVuY2VGaWVsZHMgPSBkYXRhO1xyXG4gICAgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0Rpc3BhdGNoKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWZhdWx0U2NlbmFyaW8sXHJcbiAgICAgIGRlZmF1bHREaXNUeXBlLFxyXG4gICAgICBkZWZhdWx0RGlzU2VyaWFsLFxyXG4gICAgICB1c2VEZWZTY2VuYXJpbyxcclxuICAgICAgaXNTaG93QmF0Y2hOU2VyaWFsLFxyXG4gICAgICB1c2VEZWZEaXNUeXBlLFxyXG4gICAgICBub1ByaWNlLFxyXG4gICAgICBpbnZlbnRvcnlUckFkZHJlc3MsXHJcbiAgICAgIHJlY2VpdmVyQ2hhbm5lbCxcclxuICAgICAgbm9SZW1haW5PcmRlcixcclxuICAgICAgdXNlU291V2hvQWRyLFxyXG4gICAgICB1c2VDdXNTdG9ja0NvZGUsXHJcbiAgICAgIHVzZUJhcmNvZGUsXHJcbiAgICAgIGl0ZW1UcmVlT3B0aW9uLFxyXG4gICAgICBvcmRlclJlZmVyZW5jZUZpZWxkXHJcbiAgICB9ID0gdGhpcy5wYXJhbXNEaXNwYXRjaER0byB8fCB7fTtcclxuXHJcbiAgICB0aGlzLmZvcm1QYXJhbXNEaXNwYXRjaCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkZWZhdWx0U2NlbmFyaW86IFtkZWZhdWx0U2NlbmFyaW8gPz8gMCwgW11dLFxyXG4gICAgICBkZWZhdWx0RGlzVHlwZTogW2RlZmF1bHREaXNUeXBlID8/IDAsIFtdXSxcclxuICAgICAgZGVmYXVsdERpc1NlcmlhbDogW2RlZmF1bHREaXNTZXJpYWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMpXV0sXHJcbiAgICAgIHVzZURlZlNjZW5hcmlvOiBbdXNlRGVmU2NlbmFyaW8gPz8gZmFsc2UsIFtdXSxcclxuICAgICAgaXNTaG93QmF0Y2hOU2VyaWFsOiBbaXNTaG93QmF0Y2hOU2VyaWFsID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIHVzZURlZkRpc1R5cGU6IFt1c2VEZWZEaXNUeXBlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIG5vUHJpY2U6IFtub1ByaWNlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIGludmVudG9yeVRyQWRkcmVzczogW2ludmVudG9yeVRyQWRkcmVzcyA/PyAwLCBbXV0sXHJcbiAgICAgIHJlY2VpdmVyQ2hhbm5lbDogW3JlY2VpdmVyQ2hhbm5lbCA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBub1JlbWFpbk9yZGVyOiBbbm9SZW1haW5PcmRlciA/PyBmYWxzZSwgW11dLFxyXG4gICAgICB1c2VTb3VXaG9BZHI6IFt1c2VTb3VXaG9BZHIgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgdXNlQ3VzU3RvY2tDb2RlOiBbdXNlQ3VzU3RvY2tDb2RlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIHVzZUJhcmNvZGU6IFt1c2VCYXJjb2RlID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIGl0ZW1UcmVlT3B0aW9uOiBbaXRlbVRyZWVPcHRpb24gPz8gMCwgW11dLFxyXG4gICAgICBvcmRlclJlZmVyZW5jZUZpZWxkOiBbb3JkZXJSZWZlcmVuY2VGaWVsZCA/PyAwLCBbXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zRGlzcGF0Y2guY29udHJvbHMuZGVmYXVsdERpc1NlcmlhbC52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpGaWxsUmVxdWlyZWRGaWVsZHMnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zRGlzcGF0Y2guY29udHJvbHMuZGVmYXVsdERpc1NlcmlhbC52YWx1ZS5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpFbnRlck1heDNDaGFyYWN0ZXInKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zRGlzcGF0Y2guaW52YWxpZCkge1xyXG4gICAgICB3aW5kb3cuc2Nyb2xsKHtcclxuICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgbGVmdDogMCxcclxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgLy8gdGhpcy50b2FzdGVyU2VydmljZS5pbmZvKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25TdGFydGVkJyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmZvcm1QYXJhbXNEaXNwYXRjaC5jb250cm9scy5kZWZhdWx0U2NlbmFyaW8udmFsdWUpXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoLmNvbnRyb2xzLmRlZmF1bHRTY2VuYXJpby5zZXRWYWx1ZSgwKTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5wYXJhbXNEaXNwYXRjaER0b1xyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5wYXJhbXNEaXNwYXRjaER0by5pZCwge1xyXG4gICAgICAgICAgLi4udGhpcy5mb3JtUGFyYW1zRGlzcGF0Y2gudmFsdWUsXHJcbiAgICAgICAgfSlcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoLnZhbHVlKTtcclxuXHJcbiAgICByZXF1ZXN0XHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoKCkgPT4ge30pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpUcmFuc2FjdGlvblN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0Rpc3BhdGNoKCk7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpUcmFuc2FjdGlvblVuc3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UGFyYW1zRGlzcGF0Y2goYnVpbGRGb3JtOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuaGl0UGFyYW1zRGlzcGF0Y2hlc1NlcnZpY2UuZ2V0UGFyYW1zRGlzcGF0Y2goKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMucGFyYW1zRGlzcGF0Y2hEdG8gPSBkYXRhO1xyXG5cclxuICAgICAgaWYgKGJ1aWxkRm9ybSkgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtc0Rpc3BhdGNoXCIgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLWRlZmF1bHQtZGlzLXNlcmlhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEZWZhdWx0RGlzU2VyaWFsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLWRlZmF1bHQtZGlzLXNlcmlhbFwiIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHREaXNTZXJpYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1kZWYtc2NlbmFyaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZURlZlNjZW5hcmlvXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zZS1kaXNwYXRjaC11c2UtZGVmLXNjZW5hcmlvXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VEZWZTY2VuYXJpbycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1kZWYtZGlzLXR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZURlZkRpc1R5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1kZWYtZGlzLXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlVzZURlZkRpc1R5cGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLWlzLXNob3ctYmF0Y2gtbi1zZXJpYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzU2hvd0JhdGNoTlNlcmlhbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtaXMtc2hvdy1iYXRjaC1uLXNlcmlhbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SXNTaG93QmF0Y2hOU2VyaWFsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtbm8tcHJpY2VcIiBmb3JtQ29udHJvbE5hbWU9XCJub1ByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLW5vLXByaWNlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpOb1ByaWNlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtbm8tcmVtYWluLW9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJub1JlbWFpbk9yZGVyXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zZS1kaXNwYXRjaC1uby1yZW1haW4tb3JkZXJcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok5vUmVtYWluT3JkZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtcmVjZWl2ZXItY2hhbm5lbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVjZWl2ZXJDaGFubmVsXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zZS1kaXNwYXRjaC1yZWNlaXZlci1jaGFubmVsXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpSZWNlaXZlckNoYW5uZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPWZhbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zZS1kaXNwYXRjaC11c2Utc291LXdoby1hZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZVNvdVdob0FkclwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLXNvdS13aG8tYWRyXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VTb3VXaG9BZHInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPWZhbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zZS1kaXNwYXRjaC11c2UtY3VzLXN0b2NrLWNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZUN1c1N0b2NrQ29kZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWN1cy1zdG9jay1jb2RlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VDdXNTdG9ja0NvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPWZhbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFyYW1zZS1kaXNwYXRjaC11c2UtYmFyY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlQmFyY29kZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWJhcmNvZGVcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlVzZUJhcmNvZGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtUGFyYW1zRGlzcGF0Y2guY29udHJvbHMudXNlRGVmU2NlbmFyaW8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1zY2VuYXJpb1wiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlZmF1bHRTY2VuYXJpbycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtcy1pbnZvaWNlLWRlZmF1bHQtc2NlbmFyaW9cIiBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0U2NlbmFyaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNjZW5hcmlvVHlwZURhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZm9ybVBhcmFtc0Rpc3BhdGNoLmNvbnRyb2xzLnVzZURlZkRpc1R5cGUudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWRpc3BhdGNoLWRlZmF1bHQtZGlzLXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEZWZhdWx0SW52VHlwZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtcy1kaXNwYXRjaC1kZWZhdWx0LWRpcy10eXBlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdERpc1R5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRvY3VtZW50VHlwZURhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLWludmVudG9yeS10ci1hZGRyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52ZW50b3J5VHJBZGRyZXNzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwicGFyYW1zZS1kaXNwYXRjaC1pbnZlbnRvcnktdHItYWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImludmVudG9yeVRyQWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlkXCIgW2RhdGFTb3VyY2VdPVwiaW52ZW50b3J5VHJhbnNmZXJBZGRyZXNzRGF0YVNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLWl0ZW0tdHJlZXMtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Okl0ZW1UcmVlc09wdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLWl0ZW0tdHJlZXMtb3B0aW9uc1wiIGZvcm1Db250cm9sTmFtZT1cIml0ZW1UcmVlT3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCIgdmFsdWVFeHByPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJpdGVtVHJlZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtb3JkZXItcmVmZXJlbmNlLWZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyUmVmZXJlbmNlRmllbGQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLW9yZGVyLXJlZmVyZW5jZS1maWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmRlclJlZmVyZW5jZUZpZWxkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBkaXNwbGF5RXhwcj1cImRpc3BsYXlOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVFeHByPVwiaWRcIiBbZGF0YVNvdXJjZV09XCJvcmRlclJlZmVyZW5jZUZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1sZy1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwicGFyYW1zZS1kaXNwYXRjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdEJ1dHRvbkRpc2FibGVkXCIgW2hpZGRlbl09XCJJc1N1Ym1pdEJ1dHRvbkhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1kaXNwYXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wYXJhbXMtZGlzcGF0Y2hlcy9oaXQtcGFyYW1zLWRpc3BhdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1kaXNwYXRjaGVzL2hpdC1wYXJhbXMtZGlzcGF0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixXQUFXLEVBQWtDLE1BQU0sY0FBYyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQVlyQyxNQUFNLE9BQU8sMEJBQTBCO0lBaUJyQyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUErQixFQUN2QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sMEJBQXNELEVBQ3RELGNBQThCLEVBQzlCLHVCQUFnRCxFQUNoRCx1QkFBZ0QsRUFDaEQsb0NBQTBFO1FBVDNFLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUFDdkMsaUJBQVksR0FB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QUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUUvRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsWUFBcUIsS0FBSztRQUNoRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUU5QixJQUFJLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUhBL0pVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHFJQUoxQixDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLDBCQ3ZCOUUsaythQWlUQTsyRkR0UmEsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLHFCQUFxQixtQkFDZCx1QkFBdUIsQ0FBQyxPQUFPLGFBQ3JDLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7cWFBaUJuRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBkb3dubG9hZEJsb2IsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0bywgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhcmFtc2VEaXNwYXRjaER0bywgUGFyYW1zZURpc3BhdGNoU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3h5L3BhcmFtc2UtZGlzcGF0Y2hlcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zRGlzcGF0Y2hlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXBhcmFtcy1kaXNwYXRjaGVzL2hpdC1wYXJhbXMtZGlzcGF0Y2guc2VydmljZSc7XHJcbmltcG9ydCB7IEhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1zY2VuYXJpby10eXBlcy9oaXQtc2NlbmFyaW8tdHlwZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGl0RG9jdW1lbnRUeXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWRvY3VtZW50LXR5cGVzL2hpdC1kb2N1bWVudC10eXBlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRJbnZlbnRvcnlUcmFuc2ZlckFkZHJlc3Nlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWludmVudG9yeS10cmFuc2Zlci1hZGRyZXNzZXMvaGl0LWludmVudG9yeS10cmFuc2Zlci1hZGRyZXNzLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hpdC1wYXJhbXMtZGlzcGF0Y2gnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtcGFyYW1zLWRpc3BhdGNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0UGFyYW1zRGlzcGF0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGZvcm1QYXJhbXNEaXNwYXRjaDogRm9ybUdyb3VwO1xyXG5cclxuICBwYXJhbXNEaXNwYXRjaER0bz86IFBhcmFtc2VEaXNwYXRjaER0bztcclxuXHJcbiAgc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgc2NlbmFyaW9UeXBlRGF0YVNvdXJjZTogYW55O1xyXG4gIGRvY3VtZW50VHlwZURhdGFTb3VyY2U6IGFueTtcclxuICBpbnZlbnRvcnlUcmFuc2ZlckFkZHJlc3NEYXRhU291cmNlOiBhbnk7XHJcbiAgaXRlbVRyZWVPcHRpb25zOiBhbnk7XHJcbiAgb3JkZXJSZWZlcmVuY2VGaWVsZHM6IGFueTtcclxuXHJcbiAgQElucHV0KCkgSXNTdWJtaXRCdXR0b25IaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSB0cmFjazogVHJhY2tCeVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUGFyYW1zZURpc3BhdGNoU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFBhcmFtc0Rpc3BhdGNoZXNTZXJ2aWNlOiBIaXRQYXJhbXNEaXNwYXRjaGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBoaXRTY2VuYXJpb1R5cGVzU2VydmljZTogSGl0U2NlbmFyaW9UeXBlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdERvY3VtZW50VHlwZXNTZXJ2aWNlOiBIaXREb2N1bWVudFR5cGVzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0SW52ZW50b3J5VHJhbnNmZXJBZGRyZXNzZXNTZXJ2aWNlOiBIaXRJbnZlbnRvcnlUcmFuc2ZlckFkZHJlc3Nlc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmhpdFNjZW5hcmlvVHlwZXNTZXJ2aWNlLmdldFNjZW5hcmlvVHlwZXNMb29rdXAoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuc2NlbmFyaW9UeXBlRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdERvY3VtZW50VHlwZXNTZXJ2aWNlLmdldERvY3VtZW50VHlwZXNMb29rdXAoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdEludmVudG9yeVRyYW5zZmVyQWRkcmVzc2VzU2VydmljZS5nZXRJbnZlbnRvcnlUcmFuc2ZlckFkZHJlc3MoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuaW52ZW50b3J5VHJhbnNmZXJBZGRyZXNzRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdFBhcmFtc0Rpc3BhdGNoZXNTZXJ2aWNlLmdldEl0ZW1UcmVlT3B0aW9ucygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pdGVtVHJlZU9wdGlvbnMgPSBkYXRhO1xyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmhpdFBhcmFtc0Rpc3BhdGNoZXNTZXJ2aWNlLmdldE9yZGVyUmVmZXJlbmNlRmllbGRzKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLm9yZGVyUmVmZXJlbmNlRmllbGRzID0gZGF0YTtcclxuICAgIH0pXHJcblxyXG4gICAgYXdhaXQgdGhpcy5nZXRQYXJhbXNEaXNwYXRjaCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVmYXVsdFNjZW5hcmlvLFxyXG4gICAgICBkZWZhdWx0RGlzVHlwZSxcclxuICAgICAgZGVmYXVsdERpc1NlcmlhbCxcclxuICAgICAgdXNlRGVmU2NlbmFyaW8sXHJcbiAgICAgIGlzU2hvd0JhdGNoTlNlcmlhbCxcclxuICAgICAgdXNlRGVmRGlzVHlwZSxcclxuICAgICAgbm9QcmljZSxcclxuICAgICAgaW52ZW50b3J5VHJBZGRyZXNzLFxyXG4gICAgICByZWNlaXZlckNoYW5uZWwsXHJcbiAgICAgIG5vUmVtYWluT3JkZXIsXHJcbiAgICAgIHVzZVNvdVdob0FkcixcclxuICAgICAgdXNlQ3VzU3RvY2tDb2RlLFxyXG4gICAgICB1c2VCYXJjb2RlLFxyXG4gICAgICBpdGVtVHJlZU9wdGlvbixcclxuICAgICAgb3JkZXJSZWZlcmVuY2VGaWVsZCxcclxuICAgICAgaXNQYXJ0bmVyQ2F0YWxvZ051bSxcclxuICAgICAgaXNQYXJ0bmVyQ2F0YWxvZ0Rlc2NcclxuICAgIH0gPSB0aGlzLnBhcmFtc0Rpc3BhdGNoRHRvIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGRlZmF1bHRTY2VuYXJpbzogW2RlZmF1bHRTY2VuYXJpbyA/PyAwLCBbXV0sXHJcbiAgICAgIGRlZmF1bHREaXNUeXBlOiBbZGVmYXVsdERpc1R5cGUgPz8gMCwgW11dLFxyXG4gICAgICBkZWZhdWx0RGlzU2VyaWFsOiBbZGVmYXVsdERpc1NlcmlhbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMyldXSxcclxuICAgICAgdXNlRGVmU2NlbmFyaW86IFt1c2VEZWZTY2VuYXJpbyA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBpc1Nob3dCYXRjaE5TZXJpYWw6IFtpc1Nob3dCYXRjaE5TZXJpYWwgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgaXNQYXJ0bmVyQ2F0YWxvZ051bTogW2lzUGFydG5lckNhdGFsb2dOdW0gPz8gZmFsc2UsIFtdXSxcclxuICAgICAgaXNQYXJ0bmVyQ2F0YWxvZ0Rlc2M6IFtpc1BhcnRuZXJDYXRhbG9nRGVzYyA/PyBmYWxzZSwgW11dLFxyXG4gICAgICB1c2VEZWZEaXNUeXBlOiBbdXNlRGVmRGlzVHlwZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBub1ByaWNlOiBbbm9QcmljZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBpbnZlbnRvcnlUckFkZHJlc3M6IFtpbnZlbnRvcnlUckFkZHJlc3MgPz8gMCwgW11dLFxyXG4gICAgICByZWNlaXZlckNoYW5uZWw6IFtyZWNlaXZlckNoYW5uZWwgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgbm9SZW1haW5PcmRlcjogW25vUmVtYWluT3JkZXIgPz8gZmFsc2UsIFtdXSxcclxuICAgICAgdXNlU291V2hvQWRyOiBbdXNlU291V2hvQWRyID8/IGZhbHNlLCBbXV0sXHJcbiAgICAgIHVzZUN1c1N0b2NrQ29kZTogW3VzZUN1c1N0b2NrQ29kZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICB1c2VCYXJjb2RlOiBbdXNlQmFyY29kZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgICBpdGVtVHJlZU9wdGlvbjogW2l0ZW1UcmVlT3B0aW9uID8/IDAsIFtdXSxcclxuICAgICAgb3JkZXJSZWZlcmVuY2VGaWVsZDogW29yZGVyUmVmZXJlbmNlRmllbGQgPz8gMCwgW11dLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoLmNvbnRyb2xzLmRlZmF1bHREaXNTZXJpYWwudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RmlsbFJlcXVpcmVkRmllbGRzJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoLmNvbnRyb2xzLmRlZmF1bHREaXNTZXJpYWwudmFsdWUubGVuZ3RoID4gMykge1xyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RW50ZXJNYXgzQ2hhcmFjdGVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoLmludmFsaWQpIHtcclxuICAgICAgd2luZG93LnNjcm9sbCh7XHJcbiAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3RhcnRlZCcpO1xyXG5cclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW1zRGlzcGF0Y2guY29udHJvbHMuZGVmYXVsdFNjZW5hcmlvLnZhbHVlKVxyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNEaXNwYXRjaC5jb250cm9scy5kZWZhdWx0U2NlbmFyaW8uc2V0VmFsdWUoMCk7XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucGFyYW1zRGlzcGF0Y2hEdG9cclxuICAgICAgPyB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMucGFyYW1zRGlzcGF0Y2hEdG8uaWQsIHtcclxuICAgICAgICAgIC4uLnRoaXMuZm9ybVBhcmFtc0Rpc3BhdGNoLnZhbHVlLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm1QYXJhbXNEaXNwYXRjaC52YWx1ZSk7XHJcblxyXG4gICAgcmVxdWVzdFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFwKCgpID0+IHt9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25TdWNjZXNzZnVsJyk7XHJcblxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRQYXJhbXNEaXNwYXRjaCgpO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsaWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25VbnN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFBhcmFtc0Rpc3BhdGNoKGJ1aWxkRm9ybTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmhpdFBhcmFtc0Rpc3BhdGNoZXNTZXJ2aWNlLmdldFBhcmFtc0Rpc3BhdGNoKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnBhcmFtc0Rpc3BhdGNoRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmIChidWlsZEZvcm0pIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICA8Zm9ybVxyXG4gICAgICBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbXNEaXNwYXRjaFwiXHJcbiAgICAgIGlkPVwicGFyYW1zZS1kaXNwYXRjaFwiXHJcbiAgICAgIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIlxyXG4gICAgICB2YWxpZGF0ZU9uU3VibWl0XHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLWRlZmF1bHQtZGlzLXNlcmlhbFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RGVmYXVsdERpc1NlcmlhbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLWRlZmF1bHQtZGlzLXNlcmlhbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdERpc1NlcmlhbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjhcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWRlZi1zY2VuYXJpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VEZWZTY2VuYXJpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1kZWYtc2NlbmFyaW9cIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VXNlRGVmU2NlbmFyaW8nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWRlZi1kaXMtdHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VEZWZEaXNUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWRlZi1kaXMtdHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VEZWZEaXNUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhcmFtcy1pbnZvaWNlLWlzLXBhcnRuZXItY2F0YWxvZy1udW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNQYXJ0bmVyQ2F0YWxvZ051bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXMtaW52b2ljZS1pcy1wYXJ0bmVyLWNhdGFsb2ctbnVtXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzUGFydG5lckNhdGFsb2dOdW0nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFyYW1zLWludm9pY2UtaXMtcGFydG5lci1jYXRhbG9nLWRlc2NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNQYXJ0bmVyQ2F0YWxvZ0Rlc2NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zLWludm9pY2UtaXMtcGFydG5lci1jYXRhbG9nLWRlc2NcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SXNQYXJ0bmVyQ2F0YWxvZ0Rlc2MnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtaXMtc2hvdy1iYXRjaC1uLXNlcmlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc1Nob3dCYXRjaE5TZXJpYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGFyYW1zZS1kaXNwYXRjaC1pcy1zaG93LWJhdGNoLW4tc2VyaWFsXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzU2hvd0JhdGNoTlNlcmlhbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtbm8tcHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibm9QcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLW5vLXByaWNlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok5vUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLW5vLXJlbWFpbi1vcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJub1JlbWFpbk9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtbm8tcmVtYWluLW9yZGVyXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok5vUmVtYWluT3JkZXInIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1zbS02XCIgKm5nSWY9ZmFsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9ZmFsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXNlLWRpc3BhdGNoLXJlY2VpdmVyLWNoYW5uZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlY2VpdmVyQ2hhbm5lbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtcmVjZWl2ZXItY2hhbm5lbFwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6UmVjZWl2ZXJDaGFubmVsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLXNvdS13aG8tYWRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VTb3VXaG9BZHJcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1zb3Utd2hvLWFkclwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VXNlU291V2hvQWRyJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWN1cy1zdG9jay1jb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VDdXNTdG9ja0NvZGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1jdXMtc3RvY2stY29kZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6VXNlQ3VzU3RvY2tDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1mYWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtdXNlLWJhcmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZUJhcmNvZGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLXVzZS1iYXJjb2RlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpVc2VCYXJjb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZm9ybVBhcmFtc0Rpc3BhdGNoLmNvbnRyb2xzLnVzZURlZlNjZW5hcmlvLnZhbHVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1pbnZvaWNlLWRlZmF1bHQtc2NlbmFyaW9cIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpEZWZhdWx0U2NlbmFyaW8nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgICAgICAgICAgIGlkPVwicGFyYW1zLWludm9pY2UtZGVmYXVsdC1zY2VuYXJpb1wiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRTY2VuYXJpb1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwic2NlbmFyaW9UeXBlRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtUGFyYW1zRGlzcGF0Y2guY29udHJvbHMudXNlRGVmRGlzVHlwZS52YWx1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXMtZGlzcGF0Y2gtZGVmYXVsdC1kaXMtdHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkRlZmF1bHRJbnZUeXBlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveFxyXG4gICAgICAgICAgICAgICAgICBpZD1cInBhcmFtcy1kaXNwYXRjaC1kZWZhdWx0LWRpcy10eXBlXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdERpc1R5cGVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRvY3VtZW50VHlwZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLWludmVudG9yeS10ci1hZGRyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6SW52ZW50b3J5VHJBZGRyZXNzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveFxyXG4gICAgICAgICAgICAgICAgICBpZD1cInBhcmFtc2UtZGlzcGF0Y2gtaW52ZW50b3J5LXRyLWFkZHJlc3NcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnZlbnRvcnlUckFkZHJlc3NcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImludmVudG9yeVRyYW5zZmVyQWRkcmVzc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXNlLWRpc3BhdGNoLWl0ZW0tdHJlZXMtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Okl0ZW1UcmVlc09wdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgICAgICAgICAgIGlkPVwicGFyYW1zZS1kaXNwYXRjaC1pdGVtLXRyZWVzLW9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpdGVtVHJlZU9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiaXRlbVRyZWVPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtc2UtZGlzcGF0Y2gtb3JkZXItcmVmZXJlbmNlLWZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06Ok9yZGVyUmVmZXJlbmNlRmllbGQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94XHJcbiAgICAgICAgICAgICAgICAgIGlkPVwicGFyYW1zZS1kaXNwYXRjaC1vcmRlci1yZWZlcmVuY2UtZmllbGRzXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JkZXJSZWZlcmVuY2VGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwib3JkZXJSZWZlcmVuY2VGaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWxnLWVuZFwiPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXHJcbiAgICAgICAgICBidXR0b25UeXBlPVwic3VibWl0XCJcclxuICAgICAgICAgIGZvcm1OYW1lPVwicGFyYW1zZS1kaXNwYXRjaFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0QnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICAgICAgW2hpZGRlbl09XCJJc1N1Ym1pdEJ1dHRvbkhpZGRlblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==