@mediusinc/mng-commons 5.5.0 → 6.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/action/action-parameters.model.d.ts +4 -4
- package/core/data-providers/base.data-provider.d.ts +4 -7
- package/core/data-providers/lookup.data-provider.d.ts +2 -2
- package/core/descriptors/model.descriptor.d.ts +1 -7
- package/core/descriptors/tableview.descriptor.d.ts +5 -5
- package/core/helpers/notification.d.ts +17 -1
- package/core/helpers/route.d.ts +0 -1
- package/core/helpers/type-helpers.d.ts +8 -0
- package/core/i18n/i18n-error.d.ts +2 -3
- package/core/index.d.ts +0 -3
- package/core/models/menu.model.d.ts +0 -4
- package/core/router/route-builder.d.ts +1 -1
- package/core/services/commons.service.d.ts +0 -32
- package/core/services/tokens/module-config.token.d.ts +0 -28
- package/esm2022/core/action/action-parameters.model.mjs +1 -1
- package/esm2022/core/data-providers/base.data-provider.mjs +2 -4
- package/esm2022/core/data-providers/lookup.data-provider.mjs +1 -1
- package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
- package/esm2022/core/helpers/notification.mjs +19 -4
- package/esm2022/core/helpers/type-helpers.mjs +1 -1
- package/esm2022/core/i18n/i18n-error.mjs +10 -8
- package/esm2022/core/index.mjs +1 -4
- package/esm2022/core/models/menu.model.mjs +1 -1
- package/esm2022/core/router/route-builder.mjs +2 -2
- package/esm2022/core/services/commons.service.mjs +1 -34
- package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +5 -86
- package/esm2022/filter/descriptors/filter.descriptor.mjs +7 -29
- package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +14 -41
- package/esm2022/form/api/data-providers/lookup.data-provider.mjs +3 -3
- package/esm2022/form/api/descriptors/action-button.descriptor.mjs +5 -17
- package/esm2022/form/api/descriptors/button-style.builder.mjs +80 -101
- package/esm2022/form/api/index.mjs +2 -1
- package/esm2022/form/api/models/button.model.mjs +2 -0
- package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +5 -0
- package/esm2022/model/class/descriptors/model-class.descriptor.mjs +28 -0
- package/esm2022/model/class/descriptors/type-class.descriptor.mjs +6 -0
- package/esm2022/model/class/helpers/model.mjs +53 -0
- package/esm2022/model/class/index.mjs +8 -0
- package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +5 -0
- package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +11 -6
- package/esm2022/model/descriptors/model.descriptor.mjs +11 -54
- package/esm2022/model/descriptors/type.descriptor.mjs +2 -10
- package/esm2022/model/helpers/i18n.mjs +14 -9
- package/esm2022/model/index.mjs +1 -2
- package/esm2022/table/api/class/class-table-attribute-converter.mjs +80 -0
- package/esm2022/table/api/class/class-table-attribute.model.mjs +2 -0
- package/esm2022/table/api/class/class-table-data-provider.factory.mjs +5 -0
- package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +99 -0
- package/esm2022/table/api/class/class-table-descriptor.factory.mjs +21 -0
- package/esm2022/table/api/class/index.mjs +6 -0
- package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +5 -0
- package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +14 -41
- package/esm2022/table/api/data-providers/table.data-provider.mjs +3 -9
- package/esm2022/table/api/descriptors/column.descriptor.mjs +8 -3
- package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +10 -77
- package/esm2022/table/api/descriptors/table.descriptor.mjs +3 -3
- package/esm2022/table/api/helpers/column-converter.mjs +25 -0
- package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +4 -4
- package/esm2022/table/api/index.mjs +2 -4
- package/esm2022/table/api/models/table-columns.model.mjs +1 -1
- package/esm2022/table/components/column-value/column-value.component.mjs +7 -5
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +3 -3
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +5 -5
- package/esm2022/table/components/table/table.component.mjs +17 -18
- package/esm2022/table/helpers/notification.mjs +19 -13
- package/esm2022/tableview/action/components/action/action.component.mjs +41 -37
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +22 -13
- package/esm2022/tableview/action/helpers/action-execution.mjs +1 -1
- package/esm2022/tableview/action/helpers/i18n.mjs +50 -30
- package/esm2022/tableview/action/helpers/notification.mjs +73 -12
- package/esm2022/tableview/action/helpers/styles.mjs +2 -2
- package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/action/services/action-executor.service.mjs +92 -75
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +18 -3
- package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +13 -104
- package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +15 -62
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +35 -82
- package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +20 -33
- package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +1 -1
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +54 -95
- package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +21 -0
- package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +21 -0
- package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +37 -0
- package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +40 -0
- package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +25 -5
- package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +2 -0
- package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +1 -1
- package/esm2022/tableview/api/action/models/action-error.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +6 -6
- package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +3 -3
- package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +85 -0
- package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +2 -0
- package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +5 -0
- package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +95 -0
- package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +21 -0
- package/esm2022/tableview/api/class/index.mjs +13 -0
- package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +5 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +35 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +2 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +5 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +111 -0
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +26 -0
- package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +14 -32
- package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +40 -7
- package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +7 -73
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +49 -134
- package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +14 -8
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +11 -2
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +3 -5
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +2 -18
- package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +51 -0
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.event.mjs +1 -1
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +1 -1
- package/esm2022/tableview/api/index.mjs +9 -9
- package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +13 -51
- package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +19 -11
- package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +19 -96
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +29 -182
- package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +8 -6
- package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +4 -4
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +154 -106
- package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +164 -7
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +2 -0
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +2 -0
- package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +1 -1
- package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +1 -1
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +5 -8
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +7 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +34 -23
- package/esm2022/tableview/editor/helpers/editor-field.mjs +3 -3
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +4 -4
- package/esm2022/tableview/editor/helpers/field-create.mjs +21 -0
- package/esm2022/tableview/index.mjs +3 -2
- package/esm2022/tableview/provide.mjs +44 -1
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +1 -1
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +3 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +715 -792
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +10 -113
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs +144 -203
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model-class.mjs +97 -0
- package/fesm2022/mediusinc-mng-commons-model-class.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-model.mjs +35 -144
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api-class.mjs +204 -0
- package/fesm2022/mediusinc-mng-commons-table-api-class.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +55 -319
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +45 -38
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs +367 -0
- package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +850 -1483
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +421 -220
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter-lookup.descriptor.d.ts +1 -26
- package/filter/descriptors/filter.descriptor.d.ts +5 -12
- package/form/api/data-providers/lookup-data-provider.factory.d.ts +17 -20
- package/form/api/data-providers/lookup.data-provider.d.ts +3 -3
- package/form/api/descriptors/action-button.descriptor.d.ts +11 -13
- package/form/api/descriptors/button-style.builder.d.ts +30 -44
- package/form/api/index.d.ts +1 -0
- package/form/api/models/button.model.d.ts +19 -0
- package/i18n/sl.json +56 -6
- package/model/class/README.md +8 -0
- package/model/class/data-providers/base-from-class-data-provider.factory.d.ts +3 -0
- package/model/class/descriptors/model-class.descriptor.d.ts +12 -0
- package/model/class/descriptors/type-class.descriptor.d.ts +3 -0
- package/model/{helpers → class/helpers}/model.d.ts +1 -2
- package/model/class/index.d.ts +4 -0
- package/model/data-providers/base-from-type-data-provider.factory.d.ts +13 -6
- package/model/descriptors/model.descriptor.d.ts +12 -27
- package/model/descriptors/type.descriptor.d.ts +0 -5
- package/model/helpers/i18n.d.ts +8 -3
- package/model/index.d.ts +0 -1
- package/package.json +25 -7
- package/table/api/class/README.md +10 -0
- package/table/api/{helpers/class-attribute-converter.d.ts → class/class-table-attribute-converter.d.ts} +2 -9
- package/table/api/{models → class}/class-table-attribute.model.d.ts +1 -1
- package/table/api/class/class-table-data-provider.factory.d.ts +4 -0
- package/table/api/{helpers/table-descriptor-helpers.d.ts → class/class-table-descriptor-helpers.d.ts} +2 -4
- package/table/api/class/class-table-descriptor.factory.d.ts +11 -0
- package/table/api/class/index.d.ts +5 -0
- package/table/api/data-providers/table-data-provider.factory.d.ts +17 -20
- package/table/api/data-providers/table.data-provider.d.ts +4 -12
- package/table/api/descriptors/column.descriptor.d.ts +5 -2
- package/table/api/descriptors/table-descriptor.factory.d.ts +3 -39
- package/table/api/descriptors/table.descriptor.d.ts +3 -3
- package/table/api/helpers/column-converter.d.ts +7 -0
- package/table/api/helpers/table-data-provider-descriptor-convert.d.ts +3 -3
- package/table/api/index.d.ts +1 -3
- package/table/api/models/table-columns.model.d.ts +2 -2
- package/table/components/column-value/column-value.component.d.ts +2 -0
- package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +1 -1
- package/table/components/filter/filter-form/filter-form.component.d.ts +1 -1
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +1 -1
- package/table/components/table/table.component.d.ts +0 -10
- package/table/helpers/notification.d.ts +10 -1
- package/tableview/action/components/action/action.component.d.ts +10 -13
- package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +6 -5
- package/tableview/action/components/localization/data-language-dropdown.component.d.ts +3 -3
- package/tableview/action/components/table/action-table.component.d.ts +3 -3
- package/tableview/action/helpers/action-execution.d.ts +1 -1
- package/tableview/action/helpers/i18n.d.ts +36 -11
- package/tableview/action/helpers/notification.d.ts +37 -3
- package/tableview/action/models/execution/action-context.model.d.ts +3 -3
- package/tableview/action/models/execution/action-instance.model.d.ts +5 -5
- package/tableview/action/services/action-executor.service.d.ts +7 -7
- package/tableview/action/services/data-provider-executor.service.d.ts +16 -16
- package/tableview/action/services/view-container.service.d.ts +1 -1
- package/tableview/api/action/descriptors/action-descriptor.factory.d.ts +20 -31
- package/tableview/api/action/descriptors/action-editor-descriptor.factory.d.ts +18 -25
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +39 -47
- package/tableview/api/action/descriptors/action-link-descriptor.factory.d.ts +21 -13
- package/tableview/api/action/descriptors/action-link.descriptor.d.ts +3 -3
- package/tableview/api/action/descriptors/action.descriptor.d.ts +49 -60
- package/tableview/api/action/descriptors/editor-action-descriptor.factory.d.ts +21 -0
- package/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.d.ts +21 -0
- package/tableview/api/action/descriptors/table-action-descriptor.factory.d.ts +36 -0
- package/tableview/api/action/descriptors/table-action-editor-descriptor.factory.d.ts +40 -0
- package/tableview/api/action/helpers/data-provider-executors.d.ts +13 -8
- package/tableview/api/action/models/action-confirmation.model.d.ts +14 -0
- package/tableview/api/action/models/action-descriptor.types.d.ts +6 -2
- package/tableview/api/action/models/action-error.model.d.ts +1 -1
- package/tableview/api/action/models/execution/action-context-validation.model.d.ts +2 -2
- package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
- package/tableview/api/action/models/execution/action-instance.model.d.ts +1 -1
- package/tableview/api/action/models/tableview-action-default-categories.model.d.ts +5 -5
- package/tableview/api/action/services/data-provider-executor.service.d.ts +26 -25
- package/tableview/api/class/README.md +13 -0
- package/tableview/api/{editor/helpers/class-attribute-converter.d.ts → class/editor/class-editor-attribute-converter.d.ts} +2 -2
- package/tableview/api/{editor/models/class-tableview-attribute.model.d.ts → class/editor/class-editor-attribute.model.d.ts} +1 -1
- package/tableview/api/class/editor/class-editor-data-provider.factory.d.ts +4 -0
- package/tableview/api/{editor/helpers/editor-descriptor-helpers.d.ts → class/editor/class-editor-descriptor-helpers.d.ts} +2 -5
- package/tableview/api/class/editor/class-editor-descriptor.factory.d.ts +11 -0
- package/tableview/api/class/index.d.ts +10 -0
- package/tableview/api/{tableview/helpers/class-attribute-converter.d.ts → class/tableview/class-tableview-attribute-converter.d.ts} +1 -1
- package/tableview/api/{tableview/models → class/tableview}/class-tableview-attribute.model.d.ts +2 -2
- package/tableview/api/class/tableview/class-tableview-data-provider.factory.d.ts +4 -0
- package/tableview/api/{tableview/helpers/tableview-descriptor-helpers.d.ts → class/tableview/class-tableview-descriptor-helpers.d.ts} +1 -2
- package/tableview/api/class/tableview/class-tableview-descriptor.factory.d.ts +12 -0
- package/tableview/api/editor/data-providers/editor-data-provider.factory.d.ts +17 -16
- package/tableview/api/editor/data-providers/editor.data-provider.d.ts +64 -29
- package/tableview/api/editor/descriptors/editor-descriptor.factory.d.ts +5 -38
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +48 -112
- package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +5 -5
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +8 -1
- package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +2 -3
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +3 -11
- package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +25 -0
- package/tableview/api/editor/models/editor-fields.model.d.ts +25 -21
- package/tableview/api/editor/models/form-editor.event.d.ts +0 -4
- package/tableview/api/index.d.ts +8 -7
- package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +20 -25
- package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +22 -22
- package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +20 -50
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +69 -163
- package/tableview/api/tableview/helpers/tableview-create.d.ts +18 -5
- package/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.d.ts +2 -2
- package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +73 -20
- package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +87 -9
- package/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.d.ts +9 -0
- package/tableview/api/tableview/models/tableview-descriptor-helper.type.d.ts +2 -0
- package/tableview/api/tableview/models/tableview-input.model.d.ts +1 -1
- package/tableview/api/tableview/models/tableview-route.model.d.ts +1 -1
- package/tableview/editor/helpers/field-create.d.ts +9 -0
- package/tableview/index.d.ts +2 -1
- package/tableview/provide.d.ts +7 -0
- package/tableview/tableview/components/route/tableview-route.component.d.ts +1 -1
- package/tableview/tableview/components/tableview/tableview.component.d.ts +6 -6
- package/version-info.json +6 -6
- package/core/components/pages/error/error.page.component.d.ts +0 -11
- package/core/components/pages/not-found/not-found.page.component.d.ts +0 -11
- package/core/data-providers/base-data-provider.factory.d.ts +0 -13
- package/esm2022/core/components/pages/error/error.page.component.mjs +0 -24
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +0 -24
- package/esm2022/core/data-providers/base-data-provider.factory.mjs +0 -28
- package/esm2022/model/helpers/model.mjs +0 -71
- package/esm2022/table/api/helpers/class-attribute-converter.mjs +0 -104
- package/esm2022/table/api/helpers/table-descriptor-helpers.mjs +0 -98
- package/esm2022/table/api/models/class-table-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +0 -88
- package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +0 -85
- package/esm2022/tableview/api/editor/helpers/editor-descriptor-helpers.mjs +0 -95
- package/esm2022/tableview/api/editor/models/class-tableview-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +0 -34
- package/esm2022/tableview/api/tableview/helpers/tableview-descriptor-helpers.mjs +0 -110
- package/esm2022/tableview/api/tableview/models/class-tableview-attribute.model.mjs +0 -2
- package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +0 -37
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
import { CommonsInternalError, StyleSizeEnum } from '@mediusinc/mng-commons/core';
|
|
2
|
-
import { ActionButtonDescriptor, ButtonStyleBuilder } from '@mediusinc/mng-commons/form/api';
|
|
3
2
|
import { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';
|
|
4
3
|
import { ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';
|
|
5
|
-
import { TableviewActionDefaultCategories } from '../models/tableview-action-default-categories.model';
|
|
6
4
|
import { ActionDescriptorInst } from './action.descriptor';
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
5
|
export class ActionEditorDescriptorInst extends ActionDescriptorInst {
|
|
9
6
|
constructor(editorDescriptor, actionName, cfg) {
|
|
10
7
|
super(actionName, {
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
...cfg,
|
|
9
|
+
model: cfg?.model ?? editorDescriptor.model
|
|
13
10
|
});
|
|
14
11
|
this._dataProvider = undefined;
|
|
15
12
|
this._editorActions = [];
|
|
16
13
|
this._editorTitle = undefined;
|
|
17
14
|
this._editorTitleParams = undefined;
|
|
18
|
-
this._hasFetchNotificationSuccess = false;
|
|
19
15
|
this._dialogSize = StyleSizeEnum.Normal;
|
|
20
16
|
this._resubmitRefetch = true;
|
|
21
17
|
this._unsavedChangesConfirmation = false;
|
|
22
|
-
this._isTableviewMainEditor = cfg?.isTableviewMainEditor ?? false;
|
|
23
18
|
if (cfg?.serviceType) {
|
|
24
|
-
this._dataProvider = new EditorDataProviderInst(
|
|
19
|
+
this._dataProvider = new EditorDataProviderInst(cfg.serviceType);
|
|
25
20
|
}
|
|
26
21
|
else if (cfg?.dataProvider) {
|
|
27
22
|
this._dataProvider = cfg.dataProvider;
|
|
@@ -30,9 +25,6 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
|
|
|
30
25
|
this._editorDescriptor = editorDescriptor;
|
|
31
26
|
this._editorActions.push(actionEditorSubmit(this), actionEditorCancel(this));
|
|
32
27
|
}
|
|
33
|
-
get isTableviewMainEditor() {
|
|
34
|
-
return this._isTableviewMainEditor;
|
|
35
|
-
}
|
|
36
28
|
get editorTitle() {
|
|
37
29
|
return this._editorTitle;
|
|
38
30
|
}
|
|
@@ -48,14 +40,11 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
|
|
|
48
40
|
get dialogClassName() {
|
|
49
41
|
return this._dialogClassName;
|
|
50
42
|
}
|
|
51
|
-
get
|
|
52
|
-
return this.
|
|
53
|
-
}
|
|
54
|
-
get fetchNotificationSuccessTitle() {
|
|
55
|
-
return this._fetchNotificationSuccessTitle;
|
|
43
|
+
get fetchNotificationOnSuccess() {
|
|
44
|
+
return this._fetchNotificationOnSuccess;
|
|
56
45
|
}
|
|
57
|
-
get
|
|
58
|
-
return this.
|
|
46
|
+
get fetchNotificationOnError() {
|
|
47
|
+
return this._fetchNotificationOnError;
|
|
59
48
|
}
|
|
60
49
|
get dataProvider() {
|
|
61
50
|
return this._dataProvider;
|
|
@@ -117,10 +106,20 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
|
|
|
117
106
|
this._submitFunction = fn;
|
|
118
107
|
return this;
|
|
119
108
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.
|
|
111
|
+
*
|
|
112
|
+
* @param opts Provide config for texts or on/off flag for submit (is same as run) or fetch success/error notifications.
|
|
113
|
+
*/
|
|
114
|
+
withNotifications(opts) {
|
|
115
|
+
super.withNotifications(typeof opts === 'boolean'
|
|
116
|
+
? opts
|
|
117
|
+
: {
|
|
118
|
+
runOnSuccess: opts?.submitOnSuccess ?? opts?.runOnSuccess,
|
|
119
|
+
runOnError: opts?.submitOnError ?? opts?.runOnError
|
|
120
|
+
});
|
|
121
|
+
this._fetchNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.fetchOnSuccess;
|
|
122
|
+
this._fetchNotificationOnError = typeof opts === 'boolean' ? opts : opts?.fetchOnError;
|
|
124
123
|
return this;
|
|
125
124
|
}
|
|
126
125
|
withEditorAction(action) {
|
|
@@ -157,9 +156,8 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
|
|
|
157
156
|
descriptor._editorActions = this._editorActions.map(a => a.copy());
|
|
158
157
|
descriptor._editorTitle = this._editorTitle;
|
|
159
158
|
descriptor._editorTitleParams = this._editorTitleParams != null ? { ...this._editorTitleParams } : undefined;
|
|
160
|
-
descriptor.
|
|
161
|
-
descriptor.
|
|
162
|
-
descriptor._fetchNotificationSuccessMessage = this._fetchNotificationSuccessMessage;
|
|
159
|
+
descriptor._fetchNotificationOnSuccess = typeof this._fetchNotificationOnSuccess === 'object' ? { ...this._fetchNotificationOnSuccess } : this._fetchNotificationOnSuccess;
|
|
160
|
+
descriptor._fetchNotificationOnError = typeof this._fetchNotificationOnError === 'object' ? { ...this._fetchNotificationOnError } : this._fetchNotificationOnError;
|
|
163
161
|
descriptor._dialogSize = this._dialogSize;
|
|
164
162
|
descriptor._dialogClassName = this._dialogClassName;
|
|
165
163
|
descriptor._fetchFunction = this._fetchFunction;
|
|
@@ -203,7 +201,11 @@ export class ActionEditorSubmitDescriptorInst extends ActionDescriptorInst {
|
|
|
203
201
|
* @param submitType
|
|
204
202
|
*/
|
|
205
203
|
export function actionEditorSubmit(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {
|
|
206
|
-
return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).
|
|
204
|
+
return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({
|
|
205
|
+
style: {
|
|
206
|
+
level: editorAction.button?.style?.level
|
|
207
|
+
}
|
|
208
|
+
});
|
|
207
209
|
}
|
|
208
210
|
/**
|
|
209
211
|
* creates secondary button with text button style
|
|
@@ -211,60 +213,11 @@ export function actionEditorSubmit(editorAction, submitType = ActionEditorSubmit
|
|
|
211
213
|
* @param submitType
|
|
212
214
|
*/
|
|
213
215
|
export function actionEditorCancel(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {
|
|
214
|
-
return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
this.withPosition(ActionPositionEnum.RowClick);
|
|
221
|
-
this.withRouteTrigger(':itemId');
|
|
222
|
-
this.withEditorActions([actionEditorCancel(this)]);
|
|
223
|
-
this.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);
|
|
224
|
-
}
|
|
225
|
-
copy() {
|
|
226
|
-
const descriptor = new ActionEditorDetailsDescriptorInst(this.editorDescriptor.copy(), {
|
|
227
|
-
dataProvider: this._dataProvider
|
|
228
|
-
});
|
|
229
|
-
this.copyFieldsTo(descriptor);
|
|
230
|
-
return descriptor;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
export class ActionEditorAddDescriptorInst extends ActionEditorDescriptorInst {
|
|
234
|
-
static { this.ACTION_NAME = 'add'; }
|
|
235
|
-
constructor(editorDescriptor, cfg) {
|
|
236
|
-
super(editorDescriptor, ActionEditorAddDescriptorInst.ACTION_NAME, { ...cfg, isTableviewMainEditor: true });
|
|
237
|
-
this.withPosition(ActionPositionEnum.ToolbarLeft);
|
|
238
|
-
this.withRouteTrigger('add');
|
|
239
|
-
this.button.withIcon('pi pi-plus');
|
|
240
|
-
this.withTableviewCategory(TableviewActionDefaultCategories.ADD);
|
|
241
|
-
this.withUnsavedChangesConfirmation();
|
|
242
|
-
}
|
|
243
|
-
copy() {
|
|
244
|
-
const descriptor = new ActionEditorAddDescriptorInst(this.editorDescriptor.copy(), {
|
|
245
|
-
dataProvider: this._dataProvider
|
|
246
|
-
});
|
|
247
|
-
this.copyFieldsTo(descriptor);
|
|
248
|
-
return descriptor;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
export class ActionEditorEditDescriptorInst extends ActionEditorDescriptorInst {
|
|
252
|
-
static { this.ACTION_NAME = 'edit'; }
|
|
253
|
-
constructor(editorDescriptor, cfg) {
|
|
254
|
-
super(editorDescriptor, ActionEditorEditDescriptorInst.ACTION_NAME, { ...cfg, isTableviewMainEditor: true });
|
|
255
|
-
this.withPosition(ActionPositionEnum.RowInline);
|
|
256
|
-
this.button.styleClass.withSize(StyleSizeEnum.Small);
|
|
257
|
-
this.withRouteTrigger(':itemId/edit');
|
|
258
|
-
this.withTableviewCategory(TableviewActionDefaultCategories.EDIT);
|
|
259
|
-
this.button.withLabel(null).withIcon('pi pi-pencil');
|
|
260
|
-
this.withUnsavedChangesConfirmation();
|
|
261
|
-
}
|
|
262
|
-
copy() {
|
|
263
|
-
const descriptor = new ActionEditorEditDescriptorInst(this.editorDescriptor.copy(), {
|
|
264
|
-
dataProvider: this._dataProvider
|
|
265
|
-
});
|
|
266
|
-
this.copyFieldsTo(descriptor);
|
|
267
|
-
return descriptor;
|
|
268
|
-
}
|
|
216
|
+
return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({
|
|
217
|
+
style: {
|
|
218
|
+
textButton: true,
|
|
219
|
+
level: editorAction.button?.style?.level
|
|
220
|
+
}
|
|
221
|
+
});
|
|
269
222
|
}
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xHLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRzNGLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUU3RyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFckcsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDckcsT0FBTyxFQUF1QyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBYS9GLDZEQUE2RDtBQUM3RCxNQUFNLE9BQU8sMEJBQWdHLFNBQVEsb0JBQW1DO0lBeUJwSixZQUFtQixnQkFBaUQsRUFBRSxVQUFrQixFQUFFLEdBQThEO1FBQ3BKLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDZCxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztZQUM3QixHQUFHLEdBQUc7U0FDVCxDQUFDLENBQUM7UUEzQnFCLGtCQUFhLEdBQW9DLFNBQVMsQ0FBQztRQUc3RSxtQkFBYyxHQUFpQyxFQUFFLENBQUM7UUFDbEQsaUJBQVksR0FBbUIsU0FBUyxDQUFDO1FBQ3pDLHVCQUFrQixHQUFTLFNBQVMsQ0FBQztRQUVyQyxpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFJckMsZ0JBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBU25DLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixnQ0FBMkIs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QkFBcUIsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRVEsSUFBSTtRQUNULE1BQU0sVUFBVSxHQUFHLElBQUksOEJBQThCLENBQWlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgU2VydmljZUNsYXNzVHlwZSwgU3R5bGVTaXplRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QWN0aW9uQnV0dG9uRGVzY3JpcHRvciwgQnV0dG9uU3R5bGVCdWlsZGVyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtFZGl0b3JEYXRhUHJvdmlkZXJJbnN0LCBJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZWRpdG9yL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0lBY3Rpb25Db250ZXh0fSBmcm9tICcuLi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctYWN0aW9uLWRlZmF1bHQtY2F0ZWdvcmllcy5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4vYWN0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxNb2RlbCwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiAmIHtcbiAgICAgICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgICAgICBpc1RhYmxldmlld01haW5FZGl0b3I/OiBib29sZWFuO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSA9IGFueSwgRmV0Y2hJbnB1dEl0ZW0gPSBJdGVtLCBTdWJtaXRSZXR1cm5JdGVtID0gSXRlbT4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgYW55PjtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PiA9IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVGFibGV2aWV3TWFpbkVkaXRvcjogYm9vbGVhbjtcblxuICAgIHByb3RlY3RlZCBfZWRpdG9yQWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbT5bXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGVQYXJhbXM/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9kaWFsb2dTaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWw7XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiAoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBTZXJ2aWNlPikgPT4gT2JzZXJ2YWJsZTxJdGVtPjtcbiAgICBwcm90ZWN0ZWQgX3N1Ym1pdEZ1bmN0aW9uPzogKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgU2VydmljZT4pID0+IE9ic2VydmFibGU8SXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRvckNvbXBvbmVudD86IFR5cGU8YW55PjtcblxuICAgIHByb3RlY3RlZCBfcmVzdWJtaXRFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0UmVmZXRjaCA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIGFueT4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgbW9kZWw6IGVkaXRvckRlc2NyaXB0b3IubW9kZWwsXG4gICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5faXNUYWJsZXZpZXdNYWluRWRpdG9yID0gY2ZnPy5pc1RhYmxldmlld01haW5FZGl0b3IgPz8gZmFsc2U7XG5cbiAgICAgICAgaWYgKGNmZz8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IG5ldyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PEl0ZW0sIFNlcnZpY2U+KHRoaXMuX21vZGVsPy50eXBlLCBjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHlwZSA9IEFjdGlvblR5cGVFbnVtLkVkaXRvcjtcbiAgICAgICAgdGhpcy5fZWRpdG9yRGVzY3JpcHRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb25FZGl0b3JTdWJtaXQodGhpcyksIGFjdGlvbkVkaXRvckNhbmNlbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1RhYmxldmlld01haW5FZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1RhYmxldmlld01haW5FZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGVQYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBoYXNSdW5GdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBSdW4gZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgaW4gZWRpdG9yIGFjdGlvbiBmb3IgJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30uIFVzZSBzdWJtaXQgZnVuY3Rpb24gaW5zdGVhZGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgcnVuRnVuY3Rpb24oKTogKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgdW5rbm93bj4pID0+IE9ic2VydmFibGU8SXRlbT4ge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBlZGl0b3IgYWN0aW9uIGZvciAke3RoaXMuX2FjdGlvbk5hbWVMb25nfS4gVXNlIHN1Ym1pdCBmdW5jdGlvbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNGZXRjaEZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2ZldGNoRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1N1Ym1pdEZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2ZldGNoRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JDb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1Ym1pdEVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1Ym1pdFJlZmV0Y2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2g7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yVGl0bGUodGl0bGU6IHN0cmluZyB8IG51bGwsIHBhcmFtcz86IGFueSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dTaXplKHNpemUgPSBTdHlsZVNpemVFbnVtLk5vcm1hbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dTaXplID0gc2l6ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFJ1bkZ1bmN0aW9uKGZuOiAoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBTZXJ2aWNlPikgPT4gT2JzZXJ2YWJsZTxJdGVtPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oZm4gYXMgKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgU2VydmljZT4pID0+IE9ic2VydmFibGU8SXRlbT4pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmV0Y2hGdW5jdGlvbihmbjogKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgU2VydmljZT4pID0+IE9ic2VydmFibGU8SXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1Ym1pdEZ1bmN0aW9uKGZuOiAoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBTZXJ2aWNlPikgPT4gT2JzZXJ2YWJsZTxJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJtaXRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoTm90aWZpY2F0aW9uRXJyb3IodGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzID0gaGFzTm90aWZpY2F0aW9uO1xuICAgICAgICB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JBY3Rpb24oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JBY3Rpb25zKGFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0+W10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQ29tcG9uZW50KGVkaXRvckNvbXBvbmVudDogVHlwZTxhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckNvbXBvbmVudCA9IGVkaXRvckNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBvciBkaXNhYmxlcyByZXN1Ym1pdCByZXN1Ym1pdCAtIHRoaXMgbWVhbnMgdGhlIGZvcm0gd2lsbCBub3QgZXhpdCBhZnRlciBzdWNjZXNzZnVsIHN1Ym1pc3Npb24sIGJ1dCB3aWxsIGluc3RlYWQgcmVtYWluIG9wZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtlbmFibGVkPXRydWVdIC0gU3BlY2lmaWVzIHdoZXRoZXIgcmVzdWJtaXQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gRGVmYXVsdHMgdG8gdHJ1ZSBpZiBub3QgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmVmZXRjaD10cnVlXSAtIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHNob3VsZCBiZSByZWZldGNoZWQgYWZ0ZXIgcmVzdWJtaXQuIElmIG5vdCwgdGhlIGRhdGEgaW4gdGhlIGZvcm0gc3RheXMgYXMgaXMuIERlZmF1bHRzIHRvIHRydWUgaWYgbm90IHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSB3aXRoIHRoZSByZXN1Ym1pdCBjb25maWd1cmF0aW9uIHVwZGF0ZWQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSZXN1Ym1pdChlbmFibGVkPzogYm9vbGVhbiwgcmVmZXRjaCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcmVzdWJtaXRFbmFibGVkID0gZW5hYmxlZDtcbiAgICAgICAgdGhpcy5fcmVzdWJtaXRSZWZldGNoID0gcmVmZXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhVbnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbih1bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB1bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29weUZpZWxkc1RvKFxuICAgICAgICBkZXNjcmlwdG9yOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbT5cbiAgICApOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbT4ge1xuICAgICAgICBzdXBlci5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvckFjdGlvbnMgPSB0aGlzLl9lZGl0b3JBY3Rpb25zLm1hcChhID0+IGEuY29weSgpKTtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yVGl0bGUgPSB0aGlzLl9lZGl0b3JUaXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yVGl0bGVQYXJhbXMgPSB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcyAhPSBudWxsID8gey4uLnRoaXMuX2VkaXRvclRpdGxlUGFyYW1zfSA6IHVuZGVmaW5lZDtcbiAgICAgICAgZGVzY3JpcHRvci5faGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzID0gdGhpcy5faGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSA9IHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGlhbG9nU2l6ZSA9IHRoaXMuX2RpYWxvZ1NpemU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RpYWxvZ0NsYXNzTmFtZSA9IHRoaXMuX2RpYWxvZ0NsYXNzTmFtZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZmV0Y2hGdW5jdGlvbiA9IHRoaXMuX2ZldGNoRnVuY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX3N1Ym1pdEZ1bmN0aW9uID0gdGhpcy5fc3VibWl0RnVuY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRvckNvbXBvbmVudCA9IHRoaXMuX2VkaXRvckNvbXBvbmVudDtcbiAgICAgICAgZGVzY3JpcHRvci5fcmVzdWJtaXRFbmFibGVkID0gdGhpcy5fcmVzdWJtaXRFbmFibGVkO1xuICAgICAgICBkZXNjcmlwdG9yLl9yZXN1Ym1pdFJlZmV0Y2ggPSB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2g7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdGhpcy5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb247XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvcHkoKTogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+IHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gdGhpcy5fZWRpdG9yRGVzY3JpcHRvci5jb3B5KCk7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+KGVkaXRvciwgdGhpcy5fYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsPiBleHRlbmRzIEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWw+KHRoaXMuX2FjdGlvbk5hbWUuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpLCB0aGlzLl9tb2RlbD8uY29weSgpLCB0aGlzLl9zdWJtaXRUeXBlKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjcmVhdGVzIHByaW1hcnkgYWN0aW9uIHdpdGggcHJpbWFyeSBidXR0b24gc3R5bGVcbiAqIEBwYXJhbSBlZGl0b3JBY3Rpb25cbiAqIEBwYXJhbSBzdWJtaXRUeXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25FZGl0b3JTdWJtaXQ8TW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXRcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9ySW5zdChlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uRGVzY3JpcHRvcihcbiAgICAgICAgbmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoU3R5bGVDbGFzcyhuZXcgQnV0dG9uU3R5bGVCdWlsZGVyKCkud2l0aEFjdGlvbkxldmVsKGVkaXRvckFjdGlvbi5sZXZlbCkpXG4gICAgKTtcbn1cblxuLyoqXG4gKiBjcmVhdGVzIHNlY29uZGFyeSBidXR0b24gd2l0aCB0ZXh0IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvckNhbmNlbDxNb2RlbD4oXG4gICAgZWRpdG9yQWN0aW9uOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbD4sXG4gICAgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLkNhbmNlbFxuKTogQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWw+IHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0KGVkaXRvckFjdGlvbi5hY3Rpb25OYW1lLCBlZGl0b3JBY3Rpb24ubW9kZWwsIHN1Ym1pdFR5cGUpLndpdGhCdXR0b25EZXNjcmlwdG9yKFxuICAgICAgICBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhTdHlsZUNsYXNzKG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIoKS53aXRoVGV4dEJ1dHRvbigpLndpdGhBY3Rpb25MZXZlbChlZGl0b3JBY3Rpb24ubGV2ZWwpKVxuICAgICk7XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UgPSBhbnk+IGV4dGVuZHMgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9OQU1FID0gJ2RldGFpbHMnO1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueT4sIGNmZz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICBzdXBlcihlZGl0b3JEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3QuQUNUSU9OX05BTUUsIHsuLi5jZmcsIGlzVGFibGV2aWV3TWFpbkVkaXRvcjogdHJ1ZX0pO1xuICAgICAgICB0aGlzLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2spO1xuICAgICAgICB0aGlzLndpdGhSb3V0ZVRyaWdnZXIoJzppdGVtSWQnKTtcbiAgICAgICAgdGhpcy53aXRoRWRpdG9yQWN0aW9ucyhbYWN0aW9uRWRpdG9yQ2FuY2VsKHRoaXMpXSk7XG4gICAgICAgIHRoaXMud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFMpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvcHkoKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPih0aGlzLmVkaXRvckRlc2NyaXB0b3IuY29weSgpLCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlclxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55PiBleHRlbmRzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05fTkFNRSA9ICdhZGQnO1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueT4sIGNmZz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICBzdXBlcihlZGl0b3JEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9ySW5zdC5BQ1RJT05fTkFNRSwgey4uLmNmZywgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlfSk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCk7XG4gICAgICAgIHRoaXMud2l0aFJvdXRlVHJpZ2dlcignYWRkJyk7XG4gICAgICAgIHRoaXMuYnV0dG9uLndpdGhJY29uKCdwaSBwaS1wbHVzJyk7XG4gICAgICAgIHRoaXMud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERCk7XG4gICAgICAgIHRoaXMud2l0aFVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPih0aGlzLmVkaXRvckRlc2NyaXB0b3IuY29weSgpLCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlclxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZSA9IGFueT4gZXh0ZW5kcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4ge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OX05BTUUgPSAnZWRpdCc7XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55PiwgY2ZnPzogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHN1cGVyKGVkaXRvckRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdC5BQ1RJT05fTkFNRSwgey4uLmNmZywgaXNUYWJsZXZpZXdNYWluRWRpdG9yOiB0cnVlfSk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xuICAgICAgICB0aGlzLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uU21hbGwpO1xuICAgICAgICB0aGlzLndpdGhSb3V0ZVRyaWdnZXIoJzppdGVtSWQvZWRpdCcpO1xuICAgICAgICB0aGlzLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUKTtcbiAgICAgICAgdGhpcy5idXR0b24ud2l0aExhYmVsKG51bGwpLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcbiAgICAgICAgdGhpcy53aXRoVW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4odGhpcy5lZGl0b3JEZXNjcmlwdG9yLmNvcHkoKSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR2xHLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUc3RyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckcsT0FBTyxFQUF1QyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBYS9GLE1BQU0sT0FBTywwQkFPWCxTQUFRLG9CQUFzRjtJQXVCNUYsWUFBbUIsZ0JBQXVELEVBQUUsVUFBa0IsRUFBRSxHQUE4RDtRQUMxSixLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2QsR0FBRyxHQUFHO1lBQ04sS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUssZ0JBQWdCLENBQUMsS0FBMEM7U0FDcEYsQ0FBQyxDQUFDO1FBekJxQixrQkFBYSxHQUFvQyxTQUFTLENBQUM7UUFFN0UsbUJBQWMsR0FBa0UsRUFBRSxDQUFDO1FBQ25GLGlCQUFZLEdBQW1CLFNBQVMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBUyxTQUFTLENBQUM7UUFLckMsZ0JBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBU25DLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixnQ0FBMkIsR0FBRyxLQUFLLENBQUM7UUFRMUMsSUFBSSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHNCQUFzQixDQUFnQixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFD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QUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ3BJLEtBQUssRUFBRTtZQUNILEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO1NBQzNDO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQzlCLFlBQWdGLEVBQ2hGLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxNQUFNO0lBRTlDLE9BQU8sSUFBSSxnQ0FBZ0MsQ0FBcUIsWUFBWSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNwSSxLQUFLLEVBQUU7WUFDSCxVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSztTQUMzQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBTZXJ2aWNlQ2xhc3NUeXBlLCBTdHlsZVNpemVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckluc3QsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Ob3RpZmljYXRpb25UeXBlLCBBY3Rpb25SdW5GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLCBBY3Rpb25Qb3NpdGlvbkVudW0sIEFjdGlvblR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICZcbiAgICBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gJiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIGRhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PFxuICAgIEl0ZW0sXG4gICAgU2VydmljZSA9IGFueSxcbiAgICBFZGl0b3JJdGVtID0gSXRlbSxcbiAgICBGZXRjaElucHV0SXRlbSA9IEl0ZW0sXG4gICAgU3VibWl0UmV0dXJuSXRlbSA9IEl0ZW0sXG4gICAgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW1cbj4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9ySXRlbSwgYW55PjtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PiA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfZWRpdG9yQWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT5bXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGVQYXJhbXM/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcblxuICAgIHByb3RlY3RlZCBfZGlhbG9nU2l6ZSA9IFN0eWxlU2l6ZUVudW0uTm9ybWFsO1xuICAgIHByb3RlY3RlZCBfZGlhbG9nQ2xhc3NOYW1lPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9mZXRjaEZ1bmN0aW9uPzogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEZldGNoSW5wdXRJdGVtLCBFZGl0b3JJdGVtPjtcbiAgICBwcm90ZWN0ZWQgX3N1Ym1pdEZ1bmN0aW9uPzogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+O1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JDb21wb25lbnQ/OiBUeXBlPGFueT47XG5cbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0RW5hYmxlZD86IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9yZXN1Ym1pdFJlZmV0Y2ggPSB0cnVlO1xuICAgIHByb3RlY3RlZCBfdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JJdGVtLCBhbnk+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEl0ZW0sIFNlcnZpY2U+KSB7XG4gICAgICAgIHN1cGVyKGFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLmNmZyxcbiAgICAgICAgICAgIG1vZGVsOiBjZmc/Lm1vZGVsID8/IChlZGl0b3JEZXNjcmlwdG9yLm1vZGVsIGFzIHVua25vd24gYXMgTW9kZWxEZXNjcmlwdG9yPEl0ZW0+KVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoY2ZnPy5zZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8SXRlbSwgU2VydmljZT4oY2ZnLnNlcnZpY2VUeXBlKTtcbiAgICAgICAgfSBlbHNlIGlmIChjZmc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gY2ZnLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3R5cGUgPSBBY3Rpb25UeXBlRW51bS5FZGl0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckRlc2NyaXB0b3IgPSBlZGl0b3JEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zLnB1c2goYWN0aW9uRWRpdG9yU3VibWl0KHRoaXMpLCBhY3Rpb25FZGl0b3JDYW5jZWwodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvclRpdGxlUGFyYW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yVGl0bGVQYXJhbXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpYWxvZ1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dTaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlhbG9nQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoTm90aWZpY2F0aW9uT25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBlZGl0b3IgYWN0aW9uIGZvciAke3RoaXMuX2FjdGlvbk5hbWVMb25nfS4gVXNlIHN1Ym1pdCBmdW5jdGlvbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBydW5GdW5jdGlvbigpOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT4ge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBlZGl0b3IgYWN0aW9uIGZvciAke3RoaXMuX2FjdGlvbk5hbWVMb25nfS4gVXNlIHN1Ym1pdCBmdW5jdGlvbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNGZXRjaEZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2ZldGNoRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1N1Ym1pdEZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2ZldGNoRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JDb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1Ym1pdEVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1Ym1pdFJlZmV0Y2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2g7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yVGl0bGUodGl0bGU6IHN0cmluZyB8IG51bGwsIHBhcmFtcz86IGFueSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dTaXplKHNpemUgPSBTdHlsZVNpemVFbnVtLk5vcm1hbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dTaXplID0gc2l6ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFN1Ym1pdEZ1bmN0aW9uKGZuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBGZXRjaElucHV0SXRlbSwgRWRpdG9ySXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1Ym1pdEZ1bmN0aW9uKGZuOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3VibWl0RnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVmYXVsdCBub3RpZmljYXRpb25zIHNldHVwLiBOb3RpZmljYXRpb25zIGNhbiBlaXRoZXIgYmUgb3ZlcnJpZGRlbiB3aXRoIGN1c3RvbSB0ZXh0IG9yIHR1cm5lZCBvbi9vZmYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0cyBQcm92aWRlIGNvbmZpZyBmb3IgdGV4dHMgb3Igb24vb2ZmIGZsYWcgZm9yIHN1Ym1pdCAoaXMgc2FtZSBhcyBydW4pIG9yIGZldGNoIHN1Y2Nlc3MvZXJyb3Igbm90aWZpY2F0aW9ucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aE5vdGlmaWNhdGlvbnMoXG4gICAgICAgIG9wdHM/OlxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBzdWJtaXRPblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIHN1Ym1pdE9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIHJ1bk9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcnVuT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgZmV0Y2hPblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIGZldGNoT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgc3VwZXIud2l0aE5vdGlmaWNhdGlvbnMoXG4gICAgICAgICAgICB0eXBlb2Ygb3B0cyA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgICAgICAgPyBvcHRzXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcnVuT25TdWNjZXNzOiBvcHRzPy5zdWJtaXRPblN1Y2Nlc3MgPz8gb3B0cz8ucnVuT25TdWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICAgIHJ1bk9uRXJyb3I6IG9wdHM/LnN1Ym1pdE9uRXJyb3IgPz8gb3B0cz8ucnVuT25FcnJvclxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8uZmV0Y2hPblN1Y2Nlc3M7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvciA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8uZmV0Y2hPbkVycm9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBFZGl0b3JJdGVtLCBhbnksIEVkaXRvckl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbnMoYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT5bXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JDb21wb25lbnQoZWRpdG9yQ29tcG9uZW50OiBUeXBlPGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQ29tcG9uZW50ID0gZWRpdG9yQ29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHJlc3VibWl0IHJlc3VibWl0IC0gdGhpcyBtZWFucyB0aGUgZm9ybSB3aWxsIG5vdCBleGl0IGFmdGVyIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiwgYnV0IHdpbGwgaW5zdGVhZCByZW1haW4gb3Blbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2VuYWJsZWQ9dHJ1ZV0gLSBTcGVjaWZpZXMgd2hldGhlciByZXN1Ym1pdCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZWZldGNoPXRydWVdIC0gU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgc2hvdWxkIGJlIHJlZmV0Y2hlZCBhZnRlciByZXN1Ym1pdC4gSWYgbm90LCB0aGUgZGF0YSBpbiB0aGUgZm9ybSBzdGF5cyBhcyBpcy4gRGVmYXVsdHMgdG8gdHJ1ZSBpZiBub3QgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggdGhlIHJlc3VibWl0IGNvbmZpZ3VyYXRpb24gdXBkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJlc3VibWl0KGVuYWJsZWQ/OiBib29sZWFuLCByZWZldGNoID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2ggPSByZWZldGNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5RmllbGRzVG8oXG4gICAgICAgIGRlc2NyaXB0b3I6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPlxuICAgICk6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgICAgIHN1cGVyLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yQWN0aW9ucyA9IHRoaXMuX2VkaXRvckFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JUaXRsZSA9IHRoaXMuX2VkaXRvclRpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JUaXRsZVBhcmFtcyA9IHRoaXMuX2VkaXRvclRpdGxlUGFyYW1zICE9IG51bGwgPyB7Li4udGhpcy5fZWRpdG9yVGl0bGVQYXJhbXN9IDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2Vzc30gOiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICAgICAgZGVzY3JpcHRvci5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvciA9PT0gJ29iamVjdCcgPyB7Li4udGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yfSA6IHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcjtcblxuICAgICAgICBkZXNjcmlwdG9yLl9kaWFsb2dTaXplID0gdGhpcy5fZGlhbG9nU2l6ZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGlhbG9nQ2xhc3NOYW1lID0gdGhpcy5fZGlhbG9nQ2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaEZ1bmN0aW9uID0gdGhpcy5fZmV0Y2hGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fc3VibWl0RnVuY3Rpb24gPSB0aGlzLl9zdWJtaXRGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yQ29tcG9uZW50ID0gdGhpcy5fZWRpdG9yQ29tcG9uZW50O1xuICAgICAgICBkZXNjcmlwdG9yLl9yZXN1Ym1pdEVuYWJsZWQgPSB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Jlc3VibWl0UmVmZXRjaCA9IHRoaXMuX3Jlc3VibWl0UmVmZXRjaDtcbiAgICAgICAgZGVzY3JpcHRvci5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yLmNvcHkoKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4oZWRpdG9yLCB0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLl9tb2RlbD8uY29weSgpLFxuICAgICAgICAgICAgcGFyZW50TW9kZWw6IHRoaXMuX3BhcmVudE1vZGVsLFxuICAgICAgICAgICAgcGFyZW50UHJvcGVydHk6IHRoaXMuX3BhcmVudFByb3BlcnR5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBFZGl0b3JNb2RlbCwgRWRpdG9yTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4odGhpcy5fYWN0aW9uTmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHRoaXMuX21vZGVsPy5jb3B5KCksIHRoaXMuX3N1Ym1pdFR5cGUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG4vKipcbiAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvclN1Ym1pdDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnk+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXRcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPihlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uT3B0cyh7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBsZXZlbDogZWRpdG9yQWN0aW9uLmJ1dHRvbj8uc3R5bGU/LmxldmVsXG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjcmVhdGVzIHNlY29uZGFyeSBidXR0b24gd2l0aCB0ZXh0IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvckNhbmNlbDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnk+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5DYW5jZWxcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPihlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uT3B0cyh7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICB0ZXh0QnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgbGV2ZWw6IGVkaXRvckFjdGlvbi5idXR0b24/LnN0eWxlPy5sZXZlbFxuICAgICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1,45 +1,32 @@
|
|
|
1
|
-
import { ModelDescriptor } from '@mediusinc/mng-commons/model';
|
|
2
1
|
import { ActionLinkDescriptorInst } from './action-link.descriptor';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return actionLinkFromClass(type, actionName, cfg);
|
|
12
|
-
}
|
|
13
|
-
static fromAction(action) {
|
|
14
|
-
return actionLinkFromAction(action);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export function actionLink(actionName, cfg) {
|
|
18
|
-
return new ActionLinkDescriptorInst(actionName, {
|
|
19
|
-
...cfg
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
export function actionLinkFromModel(model, actionName, cfg) {
|
|
23
|
-
return new ActionLinkDescriptorInst(actionName, {
|
|
24
|
-
model,
|
|
25
|
-
...cfg
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
export function actionLinkFromClass(type, actionName, cfg) {
|
|
2
|
+
/**
|
|
3
|
+
* Creates an instance of ActionLinkDescriptorInst with the provided action name and options.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} actionName - The unique name of the action.
|
|
6
|
+
* @param {ActionLinkCreateOptsType<Model, ValidationInput>} [opts] - Optional parameters for configuring the action link, including the model and validation type.
|
|
7
|
+
* @return {ActionLinkDescriptorInst<Model, ValidationInput>} An instance of ActionLinkDescriptorInst initialized with the action name and options.
|
|
8
|
+
*/
|
|
9
|
+
export function actionLink(actionName, opts) {
|
|
29
10
|
return new ActionLinkDescriptorInst(actionName, {
|
|
30
|
-
|
|
31
|
-
|
|
11
|
+
...opts,
|
|
12
|
+
model: opts?.model
|
|
32
13
|
});
|
|
33
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Generates an ActionLinkDescriptorInst from the provided ActionDescriptorInst.
|
|
17
|
+
*
|
|
18
|
+
* @param {ActionDescriptorInst<Model, any, any, any, ValidationInput>} action - The action descriptor instance that serves as the basis for the action link.
|
|
19
|
+
* @return {ActionLinkDescriptorInst<Model, ValidationInput>} A newly created ActionLinkDescriptorInst configured with the provided action parameters.
|
|
20
|
+
*/
|
|
34
21
|
export function actionLinkFromAction(action) {
|
|
35
22
|
const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });
|
|
36
23
|
action.copyFieldsTo(descriptor);
|
|
37
|
-
|
|
38
|
-
descriptor.
|
|
39
|
-
descriptor.
|
|
24
|
+
// disable confirmation and notifications
|
|
25
|
+
descriptor.withRunConfirmation(false);
|
|
26
|
+
descriptor.withNotifications(false);
|
|
40
27
|
descriptor.withAfterRunAction();
|
|
41
28
|
descriptor.withOnRunErrorAction();
|
|
42
29
|
descriptor.withSubactionsAsMenu(false);
|
|
43
30
|
return descriptor;
|
|
44
31
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUF1QyxVQUFrQixFQUFFLElBQXVEO0lBQ3hJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBeUIsVUFBVSxFQUFFO1FBQ3BFLEdBQUcsSUFBSTtRQUNQLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWlDLE1BQW1FO0lBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQXlCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFbEgsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyx5Q0FBeUM7SUFDekMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxudHlwZSBBY3Rpb25MaW5rQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJiB7XG4gICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgIHZhbGlkYXRpb25UeXBlPzogVHlwZURlc2NyaXB0b3I8VmFsaWRhdGlvbklucHV0Pjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Qgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uIG5hbWUgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uTGlua0NyZWF0ZU9wdHNUeXBlPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+fSBbb3B0c10gLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGxpbmssIGluY2x1ZGluZyB0aGUgbW9kZWwgYW5kIHZhbGlkYXRpb24gdHlwZS5cbiAqIEByZXR1cm4ge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0IGluaXRpYWxpemVkIHdpdGggdGhlIGFjdGlvbiBuYW1lIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGluazxNb2RlbCA9IGFueSwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KGFjdGlvbk5hbWU6IHN0cmluZywgb3B0cz86IEFjdGlvbkxpbmtDcmVhdGVPcHRzVHlwZTxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCBmcm9tIHRoZSBwcm92aWRlZCBBY3Rpb25EZXNjcmlwdG9ySW5zdC5cbiAqXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55LCBWYWxpZGF0aW9uSW5wdXQ+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvciB0aGUgYWN0aW9uIGxpbmsuXG4gKiBAcmV0dXJuIHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD59IEEgbmV3bHkgY3JlYXRlZCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBhY3Rpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbmtGcm9tQWN0aW9uPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQgPSBNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueSwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgIC8vIGRpc2FibGUgY29uZmlybWF0aW9uIGFuZCBub3RpZmljYXRpb25zXG4gICAgZGVzY3JpcHRvci53aXRoUnVuQ29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhOb3RpZmljYXRpb25zKGZhbHNlKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aEFmdGVyUnVuQWN0aW9uKCk7XG4gICAgZGVzY3JpcHRvci53aXRoT25SdW5FcnJvckFjdGlvbigpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoU3ViYWN0aW9uc0FzTWVudShmYWxzZSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdfQ==
|
|
@@ -71,4 +71,4 @@ export class ActionLinkDescriptorInst extends ActionDescriptorInst {
|
|
|
71
71
|
return descriptor;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmsuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBc0Msb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLE9BQU8sd0JBQTJELFNBQVEsb0JBQWdGO0lBUzVKLFlBQVksVUFBVSxHQUFHLE1BQU0sRUFBRSxHQUErQztRQUM1RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBVG5CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUc3QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSTdCLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsR0FBRyxZQUFzQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1CLEVBQUUsbUJBQXlDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsU0FBNkIsT0FBTztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQW9CO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFZSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQTRCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekYsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUNsRCxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsVUFBVSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQzVELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbEMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlLCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkxpbmtEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzPE1vZGVsPiA9IE9taXQ8QWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIHVuZGVmaW5lZD4sICdzZXJ2aWNlVHlwZScgfCAnZGF0YVByb3ZpZGVyJz47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW0+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgIHByaXZhdGUgX3VybCA9ICcnO1xuICAgIHByaXZhdGUgX3BhdGhTZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcml2YXRlIF9yZXBsYWNlVXJsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdGFyZ2V0ID0gJ19zZWxmJztcbiAgICBwcml2YXRlIF9pc1N0eWxlTGluayA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWN0aW9uTmFtZSA9ICdsaW5rJywgY2ZnPzogQWN0aW9uTGlua0Rlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHM8SXRlbT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0aFNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhTZWdtZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zSGFuZGxpbmcoKTogUXVlcnlQYXJhbXNIYW5kbGluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVwbGFjZVVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXJnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU3R5bGVMaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHlsZUxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIcmVmKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZXJMaW5rKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGF0aFNlZ21lbnRzID0gcGF0aFNlZ21lbnRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBxdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcGxhY2VVcmwocmVwbGFjZVVybCA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VVcmwgPSByZXBsYWNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhcmdldCh0YXJnZXQ6ICdfc2VsZicgfCAnX2JsYW5rJyA9ICdfc2VsZicpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN0eWxlTGluayhpc1N0eWxlTGluazogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1N0eWxlTGluayA9IGlzU3R5bGVMaW5rO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8SXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxJdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPih0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7IC8vIGNvcHkgYmFzZSBhY3Rpb25cbiAgICAgICAgZGVzY3JpcHRvci5fdXJsID0gdGhpcy5fdXJsO1xuICAgICAgICBkZXNjcmlwdG9yLl9wYXRoU2VnbWVudHMgPSBbLi4udGhpcy5fcGF0aFNlZ21lbnRzXTtcbiAgICAgICAgZGVzY3JpcHRvci5fcXVlcnlQYXJhbXMgPSB7Li4udGhpcy5fcXVlcnlQYXJhbXN9O1xuICAgICAgICBkZXNjcmlwdG9yLl9xdWVyeVBhcmFtc0hhbmRsaW5nID0gdGhpcy5fcXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fcmVwbGFjZVVybCA9IHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhcmdldCA9IHRoaXMuX3RhcmdldDtcbiAgICAgICAgZGVzY3JpcHRvci5faXNTdHlsZUxpbmsgPSB0aGlzLl9pc1N0eWxlTGluaztcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
|