geonetwork-ui 2.8.0-dev.93d2d87c0 → 2.8.0-dev.b7a1670bc
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/esm2022/index.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +5 -1
- package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +6 -1
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +31 -4
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
- package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +7 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
- package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
- package/esm2022/libs/common/domain/src/index.mjs +3 -0
- package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +3 -1
- package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
- package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +26 -8
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
- package/esm2022/libs/feature/record/src/index.mjs +2 -1
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
- package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +4 -4
- package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +4 -3
- package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +230 -0
- package/esm2022/libs/feature/record/src/lib/stac-view/utils.mjs +26 -0
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +2 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
- package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
- package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
- package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +36 -22
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +2 -1
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
- package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
- package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
- package/esm2022/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
- package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
- package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +86 -32
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +1 -1
- package/esm2022/libs/ui/widgets/src/lib/loading-mask/loading-mask.component.mjs +3 -3
- package/esm2022/libs/util/i18n/src/lib/date-locales.mjs +33 -0
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
- package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
- package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
- package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
- package/esm2022/translations/de.json +20 -3
- package/esm2022/translations/en.json +20 -4
- package/esm2022/translations/es.json +19 -2
- package/esm2022/translations/fr.json +20 -3
- package/esm2022/translations/it.json +21 -4
- package/esm2022/translations/nl.json +19 -2
- package/esm2022/translations/pt.json +19 -2
- package/esm2022/translations/sk.json +20 -3
- package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs +35 -0
- package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs.map +1 -0
- package/fesm2022/geonetwork-ui.mjs +946 -287
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.ts +1 -0
- package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
- package/libs/common/domain/src/index.d.ts +3 -0
- package/libs/common/domain/src/index.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +7 -2
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +1 -0
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts +12 -5
- package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts +3 -1
- package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +53 -0
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
- package/libs/feature/record/src/lib/stac-view/utils.d.ts +7 -0
- package/libs/feature/record/src/lib/stac-view/utils.d.ts.map +1 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
- package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
- package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
- package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
- package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
- package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +24 -14
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
- package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
- package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
- package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +11 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +39 -3
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
- package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -1
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -1
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +12 -4
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
- package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
- package/src/libs/common/domain/src/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -1
- package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
- package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- package/src/libs/feature/record/src/index.ts +1 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -1
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
- package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +10 -8
- package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +1 -1
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -2
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -2
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +8 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +87 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +339 -0
- package/src/libs/feature/record/src/lib/stac-view/utils.ts +57 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -1
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
- package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
- package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
- package/src/libs/feature/search/src/lib/constants.ts +1 -1
- package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +1 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +37 -33
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
- package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +69 -23
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.html +3 -3
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
- package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.html +16 -14
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +144 -65
- package/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -0
- package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
- package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
- package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
- package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
- package/translations/de.json +20 -3
- package/translations/en.json +20 -4
- package/translations/es.json +19 -2
- package/translations/fr.json +20 -3
- package/translations/it.json +21 -4
- package/translations/nl.json +19 -2
- package/translations/pt.json +19 -2
- package/translations/sk.json +20 -3
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
- package/src/libs/common/domain/src/lib/index.ts +0 -2
- package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
|
@@ -509,8 +509,9 @@ export function writeDefaultLanguage(record, rootEl) {
|
|
|
509
509
|
return pipe(findNestedChildOrCreate('gmd:language', 'gmd:LanguageCode'), writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'), writeAttribute('codeListValue', lang3))(rootEl);
|
|
510
510
|
}
|
|
511
511
|
export function writeResourceIdentifier(record, rootEl) {
|
|
512
|
-
|
|
513
|
-
|
|
512
|
+
const firstIdentifier = record.resourceIdentifiers?.[0]?.code;
|
|
513
|
+
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'), removeChildrenByName('gmd:identifier'), firstIdentifier
|
|
514
|
+
? pipe(createNestedChild('gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), writeCharacterString(firstIdentifier))
|
|
514
515
|
: noop)(rootEl);
|
|
515
516
|
}
|
|
516
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTEzOS93cml0ZS1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXhDLE9BQU8sRUFFTCxXQUFXLEVBQ1gsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsY0FBYyxHQUVmLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seURBQXlELENBQUE7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFOUQsU0FBUyxxQkFBcUIsQ0FDNUIsT0FBa0QsRUFDbEQsSUFBWSxFQUNaLFlBQThCLEVBQzlCLGVBQTZCO0lBRTdCLElBQUksQ0FBQyxZQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUMs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QWdCLENBQUMsRUFDdEMsTUFBTSxDQUFDLGtCQUFrQjtRQUN2QixDQUFDLENBQUMsSUFBSSxDQUNGLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUNwRSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FDaEQ7UUFDSCxDQUFDLENBQUMsSUFBSSxDQUNULENBQUMsTUFBTSxDQUFDLENBQUE7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ29uc3RyYWludCxcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0UmVjb3JkLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgRmllbGRUcmFuc2xhdGlvbixcbiAgSW5kaXZpZHVhbCxcbiAgS2V5d29yZCxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBSZWNvcmRTdGF0dXMsXG4gIFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgUmV1c2VSZWNvcmQsXG4gIFJvbGUsXG4gIFNlcnZpY2VFbmRwb2ludCxcbiAgU2VydmljZU9ubGluZVJlc291cmNlLFxuICBTZXJ2aWNlUmVjb3JkLFxuICBVcGRhdGVGcmVxdWVuY3lDb2RlLFxuICBVcGRhdGVGcmVxdWVuY3lDdXN0b20sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFRoZXNhdXJ1c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzJ1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMvZm9ybWF0J1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHtcbiAgQ2hhaW5hYmxlRnVuY3Rpb24sXG4gIGZpbHRlckFycmF5LFxuICBtYXAsXG4gIG1hcEFycmF5LFxuICBub29wLFxuICBwaXBlLFxuICB0YXAsXG59IGZyb20gJy4uL2Z1bmN0aW9uLXV0aWxzJ1xuaW1wb3J0IHtcbiAgYWxsQ2hpbGRyZW5FbGVtZW50LFxuICBhcHBlbmRDaGlsZHJlbixcbiAgY3JlYXRlQ2hpbGQsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGNyZWF0ZU5lc3RlZENoaWxkLFxuICBjcmVhdGVOZXN0ZWRFbGVtZW50LFxuICBmaW5kQ2hpbGRPckNyZWF0ZSxcbiAgZmluZENoaWxkcmVuRWxlbWVudCxcbiAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUsXG4gIGZpbmROZXN0ZWRFbGVtZW50LFxuICBmaW5kTmVzdGVkRWxlbWVudHMsXG4gIHJlYWRBdHRyaWJ1dGUsXG4gIHJlbW92ZUFsbENoaWxkcmVuLFxuICByZW1vdmVDaGlsZHJlbixcbiAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUsXG4gIHNldFRleHRDb250ZW50LFxuICB3cml0ZUF0dHJpYnV0ZSxcbiAgWG1sRWxlbWVudCxcbn0gZnJvbSAnLi4veG1sLXV0aWxzJ1xuaW1wb3J0IHsgcmVhZEtpbmQgfSBmcm9tICcuL3JlYWQtcGFydHMnXG5pbXBvcnQgeyB3cml0ZUdlb21ldHJ5IH0gZnJvbSAnLi91dGlscy9nZW9tZXRyeSdcbmltcG9ydCB7IG5hbWVQYXJ0c1RvRnVsbCB9IGZyb20gJy4vdXRpbHMvaW5kaXZpZHVhbC1uYW1lJ1xuaW1wb3J0IHsgdG9MYW5nMyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYy9saWIvbGFuZ3VhZ2UtY29kZXMnXG5pbXBvcnQgeyBraW5kVG9Db2RlTGlzdFZhbHVlIH0gZnJvbSAnLi4vY29tbW9uL3Jlc291cmNlLXR5cGVzJ1xuXG5mdW5jdGlvbiB3cml0ZUxvY2FsaXplZEVsZW1lbnQoXG4gIHdyaXRlRm46IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+LFxuICB0ZXh0OiBzdHJpbmcsXG4gIHRyYW5zbGF0aW9uczogRmllbGRUcmFuc2xhdGlvbixcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgaWYgKCF0cmFuc2xhdGlvbnMpXG4gICAgcmV0dXJuIHBpcGUod3JpdGVGbiwgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpQVF9GcmVlVGV4dCcpKSAvLyBJZiBubyB0cmFuc2xhdGlvbnMsIHJlbW92ZSBleGlzdGluZyBpZiBhbnlcbiAgZnVuY3Rpb24gY3JlYXRlTG9jYWxpemVkKGxhbmc6IExhbmd1YWdlQ29kZSwgdHJhbnNsYXRpb246IHN0cmluZykge1xuICAgIHJldHVybiBwaXBlKFxuICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOnRleHRHcm91cCcsICdnbWQ6TG9jYWxpc2VkQ2hhcmFjdGVyU3RyaW5nJyksXG4gICAgICB3cml0ZUF0dHJpYnV0ZSgnbG9jYWxlJywgYCMke2xhbmcudG9VcHBlckNhc2UoKX1gKSxcbiAgICAgIHNldFRleHRDb250ZW50KHRyYW5zbGF0aW9uKVxuICAgIClcbiAgfVxuICByZXR1cm4gcGlwZShcbiAgICB3cml0ZUZuLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6UFRfRnJlZVRleHQnKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOlBUX0ZyZWVUZXh0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBjcmVhdGVMb2NhbGl6ZWQoZGVmYXVsdExhbmd1YWdlLCB0ZXh0KSxcbiAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9ucykubWFwKChbbGFuZywgdHJhbnNsYXRpb25dKSA9PlxuICAgICAgICBjcmVhdGVMb2NhbGl6ZWQobGFuZywgdHJhbnNsYXRpb24pXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNoYXJhY3RlclN0cmluZyhcbiAgdGV4dDogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShmaW5kQ2hpbGRPckNyZWF0ZSgnZ2NvOkNoYXJhY3RlclN0cmluZycpLCBzZXRUZXh0Q29udGVudCh0ZXh0KSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gIHRleHQ6IHN0cmluZyxcbiAgdHJhbnNsYXRpb25zOiBGaWVsZFRyYW5zbGF0aW9uLFxuICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gd3JpdGVMb2NhbGl6ZWRFbGVtZW50KFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHRleHQpLFxuICAgIHRleHQsXG4gICAgdHJhbnNsYXRpb25zLFxuICAgIGRlZmF1bHRMYW5ndWFnZVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpbmthZ2UoXG4gIHVybDogVVJMXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShcbiAgICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6bGlua2FnZScsICdnbWQ6VVJMJyksXG4gICAgICBzZXRUZXh0Q29udGVudCh1cmwudG9TdHJpbmcoKSlcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQW5jaG9yKFxuICB1cmw6IFVSTCxcbiAgdGV4dD86IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ214OkFuY2hvcicpLFxuICAgICAgd3JpdGVBdHRyaWJ1dGUoJ3hsaW5rOmhyZWYnLCB1cmwudG9TdHJpbmcoKSksXG4gICAgICB0ZXh0ID8gc2V0VGV4dENvbnRlbnQodGV4dCkgOiBub29wXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxvY2FsaXplZEFuY2hvcihcbiAgdXJsOiBVUkwsXG4gIHRleHQ6IHN0cmluZyxcbiAgdHJhbnNsYXRpb25zOiBGaWVsZFRyYW5zbGF0aW9uLFxuICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gd3JpdGVMb2NhbGl6ZWRFbGVtZW50KFxuICAgIHdyaXRlQW5jaG9yKHVybCwgdGV4dCksXG4gICAgdGV4dCxcbiAgICB0cmFuc2xhdGlvbnMsXG4gICAgZGVmYXVsdExhbmd1YWdlXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRGF0ZVRpbWUoXG4gIGRhdGU6IERhdGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2djbzpEYXRlVGltZScpLFxuICAgIHNldFRleHRDb250ZW50KGZvcm1hdChkYXRlLCBcInl5eXktTU0tZGQnVCdISDptbTpzc1wiKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEYXRlKFxuICBkYXRlOiBEYXRlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnY286RGF0ZScpLFxuICAgICAgc2V0VGV4dENvbnRlbnQoZm9ybWF0KGRhdGUsICd5eXl5LU1NLWRkJykpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlY2ltYWwoXG4gIGRlY2ltYWw6IG51bWJlclxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoZmluZENoaWxkT3JDcmVhdGUoJ2djbzpEZWNpbWFsJyksIHNldFRleHRDb250ZW50KGRlY2ltYWwudG9TdHJpbmcoKSkpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2dyZXNzQ29kZShzdGF0dXM6IFJlY29yZFN0YXR1cyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgIHJldHVybiAnY29tcGxldGVkJ1xuICAgIGNhc2UgJ2RlcHJlY2F0ZWQnOlxuICAgICAgcmV0dXJuICdkZXByZWNhdGVkJ1xuICAgIGNhc2UgJ29uZ29pbmcnOlxuICAgICAgcmV0dXJuICdvbkdvaW5nJ1xuICAgIGNhc2UgJ3JlbW92ZWQnOlxuICAgICAgcmV0dXJuICdyZW1vdmVkJ1xuICAgIGNhc2UgJ3VuZGVyX2RldmVsb3BtZW50JzpcbiAgICAgIHJldHVybiAndW5kZXJEZXZlbG9wbWVudCdcbiAgICBjYXNlICdwbGFubmVkJzpcbiAgICAgIHJldHVybiAncGxhbm5lZCdcbiAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICByZXR1cm4gJ3JlcXVpcmVkJ1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgZGV0ZXJtaW5lIHByb2dyZXNzIGNvZGUgZnJvbSBzdGF0dXM6ICR7c3RhdHVzfWBcbiAgICAgIClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9sZUNvZGUocm9sZTogUm9sZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAocm9sZSkge1xuICAgIGNhc2UgJ2F1dGhvcic6XG4gICAgICByZXR1cm4gJ2F1dGhvcidcbiAgICBjYXNlICdjb2xsYWJvcmF0b3InOlxuICAgICAgcmV0dXJuICdjb2xsYWJvcmF0b3InXG4gICAgY2FzZSAnY29udHJpYnV0b3InOlxuICAgICAgcmV0dXJuICdjb250cmlidXRvcidcbiAgICBjYXNlICdjdXN0b2RpYW4nOlxuICAgICAgcmV0dXJuICdjdXN0b2RpYW4nXG4gICAgY2FzZSAnZGlzdHJpYnV0b3InOlxuICAgICAgcmV0dXJuICdkaXN0cmlidXRvcidcbiAgICBjYXNlICdlZGl0b3InOlxuICAgICAgcmV0dXJuICdlZGl0b3InXG4gICAgY2FzZSAnZnVuZGVyJzpcbiAgICAgIHJldHVybiAnZnVuZGVyJ1xuICAgIGNhc2UgJ21lZGlhdG9yJzpcbiAgICAgIHJldHVybiAnbWVkaWF0b3InXG4gICAgY2FzZSAnb3JpZ2luYXRvcic6XG4gICAgICByZXR1cm4gJ29yaWdpbmF0b3InXG4gICAgY2FzZSAnb3RoZXInOlxuICAgICAgcmV0dXJuICdvdGhlcidcbiAgICBjYXNlICdvd25lcic6XG4gICAgICByZXR1cm4gJ293bmVyJ1xuICAgIGNhc2UgJ3BvaW50X29mX2NvbnRhY3QnOlxuICAgICAgcmV0dXJuICdwb2ludE9mQ29udGFjdCdcbiAgICBjYXNlICdwcmluY2lwYWxfaW52ZXN0aWdhdG9yJzpcbiAgICAgIHJldHVybiAncHJpbmNpcGFsSW52ZXN0aWdhdG9yJ1xuICAgIGNhc2UgJ3Byb2Nlc3Nvcic6XG4gICAgICByZXR1cm4gJ3Byb2Nlc3NvcidcbiAgICBjYXNlICdwdWJsaXNoZXInOlxuICAgICAgcmV0dXJuICdwdWJsaXNoZXInXG4gICAgY2FzZSAncmVzb3VyY2VfcHJvdmlkZXInOlxuICAgICAgcmV0dXJuICdyZXNvdXJjZVByb3ZpZGVyJ1xuICAgIGNhc2UgJ3JpZ2h0c19ob2xkZXInOlxuICAgICAgcmV0dXJuICdyaWdodHNIb2xkZXInXG4gICAgY2FzZSAnc3BvbnNvcic6XG4gICAgICByZXR1cm4gJ3Nwb25zb3InXG4gICAgY2FzZSAnc3Rha2Vob2xkZXInOlxuICAgICAgcmV0dXJuICdzdGFrZWhvbGRlcidcbiAgICBjYXNlICd1bnNwZWNpZmllZCc6XG4gICAgICByZXR1cm4gJ3Vuc3BlY2lmaWVkJ1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuICd1c2VyJ1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlcm1pbmUgcm9sZSBjb2RlIGZyb20gcm9sZTogJHtyb2xlfWApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZpY2VEaXN0cmlidXRpb25Qcm90b2NvbChcbiAgZGlzdHJpYnV0aW9uOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuKTogc3RyaW5nIHtcbiAgc3dpdGNoIChkaXN0cmlidXRpb24uYWNjZXNzU2VydmljZVByb3RvY29sLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdvZ2NmZWF0dXJlcyc6XG4gICAgICByZXR1cm4gJ09HQyBBUEkgRmVhdHVyZXMnXG4gICAgY2FzZSAnd2ZzJzpcbiAgICAgIHJldHVybiAnT0dDOldGUydcbiAgICBjYXNlICd3bXMnOlxuICAgICAgcmV0dXJuICdPR0M6V01TJ1xuICAgIGNhc2UgJ3dwcyc6XG4gICAgICByZXR1cm4gJ09HQzpXUFMnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkaXN0cmlidXRpb24uYWNjZXNzU2VydmljZVByb3RvY29sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShcbiAgdXBkYXRlRnJlcXVlbmN5OiBVcGRhdGVGcmVxdWVuY3lDb2RlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoICh1cGRhdGVGcmVxdWVuY3kpIHtcbiAgICBjYXNlICdhc05lZWRlZCc6XG4gICAgICByZXR1cm4gJ2FzTmVlZGVkJ1xuICAgIGNhc2UgJ3Vua25vd24nOlxuICAgICAgcmV0dXJuICd1bmtub3duJ1xuICAgIGNhc2UgJ2lycmVndWxhcic6XG4gICAgICByZXR1cm4gJ2lycmVndWxhcidcbiAgICBjYXNlICdub3RQbGFubmVkJzpcbiAgICAgIHJldHVybiAnbm90UGxhbm5lZCdcbiAgICBjYXNlICdjb250aW51YWwnOlxuICAgICAgcmV0dXJuICdjb250aW51YWwnXG4gICAgY2FzZSAncGVyaW9kaWMnOlxuICAgICAgcmV0dXJuICdwZXJpb2RpYydcbiAgICBjYXNlICdkYWlseSc6XG4gICAgICByZXR1cm4gJ2RhaWx5J1xuICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICByZXR1cm4gJ3dlZWtseSdcbiAgICBjYXNlICdmb3J0bmlnaHRseSc6XG4gICAgICByZXR1cm4gJ2ZvcnRuaWdodGx5J1xuICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgcmV0dXJuICdtb250aGx5J1xuICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XG4gICAgICByZXR1cm4gJ3F1YXJ0ZXJseSdcbiAgICBjYXNlICdiaWFubnVhbGx5JzpcbiAgICAgIHJldHVybiAnYmlhbm51YWxseSdcbiAgICBjYXNlICdhbm51YWxseSc6XG4gICAgICByZXR1cm4gJ2FubnVhbGx5J1xuICAgIGNhc2UgJ3NlbWltb250aGx5JzpcbiAgICAgIHJldHVybiAnc2VtaW1vbnRobHknXG4gICAgY2FzZSAnYmllbm5pYWxseSc6XG4gICAgICByZXR1cm4gJ2JpZW5uaWFsbHknXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElTT0R1cmF0aW9uKHVwZGF0ZUZyZXF1ZW5jeTogVXBkYXRlRnJlcXVlbmN5Q3VzdG9tKTogc3RyaW5nIHtcbiAgY29uc3QgZHVyYXRpb24gPSB7XG4gICAgeWVhcnM6IDAsXG4gICAgbW9udGhzOiAwLFxuICAgIHdlZWtzOiAwLFxuICAgIGRheXM6IDAsXG4gICAgaG91cnM6IDAsXG4gIH1cbiAgc3dpdGNoICh1cGRhdGVGcmVxdWVuY3kucGVyKSB7XG4gICAgY2FzZSAnZGF5JzpcbiAgICAgIGlmICh1cGRhdGVGcmVxdWVuY3kudXBkYXRlZFRpbWVzIDw9IDEpIGR1cmF0aW9uLmRheXMgPSAxXG4gICAgICBlbHNlIGR1cmF0aW9uLmhvdXJzID0gTWF0aC5yb3VuZCgyNCAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgZHVyYXRpb24uZGF5cyA9IE1hdGgucm91bmQoNyAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgLSAwLjAwMDEpIC8vIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoYXQgJzIgdGltZXMgcGVyIHdlZWsnID0gJ2V2ZXJ5IDMgZGF5cydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnbW9udGgnOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24ubW9udGhzID0gMVxuICAgICAgZWxzZSBkdXJhdGlvbi5kYXlzID0gTWF0aC5yb3VuZCgzMCAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3llYXInOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24ueWVhcnMgPSAxXG4gICAgICBlbHNlIGR1cmF0aW9uLm1vbnRocyA9IE1hdGgucm91bmQoMTIgLyB1cGRhdGVGcmVxdWVuY3kudXBkYXRlZFRpbWVzKVxuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBob3VycyA9IGR1cmF0aW9uLmhvdXJzID4gMCA/IGBUJHtkdXJhdGlvbi5ob3Vyc31IYCA6ICcnXG4gIHJldHVybiBgUCR7ZHVyYXRpb24ueWVhcnN9WSR7ZHVyYXRpb24ubW9udGhzfU0ke2R1cmF0aW9uLmRheXN9RCR7aG91cnN9YFxufVxuXG5mdW5jdGlvbiBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KFxuICBjb250YWN0OiBJbmRpdmlkdWFsLFxuICB0cmFuc2xhdGlvbnM6IFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGVcbikge1xuICBjb25zdCBmdWxsTmFtZSA9IG5hbWVQYXJ0c1RvRnVsbChjb250YWN0LmZpcnN0TmFtZSwgY29udGFjdC5sYXN0TmFtZSlcblxuICBjb25zdCBjcmVhdGVBZGRyZXNzID0gcGlwZShcbiAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6YWRkcmVzcycsICdnbWQ6Q0lfQWRkcmVzcycpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmVsZWN0cm9uaWNNYWlsQWRkcmVzcycpLFxuICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LmVtYWlsKVxuICAgICAgKVxuICAgICksXG4gICAgY29udGFjdC5hZGRyZXNzXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGVsaXZlcnlQb2ludCcpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5hZGRyZXNzKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICBjb25zdCBjcmVhdGVDb250YWN0ID0gcGlwZShcbiAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6Y29udGFjdEluZm8nLCAnZ21kOkNJX0NvbnRhY3QnKSxcbiAgICBjb250YWN0LnBob25lXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6cGhvbmUnLCAnZ21kOkNJX1RlbGVwaG9uZScsICdnbWQ6dm9pY2UnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QucGhvbmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3AsXG4gICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlQWRkcmVzcyksXG4gICAgY29udGFjdC5vcmdhbml6YXRpb24/LndlYnNpdGVcbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpvbmxpbmVSZXNvdXJjZScsICdnbWQ6Q0lfT25saW5lUmVzb3VyY2UnKSxcbiAgICAgICAgICAgIHdyaXRlTGlua2FnZShjb250YWN0Lm9yZ2FuaXphdGlvbi53ZWJzaXRlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICByZXR1cm4gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpDSV9SZXNwb25zaWJsZVBhcnR5JyksXG4gICAgICBmdWxsTmFtZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmluZGl2aWR1YWxOYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGZ1bGxOYW1lKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuICAgICAgY29udGFjdC5wb3NpdGlvblxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnBvc2l0aW9uTmFtZScpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LnBvc2l0aW9uKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuXG4gICAgICBjb250YWN0Lm9yZ2FuaXphdGlvbj8ubmFtZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOm9yZ2FuaXNhdGlvbk5hbWUnKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5vcmdhbml6YXRpb24ubmFtZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBjcmVhdGVDb250YWN0LFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpyb2xlJywgJ2dtZDpDSV9Sb2xlQ29kZScpLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI0NJX1JvbGVDb2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBnZXRSb2xlQ29kZShjb250YWN0LnJvbGUpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVLZXl3b3JkcygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKHBpcGUoZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3JkcycpKSlcbn1cblxuLy8gcmV0dXJucyBhIDxnbWQ6dGhlc2F1cnVzTmFtZT4gZWxlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRoZXNhdXJ1cyh0aGVzYXVydXM6IFRoZXNhdXJ1c01vZGVsKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDp0aGVzYXVydXNOYW1lJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRpdGxlJyksXG4gICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHRoZXNhdXJ1cy5uYW1lIHx8IHRoZXNhdXJ1cy5pZClcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6aWRlbnRpZmllcicsICdnbWQ6TURfSWRlbnRpZmllcicpLFxuICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmNvZGUnKSxcbiAgICAgICAgICAgIHRoZXNhdXJ1cy51cmxcbiAgICAgICAgICAgICAgPyB3cml0ZUFuY2hvcih0aGVzYXVydXMudXJsLCB0aGVzYXVydXMuaWQpXG4gICAgICAgICAgICAgIDogd3JpdGVDaGFyYWN0ZXJTdHJpbmcodGhlc2F1cnVzLmlkKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kS2V5d29yZHMoXG4gIGtleXdvcmRzOiBLZXl3b3JkW10sXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4pIHtcbiAgLy8ga2V5d29yZHMgYXJlIGdyb3VwZWQgYnkgdGhlc2F1cnVzIGlmIHRoZXkgaGF2ZSBvbmUsIG90aGVyd2lzZSBieSB0eXBlXG4gIGNvbnN0IGtleXdvcmRzQnlUaGVzYXVydXM6IEtleXdvcmRbXVtdID0ga2V5d29yZHMucmVkdWNlKChhY2MsIGtleXdvcmQpID0+IHtcbiAgICBjb25zdCB0aGVzYXVydXNJZCA9IGtleXdvcmQudGhlc2F1cnVzPy5pZFxuICAgIGNvbnN0IHR5cGUgPSBrZXl3b3JkLnR5cGVcbiAgICBsZXQgZXhpc3RpbmdHcm91cCA9IGFjYy5maW5kKChncm91cCkgPT5cbiAgICAgIHRoZXNhdXJ1c0lkXG4gICAgICAgID8gZ3JvdXBbMF0udGhlc2F1cnVzPy5pZCA9PT0gdGhlc2F1cnVzSWRcbiAgICAgICAgOiBncm91cFswXS50eXBlID09PSB0eXBlICYmICFncm91cFswXS50aGVzYXVydXNcbiAgICApXG4gICAgaWYgKCFleGlzdGluZ0dyb3VwKSB7XG4gICAgICBleGlzdGluZ0dyb3VwID0gW11cbiAgICAgIGFjYy5wdXNoKGV4aXN0aW5nR3JvdXApXG4gICAgfVxuICAgIGV4aXN0aW5nR3JvdXAucHVzaChrZXl3b3JkKVxuICAgIHJldHVybiBhY2NcbiAgfSwgW10pXG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICAuLi5rZXl3b3Jkc0J5VGhlc2F1cnVzLm1hcCgoa2V5d29yZHMpID0+XG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3JkcycsICdnbWQ6TURfS2V5d29yZHMnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDp0eXBlJywgJ2dtZDpNRF9LZXl3b3JkVHlwZUNvZGUnKSxcbiAgICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9LZXl3b3JkVHlwZUNvZGUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBrZXl3b3Jkc1swXS50eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAga2V5d29yZHNbMF0udGhlc2F1cnVzXG4gICAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihjcmVhdGVUaGVzYXVydXMoa2V5d29yZHNbMF0udGhlc2F1cnVzKSlcbiAgICAgICAgICA6IG5vb3AsXG4gICAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIC4uLmtleXdvcmRzLm1hcCgoa2V5d29yZCkgPT5cbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDprZXl3b3JkJyksXG4gICAgICAgICAgICAgIHdyaXRlTG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKFxuICAgICAgICAgICAgICAgIGtleXdvcmQubGFiZWwsXG4gICAgICAgICAgICAgICAga2V5d29yZC50cmFuc2xhdGlvbnM/LmxhYmVsLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25zdHJhaW50KFxuICBjb25zdHJhaW50OiBDb25zdHJhaW50LFxuICB0eXBlOiAnbGVnYWwnIHwgJ3NlY3VyaXR5JyB8ICdvdGhlcicsXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4pIHtcbiAgaWYgKHR5cGUgPT09ICdzZWN1cml0eScpIHtcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoXG4gICAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAgICdnbWQ6TURfU2VjdXJpdHlDb25zdHJhaW50cydcbiAgICAgICksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KFxuICAgICAgICAgICAgJ2dtZDpjbGFzc2lmaWNhdGlvbicsXG4gICAgICAgICAgICAnZ21kOk1EX0NsYXNzaWZpY2F0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX0NsYXNzaWZpY2F0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgJ3Jlc3RyaWN0ZWQnKVxuICAgICAgICApLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp1c2VMaW1pdGF0aW9uJyksXG4gICAgICAgICAgJ3VybCcgaW4gY29uc3RyYWludFxuICAgICAgICAgICAgPyB3cml0ZUxvY2FsaXplZEFuY2hvcihcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnVybCxcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnRleHQsXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50cmFuc2xhdGlvbnM/LnRleHQsXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50ZXh0LFxuICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQudHJhbnNsYXRpb25zPy50ZXh0LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xlZ2FsJykge1xuICAgIHJldHVybiBwaXBlKFxuICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnLCAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoXG4gICAgICAgICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJyxcbiAgICAgICAgICAgICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnb3RoZXJSZXN0cmljdGlvbnMnKVxuICAgICAgICApLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgICAgJ3VybCcgaW4gY29uc3RyYWludFxuICAgICAgICAgICAgPyB3cml0ZUxvY2FsaXplZEFuY2hvcihcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnVybCxcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnRleHQsXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50cmFuc2xhdGlvbnM/LnRleHQsXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50ZXh0LFxuICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQudHJhbnNsYXRpb25zPy50ZXh0LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cbiAgLy8gb3RoZXJcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlTmVzdGVkRWxlbWVudChcbiAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0NvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6dXNlTGltaXRhdGlvbidcbiAgICApLFxuICAgICd1cmwnIGluIGNvbnN0cmFpbnRcbiAgICAgID8gd3JpdGVMb2NhbGl6ZWRBbmNob3IoXG4gICAgICAgICAgY29uc3RyYWludC51cmwsXG4gICAgICAgICAgY29uc3RyYWludC50ZXh0LFxuICAgICAgICAgIGNvbnN0cmFpbnQudHJhbnNsYXRpb25zPy50ZXh0LFxuICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICApXG4gICAgICA6IHdyaXRlTG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKFxuICAgICAgICAgIGNvbnN0cmFpbnQudGV4dCxcbiAgICAgICAgICBjb25zdHJhaW50LnRyYW5zbGF0aW9ucz8udGV4dCxcbiAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVPdGhlckNvbnN0cmFpbnRzKCkge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgbWFwQXJyYXkoXG4gICAgICAgIHJlbW92ZUNoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6TURfQ29uc3RyYWludHMnKSxcbiAgICAgICAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgICAgICAgICAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU2VjdXJpdHlDb25zdHJhaW50cygpIHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIG1hcEFycmF5KFxuICAgICAgICByZW1vdmVDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX1NlY3VyaXR5Q29uc3RyYWludHMnKSxcbiAgICAgICAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgICAgICAgICAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGVnYWxDb25zdHJhaW50cygpIHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIG1hcEFycmF5KFxuICAgICAgICByZW1vdmVDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICAgICAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICAgICAgICAgICAgICdnbWQ6YWNjZXNzQ29uc3RyYWludHMnLFxuICAgICAgICAgICAgICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXBBcnJheShyZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJykpLFxuICAgICAgICAgICAgICAgIChyZXN0cmljdGlvbkNvZGVzKSA9PlxuICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25Db2Rlcy5ldmVyeSgoY29kZSkgPT4gY29kZSAhPT0gJ2xpY2Vuc2UnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIGZpbHRlckFycmF5KHBpcGUoYWxsQ2hpbGRyZW5FbGVtZW50LCAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA9PT0gMCkpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMaWNlbnNlcygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgZmlsdGVyQXJyYXkoXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKFxuICAgICAgICAgICAgJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJyxcbiAgICAgICAgICAgICdnbWQ6YWNjZXNzQ29uc3RyYWludHMnLFxuICAgICAgICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXBBcnJheShyZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJykpLFxuICAgICAgICAgIChyZXN0cmljdGlvbkNvZGVzKSA9PlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25Db2Rlcy5zb21lKChjb2RlKSA9PiBjb2RlID09PSAnbGljZW5zZScpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpY2Vuc2UoXG4gIGxpY2Vuc2U6IENvbnN0cmFpbnQsXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnLCAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDphY2Nlc3NDb25zdHJhaW50cycsICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJyksXG4gICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICApLFxuICAgICAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsICdsaWNlbnNlJylcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6YWNjZXNzQ29uc3RyYWludHMnLCAnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZScpLFxuICAgICAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX1Jlc3RyaWN0aW9uQ29kZSdcbiAgICAgICAgKSxcbiAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnb3RoZXJSZXN0cmljdGlvbnMnKVxuICAgICAgKSxcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgICd1cmwnIGluIGxpY2Vuc2VcbiAgICAgICAgICA/IHdyaXRlQW5jaG9yKGxpY2Vuc2UudXJsLCBsaWNlbnNlLnRleHQpXG4gICAgICAgICAgOiB3cml0ZUxvY2FsaXplZENoYXJhY3RlclN0cmluZyhcbiAgICAgICAgICAgICAgbGljZW5zZS50ZXh0LFxuICAgICAgICAgICAgICBsaWNlbnNlLnRyYW5zbGF0aW9ucz8udGV4dCxcbiAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVPbmxpbmVSZXNvdXJjZXMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmRpc3RyaWJ1dGlvbkluZm8nKVxufVxuXG5mdW5jdGlvbiBhcHBlbmRPbmxpbmVSZXNvdXJjZUZvcm1hdChtaW1lVHlwZTogc3RyaW5nKSB7XG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCcsICdnbWQ6TURfRm9ybWF0JyksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6bmFtZScpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhtaW1lVHlwZSkpLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp2ZXJzaW9uJyksXG4gICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoJzEuMCcpIC8vIGhhcmRjb2RpbmcgdGhpcyBhcyBpdCBtb3N0IGxpa2VseSB3b24ndCBiZSB1c2VkIGJ1dCBpcyBtYW5kYXRvcnlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlzdHJpYnV0aW9uSW5mbygpIHtcbiAgcmV0dXJuIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpkaXN0cmlidXRpb25JbmZvJywgJ2dtZDpNRF9EaXN0cmlidXRpb24nKVxufVxuXG4vLyBhcHBseSB0byBNRF9EaXN0cmlidXRpb25cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRPbmxpbmVSZXNvdXJjZShcbiAgb25saW5lUmVzb3VyY2U6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgYXBwZW5kRm9ybWF0Rm46IChcbiAgICBtaW1lVHlwZTogc3RyaW5nXG4gICkgPT4gQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4sXG4gIHRyYW5zbGF0aW9uczogUmVjb3JkVHJhbnNsYXRpb25zLFxuICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuKSB7XG4gIGxldCBuYW1lOiBzdHJpbmdcbiAgbGV0IGZ1bmN0aW9uQ29kZTogc3RyaW5nXG4gIGxldCBwcm90b2NvbDogc3RyaW5nXG4gIGlmIChvbmxpbmVSZXNvdXJjZS50eXBlID09PSAnc2VydmljZScpIHtcbiAgICAvLyBzaG91bGQgd2Uga2VlcCB0aGUgaWRlbnRpZmllckluU2VydmljZT8gcmVhZC13cml0ZSBkdXBsaWNhdGUgd2l0aCBuYW1lXG4gICAgbmFtZSA9IG9ubGluZVJlc291cmNlLmlkZW50aWZpZXJJblNlcnZpY2UgLy8gdGhpcyBpcyBmb3IgR2VvTmV0d29yayB0byBrbm93IHRoZSBsYXllciBuYW1lXG4gICAgZnVuY3Rpb25Db2RlID0gJ2Rvd25sb2FkJ1xuICAgIHByb3RvY29sID0gZ2V0U2VydmljZURpc3RyaWJ1dGlvblByb3RvY29sKG9ubGluZVJlc291cmNlKVxuICB9IGVsc2UgaWYgKG9ubGluZVJlc291cmNlLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICBuYW1lID0gb25saW5lUmVzb3VyY2UubmFtZVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdkb3dubG9hZCdcbiAgICBwcm90b2NvbCA9ICdXV1c6RE9XTkxPQUQnXG4gIH0gZWxzZSB7XG4gICAgbmFtZSA9IG9ubGluZVJlc291cmNlLm5hbWVcbiAgICBmdW5jdGlvbkNvZGUgPSAnaW5mb3JtYXRpb24nXG4gICAgcHJvdG9jb2wgPSAnV1dXOkxJTksnXG4gIH1cbiAgY29uc3QgYXBwZW5kVHJhbnNmZXJPcHRpb25zID0gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoXG4gICAgICAgICdnbWQ6dHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICAgJ2dtZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICAgJ2dtZDpvbkxpbmUnLFxuICAgICAgICAnZ21kOkNJX09ubGluZVJlc291cmNlJ1xuICAgICAgKSxcbiAgICAgIHdyaXRlTGlua2FnZShvbmxpbmVSZXNvdXJjZS51cmwpLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyBpbiBvbmxpbmVSZXNvdXJjZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgIHdyaXRlTG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKFxuICAgICAgICAgICAgICAgIG9ubGluZVJlc291cmNlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIG9ubGluZVJlc291cmNlLnRyYW5zbGF0aW9ucz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIG5hbWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOm5hbWUnKSxcbiAgICAgICAgICAgICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBvbmxpbmVSZXNvdXJjZS50cmFuc2xhdGlvbnM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpwcm90b2NvbCcpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhwcm90b2NvbCkpLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpmdW5jdGlvbicsICdnbWQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjQ0lfT25MaW5lRnVuY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBmdW5jdGlvbkNvZGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgJ21pbWVUeXBlJyBpbiBvbmxpbmVSZXNvdXJjZVxuICAgICAgPyBhcHBlbmRGb3JtYXRGbihvbmxpbmVSZXNvdXJjZS5taW1lVHlwZSlcbiAgICAgIDogbm9vcCxcbiAgICBhcHBlbmRUcmFuc2Zlck9wdGlvbnNcbiAgKVxufVxuXG4vKipcbiAqIExvb2tzIGZvciBzcnY6U1ZfU2VydmljZUlkZW50aWZpY2F0aW9uIG9yIGdtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24gZWxlbWVudFxuICogZGVwZW5kaW5nIG9uIHJlY29yZCB0eXBlLCBjcmVhdGUgaWYgbWlzc2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSB7XG4gIHJldHVybiAocm9vdEVsOiBYbWxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qga2luZCA9IHJlYWRLaW5kKHJvb3RFbClcbiAgICBsZXQgZWx0TmFtZSA9ICdnbWQ6TURfRGF0YUlkZW50aWZpY2F0aW9uJ1xuICAgIGlmIChraW5kID09PSAnc2VydmljZScpIGVsdE5hbWUgPSAnc3J2OlNWX1NlcnZpY2VJZGVudGlmaWNhdGlvbidcbiAgICByZXR1cm4gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDppZGVudGlmaWNhdGlvbkluZm8nLCBlbHROYW1lKShyb290RWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRPckNyZWF0ZURpc3RyaWJ1dGlvbigpIHtcbiAgcmV0dXJuIChyb290RWw6IFhtbEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gICAgICAnZ21kOmRpc3RyaWJ1dGlvbkluZm8nLFxuICAgICAgJ2dtZDpNRF9EaXN0cmlidXRpb24nXG4gICAgKShyb290RWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVW5pcXVlSWRlbnRpZmllcihcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6ZmlsZUlkZW50aWZpZXInKSxcbiAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUtpbmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmhpZXJhcmNoeUxldmVsJywgJ2dtZDpNRF9TY29wZUNvZGUnKSxcbiAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9TY29wZUNvZGUnXG4gICAgKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGtpbmRUb0NvZGVMaXN0VmFsdWUocmVjb3JkKSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVRpdGxlKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicsICdnbWQ6dGl0bGUnKSxcbiAgICB3cml0ZUxvY2FsaXplZENoYXJhY3RlclN0cmluZyhcbiAgICAgIHJlY29yZC50aXRsZSxcbiAgICAgIHJlY29yZC50cmFuc2xhdGlvbnM/LnRpdGxlLFxuICAgICAgcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFic3RyYWN0KHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ21kOmFic3RyYWN0JyksXG4gICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICByZWNvcmQuYWJzdHJhY3QsXG4gICAgICByZWNvcmQudHJhbnNsYXRpb25zPy5hYnN0cmFjdCxcbiAgICAgIHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTdGF0dXMocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6c3RhdHVzJywgJ2dtZDpNRF9Qcm9ncmVzc0NvZGUnKSxcbiAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9Qcm9ncmVzc0NvZGUnXG4gICAgKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGdldFByb2dyZXNzQ29kZShyZWNvcmQuc3RhdHVzKSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpjb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQuY29udGFjdHMubWFwKChjb250YWN0KSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpjb250YWN0JyksXG4gICAgICAgICAgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShcbiAgICAgICAgICAgIGNvbnRhY3QsXG4gICAgICAgICAgICByZWNvcmQudHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmNvbnRhY3QnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5jb250YWN0c0ZvclJlc291cmNlLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICAgICAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KFxuICAgICAgICAgICAgY29udGFjdCxcbiAgICAgICAgICAgIHJlY29yZC50cmFuc2xhdGlvbnMsXG4gICAgICAgICAgICByZWNvcmQuZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2V5d29yZHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUtleXdvcmRzKCksXG4gICAgYXBwZW5kS2V5d29yZHMocmVjb3JkLmtleXdvcmRzLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVG9waWNzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnRvcGljQ2F0ZWdvcnknKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC50b3BpY3MubWFwKCh0b3BpYykgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6dG9waWNDYXRlZ29yeScsICdnbWQ6TURfVG9waWNDYXRlZ29yeUNvZGUnKSxcbiAgICAgICAgICBzZXRUZXh0Q29udGVudCh0b3BpYylcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpY2Vuc2VzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVMaWNlbnNlcygpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLmxpY2Vuc2VzLm1hcCgobGljZW5zZSkgPT5cbiAgICAgICAgY3JlYXRlTGljZW5zZShsaWNlbnNlLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxlZ2FsQ29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUxlZ2FsQ29uc3RyYWludHMoKSxcbiAgICByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5sZWdhbENvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICAgICAgY3JlYXRlQ29uc3RyYWludChjLCAnbGVnYWwnLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNlY3VyaXR5Q29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZVNlY3VyaXR5Q29uc3RyYWludHMoKSxcbiAgICByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5zZWN1cml0eUNvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICAgICAgY3JlYXRlQ29uc3RyYWludChjLCAnc2VjdXJpdHknLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU90aGVyQ29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZU90aGVyQ29uc3RyYWludHMoKSxcbiAgICByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5vdGhlckNvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICAgICAgY3JlYXRlQ29uc3RyYWludChjLCAnb3RoZXInLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVwZGF0ZUZyZXF1ZW5jeShcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpyZXNvdXJjZU1haW50ZW5hbmNlJyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nKSxcbiAgICB0eXBlb2YgcmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSA9PT0gJ29iamVjdCdcbiAgICAgID8gcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRDaGlsZChcbiAgICAgICAgICAgICdnbWQ6dXNlckRlZmluZWRNYWludGVuYW5jZUZyZXF1ZW5jeScsXG4gICAgICAgICAgICAnZ3RzOlRNX1BlcmlvZER1cmF0aW9uJ1xuICAgICAgICAgICksXG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQoZ2V0SVNPRHVyYXRpb24ocmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSkpXG4gICAgICAgIClcbiAgICAgIDogcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRDaGlsZChcbiAgICAgICAgICAgICdnbWQ6bWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3knLFxuICAgICAgICAgICAgJ2dtZDpNRF9NYWludGVuYW5jZUZyZXF1ZW5jeUNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9NYWludGVuYW5jZUZyZXF1ZW5jeUNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdFZhbHVlJyxcbiAgICAgICAgICAgIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShyZWNvcmQudXBkYXRlRnJlcXVlbmN5KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVjb3JkVXBkYXRlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6ZGF0ZVN0YW1wJyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICB3cml0ZURhdGVUaW1lKHJlY29yZC5yZWNvcmRVcGRhdGVkKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVJlc291cmNlRGF0ZShcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIHJlbW92ZUNoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGF0ZScpLFxuICAgICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAgICAgICAgICdnbWQ6Q0lfRGF0ZScsXG4gICAgICAgICAgICAgICdnbWQ6ZGF0ZVR5cGUnLFxuICAgICAgICAgICAgICAnZ21kOkNJX0RhdGVUeXBlQ29kZSdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdHlwZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFJlc291cmNlRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmRhdGUnLCAnZ21kOkNJX0RhdGUnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6ZGF0ZScpLCB3cml0ZURhdGVUaW1lKGRhdGUpKSxcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmRhdGVUeXBlJywgJ2dtZDpDSV9EYXRlVHlwZUNvZGUnKSxcbiAgICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNDSV9EYXRlVHlwZUNvZGUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCB0eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXNvdXJjZUNyZWF0ZWQoXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcmVtb3ZlUmVzb3VyY2VEYXRlKCdjcmVhdGlvbicpKHJvb3RFbClcbiAgaWYgKCFyZWNvcmQucmVzb3VyY2VDcmVhdGVkKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZUNyZWF0ZWQsICdjcmVhdGlvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VVcGRhdGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgncmV2aXNpb24nKShyb290RWwpXG4gIGlmICghcmVjb3JkLnJlc291cmNlVXBkYXRlZCkgcmV0dXJuXG4gIGFwcGVuZFJlc291cmNlRGF0ZShyZWNvcmQucmVzb3VyY2VVcGRhdGVkLCAncmV2aXNpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlc291cmNlUHVibGlzaGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgncHVibGljYXRpb24nKShyb290RWwpXG4gIGlmICghcmVjb3JkLnJlc291cmNlUHVibGlzaGVkKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZVB1Ymxpc2hlZCwgJ3B1YmxpY2F0aW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXVzZVR5cGUocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgd3JpdGVLaW5kKHJlY29yZCwgcm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24oXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgaWYgKCFyZWNvcmQuc3BhdGlhbFJlcHJlc2VudGF0aW9uKSB7XG4gICAgcGlwZShcbiAgICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUnKVxuICAgICkocm9vdEVsKVxuICAgIHJldHVyblxuICB9XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdnbWQ6c3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZScsXG4gICAgICAnZ21kOk1EX1NwYXRpYWxSZXByZXNlbnRhdGlvblR5cGVDb2RlJ1xuICAgICksXG4gICAgd3JpdGVBdHRyaWJ1dGUoXG4gICAgICAnY29kZUxpc3QnLFxuICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZUNvZGUnXG4gICAgKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVHcmFwaGljT3ZlcnZpZXdzKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmdyYXBoaWNPdmVydmlldycpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLm92ZXJ2aWV3c1xuICAgICAgICAuZmlsdGVyKChvdmVydmlldykgPT4gb3ZlcnZpZXcudXJsKVxuICAgICAgICAubWFwKChvdmVydmlldykgPT5cbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmdyYXBoaWNPdmVydmlldycsICdnbWQ6TURfQnJvd3NlR3JhcGhpYycpLFxuICAgICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmZpbGVOYW1lJyksXG4gICAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcob3ZlcnZpZXcudXJsLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnZGVzY3JpcHRpb24nIGluIG92ZXJ2aWV3XG4gICAgICAgICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZmlsZURlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG92ZXJ2aWV3LmRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBub29wXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlTGluZWFnZShyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAgICAgJ2dtZDpkYXRhUXVhbGl0eUluZm8nLFxuICAgICAgJ2dtZDpEUV9EYXRhUXVhbGl0eScsXG4gICAgICAnZ21kOmxpbmVhZ2UnLFxuICAgICAgJ2dtZDpMSV9MaW5lYWdlJyxcbiAgICAgICdnbWQ6c3RhdGVtZW50J1xuICAgICksXG4gICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICByZWNvcmQubGluZWFnZSxcbiAgICAgIHJlY29yZC50cmFuc2xhdGlvbnM/LmxpbmVhZ2UsXG4gICAgICByZWNvcmQuZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZpY2VFbmRwb2ludFByb3RvY29sKGVuZHBvaW50OiBTZXJ2aWNlRW5kcG9pbnQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGVuZHBvaW50LmFjY2Vzc1NlcnZpY2VQcm90b2NvbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnd2ZzJzpcbiAgICAgIHJldHVybiAnT0dDOldGUydcbiAgICBjYXNlICd3bXMnOlxuICAgICAgcmV0dXJuICdPR0M6V01TJ1xuICAgIGNhc2UgJ3dwcyc6XG4gICAgICByZXR1cm4gJ09HQzpXUFMnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBlbmRwb2ludC5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2xcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT25saW5lUmVzb3VyY2Uob25saW5lUmVzb3VyY2U6IFNlcnZpY2VPbmxpbmVSZXNvdXJjZSkge1xuICBsZXQgbGlua2FnZVVybCwgZnVuY3Rpb25Db2RlLCBwcm90b2NvbFxuICBpZiAob25saW5lUmVzb3VyY2UudHlwZSA9PT0gJ2VuZHBvaW50Jykge1xuICAgIGxpbmthZ2VVcmwgPSBvbmxpbmVSZXNvdXJjZS51cmwudG9TdHJpbmcoKVxuICAgIHByb3RvY29sID0gZ2V0U2VydmljZUVuZHBvaW50UHJvdG9jb2wob25saW5lUmVzb3VyY2UpXG4gICAgZnVuY3Rpb25Db2RlID0gJ2Rvd25sb2FkJ1xuICB9IGVsc2Uge1xuICAgIGxpbmthZ2VVcmwgPSBvbmxpbmVSZXNvdXJjZS51cmwudG9TdHJpbmcoKVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdpbmZvcm1hdGlvbidcbiAgICBwcm90b2NvbCA9ICdXV1c6TElOSydcbiAgfVxuICBjb25zdCBhcHBlbmRUcmFuc2Zlck9wdGlvbnMgPSBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRyYW5zZmVyT3B0aW9ucycpLFxuICAgICAgY3JlYXRlTmVzdGVkQ2hpbGQoXG4gICAgICAgICdnbWQ6TURfRGlnaXRhbFRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAgICdnbWQ6b25MaW5lJyxcbiAgICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZSdcbiAgICAgICksXG4gICAgICB3cml0ZUxpbmthZ2UobGlua2FnZVVybCksXG4gICAgICAnZGVzY3JpcHRpb24nIGluIG9ubGluZVJlc291cmNlXG4gICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcob25saW5lUmVzb3VyY2UuZGVzY3JpcHRpb24pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICAnbmFtZScgaW4gb25saW5lUmVzb3VyY2VcbiAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpuYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG9ubGluZVJlc291cmNlLm5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6cHJvdG9jb2wnKSwgd3JpdGVDaGFyYWN0ZXJTdHJpbmcocHJvdG9jb2wpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6ZnVuY3Rpb24nLCAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZScpLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI0NJX09uTGluZUZ1bmN0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZnVuY3Rpb25Db2RlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpkaXN0cmlidXRpb25JbmZvJywgJ2dtZDpNRF9EaXN0cmlidXRpb24nKSxcbiAgICBhcHBlbmRUcmFuc2Zlck9wdGlvbnNcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kRGF0YXNldE9ubGluZVJlc291cmNlcyhcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkIHwgUmV1c2VSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIGFwcGVuZENoaWxkcmVuKFxuICAgIC4uLnJlY29yZC5vbmxpbmVSZXNvdXJjZXMubWFwKChkKSA9PlxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRGlzdHJpYnV0aW9uSW5mbygpLFxuICAgICAgICBhcHBlbmRPbmxpbmVSZXNvdXJjZShcbiAgICAgICAgICBkLFxuICAgICAgICAgIGFwcGVuZE9ubGluZVJlc291cmNlRm9ybWF0LFxuICAgICAgICAgIHJlY29yZC50cmFuc2xhdGlvbnMsXG4gICAgICAgICAgcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMoXG4gIHJlY29yZDogU2VydmljZVJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgYXBwZW5kQ2hpbGRyZW4oLi4ucmVjb3JkLm9ubGluZVJlc291cmNlcy5tYXAoY3JlYXRlT25saW5lUmVzb3VyY2UpKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU9ubGluZVJlc291cmNlcyhcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICByZW1vdmVPbmxpbmVSZXNvdXJjZXMoKShyb290RWwpXG5cbiAgaWYgKHJlY29yZC5raW5kID09PSAnZGF0YXNldCcgfHwgcmVjb3JkLmtpbmQgPT09ICdyZXVzZScpIHtcbiAgICBhcHBlbmREYXRhc2V0T25saW5lUmVzb3VyY2VzKHJlY29yZCwgcm9vdEVsKVxuICAgIHJldHVyblxuICB9XG4gIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMocmVjb3JkLCByb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVRlbXBvcmFsRXh0ZW50cyhcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpleHRlbnQnLCAnZ21kOkVYX0V4dGVudCcpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6dGVtcG9yYWxFbGVtZW50JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQudGVtcG9yYWxFeHRlbnRzLm1hcCgoZXh0ZW50KSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDp0ZW1wb3JhbEVsZW1lbnQnLCAnZ21kOkVYX1RlbXBvcmFsRXh0ZW50JyksXG4gICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAnc3RhcnQnIGluIGV4dGVudCAmJiAnZW5kJyBpbiBleHRlbnRcbiAgICAgICAgICAgICAgPyBwaXBlKFxuICAgICAgICAgICAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmV4dGVudCcsICdnbWw6VGltZVBlcmlvZCcpLFxuICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21sOmJlZ2luUG9zaXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50LnN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0VGV4dENvbnRlbnQoZm9ybWF0KGV4dGVudC5zdGFydCwgJ3l5eXktTU0tZGQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB3cml0ZUF0dHJpYnV0ZSgnaW5kZXRlcm1pbmF0ZVBvc2l0aW9uJywgJ3Vua25vd24nKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWw6ZW5kUG9zaXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50LmVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldFRleHRDb250ZW50KGZvcm1hdChleHRlbnQuZW5kLCAneXl5eS1NTS1kZCcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHdyaXRlQXR0cmlidXRlKCdpbmRldGVybWluYXRlUG9zaXRpb24nLCAndW5rbm93bicpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHBpcGUoXG4gICAgICAgICAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAnZ21kOmV4dGVudCcsXG4gICAgICAgICAgICAgICAgICAgICdnbWw6VGltZUluc3RhbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZ21sOnRpbWVQb3NpdGlvbidcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBleHRlbnQuc3RhcnRcbiAgICAgICAgICAgICAgICAgICAgPyBzZXRUZXh0Q29udGVudChmb3JtYXQoZXh0ZW50LnN0YXJ0LCAneXl5eS1NTS1kZCcpKVxuICAgICAgICAgICAgICAgICAgICA6IHdyaXRlQXR0cmlidXRlKCdpbmRldGVybWluYXRlUG9zaXRpb24nLCAndW5rbm93bicpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNwYXRpYWxFeHRlbnRzKHJlY29yZDogRGF0YXNldFJlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIGNvbnN0IGFwcGVuZEJvdW5kaW5nUG9seWdvbiA9IChnZW9tZXRyeT86IEdlb21ldHJ5KSA9PiB7XG4gICAgaWYgKCFnZW9tZXRyeSkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpFWF9Cb3VuZGluZ1BvbHlnb24nKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpwb2x5Z29uJyksXG4gICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oKCkgPT4gd3JpdGVHZW9tZXRyeShnZW9tZXRyeSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjb25zdCBhcHBlbmRHZW9ncmFwaGljQm91bmRpbmdCb3ggPSAoXG4gICAgYmJveD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gICkgPT4ge1xuICAgIGlmICghYmJveCkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpFWF9HZW9ncmFwaGljQm91bmRpbmdCb3gnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDp3ZXN0Qm91bmRMb25naXR1ZGUnKSwgd3JpdGVEZWNpbWFsKGJib3hbMF0pKSxcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6ZWFzdEJvdW5kTG9uZ2l0dWRlJyksIHdyaXRlRGVjaW1hbChiYm94WzJdKSksXG4gICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOnNvdXRoQm91bmRMYXRpdHVkZScpLCB3cml0ZURlY2ltYWwoYmJveFsxXSkpLFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpub3J0aEJvdW5kTGF0aXR1ZGUnKSwgd3JpdGVEZWNpbWFsKGJib3hbM10pKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGFwcGVuZEdlb2dyYXBoaWNEZXNjcmlwdGlvbiA9IChcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbnM/OiBGaWVsZFRyYW5zbGF0aW9uXG4gICkgPT4ge1xuICAgIGlmICghZGVzY3JpcHRpb24pIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHBpcGUoXG4gICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KFxuICAgICAgICAnZ21kOkVYX0dlb2dyYXBoaWNEZXNjcmlwdGlvbicsXG4gICAgICAgICdnbWQ6Z2VvZ3JhcGhpY0lkZW50aWZpZXInLFxuICAgICAgICAnZ21kOk1EX0lkZW50aWZpZXInLFxuICAgICAgICAnZ21kOmNvZGUnXG4gICAgICApLFxuICAgICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB0cmFuc2xhdGlvbnMsXG4gICAgICAgIHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpleHRlbnQnLCAnZ21kOkVYX0V4dGVudCcpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6Z2VvZ3JhcGhpY0VsZW1lbnQnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5zcGF0aWFsRXh0ZW50cy5tYXAoKGV4dGVudCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6Z2VvZ3JhcGhpY0VsZW1lbnQnKSxcbiAgICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIGFwcGVuZEJvdW5kaW5nUG9seWdvbihleHRlbnQuZ2VvbWV0cnkpLFxuICAgICAgICAgICAgYXBwZW5kR2VvZ3JhcGhpY0JvdW5kaW5nQm94KGV4dGVudC5iYm94KSxcbiAgICAgICAgICAgIGFwcGVuZEdlb2dyYXBoaWNEZXNjcmlwdGlvbihcbiAgICAgICAgICAgICAgZXh0ZW50LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBleHRlbnQudHJhbnNsYXRpb25zPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxhbmd1YWdlcyhyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICAvLyBjbGVhciBleGlzdGluZ1xuICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmxvY2FsZScpKHJvb3RFbClcblxuICAvLyBkbyBub3Qgd3JpdGUgZG93biBsYW5ndWFnZXMgaWYgdGhlcmUgaXMgbm90aGluZyBlbHNlIHRoYW4gdGhlIGRlZmF1bHQgb25lXG4gIGlmICghcmVjb3JkLm90aGVyTGFuZ3VhZ2VzPy5sZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZUxhbmd1YWdlRWwgPSAobGFuZzogTGFuZ3VhZ2VDb2RlKSA9PlxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6bG9jYWxlJywgJ2dtZDpQVF9Mb2NhbGUnKSxcbiAgICAgIHdyaXRlQXR0cmlidXRlKCdpZCcsIGxhbmcudG9VcHBlckNhc2UoKSksXG4gICAgICBjcmVhdGVOZXN0ZWRDaGlsZCgnZ21kOmxhbmd1YWdlQ29kZScsICdnbWQ6TGFuZ3VhZ2VDb2RlJyksXG4gICAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3QnLCAnaHR0cDovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi8nKSxcbiAgICAgIHdyaXRlQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgdG9MYW5nMyhsYW5nKSA/PyBsYW5nKVxuICAgIClcblxuICAvLyBhZGQgbmV3IGxhbmd1YWdlcyAob25seSBpZiBvdGhlciB0aGFuIGRlZmF1bHQgb25lKVxuICBhcHBlbmRDaGlsZHJlbihcbiAgICBjcmVhdGVMYW5ndWFnZUVsKHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UpLFxuICAgIC4uLnJlY29yZC5vdGhlckxhbmd1YWdlcy5tYXAoY3JlYXRlTGFuZ3VhZ2VFbClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlZmF1bHRMYW5ndWFnZShcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBjb25zdCBsYW5nMyA9IHRvTGFuZzMocmVjb3JkLmRlZmF1bHRMYW5ndWFnZS50b0xvd2VyQ2FzZSgpKVxuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmxhbmd1YWdlJywgJ2dtZDpMYW5ndWFnZUNvZGUnKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3QnLCAnaHR0cDovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi8nKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGxhbmczKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VJZGVudGlmaWVyKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6aWRlbnRpZmllcicpLFxuICAgIHJlY29yZC5yZXNvdXJjZUlkZW50aWZpZXJcbiAgICAgID8gcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRDaGlsZCgnZ21kOmlkZW50aWZpZXInLCAnZ21kOk1EX0lkZW50aWZpZXInLCAnZ21kOmNvZGUnKSxcbiAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQucmVzb3VyY2VJZGVudGlmaWVyKVxuICAgICAgICApXG4gICAgICA6IG5vb3BcbiAgKShyb290RWwpXG59XG4iXX0=
|
|
517
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTEzOS93cml0ZS1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXhDLE9BQU8sRUFFTCxXQUFXLEVBQ1gsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsY0FBYyxHQUVmLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seURBQXlELENBQUE7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFOUQsU0FBUyxxQkFBcUIsQ0FDNUIsT0FBa0QsRUFDbEQsSUFBWSxFQUNaLFlBQThCLEVBQzlCLGVBQTZCO0lBRTdCLElBQUksQ0FBQyxZQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUMs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MEJBQTBCLEVBQUUsRUFDNUIsdUJBQXVCLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLEVBQzFELG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLEVBQ3RDLGVBQWU7UUFDYixDQUFDLENBQUMsSUFBSSxDQUNGLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUNwRSxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FDdEM7UUFDSCxDQUFDLENBQUMsSUFBSSxDQUNULENBQUMsTUFBTSxDQUFDLENBQUE7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ29uc3RyYWludCxcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0UmVjb3JkLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgRmllbGRUcmFuc2xhdGlvbixcbiAgSW5kaXZpZHVhbCxcbiAgS2V5d29yZCxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBSZWNvcmRTdGF0dXMsXG4gIFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgUmV1c2VSZWNvcmQsXG4gIFJvbGUsXG4gIFNlcnZpY2VFbmRwb2ludCxcbiAgU2VydmljZU9ubGluZVJlc291cmNlLFxuICBTZXJ2aWNlUmVjb3JkLFxuICBVcGRhdGVGcmVxdWVuY3lDb2RlLFxuICBVcGRhdGVGcmVxdWVuY3lDdXN0b20sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFRoZXNhdXJ1c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzJ1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMvZm9ybWF0J1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHtcbiAgQ2hhaW5hYmxlRnVuY3Rpb24sXG4gIGZpbHRlckFycmF5LFxuICBtYXAsXG4gIG1hcEFycmF5LFxuICBub29wLFxuICBwaXBlLFxuICB0YXAsXG59IGZyb20gJy4uL2Z1bmN0aW9uLXV0aWxzJ1xuaW1wb3J0IHtcbiAgYWxsQ2hpbGRyZW5FbGVtZW50LFxuICBhcHBlbmRDaGlsZHJlbixcbiAgY3JlYXRlQ2hpbGQsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGNyZWF0ZU5lc3RlZENoaWxkLFxuICBjcmVhdGVOZXN0ZWRFbGVtZW50LFxuICBmaW5kQ2hpbGRPckNyZWF0ZSxcbiAgZmluZENoaWxkcmVuRWxlbWVudCxcbiAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUsXG4gIGZpbmROZXN0ZWRFbGVtZW50LFxuICBmaW5kTmVzdGVkRWxlbWVudHMsXG4gIHJlYWRBdHRyaWJ1dGUsXG4gIHJlbW92ZUFsbENoaWxkcmVuLFxuICByZW1vdmVDaGlsZHJlbixcbiAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUsXG4gIHNldFRleHRDb250ZW50LFxuICB3cml0ZUF0dHJpYnV0ZSxcbiAgWG1sRWxlbWVudCxcbn0gZnJvbSAnLi4veG1sLXV0aWxzJ1xuaW1wb3J0IHsgcmVhZEtpbmQgfSBmcm9tICcuL3JlYWQtcGFydHMnXG5pbXBvcnQgeyB3cml0ZUdlb21ldHJ5IH0gZnJvbSAnLi91dGlscy9nZW9tZXRyeSdcbmltcG9ydCB7IG5hbWVQYXJ0c1RvRnVsbCB9IGZyb20gJy4vdXRpbHMvaW5kaXZpZHVhbC1uYW1lJ1xuaW1wb3J0IHsgdG9MYW5nMyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYy9saWIvbGFuZ3VhZ2UtY29kZXMnXG5pbXBvcnQgeyBraW5kVG9Db2RlTGlzdFZhbHVlIH0gZnJvbSAnLi4vY29tbW9uL3Jlc291cmNlLXR5cGVzJ1xuXG5mdW5jdGlvbiB3cml0ZUxvY2FsaXplZEVsZW1lbnQoXG4gIHdyaXRlRm46IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+LFxuICB0ZXh0OiBzdHJpbmcsXG4gIHRyYW5zbGF0aW9uczogRmllbGRUcmFuc2xhdGlvbixcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgaWYgKCF0cmFuc2xhdGlvbnMpXG4gICAgcmV0dXJuIHBpcGUod3JpdGVGbiwgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpQVF9GcmVlVGV4dCcpKSAvLyBJZiBubyB0cmFuc2xhdGlvbnMsIHJlbW92ZSBleGlzdGluZyBpZiBhbnlcbiAgZnVuY3Rpb24gY3JlYXRlTG9jYWxpemVkKGxhbmc6IExhbmd1YWdlQ29kZSwgdHJhbnNsYXRpb246IHN0cmluZykge1xuICAgIHJldHVybiBwaXBlKFxuICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOnRleHRHcm91cCcsICdnbWQ6TG9jYWxpc2VkQ2hhcmFjdGVyU3RyaW5nJyksXG4gICAgICB3cml0ZUF0dHJpYnV0ZSgnbG9jYWxlJywgYCMke2xhbmcudG9VcHBlckNhc2UoKX1gKSxcbiAgICAgIHNldFRleHRDb250ZW50KHRyYW5zbGF0aW9uKVxuICAgIClcbiAgfVxuICByZXR1cm4gcGlwZShcbiAgICB3cml0ZUZuLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6UFRfRnJlZVRleHQnKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOlBUX0ZyZWVUZXh0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBjcmVhdGVMb2NhbGl6ZWQoZGVmYXVsdExhbmd1YWdlLCB0ZXh0KSxcbiAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9ucykubWFwKChbbGFuZywgdHJhbnNsYXRpb25dKSA9PlxuICAgICAgICBjcmVhdGVMb2NhbGl6ZWQobGFuZywgdHJhbnNsYXRpb24pXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNoYXJhY3RlclN0cmluZyhcbiAgdGV4dDogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShmaW5kQ2hpbGRPckNyZWF0ZSgnZ2NvOkNoYXJhY3RlclN0cmluZycpLCBzZXRUZXh0Q29udGVudCh0ZXh0KSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gIHRleHQ6IHN0cmluZyxcbiAgdHJhbnNsYXRpb25zOiBGaWVsZFRyYW5zbGF0aW9uLFxuICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gd3JpdGVMb2NhbGl6ZWRFbGVtZW50KFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHRleHQpLFxuICAgIHRleHQsXG4gICAgdHJhbnNsYXRpb25zLFxuICAgIGRlZmF1bHRMYW5ndWFnZVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpbmthZ2UoXG4gIHVybDogVVJMXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShcbiAgICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6bGlua2FnZScsICdnbWQ6VVJMJyksXG4gICAgICBzZXRUZXh0Q29udGVudCh1cmwudG9TdHJpbmcoKSlcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQW5jaG9yKFxuICB1cmw6IFVSTCxcbiAgdGV4dD86IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ214OkFuY2hvcicpLFxuICAgICAgd3JpdGVBdHRyaWJ1dGUoJ3hsaW5rOmhyZWYnLCB1cmwudG9TdHJpbmcoKSksXG4gICAgICB0ZXh0ID8gc2V0VGV4dENvbnRlbnQodGV4dCkgOiBub29wXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxvY2FsaXplZEFuY2hvcihcbiAgdXJsOiBVUkwsXG4gIHRleHQ6IHN0cmluZyxcbiAgdHJhbnNsYXRpb25zOiBGaWVsZFRyYW5zbGF0aW9uLFxuICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gd3JpdGVMb2NhbGl6ZWRFbGVtZW50KFxuICAgIHdyaXRlQW5jaG9yKHVybCwgdGV4dCksXG4gICAgdGV4dCxcbiAgICB0cmFuc2xhdGlvbnMsXG4gICAgZGVmYXVsdExhbmd1YWdlXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRGF0ZVRpbWUoXG4gIGRhdGU6IERhdGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2djbzpEYXRlVGltZScpLFxuICAgIHNldFRleHRDb250ZW50KGZvcm1hdChkYXRlLCBcInl5eXktTU0tZGQnVCdISDptbTpzc1wiKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEYXRlKFxuICBkYXRlOiBEYXRlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnY286RGF0ZScpLFxuICAgICAgc2V0VGV4dENvbnRlbnQoZm9ybWF0KGRhdGUsICd5eXl5LU1NLWRkJykpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlY2ltYWwoXG4gIGRlY2ltYWw6IG51bWJlclxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoZmluZENoaWxkT3JDcmVhdGUoJ2djbzpEZWNpbWFsJyksIHNldFRleHRDb250ZW50KGRlY2ltYWwudG9TdHJpbmcoKSkpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2dyZXNzQ29kZShzdGF0dXM6IFJlY29yZFN0YXR1cyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgIHJldHVybiAnY29tcGxldGVkJ1xuICAgIGNhc2UgJ2RlcHJlY2F0ZWQnOlxuICAgICAgcmV0dXJuICdkZXByZWNhdGVkJ1xuICAgIGNhc2UgJ29uZ29pbmcnOlxuICAgICAgcmV0dXJuICdvbkdvaW5nJ1xuICAgIGNhc2UgJ3JlbW92ZWQnOlxuICAgICAgcmV0dXJuICdyZW1vdmVkJ1xuICAgIGNhc2UgJ3VuZGVyX2RldmVsb3BtZW50JzpcbiAgICAgIHJldHVybiAndW5kZXJEZXZlbG9wbWVudCdcbiAgICBjYXNlICdwbGFubmVkJzpcbiAgICAgIHJldHVybiAncGxhbm5lZCdcbiAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICByZXR1cm4gJ3JlcXVpcmVkJ1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgZGV0ZXJtaW5lIHByb2dyZXNzIGNvZGUgZnJvbSBzdGF0dXM6ICR7c3RhdHVzfWBcbiAgICAgIClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9sZUNvZGUocm9sZTogUm9sZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAocm9sZSkge1xuICAgIGNhc2UgJ2F1dGhvcic6XG4gICAgICByZXR1cm4gJ2F1dGhvcidcbiAgICBjYXNlICdjb2xsYWJvcmF0b3InOlxuICAgICAgcmV0dXJuICdjb2xsYWJvcmF0b3InXG4gICAgY2FzZSAnY29udHJpYnV0b3InOlxuICAgICAgcmV0dXJuICdjb250cmlidXRvcidcbiAgICBjYXNlICdjdXN0b2RpYW4nOlxuICAgICAgcmV0dXJuICdjdXN0b2RpYW4nXG4gICAgY2FzZSAnZGlzdHJpYnV0b3InOlxuICAgICAgcmV0dXJuICdkaXN0cmlidXRvcidcbiAgICBjYXNlICdlZGl0b3InOlxuICAgICAgcmV0dXJuICdlZGl0b3InXG4gICAgY2FzZSAnZnVuZGVyJzpcbiAgICAgIHJldHVybiAnZnVuZGVyJ1xuICAgIGNhc2UgJ21lZGlhdG9yJzpcbiAgICAgIHJldHVybiAnbWVkaWF0b3InXG4gICAgY2FzZSAnb3JpZ2luYXRvcic6XG4gICAgICByZXR1cm4gJ29yaWdpbmF0b3InXG4gICAgY2FzZSAnb3RoZXInOlxuICAgICAgcmV0dXJuICdvdGhlcidcbiAgICBjYXNlICdvd25lcic6XG4gICAgICByZXR1cm4gJ293bmVyJ1xuICAgIGNhc2UgJ3BvaW50X29mX2NvbnRhY3QnOlxuICAgICAgcmV0dXJuICdwb2ludE9mQ29udGFjdCdcbiAgICBjYXNlICdwcmluY2lwYWxfaW52ZXN0aWdhdG9yJzpcbiAgICAgIHJldHVybiAncHJpbmNpcGFsSW52ZXN0aWdhdG9yJ1xuICAgIGNhc2UgJ3Byb2Nlc3Nvcic6XG4gICAgICByZXR1cm4gJ3Byb2Nlc3NvcidcbiAgICBjYXNlICdwdWJsaXNoZXInOlxuICAgICAgcmV0dXJuICdwdWJsaXNoZXInXG4gICAgY2FzZSAncmVzb3VyY2VfcHJvdmlkZXInOlxuICAgICAgcmV0dXJuICdyZXNvdXJjZVByb3ZpZGVyJ1xuICAgIGNhc2UgJ3JpZ2h0c19ob2xkZXInOlxuICAgICAgcmV0dXJuICdyaWdodHNIb2xkZXInXG4gICAgY2FzZSAnc3BvbnNvcic6XG4gICAgICByZXR1cm4gJ3Nwb25zb3InXG4gICAgY2FzZSAnc3Rha2Vob2xkZXInOlxuICAgICAgcmV0dXJuICdzdGFrZWhvbGRlcidcbiAgICBjYXNlICd1bnNwZWNpZmllZCc6XG4gICAgICByZXR1cm4gJ3Vuc3BlY2lmaWVkJ1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuICd1c2VyJ1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlcm1pbmUgcm9sZSBjb2RlIGZyb20gcm9sZTogJHtyb2xlfWApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZpY2VEaXN0cmlidXRpb25Qcm90b2NvbChcbiAgZGlzdHJpYnV0aW9uOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuKTogc3RyaW5nIHtcbiAgc3dpdGNoIChkaXN0cmlidXRpb24uYWNjZXNzU2VydmljZVByb3RvY29sLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdvZ2NmZWF0dXJlcyc6XG4gICAgICByZXR1cm4gJ09HQyBBUEkgRmVhdHVyZXMnXG4gICAgY2FzZSAnd2ZzJzpcbiAgICAgIHJldHVybiAnT0dDOldGUydcbiAgICBjYXNlICd3bXMnOlxuICAgICAgcmV0dXJuICdPR0M6V01TJ1xuICAgIGNhc2UgJ3dwcyc6XG4gICAgICByZXR1cm4gJ09HQzpXUFMnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkaXN0cmlidXRpb24uYWNjZXNzU2VydmljZVByb3RvY29sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShcbiAgdXBkYXRlRnJlcXVlbmN5OiBVcGRhdGVGcmVxdWVuY3lDb2RlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoICh1cGRhdGVGcmVxdWVuY3kpIHtcbiAgICBjYXNlICdhc05lZWRlZCc6XG4gICAgICByZXR1cm4gJ2FzTmVlZGVkJ1xuICAgIGNhc2UgJ3Vua25vd24nOlxuICAgICAgcmV0dXJuICd1bmtub3duJ1xuICAgIGNhc2UgJ2lycmVndWxhcic6XG4gICAgICByZXR1cm4gJ2lycmVndWxhcidcbiAgICBjYXNlICdub3RQbGFubmVkJzpcbiAgICAgIHJldHVybiAnbm90UGxhbm5lZCdcbiAgICBjYXNlICdjb250aW51YWwnOlxuICAgICAgcmV0dXJuICdjb250aW51YWwnXG4gICAgY2FzZSAncGVyaW9kaWMnOlxuICAgICAgcmV0dXJuICdwZXJpb2RpYydcbiAgICBjYXNlICdkYWlseSc6XG4gICAgICByZXR1cm4gJ2RhaWx5J1xuICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICByZXR1cm4gJ3dlZWtseSdcbiAgICBjYXNlICdmb3J0bmlnaHRseSc6XG4gICAgICByZXR1cm4gJ2ZvcnRuaWdodGx5J1xuICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgcmV0dXJuICdtb250aGx5J1xuICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XG4gICAgICByZXR1cm4gJ3F1YXJ0ZXJseSdcbiAgICBjYXNlICdiaWFubnVhbGx5JzpcbiAgICAgIHJldHVybiAnYmlhbm51YWxseSdcbiAgICBjYXNlICdhbm51YWxseSc6XG4gICAgICByZXR1cm4gJ2FubnVhbGx5J1xuICAgIGNhc2UgJ3NlbWltb250aGx5JzpcbiAgICAgIHJldHVybiAnc2VtaW1vbnRobHknXG4gICAgY2FzZSAnYmllbm5pYWxseSc6XG4gICAgICByZXR1cm4gJ2JpZW5uaWFsbHknXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElTT0R1cmF0aW9uKHVwZGF0ZUZyZXF1ZW5jeTogVXBkYXRlRnJlcXVlbmN5Q3VzdG9tKTogc3RyaW5nIHtcbiAgY29uc3QgZHVyYXRpb24gPSB7XG4gICAgeWVhcnM6IDAsXG4gICAgbW9udGhzOiAwLFxuICAgIHdlZWtzOiAwLFxuICAgIGRheXM6IDAsXG4gICAgaG91cnM6IDAsXG4gIH1cbiAgc3dpdGNoICh1cGRhdGVGcmVxdWVuY3kucGVyKSB7XG4gICAgY2FzZSAnZGF5JzpcbiAgICAgIGlmICh1cGRhdGVGcmVxdWVuY3kudXBkYXRlZFRpbWVzIDw9IDEpIGR1cmF0aW9uLmRheXMgPSAxXG4gICAgICBlbHNlIGR1cmF0aW9uLmhvdXJzID0gTWF0aC5yb3VuZCgyNCAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgZHVyYXRpb24uZGF5cyA9IE1hdGgucm91bmQoNyAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgLSAwLjAwMDEpIC8vIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoYXQgJzIgdGltZXMgcGVyIHdlZWsnID0gJ2V2ZXJ5IDMgZGF5cydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnbW9udGgnOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24ubW9udGhzID0gMVxuICAgICAgZWxzZSBkdXJhdGlvbi5kYXlzID0gTWF0aC5yb3VuZCgzMCAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3llYXInOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24ueWVhcnMgPSAxXG4gICAgICBlbHNlIGR1cmF0aW9uLm1vbnRocyA9IE1hdGgucm91bmQoMTIgLyB1cGRhdGVGcmVxdWVuY3kudXBkYXRlZFRpbWVzKVxuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBob3VycyA9IGR1cmF0aW9uLmhvdXJzID4gMCA/IGBUJHtkdXJhdGlvbi5ob3Vyc31IYCA6ICcnXG4gIHJldHVybiBgUCR7ZHVyYXRpb24ueWVhcnN9WSR7ZHVyYXRpb24ubW9udGhzfU0ke2R1cmF0aW9uLmRheXN9RCR7aG91cnN9YFxufVxuXG5mdW5jdGlvbiBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KFxuICBjb250YWN0OiBJbmRpdmlkdWFsLFxuICB0cmFuc2xhdGlvbnM6IFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGVcbikge1xuICBjb25zdCBmdWxsTmFtZSA9IG5hbWVQYXJ0c1RvRnVsbChjb250YWN0LmZpcnN0TmFtZSwgY29udGFjdC5sYXN0TmFtZSlcblxuICBjb25zdCBjcmVhdGVBZGRyZXNzID0gcGlwZShcbiAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6YWRkcmVzcycsICdnbWQ6Q0lfQWRkcmVzcycpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmVsZWN0cm9uaWNNYWlsQWRkcmVzcycpLFxuICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LmVtYWlsKVxuICAgICAgKVxuICAgICksXG4gICAgY29udGFjdC5hZGRyZXNzXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGVsaXZlcnlQb2ludCcpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5hZGRyZXNzKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICBjb25zdCBjcmVhdGVDb250YWN0ID0gcGlwZShcbiAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6Y29udGFjdEluZm8nLCAnZ21kOkNJX0NvbnRhY3QnKSxcbiAgICBjb250YWN0LnBob25lXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6cGhvbmUnLCAnZ21kOkNJX1RlbGVwaG9uZScsICdnbWQ6dm9pY2UnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QucGhvbmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3AsXG4gICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlQWRkcmVzcyksXG4gICAgY29udGFjdC5vcmdhbml6YXRpb24/LndlYnNpdGVcbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpvbmxpbmVSZXNvdXJjZScsICdnbWQ6Q0lfT25saW5lUmVzb3VyY2UnKSxcbiAgICAgICAgICAgIHdyaXRlTGlua2FnZShjb250YWN0Lm9yZ2FuaXphdGlvbi53ZWJzaXRlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICByZXR1cm4gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpDSV9SZXNwb25zaWJsZVBhcnR5JyksXG4gICAgICBmdWxsTmFtZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmluZGl2aWR1YWxOYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGZ1bGxOYW1lKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuICAgICAgY29udGFjdC5wb3NpdGlvblxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnBvc2l0aW9uTmFtZScpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LnBvc2l0aW9uKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuXG4gICAgICBjb250YWN0Lm9yZ2FuaXphdGlvbj8ubmFtZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOm9yZ2FuaXNhdGlvbk5hbWUnKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5vcmdhbml6YXRpb24ubmFtZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBjcmVhdGVDb250YWN0LFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpyb2xlJywgJ2dtZDpDSV9Sb2xlQ29kZScpLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI0NJX1JvbGVDb2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBnZXRSb2xlQ29kZShjb250YWN0LnJvbGUpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVLZXl3b3JkcygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKHBpcGUoZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3JkcycpKSlcbn1cblxuLy8gcmV0dXJucyBhIDxnbWQ6dGhlc2F1cnVzTmFtZT4gZWxlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRoZXNhdXJ1cyh0aGVzYXVydXM6IFRoZXNhdXJ1c01vZGVsKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDp0aGVzYXVydXNOYW1lJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRpdGxlJyksXG4gICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHRoZXNhdXJ1cy5uYW1lIHx8IHRoZXNhdXJ1cy5pZClcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6aWRlbnRpZmllcicsICdnbWQ6TURfSWRlbnRpZmllcicpLFxuICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmNvZGUnKSxcbiAgICAgICAgICAgIHRoZXNhdXJ1cy51cmxcbiAgICAgICAgICAgICAgPyB3cml0ZUFuY2hvcih0aGVzYXVydXMudXJsLCB0aGVzYXVydXMuaWQpXG4gICAgICAgICAgICAgIDogd3JpdGVDaGFyYWN0ZXJTdHJpbmcodGhlc2F1cnVzLmlkKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kS2V5d29yZHMoXG4gIGtleXdvcmRzOiBLZXl3b3JkW10sXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4pIHtcbiAgLy8ga2V5d29yZHMgYXJlIGdyb3VwZWQgYnkgdGhlc2F1cnVzIGlmIHRoZXkgaGF2ZSBvbmUsIG90aGVyd2lzZSBieSB0eXBlXG4gIGNvbnN0IGtleXdvcmRzQnlUaGVzYXVydXM6IEtleXdvcmRbXVtdID0ga2V5d29yZHMucmVkdWNlKChhY2MsIGtleXdvcmQpID0+IHtcbiAgICBjb25zdCB0aGVzYXVydXNJZCA9IGtleXdvcmQudGhlc2F1cnVzPy5pZFxuICAgIGNvbnN0IHR5cGUgPSBrZXl3b3JkLnR5cGVcbiAgICBsZXQgZXhpc3RpbmdHcm91cCA9IGFjYy5maW5kKChncm91cCkgPT5cbiAgICAgIHRoZXNhdXJ1c0lkXG4gICAgICAgID8gZ3JvdXBbMF0udGhlc2F1cnVzPy5pZCA9PT0gdGhlc2F1cnVzSWRcbiAgICAgICAgOiBncm91cFswXS50eXBlID09PSB0eXBlICYmICFncm91cFswXS50aGVzYXVydXNcbiAgICApXG4gICAgaWYgKCFleGlzdGluZ0dyb3VwKSB7XG4gICAgICBleGlzdGluZ0dyb3VwID0gW11cbiAgICAgIGFjYy5wdXNoKGV4aXN0aW5nR3JvdXApXG4gICAgfVxuICAgIGV4aXN0aW5nR3JvdXAucHVzaChrZXl3b3JkKVxuICAgIHJldHVybiBhY2NcbiAgfSwgW10pXG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICAuLi5rZXl3b3Jkc0J5VGhlc2F1cnVzLm1hcCgoa2V5d29yZHMpID0+XG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3JkcycsICdnbWQ6TURfS2V5d29yZHMnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDp0eXBlJywgJ2dtZDpNRF9LZXl3b3JkVHlwZUNvZGUnKSxcbiAgICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9LZXl3b3JkVHlwZUNvZGUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBrZXl3b3Jkc1swXS50eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAga2V5d29yZHNbMF0udGhlc2F1cnVzXG4gICAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihjcmVhdGVUaGVzYXVydXMoa2V5d29yZHNbMF0udGhlc2F1cnVzKSlcbiAgICAgICAgICA6IG5vb3AsXG4gICAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIC4uLmtleXdvcmRzLm1hcCgoa2V5d29yZCkgPT5cbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDprZXl3b3JkJyksXG4gICAgICAgICAgICAgIHdyaXRlTG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKFxuICAgICAgICAgICAgICAgIGtleXdvcmQubGFiZWwsXG4gICAgICAgICAgICAgICAga2V5d29yZC50cmFuc2xhdGlvbnM/LmxhYmVsLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25zdHJhaW50KFxuICBjb25zdHJhaW50OiBDb25zdHJhaW50LFxuICB0eXBlOiAnbGVnYWwnIHwgJ3NlY3VyaXR5JyB8ICdvdGhlcicsXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4pIHtcbiAgaWYgKHR5cGUgPT09ICdzZWN1cml0eScpIHtcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoXG4gICAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAgICdnbWQ6TURfU2VjdXJpdHlDb25zdHJhaW50cydcbiAgICAgICksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KFxuICAgICAgICAgICAgJ2dtZDpjbGFzc2lmaWNhdGlvbicsXG4gICAgICAgICAgICAnZ21kOk1EX0NsYXNzaWZpY2F0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX0NsYXNzaWZpY2F0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgJ3Jlc3RyaWN0ZWQnKVxuICAgICAgICApLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp1c2VMaW1pdGF0aW9uJyksXG4gICAgICAgICAgJ3VybCcgaW4gY29uc3RyYWludFxuICAgICAgICAgICAgPyB3cml0ZUxvY2FsaXplZEFuY2hvcihcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnVybCxcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnRleHQsXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50cmFuc2xhdGlvbnM/LnRleHQsXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50ZXh0LFxuICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQudHJhbnNsYXRpb25zPy50ZXh0LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xlZ2FsJykge1xuICAgIHJldHVybiBwaXBlKFxuICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnLCAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoXG4gICAgICAgICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJyxcbiAgICAgICAgICAgICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnb3RoZXJSZXN0cmljdGlvbnMnKVxuICAgICAgICApLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgICAgJ3VybCcgaW4gY29uc3RyYWludFxuICAgICAgICAgICAgPyB3cml0ZUxvY2FsaXplZEFuY2hvcihcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnVybCxcbiAgICAgICAgICAgICAgICBjb25zdHJhaW50LnRleHQsXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50cmFuc2xhdGlvbnM/LnRleHQsXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgY29uc3RyYWludC50ZXh0LFxuICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQudHJhbnNsYXRpb25zPy50ZXh0LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cbiAgLy8gb3RoZXJcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlTmVzdGVkRWxlbWVudChcbiAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0NvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6dXNlTGltaXRhdGlvbidcbiAgICApLFxuICAgICd1cmwnIGluIGNvbnN0cmFpbnRcbiAgICAgID8gd3JpdGVMb2NhbGl6ZWRBbmNob3IoXG4gICAgICAgICAgY29uc3RyYWludC51cmwsXG4gICAgICAgICAgY29uc3RyYWludC50ZXh0LFxuICAgICAgICAgIGNvbnN0cmFpbnQudHJhbnNsYXRpb25zPy50ZXh0LFxuICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgICApXG4gICAgICA6IHdyaXRlTG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKFxuICAgICAgICAgIGNvbnN0cmFpbnQudGV4dCxcbiAgICAgICAgICBjb25zdHJhaW50LnRyYW5zbGF0aW9ucz8udGV4dCxcbiAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVPdGhlckNvbnN0cmFpbnRzKCkge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgbWFwQXJyYXkoXG4gICAgICAgIHJlbW92ZUNoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6TURfQ29uc3RyYWludHMnKSxcbiAgICAgICAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgICAgICAgICAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU2VjdXJpdHlDb25zdHJhaW50cygpIHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIG1hcEFycmF5KFxuICAgICAgICByZW1vdmVDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX1NlY3VyaXR5Q29uc3RyYWludHMnKSxcbiAgICAgICAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgICAgICAgICAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGVnYWxDb25zdHJhaW50cygpIHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIG1hcEFycmF5KFxuICAgICAgICByZW1vdmVDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICAgICAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICAgICAgICAgICAgICdnbWQ6YWNjZXNzQ29uc3RyYWludHMnLFxuICAgICAgICAgICAgICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtYXBBcnJheShyZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJykpLFxuICAgICAgICAgICAgICAgIChyZXN0cmljdGlvbkNvZGVzKSA9PlxuICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25Db2Rlcy5ldmVyeSgoY29kZSkgPT4gY29kZSAhPT0gJ2xpY2Vuc2UnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIGZpbHRlckFycmF5KHBpcGUoYWxsQ2hpbGRyZW5FbGVtZW50LCAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA9PT0gMCkpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMaWNlbnNlcygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgZmlsdGVyQXJyYXkoXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKFxuICAgICAgICAgICAgJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJyxcbiAgICAgICAgICAgICdnbWQ6YWNjZXNzQ29uc3RyYWludHMnLFxuICAgICAgICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXBBcnJheShyZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJykpLFxuICAgICAgICAgIChyZXN0cmljdGlvbkNvZGVzKSA9PlxuICAgICAgICAgICAgcmVzdHJpY3Rpb25Db2Rlcy5zb21lKChjb2RlKSA9PiBjb2RlID09PSAnbGljZW5zZScpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpY2Vuc2UoXG4gIGxpY2Vuc2U6IENvbnN0cmFpbnQsXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnLCAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDphY2Nlc3NDb25zdHJhaW50cycsICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJyksXG4gICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICApLFxuICAgICAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsICdsaWNlbnNlJylcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6YWNjZXNzQ29uc3RyYWludHMnLCAnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZScpLFxuICAgICAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX1Jlc3RyaWN0aW9uQ29kZSdcbiAgICAgICAgKSxcbiAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnb3RoZXJSZXN0cmljdGlvbnMnKVxuICAgICAgKSxcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgICd1cmwnIGluIGxpY2Vuc2VcbiAgICAgICAgICA/IHdyaXRlQW5jaG9yKGxpY2Vuc2UudXJsLCBsaWNlbnNlLnRleHQpXG4gICAgICAgICAgOiB3cml0ZUxvY2FsaXplZENoYXJhY3RlclN0cmluZyhcbiAgICAgICAgICAgICAgbGljZW5zZS50ZXh0LFxuICAgICAgICAgICAgICBsaWNlbnNlLnRyYW5zbGF0aW9ucz8udGV4dCxcbiAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVPbmxpbmVSZXNvdXJjZXMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmRpc3RyaWJ1dGlvbkluZm8nKVxufVxuXG5mdW5jdGlvbiBhcHBlbmRPbmxpbmVSZXNvdXJjZUZvcm1hdChtaW1lVHlwZTogc3RyaW5nKSB7XG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCcsICdnbWQ6TURfRm9ybWF0JyksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6bmFtZScpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhtaW1lVHlwZSkpLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp2ZXJzaW9uJyksXG4gICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoJzEuMCcpIC8vIGhhcmRjb2RpbmcgdGhpcyBhcyBpdCBtb3N0IGxpa2VseSB3b24ndCBiZSB1c2VkIGJ1dCBpcyBtYW5kYXRvcnlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlzdHJpYnV0aW9uSW5mbygpIHtcbiAgcmV0dXJuIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpkaXN0cmlidXRpb25JbmZvJywgJ2dtZDpNRF9EaXN0cmlidXRpb24nKVxufVxuXG4vLyBhcHBseSB0byBNRF9EaXN0cmlidXRpb25cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRPbmxpbmVSZXNvdXJjZShcbiAgb25saW5lUmVzb3VyY2U6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgYXBwZW5kRm9ybWF0Rm46IChcbiAgICBtaW1lVHlwZTogc3RyaW5nXG4gICkgPT4gQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4sXG4gIHRyYW5zbGF0aW9uczogUmVjb3JkVHJhbnNsYXRpb25zLFxuICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuKSB7XG4gIGxldCBuYW1lOiBzdHJpbmdcbiAgbGV0IGZ1bmN0aW9uQ29kZTogc3RyaW5nXG4gIGxldCBwcm90b2NvbDogc3RyaW5nXG4gIGlmIChvbmxpbmVSZXNvdXJjZS50eXBlID09PSAnc2VydmljZScpIHtcbiAgICAvLyBzaG91bGQgd2Uga2VlcCB0aGUgaWRlbnRpZmllckluU2VydmljZT8gcmVhZC13cml0ZSBkdXBsaWNhdGUgd2l0aCBuYW1lXG4gICAgbmFtZSA9IG9ubGluZVJlc291cmNlLmlkZW50aWZpZXJJblNlcnZpY2UgLy8gdGhpcyBpcyBmb3IgR2VvTmV0d29yayB0byBrbm93IHRoZSBsYXllciBuYW1lXG4gICAgZnVuY3Rpb25Db2RlID0gJ2Rvd25sb2FkJ1xuICAgIHByb3RvY29sID0gZ2V0U2VydmljZURpc3RyaWJ1dGlvblByb3RvY29sKG9ubGluZVJlc291cmNlKVxuICB9IGVsc2UgaWYgKG9ubGluZVJlc291cmNlLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICBuYW1lID0gb25saW5lUmVzb3VyY2UubmFtZVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdkb3dubG9hZCdcbiAgICBwcm90b2NvbCA9ICdXV1c6RE9XTkxPQUQnXG4gIH0gZWxzZSB7XG4gICAgbmFtZSA9IG9ubGluZVJlc291cmNlLm5hbWVcbiAgICBmdW5jdGlvbkNvZGUgPSAnaW5mb3JtYXRpb24nXG4gICAgcHJvdG9jb2wgPSAnV1dXOkxJTksnXG4gIH1cbiAgY29uc3QgYXBwZW5kVHJhbnNmZXJPcHRpb25zID0gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoXG4gICAgICAgICdnbWQ6dHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICAgJ2dtZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICAgJ2dtZDpvbkxpbmUnLFxuICAgICAgICAnZ21kOkNJX09ubGluZVJlc291cmNlJ1xuICAgICAgKSxcbiAgICAgIHdyaXRlTGlua2FnZShvbmxpbmVSZXNvdXJjZS51cmwpLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyBpbiBvbmxpbmVSZXNvdXJjZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgIHdyaXRlTG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKFxuICAgICAgICAgICAgICAgIG9ubGluZVJlc291cmNlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIG9ubGluZVJlc291cmNlLnRyYW5zbGF0aW9ucz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIG5hbWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOm5hbWUnKSxcbiAgICAgICAgICAgICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBvbmxpbmVSZXNvdXJjZS50cmFuc2xhdGlvbnM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpwcm90b2NvbCcpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhwcm90b2NvbCkpLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpmdW5jdGlvbicsICdnbWQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjQ0lfT25MaW5lRnVuY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBmdW5jdGlvbkNvZGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgJ21pbWVUeXBlJyBpbiBvbmxpbmVSZXNvdXJjZVxuICAgICAgPyBhcHBlbmRGb3JtYXRGbihvbmxpbmVSZXNvdXJjZS5taW1lVHlwZSlcbiAgICAgIDogbm9vcCxcbiAgICBhcHBlbmRUcmFuc2Zlck9wdGlvbnNcbiAgKVxufVxuXG4vKipcbiAqIExvb2tzIGZvciBzcnY6U1ZfU2VydmljZUlkZW50aWZpY2F0aW9uIG9yIGdtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24gZWxlbWVudFxuICogZGVwZW5kaW5nIG9uIHJlY29yZCB0eXBlLCBjcmVhdGUgaWYgbWlzc2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSB7XG4gIHJldHVybiAocm9vdEVsOiBYbWxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qga2luZCA9IHJlYWRLaW5kKHJvb3RFbClcbiAgICBsZXQgZWx0TmFtZSA9ICdnbWQ6TURfRGF0YUlkZW50aWZpY2F0aW9uJ1xuICAgIGlmIChraW5kID09PSAnc2VydmljZScpIGVsdE5hbWUgPSAnc3J2OlNWX1NlcnZpY2VJZGVudGlmaWNhdGlvbidcbiAgICByZXR1cm4gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDppZGVudGlmaWNhdGlvbkluZm8nLCBlbHROYW1lKShyb290RWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRPckNyZWF0ZURpc3RyaWJ1dGlvbigpIHtcbiAgcmV0dXJuIChyb290RWw6IFhtbEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gICAgICAnZ21kOmRpc3RyaWJ1dGlvbkluZm8nLFxuICAgICAgJ2dtZDpNRF9EaXN0cmlidXRpb24nXG4gICAgKShyb290RWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVW5pcXVlSWRlbnRpZmllcihcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6ZmlsZUlkZW50aWZpZXInKSxcbiAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUtpbmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmhpZXJhcmNoeUxldmVsJywgJ2dtZDpNRF9TY29wZUNvZGUnKSxcbiAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9TY29wZUNvZGUnXG4gICAgKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGtpbmRUb0NvZGVMaXN0VmFsdWUocmVjb3JkKSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVRpdGxlKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicsICdnbWQ6dGl0bGUnKSxcbiAgICB3cml0ZUxvY2FsaXplZENoYXJhY3RlclN0cmluZyhcbiAgICAgIHJlY29yZC50aXRsZSxcbiAgICAgIHJlY29yZC50cmFuc2xhdGlvbnM/LnRpdGxlLFxuICAgICAgcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFic3RyYWN0KHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ21kOmFic3RyYWN0JyksXG4gICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICByZWNvcmQuYWJzdHJhY3QsXG4gICAgICByZWNvcmQudHJhbnNsYXRpb25zPy5hYnN0cmFjdCxcbiAgICAgIHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTdGF0dXMocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6c3RhdHVzJywgJ2dtZDpNRF9Qcm9ncmVzc0NvZGUnKSxcbiAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9Qcm9ncmVzc0NvZGUnXG4gICAgKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGdldFByb2dyZXNzQ29kZShyZWNvcmQuc3RhdHVzKSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpjb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQuY29udGFjdHMubWFwKChjb250YWN0KSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpjb250YWN0JyksXG4gICAgICAgICAgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShcbiAgICAgICAgICAgIGNvbnRhY3QsXG4gICAgICAgICAgICByZWNvcmQudHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmNvbnRhY3QnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5jb250YWN0c0ZvclJlc291cmNlLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICAgICAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KFxuICAgICAgICAgICAgY29udGFjdCxcbiAgICAgICAgICAgIHJlY29yZC50cmFuc2xhdGlvbnMsXG4gICAgICAgICAgICByZWNvcmQuZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2V5d29yZHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUtleXdvcmRzKCksXG4gICAgYXBwZW5kS2V5d29yZHMocmVjb3JkLmtleXdvcmRzLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVG9waWNzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnRvcGljQ2F0ZWdvcnknKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC50b3BpY3MubWFwKCh0b3BpYykgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6dG9waWNDYXRlZ29yeScsICdnbWQ6TURfVG9waWNDYXRlZ29yeUNvZGUnKSxcbiAgICAgICAgICBzZXRUZXh0Q29udGVudCh0b3BpYylcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpY2Vuc2VzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVMaWNlbnNlcygpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLmxpY2Vuc2VzLm1hcCgobGljZW5zZSkgPT5cbiAgICAgICAgY3JlYXRlTGljZW5zZShsaWNlbnNlLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxlZ2FsQ29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUxlZ2FsQ29uc3RyYWludHMoKSxcbiAgICByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5sZWdhbENvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICAgICAgY3JlYXRlQ29uc3RyYWludChjLCAnbGVnYWwnLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNlY3VyaXR5Q29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZVNlY3VyaXR5Q29uc3RyYWludHMoKSxcbiAgICByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5zZWN1cml0eUNvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICAgICAgY3JlYXRlQ29uc3RyYWludChjLCAnc2VjdXJpdHknLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU90aGVyQ29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZU90aGVyQ29uc3RyYWludHMoKSxcbiAgICByZW1vdmVFbXB0eVJlc291cmNlQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5vdGhlckNvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICAgICAgY3JlYXRlQ29uc3RyYWludChjLCAnb3RoZXInLCByZWNvcmQuZGVmYXVsdExhbmd1YWdlKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVwZGF0ZUZyZXF1ZW5jeShcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpyZXNvdXJjZU1haW50ZW5hbmNlJyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nKSxcbiAgICB0eXBlb2YgcmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSA9PT0gJ29iamVjdCdcbiAgICAgID8gcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRDaGlsZChcbiAgICAgICAgICAgICdnbWQ6dXNlckRlZmluZWRNYWludGVuYW5jZUZyZXF1ZW5jeScsXG4gICAgICAgICAgICAnZ3RzOlRNX1BlcmlvZER1cmF0aW9uJ1xuICAgICAgICAgICksXG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQoZ2V0SVNPRHVyYXRpb24ocmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSkpXG4gICAgICAgIClcbiAgICAgIDogcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRDaGlsZChcbiAgICAgICAgICAgICdnbWQ6bWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3knLFxuICAgICAgICAgICAgJ2dtZDpNRF9NYWludGVuYW5jZUZyZXF1ZW5jeUNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9NYWludGVuYW5jZUZyZXF1ZW5jeUNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cml0ZUF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdFZhbHVlJyxcbiAgICAgICAgICAgIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShyZWNvcmQudXBkYXRlRnJlcXVlbmN5KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVjb3JkVXBkYXRlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6ZGF0ZVN0YW1wJyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICB3cml0ZURhdGVUaW1lKHJlY29yZC5yZWNvcmRVcGRhdGVkKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVJlc291cmNlRGF0ZShcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIHJlbW92ZUNoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGF0ZScpLFxuICAgICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAgICAgICAgICdnbWQ6Q0lfRGF0ZScsXG4gICAgICAgICAgICAgICdnbWQ6ZGF0ZVR5cGUnLFxuICAgICAgICAgICAgICAnZ21kOkNJX0RhdGVUeXBlQ29kZSdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdHlwZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFJlc291cmNlRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmRhdGUnLCAnZ21kOkNJX0RhdGUnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6ZGF0ZScpLCB3cml0ZURhdGVUaW1lKGRhdGUpKSxcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmRhdGVUeXBlJywgJ2dtZDpDSV9EYXRlVHlwZUNvZGUnKSxcbiAgICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNDSV9EYXRlVHlwZUNvZGUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3JpdGVBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCB0eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXNvdXJjZUNyZWF0ZWQoXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcmVtb3ZlUmVzb3VyY2VEYXRlKCdjcmVhdGlvbicpKHJvb3RFbClcbiAgaWYgKCFyZWNvcmQucmVzb3VyY2VDcmVhdGVkKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZUNyZWF0ZWQsICdjcmVhdGlvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VVcGRhdGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgncmV2aXNpb24nKShyb290RWwpXG4gIGlmICghcmVjb3JkLnJlc291cmNlVXBkYXRlZCkgcmV0dXJuXG4gIGFwcGVuZFJlc291cmNlRGF0ZShyZWNvcmQucmVzb3VyY2VVcGRhdGVkLCAncmV2aXNpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlc291cmNlUHVibGlzaGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgncHVibGljYXRpb24nKShyb290RWwpXG4gIGlmICghcmVjb3JkLnJlc291cmNlUHVibGlzaGVkKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZVB1Ymxpc2hlZCwgJ3B1YmxpY2F0aW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXVzZVR5cGUocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgd3JpdGVLaW5kKHJlY29yZCwgcm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24oXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgaWYgKCFyZWNvcmQuc3BhdGlhbFJlcHJlc2VudGF0aW9uKSB7XG4gICAgcGlwZShcbiAgICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUnKVxuICAgICkocm9vdEVsKVxuICAgIHJldHVyblxuICB9XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdnbWQ6c3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZScsXG4gICAgICAnZ21kOk1EX1NwYXRpYWxSZXByZXNlbnRhdGlvblR5cGVDb2RlJ1xuICAgICksXG4gICAgd3JpdGVBdHRyaWJ1dGUoXG4gICAgICAnY29kZUxpc3QnLFxuICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZUNvZGUnXG4gICAgKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVHcmFwaGljT3ZlcnZpZXdzKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmdyYXBoaWNPdmVydmlldycpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLm92ZXJ2aWV3c1xuICAgICAgICAuZmlsdGVyKChvdmVydmlldykgPT4gb3ZlcnZpZXcudXJsKVxuICAgICAgICAubWFwKChvdmVydmlldykgPT5cbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmdyYXBoaWNPdmVydmlldycsICdnbWQ6TURfQnJvd3NlR3JhcGhpYycpLFxuICAgICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmZpbGVOYW1lJyksXG4gICAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcob3ZlcnZpZXcudXJsLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnZGVzY3JpcHRpb24nIGluIG92ZXJ2aWV3XG4gICAgICAgICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZmlsZURlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG92ZXJ2aWV3LmRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBub29wXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlTGluZWFnZShyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAgICAgJ2dtZDpkYXRhUXVhbGl0eUluZm8nLFxuICAgICAgJ2dtZDpEUV9EYXRhUXVhbGl0eScsXG4gICAgICAnZ21kOmxpbmVhZ2UnLFxuICAgICAgJ2dtZDpMSV9MaW5lYWdlJyxcbiAgICAgICdnbWQ6c3RhdGVtZW50J1xuICAgICksXG4gICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICByZWNvcmQubGluZWFnZSxcbiAgICAgIHJlY29yZC50cmFuc2xhdGlvbnM/LmxpbmVhZ2UsXG4gICAgICByZWNvcmQuZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZpY2VFbmRwb2ludFByb3RvY29sKGVuZHBvaW50OiBTZXJ2aWNlRW5kcG9pbnQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGVuZHBvaW50LmFjY2Vzc1NlcnZpY2VQcm90b2NvbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnd2ZzJzpcbiAgICAgIHJldHVybiAnT0dDOldGUydcbiAgICBjYXNlICd3bXMnOlxuICAgICAgcmV0dXJuICdPR0M6V01TJ1xuICAgIGNhc2UgJ3dwcyc6XG4gICAgICByZXR1cm4gJ09HQzpXUFMnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBlbmRwb2ludC5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2xcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT25saW5lUmVzb3VyY2Uob25saW5lUmVzb3VyY2U6IFNlcnZpY2VPbmxpbmVSZXNvdXJjZSkge1xuICBsZXQgbGlua2FnZVVybCwgZnVuY3Rpb25Db2RlLCBwcm90b2NvbFxuICBpZiAob25saW5lUmVzb3VyY2UudHlwZSA9PT0gJ2VuZHBvaW50Jykge1xuICAgIGxpbmthZ2VVcmwgPSBvbmxpbmVSZXNvdXJjZS51cmwudG9TdHJpbmcoKVxuICAgIHByb3RvY29sID0gZ2V0U2VydmljZUVuZHBvaW50UHJvdG9jb2wob25saW5lUmVzb3VyY2UpXG4gICAgZnVuY3Rpb25Db2RlID0gJ2Rvd25sb2FkJ1xuICB9IGVsc2Uge1xuICAgIGxpbmthZ2VVcmwgPSBvbmxpbmVSZXNvdXJjZS51cmwudG9TdHJpbmcoKVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdpbmZvcm1hdGlvbidcbiAgICBwcm90b2NvbCA9ICdXV1c6TElOSydcbiAgfVxuICBjb25zdCBhcHBlbmRUcmFuc2Zlck9wdGlvbnMgPSBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRyYW5zZmVyT3B0aW9ucycpLFxuICAgICAgY3JlYXRlTmVzdGVkQ2hpbGQoXG4gICAgICAgICdnbWQ6TURfRGlnaXRhbFRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAgICdnbWQ6b25MaW5lJyxcbiAgICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZSdcbiAgICAgICksXG4gICAgICB3cml0ZUxpbmthZ2UobGlua2FnZVVybCksXG4gICAgICAnZGVzY3JpcHRpb24nIGluIG9ubGluZVJlc291cmNlXG4gICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcob25saW5lUmVzb3VyY2UuZGVzY3JpcHRpb24pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICAnbmFtZScgaW4gb25saW5lUmVzb3VyY2VcbiAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpuYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG9ubGluZVJlc291cmNlLm5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6cHJvdG9jb2wnKSwgd3JpdGVDaGFyYWN0ZXJTdHJpbmcocHJvdG9jb2wpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6ZnVuY3Rpb24nLCAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZScpLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI0NJX09uTGluZUZ1bmN0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIHdyaXRlQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZnVuY3Rpb25Db2RlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDpkaXN0cmlidXRpb25JbmZvJywgJ2dtZDpNRF9EaXN0cmlidXRpb24nKSxcbiAgICBhcHBlbmRUcmFuc2Zlck9wdGlvbnNcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kRGF0YXNldE9ubGluZVJlc291cmNlcyhcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkIHwgUmV1c2VSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIGFwcGVuZENoaWxkcmVuKFxuICAgIC4uLnJlY29yZC5vbmxpbmVSZXNvdXJjZXMubWFwKChkKSA9PlxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRGlzdHJpYnV0aW9uSW5mbygpLFxuICAgICAgICBhcHBlbmRPbmxpbmVSZXNvdXJjZShcbiAgICAgICAgICBkLFxuICAgICAgICAgIGFwcGVuZE9ubGluZVJlc291cmNlRm9ybWF0LFxuICAgICAgICAgIHJlY29yZC50cmFuc2xhdGlvbnMsXG4gICAgICAgICAgcmVjb3JkLmRlZmF1bHRMYW5ndWFnZVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMoXG4gIHJlY29yZDogU2VydmljZVJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgYXBwZW5kQ2hpbGRyZW4oLi4ucmVjb3JkLm9ubGluZVJlc291cmNlcy5tYXAoY3JlYXRlT25saW5lUmVzb3VyY2UpKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU9ubGluZVJlc291cmNlcyhcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICByZW1vdmVPbmxpbmVSZXNvdXJjZXMoKShyb290RWwpXG5cbiAgaWYgKHJlY29yZC5raW5kID09PSAnZGF0YXNldCcgfHwgcmVjb3JkLmtpbmQgPT09ICdyZXVzZScpIHtcbiAgICBhcHBlbmREYXRhc2V0T25saW5lUmVzb3VyY2VzKHJlY29yZCwgcm9vdEVsKVxuICAgIHJldHVyblxuICB9XG4gIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMocmVjb3JkLCByb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVRlbXBvcmFsRXh0ZW50cyhcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpleHRlbnQnLCAnZ21kOkVYX0V4dGVudCcpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6dGVtcG9yYWxFbGVtZW50JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQudGVtcG9yYWxFeHRlbnRzLm1hcCgoZXh0ZW50KSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZU5lc3RlZEVsZW1lbnQoJ2dtZDp0ZW1wb3JhbEVsZW1lbnQnLCAnZ21kOkVYX1RlbXBvcmFsRXh0ZW50JyksXG4gICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAnc3RhcnQnIGluIGV4dGVudCAmJiAnZW5kJyBpbiBleHRlbnRcbiAgICAgICAgICAgICAgPyBwaXBlKFxuICAgICAgICAgICAgICAgICAgY3JlYXRlTmVzdGVkRWxlbWVudCgnZ21kOmV4dGVudCcsICdnbWw6VGltZVBlcmlvZCcpLFxuICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21sOmJlZ2luUG9zaXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50LnN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0VGV4dENvbnRlbnQoZm9ybWF0KGV4dGVudC5zdGFydCwgJ3l5eXktTU0tZGQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB3cml0ZUF0dHJpYnV0ZSgnaW5kZXRlcm1pbmF0ZVBvc2l0aW9uJywgJ3Vua25vd24nKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWw6ZW5kUG9zaXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50LmVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNldFRleHRDb250ZW50KGZvcm1hdChleHRlbnQuZW5kLCAneXl5eS1NTS1kZCcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHdyaXRlQXR0cmlidXRlKCdpbmRldGVybWluYXRlUG9zaXRpb24nLCAndW5rbm93bicpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHBpcGUoXG4gICAgICAgICAgICAgICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAnZ21kOmV4dGVudCcsXG4gICAgICAgICAgICAgICAgICAgICdnbWw6VGltZUluc3RhbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZ21sOnRpbWVQb3NpdGlvbidcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBleHRlbnQuc3RhcnRcbiAgICAgICAgICAgICAgICAgICAgPyBzZXRUZXh0Q29udGVudChmb3JtYXQoZXh0ZW50LnN0YXJ0LCAneXl5eS1NTS1kZCcpKVxuICAgICAgICAgICAgICAgICAgICA6IHdyaXRlQXR0cmlidXRlKCdpbmRldGVybWluYXRlUG9zaXRpb24nLCAndW5rbm93bicpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNwYXRpYWxFeHRlbnRzKHJlY29yZDogRGF0YXNldFJlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIGNvbnN0IGFwcGVuZEJvdW5kaW5nUG9seWdvbiA9IChnZW9tZXRyeT86IEdlb21ldHJ5KSA9PiB7XG4gICAgaWYgKCFnZW9tZXRyeSkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpFWF9Cb3VuZGluZ1BvbHlnb24nKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpwb2x5Z29uJyksXG4gICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oKCkgPT4gd3JpdGVHZW9tZXRyeShnZW9tZXRyeSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjb25zdCBhcHBlbmRHZW9ncmFwaGljQm91bmRpbmdCb3ggPSAoXG4gICAgYmJveD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gICkgPT4ge1xuICAgIGlmICghYmJveCkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpFWF9HZW9ncmFwaGljQm91bmRpbmdCb3gnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDp3ZXN0Qm91bmRMb25naXR1ZGUnKSwgd3JpdGVEZWNpbWFsKGJib3hbMF0pKSxcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6ZWFzdEJvdW5kTG9uZ2l0dWRlJyksIHdyaXRlRGVjaW1hbChiYm94WzJdKSksXG4gICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOnNvdXRoQm91bmRMYXRpdHVkZScpLCB3cml0ZURlY2ltYWwoYmJveFsxXSkpLFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpub3J0aEJvdW5kTGF0aXR1ZGUnKSwgd3JpdGVEZWNpbWFsKGJib3hbM10pKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGFwcGVuZEdlb2dyYXBoaWNEZXNjcmlwdGlvbiA9IChcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbnM/OiBGaWVsZFRyYW5zbGF0aW9uXG4gICkgPT4ge1xuICAgIGlmICghZGVzY3JpcHRpb24pIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHBpcGUoXG4gICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KFxuICAgICAgICAnZ21kOkVYX0dlb2dyYXBoaWNEZXNjcmlwdGlvbicsXG4gICAgICAgICdnbWQ6Z2VvZ3JhcGhpY0lkZW50aWZpZXInLFxuICAgICAgICAnZ21kOk1EX0lkZW50aWZpZXInLFxuICAgICAgICAnZ21kOmNvZGUnXG4gICAgICApLFxuICAgICAgd3JpdGVMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB0cmFuc2xhdGlvbnMsXG4gICAgICAgIHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpleHRlbnQnLCAnZ21kOkVYX0V4dGVudCcpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6Z2VvZ3JhcGhpY0VsZW1lbnQnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5zcGF0aWFsRXh0ZW50cy5tYXAoKGV4dGVudCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6Z2VvZ3JhcGhpY0VsZW1lbnQnKSxcbiAgICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIGFwcGVuZEJvdW5kaW5nUG9seWdvbihleHRlbnQuZ2VvbWV0cnkpLFxuICAgICAgICAgICAgYXBwZW5kR2VvZ3JhcGhpY0JvdW5kaW5nQm94KGV4dGVudC5iYm94KSxcbiAgICAgICAgICAgIGFwcGVuZEdlb2dyYXBoaWNEZXNjcmlwdGlvbihcbiAgICAgICAgICAgICAgZXh0ZW50LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBleHRlbnQudHJhbnNsYXRpb25zPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxhbmd1YWdlcyhyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICAvLyBjbGVhciBleGlzdGluZ1xuICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmxvY2FsZScpKHJvb3RFbClcblxuICAvLyBkbyBub3Qgd3JpdGUgZG93biBsYW5ndWFnZXMgaWYgdGhlcmUgaXMgbm90aGluZyBlbHNlIHRoYW4gdGhlIGRlZmF1bHQgb25lXG4gIGlmICghcmVjb3JkLm90aGVyTGFuZ3VhZ2VzPy5sZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZUxhbmd1YWdlRWwgPSAobGFuZzogTGFuZ3VhZ2VDb2RlKSA9PlxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVOZXN0ZWRFbGVtZW50KCdnbWQ6bG9jYWxlJywgJ2dtZDpQVF9Mb2NhbGUnKSxcbiAgICAgIHdyaXRlQXR0cmlidXRlKCdpZCcsIGxhbmcudG9VcHBlckNhc2UoKSksXG4gICAgICBjcmVhdGVOZXN0ZWRDaGlsZCgnZ21kOmxhbmd1YWdlQ29kZScsICdnbWQ6TGFuZ3VhZ2VDb2RlJyksXG4gICAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3QnLCAnaHR0cDovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi8nKSxcbiAgICAgIHdyaXRlQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgdG9MYW5nMyhsYW5nKSA/PyBsYW5nKVxuICAgIClcblxuICAvLyBhZGQgbmV3IGxhbmd1YWdlcyAob25seSBpZiBvdGhlciB0aGFuIGRlZmF1bHQgb25lKVxuICBhcHBlbmRDaGlsZHJlbihcbiAgICBjcmVhdGVMYW5ndWFnZUVsKHJlY29yZC5kZWZhdWx0TGFuZ3VhZ2UpLFxuICAgIC4uLnJlY29yZC5vdGhlckxhbmd1YWdlcy5tYXAoY3JlYXRlTGFuZ3VhZ2VFbClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlZmF1bHRMYW5ndWFnZShcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBjb25zdCBsYW5nMyA9IHRvTGFuZzMocmVjb3JkLmRlZmF1bHRMYW5ndWFnZS50b0xvd2VyQ2FzZSgpKVxuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmxhbmd1YWdlJywgJ2dtZDpMYW5ndWFnZUNvZGUnKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3QnLCAnaHR0cDovL3d3dy5sb2MuZ292L3N0YW5kYXJkcy9pc282MzktMi8nKSxcbiAgICB3cml0ZUF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGxhbmczKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VJZGVudGlmaWVyKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIGNvbnN0IGZpcnN0SWRlbnRpZmllciA9IHJlY29yZC5yZXNvdXJjZUlkZW50aWZpZXJzPy5bMF0/LmNvZGVcblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpjaXRhdGlvbicsICdnbWQ6Q0lfQ2l0YXRpb24nKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmlkZW50aWZpZXInKSxcbiAgICBmaXJzdElkZW50aWZpZXJcbiAgICAgID8gcGlwZShcbiAgICAgICAgICBjcmVhdGVOZXN0ZWRDaGlsZCgnZ21kOmlkZW50aWZpZXInLCAnZ21kOk1EX0lkZW50aWZpZXInLCAnZ21kOmNvZGUnKSxcbiAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhmaXJzdElkZW50aWZpZXIpXG4gICAgICAgIClcbiAgICAgIDogbm9vcFxuICApKHJvb3RFbClcbn1cbiJdfQ==
|
|
@@ -20,7 +20,7 @@ export class AuthService {
|
|
|
20
20
|
baseUrl = baseUrl.replace('?', '&');
|
|
21
21
|
}
|
|
22
22
|
return baseUrl
|
|
23
|
-
.replace('${current_url}', new URL(this.location.path(), window.location.href).toString())
|
|
23
|
+
.replace('${current_url}', new URL(this.location.prepareExternalUrl(this.location.path()), window.location.href).toString())
|
|
24
24
|
.replace('${lang2}', toLang2(this.translateService.currentLang))
|
|
25
25
|
.replace('${lang3}', toLang3(this.translateService.currentLang));
|
|
26
26
|
}
|
|
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
64
64
|
type: Inject,
|
|
65
65
|
args: [SETTINGS_URL]
|
|
66
66
|
}] }, { type: i1.TranslateService }, { type: i2.Location }] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7O0FBRTFDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1FQUFtRSxDQUFBO0FBQ3hHLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxVQUFVLENBQUMsQ0FBQTtBQUUvRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQTtBQUMzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVMsV0FBVyxDQUFDLENBQUE7QUFFakUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsMEVBQTBFLENBQUE7QUFDbEgsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFTLGFBQWEsQ0FBQyxDQUFBO0FBS3JFLE1BQU0sT0FBTyxXQUFXO0lBS3RCLElBQUksUUFBUTtRQUNWLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7UUFDL0IsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNyQixDQUFDLE1BQU0sQ0FBQTtRQUNSLDBFQUEwRTtRQUMxRSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1lBQ3BFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNyQyxDQUFDO1FBQ0QsT0FBTyxPQUFPO2FBQ1gsT0FBTyxDQUNOLGdCQUFnQixFQUNoQixJQUFJLEdBQUcsQ0FDTCxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDdEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3JCLENBQUMsUUFBUSxFQUFFLENBQ2I7YUFDQSxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDL0QsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQTtJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FDakMsVUFBVSxFQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQzNDLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFDeUMsaUJBQXlCLEVBQ3hCLGtCQUEwQixFQUN4QixvQkFBNEIsRUFDOUQsZ0JBQWtDLEVBQ2xDLFFBQWtCO1FBSmEsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVE7UUFDOUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBMUM1QixpQkFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxxQkFBcUIsQ0FBQTtRQUM5RCxrQkFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxzQkFBc0IsQ0FBQTtRQUNqRSxvQkFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSx3QkFBd0IsQ0FBQTtJQXlDcEUsQ0FBQzsrR0E1Q08sV0FBVyxrQkF1Q0EsU0FBUyw2QkFDVCxVQUFVLDZCQUNWLFlBQVk7bUhBekN2QixXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXdDSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVM7OzBCQUM1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUM3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0b0xhbmcyLCB0b0xhbmczIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR040X0xPR0lOX1VSTCA9IGAvZ2VvbmV0d29yay9zcnYvXFwke2xhbmczfS9jYXRhbG9nLnNpZ25pbj9yZWRpcmVjdD1cXCR7Y3VycmVudF91cmx9YFxuZXhwb3J0IGNvbnN0IExPR0lOX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2dpblVybCcpXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dONF9MT0dPVVRfVVJMID0gYC9nZW9uZXR3b3JrL3NpZ25vdXRgXG5leHBvcnQgY29uc3QgTE9HT1VUX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2dvdXRVcmwnKVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9HTjRfU0VUVElOR1NfVVJMID0gYC9nZW9uZXR3b3JrL3Nydi9cXCR7bGFuZzN9L2FkbWluLmNvbnNvbGUjL29yZ2FuaXphdGlvbi91c2Vycz91c2VyT3JHcm91cD1gXG5leHBvcnQgY29uc3QgU0VUVElOR1NfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ3NldHRpbmdzVXJsJylcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgYmFzZUxvZ2luVXJsID0gdGhpcy5iYXNlTG9naW5VcmxUb2tlbiB8fCBERUZBVUxUX0dONF9MT0dJTl9VUkxcbiAgYmFzZUxvZ291dFVybCA9IHRoaXMuYmFzZUxvZ291dFVybFRva2VuIHx8IERFRkFVTFRfR040X0xPR09VVF9VUkxcbiAgYmFzZVNldHRpbmdzVXJsID0gdGhpcy5iYXNlU2V0dGluZ3NVcmxUb2tlbiB8fCBERUZBVUxUX0dONF9TRVRUSU5HU19VUkxcblxuICBnZXQgbG9naW5VcmwoKSB7XG4gICAgbGV0IGJhc2VVcmwgPSB0aGlzLmJhc2VMb2dpblVybFxuICAgIGNvbnN0IGxvY2F0aW9uSGFzUXVlcnlQYXJhbXMgPSAhIW5ldyBVUkwoXG4gICAgICB0aGlzLmxvY2F0aW9uLnBhdGgoKSxcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgKS5zZWFyY2hcbiAgICAvLyB0aGlzIGlzIHNwZWNpZmljIHRvIGdlb3JjaGVzdHJhIGxvZ2luIFVSTCBiYXNlZCBvbiBhID9sb2dpbiBxdWVyeSBwYXJhbVxuICAgIGlmIChiYXNlVXJsLnN0YXJ0c1dpdGgoJyR7Y3VycmVudF91cmx9PycpICYmIGxvY2F0aW9uSGFzUXVlcnlQYXJhbXMpIHtcbiAgICAgIGJhc2VVcmwgPSBiYXNlVXJsLnJlcGxhY2UoJz8nLCAnJicpXG4gICAgfVxuICAgIHJldHVybiBiYXNlVXJsXG4gICAgICAucmVwbGFjZShcbiAgICAgICAgJyR7Y3VycmVudF91cmx9JyxcbiAgICAgICAgbmV3IFVSTChcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uLnByZXBhcmVFeHRlcm5hbFVybCh0aGlzLmxvY2F0aW9uLnBhdGgoKSksXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgICAgKS50b1N0cmluZygpXG4gICAgICApXG4gICAgICAucmVwbGFjZSgnJHtsYW5nMn0nLCB0b0xhbmcyKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZykpXG4gICAgICAucmVwbGFjZSgnJHtsYW5nM30nLCB0b0xhbmczKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZykpXG4gIH1cblxuICBnZXQgbG9nb3V0VXJsKCkge1xuICAgIHJldHVybiB0aGlzLmJhc2VMb2dvdXRVcmxcbiAgfVxuXG4gIGdldCBzZXR0aW5nc1VybCgpIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlU2V0dGluZ3NVcmwucmVwbGFjZShcbiAgICAgICcke2xhbmczfScsXG4gICAgICB0b0xhbmczKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZylcbiAgICApXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPR0lOX1VSTCkgcHJpdmF0ZSBiYXNlTG9naW5VcmxUb2tlbjogc3RyaW5nLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTE9HT1VUX1VSTCkgcHJpdmF0ZSBiYXNlTG9nb3V0VXJsVG9rZW46IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNFVFRJTkdTX1VSTCkgcHJpdmF0ZSBiYXNlU2V0dGluZ3NVcmxUb2tlbjogc3RyaW5nLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxuICApIHt9XG59XG4iXX0=
|
|
@@ -7,7 +7,6 @@ export const ES_SOURCE_SUMMARY = [
|
|
|
7
7
|
'resourceAbstractObject',
|
|
8
8
|
'overview',
|
|
9
9
|
'logo',
|
|
10
|
-
'codelist_status_text',
|
|
11
10
|
'link',
|
|
12
11
|
'linkProtocol',
|
|
13
12
|
'contactForResource*.organisation*',
|
|
@@ -16,6 +15,7 @@ export const ES_SOURCE_SUMMARY = [
|
|
|
16
15
|
'userSavedCount',
|
|
17
16
|
'cl_topic',
|
|
18
17
|
'cl_maintenanceAndUpdateFrequency',
|
|
18
|
+
'cl_presentationForm',
|
|
19
19
|
'MD_LegalConstraints*Object',
|
|
20
20
|
'qualityScore',
|
|
21
21
|
'allKeywords',
|
|
@@ -29,4 +29,4 @@ export const ES_QUERY_FIELDS_PRIORITY = {
|
|
|
29
29
|
'any.${searchLang}': 1,
|
|
30
30
|
uuid: 1,
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2VsYXN0aWNzZWFyY2gvY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsTUFBTTtJQUNOLElBQUk7SUFDSixPQUFPO0lBQ1AsV0FBVztJQUNYLHFCQUFxQjtJQUNyQix3QkFBd0I7SUFDeEIsVUFBVTtJQUNWLE1BQU07SUFDTixNQUFNO0lBQ04sY0FBYztJQUNkLG1DQUFtQztJQUNuQyx3QkFBd0I7SUFDeEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixVQUFVO0lBQ1Ysa0NBQWtDO0lBQ2xDLHFCQUFxQjtJQUNyQiw0QkFBNEI7SUFDNUIsY0FBYztJQUNkLGFBQWE7SUFDYixZQUFZO0NBQ2IsQ0FBQTtBQUdELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLG1DQUFtQyxFQUFFLENBQUM7SUFDdEMsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QixzQ0FBc0MsRUFBRSxDQUFDO0lBQ3pDLDZCQUE2QixFQUFFLENBQUM7SUFDaEMsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QixJQUFJLEVBQUUsQ0FBQztDQUNSLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRVNfU09VUkNFX1NVTU1BUlkgPSBbXG4gICd1dWlkJyxcbiAgJ2lkJyxcbiAgJ3RpdGxlJyxcbiAgJ3Jlc291cmNlKicsXG4gICdyZXNvdXJjZVRpdGxlT2JqZWN0JyxcbiAgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QnLFxuICAnb3ZlcnZpZXcnLFxuICAnbG9nbycsXG4gICdsaW5rJyxcbiAgJ2xpbmtQcm90b2NvbCcsXG4gICdjb250YWN0Rm9yUmVzb3VyY2UqLm9yZ2FuaXNhdGlvbionLFxuICAnY29udGFjdCoub3JnYW5pc2F0aW9uKicsXG4gICdjb250YWN0Ki5lbWFpbCcsXG4gICd1c2VyU2F2ZWRDb3VudCcsXG4gICdjbF90b3BpYycsXG4gICdjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeScsXG4gICdjbF9wcmVzZW50YXRpb25Gb3JtJyxcbiAgJ01EX0xlZ2FsQ29uc3RyYWludHMqT2JqZWN0JyxcbiAgJ3F1YWxpdHlTY29yZScsXG4gICdhbGxLZXl3b3JkcycsXG4gICdyZWNvcmRMaW5rJyxcbl1cblxuZXhwb3J0IHR5cGUgRXNRdWVyeUZpZWxkc1ByaW9yaXR5VHlwZSA9IFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbmV4cG9ydCBjb25zdCBFU19RVUVSWV9GSUVMRFNfUFJJT1JJVFkgPSB7XG4gICdyZXNvdXJjZVRpdGxlT2JqZWN0LiR7c2VhcmNoTGFuZ30nOiA1LFxuICAndGFnLiR7c2VhcmNoTGFuZ30nOiA0LFxuICAncmVzb3VyY2VBYnN0cmFjdE9iamVjdC4ke3NlYXJjaExhbmd9JzogMyxcbiAgJ2xpbmVhZ2VPYmplY3QuJHtzZWFyY2hMYW5nfSc6IDIsXG4gICdhbnkuJHtzZWFyY2hMYW5nfSc6IDEsXG4gIHV1aWQ6IDEsXG59XG4iXX0=
|
|
@@ -19,8 +19,12 @@ export class Gn4PlatformMapper {
|
|
|
19
19
|
userFromApi(apiUser) {
|
|
20
20
|
if (!apiUser)
|
|
21
21
|
return null;
|
|
22
|
-
const {
|
|
23
|
-
return {
|
|
22
|
+
const { addresses, emailAddresses, enabled, id, kind, lastLoginDate, security, primaryAddress, authorities, accountNonExpired, accountNonLocked, credentialsNonExpired, ...user } = apiUser;
|
|
23
|
+
return {
|
|
24
|
+
...user,
|
|
25
|
+
id: id.toString(),
|
|
26
|
+
email: emailAddresses ? emailAddresses[0] || '' : '',
|
|
27
|
+
};
|
|
24
28
|
}
|
|
25
29
|
keywordsFromApi(keywords, thesaurus, lang3) {
|
|
26
30
|
return keywords.map((keyword) => {
|
|
@@ -97,4 +101,4 @@ export class Gn4PlatformMapper {
|
|
|
97
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformMapper, decorators: [{
|
|
98
102
|
type: Injectable
|
|
99
103
|
}], ctorParameters: () => [{ type: i1.AvatarServiceInterface }] });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjL2xpYi9nbjQvcGxhdGZvcm0vZ240LXBsYXRmb3JtLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7O0FBYXJDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsYUFBcUM7UUFBckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO0lBQUcsQ0FBQztJQUU3RCxhQUFhLENBQUMsT0FBMkI7UUFDdkMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QixNQUFNLEVBQ0osSUFBSSxFQUNKLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixLQUFLLEVBQ0wsR0FBRyxJQUFJLEVBQ1IsR0FBRyxPQUFPLENBQUE7UUFFWCxPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLGNBQWMsQ0FBQyxJQUFJLENBQUM7YUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFjLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBcUI7UUFDL0IsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQTtRQUN6QixNQUFNLEVBQ0osT0FBTyxFQUNQLGNBQWMsRUFDZCxZ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QUFDLElBQUksQ0FBQztTQUNsQyxDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUNoQixZQUEwQjtRQUUxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3ZCLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWTtZQUN2QyxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDN0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUN4RCxVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVU7WUFDbkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1lBQ3JDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztZQUNqQyxVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVU7WUFDbkMsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO1NBQzdDLENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLDJCQUEyQixDQUMvQixnQkFBOEI7UUFFOUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUM5RCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQzFDLENBQUE7UUFFRCxPQUFPO1lBQ0wsR0FBRyxnQkFBZ0I7WUFDbkIsU0FBUyxFQUFFLGFBQWE7U0FDekIsQ0FBQTtJQUNILENBQUM7K0dBOUhVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWVSZXNwb25zZUFwaU1vZGVsLFxuICBVc2VyQXBpTW9kZWwsXG4gIFVzZXJGZWVkYmFja0RUT0FwaU1vZGVsLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC91c2VyL3VzZXIubW9kZWwnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEF2YXRhclNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBLZXl3b3JkLFxuICBVc2VyRmVlZGJhY2ssXG4gIFVzZXJGZWVkYmFja1ZpZXdNb2RlbCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgS2V5d29yZEFwaVJlc3BvbnNlLFxuICBUaGVzYXVydXNBcGlSZXNwb25zZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmltcG9ydCB7IEtleXdvcmRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR240UGxhdGZvcm1NYXBwZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF2YXRhclNlcnZpY2U6IEF2YXRhclNlcnZpY2VJbnRlcmZhY2UpIHt9XG5cbiAgdXNlckZyb21NZUFwaShhcGlVc2VyOiBNZVJlc3BvbnNlQXBpTW9kZWwpOiBPYnNlcnZhYmxlPFVzZXJNb2RlbCB8IG51bGw+IHtcbiAgICBpZiAoIWFwaVVzZXIpIHJldHVybiBvZihudWxsKVxuICAgIGNvbnN0IHtcbiAgICAgIGhhc2gsXG4gICAgICBncm91cHNXaXRoUmVnaXN0ZXJlZFVzZXIsXG4gICAgICBncm91cHNXaXRoRWRpdG9yLFxuICAgICAgZ3JvdXBzV2l0aFJldmlld2VyLFxuICAgICAgZ3JvdXBzV2l0aFVzZXJBZG1pbixcbiAgICAgIGFkbWluLFxuICAgICAgLi4udXNlclxuICAgIH0gPSBhcGlVc2VyXG5cbiAgICByZXR1cm4gdGhpcy5hdmF0YXJTZXJ2aWNlXG4gICAgICAuZ2V0UHJvZmlsZUljb24oaGFzaClcbiAgICAgIC5waXBlKG1hcCgocHJvZmlsZUljb24pID0+ICh7IC4uLnVzZXIsIHByb2ZpbGVJY29uIH0pIGFzIFVzZXJNb2RlbCkpXG4gIH1cblxuICB1c2VyRnJvbUFwaShhcGlVc2VyOiBVc2VyQXBpTW9kZWwpOiBVc2VyTW9kZWwge1xuICAgIGlmICghYXBpVXNlcikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgZW1haWxBZGRyZXNzZXMsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICBraW5kLFxuICAgICAgbGFzdExvZ2luRGF0ZSxcbiAgICAgIGFjY291bnROb25FeHBpcmVkLFxuICAgICAgYWNjb3VudE5vbkxvY2tlZCxcbiAgICAgIGlkLFxuICAgICAgY3JlZGVudGlhbHNOb25FeHBpcmVkLFxuICAgICAgLi4udXNlclxuICAgIH0gPSBhcGlVc2VyXG4gICAgcmV0dXJuIHsgLi4uYXBpVXNlciwgaWQ6IGlkLnRvU3RyaW5nKCkgfSBhcyBVc2VyTW9kZWxcbiAgfVxuXG4gIGtleXdvcmRzRnJvbUFwaShcbiAgICBrZXl3b3JkczogS2V5d29yZEFwaVJlc3BvbnNlW10sXG4gICAgdGhlc2F1cnVzOiBUaGVzYXVydXNBcGlSZXNwb25zZVtdLFxuICAgIGxhbmczPzogc3RyaW5nXG4gICk6IEtleXdvcmRbXSB7XG4gICAgcmV0dXJuIGtleXdvcmRzLm1hcCgoa2V5d29yZCk6IEtleXdvcmQgPT4ge1xuICAgICAgbGV0IGtleSA9IGtleXdvcmQudXJpXG4gICAgICAvLyBzb21ldGluZXMgR04gY2FuIHByZWZpeCBhbiBVUkkgd2l0aCBhbiBcImFsbCB0aGVzYXVydXNcIiBVUkk7IG9ubHkga2VlcCB0aGUgbGFzdCBvbmVcbiAgICAgIGlmIChrZXkuaW5kZXhPZignQEBAJykgPiAtMSkge1xuICAgICAgICBrZXkgPSBrZXkuc3BsaXQoJ0BAQCcpWzFdXG4gICAgICB9XG4gICAgICBjb25zdCBsYWJlbCA9XG4gICAgICAgIGxhbmczICYmIGxhbmczIGluIGtleXdvcmQudmFsdWVzID8ga2V5d29yZC52YWx1ZXNbbGFuZzNdIDoga2V5d29yZC52YWx1ZVxuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgICBsYW5nMyAmJiBsYW5nMyBpbiBrZXl3b3JkLmRlZmluaXRpb25zXG4gICAgICAgICAgPyBrZXl3b3JkLmRlZmluaXRpb25zW2xhbmczXVxuICAgICAgICAgIDoga2V5d29yZC5kZWZpbml0aW9uXG5cbiAgICAgIGNvbnN0IG1hdGNoZWRUaGVzYXVydXMgPSB0aGVzYXVydXMuZmluZChcbiAgICAgICAgKHRoZXMpID0+IGtleXdvcmQudGhlc2F1cnVzS2V5ID09PSB0aGVzLmtleVxuICAgICAgKVxuXG4gICAgICBsZXQgYmJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgICAgIGlmIChrZXl3b3JkLmNvb3JkV2VzdCkge1xuICAgICAgICBiYm94ID0gW1xuICAgICAgICAgIHBhcnNlRmxvYXQoa2V5d29yZC5jb29yZFdlc3QpLFxuICAgICAgICAgIHBhcnNlRmxvYXQoa2V5d29yZC5jb29yZFNvdXRoKSxcbiAgICAgICAgICBwYXJzZUZsb2F0KGtleXdvcmQuY29vcmRFYXN0KSxcbiAgICAgICAgICBwYXJzZUZsb2F0KGtleXdvcmQuY29vcmROb3J0aCksXG4gICAgICAgIF1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5LFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIHR5cGU6IG1hdGNoZWRUaGVzYXVydXM/LmRuYW1lIGFzIEtleXdvcmRUeXBlLFxuICAgICAgICB0aGVzYXVydXM6IHtcbiAgICAgICAgICBpZDogbWF0Y2hlZFRoZXNhdXJ1cz8ua2V5LFxuICAgICAgICAgIG5hbWU6IG1hdGNoZWRUaGVzYXVydXM/LnRpdGxlLFxuICAgICAgICAgIHVybDogbmV3IFVSTChtYXRjaGVkVGhlc2F1cnVzPy51cmwpLFxuICAgICAgICAgIHR5cGU6IG1hdGNoZWRUaGVzYXVydXM/LmRuYW1lIGFzIEtleXdvcmRUeXBlLFxuICAgICAgICB9LFxuICAgICAgICAuLi4oYmJveCAmJiB7IGJib3ggfSksXG4gICAgICB9IGFzIEtleXdvcmRcbiAgICB9KVxuICB9XG5cbiAgdXNlckZlZWRiYWNrc0Zyb21BcGkodXNlckZlZWRiYWNrOiBhbnkpOiBVc2VyRmVlZGJhY2sge1xuICAgIHJldHVybiB7XG4gICAgICB1dWlkOiB1c2VyRmVlZGJhY2sudXVpZCxcbiAgICAgIG1ldGFkYXRhVVVJRDogdXNlckZlZWRiYWNrLm1ldGFkYXRhVVVJRCxcbiAgICAgIGNvbW1lbnQ6IHVzZXJGZWVkYmFjay5jb21tZW50LFxuICAgICAgYXV0aG9yVXNlcklkOiB1c2VyRmVlZGJhY2suYXV0aG9yVXNlcklkLnRvU3RyaW5nKCksXG4gICAgICBhdXRob3JOYW1lOiB1c2VyRmVlZGJhY2suYXV0aG9yTmFtZSxcbiAgICAgIGF1dGhvckVtYWlsOiB1c2VyRmVlZGJhY2suYXV0aG9yRW1haWwsXG4gICAgICBwdWJsaXNoZWQ6IHVzZXJGZWVkYmFjay5wdWJsaXNoZWQsXG4gICAgICBwYXJlbnRVdWlkOiB1c2VyRmVlZGJhY2sucGFyZW50VXVpZCA/PyB1bmRlZmluZWQsXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh1c2VyRmVlZGJhY2suZGF0ZSksXG4gICAgfVxuICB9XG5cbiAgdXNlckZlZWRiYWNrc1RvQXBpKFxuICAgIHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrXG4gICk6IFBhcnRpYWw8VXNlckZlZWRiYWNrRFRPQXBpTW9kZWw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdXVpZDogdXNlckZlZWRiYWNrLnV1aWQsXG4gICAgICBtZXRhZGF0YVVVSUQ6IHVzZXJGZWVkYmFjay5tZXRhZGF0YVVVSUQsXG4gICAgICBjb21tZW50OiB1c2VyRmVlZGJhY2suY29tbWVudCxcbiAgICAgIGF1dGhvclVzZXJJZDogTnVtYmVyLnBhcnNlSW50KHVzZXJGZWVkYmFjay5hdXRob3JVc2VySWQpLFxuICAgICAgYXV0aG9yTmFtZTogdXNlckZlZWRiYWNrLmF1dGhvck5hbWUsXG4gICAgICBhdXRob3JFbWFpbDogdXNlckZlZWRiYWNrLmF1dGhvckVtYWlsLFxuICAgICAgcHVibGlzaGVkOiB1c2VyRmVlZGJhY2sucHVibGlzaGVkLFxuICAgICAgcGFyZW50VXVpZDogdXNlckZlZWRiYWNrLnBhcmVudFV1aWQsXG4gICAgICBkYXRlOiB1c2VyRmVlZGJhY2suZGF0ZS5nZXRUaW1lKCkudG9TdHJpbmcoKSxcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVVc2VyRmVlZGJhY2tWaWV3TW9kZWwoXG4gICAgYmFzZVVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrXG4gICk6IFByb21pc2U8VXNlckZlZWRiYWNrVmlld01vZGVsPiB7XG4gICAgY29uc3QgdXNlckF2YXRhclVybCA9IGF3YWl0IHRoaXMuYXZhdGFyU2VydmljZS5nZXRQcm9maWxlSWNvblVybChcbiAgICAgIGJhc2VVc2VyRmVlZGJhY2suYXV0aG9yVXNlcklkPy50b1N0cmluZygpXG4gICAgKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2VVc2VyRmVlZGJhY2ssXG4gICAgICBhdmF0YXJVcmw6IHVzZXJBdmF0YXJVcmwsXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjL2xpYi9nbjQvcGxhdGZvcm0vZ240LXBsYXRmb3JtLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7O0FBYXJDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsYUFBcUM7UUFBckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO0lBQUcsQ0FBQztJQUU3RCxhQUFhLENBQUMsT0FBMkI7UUFDdkMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QixNQUFNLEVBQ0osSUFBSSxFQUNKLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixLQUFLLEVBQ0wsR0FBRyxJQUFJLEVBQ1IsR0FBRyxPQUFPLENBQUE7UUFFWCxPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLGNBQWMsQ0FBQyxJQUFJLENBQUM7YUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFjLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBcUI7UUFDL0IsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQTtRQUN6QixNQUFNLEVBQ0osU0FBUyxFQUNULGNBQWMsRUFDZCxP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QUMsV0FBVztZQUNyQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVM7WUFDakMsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVLElBQUksU0FBUztZQUNoRCxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztTQUNsQyxDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUNoQixZQUEwQjtRQUUxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3ZCLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWTtZQUN2QyxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDN0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUN4RCxVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVU7WUFDbkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1lBQ3JDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztZQUNqQyxVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVU7WUFDbkMsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO1NBQzdDLENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLDJCQUEyQixDQUMvQixnQkFBOEI7UUFFOUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUM5RCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQzFDLENBQUE7UUFFRCxPQUFPO1lBQ0wsR0FBRyxnQkFBZ0I7WUFDbkIsU0FBUyxFQUFFLGFBQWE7U0FDekIsQ0FBQTtJQUNILENBQUM7K0dBdElVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWVSZXNwb25zZUFwaU1vZGVsLFxuICBVc2VyQXBpTW9kZWwsXG4gIFVzZXJGZWVkYmFja0RUT0FwaU1vZGVsLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC91c2VyL3VzZXIubW9kZWwnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEF2YXRhclNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBLZXl3b3JkLFxuICBVc2VyRmVlZGJhY2ssXG4gIFVzZXJGZWVkYmFja1ZpZXdNb2RlbCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgS2V5d29yZEFwaVJlc3BvbnNlLFxuICBUaGVzYXVydXNBcGlSZXNwb25zZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmltcG9ydCB7IEtleXdvcmRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR240UGxhdGZvcm1NYXBwZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF2YXRhclNlcnZpY2U6IEF2YXRhclNlcnZpY2VJbnRlcmZhY2UpIHt9XG5cbiAgdXNlckZyb21NZUFwaShhcGlVc2VyOiBNZVJlc3BvbnNlQXBpTW9kZWwpOiBPYnNlcnZhYmxlPFVzZXJNb2RlbCB8IG51bGw+IHtcbiAgICBpZiAoIWFwaVVzZXIpIHJldHVybiBvZihudWxsKVxuICAgIGNvbnN0IHtcbiAgICAgIGhhc2gsXG4gICAgICBncm91cHNXaXRoUmVnaXN0ZXJlZFVzZXIsXG4gICAgICBncm91cHNXaXRoRWRpdG9yLFxuICAgICAgZ3JvdXBzV2l0aFJldmlld2VyLFxuICAgICAgZ3JvdXBzV2l0aFVzZXJBZG1pbixcbiAgICAgIGFkbWluLFxuICAgICAgLi4udXNlclxuICAgIH0gPSBhcGlVc2VyXG5cbiAgICByZXR1cm4gdGhpcy5hdmF0YXJTZXJ2aWNlXG4gICAgICAuZ2V0UHJvZmlsZUljb24oaGFzaClcbiAgICAgIC5waXBlKG1hcCgocHJvZmlsZUljb24pID0+ICh7IC4uLnVzZXIsIHByb2ZpbGVJY29uIH0pIGFzIFVzZXJNb2RlbCkpXG4gIH1cblxuICB1c2VyRnJvbUFwaShhcGlVc2VyOiBVc2VyQXBpTW9kZWwpOiBVc2VyTW9kZWwge1xuICAgIGlmICghYXBpVXNlcikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB7XG4gICAgICBhZGRyZXNzZXMsXG4gICAgICBlbWFpbEFkZHJlc3NlcyxcbiAgICAgIGVuYWJsZWQsXG4gICAgICBpZCxcbiAgICAgIGtpbmQsXG4gICAgICBsYXN0TG9naW5EYXRlLFxuICAgICAgc2VjdXJpdHksXG4gICAgICBwcmltYXJ5QWRkcmVzcyxcbiAgICAgIGF1dGhvcml0aWVzLFxuICAgICAgYWNjb3VudE5vbkV4cGlyZWQsXG4gICAgICBhY2NvdW50Tm9uTG9ja2VkLFxuICAgICAgY3JlZGVudGlhbHNOb25FeHBpcmVkLFxuICAgICAgLi4udXNlclxuICAgIH0gPSBhcGlVc2VyXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udXNlcixcbiAgICAgIGlkOiBpZC50b1N0cmluZygpLFxuICAgICAgZW1haWw6IGVtYWlsQWRkcmVzc2VzID8gZW1haWxBZGRyZXNzZXNbMF0gfHwgJycgOiAnJyxcbiAgICB9IGFzIFVzZXJNb2RlbFxuICB9XG5cbiAga2V5d29yZHNGcm9tQXBpKFxuICAgIGtleXdvcmRzOiBLZXl3b3JkQXBpUmVzcG9uc2VbXSxcbiAgICB0aGVzYXVydXM6IFRoZXNhdXJ1c0FwaVJlc3BvbnNlW10sXG4gICAgbGFuZzM/OiBzdHJpbmdcbiAgKTogS2V5d29yZFtdIHtcbiAgICByZXR1cm4ga2V5d29yZHMubWFwKChrZXl3b3JkKTogS2V5d29yZCA9PiB7XG4gICAgICBsZXQga2V5ID0ga2V5d29yZC51cmlcbiAgICAgIC8vIHNvbWV0aW5lcyBHTiBjYW4gcHJlZml4IGFuIFVSSSB3aXRoIGFuIFwiYWxsIHRoZXNhdXJ1c1wiIFVSSTsgb25seSBrZWVwIHRoZSBsYXN0IG9uZVxuICAgICAgaWYgKGtleS5pbmRleE9mKCdAQEAnKSA+IC0xKSB7XG4gICAgICAgIGtleSA9IGtleS5zcGxpdCgnQEBAJylbMV1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGxhYmVsID1cbiAgICAgICAgbGFuZzMgJiYgbGFuZzMgaW4ga2V5d29yZC52YWx1ZXMgPyBrZXl3b3JkLnZhbHVlc1tsYW5nM10gOiBrZXl3b3JkLnZhbHVlXG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9XG4gICAgICAgIGxhbmczICYmIGxhbmczIGluIGtleXdvcmQuZGVmaW5pdGlvbnNcbiAgICAgICAgICA/IGtleXdvcmQuZGVmaW5pdGlvbnNbbGFuZzNdXG4gICAgICAgICAgOiBrZXl3b3JkLmRlZmluaXRpb25cblxuICAgICAgY29uc3QgbWF0Y2hlZFRoZXNhdXJ1cyA9IHRoZXNhdXJ1cy5maW5kKFxuICAgICAgICAodGhlcykgPT4ga2V5d29yZC50aGVzYXVydXNLZXkgPT09IHRoZXMua2V5XG4gICAgICApXG5cbiAgICAgIGxldCBiYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICAgICAgaWYgKGtleXdvcmQuY29vcmRXZXN0KSB7XG4gICAgICAgIGJib3ggPSBbXG4gICAgICAgICAgcGFyc2VGbG9hdChrZXl3b3JkLmNvb3JkV2VzdCksXG4gICAgICAgICAgcGFyc2VGbG9hdChrZXl3b3JkLmNvb3JkU291dGgpLFxuICAgICAgICAgIHBhcnNlRmxvYXQoa2V5d29yZC5jb29yZEVhc3QpLFxuICAgICAgICAgIHBhcnNlRmxvYXQoa2V5d29yZC5jb29yZE5vcnRoKSxcbiAgICAgICAgXVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXksXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgdHlwZTogbWF0Y2hlZFRoZXNhdXJ1cz8uZG5hbWUgYXMgS2V5d29yZFR5cGUsXG4gICAgICAgIHRoZXNhdXJ1czoge1xuICAgICAgICAgIGlkOiBtYXRjaGVkVGhlc2F1cnVzPy5rZXksXG4gICAgICAgICAgbmFtZTogbWF0Y2hlZFRoZXNhdXJ1cz8udGl0bGUsXG4gICAgICAgICAgdXJsOiBuZXcgVVJMKG1hdGNoZWRUaGVzYXVydXM/LnVybCksXG4gICAgICAgICAgdHlwZTogbWF0Y2hlZFRoZXNhdXJ1cz8uZG5hbWUgYXMgS2V5d29yZFR5cGUsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLihiYm94ICYmIHsgYmJveCB9KSxcbiAgICAgIH0gYXMgS2V5d29yZFxuICAgIH0pXG4gIH1cblxuICB1c2VyRmVlZGJhY2tzRnJvbUFwaSh1c2VyRmVlZGJhY2s6IGFueSk6IFVzZXJGZWVkYmFjayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHV1aWQ6IHVzZXJGZWVkYmFjay51dWlkLFxuICAgICAgbWV0YWRhdGFVVUlEOiB1c2VyRmVlZGJhY2subWV0YWRhdGFVVUlELFxuICAgICAgY29tbWVudDogdXNlckZlZWRiYWNrLmNvbW1lbnQsXG4gICAgICBhdXRob3JVc2VySWQ6IHVzZXJGZWVkYmFjay5hdXRob3JVc2VySWQudG9TdHJpbmcoKSxcbiAgICAgIGF1dGhvck5hbWU6IHVzZXJGZWVkYmFjay5hdXRob3JOYW1lLFxuICAgICAgYXV0aG9yRW1haWw6IHVzZXJGZWVkYmFjay5hdXRob3JFbWFpbCxcbiAgICAgIHB1Ymxpc2hlZDogdXNlckZlZWRiYWNrLnB1Ymxpc2hlZCxcbiAgICAgIHBhcmVudFV1aWQ6IHVzZXJGZWVkYmFjay5wYXJlbnRVdWlkID8/IHVuZGVmaW5lZCxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHVzZXJGZWVkYmFjay5kYXRlKSxcbiAgICB9XG4gIH1cblxuICB1c2VyRmVlZGJhY2tzVG9BcGkoXG4gICAgdXNlckZlZWRiYWNrOiBVc2VyRmVlZGJhY2tcbiAgKTogUGFydGlhbDxVc2VyRmVlZGJhY2tEVE9BcGlNb2RlbD4ge1xuICAgIHJldHVybiB7XG4gICAgICB1dWlkOiB1c2VyRmVlZGJhY2sudXVpZCxcbiAgICAgIG1ldGFkYXRhVVVJRDogdXNlckZlZWRiYWNrLm1ldGFkYXRhVVVJRCxcbiAgICAgIGNvbW1lbnQ6IHVzZXJGZWVkYmFjay5jb21tZW50LFxuICAgICAgYXV0aG9yVXNlcklkOiBOdW1iZXIucGFyc2VJbnQodXNlckZlZWRiYWNrLmF1dGhvclVzZXJJZCksXG4gICAgICBhdXRob3JOYW1lOiB1c2VyRmVlZGJhY2suYXV0aG9yTmFtZSxcbiAgICAgIGF1dGhvckVtYWlsOiB1c2VyRmVlZGJhY2suYXV0aG9yRW1haWwsXG4gICAgICBwdWJsaXNoZWQ6IHVzZXJGZWVkYmFjay5wdWJsaXNoZWQsXG4gICAgICBwYXJlbnRVdWlkOiB1c2VyRmVlZGJhY2sucGFyZW50VXVpZCxcbiAgICAgIGRhdGU6IHVzZXJGZWVkYmFjay5kYXRlLmdldFRpbWUoKS50b1N0cmluZygpLFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVVzZXJGZWVkYmFja1ZpZXdNb2RlbChcbiAgICBiYXNlVXNlckZlZWRiYWNrOiBVc2VyRmVlZGJhY2tcbiAgKTogUHJvbWlzZTxVc2VyRmVlZGJhY2tWaWV3TW9kZWw+IHtcbiAgICBjb25zdCB1c2VyQXZhdGFyVXJsID0gYXdhaXQgdGhpcy5hdmF0YXJTZXJ2aWNlLmdldFByb2ZpbGVJY29uVXJsKFxuICAgICAgYmFzZVVzZXJGZWVkYmFjay5hdXRob3JVc2VySWQ/LnRvU3RyaW5nKClcbiAgICApXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYmFzZVVzZXJGZWVkYmFjayxcbiAgICAgIGF2YXRhclVybDogdXNlckF2YXRhclVybCxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|