nuxeo-development-framework 5.3.6 → 5.3.8
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/bundles/nuxeo-development-framework.umd.js +826 -366
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +1 -2
- package/esm2015/lib/components/ndf-filters/base/base-aggregation-field.component.js +91 -0
- package/esm2015/lib/components/ndf-filters/base/base-checkbox-radio.component.js +66 -0
- package/esm2015/lib/components/ndf-filters/base/base-custom-field.component.js +46 -0
- package/esm2015/lib/components/ndf-filters/base/base-predicate-field.component.js +43 -0
- package/esm2015/lib/components/ndf-filters/base/base-value-accessor.component.js +34 -0
- package/esm2015/lib/components/ndf-filters/base/index.js +6 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/field-header.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +97 -0
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +43 -0
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-collapse-control/filter-collapse-control.component.js +44 -0
- package/esm2015/lib/components/ndf-filters/components/__parts/filter-date-range/filter-date-range.component.js +89 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-empty-message.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-option-text/filter-option-text.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-options-sort/filter-options-sort.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-search-input/filter-search-input.component.js +1 -1
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/html-dialog/html-dialog.component.js +2 -2
- package/esm2015/lib/components/ndf-filters/components/__parts/index.js +10 -0
- package/esm2015/lib/components/ndf-filters/components/aggregation-autocomplete/aggregation-autocomplete.component.js +109 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-checkbox/aggregation-checkbox.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-custom/aggregation-custom.component.js +66 -0
- package/esm2015/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.js +219 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-radio/aggregation-radio.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-select/aggregation-select.component.js +83 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-switch/aggregation-switch.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/index.js +11 -0
- package/esm2015/lib/components/ndf-filters/components/predicate-date-input/predicate-date-input.component.js +146 -0
- package/esm2015/lib/components/ndf-filters/components/predicate-text-input/predicate-text-input.component.js +144 -0
- package/esm2015/lib/components/ndf-filters/constants/common.js +4 -0
- package/esm2015/lib/components/ndf-filters/constants/field.js +6 -0
- package/esm2015/lib/components/ndf-filters/constants/index.js +5 -0
- package/esm2015/lib/components/ndf-filters/constants/operators.js +18 -0
- package/esm2015/lib/components/ndf-filters/constants/sort.js +23 -0
- package/esm2015/lib/components/ndf-filters/constants/type.js +26 -0
- package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +78 -0
- package/esm2015/lib/components/ndf-filters/containers/base-field.js +62 -0
- package/esm2015/lib/components/ndf-filters/containers/custom-field/custom-field.component.js +73 -0
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/base-filters-panel.js +55 -0
- package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +127 -0
- package/esm2015/lib/components/ndf-filters/containers/index.js +5 -0
- package/esm2015/lib/components/ndf-filters/containers/predicate-field/predicate-field.component.js +71 -0
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user-switch.component.js +55 -0
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/active-user.service.js +17 -0
- package/esm2015/lib/components/ndf-filters/custom-components/active-user-switch/user-types.js +2 -0
- package/esm2015/lib/components/ndf-filters/custom-components/index.js +2 -0
- package/esm2015/lib/components/ndf-filters/directives/autocomplete-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/checkbox-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/custom-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/date-template.directive.js +28 -0
- package/esm2015/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/dropdown-label-template.directive.js +1 -1
- package/esm2015/lib/components/ndf-filters/directives/dropdown-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/index.js +9 -0
- package/esm2015/lib/components/ndf-filters/directives/radio-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/directives/switch-template.directive.js +28 -0
- package/esm2015/lib/components/ndf-filters/index.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/aggregation-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/aggregation-response.model.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/base-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/common.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/custom-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-config.model.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/autocomplete-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/checkbox-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/common-utils.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-fields-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/custom-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/date-list-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/date-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/dropdown-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/index.js +12 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/input-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/radio-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/field-options/switch-options.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/filter-option.model.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/form-query-request.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/index.js +14 -0
- package/esm2015/lib/components/ndf-filters/models/operator-value-object.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/predicate-field-config.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/types-helper.js +2 -0
- package/esm2015/lib/components/ndf-filters/models/value-object.model.js +12 -0
- package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +207 -0
- package/esm2015/lib/components/ndf-filters/pipes/autocomplete-filter.pipe.js +27 -0
- package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +32 -0
- package/esm2015/lib/components/ndf-filters/pipes/filter.pipe.js +27 -0
- package/esm2015/lib/components/ndf-filters/pipes/hash-translate.pipe.js +52 -0
- package/esm2015/lib/components/ndf-filters/pipes/index.js +10 -0
- package/esm2015/lib/components/ndf-filters/pipes/localized-label.pipe.js +28 -0
- package/esm2015/lib/components/ndf-filters/pipes/roles-filters.pipe.js +31 -0
- package/esm2015/lib/components/ndf-filters/pipes/sanitizer.pipe.js +34 -0
- package/esm2015/lib/components/ndf-filters/pipes/sort.pipe.js +40 -0
- package/esm2015/lib/components/ndf-filters/pipes/tooltip.pipe.js +69 -0
- package/esm2015/lib/components/ndf-filters/public-api.js +12 -0
- package/esm2015/lib/components/ndf-filters/services/aggregation-field.service.js +105 -0
- package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +59 -0
- package/esm2015/lib/components/ndf-filters/services/filters-mapper.service.js +60 -0
- package/esm2015/lib/components/ndf-filters/services/filters-query.service.js +117 -0
- package/esm2015/lib/components/ndf-filters/services/index.js +5 -0
- package/esm2015/lib/components/ndf-filters/utility/index.js +4 -0
- package/esm2015/lib/components/ndf-filters/utility/nxql-query.js +53 -0
- package/esm2015/lib/components/ndf-filters/utility/nxql.js +47 -0
- package/esm2015/lib/components/ndf-filters/utility/object.js +42 -0
- package/esm2015/lib/components/ndf-tabs/tab.type.js +1 -1
- package/esm2015/lib/components/reports/chart-panel.js +76 -0
- package/esm2015/lib/components/reports/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.js +23 -9
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/graph-dialog/graph-dialog.component.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/report-actions/report-actions.component.js +45 -0
- package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +5 -6
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +8 -7
- package/esm2015/lib/components/reports/ndf-reports/components/index.js +1 -2
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +3 -3
- package/esm2015/lib/components/reports/ndf-reports/models/common.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/graph.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +17 -12
- package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
- package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/components/text-search/text-search.component.js +2 -2
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +26 -25
- package/esm2015/lib/components/tables/ndf-table/models/payload-types.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/search.config.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-mode.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/table-options.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/models/types.js +1 -1
- package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +5 -5
- package/esm2015/lib/components/tables/ndf-table/public-api.js +1 -2
- package/esm2015/lib/components/tables/ndf-table/services/index.js +1 -2
- package/esm2015/lib/shared/evaluator/evaluator.js +317 -0
- package/esm2015/lib/shared/evaluator/index.js +2 -0
- package/esm2015/lib/shared/evaluator/types.js +2 -0
- package/esm2015/lib/shared/models/index.js +2 -1
- package/esm2015/lib/shared/models/type-helpers.js +2 -0
- package/esm2015/public-api.js +3 -1
- package/fesm2015/nuxeo-development-framework.js +643 -229
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-aggregation-field.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-value-accessor.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-autocomplete-input/filter-autocomplete.service.d.ts +3 -2
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-date-range/filter-date-range.component.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/html-dialog/html-dialog.component.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/filters-panel/base-filters-panel.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/filters-panel/filters-panel.component.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/active-user-switch/active-user.service.d.ts +1 -1
- package/lib/components/ndf-filters/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/aggregation-field-config.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/base-field-config.d.ts +3 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/custom-field-config.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/autocomplete-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/checkbox-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/common-utils.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/custom-fields-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/date-list-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/date-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/dropdown-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/input-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/radio-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/switch-options.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/filter-option.model.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/index.d.ts +1 -0
- package/lib/components/ndf-filters/models/operator-value-object.d.ts +6 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/predicate-field-config.d.ts +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/types-helper.d.ts +0 -11
- package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +66 -0
- package/lib/components/ndf-filters/pipes/check-condition.pipe.d.ts +12 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/roles-filters.pipe.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel/index.d.ts → ndf-filters/public-api.d.ts} +2 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/aggregation-field.service.d.ts +1 -1
- package/lib/components/{tables/ndf-table → ndf-filters}/services/filters-mapper.service.d.ts +1 -1
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/utility/index.d.ts +1 -0
- package/lib/components/{tables/ndf-table/utils → ndf-filters/utility}/nxql-query.d.ts +4 -3
- package/lib/components/ndf-tabs/tab.type.d.ts +1 -1
- package/lib/components/reports/chart-panel.d.ts +19 -0
- package/lib/components/reports/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/base/base-report.d.ts +3 -3
- package/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.d.ts +5 -2
- package/lib/components/reports/ndf-reports/components/_parts/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/report-actions/report-actions.component.d.ts +17 -0
- package/lib/components/reports/ndf-reports/components/index.d.ts +0 -1
- package/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.d.ts +1 -1
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +3 -2
- package/lib/components/reports/ndf-reports/models/common.d.ts +2 -2
- package/lib/components/reports/ndf-reports/models/graph.d.ts +9 -0
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +1 -1
- package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +7 -6
- package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +1 -1
- package/lib/components/tables/ndf-table/components/text-search/text-search.component.d.ts +1 -1
- package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +3 -2
- package/lib/components/tables/ndf-table/models/payload-types.d.ts +0 -6
- package/lib/components/tables/ndf-table/models/search.config.d.ts +1 -1
- package/lib/components/tables/ndf-table/models/table-mode.d.ts +1 -1
- package/lib/components/tables/ndf-table/models/table-options.d.ts +1 -1
- package/lib/components/tables/ndf-table/models/types.d.ts +1 -1
- package/lib/components/tables/ndf-table/ndf-table.module.d.ts +2 -2
- package/lib/components/tables/ndf-table/public-api.d.ts +0 -1
- package/lib/components/tables/ndf-table/services/index.d.ts +0 -1
- package/lib/shared/evaluator/evaluator.d.ts +79 -0
- package/lib/shared/evaluator/index.d.ts +1 -0
- package/lib/shared/evaluator/types.d.ts +14 -0
- package/lib/shared/models/index.d.ts +1 -0
- package/lib/shared/models/type-helpers.d.ts +11 -0
- package/package.json +3 -2
- package/public-api.d.ts +2 -0
- package/src/docs/ndf-table.doc.md +281 -209
- package/esm2015/lib/components/reports/ndf-reports/components/chart-panel.component.js +0 -61
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-aggregation-field.component.js +0 -91
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-checkbox-radio.component.js +0 -66
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-custom-field.component.js +0 -46
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-predicate-field.component.js +0 -43
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/base-value-accessor.component.js +0 -34
- package/esm2015/lib/components/tables/ndf-table/filters-panel/base/index.js +0 -6
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete-input.component.js +0 -97
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +0 -43
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-collapse-control/filter-collapse-control.component.js +0 -44
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/filter-date-range/filter-date-range.component.js +0 -89
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/__parts/index.js +0 -10
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-autocomplete/aggregation-autocomplete.component.js +0 -109
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-custom/aggregation-custom.component.js +0 -66
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-date-list/aggregation-date-list.component.js +0 -219
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/aggregation-select/aggregation-select.component.js +0 -83
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/index.js +0 -11
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/predicate-date-input/predicate-date-input.component.js +0 -146
- package/esm2015/lib/components/tables/ndf-table/filters-panel/components/predicate-text-input/predicate-text-input.component.js +0 -144
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/common.js +0 -4
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/field.js +0 -6
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/index.js +0 -5
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/operators.js +0 -18
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/sort.js +0 -23
- package/esm2015/lib/components/tables/ndf-table/filters-panel/constants/type.js +0 -26
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/aggregation-field/aggregation-field.component.js +0 -78
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/base-field.js +0 -62
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/custom-field/custom-field.component.js +0 -73
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/base-filters-panel.js +0 -55
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/filters-panel/filters-panel.component.js +0 -122
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/index.js +0 -5
- package/esm2015/lib/components/tables/ndf-table/filters-panel/containers/predicate-field/predicate-field.component.js +0 -71
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user-switch.component.js +0 -55
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/active-user.service.js +0 -17
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/active-user-switch/user-types.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/custom-components/index.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/autocomplete-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/checkbox-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/custom-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/date-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/dropdown-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/index.js +0 -9
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/radio-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/directives/switch-template.directive.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/filters-panel.module.js +0 -205
- package/esm2015/lib/components/tables/ndf-table/filters-panel/index.js +0 -11
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/aggregation-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/aggregation-response.model.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/base-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/common.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/custom-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-config.model.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/autocomplete-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/checkbox-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/common-utils.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-fields-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/custom-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/date-list-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/date-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/dropdown-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/index.js +0 -12
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/input-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/radio-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/field-options/switch-options.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/filter-option.model.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/form-query-request.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/index.js +0 -13
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/predicate-field-config.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/types-helper.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/filters-panel/models/value-object.model.js +0 -12
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/autocomplete-filter.pipe.js +0 -27
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/filter.pipe.js +0 -27
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/hash-translate.pipe.js +0 -52
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/index.js +0 -9
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/localized-label.pipe.js +0 -28
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/roles-filters.pipe.js +0 -31
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/sanitizer.pipe.js +0 -34
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/sort.pipe.js +0 -40
- package/esm2015/lib/components/tables/ndf-table/filters-panel/pipes/tooltip.pipe.js +0 -69
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/aggregation-field.service.js +0 -105
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/dynamic-component-loader.service.js +0 -59
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/filters-query.service.js +0 -117
- package/esm2015/lib/components/tables/ndf-table/filters-panel/services/index.js +0 -4
- package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/index.js +0 -3
- package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/nxql.js +0 -47
- package/esm2015/lib/components/tables/ndf-table/filters-panel/utility/object.js +0 -42
- package/esm2015/lib/components/tables/ndf-table/services/filters-mapper.service.js +0 -60
- package/esm2015/lib/components/tables/ndf-table/utils/index.js +0 -2
- package/esm2015/lib/components/tables/ndf-table/utils/nxql-query.js +0 -52
- package/lib/components/reports/ndf-reports/components/chart-panel.component.d.ts +0 -13
- package/lib/components/tables/ndf-table/filters-panel/filters-panel.module.d.ts +0 -65
- package/lib/components/tables/ndf-table/utils/index.d.ts +0 -1
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-checkbox-radio.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-custom-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/base-predicate-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/base/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/field-header.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-collapse-control/filter-collapse-control.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-empty-message.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-option-text/filter-option-text.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-options-sort/filter-options-sort.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/filter-search-input/filter-search-input.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/__parts/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-autocomplete/aggregation-autocomplete.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-checkbox/aggregation-checkbox.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-custom/aggregation-custom.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-date-list/aggregation-date-list.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-radio/aggregation-radio.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-select/aggregation-select.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/aggregation-switch/aggregation-switch.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/predicate-date-input/predicate-date-input.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/components/predicate-text-input/predicate-text-input.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/common.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/field.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/operators.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/sort.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/constants/type.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/aggregation-field/aggregation-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/base-field.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/custom-field/custom-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/containers/predicate-field/predicate-field.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/active-user-switch/active-user-switch.component.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/active-user-switch/user-types.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/custom-components/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/autocomplete-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/checkbox-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/custom-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/date-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/dropdown-label-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/dropdown-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/radio-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/directives/switch-template.directive.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/aggregation-response.model.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/common.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-config.model.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/custom-options.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/field-options/index.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/form-query-request.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/models/value-object.model.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/autocomplete-filter.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/filter.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/hash-translate.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/localized-label.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/sanitizer.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/sort.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/pipes/tooltip.pipe.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/dynamic-component-loader.service.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/services/filters-query.service.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/utility/nxql.d.ts +0 -0
- /package/lib/components/{tables/ndf-table/filters-panel → ndf-filters}/utility/object.d.ts +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import _, { get, keys, set, trim, values } from 'lodash';
|
|
2
|
+
import stringHash from 'string-hash';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a secure context for function evaluation that prevents access to the window object.
|
|
5
|
+
* @returns {Record<string, any>} A secure context object with safe properties.
|
|
6
|
+
*/
|
|
7
|
+
function createSecureContext() {
|
|
8
|
+
// Create a secure context with only safe properties
|
|
9
|
+
return {
|
|
10
|
+
// Add any safe globals here that should be accessible
|
|
11
|
+
console: {
|
|
12
|
+
log: console.log,
|
|
13
|
+
warn: console.warn,
|
|
14
|
+
error: console.error
|
|
15
|
+
},
|
|
16
|
+
// Add other safe objects/functions as needed
|
|
17
|
+
Math,
|
|
18
|
+
Date,
|
|
19
|
+
Number,
|
|
20
|
+
String,
|
|
21
|
+
Boolean,
|
|
22
|
+
Array,
|
|
23
|
+
Object,
|
|
24
|
+
JSON,
|
|
25
|
+
// Prevent access to window
|
|
26
|
+
window: undefined,
|
|
27
|
+
self: undefined,
|
|
28
|
+
globalThis: undefined
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A utility class for evaluating expressions, interpolating strings, and working with templates.
|
|
33
|
+
* This class provides static methods for dynamic evaluation of code, string interpolation,
|
|
34
|
+
* and template processing with caching capabilities.
|
|
35
|
+
*/
|
|
36
|
+
export class Evaluator {
|
|
37
|
+
/**
|
|
38
|
+
* Creates a function from a string or returns the function if already provided.
|
|
39
|
+
* Uses a secure context to prevent access to the window object by default.
|
|
40
|
+
* @param {string|Function} func - The function or string to convert to a function.
|
|
41
|
+
* @param {...any} params - The parameters to pass to the function.
|
|
42
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the evaluation.
|
|
43
|
+
* @returns {Function} - The resulting function.
|
|
44
|
+
*/
|
|
45
|
+
static evaluator(func, ...params) {
|
|
46
|
+
// Extract options if the last parameter is an options object
|
|
47
|
+
let options = {};
|
|
48
|
+
if (params.length > 0 &&
|
|
49
|
+
params[params.length - 1] &&
|
|
50
|
+
typeof params[params.length - 1] === 'object' &&
|
|
51
|
+
'securityMode' in params[params.length - 1]) {
|
|
52
|
+
options = params.pop();
|
|
53
|
+
}
|
|
54
|
+
if (typeof func === 'function') {
|
|
55
|
+
return func;
|
|
56
|
+
}
|
|
57
|
+
if (typeof params[0] === 'object') {
|
|
58
|
+
params = keys(params[0]);
|
|
59
|
+
}
|
|
60
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
61
|
+
const securityMode = options.securityMode || 'secure';
|
|
62
|
+
if (securityMode === 'unsafe') {
|
|
63
|
+
// In unsafe mode, create a function with access to all globals
|
|
64
|
+
return new Function(...params, func);
|
|
65
|
+
}
|
|
66
|
+
const sandbox = createSecureContext();
|
|
67
|
+
const sandboxKeys = Object.keys(sandbox);
|
|
68
|
+
const sandboxAssignments = sandboxKeys.map((key) => `const ${key} = sandbox.${key};`).join('');
|
|
69
|
+
const wrapper = new Function(...params, 'sandbox', `${sandboxAssignments}${func}`);
|
|
70
|
+
return (...args) => wrapper(...args, sandbox);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Replaces template expressions in a string with values from data.
|
|
74
|
+
* Supports function calls within templates and fallback values using || syntax.
|
|
75
|
+
* By default, ensures evaluation happens in a secure context to prevent access to window object.
|
|
76
|
+
* @param {string} rawTemplate - The template string containing expressions to interpolate.
|
|
77
|
+
* @param {Record<string, any>} data - The data object containing values to use for interpolation.
|
|
78
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the interpolation process.
|
|
79
|
+
* @returns {string} - The interpolated string with all expressions replaced with actual values.
|
|
80
|
+
*/
|
|
81
|
+
static interpolateString(rawTemplate, data, options = {}) {
|
|
82
|
+
if (!rawTemplate) {
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
if (typeof rawTemplate !== 'string') {
|
|
86
|
+
return rawTemplate.toString();
|
|
87
|
+
}
|
|
88
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
89
|
+
const securityMode = options.securityMode || 'secure';
|
|
90
|
+
// Create a secure data object if needed
|
|
91
|
+
const secureData = securityMode === 'unsafe'
|
|
92
|
+
? data
|
|
93
|
+
: Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), {
|
|
94
|
+
// Ensure these remain undefined
|
|
95
|
+
window: undefined, self: undefined, globalThis: undefined });
|
|
96
|
+
return rawTemplate.replace(/({{\s*(.*?)\s*}})/g, (match, $1, expression) => {
|
|
97
|
+
if (expression.indexOf('(') !== -1) {
|
|
98
|
+
return expression.replace(/([^(]+)\(([^)]+)\s*\);?/, (_, fnName, argsStr) => {
|
|
99
|
+
fnName = trim(fnName);
|
|
100
|
+
const func = get(secureData, fnName);
|
|
101
|
+
if (func) {
|
|
102
|
+
if (argsStr) {
|
|
103
|
+
const args = argsStr.split(',').map((arg) => {
|
|
104
|
+
const trimmed = trim(arg);
|
|
105
|
+
if (/^['"]/.test(trimmed))
|
|
106
|
+
return trimmed.slice(1, -1);
|
|
107
|
+
return get(secureData, trimmed);
|
|
108
|
+
});
|
|
109
|
+
return Evaluator.evaluate(func, args, '', false, secureData, options);
|
|
110
|
+
}
|
|
111
|
+
return Evaluator.evaluate(func, [], '', false, secureData, options);
|
|
112
|
+
}
|
|
113
|
+
return '';
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
let dataPath = expression;
|
|
118
|
+
if (expression.indexOf('?') !== -1) {
|
|
119
|
+
dataPath = expression.replace(/\?\./g, '.');
|
|
120
|
+
}
|
|
121
|
+
const parts = dataPath.split('||').map((item) => item.trim());
|
|
122
|
+
let value = '';
|
|
123
|
+
let path = '';
|
|
124
|
+
for (let i = 0; i < parts.length; i++) {
|
|
125
|
+
path = parts[i];
|
|
126
|
+
if (_.has(secureData, path)) {
|
|
127
|
+
value = _.get(secureData, path);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (options.data) {
|
|
132
|
+
set(options.data, path, value);
|
|
133
|
+
}
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Performs an evaluation using the evaluation context of this component.
|
|
140
|
+
* By default, ensures evaluation happens in a secure context to prevent access to window object.
|
|
141
|
+
* @param {string|Function|object} func - The function or string to evaluate.
|
|
142
|
+
* @param {object} args - The arguments to pass to the evaluation.
|
|
143
|
+
* @param {string} ret - The name of the variable within the evaluation context to return.
|
|
144
|
+
* @param {boolean} interpolate - Determines if it should replace all {{ }} token references with actual data.
|
|
145
|
+
* @param {object} context - - The evaluation context.
|
|
146
|
+
* @param {EvaluatorOptions } options - The options to pass to the evaluation.
|
|
147
|
+
* @returns {*} - The result of the evaluation.
|
|
148
|
+
*/
|
|
149
|
+
static evaluate(func, args = {}, ret = 'show', interpolate = false, context = {}, options = {}) {
|
|
150
|
+
let returnVal = null;
|
|
151
|
+
const field = args.field ? args.field : { key: 'unknown' };
|
|
152
|
+
const fieldKey = field.key;
|
|
153
|
+
if (typeof func === 'string') {
|
|
154
|
+
if (ret) {
|
|
155
|
+
func = `var ${ret};${func};return ${ret}`;
|
|
156
|
+
}
|
|
157
|
+
if (interpolate) {
|
|
158
|
+
func = Evaluator.interpolate(func, args, options);
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
// Pass the security mode option to the evaluator
|
|
162
|
+
const evaluatorOptions = { securityMode: options.securityMode || 'secure' };
|
|
163
|
+
func = Evaluator.evaluator(func, args, context, evaluatorOptions);
|
|
164
|
+
args = Array.isArray(args) ? args : values(args);
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
console.warn(`An error occured within the custom function for ${fieldKey}`, err);
|
|
168
|
+
returnVal = null;
|
|
169
|
+
func = false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (typeof func === 'function') {
|
|
173
|
+
try {
|
|
174
|
+
returnVal = Evaluator.execute(func, args, context, options);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
returnVal = null;
|
|
178
|
+
console.warn(`An error occured within custom function for ${fieldKey}`, err);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else if (func) {
|
|
182
|
+
console.warn(`Unknown function type for ${fieldKey}`);
|
|
183
|
+
}
|
|
184
|
+
return returnVal;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Executes a function with provided arguments and context.
|
|
188
|
+
* By default, ensures execution happens in a secure context to prevent access to window object.
|
|
189
|
+
* @param {Function} func - The function to execute.
|
|
190
|
+
* @param {any[]|Record<string, any>} args - The arguments to pass to the function, either as an array or object.
|
|
191
|
+
* @param {Record<string, any>} [context={}] - The context (this) to use when executing the function.
|
|
192
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the execution.
|
|
193
|
+
* @returns {any} - The result of the function execution.
|
|
194
|
+
*/
|
|
195
|
+
static execute(func, args, context = {}, options = {}) {
|
|
196
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
197
|
+
const securityMode = options.securityMode || 'secure';
|
|
198
|
+
if (securityMode === 'unsafe') {
|
|
199
|
+
// In unsafe mode, execute with the original context
|
|
200
|
+
return Array.isArray(args) ? func.apply(context, args) : func.call(context, args);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// In secure mode, create a secure context by merging the provided context with our secure context
|
|
204
|
+
const secureContext = Object.assign(Object.assign(Object.assign({}, createSecureContext()), context), {
|
|
205
|
+
// Ensure these remain undefined even if they were in the provided context
|
|
206
|
+
window: undefined, self: undefined, globalThis: undefined });
|
|
207
|
+
// Execute the function with the secure context
|
|
208
|
+
return Array.isArray(args) ? func.apply(secureContext, args) : func.call(secureContext, args);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Creates a template function from a string with caching for performance.
|
|
213
|
+
* By default, ensures the template function executes in a secure context.
|
|
214
|
+
* @param {string} template - The template string to compile into a function.
|
|
215
|
+
* @param {string} [hash] - Optional hash to use as cache key. If not provided, a hash will be generated from the template.
|
|
216
|
+
* @param {EvaluatorOptions} [options={}] - Optional configuration for the template.
|
|
217
|
+
* @returns {Function|undefined} - The compiled template function, or undefined if compilation fails.
|
|
218
|
+
*/
|
|
219
|
+
static template(template, hash, options = {}) {
|
|
220
|
+
hash = hash || stringHash(template).toString();
|
|
221
|
+
// If hash contains options object, extract it
|
|
222
|
+
if (typeof hash === 'object' && 'securityMode' in hash) {
|
|
223
|
+
options = hash;
|
|
224
|
+
hash = stringHash(template).toString();
|
|
225
|
+
}
|
|
226
|
+
// Check if we have a cached version
|
|
227
|
+
const cacheKey = hash + (options.securityMode || 'secure');
|
|
228
|
+
if (Evaluator.cache[cacheKey]) {
|
|
229
|
+
return Evaluator.cache[cacheKey];
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
template = template.replace(/ctx\./g, '');
|
|
233
|
+
// Create the template function using lodash
|
|
234
|
+
const templateFunc = _.template(template, Evaluator.templateSettings);
|
|
235
|
+
// Check if we should use secure mode (default) or unsafe mode
|
|
236
|
+
const securityMode = options.securityMode || 'secure';
|
|
237
|
+
if (securityMode === 'unsafe') {
|
|
238
|
+
// In unsafe mode, return the original template function
|
|
239
|
+
return (Evaluator.cache[cacheKey] = templateFunc);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
// In secure mode, wrap the template function to ensure it runs in a secure context
|
|
243
|
+
const secureTemplateFunc = (data) => {
|
|
244
|
+
// Create a secure context for the template
|
|
245
|
+
const secureData = Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), {
|
|
246
|
+
// Ensure these remain undefined
|
|
247
|
+
window: undefined, self: undefined, globalThis: undefined });
|
|
248
|
+
return templateFunc(secureData);
|
|
249
|
+
};
|
|
250
|
+
// Cache and return the secure template function
|
|
251
|
+
return (Evaluator.cache[cacheKey] = secureTemplateFunc);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
console.warn('Error while processing template', err, template);
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Interpolates a template with data, handling both function templates and string templates.
|
|
261
|
+
* By default, ensures interpolation happens in a secure context to prevent access to window object.
|
|
262
|
+
* @param {string|Function} rawTemplate - The template to interpolate, either as a string or a function.
|
|
263
|
+
* @param {Record<string, any>} data - The data object to use for interpolation.
|
|
264
|
+
* @param {EvaluatorOptions} options - Options for the interpolation process.
|
|
265
|
+
* @returns {string|any} - The result of the interpolation, typically a string but could be any type depending on the template.
|
|
266
|
+
*/
|
|
267
|
+
static interpolate(rawTemplate, data, options = {}) {
|
|
268
|
+
if (typeof rawTemplate === 'function') {
|
|
269
|
+
try {
|
|
270
|
+
// If the template is a function, execute it with the data
|
|
271
|
+
// We can't directly secure a provided function, but we can use execute
|
|
272
|
+
// to run it in a secure context if needed
|
|
273
|
+
if (options.securityMode !== 'unsafe') {
|
|
274
|
+
const secureData = Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), { window: undefined, self: undefined, globalThis: undefined });
|
|
275
|
+
return rawTemplate(secureData);
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
return rawTemplate(data);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch (err) {
|
|
282
|
+
console.warn('Error interpolating template', err, data);
|
|
283
|
+
return err.message;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
rawTemplate = String(rawTemplate);
|
|
287
|
+
// Pass the security mode option to the template method
|
|
288
|
+
const template = Evaluator.template(rawTemplate, undefined, options);
|
|
289
|
+
if (typeof template === 'function') {
|
|
290
|
+
try {
|
|
291
|
+
return template(data);
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
console.warn('Error interpolating template', err, rawTemplate, data);
|
|
295
|
+
return err.message;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return template;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Cache for storing compiled template functions to improve performance.
|
|
303
|
+
* Keys are string hashes of the template, values are the compiled functions.
|
|
304
|
+
*/
|
|
305
|
+
Evaluator.cache = {};
|
|
306
|
+
/**
|
|
307
|
+
* Settings for template processing, defining regex patterns for different template operations.
|
|
308
|
+
* - interpolate: Pattern for variable interpolation ({{ variable }})
|
|
309
|
+
* - evaluate: Pattern for code evaluation ({% code %})
|
|
310
|
+
* - escape: Pattern for HTML escaping ({{{ variable }}})
|
|
311
|
+
*/
|
|
312
|
+
Evaluator.templateSettings = {
|
|
313
|
+
interpolate: /{{([\s\S]+?)}}/g,
|
|
314
|
+
evaluate: /\{%([\s\S]+?)%\}/g,
|
|
315
|
+
escape: /\{\{\{([\s\S]+?)\}\}\}/g
|
|
316
|
+
};
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL2V2YWx1YXRvci9ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3pELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUlyQzs7O0dBR0c7QUFDSCxTQUFTLG1CQUFtQjtJQUMzQixvREFBb0Q7SUFDcEQsT0FBTztRQUNOLHNEQUFzRDtRQUN0RCxPQUFPLEVBQUU7WUFDUixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUNwQjtRQUNELDZDQUE2QztRQUM3QyxJQUFJO1FBQ0osSUFBSTtRQUNKLE1BQU07UUFDTixNQUFNO1FBQ04sT0FBTztRQUNQLEtBQUs7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLFVBQVUsRUFBRSxTQUFTO0tBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBbUJyQjs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUF1QixFQUFFLEdBQUcsTUFBYTtRQUN6RCw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxJQUNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekIs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QkFDYixPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE9BQVEsR0FBYSxDQUFDLE9BQU8sQ0FBQzthQUM5QjtTQUNEO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQzs7QUF0VkQ7OztHQUdHO0FBQ0ksZUFBSyxHQUE2QixFQUFFLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSSwwQkFBZ0IsR0FBcUI7SUFDM0MsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixRQUFRLEVBQUUsbUJBQW1CO0lBQzdCLE1BQU0sRUFBRSx5QkFBeUI7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfLCB7IGdldCwga2V5cywgc2V0LCB0cmltLCB2YWx1ZXMgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgc3RyaW5nSGFzaCBmcm9tICdzdHJpbmctaGFzaCc7XHJcblxyXG5pbXBvcnQgeyBFdmFsdWF0b3JPcHRpb25zLCBUZW1wbGF0ZVNldHRpbmdzIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHNlY3VyZSBjb250ZXh0IGZvciBmdW5jdGlvbiBldmFsdWF0aW9uIHRoYXQgcHJldmVudHMgYWNjZXNzIHRvIHRoZSB3aW5kb3cgb2JqZWN0LlxyXG4gKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn0gQSBzZWN1cmUgY29udGV4dCBvYmplY3Qgd2l0aCBzYWZlIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVTZWN1cmVDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cdC8vIENyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IHdpdGggb25seSBzYWZlIHByb3BlcnRpZXNcclxuXHRyZXR1cm4ge1xyXG5cdFx0Ly8gQWRkIGFueSBzYWZlIGdsb2JhbHMgaGVyZSB0aGF0IHNob3VsZCBiZSBhY2Nlc3NpYmxlXHJcblx0XHRjb25zb2xlOiB7XHJcblx0XHRcdGxvZzogY29uc29sZS5sb2csXHJcblx0XHRcdHdhcm46IGNvbnNvbGUud2FybixcclxuXHRcdFx0ZXJyb3I6IGNvbnNvbGUuZXJyb3JcclxuXHRcdH0sXHJcblx0XHQvLyBBZGQgb3RoZXIgc2FmZSBvYmplY3RzL2Z1bmN0aW9ucyBhcyBuZWVkZWRcclxuXHRcdE1hdGgsXHJcblx0XHREYXRlLFxyXG5cdFx0TnVtYmVyLFxyXG5cdFx0U3RyaW5nLFxyXG5cdFx0Qm9vbGVhbixcclxuXHRcdEFycmF5LFxyXG5cdFx0T2JqZWN0LFxyXG5cdFx0SlNPTixcclxuXHRcdC8vIFByZXZlbnQgYWNjZXNzIHRvIHdpbmRvd1xyXG5cdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHR9O1xyXG59XHJcblxyXG4vKipcclxuICogQSB1dGlsaXR5IGNsYXNzIGZvciBldmFsdWF0aW5nIGV4cHJlc3Npb25zLCBpbnRlcnBvbGF0aW5nIHN0cmluZ3MsIGFuZCB3b3JraW5nIHdpdGggdGVtcGxhdGVzLlxyXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIGZvciBkeW5hbWljIGV2YWx1YXRpb24gb2YgY29kZSwgc3RyaW5nIGludGVycG9sYXRpb24sXHJcbiAqIGFuZCB0ZW1wbGF0ZSBwcm9jZXNzaW5nIHdpdGggY2FjaGluZyBjYXBhYmlsaXRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXZhbHVhdG9yIHtcclxuXHQvKipcclxuXHQgKiBDYWNoZSBmb3Igc3RvcmluZyBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbnMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS5cclxuXHQgKiBLZXlzIGFyZSBzdHJpbmcgaGFzaGVzIG9mIHRoZSB0ZW1wbGF0ZSwgdmFsdWVzIGFyZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25zLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBjYWNoZTogUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRpbmdzIGZvciB0ZW1wbGF0ZSBwcm9jZXNzaW5nLCBkZWZpbmluZyByZWdleCBwYXR0ZXJucyBmb3IgZGlmZmVyZW50IHRlbXBsYXRlIG9wZXJhdGlvbnMuXHJcblx0ICogLSBpbnRlcnBvbGF0ZTogUGF0dGVybiBmb3IgdmFyaWFibGUgaW50ZXJwb2xhdGlvbiAoe3sgdmFyaWFibGUgfX0pXHJcblx0ICogLSBldmFsdWF0ZTogUGF0dGVybiBmb3IgY29kZSBldmFsdWF0aW9uICh7JSBjb2RlICV9KVxyXG5cdCAqIC0gZXNjYXBlOiBQYXR0ZXJuIGZvciBIVE1MIGVzY2FwaW5nICh7e3sgdmFyaWFibGUgfX19KVxyXG5cdCAqL1xyXG5cdHN0YXRpYyB0ZW1wbGF0ZVNldHRpbmdzOiBUZW1wbGF0ZVNldHRpbmdzID0ge1xyXG5cdFx0aW50ZXJwb2xhdGU6IC97eyhbXFxzXFxTXSs/KX19L2csXHJcblx0XHRldmFsdWF0ZTogL1xceyUoW1xcc1xcU10rPyklXFx9L2csXHJcblx0XHRlc2NhcGU6IC9cXHtcXHtcXHsoW1xcc1xcU10rPylcXH1cXH1cXH0vZ1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIGEgc3RyaW5nIG9yIHJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGFscmVhZHkgcHJvdmlkZWQuXHJcblx0ICogVXNlcyBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHRoZSB3aW5kb3cgb2JqZWN0IGJ5IGRlZmF1bHQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IGZ1bmMgLSBUaGUgZnVuY3Rpb24gb3Igc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0gey4uLmFueX0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKiBAcmV0dXJucyB7RnVuY3Rpb259IC0gVGhlIHJlc3VsdGluZyBmdW5jdGlvbi5cclxuXHQgKi9cclxuXHRzdGF0aWMgZXZhbHVhdG9yKGZ1bmM6IHN0cmluZyB8IEZ1bmN0aW9uLCAuLi5wYXJhbXM6IGFueVtdKTogRnVuY3Rpb24ge1xyXG5cdFx0Ly8gRXh0cmFjdCBvcHRpb25zIGlmIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBhbiBvcHRpb25zIG9iamVjdFxyXG5cdFx0bGV0IG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fTtcclxuXHRcdGlmIChcclxuXHRcdFx0cGFyYW1zLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0cGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSAmJlxyXG5cdFx0XHR0eXBlb2YgcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXSA9PT0gJ29iamVjdCcgJiZcclxuXHRcdFx0J3NlY3VyaXR5TW9kZScgaW4gcGFyYW1zW3BhcmFtcy5sZW5ndGggLSAxXVxyXG5cdFx0KSB7XHJcblx0XHRcdG9wdGlvbnMgPSBwYXJhbXMucG9wKCkgYXMgRXZhbHVhdG9yT3B0aW9ucztcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0cmV0dXJuIGZ1bmM7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXNbMF0gPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdHBhcmFtcyA9IGtleXMocGFyYW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIHNlY3VyZSBtb2RlIChkZWZhdWx0KSBvciB1bnNhZmUgbW9kZVxyXG5cdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0aWYgKHNlY3VyaXR5TW9kZSA9PT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0Ly8gSW4gdW5zYWZlIG1vZGUsIGNyZWF0ZSBhIGZ1bmN0aW9uIHdpdGggYWNjZXNzIHRvIGFsbCBnbG9iYWxzXHJcblx0XHRcdHJldHVybiBuZXcgRnVuY3Rpb24oLi4ucGFyYW1zLCBmdW5jIGFzIHN0cmluZyk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBzYW5kYm94ID0gY3JlYXRlU2VjdXJlQ29udGV4dCgpO1xyXG5cdFx0Y29uc3Qgc2FuZGJveEtleXMgPSBPYmplY3Qua2V5cyhzYW5kYm94KTtcclxuXHRcdGNvbnN0IHNhbmRib3hBc3NpZ25tZW50cyA9IHNhbmRib3hLZXlzLm1hcCgoa2V5KSA9PiBgY29uc3QgJHtrZXl9ID0gc2FuZGJveC4ke2tleX07YCkuam9pbignJyk7XHJcblxyXG5cdFx0Y29uc3Qgd3JhcHBlciA9IG5ldyBGdW5jdGlvbiguLi5wYXJhbXMsICdzYW5kYm94JywgYCR7c2FuZGJveEFzc2lnbm1lbnRzfSR7ZnVuYyBhcyBzdHJpbmd9YCk7XHJcblxyXG5cdFx0cmV0dXJuICguLi5hcmdzOiBhbnlbXSkgPT4gd3JhcHBlciguLi5hcmdzLCBzYW5kYm94KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcGxhY2VzIHRlbXBsYXRlIGV4cHJlc3Npb25zIGluIGEgc3RyaW5nIHdpdGggdmFsdWVzIGZyb20gZGF0YS5cclxuXHQgKiBTdXBwb3J0cyBmdW5jdGlvbiBjYWxscyB3aXRoaW4gdGVtcGxhdGVzIGFuZCBmYWxsYmFjayB2YWx1ZXMgdXNpbmcgfHwgc3ludGF4LlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgZXZhbHVhdGlvbiBoYXBwZW5zIGluIGEgc2VjdXJlIGNvbnRleHQgdG8gcHJldmVudCBhY2Nlc3MgdG8gd2luZG93IG9iamVjdC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmF3VGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgc3RyaW5nIGNvbnRhaW5pbmcgZXhwcmVzc2lvbnMgdG8gaW50ZXJwb2xhdGUuXHJcblx0ICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgdmFsdWVzIHRvIHVzZSBmb3IgaW50ZXJwb2xhdGlvbi5cclxuXHQgKiBAcGFyYW0ge0V2YWx1YXRvck9wdGlvbnN9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnRlcnBvbGF0aW9uIHByb2Nlc3MuXHJcblx0ICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgaW50ZXJwb2xhdGVkIHN0cmluZyB3aXRoIGFsbCBleHByZXNzaW9ucyByZXBsYWNlZCB3aXRoIGFjdHVhbCB2YWx1ZXMuXHJcblx0ICovXHJcblx0c3RhdGljIGludGVycG9sYXRlU3RyaW5nKHJhd1RlbXBsYXRlOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXJhd1RlbXBsYXRlKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHRcdGlmICh0eXBlb2YgcmF3VGVtcGxhdGUgIT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybiAocmF3VGVtcGxhdGUgYXMgYW55KS50b1N0cmluZygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugc2VjdXJlIG1vZGUgKGRlZmF1bHQpIG9yIHVuc2FmZSBtb2RlXHJcblx0XHRjb25zdCBzZWN1cml0eU1vZGUgPSBvcHRpb25zLnNlY3VyaXR5TW9kZSB8fCAnc2VjdXJlJztcclxuXHJcblx0XHQvLyBDcmVhdGUgYSBzZWN1cmUgZGF0YSBvYmplY3QgaWYgbmVlZGVkXHJcblx0XHRjb25zdCBzZWN1cmVEYXRhID1cclxuXHRcdFx0c2VjdXJpdHlNb2RlID09PSAndW5zYWZlJ1xyXG5cdFx0XHRcdD8gZGF0YVxyXG5cdFx0XHRcdDoge1xyXG5cdFx0XHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0XHRcdC4uLmRhdGEsXHJcblx0XHRcdFx0XHRcdC8vIEVuc3VyZSB0aGVzZSByZW1haW4gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0XHRzZWxmOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdGdsb2JhbFRoaXM6IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0fTtcclxuXHJcblx0XHRyZXR1cm4gcmF3VGVtcGxhdGUucmVwbGFjZSgvKHt7XFxzKiguKj8pXFxzKn19KS9nLCAobWF0Y2g6IHN0cmluZywgJDE6IHN0cmluZywgZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGlmIChleHByZXNzaW9uLmluZGV4T2YoJygnKSAhPT0gLTEpIHtcclxuXHRcdFx0XHRyZXR1cm4gZXhwcmVzc2lvbi5yZXBsYWNlKC8oW14oXSspXFwoKFteKV0rKVxccypcXCk7Py8sIChfOiBzdHJpbmcsIGZuTmFtZTogc3RyaW5nLCBhcmdzU3RyOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdGZuTmFtZSA9IHRyaW0oZm5OYW1lKTtcclxuXHRcdFx0XHRcdGNvbnN0IGZ1bmMgPSBnZXQoc2VjdXJlRGF0YSwgZm5OYW1lKTtcclxuXHJcblx0XHRcdFx0XHRpZiAoZnVuYykge1xyXG5cdFx0XHRcdFx0XHRpZiAoYXJnc1N0cikge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGFyZ3MgPSBhcmdzU3RyLnNwbGl0KCcsJykubWFwKChhcmc6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdHJpbW1lZCA9IHRyaW0oYXJnKTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmICgvXlsnXCJdLy50ZXN0KHRyaW1tZWQpKSByZXR1cm4gdHJpbW1lZC5zbGljZSgxLCAtMSk7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZ2V0KHNlY3VyZURhdGEsIHRyaW1tZWQpO1xyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBFdmFsdWF0b3IuZXZhbHVhdGUoZnVuYywgYXJncywgJycsIGZhbHNlLCBzZWN1cmVEYXRhLCBvcHRpb25zKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gRXZhbHVhdG9yLmV2YWx1YXRlKGZ1bmMsIFtdLCAnJywgZmFsc2UsIHNlY3VyZURhdGEsIG9wdGlvbnMpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxldCBkYXRhUGF0aCA9IGV4cHJlc3Npb247XHJcblx0XHRcdFx0aWYgKGV4cHJlc3Npb24uaW5kZXhPZignPycpICE9PSAtMSkge1xyXG5cdFx0XHRcdFx0ZGF0YVBhdGggPSBleHByZXNzaW9uLnJlcGxhY2UoL1xcP1xcLi9nLCAnLicpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBwYXJ0cyA9IGRhdGFQYXRoLnNwbGl0KCd8fCcpLm1hcCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtLnRyaW0oKSk7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gJyc7XHJcblx0XHRcdFx0bGV0IHBhdGggPSAnJztcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRwYXRoID0gcGFydHNbaV07XHJcblx0XHRcdFx0XHRpZiAoXy5oYXMoc2VjdXJlRGF0YSwgcGF0aCkpIHtcclxuXHRcdFx0XHRcdFx0dmFsdWUgPSBfLmdldChzZWN1cmVEYXRhLCBwYXRoKTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChvcHRpb25zLmRhdGEpIHtcclxuXHRcdFx0XHRcdHNldChvcHRpb25zLmRhdGEsIHBhdGgsIHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBlcmZvcm1zIGFuIGV2YWx1YXRpb24gdXNpbmcgdGhlIGV2YWx1YXRpb24gY29udGV4dCBvZiB0aGlzIGNvbXBvbmVudC5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIGV2YWx1YXRpb24gaGFwcGVucyBpbiBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHdpbmRvdyBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb258b2JqZWN0fSBmdW5jIC0gVGhlIGZ1bmN0aW9uIG9yIHN0cmluZyB0byBldmFsdWF0ZS5cclxuXHQgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcmV0IC0gVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHdpdGhpbiB0aGUgZXZhbHVhdGlvbiBjb250ZXh0IHRvIHJldHVybi5cclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGludGVycG9sYXRlIC0gRGV0ZXJtaW5lcyBpZiBpdCBzaG91bGQgcmVwbGFjZSBhbGwge3sgfX0gdG9rZW4gcmVmZXJlbmNlcyB3aXRoIGFjdHVhbCBkYXRhLlxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IC0gICAtIFRoZSBldmFsdWF0aW9uIGNvbnRleHQuXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zIH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGV2YWx1YXRpb24uXHJcblx0ICogQHJldHVybnMgeyp9IC0gVGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGlvbi5cclxuXHQgKi9cclxuXHRzdGF0aWMgZXZhbHVhdGUoXHJcblx0XHRmdW5jOiBhbnksXHJcblx0XHRhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcblx0XHRyZXQ6IHN0cmluZyA9ICdzaG93JyxcclxuXHRcdGludGVycG9sYXRlOiBib29sZWFuID0gZmFsc2UsXHJcblx0XHRjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcblx0XHRvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge31cclxuXHQpOiBhbnkge1xyXG5cdFx0bGV0IHJldHVyblZhbCA9IG51bGw7XHJcblxyXG5cdFx0Y29uc3QgZmllbGQgPSBhcmdzLmZpZWxkID8gYXJncy5maWVsZCA6IHsga2V5OiAndW5rbm93bicgfTtcclxuXHRcdGNvbnN0IGZpZWxkS2V5ID0gZmllbGQua2V5O1xyXG5cclxuXHRcdGlmICh0eXBlb2YgZnVuYyA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0aWYgKHJldCkge1xyXG5cdFx0XHRcdGZ1bmMgPSBgdmFyICR7cmV0fTske2Z1bmN9O3JldHVybiAke3JldH1gO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoaW50ZXJwb2xhdGUpIHtcclxuXHRcdFx0XHRmdW5jID0gRXZhbHVhdG9yLmludGVycG9sYXRlKGZ1bmMsIGFyZ3MsIG9wdGlvbnMpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdC8vIFBhc3MgdGhlIHNlY3VyaXR5IG1vZGUgb3B0aW9uIHRvIHRoZSBldmFsdWF0b3JcclxuXHRcdFx0XHRjb25zdCBldmFsdWF0b3JPcHRpb25zID0geyBzZWN1cml0eU1vZGU6IG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnIH07XHJcblx0XHRcdFx0ZnVuYyA9IEV2YWx1YXRvci5ldmFsdWF0b3IoZnVuYywgYXJncywgY29udGV4dCwgZXZhbHVhdG9yT3B0aW9ucyk7XHJcblx0XHRcdFx0YXJncyA9IEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzIDogdmFsdWVzKGFyZ3MpO1xyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zb2xlLndhcm4oYEFuIGVycm9yIG9jY3VyZWQgd2l0aGluIHRoZSBjdXN0b20gZnVuY3Rpb24gZm9yICR7ZmllbGRLZXl9YCwgZXJyKTtcclxuXHRcdFx0XHRyZXR1cm5WYWwgPSBudWxsO1xyXG5cdFx0XHRcdGZ1bmMgPSBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdHJldHVyblZhbCA9IEV2YWx1YXRvci5leGVjdXRlKGZ1bmMsIGFyZ3MsIGNvbnRleHQsIG9wdGlvbnMpO1xyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRyZXR1cm5WYWwgPSBudWxsO1xyXG5cdFx0XHRcdGNvbnNvbGUud2FybihgQW4gZXJyb3Igb2NjdXJlZCB3aXRoaW4gY3VzdG9tIGZ1bmN0aW9uIGZvciAke2ZpZWxkS2V5fWAsIGVycik7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoZnVuYykge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oYFVua25vd24gZnVuY3Rpb24gdHlwZSBmb3IgJHtmaWVsZEtleX1gKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXR1cm5WYWw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFeGVjdXRlcyBhIGZ1bmN0aW9uIHdpdGggcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBjb250ZXh0LlxyXG5cdCAqIEJ5IGRlZmF1bHQsIGVuc3VyZXMgZXhlY3V0aW9uIGhhcHBlbnMgaW4gYSBzZWN1cmUgY29udGV4dCB0byBwcmV2ZW50IGFjY2VzcyB0byB3aW5kb3cgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgLSBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cclxuXHQgKiBAcGFyYW0ge2FueVtdfFJlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uLCBlaXRoZXIgYXMgYW4gYXJyYXkgb3Igb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW2NvbnRleHQ9e31dIC0gVGhlIGNvbnRleHQgKHRoaXMpIHRvIHVzZSB3aGVuIGV4ZWN1dGluZyB0aGUgZnVuY3Rpb24uXHJcblx0ICogQHBhcmFtIHtFdmFsdWF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXhlY3V0aW9uLlxyXG5cdCAqIEByZXR1cm5zIHthbnl9IC0gVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gZXhlY3V0aW9uLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBleGVjdXRlKFxyXG5cdFx0ZnVuYzogRnVuY3Rpb24sXHJcblx0XHRhcmdzOiBhbnlbXSB8IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcblx0XHRjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcblx0XHRvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge31cclxuXHQpOiBhbnkge1xyXG5cdFx0Ly8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSBzZWN1cmUgbW9kZSAoZGVmYXVsdCkgb3IgdW5zYWZlIG1vZGVcclxuXHRcdGNvbnN0IHNlY3VyaXR5TW9kZSA9IG9wdGlvbnMuc2VjdXJpdHlNb2RlIHx8ICdzZWN1cmUnO1xyXG5cclxuXHRcdGlmIChzZWN1cml0eU1vZGUgPT09ICd1bnNhZmUnKSB7XHJcblx0XHRcdC8vIEluIHVuc2FmZSBtb2RlLCBleGVjdXRlIHdpdGggdGhlIG9yaWdpbmFsIGNvbnRleHRcclxuXHRcdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJncykgPyBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpIDogZnVuYy5jYWxsKGNvbnRleHQsIGFyZ3MpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gSW4gc2VjdXJlIG1vZGUsIGNyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IGJ5IG1lcmdpbmcgdGhlIHByb3ZpZGVkIGNvbnRleHQgd2l0aCBvdXIgc2VjdXJlIGNvbnRleHRcclxuXHRcdFx0Y29uc3Qgc2VjdXJlQ29udGV4dCA9IHtcclxuXHRcdFx0XHQuLi5jcmVhdGVTZWN1cmVDb250ZXh0KCksXHJcblx0XHRcdFx0Li4uY29udGV4dCxcclxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlc2UgcmVtYWluIHVuZGVmaW5lZCBldmVuIGlmIHRoZXkgd2VyZSBpbiB0aGUgcHJvdmlkZWQgY29udGV4dFxyXG5cdFx0XHRcdHdpbmRvdzogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRnbG9iYWxUaGlzOiB1bmRlZmluZWRcclxuXHRcdFx0fTtcclxuXHJcblx0XHRcdC8vIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIHNlY3VyZSBjb250ZXh0XHJcblx0XHRcdHJldHVybiBBcnJheS5pc0FycmF5KGFyZ3MpID8gZnVuYy5hcHBseShzZWN1cmVDb250ZXh0LCBhcmdzKSA6IGZ1bmMuY2FsbChzZWN1cmVDb250ZXh0LCBhcmdzKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSB0ZW1wbGF0ZSBmdW5jdGlvbiBmcm9tIGEgc3RyaW5nIHdpdGggY2FjaGluZyBmb3IgcGVyZm9ybWFuY2UuXHJcblx0ICogQnkgZGVmYXVsdCwgZW5zdXJlcyB0aGUgdGVtcGxhdGUgZnVuY3Rpb24gZXhlY3V0ZXMgaW4gYSBzZWN1cmUgY29udGV4dC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgc3RyaW5nIHRvIGNvbXBpbGUgaW50byBhIGZ1bmN0aW9uLlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbaGFzaF0gLSBPcHRpb25hbCBoYXNoIHRvIHVzZSBhcyBjYWNoZSBrZXkuIElmIG5vdCBwcm92aWRlZCwgYSBoYXNoIHdpbGwgYmUgZ2VuZXJhdGVkIGZyb20gdGhlIHRlbXBsYXRlLlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRlbXBsYXRlLlxyXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbnx1bmRlZmluZWR9IC0gVGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLCBvciB1bmRlZmluZWQgaWYgY29tcGlsYXRpb24gZmFpbHMuXHJcblx0ICovXHJcblx0c3RhdGljIHRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcsIGhhc2g/OiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRvck9wdGlvbnMgPSB7fSk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcclxuXHRcdGhhc2ggPSBoYXNoIHx8IHN0cmluZ0hhc2godGVtcGxhdGUpLnRvU3RyaW5nKCk7XHJcblxyXG5cdFx0Ly8gSWYgaGFzaCBjb250YWlucyBvcHRpb25zIG9iamVjdCwgZXh0cmFjdCBpdFxyXG5cdFx0aWYgKHR5cGVvZiBoYXNoID09PSAnb2JqZWN0JyAmJiAnc2VjdXJpdHlNb2RlJyBpbiBoYXNoKSB7XHJcblx0XHRcdG9wdGlvbnMgPSBoYXNoIGFzIHVua25vd24gYXMgRXZhbHVhdG9yT3B0aW9ucztcclxuXHRcdFx0aGFzaCA9IHN0cmluZ0hhc2godGVtcGxhdGUpLnRvU3RyaW5nKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGNhY2hlZCB2ZXJzaW9uXHJcblx0XHRjb25zdCBjYWNoZUtleSA9IGhhc2ggKyAob3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZScpO1xyXG5cdFx0aWYgKEV2YWx1YXRvci5jYWNoZVtjYWNoZUtleV0pIHtcclxuXHRcdFx0cmV0dXJuIEV2YWx1YXRvci5jYWNoZVtjYWNoZUtleV07XHJcblx0XHR9XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0dGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKC9jdHhcXC4vZywgJycpO1xyXG5cclxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSB0ZW1wbGF0ZSBmdW5jdGlvbiB1c2luZyBsb2Rhc2hcclxuXHRcdFx0Y29uc3QgdGVtcGxhdGVGdW5jID0gXy50ZW1wbGF0ZSh0ZW1wbGF0ZSwgRXZhbHVhdG9yLnRlbXBsYXRlU2V0dGluZ3MpO1xyXG5cclxuXHRcdFx0Ly8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSBzZWN1cmUgbW9kZSAoZGVmYXVsdCkgb3IgdW5zYWZlIG1vZGVcclxuXHRcdFx0Y29uc3Qgc2VjdXJpdHlNb2RlID0gb3B0aW9ucy5zZWN1cml0eU1vZGUgfHwgJ3NlY3VyZSc7XHJcblxyXG5cdFx0XHRpZiAoc2VjdXJpdHlNb2RlID09PSAndW5zYWZlJykge1xyXG5cdFx0XHRcdC8vIEluIHVuc2FmZSBtb2RlLCByZXR1cm4gdGhlIG9yaWdpbmFsIHRlbXBsYXRlIGZ1bmN0aW9uXHJcblx0XHRcdFx0cmV0dXJuIChFdmFsdWF0b3IuY2FjaGVbY2FjaGVLZXldID0gdGVtcGxhdGVGdW5jKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBJbiBzZWN1cmUgbW9kZSwgd3JhcCB0aGUgdGVtcGxhdGUgZnVuY3Rpb24gdG8gZW5zdXJlIGl0IHJ1bnMgaW4gYSBzZWN1cmUgY29udGV4dFxyXG5cdFx0XHRcdGNvbnN0IHNlY3VyZVRlbXBsYXRlRnVuYyA9IChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIHNlY3VyZSBjb250ZXh0IGZvciB0aGUgdGVtcGxhdGVcclxuXHRcdFx0XHRcdGNvbnN0IHNlY3VyZURhdGEgPSB7XHJcblx0XHRcdFx0XHRcdC4uLmNyZWF0ZVNlY3VyZUNvbnRleHQoKSxcclxuXHRcdFx0XHRcdFx0Li4uZGF0YSxcclxuXHRcdFx0XHRcdFx0Ly8gRW5zdXJlIHRoZXNlIHJlbWFpbiB1bmRlZmluZWRcclxuXHRcdFx0XHRcdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0Z2xvYmFsVGhpczogdW5kZWZpbmVkXHJcblx0XHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRcdHJldHVybiB0ZW1wbGF0ZUZ1bmMoc2VjdXJlRGF0YSk7XHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0Ly8gQ2FjaGUgYW5kIHJldHVybiB0aGUgc2VjdXJlIHRlbXBsYXRlIGZ1bmN0aW9uXHJcblx0XHRcdFx0cmV0dXJuIChFdmFsdWF0b3IuY2FjaGVbY2FjaGVLZXldID0gc2VjdXJlVGVtcGxhdGVGdW5jKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignRXJyb3Igd2hpbGUgcHJvY2Vzc2luZyB0ZW1wbGF0ZScsIGVyciwgdGVtcGxhdGUpO1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW50ZXJwb2xhdGVzIGEgdGVtcGxhdGUgd2l0aCBkYXRhLCBoYW5kbGluZyBib3RoIGZ1bmN0aW9uIHRlbXBsYXRlcyBhbmQgc3RyaW5nIHRlbXBsYXRlcy5cclxuXHQgKiBCeSBkZWZhdWx0LCBlbnN1cmVzIGludGVycG9sYXRpb24gaGFwcGVucyBpbiBhIHNlY3VyZSBjb250ZXh0IHRvIHByZXZlbnQgYWNjZXNzIHRvIHdpbmRvdyBvYmplY3QuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IHJhd1RlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGludGVycG9sYXRlLCBlaXRoZXIgYXMgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbi5cclxuXHQgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgdG8gdXNlIGZvciBpbnRlcnBvbGF0aW9uLlxyXG5cdCAqIEBwYXJhbSB7RXZhbHVhdG9yT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcnBvbGF0aW9uIHByb2Nlc3MuXHJcblx0ICogQHJldHVybnMge3N0cmluZ3xhbnl9IC0gVGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJwb2xhdGlvbiwgdHlwaWNhbGx5IGEgc3RyaW5nIGJ1dCBjb3VsZCBiZSBhbnkgdHlwZSBkZXBlbmRpbmcgb24gdGhlIHRlbXBsYXRlLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBpbnRlcnBvbGF0ZShcclxuXHRcdHJhd1RlbXBsYXRlOiBzdHJpbmcgfCBGdW5jdGlvbixcclxuXHRcdGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcblx0XHRvcHRpb25zOiBFdmFsdWF0b3JPcHRpb25zID0ge31cclxuXHQpOiBzdHJpbmcgfCBhbnkge1xyXG5cdFx0aWYgKHR5cGVvZiByYXdUZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdC8vIElmIHRoZSB0ZW1wbGF0ZSBpcyBhIGZ1bmN0aW9uLCBleGVjdXRlIGl0IHdpdGggdGhlIGRhdGFcclxuXHRcdFx0XHQvLyBXZSBjYW4ndCBkaXJlY3RseSBzZWN1cmUgYSBwcm92aWRlZCBmdW5jdGlvbiwgYnV0IHdlIGNhbiB1c2UgZXhlY3V0ZVxyXG5cdFx0XHRcdC8vIHRvIHJ1biBpdCBpbiBhIHNlY3VyZSBjb250ZXh0IGlmIG5lZWRlZFxyXG5cdFx0XHRcdGlmIChvcHRpb25zLnNlY3VyaXR5TW9kZSAhPT0gJ3Vuc2FmZScpIHtcclxuXHRcdFx0XHRcdGNvbnN0IHNlY3VyZURhdGEgPSB7XHJcblx0XHRcdFx0XHRcdC4uLmNyZWF0ZVNlY3VyZUNvbnRleHQoKSxcclxuXHRcdFx0XHRcdFx0Li4uZGF0YSxcclxuXHRcdFx0XHRcdFx0d2luZG93OiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHRcdHNlbGY6IHVuZGVmaW5lZCxcclxuXHRcdFx0XHRcdFx0Z2xvYmFsVGhpczogdW5kZWZpbmVkXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0cmV0dXJuIHJhd1RlbXBsYXRlKHNlY3VyZURhdGEpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gcmF3VGVtcGxhdGUoZGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zb2xlLndhcm4oJ0Vycm9yIGludGVycG9sYXRpbmcgdGVtcGxhdGUnLCBlcnIsIGRhdGEpO1xyXG5cdFx0XHRcdHJldHVybiAoZXJyIGFzIEVycm9yKS5tZXNzYWdlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmF3VGVtcGxhdGUgPSBTdHJpbmcocmF3VGVtcGxhdGUpO1xyXG5cdFx0Ly8gUGFzcyB0aGUgc2VjdXJpdHkgbW9kZSBvcHRpb24gdG8gdGhlIHRlbXBsYXRlIG1ldGhvZFxyXG5cdFx0Y29uc3QgdGVtcGxhdGUgPSBFdmFsdWF0b3IudGVtcGxhdGUocmF3VGVtcGxhdGUsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdHJldHVybiB0ZW1wbGF0ZShkYXRhKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc29sZS53YXJuKCdFcnJvciBpbnRlcnBvbGF0aW5nIHRlbXBsYXRlJywgZXJyLCByYXdUZW1wbGF0ZSwgZGF0YSk7XHJcblx0XHRcdFx0cmV0dXJuIChlcnIgYXMgRXJyb3IpLm1lc3NhZ2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGVtcGxhdGU7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './evaluator';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ldmFsdWF0b3InO1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvZXZhbHVhdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFdmFsdWF0b3JPcHRpb25zID0ge1xyXG4gIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIHRoZSBzZWN1cml0eSBsZXZlbCBvZiBldmFsdWF0aW9uLlxyXG4gICAqIC0gJ3NlY3VyZScgKGRlZmF1bHQpOiBQcmV2ZW50cyBhY2Nlc3MgdG8gd2luZG93IG9iamVjdCBhbmQgb3RoZXIgZ2xvYmFsIG9iamVjdHNcclxuICAgKiAtICd1bnNhZmUnOiBBbGxvd3MgYWNjZXNzIHRvIGFsbCBnbG9iYWwgb2JqZWN0cyAodXNlIHdpdGggY2F1dGlvbilcclxuICAgKi9cclxuICBzZWN1cml0eU1vZGU/OiAnc2VjdXJlJyB8ICd1bnNhZmUnO1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGVtcGxhdGVTZXR0aW5ncyA9IHtcclxuXHRpbnRlcnBvbGF0ZTogUmVnRXhwO1xyXG5cdGV2YWx1YXRlOiBSZWdFeHA7XHJcblx0ZXNjYXBlOiBSZWdFeHA7XHJcbn07XHJcbiJdfQ==
|
|
@@ -2,4 +2,5 @@ export * from './mapper/index';
|
|
|
2
2
|
export * from './nuxeo-response.model';
|
|
3
3
|
export * from './task.model';
|
|
4
4
|
export * from './ndf-request.model';
|
|
5
|
-
|
|
5
|
+
export * from './type-helpers';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9zaGFyZWQvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcHBlci9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbnV4ZW8tcmVzcG9uc2UubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Rhc2subW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL25kZi1yZXF1ZXN0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi90eXBlLWhlbHBlcnMnXHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL21vZGVscy90eXBlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gQmFzaWMgVXRpbGl0eSBUeXBlc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmV4cG9ydCB0eXBlIFN0cmluZ09yTnVtYmVyID0gc3RyaW5nIHwgbnVtYmVyO1xyXG5leHBvcnQgdHlwZSBTdHJpY3RPbWl0PEssIFQgZXh0ZW5kcyBrZXlvZiBLPiA9IE9taXQ8SywgVD47XHJcbmV4cG9ydCB0eXBlIExvY2FsaXplZFZhbHVlID0geyBhcjogc3RyaW5nOyBlbjogc3RyaW5nIH07XHJcbmV4cG9ydCB0eXBlIFByZXR0aWZ5PFQ+ID0ge1xyXG4gIFtrIGluIGtleW9mIFRdOiBUW2tdO1xyXG59ICYge307XHJcblxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gU3BlY2lhbCBTdHJpbmcgVHlwZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5leHBvcnQgdHlwZSBFdmFsdWF0ZWRTdHJpbmcgPSBgJHtzdHJpbmd9e3ske3N0cmluZ319fSR7c3RyaW5nfWA7XHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0ZUtleSA9IHN0cmluZztcclxuIl19
|
package/esm2015/public-api.js
CHANGED
|
@@ -248,7 +248,9 @@ export * from './lib/components/ndf-tabs';
|
|
|
248
248
|
export * from './lib/components/no-data-found';
|
|
249
249
|
export * from './lib/components/reports/charts';
|
|
250
250
|
export * from './lib/components/reports/ndf-reports';
|
|
251
|
+
export * from './lib/components/reports/chart-panel';
|
|
251
252
|
export * from './lib/components/skeleton';
|
|
252
253
|
export * from './lib/components/tables';
|
|
253
254
|
export * from './lib/components/ndf-config-editor';
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLHdCQUF3QjtBQUN4QixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywrR0FBK0csQ0FBQztBQUU5SCxjQUFjLHVJQUF1SSxDQUFDO0FBQ3RKLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyx5RUFBeUUsQ0FBQztBQUN4RixjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMs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LENBQUM7QUFDbEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELDBCQUEwQjtBQUMxQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTztBQUNQLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9tb2RlbHMvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvc2VydmljZXMvaW5kZXgnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBjb21wb25lbnRzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29tbWVudHMvY29tbWVudHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb21tZW50cy9jb21wb25lbnRzL2NvbW1lbnRzLWRhc2hsZXQvY29tbWVudHMtZGFzaGxldC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL2NvbXBvbmVudHMvZWRpdC1kZWxldGUtbW9kYWwvZWRpdC1kZWxldGUtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtLWNhbGxlci9jb25maXJtLWNhbGxlci5kaWFsb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tY2FsbGVyL2NvbmZpcm0tY2FsbGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybS1jYWxsZXIvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29ycmVzcG9uZGVuY2UtcmVsYXRpb24uY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi1jcmVhdGUtZm9ybS9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi1jcmVhdGUtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvbXBvbmVudHMvdmVyc2lvbnMvdmVyc2lvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL3NlcnZpY2VzL2NvcnJlc3BvbmRlbmNlLXJlYWxhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9zZXJ2aWNlcy92aWV3ZXItZmlsZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3JlYXRlLWVudGl0eS9jcmVhdGUtZW50aXR5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3JlYXRlLWVudGl0eS9jcmVhdGUtZW50aXR5L2NyZWF0ZS1lbnRpdHkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdHMtdGFncy9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXRhZ3MvY29ycmVzcG9uZGVuY2UtdGFncy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N0cy10YWdzL2N0cy10YWdzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3RzLXRhZ3Mvc2VydmljZXMvdGFncy1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3VzdG9tLXRvYXN0ci9jdXN0b20tdG9hc3RyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2F0dGFjaG1lbnRzLWxpc3QvYXR0YWNobWVudHMtbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2F0dGFjaG1lbnRzLXBhZ2UtcHJvdmlkZXIvYXR0YWNobWVudHMtcGFnZS1wcm92aWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LWxpc3QvZG9jdW1lbnRzLWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvZG9jdW1lbnQtdXBsb2FkL2RvY3VtZW50LXVwbG9hZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50cy9kb2N1bWVudHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29uc3RhbnRzL2RvY3VtZW50LXRlbXBsYXRlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbnN0YW50cy9kb2N1bWVudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9kb2N1bWVudHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvc2VydmljZXMvZG9jdW1lbnQtdGVtcGxhdGVzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9zZXJ2aWNlcy9kb2N1bWVudHMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0L2R5bmFtaWMtY2hhcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWNoYXJ0L3NlcnZpY2VzL2NoYXJ0LWRhdGEuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2RlcGFydG1lbnQtZm9ybS9kZXBhcnRtZW50LWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tYm9vbGl0ZW0vZHluYW1pYy1mb3JtLWJvb2xpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWJ1aWxkZXIvZHluYW1pYy1mb3JtLWJ1aWxkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tY2hlY2tib3gtaXRlbS9keW5hbWljLWZvcm0tY2hlY2tib3gtaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kYXRlaXRlbS9keW5hbWljLWZvcm0tZGF0ZWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZGVwYXJ0bWVudC9keW5hbWljLWZvcm0tZGVwYXJ0bWVudC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1kZXBhcnRtZW50L3NlcnZpY2VzL2RlcGFydG1lbnQtYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1maWVsZC9keW5hbWljLWZvcm0tZmllbGQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0vZHluYW1pYy1mb3JtLWhpanJpLWRhdGVpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLW1hcGl0ZW0vZHluYW1pYy1mb3JtLW1hcGl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tb3B0aW9ucy9keW5hbWljLWZvcm0tb3B0aW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdGFnL2R5bmFtaWMtZm9ybS1zZWxlY3QtdGFnLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2VyLWZpbHRlci9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXItZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0vZHluYW1pYy1mb3JtLXNlbGVjdGl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbS9keW5hbWljLWZvcm0tc2xpZGUtdG9nZ2xlaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS10ZXh0YXJlYS9keW5hbWljLWZvcm0tdGV4dGFyZWEuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdGV4dGl0ZW0vZHluYW1pYy1mb3JtLXRleHRpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXRyZWV2aWV3LXNlbGVjdC9kcm9wZG93bi10cmVldmlldy1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdmlld2VyL2R5bmFtaWMtZm9ybS12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtL2R5bmFtaWMtZm9ybS12b2NhYnVsYXJ5LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2Zvcm0tYnVpbGRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1zZWFyY2gvZHluYW1pYy1zZWFyY2gubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC9keW5hbWljLXNlYXJjaC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9ib29sZWFuLXZpZXdlci9ib29sZWFuLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9jdXN0b20tZG9jdW1lbnQtdmlld2VyL2N1c3RvbS1kb2N1bWVudC12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvY3VzdG9tLXBwLXZpZXdlci9jdXN0b20tcHAtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2N1dG9tZS12b2Mtdmlld2VyL2N1dG9tZS12b2Mtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2RhdGEtdmlld2VyL2RhdGEtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2RhdGUtdmlld2VyL2RhdGUtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2RlcGFydG1lbnQtdmlld2VyL2RlcGFydG1lbnQtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2Ryb3Bkb3duLXZpZXdlci9kcm9wZG93bi12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvZHluYW1pYy12aWV3Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2xpc3Qtdmlld2VyL2xpc3Qtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9hZGQtdG8tY29sbGVjdGlvbi9hZGQtdG8tY29sbGVjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY2xpcGJvYXJkL2NsaXBib2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY29weS9jb3B5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtZGlyZWN0b3J5L2NyZWF0ZS1kaXJlY3RvcnkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NyZWF0ZS1tb2RhbC9jcmVhdGUtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NyZWF0aW9uLXR5cGUvY3JlYXRpb24tdHlwZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvZGVsZXRlL2RlbGV0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvZm9sZGVyLW1vZGFsL2ZvbGRlci1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvbG9hbi1yZXF1ZXN0L2xvYW4tcmVxdWVzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvbW92ZS9tb3ZlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9wdWJsaXNoLWRpYWxvZy9wdWJsaXNoLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvcmVuYW1lL3JlbmFtZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2Nhbi1tb2RhbC9zY2FuLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaGFyZS1kaWFsb2cvc2hhcmUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaWRlcGFuZWwvc2lkZXBhbmVsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy90ZW1wbGF0ZS1tb2RhbC90ZW1wbGF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvdHJhbnNmZXItZG9jL3RyYW5zZmVyLWRvYy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvdXBkYXRlLW1vZGFsL3VwZGF0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2RpcmVjdGl2ZXMvZmlsZS1ncmlkLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2ZpbGUtbWFuYWdlci5hYnN0cmFjdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvZmlsZS1tYW5nZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyL2dyZWdvcmlhbi1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZGF0ZXBpY2tlci9oaWpyaS1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9uZ3gtaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWZvcm1hdHRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9zZXJ2aWNlcy9kYXRlLWhlbHBlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvY29tcG9uZW50cy9hY3Rpdml0eS1saW5lL2FjdGl2aXR5LWxpbmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvbGF0ZXN0LWFjdGl2aXR5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF0ZXN0LWFjdGl2aXR5L2NvbXBvbmVudHMvc2luZ2xlLWFjdGl2aXR5L3NpbmdsZS1hY3Rpdml0eS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xhdGVzdC1hY3Rpdml0eS9sYXRlc3QtYWN0aXZpdHkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZi10cm9uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9wZGZ0cm9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGRmLXRyb24vcGRmdHJvbi9wZGZ0cm9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vc2lsZW50LXBkZnRyb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlcnMtY2FyZC91c2Vycy1jYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlcnMtY2FyZC91c2Vycy1jYXJkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlld2VyLWxvZy9jb21wb25lbnRzL3ZpZXdlci1sb2cvdmlld2VyLWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXdlci1sb2cvdmlld2VyLWxvZy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvaW50ZXJmYWNlcy9vcC10eXBlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9jYWJ1bGFyeS9zZXJ2aWNlcy92b2NhYnVsYXJ5LWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2NhYnVsYXJ5L3RyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3QvdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvdm9jYWJ1bGFyeS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvdm9jYWJ1bGFyeS92b2NhYnVsYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvY29yZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLmFkYXB0ZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlzcGxheS1zdWl0YWJsZS1pY29uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uL2ljb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0dGFjaG1lbnQtaXRlbS9hdHRhY2htZW50LWl0ZW0ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdHRhY2htZW50LWl0ZW0vYXR0YWNobWVudC1pdGVtL2F0dGFjaG1lbnQtaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50L3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnQvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzL2RlcGFydG1lbnQtbWFuYWdlbWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHMvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3BlbGwtY2hlY2tlci1maWVsZC9zcGVsbC1jaGVja2VyLWZpZWxkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3BlbGwtY2hlY2tlci1maWVsZC9zcGVsbC1jaGVja2VyLXRleHQtZmllbGQvc3BlbGwtY2hlY2tlci10ZXh0LWZpZWxkLmNvbXBvbmVudCc7XHJcblxyXG4vLyBzZXJ2aWNlcyBmcm9tIGZpbGUgbWFuZ2VyXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9kaWFsb2ctbWFuZ21lbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9maWxlLW1hbmFnZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9nbG9iYWwtcGRmdHJvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL21haW5mb2xkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9wdWJsaXNoaW5nLWRvY3VtZW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvcmVjZW50bHktdmlld2VkLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvc2hhcmVkLWRvY3Muc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy91cGxvYWQtZmlsZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3VwbG9hZC1tYW5hZ21lbnQuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjdGl2aXRpZXMtbG9nL2FjdGl2aXRpZXMtbG9nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWN0aXZpdGllcy1sb2cvYWN0aXZpdGllcy1sb2cvYWN0aXZpdGllcy1sb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXRhYnMvZHluYW1pYy10YWJzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJzL2R5bmFtaWMtdGFicy9keW5hbWljLXRhYnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tdXRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIvbXVsdGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci9tdWx0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbXV0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyL211dGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMtdGVtcGxhdGUvcGVybWlzc2lvbnMtdGVtcGxhdGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlci91c2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdXNlci91c2VyL3VzZXIuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXR0YWNobWVudC1tb2RhbC9hdHRhY2htZW50LW1vZGFsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXR0YWNobWVudC1tb2RhbC9hdHRhY2htZW50cy9hdHRhY2htZW50cy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kaWFncmFtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9hc3RzJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZpZWxkcy1yZW5kZXJlci9keW5hbWljLWZpZWxkcy1yZW5kZXJlci9keW5hbWljLWZpZWxkcy1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBmcm9tIHNoYXJlZCBtb2R1bGVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9pdGVtLWxpc3QvaXRlbS1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL25vLWRhdGEvbm8tZGF0YS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9yZWFkLW1vcmUvcmVhZC1tb3JlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC1hdXRvY29tcGxldGUvc2VhcmNoLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvdXNlci1jYXJkL3VzZXItY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvbGlicmFyeVNoYXJlZC5tb2R1bGUnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBmcm9tIHNoYXJlZCBzZXJ2aWNlcyBtb2R1bGVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2dsb2JhbC1hZG1pbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3NoYXJlZC1zZXJ2aWNlcy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2FwaXMtZXJyb3JzLW1lc3NhZ2VzLnNlcnZpY2UnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBmcm9tIGNvcmUgbW9kdWxlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9lbnVtcy9sYW5ndWFnZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9lbnYvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9hY3Rpb24uZXh0ZW5zaW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2NvbXBvbmVudC1yZWdpc3Rlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vZXh0ZW5pb24tdXRpbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9leHRlbnNpb24tZWxlbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2V4dGVuc2lvbi1sb2FkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2V4dGVuc2lvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9pbml0aWFsaXphdGlvbi9pbml0aWFsaXphdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9sb2NhbFN0b3JhZy9sb2NhbC1zdG9yYWcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvcm9sZXMvcm9sZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxvYWRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy91c2VyL3VzZXItcHJlZmVyZW5jZXMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdXRpbGl0aWVzL21vbWVudC1kYXRlLWFkYXB0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3V0aWxpdGllcy91dGlsaXR5LnNlcnZpY2UnO1xyXG5cclxuLy8gZXhwb3J0IGFsbCBwaXBlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9maWxlLXNpemUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2hpanJpLWRhdGUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2xvY2FsaXplZC1kYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9tdWx0aS12YWx1ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcGlwZXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvc2VjdXJlLWh0bWwucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3NlY3VyZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvdGltZS1hZ28ucGlwZSc7XHJcblxyXG4vL2V4cG9ydCBhbGwgZGlyZWN0aXZlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvYXBwLWhhcy1yb2xlL2FwcC1oYXMtcm9sZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvY2xpY2tPdXRTaWRlL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2RpcmVjdGl2ZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvZHJhZy1hbmQtZHJvcC9kcmFnLWFuZC1kcm9wLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvcnRsL3NldC1kaXItcnRsLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9ydGwvc2V0LXJ0bC5kaXJlY3RpdmUnO1xyXG5cclxuLy9leHBvcnQgYWxsIGNvbmZpZ3VyYXRpb25cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25maWd1cmF0aW9uL2hlbHBlcnMvYXBwLWluaXRpYWxpemVyJztcclxuXHJcbi8vIEV2YWxcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL3Blcm1pc3Npb25zL2V2YWx1YXRvcnMuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL3NlcnZpY2VzL2NvbW1lbnQtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2RpcmVjdGl2ZXMnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdG9rZW5zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uZGYtZGF0ZXBpY2tlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmRmLXBhbmVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uZGYtdGFicyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbm8tZGF0YS1mb3VuZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVwb3J0cy9jaGFydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NrZWxldG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yJztcclxuIl19
|
|
255
|
+
export * from './lib/components/ndf-filters';
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLHdCQUF3QjtBQUN4QixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywrR0FBK0csQ0FBQztBQUU5SCxjQUFjLHVJQUF1SSxDQUFDO0FBQ3RKLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyx5RUFBeUUsQ0FBQztBQUN4RixjQUFjLG9GQUFvRixDQUFDO0FBQ25HLGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsd0ZBQXdGLENBQUM7QUFDdkcsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMs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LENBQUM7QUFDbEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELDBCQUEwQjtBQUMxQixjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTztBQUNQLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDhCQUE4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG51eGVvLWRldmVsb3BtZW50LWZyYW1ld29ya1xyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvbW9kZWxzL2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3NlcnZpY2VzL2luZGV4JztcclxuXHJcbi8vIGV4cG9ydCBhbGwgY29tcG9uZW50c1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbW1lbnRzL2NvbW1lbnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29tbWVudHMvY29tcG9uZW50cy9jb21tZW50cy1kYXNobGV0L2NvbW1lbnRzLWRhc2hsZXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb21tZW50cy9jb21wb25lbnRzL2VkaXQtZGVsZXRlLW1vZGFsL2VkaXQtZGVsZXRlLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybS1jYWxsZXIvY29uZmlybS1jYWxsZXIuZGlhbG9nJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtLWNhbGxlci9jb25maXJtLWNhbGxlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tY2FsbGVyL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvcnJlc3BvbmRlbmNlLXJlbGF0aW9uL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24tY3JlYXRlLWZvcm0vY29ycmVzcG9uZGVuY2UtcmVsYXRpb24tY3JlYXRlLWZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9jb21wb25lbnRzL3ZlcnNpb25zL3ZlcnNpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vY29ycmVzcG9uZGVuY2UtcmVsYXRpb24ubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS1yZWxhdGlvbi9zZXJ2aWNlcy9jb3JyZXNwb25kZW5jZS1yZWFsYXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29ycmVzcG9uZGVuY2UtcmVsYXRpb24vc2VydmljZXMvdmlld2VyLWZpbGVzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1lbnRpdHkvY3JlYXRlLWVudGl0eS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1lbnRpdHkvY3JlYXRlLWVudGl0eS9jcmVhdGUtZW50aXR5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3RzLXRhZ3MvY29tcG9uZW50cy9jb3JyZXNwb25kZW5jZS10YWdzL2NvcnJlc3BvbmRlbmNlLXRhZ3MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jdHMtdGFncy9jdHMtdGFncy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N0cy10YWdzL3NlcnZpY2VzL3RhZ3MtYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N1c3RvbS10b2FzdHIvY3VzdG9tLXRvYXN0ci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9hdHRhY2htZW50cy1saXN0L2F0dGFjaG1lbnRzLWxpc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9hdHRhY2htZW50cy1wYWdlLXByb3ZpZGVyL2F0dGFjaG1lbnRzLXBhZ2UtcHJvdmlkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1saXN0L2RvY3VtZW50cy1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvZG9jdW1lbnQtc2Nhbi9kb2N1bWVudC1zY2FuLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbXBvbmVudHMvZG9jdW1lbnQtc2Nhbi9kb2N1bWVudC1zY2FuLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb21wb25lbnRzL2RvY3VtZW50LXVwbG9hZC9kb2N1bWVudC11cGxvYWQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudHMvZG9jdW1lbnRzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL2NvbnN0YW50cy9kb2N1bWVudC10ZW1wbGF0ZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvY3VtZW50cy9jb25zdGFudHMvZG9jdW1lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvZG9jdW1lbnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG9jdW1lbnRzL3NlcnZpY2VzL2RvY3VtZW50LXRlbXBsYXRlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb2N1bWVudHMvc2VydmljZXMvZG9jdW1lbnRzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtY2hhcnQvZHluYW1pYy1jaGFydC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtY2hhcnQvZHluYW1pYy1jaGFydC9keW5hbWljLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1jaGFydC9zZXJ2aWNlcy9jaGFydC1kYXRhLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9kZXBhcnRtZW50LWZvcm0vZGVwYXJ0bWVudC1mb3JtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWJvb2xpdGVtL2R5bmFtaWMtZm9ybS1ib29saXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1idWlsZGVyL2R5bmFtaWMtZm9ybS1idWlsZGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWNoZWNrYm94LWl0ZW0vZHluYW1pYy1mb3JtLWNoZWNrYm94LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZGF0ZWl0ZW0vZHluYW1pYy1mb3JtLWRhdGVpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWRlcGFydG1lbnQvZHluYW1pYy1mb3JtLWRlcGFydG1lbnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZGVwYXJ0bWVudC9zZXJ2aWNlcy9kZXBhcnRtZW50LWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tZmllbGQvZHluYW1pYy1mb3JtLWZpZWxkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLWhpanJpLWRhdGVpdGVtL2R5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1tYXBpdGVtL2R5bmFtaWMtZm9ybS1tYXBpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLW9wdGlvbnMvZHluYW1pYy1mb3JtLW9wdGlvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tc2VsZWN0LXRhZy9keW5hbWljLWZvcm0tc2VsZWN0LXRhZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlci1maWx0ZXIvZHluYW1pYy1mb3JtLXNlbGVjdC11c2VyLWZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3RpdGVtL2R5bmFtaWMtZm9ybS1zZWxlY3RpdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0vZHluYW1pYy1mb3JtLXNsaWRlLXRvZ2dsZWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZvcm0tdGV4dGFyZWEvZHluYW1pYy1mb3JtLXRleHRhcmVhLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXRleHRpdGVtL2R5bmFtaWMtZm9ybS10ZXh0aXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS10cmVldmlldy1zZWxlY3QvZHJvcGRvd24tdHJlZXZpZXctc2VsZWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXZpZXdlci9keW5hbWljLWZvcm0tdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbS9keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9mb3JtLWJ1aWxkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtc2VhcmNoL2R5bmFtaWMtc2VhcmNoLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1zZWFyY2gvZHluYW1pYy1zZWFyY2gvZHluYW1pYy1zZWFyY2guY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvYm9vbGVhbi12aWV3ZXIvYm9vbGVhbi12aWV3ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9keW5hbWljLXZpZXcvY3VzdG9tLWRvY3VtZW50LXZpZXdlci9jdXN0b20tZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2N1c3RvbS1wcC12aWV3ZXIvY3VzdG9tLXBwLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9jdXRvbWUtdm9jLXZpZXdlci9jdXRvbWUtdm9jLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9kYXRhLXZpZXdlci9kYXRhLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9kYXRlLXZpZXdlci9kYXRlLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9kZXBhcnRtZW50LXZpZXdlci9kZXBhcnRtZW50LXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9kcm9wZG93bi12aWV3ZXIvZHJvcGRvd24tdmlld2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy12aWV3L2R5bmFtaWMtdmlldy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdmlldy9saXN0LXZpZXdlci9saXN0LXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvYWRkLXRvLWNvbGxlY3Rpb24vYWRkLXRvLWNvbGxlY3Rpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NsaXBib2FyZC9jbGlwYm9hcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2NvcHkvY29weS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvY3JlYXRlLWRpcmVjdG9yeS9jcmVhdGUtZGlyZWN0b3J5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGUtbW9kYWwvY3JlYXRlLW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jcmVhdGlvbi10eXBlL2NyZWF0aW9uLXR5cGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2RlbGV0ZS9kZWxldGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2ZvbGRlci1tb2RhbC9mb2xkZXItbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL2xvYW4tcmVxdWVzdC9sb2FuLXJlcXVlc3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL21vdmUvbW92ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvcHVibGlzaC1kaWFsb2cvcHVibGlzaC1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3JlbmFtZS9yZW5hbWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3NjYW4tbW9kYWwvc2Nhbi1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2hhcmUtZGlhbG9nL3NoYXJlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2lkZXBhbmVsL3NpZGVwYW5lbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvdGVtcGxhdGUtbW9kYWwvdGVtcGxhdGUtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3RyYW5zZmVyLWRvYy90cmFuc2Zlci1kb2MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9jb21wb25lbnRzL3VwZGF0ZS1tb2RhbC91cGRhdGUtbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9kaXJlY3RpdmVzL2ZpbGUtZ3JpZC1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWxlLW1hbmdlci9maWxlLW1hbmFnZXIuYWJzdHJhY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2ZpbGUtbWFuZ2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9oaWpyaS1ncmVnb3JpYW4tZGF0ZXBpY2tlci9ncmVnb3JpYW4tZGF0ZXBpY2tlci9ncmVnb3JpYW4tZGF0ZXBpY2tlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWRhdGVwaWNrZXIvaGlqcmktZGF0ZXBpY2tlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyL2hpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvbmd4LWhpanJpLWdyZWdvcmlhbi1kYXRlcGlja2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvc2VydmljZXMvZGF0ZS1mb3JtYXR0ZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvc2VydmljZXMvZGF0ZS1oZWxwZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF0ZXN0LWFjdGl2aXR5L2NvbXBvbmVudHMvYWN0aXZpdHktbGluZS9hY3Rpdml0eS1saW5lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF0ZXN0LWFjdGl2aXR5L2NvbXBvbmVudHMvbGF0ZXN0LWFjdGl2aXR5L2xhdGVzdC1hY3Rpdml0eS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xhdGVzdC1hY3Rpdml0eS9jb21wb25lbnRzL3NpbmdsZS1hY3Rpdml0eS9zaW5nbGUtYWN0aXZpdHkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXRlc3QtYWN0aXZpdHkvbGF0ZXN0LWFjdGl2aXR5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZGYtdHJvbi9wZGYtdHJvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BkZi10cm9uL3BkZnRyb24vcGRmdHJvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZGYtdHJvbi9wZGZ0cm9uL3NpbGVudC1wZGZ0cm9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXJzLWNhcmQvdXNlcnMtY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXJzLWNhcmQvdXNlcnMtY2FyZC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXdlci1sb2cvY29tcG9uZW50cy92aWV3ZXItbG9nL3ZpZXdlci1sb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92aWV3ZXItbG9nL3ZpZXdlci1sb2cubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2NhYnVsYXJ5L2ludGVyZmFjZXMvb3AtdHlwZS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZvY2FidWxhcnkvc2VydmljZXMvdm9jYWJ1bGFyeS1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdm9jYWJ1bGFyeS90cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0L3RyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2NhYnVsYXJ5L3ZvY2FidWxhcnkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92b2NhYnVsYXJ5L3ZvY2FidWxhcnkvdm9jYWJ1bGFyeS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2NvcmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5hZGFwdGVyJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlzcGxheS1zdWl0YWJsZS1pY29uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlzcGxheS1zdWl0YWJsZS1pY29uL2Rpc3BsYXktc3VpdGFibGUtaWNvbi9pY29uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdHRhY2htZW50LWl0ZW0vYXR0YWNobWVudC1pdGVtLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXR0YWNobWVudC1pdGVtL2F0dGFjaG1lbnQtaXRlbS9hdHRhY2htZW50LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50L3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50cy9kZXBhcnRtZW50LW1hbmFnZW1lbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnQvc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzL3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50cy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NwZWxsLWNoZWNrZXItZmllbGQvc3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NwZWxsLWNoZWNrZXItZmllbGQvc3BlbGwtY2hlY2tlci10ZXh0LWZpZWxkL3NwZWxsLWNoZWNrZXItdGV4dC1maWVsZC5jb21wb25lbnQnO1xyXG5cclxuLy8gc2VydmljZXMgZnJvbSBmaWxlIG1hbmdlclxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZGlhbG9nLW1hbmdtZW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvZ2xvYmFsLXBkZnRyb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9tYWluZm9sZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvcHVibGlzaGluZy1kb2N1bWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3JlY2VudGx5LXZpZXdlZC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3NoYXJlZC1kb2NzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQtc2VydmljZXMvdXBsb2FkLWZpbGUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy91cGxvYWQtbWFuYWdtZW50LnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hY3Rpdml0aWVzLWxvZy9hY3Rpdml0aWVzLWxvZy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjdGl2aXRpZXMtbG9nL2FjdGl2aXRpZXMtbG9nL2FjdGl2aXRpZXMtbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJzL2R5bmFtaWMtdGFicy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFicy9keW5hbWljLXRhYnMvZHluYW1pYy10YWJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbXV0aXBsZS1keW5hbWljLWZvcm0tdmlld2VyL211bHRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIvbXVsdGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL211dGlwbGUtZHluYW1pYy1mb3JtLXZpZXdlci9tdXRpcGxlLWR5bmFtaWMtZm9ybS12aWV3ZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9hZGQtcGVybWlzc2lvbnMtZGlhbG9nL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLXRlbXBsYXRlL3Blcm1pc3Npb25zLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXIvdXNlci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3VzZXIvdXNlci91c2VyLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0dGFjaG1lbnQtbW9kYWwvYXR0YWNobWVudC1tb2RhbC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0dGFjaG1lbnQtbW9kYWwvYXR0YWNobWVudHMvYXR0YWNobWVudHMuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlhZ3JhbXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RvYXN0cyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZmllbGRzLXJlbmRlcmVyL2R5bmFtaWMtZmllbGRzLXJlbmRlcmVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIvZHluYW1pYy1maWVsZHMtcmVuZGVyZXIuY29tcG9uZW50JztcclxuXHJcbi8vIGV4cG9ydCBhbGwgZnJvbSBzaGFyZWQgbW9kdWxlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvaXRlbS1saXN0L2l0ZW0tbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9uby1kYXRhL25vLWRhdGEuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvcmVhZC1tb3JlL3JlYWQtbW9yZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zZWFyY2gtYXV0b2NvbXBsZXRlL3NlYXJjaC1hdXRvY29tcGxldGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb21wb25lbnRzL3VzZXItY2FyZC91c2VyLWNhcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2xpYnJhcnlTaGFyZWQubW9kdWxlJztcclxuXHJcbi8vIGV4cG9ydCBhbGwgZnJvbSBzaGFyZWQgc2VydmljZXMgbW9kdWxlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9nbG9iYWwtYWRtaW4uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9zaGFyZWQtc2VydmljZXMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkLXNlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC1zZXJ2aWNlcy9hcGlzLWVycm9ycy1tZXNzYWdlcy5zZXJ2aWNlJztcclxuXHJcbi8vIGV4cG9ydCBhbGwgZnJvbSBjb3JlIG1vZHVsZVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZW51bXMvbGFuZ3VhZ2UuZW51bSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZW52L2luZGV4JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzLyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvY2FsbEFwaS9jYWxsLWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vYWN0aW9uLmV4dGVuc2lvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9jb21wb25lbnQtcmVnaXN0ZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2V4dGVuaW9uLXV0aWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9leHRlbnNpb24vZXh0ZW5zaW9uLWVsZW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9leHRlbnNpb24tbG9hZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2V4dGVuc2lvbi9leHRlbnNpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvaW5pdGlhbGl6YXRpb24vaW5pdGlhbGl6YXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvbG9jYWxTdG9yYWcvbG9jYWwtc3RvcmFnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL3JvbGVzL3JvbGVzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0ZS1sb2FkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMvdXNlci91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3V0aWxpdGllcy9tb21lbnQtZGF0ZS1hZGFwdGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS91dGlsaXRpZXMvdXRpbGl0eS5zZXJ2aWNlJztcclxuXHJcbi8vIGV4cG9ydCBhbGwgcGlwZXNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvZmlsZS1zaXplLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9oaWpyaS1kYXRlLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9sb2NhbGl6ZWQtZGF0ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbXVsdGktdmFsdWUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3BpcGVzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3NlY3VyZS1odG1sLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9zZWN1cmUucGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3RpbWUtYWdvLnBpcGUnO1xyXG5cclxuLy9leHBvcnQgYWxsIGRpcmVjdGl2ZXNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2FwcC1oYXMtcm9sZS9hcHAtaGFzLXJvbGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2NsaWNrT3V0U2lkZS9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9kaXJlY3RpdmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL2RyYWctYW5kLWRyb3AvZHJhZy1hbmQtZHJvcC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlL3J0bC9zZXQtZGlyLXJ0bC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmUvcnRsL3NldC1ydGwuZGlyZWN0aXZlJztcclxuXHJcbi8vZXhwb3J0IGFsbCBjb25maWd1cmF0aW9uXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlndXJhdGlvbi9oZWxwZXJzL2FwcC1pbml0aWFsaXplcic7XHJcblxyXG4vLyBFdmFsXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9ldmFsdWF0b3JzLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb21tZW50cy9zZXJ2aWNlcy9jb21tZW50LWFwaS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9kaXJlY3RpdmVzJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3Rva2Vucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmRmLWRhdGVwaWNrZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25kZi1wYW5lbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmRmLXRhYnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25vLWRhdGEtZm91bmQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvY2hhcnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yZXBvcnRzL2NoYXJ0LXBhbmVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9za2VsZXRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFibGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmRmLWZpbHRlcnMnXHJcbiJdfQ==
|