@po-ui/ng-components 17.0.0 → 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-accordion/po-accordion-base.component.mjs +36 -2
- package/esm2022/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.mjs +2 -2
- package/esm2022/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.mjs +1 -1
- package/esm2022/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.mjs +1 -1
- package/esm2022/lib/components/po-accordion/po-accordion-manager/po-accordion-manager.component.mjs +1 -1
- package/esm2022/lib/components/po-avatar/po-avatar-base.component.mjs +1 -1
- package/esm2022/lib/components/po-badge/po-badge-base.component.mjs +2 -2
- package/esm2022/lib/components/po-breadcrumb/po-breadcrumb-base.component.mjs +17 -2
- package/esm2022/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.mjs +2 -2
- package/esm2022/lib/components/po-button/po-button-base.component.mjs +47 -2
- package/esm2022/lib/components/po-button-group/po-button-group-base.component.mjs +36 -2
- package/esm2022/lib/components/po-calendar/po-calendar-base.component.mjs +1 -1
- package/esm2022/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.mjs +1 -1
- package/esm2022/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.mjs +2 -2
- package/esm2022/lib/components/po-chart/po-chart-base.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-container.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.mjs +1 -1
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.mjs +2 -2
- package/esm2022/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.mjs +2 -2
- package/esm2022/lib/components/po-chart/po-chart-legend/po-chart-legend.component.mjs +1 -1
- package/esm2022/lib/components/po-container/po-container-base.component.mjs +18 -2
- package/esm2022/lib/components/po-disclaimer/po-disclaimer-base.component.mjs +1 -1
- package/esm2022/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.mjs +1 -1
- package/esm2022/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.mjs +1 -1
- package/esm2022/lib/components/po-divider/po-divider-base.component.mjs +15 -2
- package/esm2022/lib/components/po-dropdown/po-dropdown-base.component.mjs +30 -2
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.mjs +2 -2
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.mjs +1 -1
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +80 -33
- package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.mjs +5 -3
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-checkbox/po-checkbox-base.component.mjs +24 -2
- package/esm2022/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-clean/po-clean-base.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +38 -2
- package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +2 -6
- package/esm2022/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +31 -2
- package/esm2022/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +6 -4
- package/esm2022/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-decimal/po-decimal.component.mjs +3 -4
- package/esm2022/lib/components/po-field/po-email/po-email.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-field-container/po-field-container.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-field-validate.model.mjs +2 -2
- package/esm2022/lib/components/po-field/po-field.model.mjs +2 -2
- package/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +31 -2
- package/esm2022/lib/components/po-field/po-login/po-login.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +4 -3
- package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +29 -2
- package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-number/po-number.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-password/po-password.component.mjs +3 -3
- package/esm2022/lib/components/po-field/po-radio/po-radio.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +27 -2
- package/esm2022/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.mjs +7 -5
- package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.mjs +8 -5
- package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-select/po-select.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-switch/po-switch.component.mjs +28 -3
- package/esm2022/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-upload/po-upload-base.component.mjs +2 -2
- package/esm2022/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.mjs +2 -2
- package/esm2022/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.mjs +1 -1
- package/esm2022/lib/components/po-field/po-url/po-url.component.mjs +2 -2
- package/esm2022/lib/components/po-gauge/po-gauge-base.component.mjs +1 -1
- package/esm2022/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.mjs +1 -1
- package/esm2022/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.mjs +1 -1
- package/esm2022/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.mjs +1 -1
- package/esm2022/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.mjs +1 -1
- package/esm2022/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.mjs +1 -1
- package/esm2022/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.mjs +1 -1
- package/esm2022/lib/components/po-grid/po-grid-cell/po-grid-cell.component.mjs +6 -4
- package/esm2022/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.mjs +1 -1
- package/esm2022/lib/components/po-grid/po-grid-head/po-grid-head.component.mjs +1 -1
- package/esm2022/lib/components/po-grid/po-grid.component.mjs +9 -6
- package/esm2022/lib/components/po-icon/po-icon.component.mjs +1 -1
- package/esm2022/lib/components/po-image/po-image-base.component.mjs +1 -1
- package/esm2022/lib/components/po-info/po-info-base.component.mjs +1 -1
- package/esm2022/lib/components/po-label/po-label.component.mjs +1 -1
- package/esm2022/lib/components/po-link/po-link-base.component.mjs +23 -2
- package/esm2022/lib/components/po-list-view/po-list-view-base.component.mjs +1 -1
- package/esm2022/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.mjs +1 -1
- package/esm2022/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.mjs +1 -1
- package/esm2022/lib/components/po-list-view/po-list-view.component.mjs +8 -5
- package/esm2022/lib/components/po-listbox/po-item-list/po-item-list-base.component.mjs +2 -2
- package/esm2022/lib/components/po-listbox/po-listbox-base.component.mjs +2 -2
- package/esm2022/lib/components/po-listbox/po-search-list/po-search-list.component.mjs +1 -1
- package/esm2022/lib/components/po-loading/po-loading-base.component.mjs +1 -1
- package/esm2022/lib/components/po-loading/po-loading-icon/po-loading-icon.component.mjs +1 -1
- package/esm2022/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.mjs +24 -2
- package/esm2022/lib/components/po-logo/po-logo.component.mjs +1 -1
- package/esm2022/lib/components/po-menu/po-menu-base.component.mjs +43 -2
- package/esm2022/lib/components/po-menu/po-menu-filter/po-menu-filter.component.mjs +1 -1
- package/esm2022/lib/components/po-menu/po-menu-item/po-menu-item.component.mjs +1 -1
- package/esm2022/lib/components/po-menu-panel/po-menu-panel-base.component.mjs +1 -1
- package/esm2022/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.mjs +1 -1
- package/esm2022/lib/components/po-modal/po-modal-base.component.mjs +21 -2
- package/esm2022/lib/components/po-modal/po-modal-footer/po-modal-footer.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-base.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.mjs +1 -1
- package/esm2022/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.mjs +1 -1
- package/esm2022/lib/components/po-overlay/po-overlay-base.component.mjs +2 -2
- package/esm2022/lib/components/po-page/po-page-default/po-page-default-base.component.mjs +1 -1
- package/esm2022/lib/components/po-page/po-page-detail/po-page-detail-base.component.mjs +1 -1
- package/esm2022/lib/components/po-page/po-page-edit/po-page-edit-base.component.mjs +1 -1
- package/esm2022/lib/components/po-page/po-page-header/po-page-header-base.component.mjs +1 -1
- package/esm2022/lib/components/po-page/po-page-list/po-page-list-base.component.mjs +1 -1
- package/esm2022/lib/components/po-page/po-page-slide/po-page-slide-base.component.mjs +2 -2
- package/esm2022/lib/components/po-popover/po-popover-base.component.mjs +1 -1
- package/esm2022/lib/components/po-popup/po-popup-base.component.mjs +39 -2
- package/esm2022/lib/components/po-progress/po-progress-bar/po-progress-bar.component.mjs +1 -1
- package/esm2022/lib/components/po-progress/po-progress-base.component.mjs +21 -2
- package/esm2022/lib/components/po-search/po-search-base.component.mjs +33 -2
- package/esm2022/lib/components/po-slide/po-slide-base.component.mjs +2 -2
- package/esm2022/lib/components/po-slide/po-slide-circles/po-slide-circles.component.mjs +1 -1
- package/esm2022/lib/components/po-slide/po-slide-control/po-slide-control.component.mjs +1 -1
- package/esm2022/lib/components/po-slide/po-slide-item/po-slide-item.component.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-step/po-step.component.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-stepper-base.component.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +33 -2
- package/esm2022/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-column-label/po-table-column-label.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-column-link/po-table-column-link.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +6 -4
- package/esm2022/lib/components/po-table/po-table-column-template/po-table-column-template.directive.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +5 -4
- package/esm2022/lib/components/po-table/po-table-icon/po-table-icon.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.mjs +2 -2
- package/esm2022/lib/components/po-table/po-table-row-template/po-table-row-template.directive.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.mjs +1 -1
- package/esm2022/lib/components/po-tabs/po-tab/po-tab-base.component.mjs +1 -1
- package/esm2022/lib/components/po-tabs/po-tab-button/po-tab-button.component.mjs +1 -1
- package/esm2022/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.mjs +1 -1
- package/esm2022/lib/components/po-tabs/po-tabs-base.component.mjs +29 -2
- package/esm2022/lib/components/po-tag/po-tag-base.component.mjs +45 -2
- package/esm2022/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.mjs +1 -1
- package/esm2022/lib/components/po-toolbar/po-toolbar-base.component.mjs +1 -1
- package/esm2022/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.mjs +2 -2
- package/esm2022/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.mjs +2 -2
- package/esm2022/lib/components/po-tree-view/po-tree-view-base.component.mjs +1 -1
- package/esm2022/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.mjs +1 -1
- package/esm2022/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.mjs +12 -6
- package/esm2022/lib/components/po-widget/po-widget-base.component.mjs +28 -2
- package/esm2022/lib/directives/po-tooltip/po-tooltip-base.directive.mjs +17 -2
- package/fesm2022/po-ui-ng-components.mjs +1018 -239
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-accordion/po-accordion-base.component.d.ts +34 -0
- package/lib/components/po-breadcrumb/po-breadcrumb-base.component.d.ts +15 -0
- package/lib/components/po-button/po-button-base.component.d.ts +45 -0
- package/lib/components/po-button-group/po-button-group-base.component.d.ts +34 -0
- package/lib/components/po-container/po-container-base.component.d.ts +16 -0
- package/lib/components/po-divider/po-divider-base.component.d.ts +13 -0
- package/lib/components/po-dropdown/po-dropdown-base.component.d.ts +28 -0
- package/lib/components/po-field/po-checkbox/po-checkbox-base.component.d.ts +22 -0
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +36 -0
- package/lib/components/po-field/po-combo/po-combo.component.d.ts +0 -4
- package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +29 -0
- package/lib/components/po-field/po-decimal/po-decimal.component.d.ts +0 -1
- package/lib/components/po-field/po-email/po-email.component.d.ts +1 -1
- package/lib/components/po-field/po-input/po-input-base.component.d.ts +29 -0
- package/lib/components/po-field/po-login/po-login.component.d.ts +1 -1
- package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +27 -0
- package/lib/components/po-field/po-password/po-password.component.d.ts +1 -1
- package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +25 -0
- package/lib/components/po-field/po-switch/po-switch.component.d.ts +25 -0
- package/lib/components/po-field/po-url/po-url.component.d.ts +1 -1
- package/lib/components/po-link/po-link-base.component.d.ts +21 -0
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +22 -0
- package/lib/components/po-menu/po-menu-base.component.d.ts +41 -0
- package/lib/components/po-modal/po-modal-base.component.d.ts +19 -0
- package/lib/components/po-popup/po-popup-base.component.d.ts +37 -0
- package/lib/components/po-progress/po-progress-base.component.d.ts +19 -0
- package/lib/components/po-search/po-search-base.component.d.ts +31 -0
- package/lib/components/po-table/po-table-base.component.d.ts +31 -0
- package/lib/components/po-tabs/po-tabs-base.component.d.ts +27 -0
- package/lib/components/po-tag/po-tag-base.component.d.ts +43 -0
- package/lib/components/po-widget/po-widget-base.component.d.ts +26 -0
- package/lib/directives/po-tooltip/po-tooltip-base.directive.d.ts +15 -0
- package/package.json +15 -14
- package/po-ui-ng-components-17.1.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-17.0.0.tgz +0 -0
|
@@ -104,6 +104,37 @@ export const poTableLiteralsDefault = {
|
|
|
104
104
|
*
|
|
105
105
|
* Caso a largura de todas as colunas forem definidas e o total ultrapassar o tamanho tabela, será exibido um *scroll* na horizontal para a
|
|
106
106
|
* completa visualização dos dados.
|
|
107
|
+
*
|
|
108
|
+
* #### Tokens customizáveis
|
|
109
|
+
*
|
|
110
|
+
* É possível alterar o estilo do componente usando os seguintes tokens (CSS):
|
|
111
|
+
*
|
|
112
|
+
* > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).
|
|
113
|
+
*
|
|
114
|
+
* | Propriedade | Descrição | Valor Padrão |
|
|
115
|
+
* |----------------------------------------|-------------------------------------------------------|---------------------------------------------------|
|
|
116
|
+
* | **Default Values** | | |
|
|
117
|
+
* | `--font-family` | Família tipográfica usada | `var(--font-family-theme)` |
|
|
118
|
+
* | `--background-color` | Cor de background | `var(--color-neutral-light-00)` |
|
|
119
|
+
* | `--color` | Cor principal da table | `var(--color-neutral-dark-95)` |
|
|
120
|
+
* | `--background-striped-color` | Cor do background quando striped | `var(--color-neutral-light-05)` |
|
|
121
|
+
* | `--color-line` | Cor das linhas | `var(--color-neutral-mid-40)` |
|
|
122
|
+
* | **Hover** | | |
|
|
123
|
+
* | `--color-hover` | Cor principal no estado hover | `var(--color-action-hover)` |
|
|
124
|
+
* | `--background-color-hover` | Cor de background no estado hover | `var(--color-brand-01-lighter)` |
|
|
125
|
+
* | **Focused** | | |
|
|
126
|
+
* | `--outline-color-focused` | Cor do outline do estado de focus | `var(--color-action-focus)` |
|
|
127
|
+
* | **Disabled** | | |
|
|
128
|
+
* | `--color-disabled` | Cor principal no estado disabled | `var(--color-neutral-mid-40)` |
|
|
129
|
+
* | **Headline** | | |
|
|
130
|
+
* | `--background-color-headline` | Cor do cabeçalho | `var(--color-neutral-light-10)` |
|
|
131
|
+
* | `--font-weight-headline` | Peso da fonte do cabeçalho | `var(--font-weight-bold)` |
|
|
132
|
+
* | **Selected** | | |
|
|
133
|
+
* | `--background-color-selected` | Cor de background no estado de selecionado | `var(--color-brand-01-lightest)` |
|
|
134
|
+
* | **Actived** | | |
|
|
135
|
+
* | `--color-actived` | Cor do texto no estado de selecionado | `var(--color-neutral-dark-90)` |
|
|
136
|
+
* | `--background-color-actived` | Cor de background no estado de selecionado | `var(--color-brand-01-light)` |
|
|
137
|
+
*
|
|
107
138
|
*/
|
|
108
139
|
export class PoTableBaseComponent {
|
|
109
140
|
poDate;
|
|
@@ -1112,7 +1143,7 @@ export class PoTableBaseComponent {
|
|
|
1112
1143
|
});
|
|
1113
1144
|
}
|
|
1114
1145
|
static ɵfac = function PoTableBaseComponent_Factory(t) { return new (t || PoTableBaseComponent)(i0.ɵɵdirectiveInject(i1.PoDateService), i0.ɵɵdirectiveInject(i2.PoLanguageService), i0.ɵɵdirectiveInject(i3.PoTableService)); };
|
|
1115
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTableBaseComponent, inputs: { hideColumnsManager: ["p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideBatchActions: ["p-hide-batch-actions", "hideBatchActions", convertToBoolean], hideActionFixedColumns: ["p-hide-action-fixed-columns", "hideActionFixedColumns"], hideTableSearch: ["p-hide-table-search", "hideTableSearch", convertToBoolean], autoCollapse: ["p-auto-collapse", "autoCollapse", convertToBoolean], loadingShowMore: ["p-loading-show-more", "loadingShowMore", convertToBoolean], sort: ["p-sort", "sort", convertToBoolean], showMoreDisabled: ["p-show-more-disabled", "showMoreDisabled", convertToBoolean], striped: ["p-striped", "striped", convertToBoolean], hideSelectAll: ["p-hide-select-all", "hideSelectAll", convertToBoolean], singleSelect: ["p-single-select", "singleSelect", convertToBoolean], selectableEntireLine: ["p-selectable-entire-line", "selectableEntireLine", convertToBoolean], actionRight: ["p-actions-right", "actionRight", convertToBoolean], maxColumns: ["p-max-columns", "maxColumns"], filterType: ["p-filter-type", "filterType"], items: ["p-items", "items"], columns: ["p-columns", "columns"], container: ["p-container", "container"], paramDeleteApi: ["p-param-delete-api", "paramDeleteApi"], height: ["p-height", "height"], hideDetail: ["p-hide-detail", "hideDetail"], literals: ["p-literals", "literals"], loading: ["p-loading", "loading"], actions: ["p-actions", "actions"], selectable: ["p-selectable", "selectable"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], infiniteScrollDistance: ["p-infinite-scroll-distance", "infiniteScrollDistance"], serviceApi: ["p-service-api", "serviceApi"], serviceDeleteApi: ["p-service-delete", "serviceDeleteApi"], spacing: ["p-spacing", "spacing"], filteredColumns: ["p-filtered-columns", "filteredColumns"], draggable: ["p-draggable", "draggable"] }, outputs: { allSelected: "p-all-selected", allUnselected: "p-all-unselected", collapsed: "p-collapsed", expanded: "p-expanded", eventDelete: "p-delete-items", selected: "p-selected", showMore: "p-show-more", sortBy: "p-sort-by", unselected: "p-unselected", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature] });
|
|
1146
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTableBaseComponent, inputs: { hideColumnsManager: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], hideBatchActions: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-batch-actions", "hideBatchActions", convertToBoolean], hideActionFixedColumns: [i0.ɵɵInputFlags.None, "p-hide-action-fixed-columns", "hideActionFixedColumns"], hideTableSearch: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-table-search", "hideTableSearch", convertToBoolean], autoCollapse: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-auto-collapse", "autoCollapse", convertToBoolean], loadingShowMore: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-loading-show-more", "loadingShowMore", convertToBoolean], sort: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-sort", "sort", convertToBoolean], showMoreDisabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-show-more-disabled", "showMoreDisabled", convertToBoolean], striped: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-striped", "striped", convertToBoolean], hideSelectAll: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-select-all", "hideSelectAll", convertToBoolean], singleSelect: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-single-select", "singleSelect", convertToBoolean], selectableEntireLine: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-selectable-entire-line", "selectableEntireLine", convertToBoolean], actionRight: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-actions-right", "actionRight", convertToBoolean], maxColumns: [i0.ɵɵInputFlags.None, "p-max-columns", "maxColumns"], filterType: [i0.ɵɵInputFlags.None, "p-filter-type", "filterType"], items: [i0.ɵɵInputFlags.None, "p-items", "items"], columns: [i0.ɵɵInputFlags.None, "p-columns", "columns"], container: [i0.ɵɵInputFlags.None, "p-container", "container"], paramDeleteApi: [i0.ɵɵInputFlags.None, "p-param-delete-api", "paramDeleteApi"], height: [i0.ɵɵInputFlags.None, "p-height", "height"], hideDetail: [i0.ɵɵInputFlags.None, "p-hide-detail", "hideDetail"], literals: [i0.ɵɵInputFlags.None, "p-literals", "literals"], loading: [i0.ɵɵInputFlags.None, "p-loading", "loading"], actions: [i0.ɵɵInputFlags.None, "p-actions", "actions"], selectable: [i0.ɵɵInputFlags.None, "p-selectable", "selectable"], infiniteScroll: [i0.ɵɵInputFlags.None, "p-infinite-scroll", "infiniteScroll"], infiniteScrollDistance: [i0.ɵɵInputFlags.None, "p-infinite-scroll-distance", "infiniteScrollDistance"], serviceApi: [i0.ɵɵInputFlags.None, "p-service-api", "serviceApi"], serviceDeleteApi: [i0.ɵɵInputFlags.None, "p-service-delete", "serviceDeleteApi"], spacing: [i0.ɵɵInputFlags.None, "p-spacing", "spacing"], filteredColumns: [i0.ɵɵInputFlags.None, "p-filtered-columns", "filteredColumns"], draggable: [i0.ɵɵInputFlags.None, "p-draggable", "draggable"] }, outputs: { allSelected: "p-all-selected", allUnselected: "p-all-unselected", collapsed: "p-collapsed", expanded: "p-expanded", eventDelete: "p-delete-items", selected: "p-selected", showMore: "p-show-more", sortBy: "p-sort-by", unselected: "p-unselected", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature] });
|
|
1116
1147
|
}
|
|
1117
1148
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableBaseComponent, [{
|
|
1118
1149
|
type: Directive
|
|
@@ -1246,4 +1277,4 @@ export class PoTableBaseComponent {
|
|
|
1246
1277
|
type: Input,
|
|
1247
1278
|
args: ['p-draggable']
|
|
1248
1279
|
}] }); })();
|
|
1249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSTVHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQVdyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLEVBQUUsRUFBbUI7UUFDbkIsU0FBUyxFQUFFLHlCQUF5QjtRQUNwQyxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsYUFBYSxFQUFFLGdCQUFnQjtRQUMvQixlQUFlLEVBQUUsbUJBQW1CO1FBQ3BDLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFlBQVksRUFBRSxnQkFBZ0I7UUFD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QXBDLEtBQUs7bUJBQUMsY0FBYztZQXFCVyxjQUFjO2tCQUE3QyxLQUFLO21CQUFDLG1CQUFtQjtZQWtCZSxzQkFBc0I7a0JBQTlELEtBQUs7bUJBQUMsNEJBQTRCO1lBa0NQLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQXlCUyxnQkFBZ0I7a0JBQTlDLEtBQUs7bUJBQUMsa0JBQWtCO1lBc0JELE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQXFCZSxlQUFlO2tCQUEvQyxLQUFLO21CQUFDLG9CQUFvQjtZQWdFRCxTQUFTO2tCQUFsQyxLQUFLO21CQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNhcGl0YWxpemVGaXJzdExldHRlciwgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YsIHNvcnRWYWx1ZXMgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9TZWFyY2hGaWx0ZXJNb2RlIH0gZnJvbSAnLi4vcG8tc2VhcmNoL2VudW0vcG8tc2VhcmNoLWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNvcnRUeXBlIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1jb2x1bW4tc29ydC10eXBlLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNwYWNpbmcgfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLXNwYWNpbmcuZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlQWN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNvcnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLXNvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlRmlsdGVyZWRJdGVtc1BhcmFtcyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1maWx0ZXJlZC1pdGVtcy1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZVJlc3BvbnNlQXBpIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLXJlc3BvbnNlLWFwaS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLXRhYmxlLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBRdWVyeVBhcmFtc1R5cGUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xuXG5leHBvcnQgY29uc3QgcG9UYWJsZUNvbnRhaW5lciA9IFsnYm9yZGVyJywgJ3NoYWRvdyddO1xuZXhwb3J0IGNvbnN0IHBvVGFibGVDb250YWluZXJEZWZhdWx0ID0gJ2JvcmRlcic7XG5leHBvcnQgY29uc3QgcG9UYWJsZVBhcmFtRGVsZXRlQXBpID0gJ2lkJztcblxuZXhwb3J0IGNvbnN0IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9UYWJsZUxpdGVyYWxzPntcbiAgICBub0NvbHVtbnM6ICdDb2x1bW5zIGFyZSBub3QgZGVmaW5lZCcsXG4gICAgbm9EYXRhOiAnTm8gZGF0YSBmb3VuZCcsXG4gICAgbm9JdGVtOiAnTm8gc2VsZWN0ZWQgaXRlbScsXG4gICAgb25lSXRlbTogJzEgc2VsZWN0ZWQgaXRlbScsXG4gICAgbXVsdGlwbGVJdGVtczogJ3NlbGVjdGVkIGl0ZW1zJyxcbiAgICBub1Zpc2libGVDb2x1bW46ICdObyB2aXNpYmxlIGNvbHVtbicsXG4gICAgbG9hZGluZ0RhdGE6ICdMb2FkaW5nJyxcbiAgICBsb2FkTW9yZURhdGE6ICdMb2FkIG1vcmUgZGF0YScsXG4gICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ1NlZSBjb21wbGV0ZSBzdWJ0aXRsZScsXG4gICAgY29tcGxldGVTdWJ0aXRsZTogJ0NvbXBsZXRlIHN1YnRpdGxlJyxcbiAgICBjb2x1bW5zTWFuYWdlcjogJ0NvbHVtbnMgbWFuYWdlcicsXG4gICAgYm9keURlbGV0ZTogJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBpdGVtPycsXG4gICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICBkZWxldGU6ICdEZWxldGUnLFxuICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICdJdGVtcyByZW1vdmVkIHN1Y2Nlc3NmdWxseScsXG4gICAgZGVsZXRlQXBpRXJyb3I6ICdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyJ1xuICB9LFxuICBlczogPFBvVGFibGVMaXRlcmFscz57XG4gICAgbm9Db2x1bW5zOiAnQ29sdW1uYXMgbm8gZGVmaW5pZGFzJyxcbiAgICBub0RhdGE6ICdEYXRvcyBubyBlbmNvbnRyYWRvcycsXG4gICAgbm9JdGVtOiAnTmluZ8O6biBlbGVtZW50byBzZWxlY2Npb25hZG8nLFxuICAgIG9uZUl0ZW06ICcxIGVsZW1lbnRvIHNlbGVjY2lvbmFkbycsXG4gICAgbXVsdGlwbGVJdGVtczogJ2VsZW1lbnRvcyBzZWxlY2Npb25hZG9zJyxcbiAgICBub1Zpc2libGVDb2x1bW46ICdTaW4gY29sdW1uYXMgdmlzaWJsZXMnLFxuICAgIGxvYWRpbmdEYXRhOiAnQ2FyZ2FuZG8gZGF0b3MnLFxuICAgIGxvYWRNb3JlRGF0YTogJ0NhcmdhciBtw6FzIHJlc3VsdGFkb3MnLFxuICAgIHNlZUNvbXBsZXRlU3VidGl0bGU6ICdWZXIgc3VidGl0dWxvIGNvbXBsZXRvJyxcbiAgICBjb21wbGV0ZVN1YnRpdGxlOiAnU3VidGl0dWxvIGNvbXBsZXRvJyxcbiAgICBjb2x1bW5zTWFuYWdlcjogJ0dlcmVudGUgZGUgY29sdW1uYScsXG4gICAgYm9keURlbGV0ZTogJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGUgZWxlbWVudG8/JyxcbiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgZGVsZXRlOiAnQm9ycmFyJyxcbiAgICBkZWxldGVTdWNjZXNzZnVsOiAnRWxlbWVudG9zIGVsaW1pbmFkb3MgY29uIMOpeGl0bycsXG4gICAgZGVsZXRlQXBpRXJyb3I6ICdPY3VycmnDsyB1biBlcnJvciBpbmVzcGVyYWRvLCBpbnTDqW50YWxvIGRlIG51ZXZvIG3DoXMgdGFyZGUnXG4gIH0sXG4gIHB0OiA8UG9UYWJsZUxpdGVyYWxzPntcbiAgICBub0NvbHVtbnM6ICdOZW5odW1hIGRlZmluacOnw6NvIGRlIGNvbHVuYXMnLFxuICAgIG5vRGF0YTogJ05lbmh1bSBkYWRvIGVuY29udHJhZG8nLFxuICAgIG5vVmlzaWJsZUNvbHVtbjogJ05lbmh1bWEgY29sdW5hIHZpc8OtdmVsJyxcbiAgICBub0l0ZW06ICdOZW5odW0gaXRlbSBzZWxlY2lvbmFkbycsXG4gICAgb25lSXRlbTogJzEgaXRlbSBzZWxlY2lvbmFkbycsXG4gICAgbXVsdGlwbGVJdGVtczogJ2l0ZW5zIHNlbGVjaW9uYWRvcycsXG4gICAgbG9hZGluZ0RhdGE6ICdDYXJyZWdhbmRvJyxcbiAgICBsb2FkTW9yZURhdGE6ICdDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3MnLFxuICAgIHNlZUNvbXBsZXRlU3VidGl0bGU6ICdWZXIgbGVnZW5kYSBjb21wbGV0YScsXG4gICAgY29tcGxldGVTdWJ0aXRsZTogJ0xlZ2VuZGEgY29tcGxldGEnLFxuICAgIGNvbHVtbnNNYW5hZ2VyOiAnR2VyZW5jaWFkb3IgZGUgY29sdW5hcycsXG4gICAgYm9keURlbGV0ZTogJ0Rlc2VqYSByZWFsbWVudGUgZXhjbHVpciBlc3NlIGl0ZW0/JyxcbiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAgZGVsZXRlOiAnRXhjbHVpcicsXG4gICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ0l0ZW5zIHJlbW92aWRvcyBjb20gc3VjZXNzbycsXG4gICAgZGVsZXRlQXBpRXJyb3I6ICdPY29ycmV1IHVtIGVycm8gaW5lc3BlcmFkbywgdGVudGUgbm92YW1lbnRlIG1haXMgdGFyZGUhJ1xuICB9LFxuICBydTogPFBvVGFibGVMaXRlcmFscz57XG4gICAgbm9Db2x1bW5zOiAn0J3QtdGCINC+0L/RgNC10LTQtdC70LXQvdC40Y8g0YHRgtC+0LvQsdGG0LAnLFxuICAgIG5vRGF0YTogJ9CU0LDQvdC90YvQtSDQvdC1INC90LDQudC00LXQvdGLJyxcbiAgICBub0l0ZW06ICfQndC10YIg0LLRi9Cx0YDQsNC90L3QvtCz0L4g0Y3Qu9C10LzQtdC90YLQsCcsXG4gICAgb25lSXRlbTogJzEg0Y3Qu9C10LzQtdC90YIg0LLRi9Cx0YDQsNC9JyxcbiAgICBtdWx0aXBsZUl0ZW1zOiAn0LLRi9Cx0YDQsNC90L3Ri9C1INGN0LvQtdC80LXQvdGC0YsnLFxuICAgIG5vVmlzaWJsZUNvbHVtbjogJ9C90LXRgiDQstC40LTQuNC80YvRhSDRgdGC0L7Qu9Cx0YbQvtCyJyxcbiAgICBsb2FkaW5nRGF0YTogJ9CX0LDQs9GA0YPQt9C60LAnLFxuICAgIGxvYWRNb3JlRGF0YTogJ9CX0LDQs9GA0YPQt9C60LAnLFxuICAgIHNlZUNvbXBsZXRlU3VidGl0bGU6ICfQn9C+0YHQvNC+0YLRgNC10YLRjCDQv9C+0LvQvdGL0Lkg0YHRg9Cx0YLQuNGC0YAnLFxuICAgIGNvbXBsZXRlU3VidGl0bGU6ICfQn9C+0LvQvdGL0Lkg0LfQsNCz0L7Qu9C+0LLQvtC6JyxcbiAgICBjb2x1bW5zTWFuYWdlcjogJ9C80LXQvdC10LTQttC10YAg0LrQvtC70L7QvdC+0LonLFxuICAgIGJvZHlEZWxldGU6ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0L7RgiDRjdC70LXQvNC10L3Rgj8nLFxuICAgIGNhbmNlbDogJ9Ce0YLQvNC10L3QsCcsXG4gICAgZGVsZXRlOiAn0KPQtNCw0LvQuNGC0YwnLFxuICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICfQrdC70LXQvNC10L3RgtGLINGD0YHQv9C10YjQvdC+INGD0LTQsNC70LXQvdGLJyxcbiAgICBkZWxldGVBcGlFcnJvcjogJ9Cf0YDQvtC40LfQvtGI0LvQsCDQvdC10L/RgNC10LTQstC40LTQtdC90L3QsNGPINC+0YjQuNCx0LrQsCwg0L/QvtCy0YLQvtGA0LjRgtC1INC/0L7Qv9GL0YLQutGDINC/0L7Qt9C20LUnXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIGRlIHRhYmVsYSDDqSB1dGlsaXphZG8gcGFyYSBleGliacOnw6NvIGRlIGRhZG9zIGNvbSBkaWZlcmVudGVzIHRpcG9zIGNvbW8gcG9yIGV4ZW1wbG8gdGV4dG9zLCBkYXRhLCBob3JhcyBlIG7Dum1lcm9zIGNvbVxuICogZm9ybWF0byBwZXJzb25hbGl6YWRvLlxuICpcbiAqIFRhbWLDqW0gw6kgcG9zc2l2ZWwgY3JpYXIgdGFiZWxhcyBjb20gb3JkZW5hw6fDo28gZGUgZGFkb3MsIGxpbmhhcyBjb20gZGV0YWxoZXMsIGNvbHVuYSBwYXJhIHNlbGXDp8OjbyBkZSBsaW5oYXMsIGNvbHVuYSBjb20gYcOnw7VlcyBlIHRhbWLDqW1cbiAqIGNhcnJlZ2FtZW50byBwb3IgZGVtYW5kYSBhdHJhdsOpcyBkbyBib3TDo28gKipDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3MqKi5cbiAqXG4gKiA+IEFzIGxpbmhhcyBkZSBkZXRhbGhlcyBwb2RlbSB0YW1iw6ltIHNlciBjdXN0b21pemFkYXMgYXRyYXbDqXMgZG8gW2BwLXRhYmxlLXJvdy10ZW1wbGF0ZWBdKC9kb2N1bWVudGF0aW9uL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZSkuXG4gKlxuICogPiBBcyBjb2x1bmFzIHBvZGVtIHNlciBjdXN0b21pemFkYXMgYXRyYXbDqXMgZG9zIHRlbXBsYXRlcyBbYHAtdGFibGUtY29sdW1uLXRlbXBsYXRlYF0oL2RvY3VtZW50YXRpb24vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlKVxuICogZSBbYHAtdGFibGUtY2VsbC10ZW1wbGF0ZWBdKC9kb2N1bWVudGF0aW9uL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUpLlxuICpcbiAqIE8gY29tcG9uZW50ZSBwZXJtaXRlIGdlcmVuY2lhciBhIGV4aWJpw6fDo28gZGFzIGNvbHVuYXMgZGluYW1pY2FtZW50ZS4gRXN0YSBmdW5jaW9uYWxpZGFkZSBwb2RlIHNlciBhY2Vzc2FkYSBhdHJhdsOpcyBkbyDDrWNvbmUgZGUgZW5ncmVuYWdlbVxuICogbm8gY2FudG8gc3VwZXJpb3IgZGlyZWl0byBkbyBjYWJlw6dhbGhvIGRhIHRhYmVsYS5cbiAqXG4gKiBDYXNvIGEgbGFyZ3VyYSBkZSB0b2RhcyBhcyBjb2x1bmFzIGZvcmVtIGRlZmluaWRhcyBlIG8gdG90YWwgdWx0cmFwYXNzYXIgbyB0YW1hbmhvIHRhYmVsYSwgc2Vyw6EgZXhpYmlkbyB1bSAqc2Nyb2xsKiBuYSBob3Jpem9udGFsIHBhcmEgYVxuICogY29tcGxldGEgdmlzdWFsaXphw6fDo28gZG9zIGRhZG9zLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgbyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzLCByZXNwb25zw6F2ZWwgcGVsYSBkZWZpbmnDp8OjbyBkZSBxdWFpcyBjb2x1bmFzIHNlcsOjbyBleGliaWRhcywgc2VqYSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLWNvbHVtbnMtbWFuYWdlcicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlQ29sdW1uc01hbmFnZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgYXMgYcOnw7VlcyBlbSBsb3RlLCByZXNwb25zw6F2ZWwgcG9yIGV4Y2x1aXIgZSBleGliaXIgYSBxdWFudGlkYWRlIGRlIGl0ZW5zLCBzZWphbSBlc2NvbmRpZGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLWJhdGNoLWFjdGlvbnMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZUJhdGNoQWN0aW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgYXMgYcOnw7VlcyBwYXJhIGZpeGFyIHVtYSBjb2x1bmEgZGEgdGFiZWxhIHNlamFtIGVzY29uZGlkYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLWFjdGlvbi1maXhlZC1jb2x1bW5zJykgc2V0IGhpZGVBY3Rpb25GaXhlZENvbHVtbnMoaGlkZTogYm9vbGVhbikge1xuICAgIGlmIChoaWRlKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLnJlbW92ZVByb3BlcnR5Rml4ZWQodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgdGhpcy5faGlkZUFjdGlvbkZpeGVkQ29sdW1ucyA9IGhpZGU7XG4gIH1cblxuICBnZXQgaGlkZUFjdGlvbkZpeGVkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZUFjdGlvbkZpeGVkQ29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gY2FtcG8gZGUgcGVzcXVpc2Egc2VqYSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtdGFibGUtc2VhcmNoJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGhpZGVUYWJsZVNlYXJjaDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBmZWNoYXIgdW0gZGV0YWxoZSBvdSByb3cgdGVtcGxhdGUgYXV0b21hdGljYW1lbnRlLCBhbyBhYnJpciBvdXRybyBpdGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1jb2xsYXBzZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvQ29sbGFwc2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHF1ZSBzZWphIGFkaWNpb25hZG8gbyBlc3RhZG8gZGUgY2FycmVnYW1lbnRvIG5vIGJvdMOjbyBcIkNhcnJlZ2FyIG1haXMgcmVzdWx0YWRvc1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtbG9hZGluZy1zaG93LW1vcmUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgbG9hZGluZ1Nob3dNb3JlOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIGVtIHRvZGFzIGFzIGNvbHVuYXMgYSBvcMOnw6NvIGRlIG9yZGVuYcOnw6NvIGRlIGRhZG9zLiBDYXNvIGEgY29sdW5hIHNlamEgZG8gdGlwbyAnZGF0YScgb3UgJ2RhdGVUaW1lJyBhXG4gICAqIG1lc21hIGRldmUgcmVzcGVpdGFyIG9zIHRpcG9zIGRlIGVudHJhZGEgZGVmaW5pZG9zIHBhcmEgcXVlIHNlamFtIG9yZGVuYWRhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXNvcnQnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgc29ydDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgdG9ybmEgaGFiaWxpdGFkbyBvIGJvdMOjbyBcIkNhcnJlZ2FyIG1haXMgcmVzdWx0YWRvc1wiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc2hvdy1tb3JlLWRpc2FibGVkJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHNob3dNb3JlRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIG91IGRlc2FiaWxpdGEgbyBlc3RpbG8gbGlzdHJhZG8gZGEgdGFiZWxhIChgc3RyaXBlZGApLlxuICAgKiA+IFJlY29tZW5kYWRvIHBhcmEgdGFiZWxhcyBjb20gbWFpb3IgbsO6bWVybyBkZSBkYWRvcywgZmFjaWxpdGFuZG8gYSBzdWEgdmlzdWFsaXphw6fDo28gbmEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc3RyaXBlZCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzdHJpcGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFc2NvbmRlIG8gKmNoZWNrYm94KiBwYXJhIHNlbGXDp8OjbyBkZSB0b2RhcyBhcyBsaW5oYXMuXG4gICAqXG4gICAqID4gU2VtcHJlIHJlY2ViZXLDoSAqdHJ1ZSogY2FzbyBhIHNlbGXDp8OjbyBkZSBhcGVuYXMgdW1hIGxpbmhhIGVzdGVqYSBhdGl2YS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtc2VsZWN0LWFsbCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlU2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIHNvbWVudGUgdW1hIGxpbmhhIGRhIHRhYmVsYSBwb2RlIHNlciBzZWxlY2lvbmFkYS5cbiAgICpcbiAgICogPiBFc3RhIGRlZmluacOnw6NvIG7Do28gc2UgYXBsaWNhIGFvcyBpdGVucyBmaWxob3MsIG9zIG1lc21vcyBwb3NzdWVtIGNvbXBvcnRhbWVudG8gaW5kZXBlbmRlbnRlIGRvIGl0ZW0gcGFpLlxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXNpbmdsZS1zZWxlY3QnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgc2luZ2xlU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHNlbGVjaW9uYXIgdW0gaXRlbSBkYSB0YWJlbGEgY2xpY2FuZG8gbmEgbGluaGEuXG4gICAqXG4gICAqID4gQ2FzbyBoYWphIG5lY2Vzc2lkYWRlIGRlIHNlbGVjaW9uYXIgbyBpdGVtIGFwZW5hcyB2aWEgcmFkaW8gb3UgY2hlY2tib3gsIGRldmUtc2UgZGVmaW5pciBlc3RhIHByb3ByaWVkYWRlIGNvbW8gYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Atc2VsZWN0YWJsZS1lbnRpcmUtbGluZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzZWxlY3RhYmxlRW50aXJlTGluZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGNvbHVuYSBkZSBhw6fDtWVzIGZpY2Fyw6Egbm8gbGFkbyBkaXJlaXRvIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWFjdGlvbnMtcmlnaHQnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYWN0aW9uUmlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIHF1YW50aWRhZGUgbcOheGltYSBkZSBjb2x1bmFzIHF1ZSBzZXLDo28gZXhpYmlkYXMgbmEgdGFiZWxhLlxuICAgKlxuICAgKiBRdWFuZG8gY2hlZ2FyIG5vIHZhbG9yIGluZm9ybWFkbywgYXMgY29sdW5hcyBxdWUgbsOjbyBlc3RpdmVyZW0gc2VsZWNpb25hZGFzIGZpY2Fyw6NvXG4gICAqIGRlc2FiaWxpdGFkYXMgZSBjYXNvIGhvdXZlciBtYWlzIGNvbHVuYXMgdmlzw612ZWlzIGRvIHF1ZSBvIHBlcm1pdGlkbywgYXMgZXhjZWRlbnRlc1xuICAgKiBzZXLDo28gaWdub3JhZGFzIHBvciBvcmRlbSBkZSBwb3Npw6fDo28uXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4LWNvbHVtbnMnKSBtYXhDb2x1bW5zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIG1vZG8gZGUgcGVzcXVpc2EgdXRpbGl6YWRvIG5vIGNhbXBvIGRlIGJ1c2NhLCBxdWFuZG8gaGFiaWxpdGFkby5cbiAgICogVmFsb3JlcyBkZWZpbmlkb3Mgbm8gZW51bTogUG9TZWFyY2hGaWx0ZXJNb2RlXG4gICAqID4gT2JzOiBBIHBlc3F1aXNhIMOpIHJlYWxpemFkYSBleGNsdXNpdmFtZW50ZSBub3MgZGFkb3MgbG9jYWlzLCBvdSBzZWphLCBhcXVlbGVzIHF1ZSBmb3JhbVxuICAgKiA+IHJlbmRlcml6YWRvcyBuYSB0YWJlbGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBzdGFydHNXaXRoYFxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci10eXBlJykgZmlsdGVyVHlwZTogUG9TZWFyY2hGaWx0ZXJNb2RlID0gUG9TZWFyY2hGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBxdWFuZG8gdG9kYXMgYXMgbGluaGFzIHPDo28gc2VsZWNpb25hZGFzIHBvciBtZWlvIGRvICpjaGVja2JveCogcXVlIHNlbGVjaW9uYSB0b2RhcyBhcyBsaW5oYXMuXG4gICAqL1xuICBAT3V0cHV0KCdwLWFsbC1zZWxlY3RlZCcpIGFsbFNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBleGVjdXRhZG8gcXVhbmRvIGEgc2VsZcOnw6NvIGRhcyBsaW5oYXMgw6kgZGVzbWFyY2FkYSBwb3IgbWVpbyBkbyAqY2hlY2tib3gqIHF1ZSBzZWxlY2lvbmEgdG9kYXMgYXMgbGluaGFzLlxuICAgKi9cbiAgQE91dHB1dCgncC1hbGwtdW5zZWxlY3RlZCcpIGFsbFVuc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhbyBjb2xhcHNhciB1bWEgbGluaGEgZG8gYHBvLXRhYmxlYC5cbiAgICpcbiAgICogPiBDb21vIHBhcsOibWV0cm8gbyBjb21wb25lbnRlIGVudmlhIG8gaXRlbSBjb2xhcHNhZG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNvbGxhcHNlZCcpIGNvbGxhcHNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIGV4cGFuZGlyIHVtYSBsaW5oYSBkbyBgcG8tdGFibGVgLlxuICAgKlxuICAgKiA+IENvbW8gcGFyw6JtZXRybyBvIGNvbXBvbmVudGUgZW52aWEgbyBpdGVtIGV4cGFuZGlkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtZXhwYW5kZWQnKSBleHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFww7NzIG8gbcOpdG9kbyBkZSBleGNsdXPDo28gc2VyIGZpbmFsaXphZG8uXG4gICAqXG4gICAqIGBgYFxuICAgKjxwby10YWJsZVxuICAgKiAgKHAtZGVsZXRlLWl0ZW1zKT1cIml0ZW1zID0gJGV2ZW50XCJcbiAgICogPlxuICAgKjwvcG8tdGFibGU+XG4gICAqIGBgYFxuICAgKlxuICAgKlxuICAgKiA+IENvbW8gcGFyw6JtZXRybyBvIGNvbXBvbmVudGUgZW52aWEgYSBsaXN0YSBhdHVhbGl6YWRhLCBzZW0gb3MgaXRlbnMgZXhjbHXDrWRvcy5cbiAgICovXG4gIEBPdXRwdXQoJ3AtZGVsZXRlLWl0ZW1zJykgZXZlbnREZWxldGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhbyBzZWxlY2lvbmFyIHVtYSBsaW5oYSBkbyBgcG8tdGFibGVgLlxuICAgKi9cbiAgQE91dHB1dCgncC1zZWxlY3RlZCcpIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJlY2ViZSB1bWEgYcOnw6NvIGRlIGNsaXF1ZSBwYXJhIG8gYm90w6NvIFwiQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zXCIsIGNhc28gbmVuaHVtYSBhw6fDo28gZm9yIGRlZmluaWRhIG8gbWVzbW9cbiAgICogbsOjbyDDqSB2aXPDrXZlbC5cbiAgICpcbiAgICogUmVjZWJlIHVtIG9iamV0byBgeyBjb2x1bW4sIHR5cGUgfWAgb25kZTpcbiAgICpcbiAgICogLSBjb2x1bW4gKGBQb1RhYmxlQ29sdW1uYCk6IG9iamV0byBkYSBjb2x1bmEgcXVlIGVzdMOhIG9yZGVuYWRhLlxuICAgKiAtIHR5cGUgKGBQb1RhYmxlQ29sdW1uU29ydFR5cGVgKTogdGlwbyBkYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc2hvdy1tb3JlJykgc2hvd01vcmU6IEV2ZW50RW1pdHRlcjxQb1RhYmxlQ29sdW1uU29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBvVGFibGVDb2x1bW5Tb3J0PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYW8gb3JkZW5hciBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICpcbiAgICogUmVjZWJlIHVtIG9iamV0byBgeyBjb2x1bW4sIHR5cGUgfWAgb25kZTpcbiAgICpcbiAgICogLSBjb2x1bW4gKGBQb1RhYmxlQ29sdW1uYCk6IG9iamV0byBkYSBjb2x1bmEgcXVlIGZvaSBjbGljYWRhL29yZGVuYWRhLlxuICAgKiAtIHR5cGUgKGBQb1RhYmxlQ29sdW1uU29ydFR5cGVgKTogdGlwbyBkYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc29ydC1ieScpIHNvcnRCeTogRXZlbnRFbWl0dGVyPFBvVGFibGVDb2x1bW5Tb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9UYWJsZUNvbHVtblNvcnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhbyBkZXNtYXJjYXIgYSBzZWxlw6fDo28gZGUgdW1hIGxpbmhhIGRvIGBwby10YWJsZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLXVuc2VsZWN0ZWQnKSB1bnNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZmVjaGFyIG8gcGFnZSBzbGlkZSBkbyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzIGFww7NzIGFsdGVyYXIgYXMgY29sdW5hcyB2aXPDrXZlaXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIHZpc8OtdmVpcyBhdHVhbGl6YWRhcy5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zJykgY2hhbmdlVmlzaWJsZUNvbHVtbnMgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PHN0cmluZz4+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIHJlc3RhdXJhciBwYWRyw6NvIG5vIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIGNvbmZpZ3VyYWRhcyBpbmljaWFsbWVudGUuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtcmVzdG9yZS1jb2x1bW4tbWFuYWdlcicpIGNvbHVtblJlc3RvcmVNYW5hZ2VyID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTdHJpbmc+PigpO1xuXG4gIGFsbENvbHVtbnNXaWR0aFBpeGVsczogYm9vbGVhbjtcbiAgY29sdW1uTWFzdGVyRGV0YWlsOiBQb1RhYmxlQ29sdW1uO1xuICBoYXNNYWluQ29sdW1uczogYm9vbGVhbiA9IGZhbHNlO1xuICBtYWluQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4gPSBbXTtcbiAgc2VsZWN0QWxsID0gZmFsc2U7XG4gIHNvcnRlZENvbHVtbiA9IHsgcHJvcGVydHk6IDxQb1RhYmxlQ29sdW1uPm51bGwsIGFzY2VuZGluZzogdHJ1ZSB9O1xuICBzdWJ0aXRsZUNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+ID0gW107XG4gIHBhZ2UgPSAxO1xuICBwYWdlU2l6ZSA9IDEwO1xuICBoYXNTZXJ2aWNlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBpbml0aWFsQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNob3dCYXRjaEFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXRlbXNTZWxlY3RlZDogQXJyYXk8YW55PiA9IFtdO1xuICBwYXJhbXNGaWx0ZXI6IHt9O1xuICBmaWx0ZXJlZEl0ZW1zOiBBcnJheTxhbnk+ID0gW107XG4gIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIGZpeGVkTGF5b3V0OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3NwYWNpbmc6IFBvVGFibGVDb2x1bW5TcGFjaW5nID0gUG9UYWJsZUNvbHVtblNwYWNpbmcuTWVkaXVtO1xuICBwcml2YXRlIF9maWx0ZXJlZENvbHVtbnM6IEFycmF5PHN0cmluZz47XG4gIHByaXZhdGUgX2FjdGlvbnM/OiBBcnJheTxQb1RhYmxlQWN0aW9uPiA9IFtdO1xuICBwcml2YXRlIF9jb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPiA9IFtdO1xuICBwcml2YXRlIF9jb250YWluZXI/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhcmFtRGVsZXRlOiBzdHJpbmcgPSBwb1RhYmxlUGFyYW1EZWxldGVBcGk7XG4gIHByaXZhdGUgX2hlaWdodD86IG51bWJlcjtcbiAgcHJpdmF0ZSBfaGlkZURldGFpbD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXRlbXM6IEFycmF5PFBvVGFibGVDb2x1bW4+O1xuICBwcml2YXRlIF9saXRlcmFsczogUG9UYWJsZUxpdGVyYWxzO1xuICBwcml2YXRlIF9sb2FkaW5nPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nID0gcG9Mb2NhbGVEZWZhdWx0O1xuICBwcml2YXRlIF9zZXJ2aWNlQXBpOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NlcnZpY2VEZWxldGVBcGk6IHN0cmluZztcbiAgcHJpdmF0ZSBwb1RhYmxlU2VydmljZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNvcnRTdG9yZTogUG9UYWJsZUNvbHVtblNvcnQ7XG4gIHByaXZhdGUgX2luZmluaXRlU2Nyb2xsRGlzdGFuY2U/OiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgX2luZmluaXRlU2Nyb2xsPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kcmFnZ2FibGU/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2hpZGVBY3Rpb25GaXhlZENvbHVtbnM/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIHBvVGFibGVTZXJ2aWNlOiBQb1RhYmxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgaXRlbnMgZGEgdGFiZWxhLlxuICAgKiA+IFNlIGZhbHNvLCBzZXLDoSBpbmljaWFsaXphZG8gY29tbyB1bSAqYXJyYXkqIHZhemlvLlxuICAgKi9cbiAgQElucHV0KCdwLWl0ZW1zJykgc2V0IGl0ZW1zKGl0ZW1zOiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLl9pdGVtcyA9IEFycmF5LmlzQXJyYXkoaXRlbXMpID8gWy4uLml0ZW1zXSA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pdGVtcyA9IEFycmF5LmlzQXJyYXkoaXRlbXMpID8gaXRlbXMgOiBbXTtcbiAgICB9XG5cbiAgICAvLyB3aGVuIGhhdmVuJ3QgaXRlbXMsIHNlbGVjdEFsbCBzaG91bGQgYmUgdW5jaGVja2VkLlxuICAgIGlmICghdGhpcy5oYXNJdGVtcykge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmhhc0NvbHVtbnMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnMoaXRlbXNbMF0pO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLmhlaWdodCA/IFsuLi50aGlzLml0ZW1zXSA6IHRoaXMuaXRlbXM7XG5cbiAgICAvLyB0aW1lb3V0IG5lY2Vzc8OhcmlvIHBhcmEgb3MgaXRlbnMgc2VyZW0gcmVmbGV0aWRvcyBuYSB0YWJlbGFcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tJbmZpbml0ZVNjcm9sbCgpKTtcbiAgfVxuXG4gIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkYXMgY29sdW5hcyBkYSB0YWJlbGEsIGRldmUgcmVjZWJlciB1bSAqYXJyYXkqIGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIGBQb1RhYmxlQ29sdW1uYC5cbiAgICogUG9yIHBhZHLDo28gcmVjZWJlcsOhIGNvbW8gdmFsb3IgYSBwcmltZWlyYSBjb2x1bmEgZGEgbGlzdGEgZGUgaXRlbnMgZGEgdGFiZWxhLlxuICAgKiA+IENhc28gbsOjbyBlbmNvbnRyZSB2YWxvciwgYSBtZW5zYWdlbSAnTmVuaHVtYSBkZWZpbmnDp8OjbyBkZSBjb2x1bmFzJyBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWNvbHVtbnMnKSBzZXQgY29sdW1ucyhjb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPikge1xuICAgIGNvbnN0IGhhc0NvbHVtbnNXaXRoVmlzaWJsZSA9IGNvbHVtbnM/LmZpbmQoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlID09PSB0cnVlKTtcbiAgICBpZiAodGhpcy5pbml0aWFsQ29sdW1ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxDb2x1bW5zID0gY29sdW1ucztcbiAgICB9XG5cbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1ucyB8fCBbXTtcblxuICAgIGlmIChoYXNDb2x1bW5zV2l0aFZpc2libGUgJiYgIXRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zKSB7XG4gICAgICB0aGlzLmluaXRpYWxWaXNpYmxlQ29sdW1ucyA9IHRydWU7XG4gICAgICB0aGlzLnZlcmlmeUludGVyYWN0aXZlQ29sdW1ucygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRDb2x1bW5MaW5rKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLl9jb2x1bW5zID0gdGhpcy5nZXREZWZhdWx0Q29sdW1ucyh0aGlzLml0ZW1zWzBdKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlQ29sdW1ucygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBZGljaW9uYSB1bSBjb250b3JubyBhcnJlZG9uZGFkbyBhbyBgcG8tdGFibGVgLCBhcyBvcMOnw7VlcyBzw6NvOlxuICAgKiAtIGBib3JkZXJgOiBjb20gYm9yZGFzL2xpbmhhcy5cbiAgICogLSBgc2hhZG93YDogY29tIHNvbWJyYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBib3JkZXJgXG4gICAqL1xuICBASW5wdXQoJ3AtY29udGFpbmVyJykgc2V0IGNvbnRhaW5lcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGFpbmVyID0gcG9UYWJsZUNvbnRhaW5lci5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IHBvVGFibGVDb250YWluZXJEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGNvbnRhaW5lcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXI7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBZGljaW9uYSBvIHBhcsOibWV0cm8gYSBzZXIgZW52aWFkbyBwYXJhIGEgcmVxdWlzacOnw6NvIGRlIERFTEVURS5cbiAgICpcbiAgICogw4kgbmVjZXNzw6FyaW8gYSB1dGlsaXphw6fDo28gZGEgcHJvcHJpZWRhZGUgYHAtc2VydmljZS1kZWxldGVgIGVtIGNvbmp1bnRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgaWRgXG4gICAqL1xuICBASW5wdXQoJ3AtcGFyYW0tZGVsZXRlLWFwaScpIHNldCBwYXJhbURlbGV0ZUFwaSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGFyYW1EZWxldGUgPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBwb1RhYmxlUGFyYW1EZWxldGVBcGk7XG4gIH1cblxuICBnZXQgcGFyYW1EZWxldGVBcGkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1EZWxldGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBhbHR1cmEgZGEgdGFiZWxhIGVtICpwaXhlbHMqIGUgZml4YSBvIGNhYmXDp2FsaG8uXG4gICAqXG4gICAqIEFvIHV0aWxpemFyIGVzc2EgcHJvcHJpZWRhZGUgc2Vyw6EgaW5zZXJpZG8gbyBgdmlydHVhbC1zY3JvbGxgIG5hIHRhYmVsYSBtZWxob3JhbmRvIGEgcGVyZm9ybWFuY2UuXG4gICAqL1xuICBASW5wdXQoJ3AtaGVpZ2h0Jykgc2V0IGhlaWdodChoZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMuX2hlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIGdldCBoZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIGEgdmlzdWFsaXphw6fDo28gZGEgbGlzdGEgZGUgZGV0YWxoZXMgZGUgY2FkYSBsaW5oYSBkYSBjb2x1bmEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLWRldGFpbCcpIHNldCBoaWRlRGV0YWlsKGhpZGVEZXRhaWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRlRGV0YWlsID0gaGlkZURldGFpbCAhPSBudWxsICYmIGhpZGVEZXRhaWwudG9TdHJpbmcoKSA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihoaWRlRGV0YWlsKTtcbiAgfVxuXG4gIGdldCBoaWRlRGV0YWlsKCkge1xuICAgIHJldHVybiB0aGlzLl9oaWRlRGV0YWlsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXRhYmxlYC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9UYWJsZUxpdGVyYWxzID0ge1xuICAgKiAgICBub0NvbHVtbnM6ICdOZW5odW1hIGRlZmluacOnw6NvIGRlIGNvbHVuYXMnLFxuICAgKiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJyxcbiAgICogICAgbm9WaXNpYmxlQ29sdW1uOiAnTmVuaHVtYSBjb2x1bmEgdmlzw612ZWwnLFxuICAgKiAgICBub0l0ZW06ICdOZW5odW0gaXRlbSBzZWxlY2lvbmFkbycsXG4gICAqICAgIG9uZUl0ZW06ICcxIGl0ZW0gc2VsZWNpb25hZG8nLFxuICAgKiAgICBtdWx0aXBsZUl0ZW1zOiAnaXRlbnMgc2VsZWNpb25hZG9zJyxcbiAgICogICAgbG9hZGluZ0RhdGE6ICdDYXJyZWdhbmRvJyxcbiAgICogICAgbG9hZE1vcmVEYXRhOiAnQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zJyxcbiAgICogICAgc2VlQ29tcGxldGVTdWJ0aXRsZTogJ1ZlciBsZWdlbmRhIGNvbXBsZXRhJyxcbiAgICogICAgY29tcGxldGVTdWJ0aXRsZTogJ0xlZ2VuZGEgY29tcGxldGEnLFxuICAgKiAgICBjb2x1bW5zTWFuYWdlcjogJ0dlcmVuY2lhZG9yIGRlIGNvbHVuYXMnLFxuICAgKiAgICBib2R5RGVsZXRlOiAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzc2UgaXRlbT8nLFxuICAgKiAgICBjYW5jZWw6ICdDYW5jZWxhcicsXG4gICAqICAgIGRlbGV0ZTogJ0V4Y2x1aXInLFxuICAgKiAgICBkZWxldGVTdWNjZXNzZnVsOiAnSXRlbnMgcmVtb3ZpZG9zIGNvbSBzdWNlc3NvJyxcbiAgICogICAgZGVsZXRlQXBpRXJyb3I6ICdPY29ycmV1IHVtIGVycm8gaW5lc3BlcmFkbywgdGVudGUgbm92YW1lbnRlIG1haXMgdGFyZGUhJyxcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1RhYmxlTGl0ZXJhbHMgPSB7XG4gICAqICAgIG5vRGF0YTogJ1NlbSBkYWRvcydcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBFIHBhcmEgY2FycmVnYXIgYXMgbGl0ZXJhaXMgY3VzdG9taXphZGFzLCBiYXN0YSBhcGVuYXMgcGFzc2FyIG8gb2JqZXRvIHBhcmEgbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXRhYmxlXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb1RhYmxlTGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvVGFibGVMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgICAgLi4ucG9UYWJsZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgICAgLi4udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9UYWJsZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG4gIH1cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQmxvcXVlaWEgYSBpbnRlcmHDp8OjbyBkbyB1c3XDoXJpbyBjb20gb3MgZGFkb3MgZGEgX3RhYmxlXy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWRpbmcnKSBzZXQgbG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbG9hZGluZyA9IGNvbnZlcnRUb0Jvb2xlYW4obG9hZGluZyk7XG4gIH1cblxuICBnZXQgbG9hZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgbGlzdGEgZGUgYcOnw7Vlcy5cbiAgICpcbiAgICogUXVhbmRvIGhvdXZlciBhcGVuYXMgdW1hIGHDp8OjbyBkZWZpbmlkYSBlbGEgc2Vyw6EgZXhpYmlkYSBkaXJldGFtZW50ZSBuYSBjb2x1bmEsIGNhc28gY29udHLDoXJpbywgbyBjb21wb25lbnRlXG4gICAqIHNlIGVuY2FycmVnYSBkZSBhZ3J1cMOhLWxhcyBleGliaW5kbyBvIMOtY29uZSBbKipwby1pY29uLW1vcmUqKl0oL2d1aWRlcy9pY29ucykgcXVlIGxpc3RhcsOhIGFzIGHDp8O1ZXMgYW8gc2VyIGNsaWNhZG8uXG4gICAqXG4gICAqICoqQSBjb2x1bmEgZGUgYcOnw7VlcyBuw6NvIHNlcsOhIGV4aWJpZGEgcXVhbmRvOioqXG4gICAqICAtIGEgbGlzdGEgY29udGVyIHZhbG9yZXMgaW52w6FsaWRvcyBvdSBpbmRlZmluaWRvcy5cbiAgICogIC0gdGVuaGEgdW1hIMO6bmljYSBhw6fDo28gZSBhIG1lc21hIG7Do28gZm9yIHZpc8OtdmVsLlxuICAgKi9cbiAgQElucHV0KCdwLWFjdGlvbnMnKSBzZXQgYWN0aW9ucyhhY3Rpb25zOiBBcnJheTxQb1RhYmxlQWN0aW9uPikge1xuICAgIHRoaXMuX2FjdGlvbnMgPSBhY3Rpb25zO1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGEgc2VsZcOnw6NvIGRlIGxpbmhhcyBuYSB0YWJlbGEgZSwgY2FzbyBhIHByb3ByaWVkYWRlIGBwLXNpbmdsZS1zZWxlY3RgIGVzdGVqYSBkZWZpbmlkYSBzZXLDoSBwb3Nzw612ZWxcbiAgICogc2VsZWNpb25hciBhcGVuYXMgdW1hIMO6bmljYSBsaW5oYS5cbiAgICpcbiAgICogKipJbXBvcnRhbnRlOioqXG4gICAqICAtIEFzIGxpbmhhcyBkZSBkZXRhbGhlIGRlZmluaWRhcyBlbSBgUG9UYWJsZURldGFpbGAgcG9zc3VlbSBjb21wb3J0YW1lbnRvIGluZGVwZW5kZW50ZSBkYSBsaW5oYSBtZXN0cmU7XG4gICAqICAtIENhZGEgbGluaGEgcG9zc3VpIHBvciBwYWRyw6NvIGEgcHJvcHJpZWRhZGUgZGluw6JtaWNhIGAkc2VsZWN0ZWRgLCBuYSBxdWFsIMOpIHBvc3PDrXZlbCB2YWxpZGFyIHNlIGEgbGluaGFcbiAgICogZXN0w6Egc2VsZWNpb25hZGEsIHBvciBleGVtcGxvOiBgaXRlbS4kc2VsZWN0ZWRgIG91IGBpdGVtWyckc2VsZWN0ZWQnXWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1zZWxlY3RhYmxlJykgc2V0IHNlbGVjdGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zZWxlY3RhYmxlID0gPGFueT52YWx1ZSA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0YWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZSBvIGJvdMOjbyBcIkNhcnJlZ2FyIE1haXNcIiBkZWl4YXLDoSBkZSBzZXIgZXhpYmlkby4gQW8gY2hlZ2FyIG5vIGZpbSBkYSB0YWJlbGFcbiAgICogZXhlY3V0YXLDoSBhIGZ1bsOnw6NvIGBwLXNob3ctbW9yZWAuXG4gICAqXG4gICAqICoqUmVncmFzIGRlIHV0aWxpemHDp8OjbzoqKlxuICAgKiAgLSBPIHNjcm9sbCBpbmZpbml0byBzw7MgZnVuY2lvbmEgcGFyYSB0YWJlbGFzIHF1ZSB1dGlsaXphbSBhIHByb3ByaWVkYWRlIGBwLWhlaWdodGAgZSBxdWUgcG9zc3VlbSBvIHNjcm9sbCBqw6EgbmEgY2FyZ2EgaW5pY2lhbCBkb3MgZGFkb3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwnKSBzZXQgaW5maW5pdGVTY3JvbGwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmZpbml0ZVNjcm9sbCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUgJiYgdGhpcy5oZWlnaHQgPiAwKTtcbiAgfVxuXG4gIGdldCBpbmZpbml0ZVNjcm9sbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdGVTY3JvbGw7XG4gIH1cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gcGVyY2VudHVhbCBuZWNlc3PDoXJpbyBwYXJhIGRpc3BhcmFyIG8gZXZlbnRvIGBwLXNob3ctbW9yZWAsIHF1ZSDDqSByZXNwb25zw6F2ZWwgcG9yIGNhcnJlZ2FyIG1haXMgZGFkb3MgbmEgdGFiZWxhLiBDYXNvIG8gdmFsb3IgaW5mb3JtYWRvIHNlamEgbWFpb3IgcXVlIDEwMCBvdSBtZW5vclxuICAgKiBxdWUgMCwgbyB2YWxvciBwYWRyw6NvIHNlcsOhIDEwMCVcbiAgICpcbiAgICogKipFeGVtcGxvczoqKlxuICAgKiAgLSBwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZSA9IDgwOiBRdWFuZG8gYXRpbmdpciA4MCUgIGRvIHNjcm9sbCBkYSB0YWJlbGEsIG8gYHAtc2hvdy1tb3JlYCBzZXLDoSBkaXNwYXJhZG8uXG4gICAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsLWRpc3RhbmNlJykgc2V0IGluZmluaXRlU2Nyb2xsRGlzdGFuY2UodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2luZmluaXRlU2Nyb2xsRGlzdGFuY2UgPSB2YWx1ZSA+IDEwMCB8fCB2YWx1ZSA8IDAgPyAxMDAgOiB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpbmZpbml0ZVNjcm9sbERpc3RhbmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmZpbml0ZVNjcm9sbERpc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVVJMIGRhIEFQSSByZXNwb25zw6F2ZWwgcG9yIHJldG9ybmFyIG9zIHJlZ2lzdHJvcy5cbiAgICpcbiAgICogQW8gcmVhbGl6YXIgYSBidXNjYSBkZSBtYWlzIHJlZ2lzdHJvcyB2aWEgcGFnaW5hw6fDo28gKENhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcyksIHNlcsOhIGVudmlhZG8gb3MgcGFyw6JtZXRyb3MgYHBhZ2VgIGUgYHBhZ2VTaXplYCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMFxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyB1dGlsaXphciBvcmRlbmHDp8OjbywgYSBjb2x1bmEgb3JkZW5hZGEgc2Vyw6EgZW52aWFkYSBhdHJhdsOpcyBkbyBwYXLDom1ldHJvIGBvcmRlcmAsIHBvciBleGVtcGxvOlxuICAgKiAtIENvbHVuYSBkZWNyZXNjZW50ZTpcbiAgICogYGBgXG4gICAqICB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwJm9yZGVyPS1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiAtIENvbHVuYSBhc2NlbmRlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmb3JkZXI9bmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBFc3RhIFVSTCBkZXZlIHJldG9ybmFyIGUgcmVjZWJlciBvcyBkYWRvcyBubyBwYWRyw6NvIGRlIFtBUEkgZG8gUE8gVUldKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkuXG4gICAqL1xuICBASW5wdXQoJ3Atc2VydmljZS1hcGknKSBzZXQgc2VydmljZUFwaShzZXJ2aWNlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXJ2aWNlQXBpID0gc2VydmljZTtcbiAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5zZXJ2aWNlQXBpLCAnR0VUJyk7XG4gICAgdGhpcy5oYXNTZXJ2aWNlID0gISFzZXJ2aWNlO1xuICAgIHRoaXMuc2hvd01vcmVEaXNhYmxlZCA9ICF0aGlzLmhhc1NlcnZpY2U7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gIH1cblxuICBnZXQgc2VydmljZUFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZUFwaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFVSTCBkYSBBUEkgcmVzcG9uc8OhdmVsIHBvciBleGNsdWlyIG9zIHJlZ2lzdHJvcy5cbiAgICpcbiAgICogQW8gc2VsZWNpb25hciBvIGJvdMOjbyBkZSBleGNsdWlyIGl0ZW5zLCBlc3NhIHVybCBzZXLDoSBleGVjdXRhZGEgdXRpbGl6YW5kbyBvIHBhcsOibWV0cm8gZW52aWFkbyBuYSBwcm9wcmllZGFkZSBgcC1wYXJhbS1kZWxldGUtYXBpYC5cbiAgICogQ2FzbyBlbGEgbsOjbyBzZWphIHV0aWxpemFkYSwgbyBwYXLDom1ldHJvIHBhZHLDo28gYSBzZXIgZW52aWFkbyBzZXLDoSBgaWRgLlxuICAgKlxuICAgKiA+IEVzdGEgVVJMIGRldmUgcmV0b3JuYXIgZSByZWNlYmVyIG9zIGRhZG9zIG5vIHBhZHLDo28gZGUgW0FQSSBkbyBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKS5cbiAgICovXG4gIEBJbnB1dCgncC1zZXJ2aWNlLWRlbGV0ZScpIHNldCBzZXJ2aWNlRGVsZXRlQXBpKHNlcnZpY2U6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcnZpY2VEZWxldGVBcGkgPSBzZXJ2aWNlO1xuICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLnNlcnZpY2VEZWxldGVBcGksICdERUxFVEUnKTtcbiAgfVxuXG4gIGdldCBzZXJ2aWNlRGVsZXRlQXBpKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlRGVsZXRlQXBpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUmVzcG9uc8OhdmVsIHBvciBhcGxpY2FyIGVzcGHDp2FtZW50byBuYXMgY29sdW5hcy5cbiAgICpcbiAgICogRGV2ZSByZWNlYmVyIHVtIGRvcyB2YWxvcmVzIGRvIGVudW0gYFBvVGFibGVDb2x1bW5TcGFjaW5nYC5cbiAgICpcbiAgICogVmFsb3IgYHNtYWxsYCBzw7MgZnVuY2lvbmEgZW0gdGFiZWxhcyBuw6NvIGludGVyYXRpdmFzLiBDYXNvIHNlamEgc2V0YWRvIGNvbSBgc21hbGxgIGUgYSB0YWJlbGEgc2VqYSBpbnRlcmF0aXZhLCBvIHZhbG9yIHNlcsOhIHJldG9ybmFkbyBwYXJhIGBtZWRpdW1gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbWVkaXVtYFxuICAgKi9cbiAgQElucHV0KCdwLXNwYWNpbmcnKSBzZXQgc3BhY2luZyh2YWx1ZTogUG9UYWJsZUNvbHVtblNwYWNpbmcpIHtcbiAgICBpZiAodmFsdWUgPT09ICdzbWFsbCcgfHwgdmFsdWUgPT09ICdtZWRpdW0nIHx8IHZhbHVlID09PSAnbGFyZ2UnKSB7XG4gICAgICB0aGlzLl9zcGFjaW5nID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NwYWNpbmcgPSBQb1RhYmxlQ29sdW1uU3BhY2luZy5NZWRpdW07XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNwYWNpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NwYWNpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYXMgY29sdW5hcyBxdWUgc2Vyw6NvIGZpbHRyYWRhcyBubyBjYW1wbyBkZSBwZXNxdWlzYS5cbiAgICogQWNlaXRhIHVtIGFycmF5IGRlIHN0cmluZ3MsIHJlcHJlc2VudGFuZG8gYXMgY29sdW5hcyBlc3BlY8OtZmljYXMgcXVlIHNlcsOjbyBjb25zaWRlcmFkYXMgbmEgZmlsdHJhZ2VtLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlcmVkLWNvbHVtbnMnKSBzZXQgZmlsdGVyZWRDb2x1bW5zKHZhbHVlczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuX2ZpbHRlcmVkQ29sdW1ucyA9IHZhbHVlcztcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZENvbHVtbnMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXQgaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGgpO1xuICB9XG5cbiAgZ2V0IG5hbWVDb2x1bW5EZXRhaWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsID8gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwucHJvcGVydHkgOiBudWxsO1xuICB9XG5cbiAgZ2V0IHZhbGlkQ29sdW1ucygpIHtcbiAgICBjb25zdCB0eXBlc1ZhbGlkID0gW1xuICAgICAgJ3N0cmluZycsXG4gICAgICAnbnVtYmVyJyxcbiAgICAgICdib29sZWFuJyxcbiAgICAgICdkYXRlJyxcbiAgICAgICd0aW1lJyxcbiAgICAgICdkYXRlVGltZScsXG4gICAgICAnY3VycmVuY3knLFxuICAgICAgJ3N1YnRpdGxlJyxcbiAgICAgICdsaW5rJyxcbiAgICAgICdsYWJlbCcsXG4gICAgICAnaWNvbicsXG4gICAgICAnY2VsbFRlbXBsYXRlJyxcbiAgICAgICdjb2x1bW5UZW1wbGF0ZSdcbiAgICBdO1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiAhY29sLnR5cGUgfHwgdHlwZXNWYWxpZC5pbmNsdWRlcyhjb2wudHlwZSkpO1xuICB9XG5cbiAgZ2V0IHZpc2libGVBY3Rpb25zKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmFjdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFjdGlvbnMgJiYgdGhpcy5hY3Rpb25zLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uICYmIGFjdGlvbi52aXNpYmxlICE9PSBmYWxzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJlZENvbHVtbnMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlICE9PSBmYWxzZSlcbiAgICAgIC5tYXAoY29sdW1uID0+IGNvbHVtbi5wcm9wZXJ0eSB8fCBjb2x1bW4ubGFiZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc29ydFR5cGUoKTogUG9UYWJsZUNvbHVtblNvcnRUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRDb2x1bW4uYXNjZW5kaW5nID8gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkFzY2VuZGluZyA6IFBvVGFibGVDb2x1bW5Tb3J0VHlwZS5EZXNjZW5kaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgbyBtb2RvIGRyYWcgYW5kIGRyb3AgcGFyYSBhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRyYWdnYWJsZScpIHNldCBkcmFnZ2FibGUoZHJhZ2dhYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlID0gZHJhZ2dhYmxlIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGRyYWdnYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJhZ2dhYmxlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5wb1RhYmxlU2VydmljZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3QgfHwgdGhpcy5oaWRlU2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgICAgdGhpcy5oaWRlU2VsZWN0QWxsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIodGhpcy5oZWlnaHQpO1xuICAgIH1cblxuICAgIGlmICgoY2hhbmdlcy5oZWlnaHQgfHwgY2hhbmdlcy5pdGVtcykgJiYgdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5jaGFuZ2VIZWFkZXJXaWR0aCgpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVNpemVMb2FkaW5nKCk7XG4gIH1cblxuICBzZWxlY3RBbGxSb3dzKCkge1xuICAgIGlmICghdGhpcy5oaWRlU2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9ICF0aGlzLnNlbGVjdEFsbDtcblxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHRoaXMuc2VsZWN0QWxsO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZW1pdFNlbGVjdEFsbEV2ZW50cyh0aGlzLnNlbGVjdEFsbCwgWy4uLnRoaXMuaXRlbXNdKTtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogYW55KSB7XG4gICAgcm93LiRzZWxlY3RlZCA9ICFyb3cuJHNlbGVjdGVkO1xuXG4gICAgdGhpcy5lbWl0U2VsZWN0RXZlbnRzKHJvdyk7XG5cbiAgICB0aGlzLmNvbmZpZ0FmdGVyU2VsZWN0Um93KHRoaXMuaXRlbXMsIHJvdyk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZExpc3QoKTtcbiAgfVxuXG4gIGhhc1NlbGVjdGFibGVSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiB0aGlzLnNlbGVjdGFibGVFbnRpcmVMaW5lO1xuICB9XG5cbiAgc2VsZWN0RGV0YWlsUm93KHJvdzogYW55KSB7XG4gICAgdGhpcy5lbWl0U2VsZWN0RXZlbnRzKHJvdyk7XG4gIH1cblxuICBzZXRTZWxlY3RlZExpc3QoKSB7XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkID0gW107XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0uJHNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuaXRlbXNTZWxlY3RlZC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2xhc3NDb2xvcihyb3csIGNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uY29sb3IgPyBgcG8tdGV4dC0ke3RoaXMuZ2V0Q29sdW1uQ29sb3Iocm93LCBjb2x1bW4pfWAgOiAnJztcbiAgfVxuXG4gIHRvZ2dsZURldGFpbChyb3c6IGFueSkge1xuICAgIGNvbnN0IHJvd1Nob3dEZXRhaWwgPSByb3cuJHNob3dEZXRhaWw7XG4gICAgaWYgKHRoaXMuYXV0b0NvbGxhcHNlKSB7XG4gICAgICB0aGlzLmNvbGxhcHNlQWxsSXRlbXModGhpcy5pdGVtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvdywgIXJvd1Nob3dEZXRhaWwpO1xuICAgIHRoaXMuZW1pdEV4cGFuZEV2ZW50cyhyb3cpO1xuICB9XG5cbiAgdG9nZ2xlUm93QWN0aW9uKHJvdzogYW55KSB7XG4gICAgY29uc3QgdG9nZ2xlU2hvd0FjdGlvbiA9IHJvdy4kc2hvd0FjdGlvbjtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLiRzaG93QWN0aW9uKSB7XG4gICAgICAgIGl0ZW0uJHNob3dBY3Rpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByb3cuJHNob3dBY3Rpb24gPSAhdG9nZ2xlU2hvd0FjdGlvbjtcbiAgfVxuXG4gIHNvcnRDb2x1bW4oY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgaWYgKCF0aGlzLnNvcnQgfHwgY29sdW1uLnR5cGUgPT09ICdkZXRhaWwnIHx8IGNvbHVtbi5zb3J0YWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcgPSB0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSA9PT0gY29sdW1uID8gIXRoaXMuc29ydGVkQ29sdW1uLmFzY2VuZGluZyA6IHRydWU7XG5cbiAgICB0aGlzLnNvcnRBcnJheShjb2x1bW4sIHRoaXMuc29ydGVkQ29sdW1uLmFzY2VuZGluZyk7XG4gICAgdGhpcy5zb3J0QnkuZW1pdCh7IGNvbHVtbiwgdHlwZTogdGhpcy5zb3J0VHlwZSB9KTtcbiAgICBpZiAodGhpcy5oYXNTZXJ2aWNlICYmIHRoaXMuc29ydCkge1xuICAgICAgdGhpcy5zb3J0U3RvcmUgPSB7IGNvbHVtbiwgdHlwZTogdGhpcy5zb3J0VHlwZSB9O1xuICAgIH1cblxuICAgIHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5ID0gY29sdW1uO1xuICB9XG5cbiAgb25TaG93TW9yZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0ID0gdGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkgPyB7IGNvbHVtbjogdGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHksIHR5cGU6IHRoaXMuc29ydFR5cGUgfSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMucGFnZSsrO1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZGluZ1Nob3dNb3JlID0gdHJ1ZTtcblxuICAgICAgdGhpcy5wb1RhYmxlU2VydmljZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RmlsdGVyZWRJdGVtcygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zLCAuLi5kYXRhLml0ZW1zXTtcbiAgICAgICAgdGhpcy5zaG93TW9yZURpc2FibGVkID0gIWRhdGEuaGFzTmV4dDtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ1Nob3dNb3JlID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dNb3JlLmVtaXQoc29ydCk7XG4gIH1cblxuICBnZXRGaWx0ZXJlZEl0ZW1zKHF1ZXJ5UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSk6IE9ic2VydmFibGU8UG9UYWJsZVJlc3BvbnNlQXBpPiB7XG4gICAgY29uc3QgZmlsdGVyZWRQYXJhbXM6IFBvVGFibGVGaWx0ZXJlZEl0ZW1zUGFyYW1zID0gdGhpcy5nZXRGaWx0ZXJlZFBhcmFtcyhxdWVyeVBhcmFtcyk7XG5cbiAgICByZXR1cm4gdGhpcy5wb1RhYmxlU2VydmljZS5nZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcmVkUGFyYW1zKTtcbiAgfVxuXG4gIHNldFRhYmxlUmVzcG9uc2VQcm9wZXJ0aWVzKGRhdGE6IFBvVGFibGVSZXNwb25zZUFwaSkge1xuICAgIHRoaXMuaXRlbXMgPSBkYXRhLml0ZW1zIHx8IFtdO1xuICAgIHRoaXMuc2hvd01vcmVEaXNhYmxlZCA9ICFkYXRhLmhhc05leHQ7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBpbml0aWFsaXplRGF0YShwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzU2VydmljZSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFyYW1zRmlsdGVyID0gcGFyYW1zO1xuICAgICAgdGhpcy5nZXRGaWx0ZXJlZEl0ZW1zKHBhcmFtcykuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnNldFRhYmxlUmVzcG9uc2VQcm9wZXJ0aWVzKGRhdGEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc29ydEFycmF5KGNvbHVtbjogUG9UYWJsZUNvbHVtbiwgYXNjZW5kaW5nOiBib29sZWFuLCBpdGVtPzogQXJyYXk8YW55Pikge1xuICAgIGxldCBpdGVtc0xpc3Q7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW1zTGlzdCA9IHRoaXMuaGVpZ2h0ID8gWy4uLml0ZW1dIDogaXRlbTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXNMaXN0ID0gdGhpcy5oZWlnaHQgPyBbLi4udGhpcy5maWx0ZXJlZEl0ZW1zXSA6IHRoaXMuZmlsdGVyZWRJdGVtcztcbiAgICB9XG4gICAgaXRlbXNMaXN0LnNvcnQoKGxlZnRTaWRlLCByaWdodFNpZGUpOiBudW1iZXIgPT5cbiAgICAgIHNvcnRWYWx1ZXMobGVmdFNpZGVbY29sdW1uLnByb3BlcnR5XSwgcmlnaHRTaWRlW2NvbHVtbi5wcm9wZXJ0eV0sIGFzY2VuZGluZylcbiAgICApO1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IGl0ZW1zTGlzdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0Q29sdW1ucyhpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLmZpbHRlcihrZXkgPT4gdHlwZW9mIGl0ZW1ba2V5XSAhPT0gJ29iamVjdCcpXG4gICAgICAubWFwKGtleSA9PiAoeyBsYWJlbDogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGtleSksIHByb3BlcnR5OiBrZXkgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNob3dEZXRhaWwocm93SWRlbnRpZmllcjogYW55IHwgbnVtYmVyLCBpc1Nob3dEZXRhaWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc1Jvd0luZGV4ID0gdHlwZW9mIHJvd0lkZW50aWZpZXIgPT09ICdudW1iZXInICYmIHRoaXMuaXRlbXNbcm93SWRlbnRpZmllcl07XG5cbiAgICBjb25zdCByb3cgPSBpc1Jvd0luZGV4ID8gdGhpcy5pdGVtc1tyb3dJZGVudGlmaWVyXSA6IHJvd0lkZW50aWZpZXI7XG5cbiAgICByb3cuJHNob3dEZXRhaWwgPSBpc1Nob3dEZXRhaWw7XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlQWxsSXRlbXMoaXRlbXM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+KSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS4kc2hvd0RldGFpbCkge1xuICAgICAgICB0aGlzLnNldFNob3dEZXRhaWwoaXRlbSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmVtaXRFeHBhbmRFdmVudHMoaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25maWdBZnRlclNlbGVjdFJvdyhyb3dzOiBBcnJheTxhbnk+LCByb3cpIHtcbiAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3QpIHtcbiAgICAgIHRoaXMudW5zZWxlY3RPdGhlclJvd3Mocm93cywgcm93KTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmhpZGVTZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdGhpcy5pc0V2ZXJ5U2VsZWN0ZWQocm93cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RXhwYW5kRXZlbnRzKHJvdzogYW55KSB7XG4gICAgcm93LiRzaG93RGV0YWlsID8gdGhpcy5leHBhbmRlZC5lbWl0KHJvdykgOiB0aGlzLmNvbGxhcHNlZC5lbWl0KHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3RBbGxFdmVudHMoc2VsZWN0QWxsOiBib29sZWFuLCByb3dzOiBhbnkpIHtcbiAgICBzZWxlY3RBbGwgPyB0aGlzLmFsbFNlbGVjdGVkLmVtaXQocm93cykgOiB0aGlzLmFsbFVuc2VsZWN0ZWQuZW1pdChyb3dzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdEV2ZW50cyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2VsZWN0ZWQgPyB0aGlzLnNlbGVjdGVkLmVtaXQocm93KSA6IHRoaXMudW5zZWxlY3RlZC5lbWl0KHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbkNvbG9yKHJvdywgY29sdW1uKSB7XG4gICAgY29uc3QgY29sdW1uQ29sb3IgPSBjb2x1bW4uY29sb3I7XG5cbiAgICByZXR1cm4gaXNUeXBlb2YoY29sdW1uQ29sb3IsICdmdW5jdGlvbicpID8gY29sdW1uQ29sb3Iocm93LCBjb2x1bW4ucHJvcGVydHkpIDogY29sdW1uQ29sb3I7XG4gIH1cblxuICAvLyBSZXRvcm5hIGEgY29sdW5hIGRhIGxpc3RhIGRlIGNvbHVuYXMgcXVlIMOpIGRvIHRpcG8gZGV0YWlsXG4gIHByaXZhdGUgZ2V0Q29sdW1uTWFzdGVyRGV0YWlsKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnR5cGUgPT09ICdkZXRhaWwnKTtcbiAgfVxuXG4gIC8vIENvbHVuYXMgcXVlIHPDo28gaW5zZXJpZGFzIG5vIDxoZWFkPiBkYSB0YWJlbGFcbiAgcHJpdmF0ZSBnZXRNYWluQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wudmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgLy8gUmV0b3JuYSBhcyBjb2x1bmFzIGNvbSBzdGF0dXNcbiAgcHJpdmF0ZSBnZXRTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC50eXBlID09PSAnc3VidGl0bGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFdmVyeVNlbGVjdGVkKGl0ZW1zOiBBcnJheTxhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc29tZUNoZWNrZWRPckluZGV0ZXJtaW5hdGUgPSBpdGVtID0+IGl0ZW0uJHNlbGVjdGVkIHx8IGl0ZW0uJHNlbGVjdGVkID09PSBudWxsO1xuICAgIGNvbnN0IGV2ZXJ5Q2hlY2tlZCA9IGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQ7XG5cbiAgICBpZiAoaXRlbXMuZXZlcnkoZXZlcnlDaGVja2VkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW1zLnNvbWUoc29tZUNoZWNrZWRPckluZGV0ZXJtaW5hdGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlQ29sdW1ucygpIHtcbiAgICB0aGlzLnNldE1haW5Db2x1bW5zKCk7XG4gICAgdGhpcy5zZXRDb2x1bW5NYXN0ZXJEZXRhaWwoKTtcbiAgICB0aGlzLnNldFN1YnRpdGxlQ29sdW1ucygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyZWRDb2x1bW5zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbHVtbkxpbmsoKSB7XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGlmIChjb2x1bW5bJ3R5cGUnXSA9PT0gJ2xpbmsnICYmICFjb2x1bW5bJ2xpbmsnXSkge1xuICAgICAgICBjb2x1bW5bJ2xpbmsnXSA9ICdsaW5rJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sdW1uTWFzdGVyRGV0YWlsKCkge1xuICAgIHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsID0gdGhpcy5nZXRDb2x1bW5NYXN0ZXJEZXRhaWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWFpbkNvbHVtbnMoKSB7XG4gICAgdGhpcy5tYWluQ29sdW1ucyA9IHRoaXMuZ2V0TWFpbkNvbHVtbnMoKTtcblxuICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgPSAhIXRoaXMubWFpbkNvbHVtbnMubGVuZ3RoO1xuXG4gICAgdGhpcy5hbGxDb2x1bW5zV2lkdGhQaXhlbHMgPSB0aGlzLnZlcmlmeVdpZHRoQ29sdW1uc1BpeGVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgdGhpcy5zdWJ0aXRsZUNvbHVtbnMgPSB0aGlzLmdldFN1YnRpdGxlQ29sdW1ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNlbGVjdE90aGVyUm93cyhyb3dzOiBBcnJheTxhbnk+LCByb3cpIHtcbiAgICByb3dzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSAhPT0gcm93KSB7XG4gICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUludGVyYWN0aXZlQ29sdW1ucygpIHtcbiAgICBjb25zdCBoYXNMaW5rT3JEZXRhaWwgPSB0aGlzLmNvbHVtbnMuZmluZChjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdsaW5rJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RldGFpbCcpO1xuICAgIGlmICh0aGlzLnNwYWNpbmcgPT09ICdzbWFsbCcgJiYgKHRoaXMuc2VsZWN0YWJsZSB8fCBoYXNMaW5rT3JEZXRhaWwgfHwgdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAwKSkge1xuICAgICAgdGhpcy5zcGFjaW5nID0gUG9UYWJsZUNvbHVtblNwYWNpbmcuTWVkaXVtO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5V2lkdGhDb2x1bW5zUGl4ZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmhhc01haW5Db2x1bW5zID8gdGhpcy5tYWluQ29sdW1ucy5ldmVyeShjb2x1bW4gPT4gY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5pbmNsdWRlcygncHgnKSkgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VydmljZShzZXJ2aWNlOiBzdHJpbmcsIG1ldGhvZDogJ0dFVCcgfCAnREVMRVRFJykge1xuICAgIGlmIChzZXJ2aWNlICYmIGlzVHlwZW9mKHNlcnZpY2UsICdzdHJpbmcnKSkge1xuICAgICAgdGhpcy5wb1RhYmxlU2VydmljZS5zZXRVcmwoc2VydmljZSwgbWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkUGFyYW1zKHF1ZXJ5UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSkge1xuICAgIGNvbnN0IHsgcGFnZSwgcGFnZVNpemUsIHNvcnRTdG9yZSB9ID0gdGhpcztcblxuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0ge307XG4gICAgY29uc3Qgb3JkZXIgPSB0aGlzLmdldE9yZGVyUGFyYW0oc29ydFN0b3JlKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7IHBhZ2UsIHBhZ2VTaXplLCBvcmRlciwgLi4ucXVlcnlQYXJhbXMgfTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmlsdGVyZWRQYXJhbXNba2V5XSA9IHBhcmFtc1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRQYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIGdldE9yZGVyUGFyYW0oc29ydDogUG9UYWJsZUNvbHVtblNvcnQgPSB7IHR5cGU6IHVuZGVmaW5lZCB9KSB7XG4gICAgY29uc3QgeyBjb2x1bW4sIHR5cGUgfSA9IHNvcnQ7XG5cbiAgICBpZiAoIWNvbHVtbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBQb1RhYmxlQ29sdW1uU29ydFR5cGUuRGVzY2VuZGluZykge1xuICAgICAgcmV0dXJuIGAtJHtjb2x1bW4ucHJvcGVydHl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29sdW1uLnByb3BlcnR5fWA7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVByb3BlcnR5Rml4ZWQoYXJyOiBBcnJheTxhbnk+KSB7XG4gICAgcmV0dXJuIGFyci5tYXAob2JqID0+IHtcbiAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ2ZpeGVkJykpIHtcbiAgICAgICAgb2JqLmZpeGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCk7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNrSW5maW5pdGVTY3JvbGwoKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hhbmdlU2l6ZUxvYWRpbmcoKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hhbmdlSGVhZGVyV2lkdGgoKTtcbn1cbiJdfQ==
|
|
1280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSTVHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQVdyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLEVBQUUsRUFBbUI7UUFDbkIsU0FBUyxFQUFFLHlCQUF5QjtRQUNwQyxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsYUFBYSxFQUFFLGdCQUFnQjtRQUMvQixlQUFlLEVBQUUsbUJBQW1CO1FBQ3BDLFdBQVcsRUFBRSxTQUFTO1FBQ3RCLFlBQVksRUFBRSxnQkFBZ0I7UUFDOUIsbUJBQW1CLEVBQUUsdUJBQXVCO1FBQzVDLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxjQUFjLEVBQUUsaUJBQWlCO1FBQ2pDLFVBQVUsRUFBRSx5Q0FBeUM7UUFDckQsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsZ0JBQWdCLEVBQUUsNEJBQTRCO1FBQzlDLGNBQWMsRUFBRSxzREFBc0Q7S0FDdkU7SUFDRCxFQUFFLEVBQW1CO1FBQ25CLFNBQVMsRUFBRSx1QkFBdUI7UUFDbEMsTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixNQUFNLEVBQUUsOEJBQThCO1FBQ3RDLE9BQU8sRUFBRSx5QkFBeUI7UUFDbEMsYUFBYSxFQUFFLHlCQUF5QjtRQUN4QyxlQUFlLEVBQUUsdUJBQXVCO1FBQ3hDLFdBQVcsRUFBRSxnQkFBZ0I7UUFDN0IsWUFBWSxFQUFFLHVCQUF1QjtRQUNyQyxtQkFBbUIsRUFBRSx3QkFBd0I7UUFDN0MsZ0JBQWdCLEVBQUUsb0JBQW9CO1FBQ3RDLGNBQWMsRUFBRSxvQkFBb0I7UUFDcEMsVUFBVSxFQUFFLDBDQUEwQztRQUN0RCxNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsUUFBUTtRQUNoQixnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsY0FBYyxFQUFFLDJEQUEyRDtLQUM1RTtJQUNELEVBQUUsRUFBbUI7UUFDbkIsU0FBUyxFQUFFLDhCQUE4QjtRQUN6QyxNQUFNLEVBQUUsd0JBQXdCO1FBQ2hDLGVBQWUsRUFBRSx3QkFBd0I7UUFDekMsTUFBTSxFQUFFLHlCQUF5QjtRQUNqQyxPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLGFBQWEsRUFBRSxvQkFBb0I7UUFDbkMsV0FBVyxFQUFFLFlBQVk7UUFDekIsWUFBWSxFQUFFLDBCQUEwQjtRQUN4QyxtQkFBbUIsRUFBRSxzQkFBc0I7UUFDM0MsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLGNBQWMsRUFBRSx3QkFBd0I7UUFDeEMsVUFBVSxFQUFFLHFDQUFxQztRQUNqRCxNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsU0FBUztRQUNqQixnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsY0FBYyxFQUFFLHlEQUF5RDtLQUMxRTtJQUNELEVBQUUsRUFBbUI7UUFDbkIsU0FBUyxFQUFFLHlCQUF5QjtRQUNwQyxNQUFNLEVBQUUsbUJBQW1CO1FBQzNCLE1BQU0sRUFBRSx5QkFBeUI7UUFDakMsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixhQUFhLEVBQUUsb0JBQW9CO1FBQ25DLGVBQWUsRUFBRSxzQkFBc0I7UUFDdkMsV0FBVyxFQUFFLFVBQVU7UUFDdkIsWUFBWSxFQUFFLFVBQVU7UUFDeEIsbUJBQW1CLEVBQUUsMkJBQTJCO1FBQ2hELGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxjQUFjLEVBQUUsa0JBQWtCO1FBQ2xDLFVBQVUsRUFBRSwrQ0FBK0M7UUFDM0QsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLGNBQWMsRUFBRSwwREFBMEQ7S0FDM0U7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUFvVjlCO0lBRUE7SUFyVlY7Ozs7Ozs7O09BUUc7SUFDc0Usa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQzdHOzs7Ozs7OztPQVFHO0lBQ29FLGdCQUFnQixHQUFZLElBQUksQ0FBQztJQUV4Rzs7Ozs7Ozs7T0FRRztJQUNILElBQTBDLHNCQUFzQixDQUFDLElBQWE7UUFDNUUsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdkQ7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDbUUsZUFBZSxHQUFZLElBQUksQ0FBQztJQUV0Rzs7Ozs7Ozs7T0FRRztJQUMrRCxZQUFZLEdBQVksS0FBSyxDQUFDO0lBRWhHOzs7Ozs7OztPQVFHO0lBQ21FLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDdkc7Ozs7Ozs7OztPQVNHO0lBQ3NELElBQUksR0FBWSxLQUFLLENBQUM7SUFFL0U7Ozs7OztPQU1HO0lBQ29FLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUV6Rzs7Ozs7OztPQU9HO0lBQ3lELE9BQU8sR0FBWSxLQUFLLENBQUM7SUFFckY7Ozs7Ozs7O09BUUc7SUFDaUUsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUVuRzs7Ozs7O09BTUc7SUFDK0QsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUVoRzs7Ozs7Ozs7T0FRRztJQUN3RSxvQkFBb0IsR0FBWSxJQUFJLENBQUM7SUFFaEg7Ozs7Ozs7O09BUUc7SUFDK0QsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUUvRjs7Ozs7Ozs7OztPQVVHO0lBQ3FCLFVBQVUsQ0FBVTtJQUU1Qzs7Ozs7Ozs7Ozs7T0FXRztJQUNxQixVQUFVLEdBQXVCLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUV2Rjs7Ozs7T0FLRztJQUN1QixXQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFbkY7Ozs7O09BS0c7SUFDeUIsYUFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRXZGOzs7Ozs7OztPQVFHO0lBQ29CLFNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUU5RTs7Ozs7Ozs7T0FRRztJQUNtQixRQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFNUU7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDdUIsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRW5GOzs7Ozs7T0FNRztJQUNtQixRQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFNUU7Ozs7Ozs7Ozs7OztPQVlHO0lBQ29CLFFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFFekc7Ozs7Ozs7Ozs7O09BV0c7SUFDa0IsTUFBTSxHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztJQUVyRzs7Ozs7T0FLRztJQUNxQixVQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFaEY7Ozs7Ozs7O09BUUc7SUFDaUMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFFN0Y7Ozs7Ozs7O09BUUc7SUFDaUMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFFN0YscUJBQXFCLENBQVU7SUFDL0Isa0JBQWtCLENBQWdCO0lBQ2xDLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsV0FBVyxHQUF5QixFQUFFLENBQUM7SUFDdkMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixZQUFZLEdBQUcsRUFBRSxRQUFRLEVBQWlCLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbEUsZUFBZSxHQUF5QixFQUFFLENBQUM7SUFDM0MsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxVQUFVLEdBQWEsS0FBSyxDQUFDO0lBQzdCLGNBQWMsQ0FBdUI7SUFDckMsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBQ2xDLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFDL0IsWUFBWSxDQUFLO0lBQ2pCLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFDL0IsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQ3JCLHFCQUFxQixHQUFZLEtBQUssQ0FBQztJQUN2QyxRQUFRLEdBQXlCLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztJQUM3RCxnQkFBZ0IsQ0FBZ0I7SUFDaEMsUUFBUSxHQUEwQixFQUFFLENBQUM7SUFDckMsUUFBUSxHQUF5QixFQUFFLENBQUM7SUFDcEMsVUFBVSxDQUFVO0lBQ3BCLFlBQVksR0FBVyxxQkFBcUIsQ0FBQztJQUM3QyxPQUFPLENBQVU7SUFDakIsV0FBVyxHQUFhLEtBQUssQ0FBQztJQUM5QixNQUFNLENBQXVCO0lBQzdCLFNBQVMsQ0FBa0I7SUFDM0IsUUFBUSxHQUFhLEtBQUssQ0FBQztJQUMzQixXQUFXLENBQVc7SUFDdEIsUUFBUSxHQUFXLGVBQWUsQ0FBQztJQUNuQyxXQUFXLENBQVM7SUFDcEIsaUJBQWlCLENBQVM7SUFDMUIsMEJBQTBCLENBQWU7SUFDekMsU0FBUyxDQUFvQjtJQUM3Qix1QkFBdUIsR0FBWSxHQUFHLENBQUM7SUFDdkMsZUFBZSxHQUFhLEtBQUssQ0FBQztJQUNsQyxVQUFVLEdBQWEsS0FBSyxDQUFDO0lBQzdCLHVCQUF1QixHQUFhLEtBQUssQ0FBQztJQUVsRCxZQUNVLE1BQXFCLEVBQzdCLGVBQWtDLEVBQzFCLGNBQThCO1FBRjlCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFFckIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBc0IsS0FBSyxDQUFDLEtBQWlCO1FBQzNDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDakQ7UUFFRCxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDeEI7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUVoRSw4REFBOEQ7UUFDOUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBd0IsT0FBTyxDQUFDLE9BQTZCO1FBQzNELE1BQU0scUJBQXFCLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUU5QixJQUFJLHFCQUFxQixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQTBCLFNBQVMsQ0FBQyxLQUFhO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDO0lBQ3ZGLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUFpQyxjQUFjLENBQUMsS0FBYTtRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7SUFDekYsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBdUIsTUFBTSxDQUFDLE1BQWM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUE0QixVQUFVLENBQUMsVUFBbUI7UUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWdERztJQUNILElBQXlCLFFBQVEsQ0FBQyxLQUFzQjtRQUN0RCxJQUFJLEtBQUssWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNmLEdBQUcsc0JBQXNCLENBQUMsZUFBZSxDQUFDO2dCQUMxQyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3hDLEdBQUcsS0FBSzthQUNULENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUF3QixPQUFPLENBQUMsT0FBZ0I7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsSUFBd0IsT0FBTyxDQUFDLE9BQTZCO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsSUFBMkIsVUFBVSxDQUFDLEtBQWM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBUSxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILElBQWdDLGNBQWMsQ0FBQyxLQUFjO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNEOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUF5QyxzQkFBc0IsQ0FBQyxLQUFhO1FBQzNFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLEdBQUcsR0FBRyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F5Qkc7SUFDSCxJQUE0QixVQUFVLENBQUMsT0FBZTtRQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxJQUErQixnQkFBZ0IsQ0FBQyxPQUFlO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxJQUF3QixPQUFPLENBQUMsS0FBMkI7UUFDekQsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILElBQWlDLGVBQWUsQ0FBQyxNQUFxQjtRQUNwRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxNQUFNLFVBQVUsR0FBRztZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLFNBQVM7WUFDVCxNQUFNO1lBQ04sTUFBTTtZQUNOLFVBQVU7WUFDVixVQUFVO1lBQ1YsVUFBVTtZQUNWLE1BQU07WUFDTixPQUFPO1lBQ1AsTUFBTTtZQUNOLGNBQWM7WUFDZCxnQkFBZ0I7U0FDakIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FDTCxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQ2hILENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU87YUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7YUFDMUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztJQUMxRyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUEwQixTQUFTLENBQUMsU0FBa0I7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLElBQUksS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRWpDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFRO1FBQ2hCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBRS9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDdEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFRO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDdkIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVE7UUFDbkIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBUTtRQUN0QixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFFekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBcUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDdkUsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFMUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVsSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFFNUIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBZ0Q7UUFDL0QsTUFBTSxjQUFjLEdBQStCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2RixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELDBCQUEwQixDQUFDLElBQXdCO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQTJDO1FBQ3hELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsTUFBcUIsRUFBRSxTQUFrQixFQUFFLElBQWlCO1FBQ3BFLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSSxJQUFJLEVBQUU7WUFDUixTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDNUM7YUFBTTtZQUNMLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3hFO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQVUsRUFBRSxDQUM3QyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUM3RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQVM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixPQUFPLElBQUk7YUFDUixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUM7YUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFUyxhQUFhLENBQUMsYUFBMkIsRUFBRSxZQUFxQjtRQUN4RSxNQUFNLFVBQVUsR0FBRyxPQUFPLGFBQWEsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVuRSxHQUFHLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUNqQyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBb0M7UUFDM0QsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsSUFBZ0IsRUFBRSxHQUFHO1FBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVE7UUFDL0IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxTQUFrQixFQUFFLElBQVM7UUFDdkQsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVE7UUFDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDaEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUVqQyxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDN0YsQ0FBQztJQUVELDREQUE0RDtJQUNwRCxxQkFBcUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdEQUFnRDtJQUN4QyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxnQ0FBZ0M7SUFDeEIsa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxlQUFlLENBQUMsS0FBaUI7UUFDdkMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7UUFDckYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTVDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBZ0IsRUFBRSxHQUFHO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO2dCQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDeEcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksZUFBZSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3RHLElBQUksQ0FBQyxPQUFPLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckgsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFlLEVBQUUsTUFBd0I7UUFDMUQsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsV0FBZ0Q7UUFDeEUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRTNDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUV6RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtZQUN4QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDM0QsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNuQztTQUNGO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUEwQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7UUFDakUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxLQUFLLHFCQUFxQixDQUFDLFVBQVUsRUFBRTtZQUM3QyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzlCO1FBRUQsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBZTtRQUN6QyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMvQixHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNuQjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhFQXRuQ21CLG9CQUFvQjs2REFBcEIsb0JBQW9CLDZIQVVhLGdCQUFnQiw4R0FVbEIsZ0JBQWdCLG9OQStCakIsZ0JBQWdCLGlHQVdwQixnQkFBZ0IsMkdBV1osZ0JBQWdCLHdFQVc3QixnQkFBZ0IsOEdBU0YsZ0JBQWdCLGlGQVUzQixnQkFBZ0IscUdBV1IsZ0JBQWdCLGlHQVNsQixnQkFBZ0IsMEhBV1AsZ0JBQWdCLCtGQVd6QixnQkFBZ0I7O2lGQWpKMUMsb0JBQW9CO2NBRHpDLFNBQVM7MkdBV2lFLGtCQUFrQjtrQkFBMUYsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFVQSxnQkFBZ0I7a0JBQXRGLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBVzNCLHNCQUFzQjtrQkFBL0QsS0FBSzttQkFBQyw2QkFBNkI7WUFvQmtDLGVBQWU7a0JBQXBGLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBV0YsWUFBWTtrQkFBN0UsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFXTSxlQUFlO2tCQUFwRixLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQVdYLElBQUk7a0JBQTVELEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQVNnQixnQkFBZ0I7a0JBQXRGLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBVVQsT0FBTztrQkFBbEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBV1UsYUFBYTtrQkFBaEYsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFTQSxZQUFZO2tCQUE3RSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQVdXLG9CQUFvQjtrQkFBOUYsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFXUCxXQUFXO2tCQUE1RSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQWF4QyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFjRSxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFRSSxXQUFXO2tCQUFwQyxNQUFNO21CQUFDLGdCQUFnQjtZQVFJLGFBQWE7a0JBQXhDLE1BQU07bUJBQUMsa0JBQWtCO1lBV0gsU0FBUztrQkFBL0IsTUFBTTttQkFBQyxhQUFhO1lBV0MsUUFBUTtrQkFBN0IsTUFBTTttQkFBQyxZQUFZO1lBbUJNLFdBQVc7a0JBQXBDLE1BQU07bUJBQUMsZ0JBQWdCO1lBU0YsUUFBUTtrQkFBN0IsTUFBTTttQkFBQyxZQUFZO1lBZUcsUUFBUTtrQkFBOUIsTUFBTTttQkFBQyxhQUFhO1lBY0EsTUFBTTtrQkFBMUIsTUFBTTttQkFBQyxXQUFXO1lBUUssVUFBVTtrQkFBakMsTUFBTTttQkFBQyxjQUFjO1lBV2Msb0JBQW9CO2tCQUF2RCxNQUFNO21CQUFDLDBCQUEwQjtZQVdFLG9CQUFvQjtrQkFBdkQsTUFBTTttQkFBQywwQkFBMEI7WUF3RFosS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBaUNRLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQXFDUSxTQUFTO2tCQUFsQyxLQUFLO21CQUFDLGFBQWE7WUFtQmEsY0FBYztrQkFBOUMsS0FBSzttQkFBQyxvQkFBb0I7WUFpQkosTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVO1lBaUJXLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQXlERyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF3QkssT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBc0JNLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQXVCUyxVQUFVO2tCQUFwQyxLQUFLO21CQUFDLGNBQWM7WUFxQlcsY0FBYztrQkFBN0MsS0FBSzttQkFBQyxtQkFBbUI7WUFrQmUsc0JBQXNCO2tCQUE5RCxLQUFLO21CQUFDLDRCQUE0QjtZQWtDUCxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUF5QlMsZ0JBQWdCO2tCQUE5QyxLQUFLO21CQUFDLGtCQUFrQjtZQXNCRCxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUFxQmUsZUFBZTtrQkFBL0MsS0FBSzttQkFBQyxvQkFBb0I7WUFnRUQsU0FBUztrQkFBbEMsS0FBSzttQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUG9EYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWRhdGUvcG8tZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsIGNvbnZlcnRUb0Jvb2xlYW4sIGlzVHlwZW9mLCBzb3J0VmFsdWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvU2VhcmNoRmlsdGVyTW9kZSB9IGZyb20gJy4uL3BvLXNlYXJjaC9lbnVtL3BvLXNlYXJjaC1maWx0ZXItbW9kZS5lbnVtJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5Tb3J0VHlwZSB9IGZyb20gJy4vZW51bXMvcG8tdGFibGUtY29sdW1uLXNvcnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5TcGFjaW5nIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1zcGFjaW5nLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5Tb3J0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWNvbHVtbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRhYmxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUZpbHRlcmVkSXRlbXNQYXJhbXMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtZmlsdGVyZWQtaXRlbXMtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVSZXNwb25zZUFwaSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1yZXNwb25zZS1hcGkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgUXVlcnlQYXJhbXNUeXBlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcblxuZXhwb3J0IGNvbnN0IHBvVGFibGVDb250YWluZXIgPSBbJ2JvcmRlcicsICdzaGFkb3cnXTtcbmV4cG9ydCBjb25zdCBwb1RhYmxlQ29udGFpbmVyRGVmYXVsdCA9ICdib3JkZXInO1xuZXhwb3J0IGNvbnN0IHBvVGFibGVQYXJhbURlbGV0ZUFwaSA9ICdpZCc7XG5cbmV4cG9ydCBjb25zdCBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogPFBvVGFibGVMaXRlcmFscz57XG4gICAgbm9Db2x1bW5zOiAnQ29sdW1ucyBhcmUgbm90IGRlZmluZWQnLFxuICAgIG5vRGF0YTogJ05vIGRhdGEgZm91bmQnLFxuICAgIG5vSXRlbTogJ05vIHNlbGVjdGVkIGl0ZW0nLFxuICAgIG9uZUl0ZW06ICcxIHNlbGVjdGVkIGl0ZW0nLFxuICAgIG11bHRpcGxlSXRlbXM6ICdzZWxlY3RlZCBpdGVtcycsXG4gICAgbm9WaXNpYmxlQ29sdW1uOiAnTm8gdmlzaWJsZSBjb2x1bW4nLFxuICAgIGxvYWRpbmdEYXRhOiAnTG9hZGluZycsXG4gICAgbG9hZE1vcmVEYXRhOiAnTG9hZCBtb3JlIGRhdGEnLFxuICAgIHNlZUNvbXBsZXRlU3VidGl0bGU6ICdTZWUgY29tcGxldGUgc3VidGl0bGUnLFxuICAgIGNvbXBsZXRlU3VidGl0bGU6ICdDb21wbGV0ZSBzdWJ0aXRsZScsXG4gICAgY29sdW1uc01hbmFnZXI6ICdDb2x1bW5zIG1hbmFnZXInLFxuICAgIGJvZHlEZWxldGU6ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT8nLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgZGVsZXRlOiAnRGVsZXRlJyxcbiAgICBkZWxldGVTdWNjZXNzZnVsOiAnSXRlbXMgcmVtb3ZlZCBzdWNjZXNzZnVsbHknLFxuICAgIGRlbGV0ZUFwaUVycm9yOiAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCwgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlcidcbiAgfSxcbiAgZXM6IDxQb1RhYmxlTGl0ZXJhbHM+e1xuICAgIG5vQ29sdW1uczogJ0NvbHVtbmFzIG5vIGRlZmluaWRhcycsXG4gICAgbm9EYXRhOiAnRGF0b3Mgbm8gZW5jb250cmFkb3MnLFxuICAgIG5vSXRlbTogJ05pbmfDum4gZWxlbWVudG8gc2VsZWNjaW9uYWRvJyxcbiAgICBvbmVJdGVtOiAnMSBlbGVtZW50byBzZWxlY2Npb25hZG8nLFxuICAgIG11bHRpcGxlSXRlbXM6ICdlbGVtZW50b3Mgc2VsZWNjaW9uYWRvcycsXG4gICAgbm9WaXNpYmxlQ29sdW1uOiAnU2luIGNvbHVtbmFzIHZpc2libGVzJyxcbiAgICBsb2FkaW5nRGF0YTogJ0NhcmdhbmRvIGRhdG9zJyxcbiAgICBsb2FkTW9yZURhdGE6ICdDYXJnYXIgbcOhcyByZXN1bHRhZG9zJyxcbiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAnVmVyIHN1YnRpdHVsbyBjb21wbGV0bycsXG4gICAgY29tcGxldGVTdWJ0aXRsZTogJ1N1YnRpdHVsbyBjb21wbGV0bycsXG4gICAgY29sdW1uc01hbmFnZXI6ICdHZXJlbnRlIGRlIGNvbHVtbmEnLFxuICAgIGJvZHlEZWxldGU6ICfCv1JlYWxtZW50ZSBkZXNlYSBlbGltaW5hciBlc3RlIGVsZW1lbnRvPycsXG4gICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgIGRlbGV0ZTogJ0JvcnJhcicsXG4gICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ0VsZW1lbnRvcyBlbGltaW5hZG9zIGNvbiDDqXhpdG8nLFxuICAgIGRlbGV0ZUFwaUVycm9yOiAnT2N1cnJpw7MgdW4gZXJyb3IgaW5lc3BlcmFkbywgaW50w6ludGFsbyBkZSBudWV2byBtw6FzIHRhcmRlJ1xuICB9LFxuICBwdDogPFBvVGFibGVMaXRlcmFscz57XG4gICAgbm9Db2x1bW5zOiAnTmVuaHVtYSBkZWZpbmnDp8OjbyBkZSBjb2x1bmFzJyxcbiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJyxcbiAgICBub1Zpc2libGVDb2x1bW46ICdOZW5odW1hIGNvbHVuYSB2aXPDrXZlbCcsXG4gICAgbm9JdGVtOiAnTmVuaHVtIGl0ZW0gc2VsZWNpb25hZG8nLFxuICAgIG9uZUl0ZW06ICcxIGl0ZW0gc2VsZWNpb25hZG8nLFxuICAgIG11bHRpcGxlSXRlbXM6ICdpdGVucyBzZWxlY2lvbmFkb3MnLFxuICAgIGxvYWRpbmdEYXRhOiAnQ2FycmVnYW5kbycsXG4gICAgbG9hZE1vcmVEYXRhOiAnQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zJyxcbiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAnVmVyIGxlZ2VuZGEgY29tcGxldGEnLFxuICAgIGNvbXBsZXRlU3VidGl0bGU6ICdMZWdlbmRhIGNvbXBsZXRhJyxcbiAgICBjb2x1bW5zTWFuYWdlcjogJ0dlcmVuY2lhZG9yIGRlIGNvbHVuYXMnLFxuICAgIGJvZHlEZWxldGU6ICdEZXNlamEgcmVhbG1lbnRlIGV4Y2x1aXIgZXNzZSBpdGVtPycsXG4gICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgIGRlbGV0ZTogJ0V4Y2x1aXInLFxuICAgIGRlbGV0ZVN1Y2Nlc3NmdWw6ICdJdGVucyByZW1vdmlkb3MgY29tIHN1Y2Vzc28nLFxuICAgIGRlbGV0ZUFwaUVycm9yOiAnT2NvcnJldSB1bSBlcnJvIGluZXNwZXJhZG8sIHRlbnRlIG5vdmFtZW50ZSBtYWlzIHRhcmRlISdcbiAgfSxcbiAgcnU6IDxQb1RhYmxlTGl0ZXJhbHM+e1xuICAgIG5vQ29sdW1uczogJ9Cd0LXRgiDQvtC/0YDQtdC00LXQu9C10L3QuNGPINGB0YLQvtC70LHRhtCwJyxcbiAgICBub0RhdGE6ICfQlNCw0L3QvdGL0LUg0L3QtSDQvdCw0LnQtNC10L3RiycsXG4gICAgbm9JdGVtOiAn0J3QtdGCINCy0YvQsdGA0LDQvdC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAnLFxuICAgIG9uZUl0ZW06ICcxINGN0LvQtdC80LXQvdGCINCy0YvQsdGA0LDQvScsXG4gICAgbXVsdGlwbGVJdGVtczogJ9Cy0YvQsdGA0LDQvdC90YvQtSDRjdC70LXQvNC10L3RgtGLJyxcbiAgICBub1Zpc2libGVDb2x1bW46ICfQvdC10YIg0LLQuNC00LjQvNGL0YUg0YHRgtC+0LvQsdGG0L7QsicsXG4gICAgbG9hZGluZ0RhdGE6ICfQl9Cw0LPRgNGD0LfQutCwJyxcbiAgICBsb2FkTW9yZURhdGE6ICfQl9Cw0LPRgNGD0LfQutCwJyxcbiAgICBzZWVDb21wbGV0ZVN1YnRpdGxlOiAn0J/QvtGB0LzQvtGC0YDQtdGC0Ywg0L/QvtC70L3Ri9C5INGB0YPQsdGC0LjRgtGAJyxcbiAgICBjb21wbGV0ZVN1YnRpdGxlOiAn0J/QvtC70L3Ri9C5INC30LDQs9C+0LvQvtCy0L7QuicsXG4gICAgY29sdW1uc01hbmFnZXI6ICfQvNC10L3QtdC00LbQtdGAINC60L7Qu9C+0L3QvtC6JyxcbiAgICBib2R5RGVsZXRlOiAn0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIg0Y3Qu9C10LzQtdC90YI/JyxcbiAgICBjYW5jZWw6ICfQntGC0LzQtdC90LAnLFxuICAgIGRlbGV0ZTogJ9Cj0LTQsNC70LjRgtGMJyxcbiAgICBkZWxldGVTdWNjZXNzZnVsOiAn0K3Qu9C10LzQtdC90YLRiyDRg9GB0L/QtdGI0L3QviDRg9C00LDQu9C10L3RiycsXG4gICAgZGVsZXRlQXBpRXJyb3I6ICfQn9GA0L7QuNC30L7RiNC70LAg0L3QtdC/0YDQtdC00LLQuNC00LXQvdC90LDRjyDQvtGI0LjQsdC60LAsINC/0L7QstGC0L7RgNC40YLQtSDQv9C+0L/Ri9GC0LrRgyDQv9C+0LfQttC1J1xuICB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSBkZSB0YWJlbGEgw6kgdXRpbGl6YWRvIHBhcmEgZXhpYmnDp8OjbyBkZSBkYWRvcyBjb20gZGlmZXJlbnRlcyB0aXBvcyBjb21vIHBvciBleGVtcGxvIHRleHRvcywgZGF0YSwgaG9yYXMgZSBuw7ptZXJvcyBjb21cbiAqIGZvcm1hdG8gcGVyc29uYWxpemFkby5cbiAqXG4gKiBUYW1iw6ltIMOpIHBvc3NpdmVsIGNyaWFyIHRhYmVsYXMgY29tIG9yZGVuYcOnw6NvIGRlIGRhZG9zLCBsaW5oYXMgY29tIGRldGFsaGVzLCBjb2x1bmEgcGFyYSBzZWxlw6fDo28gZGUgbGluaGFzLCBjb2x1bmEgY29tIGHDp8O1ZXMgZSB0YW1iw6ltXG4gKiBjYXJyZWdhbWVudG8gcG9yIGRlbWFuZGEgYXRyYXbDqXMgZG8gYm90w6NvICoqQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zKiouXG4gKlxuICogPiBBcyBsaW5oYXMgZGUgZGV0YWxoZXMgcG9kZW0gdGFtYsOpbSBzZXIgY3VzdG9taXphZGFzIGF0cmF2w6lzIGRvIFtgcC10YWJsZS1yb3ctdGVtcGxhdGVgXSgvZG9jdW1lbnRhdGlvbi9wby10YWJsZS1yb3ctdGVtcGxhdGUpLlxuICpcbiAqID4gQXMgY29sdW5hcyBwb2RlbSBzZXIgY3VzdG9taXphZGFzIGF0cmF2w6lzIGRvcyB0ZW1wbGF0ZXMgW2BwLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZWBdKC9kb2N1bWVudGF0aW9uL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZSlcbiAqIGUgW2BwLXRhYmxlLWNlbGwtdGVtcGxhdGVgXSgvZG9jdW1lbnRhdGlvbi9wby10YWJsZS1jZWxsLXRlbXBsYXRlKS5cbiAqXG4gKiBPIGNvbXBvbmVudGUgcGVybWl0ZSBnZXJlbmNpYXIgYSBleGliacOnw6NvIGRhcyBjb2x1bmFzIGRpbmFtaWNhbWVudGUuIEVzdGEgZnVuY2lvbmFsaWRhZGUgcG9kZSBzZXIgYWNlc3NhZGEgYXRyYXbDqXMgZG8gw61jb25lIGRlIGVuZ3JlbmFnZW1cbiAqIG5vIGNhbnRvIHN1cGVyaW9yIGRpcmVpdG8gZG8gY2FiZcOnYWxobyBkYSB0YWJlbGEuXG4gKlxuICogQ2FzbyBhIGxhcmd1cmEgZGUgdG9kYXMgYXMgY29sdW5hcyBmb3JlbSBkZWZpbmlkYXMgZSBvIHRvdGFsIHVsdHJhcGFzc2FyIG8gdGFtYW5obyB0YWJlbGEsIHNlcsOhIGV4aWJpZG8gdW0gKnNjcm9sbCogbmEgaG9yaXpvbnRhbCBwYXJhIGFcbiAqIGNvbXBsZXRhIHZpc3VhbGl6YcOnw6NvIGRvcyBkYWRvcy5cbiAqXG4gKiAjIyMjIFRva2VucyBjdXN0b21pesOhdmVpc1xuICpcbiAqIMOJIHBvc3PDrXZlbCBhbHRlcmFyIG8gZXN0aWxvIGRvIGNvbXBvbmVudGUgdXNhbmRvIG9zIHNlZ3VpbnRlcyB0b2tlbnMgKENTUyk6XG4gKlxuICogPiBQYXJhIG1haW9yZXMgaW5mb3JtYcOnw7VlcywgYWNlc3NlIG8gZ3VpYSBbUGVyc29uYWxpemFuZG8gbyBUZW1hIFBhZHLDo28gY29tIFRva2VucyBDU1NdKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL3RoZW1lLWN1c3RvbWl6YXRpb24pLlxuICpcbiAqIHwgUHJvcHJpZWRhZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmnDp8OjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFsb3IgUGFkcsOjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqRGVmYXVsdCBWYWx1ZXMqKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tZm9udC1mYW1pbHlgICAgICAgICAgICAgICAgICAgICAgICAgfCBGYW3DrWxpYSB0aXBvZ3LDoWZpY2EgdXNhZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtZmFtaWx5LXRoZW1lKWAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtY29sb3JgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wMClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3JgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRhIHRhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstOTUpYCAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1iYWNrZ3JvdW5kLXN0cmlwZWQtY29sb3JgICAgICAgICAgICB8IENvciBkbyBiYWNrZ3JvdW5kIHF1YW5kbyBzdHJpcGVkICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMDUpYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWxpbmVgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRhcyBsaW5oYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1taWQtNDApYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipIb3ZlcioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1jb2xvci1ob3ZlcmAgICAgICAgICAgICAgICAgICAgICAgICB8IENvciBwcmluY2lwYWwgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1ob3ZlcilgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtY29sb3ItaG92ZXJgICAgICAgICAgICAgIHwgQ29yIGRlIGJhY2tncm91bmQgbm8gZXN0YWRvIGhvdmVyICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYnJhbmQtMDEtbGlnaHRlcilgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb2N1c2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgLS1vdXRsaW5lLWNvbG9yLWZvY3VzZWRgICAgICAgICAgICAgICB8IENvciBkbyBvdXRsaW5lIGRvIGVzdGFkbyBkZSBmb2N1cyAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLWFjdGlvbi1mb2N1cylgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRGlzYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItZGlzYWJsZWRgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLW1pZC00MClgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkhlYWRsaW5lKiogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJhY2tncm91bmQtY29sb3ItaGVhZGxpbmVgICZuYnNwOyAgIHwgQ29yIGRvIGNhYmXDp2FsaG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWNvbG9yLW5ldXRyYWwtbGlnaHQtMTApYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWZvbnQtd2VpZ2h0LWhlYWRsaW5lYCAgICAgICAgICAgICAgIHwgUGVzbyBkYSBmb250ZSBkbyBjYWJlw6dhbGhvICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpYCAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqU2VsZWN0ZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1zZWxlY3RlZGAmbmJzcDsgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGUgc2VsZWNpb25hZG8gICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodGVzdClgICAgICAgICAgICAgICAgICAgfFxuICogfCAqKkFjdGl2ZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWFjdGl2ZWRgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRvIHRleHRvIG5vIGVzdGFkbyBkZSBzZWxlY2lvbmFkbyAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTkwKWAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYmFja2dyb3VuZC1jb2xvci1hY3RpdmVkYCAgICAgICAgICAgfCBDb3IgZGUgYmFja2dyb3VuZCBubyBlc3RhZG8gZGUgc2VsZWNpb25hZG8gICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodClgICAgICAgICAgICAgICAgICAgICAgfFxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9UYWJsZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcywgcmVzcG9uc8OhdmVsIHBlbGEgZGVmaW5pw6fDo28gZGUgcXVhaXMgY29sdW5hcyBzZXLDo28gZXhpYmlkYXMsIHNlamEgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1jb2x1bW5zLW1hbmFnZXInLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZUNvbHVtbnNNYW5hZ2VyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIGFzIGHDp8O1ZXMgZW0gbG90ZSwgcmVzcG9uc8OhdmVsIHBvciBleGNsdWlyIGUgZXhpYmlyIGEgcXVhbnRpZGFkZSBkZSBpdGVucywgc2VqYW0gZXNjb25kaWRhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1iYXRjaC1hY3Rpb25zJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGhpZGVCYXRjaEFjdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgcXVlIGFzIGHDp8O1ZXMgcGFyYSBmaXhhciB1bWEgY29sdW5hIGRhIHRhYmVsYSBzZWphbSBlc2NvbmRpZGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1hY3Rpb24tZml4ZWQtY29sdW1ucycpIHNldCBoaWRlQWN0aW9uRml4ZWRDb2x1bW5zKGhpZGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoaGlkZSkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5yZW1vdmVQcm9wZXJ0eUZpeGVkKHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIHRoaXMuX2hpZGVBY3Rpb25GaXhlZENvbHVtbnMgPSBoaWRlO1xuICB9XG5cbiAgZ2V0IGhpZGVBY3Rpb25GaXhlZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVBY3Rpb25GaXhlZENvbHVtbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHF1ZSBvIGNhbXBvIGRlIHBlc3F1aXNhIHNlamEgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXRhYmxlLXNlYXJjaCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlVGFibGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgZmVjaGFyIHVtIGRldGFsaGUgb3Ugcm93IHRlbXBsYXRlIGF1dG9tYXRpY2FtZW50ZSwgYW8gYWJyaXIgb3V0cm8gaXRlbS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWF1dG8tY29sbGFwc2UnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0NvbGxhcHNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgc2VqYSBhZGljaW9uYWRvIG8gZXN0YWRvIGRlIGNhcnJlZ2FtZW50byBubyBib3TDo28gXCJDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3NcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWxvYWRpbmctc2hvdy1tb3JlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGxvYWRpbmdTaG93TW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBlbSB0b2RhcyBhcyBjb2x1bmFzIGEgb3DDp8OjbyBkZSBvcmRlbmHDp8OjbyBkZSBkYWRvcy4gQ2FzbyBhIGNvbHVuYSBzZWphIGRvIHRpcG8gJ2RhdGEnIG91ICdkYXRlVGltZScgYVxuICAgKiBtZXNtYSBkZXZlIHJlc3BlaXRhciBvcyB0aXBvcyBkZSBlbnRyYWRhIGRlZmluaWRvcyBwYXJhIHF1ZSBzZWphbSBvcmRlbmFkYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zb3J0JywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHNvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFNlIHZlcmRhZGVpcm8sIHRvcm5hIGhhYmlsaXRhZG8gbyBib3TDo28gXCJDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3NcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXNob3ctbW9yZS1kaXNhYmxlZCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBzaG93TW9yZURpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBvdSBkZXNhYmlsaXRhIG8gZXN0aWxvIGxpc3RyYWRvIGRhIHRhYmVsYSAoYHN0cmlwZWRgKS5cbiAgICogPiBSZWNvbWVuZGFkbyBwYXJhIHRhYmVsYXMgY29tIG1haW9yIG7Dum1lcm8gZGUgZGFkb3MsIGZhY2lsaXRhbmRvIGEgc3VhIHZpc3VhbGl6YcOnw6NvIG5hIHRhYmVsYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXN0cmlwZWQnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgc3RyaXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXNjb25kZSBvICpjaGVja2JveCogcGFyYSBzZWxlw6fDo28gZGUgdG9kYXMgYXMgbGluaGFzLlxuICAgKlxuICAgKiA+IFNlbXByZSByZWNlYmVyw6EgKnRydWUqIGNhc28gYSBzZWxlw6fDo28gZGUgYXBlbmFzIHVtYSBsaW5oYSBlc3RlamEgYXRpdmEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXNlbGVjdC1hbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaGlkZVNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBzb21lbnRlIHVtYSBsaW5oYSBkYSB0YWJlbGEgcG9kZSBzZXIgc2VsZWNpb25hZGEuXG4gICAqXG4gICAqID4gRXN0YSBkZWZpbmnDp8OjbyBuw6NvIHNlIGFwbGljYSBhb3MgaXRlbnMgZmlsaG9zLCBvcyBtZXNtb3MgcG9zc3VlbSBjb21wb3J0YW1lbnRvIGluZGVwZW5kZW50ZSBkbyBpdGVtIHBhaS5cbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1zaW5nbGUtc2VsZWN0JywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHNpbmdsZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBzZWxlY2lvbmFyIHVtIGl0ZW0gZGEgdGFiZWxhIGNsaWNhbmRvIG5hIGxpbmhhLlxuICAgKlxuICAgKiA+IENhc28gaGFqYSBuZWNlc3NpZGFkZSBkZSBzZWxlY2lvbmFyIG8gaXRlbSBhcGVuYXMgdmlhIHJhZGlvIG91IGNoZWNrYm94LCBkZXZlLXNlIGRlZmluaXIgZXN0YSBwcm9wcmllZGFkZSBjb21vIGBmYWxzZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXNlbGVjdGFibGUtZW50aXJlLWxpbmUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgc2VsZWN0YWJsZUVudGlyZUxpbmU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgYSBjb2x1bmEgZGUgYcOnw7VlcyBmaWNhcsOhIG5vIGxhZG8gZGlyZWl0byBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hY3Rpb25zLXJpZ2h0JywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGFjdGlvblJpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBxdWFudGlkYWRlIG3DoXhpbWEgZGUgY29sdW5hcyBxdWUgc2Vyw6NvIGV4aWJpZGFzIG5hIHRhYmVsYS5cbiAgICpcbiAgICogUXVhbmRvIGNoZWdhciBubyB2YWxvciBpbmZvcm1hZG8sIGFzIGNvbHVuYXMgcXVlIG7Do28gZXN0aXZlcmVtIHNlbGVjaW9uYWRhcyBmaWNhcsOjb1xuICAgKiBkZXNhYmlsaXRhZGFzIGUgY2FzbyBob3V2ZXIgbWFpcyBjb2x1bmFzIHZpc8OtdmVpcyBkbyBxdWUgbyBwZXJtaXRpZG8sIGFzIGV4Y2VkZW50ZXNcbiAgICogc2Vyw6NvIGlnbm9yYWRhcyBwb3Igb3JkZW0gZGUgcG9zacOnw6NvLlxuICAgKi9cbiAgQElucHV0KCdwLW1heC1jb2x1bW5zJykgbWF4Q29sdW1ucz86IG51bWJlcjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBtb2RvIGRlIHBlc3F1aXNhIHV0aWxpemFkbyBubyBjYW1wbyBkZSBidXNjYSwgcXVhbmRvIGhhYmlsaXRhZG8uXG4gICAqIFZhbG9yZXMgZGVmaW5pZG9zIG5vIGVudW06IFBvU2VhcmNoRmlsdGVyTW9kZVxuICAgKiA+IE9iczogQSBwZXNxdWlzYSDDqSByZWFsaXphZGEgZXhjbHVzaXZhbWVudGUgbm9zIGRhZG9zIGxvY2Fpcywgb3Ugc2VqYSwgYXF1ZWxlcyBxdWUgZm9yYW1cbiAgICogPiByZW5kZXJpemFkb3MgbmEgdGFiZWxhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgc3RhcnRzV2l0aGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItdHlwZScpIGZpbHRlclR5cGU6IFBvU2VhcmNoRmlsdGVyTW9kZSA9IFBvU2VhcmNoRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBleGVjdXRhZG8gcXVhbmRvIHRvZGFzIGFzIGxpbmhhcyBzw6NvIHNlbGVjaW9uYWRhcyBwb3IgbWVpbyBkbyAqY2hlY2tib3gqIHF1ZSBzZWxlY2lvbmEgdG9kYXMgYXMgbGluaGFzLlxuICAgKi9cbiAgQE91dHB1dCgncC1hbGwtc2VsZWN0ZWQnKSBhbGxTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZXhlY3V0YWRvIHF1YW5kbyBhIHNlbGXDp8OjbyBkYXMgbGluaGFzIMOpIGRlc21hcmNhZGEgcG9yIG1laW8gZG8gKmNoZWNrYm94KiBxdWUgc2VsZWNpb25hIHRvZGFzIGFzIGxpbmhhcy5cbiAgICovXG4gIEBPdXRwdXQoJ3AtYWxsLXVuc2VsZWN0ZWQnKSBhbGxVbnNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYW8gY29sYXBzYXIgdW1hIGxpbmhhIGRvIGBwby10YWJsZWAuXG4gICAqXG4gICAqID4gQ29tbyBwYXLDom1ldHJvIG8gY29tcG9uZW50ZSBlbnZpYSBvIGl0ZW0gY29sYXBzYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jb2xsYXBzZWQnKSBjb2xsYXBzZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhbyBleHBhbmRpciB1bWEgbGluaGEgZG8gYHBvLXRhYmxlYC5cbiAgICpcbiAgICogPiBDb21vIHBhcsOibWV0cm8gbyBjb21wb25lbnRlIGVudmlhIG8gaXRlbSBleHBhbmRpZG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWV4cGFuZGVkJykgZXhwYW5kZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGV4ZWN1dGFkbyBhcMOzcyBvIG3DqXRvZG8gZGUgZXhjbHVzw6NvIHNlciBmaW5hbGl6YWRvLlxuICAgKlxuICAgKiBgYGBcbiAgICo8cG8tdGFibGVcbiAgICogIChwLWRlbGV0ZS1pdGVtcyk9XCJpdGVtcyA9ICRldmVudFwiXG4gICAqID5cbiAgICo8L3BvLXRhYmxlPlxuICAgKiBgYGBcbiAgICpcbiAgICpcbiAgICogPiBDb21vIHBhcsOibWV0cm8gbyBjb21wb25lbnRlIGVudmlhIGEgbGlzdGEgYXR1YWxpemFkYSwgc2VtIG9zIGl0ZW5zIGV4Y2x1w61kb3MuXG4gICAqL1xuICBAT3V0cHV0KCdwLWRlbGV0ZS1pdGVtcycpIGV2ZW50RGVsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYW8gc2VsZWNpb25hciB1bWEgbGluaGEgZG8gYHBvLXRhYmxlYC5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc2VsZWN0ZWQnKSBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBSZWNlYmUgdW1hIGHDp8OjbyBkZSBjbGlxdWUgcGFyYSBvIGJvdMOjbyBcIkNhcnJlZ2FyIG1haXMgcmVzdWx0YWRvc1wiLCBjYXNvIG5lbmh1bWEgYcOnw6NvIGZvciBkZWZpbmlkYSBvIG1lc21vXG4gICAqIG7Do28gw6kgdmlzw612ZWwuXG4gICAqXG4gICAqIFJlY2ViZSB1bSBvYmpldG8gYHsgY29sdW1uLCB0eXBlIH1gIG9uZGU6XG4gICAqXG4gICAqIC0gY29sdW1uIChgUG9UYWJsZUNvbHVtbmApOiBvYmpldG8gZGEgY29sdW5hIHF1ZSBlc3TDoSBvcmRlbmFkYS5cbiAgICogLSB0eXBlIChgUG9UYWJsZUNvbHVtblNvcnRUeXBlYCk6IHRpcG8gZGEgb3JkZW5hw6fDo28uXG4gICAqL1xuICBAT3V0cHV0KCdwLXNob3ctbW9yZScpIHNob3dNb3JlOiBFdmVudEVtaXR0ZXI8UG9UYWJsZUNvbHVtblNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb1RhYmxlQ29sdW1uU29ydD4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZXhlY3V0YWRvIGFvIG9yZGVuYXIgY29sdW5hcyBkYSB0YWJlbGEuXG4gICAqXG4gICAqIFJlY2ViZSB1bSBvYmpldG8gYHsgY29sdW1uLCB0eXBlIH1gIG9uZGU6XG4gICAqXG4gICAqIC0gY29sdW1uIChgUG9UYWJsZUNvbHVtbmApOiBvYmpldG8gZGEgY29sdW5hIHF1ZSBmb2kgY2xpY2FkYS9vcmRlbmFkYS5cbiAgICogLSB0eXBlIChgUG9UYWJsZUNvbHVtblNvcnRUeXBlYCk6IHRpcG8gZGEgb3JkZW5hw6fDo28uXG4gICAqL1xuICBAT3V0cHV0KCdwLXNvcnQtYnknKSBzb3J0Qnk6IEV2ZW50RW1pdHRlcjxQb1RhYmxlQ29sdW1uU29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBvVGFibGVDb2x1bW5Tb3J0PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBleGVjdXRhZG8gYW8gZGVzbWFyY2FyIGEgc2VsZcOnw6NvIGRlIHVtYSBsaW5oYSBkbyBgcG8tdGFibGVgLlxuICAgKi9cbiAgQE91dHB1dCgncC11bnNlbGVjdGVkJykgdW5zZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGZlY2hhciBvIHBhZ2Ugc2xpZGUgZG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcyBhcMOzcyBhbHRlcmFyIGFzIGNvbHVuYXMgdmlzw612ZWlzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyB2aXPDrXZlaXMgYXR1YWxpemFkYXMuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLXZpc2libGUtY29sdW1ucycpIGNoYW5nZVZpc2libGVDb2x1bW5zID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxzdHJpbmc+PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSByZXN0YXVyYXIgcGFkcsOjbyBubyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyBjb25maWd1cmFkYXMgaW5pY2lhbG1lbnRlLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLXJlc3RvcmUtY29sdW1uLW1hbmFnZXInKSBjb2x1bW5SZXN0b3JlTWFuYWdlciA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U3RyaW5nPj4oKTtcblxuICBhbGxDb2x1bW5zV2lkdGhQaXhlbHM6IGJvb2xlYW47XG4gIGNvbHVtbk1hc3RlckRldGFpbDogUG9UYWJsZUNvbHVtbjtcbiAgaGFzTWFpbkNvbHVtbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWFpbkNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+ID0gW107XG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xuICBzb3J0ZWRDb2x1bW4gPSB7IHByb3BlcnR5OiA8UG9UYWJsZUNvbHVtbj5udWxsLCBhc2NlbmRpbmc6IHRydWUgfTtcbiAgc3VidGl0bGVDb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPiA9IFtdO1xuICBwYWdlID0gMTtcbiAgcGFnZVNpemUgPSAxMDtcbiAgaGFzU2VydmljZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW5pdGlhbENvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+O1xuICBzaG93QmF0Y2hBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gIGl0ZW1zU2VsZWN0ZWQ6IEFycmF5PGFueT4gPSBbXTtcbiAgcGFyYW1zRmlsdGVyOiB7fTtcbiAgZmlsdGVyZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xuICBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBmaXhlZExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxWaXNpYmxlQ29sdW1uczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zcGFjaW5nOiBQb1RhYmxlQ29sdW1uU3BhY2luZyA9IFBvVGFibGVDb2x1bW5TcGFjaW5nLk1lZGl1bTtcbiAgcHJpdmF0ZSBfZmlsdGVyZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+O1xuICBwcml2YXRlIF9hY3Rpb25zPzogQXJyYXk8UG9UYWJsZUFjdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBfY29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4gPSBbXTtcbiAgcHJpdmF0ZSBfY29udGFpbmVyPzogc3RyaW5nO1xuICBwcml2YXRlIF9wYXJhbURlbGV0ZTogc3RyaW5nID0gcG9UYWJsZVBhcmFtRGVsZXRlQXBpO1xuICBwcml2YXRlIF9oZWlnaHQ/OiBudW1iZXI7XG4gIHByaXZhdGUgX2hpZGVEZXRhaWw/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxQb1RhYmxlQ29sdW1uPjtcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvVGFibGVMaXRlcmFscztcbiAgcHJpdmF0ZSBfbG9hZGluZz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VsZWN0YWJsZT86IGJvb2xlYW47XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IHBvTG9jYWxlRGVmYXVsdDtcbiAgcHJpdmF0ZSBfc2VydmljZUFwaTogc3RyaW5nO1xuICBwcml2YXRlIF9zZXJ2aWNlRGVsZXRlQXBpOiBzdHJpbmc7XG4gIHByaXZhdGUgcG9UYWJsZVNlcnZpY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzb3J0U3RvcmU6IFBvVGFibGVDb2x1bW5Tb3J0O1xuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbERpc3RhbmNlPzogbnVtYmVyID0gMTAwO1xuICBwcml2YXRlIF9pbmZpbml0ZVNjcm9sbD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9oaWRlQWN0aW9uRml4ZWRDb2x1bW5zPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcG9EYXRlOiBQb0RhdGVTZXJ2aWNlLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb1RhYmxlU2VydmljZTogUG9UYWJsZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIGl0ZW5zIGRhIHRhYmVsYS5cbiAgICogPiBTZSBmYWxzbywgc2Vyw6EgaW5pY2lhbGl6YWRvIGNvbW8gdW0gKmFycmF5KiB2YXppby5cbiAgICovXG4gIEBJbnB1dCgncC1pdGVtcycpIHNldCBpdGVtcyhpdGVtczogQXJyYXk8YW55Pikge1xuICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5faXRlbXMgPSBBcnJheS5pc0FycmF5KGl0ZW1zKSA/IFsuLi5pdGVtc10gOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faXRlbXMgPSBBcnJheS5pc0FycmF5KGl0ZW1zKSA/IGl0ZW1zIDogW107XG4gICAgfVxuXG4gICAgLy8gd2hlbiBoYXZlbid0IGl0ZW1zLCBzZWxlY3RBbGwgc2hvdWxkIGJlIHVuY2hlY2tlZC5cbiAgICBpZiAoIXRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghdGhpcy5oYXNDb2x1bW5zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKGl0ZW1zWzBdKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5oZWlnaHQgPyBbLi4udGhpcy5pdGVtc10gOiB0aGlzLml0ZW1zO1xuXG4gICAgLy8gdGltZW91dCBuZWNlc3PDoXJpbyBwYXJhIG9zIGl0ZW5zIHNlcmVtIHJlZmxldGlkb3MgbmEgdGFiZWxhXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKSk7XG4gIH1cblxuICBnZXQgaXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGFzIGNvbHVuYXMgZGEgdGFiZWxhLCBkZXZlIHJlY2ViZXIgdW0gKmFycmF5KiBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9UYWJsZUNvbHVtbmAuXG4gICAqIFBvciBwYWRyw6NvIHJlY2ViZXLDoSBjb21vIHZhbG9yIGEgcHJpbWVpcmEgY29sdW5hIGRhIGxpc3RhIGRlIGl0ZW5zIGRhIHRhYmVsYS5cbiAgICogPiBDYXNvIG7Do28gZW5jb250cmUgdmFsb3IsIGEgbWVuc2FnZW0gJ05lbmh1bWEgZGVmaW5pw6fDo28gZGUgY29sdW5hcycgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1jb2x1bW5zJykgc2V0IGNvbHVtbnMoY29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4pIHtcbiAgICBjb25zdCBoYXNDb2x1bW5zV2l0aFZpc2libGUgPSBjb2x1bW5zPy5maW5kKGNvbHVtbiA9PiBjb2x1bW4udmlzaWJsZSA9PT0gdHJ1ZSk7XG4gICAgaWYgKHRoaXMuaW5pdGlhbENvbHVtbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pbml0aWFsQ29sdW1ucyA9IGNvbHVtbnM7XG4gICAgfVxuXG4gICAgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnMgfHwgW107XG5cbiAgICBpZiAoaGFzQ29sdW1uc1dpdGhWaXNpYmxlICYmICF0aGlzLmluaXRpYWxWaXNpYmxlQ29sdW1ucykge1xuICAgICAgdGhpcy5pbml0aWFsVmlzaWJsZUNvbHVtbnMgPSB0cnVlO1xuICAgICAgdGhpcy52ZXJpZnlJbnRlcmFjdGl2ZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2V0Q29sdW1uTGluaygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNJdGVtcykge1xuICAgICAgdGhpcy5fY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZUNvbHVtbnMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQWRpY2lvbmEgdW0gY29udG9ybm8gYXJyZWRvbmRhZG8gYW8gYHBvLXRhYmxlYCwgYXMgb3DDp8O1ZXMgc8OjbzpcbiAgICogLSBgYm9yZGVyYDogY29tIGJvcmRhcy9saW5oYXMuXG4gICAqIC0gYHNoYWRvd2A6IGNvbSBzb21icmFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgYm9yZGVyYFxuICAgKi9cbiAgQElucHV0KCdwLWNvbnRhaW5lcicpIHNldCBjb250YWluZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbnRhaW5lciA9IHBvVGFibGVDb250YWluZXIuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiBwb1RhYmxlQ29udGFpbmVyRGVmYXVsdDtcbiAgfVxuXG4gIGdldCBjb250YWluZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQWRpY2lvbmEgbyBwYXLDom1ldHJvIGEgc2VyIGVudmlhZG8gcGFyYSBhIHJlcXVpc2nDp8OjbyBkZSBERUxFVEUuXG4gICAqXG4gICAqIMOJIG5lY2Vzc8OhcmlvIGEgdXRpbGl6YcOnw6NvIGRhIHByb3ByaWVkYWRlIGBwLXNlcnZpY2UtZGVsZXRlYCBlbSBjb25qdW50by5cbiAgICpcbiAgICogQGRlZmF1bHQgYGlkYFxuICAgKi9cbiAgQElucHV0KCdwLXBhcmFtLWRlbGV0ZS1hcGknKSBzZXQgcGFyYW1EZWxldGVBcGkodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BhcmFtRGVsZXRlID0gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogcG9UYWJsZVBhcmFtRGVsZXRlQXBpO1xuICB9XG5cbiAgZ2V0IHBhcmFtRGVsZXRlQXBpKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtRGVsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgYWx0dXJhIGRhIHRhYmVsYSBlbSAqcGl4ZWxzKiBlIGZpeGEgbyBjYWJlw6dhbGhvLlxuICAgKlxuICAgKiBBbyB1dGlsaXphciBlc3NhIHByb3ByaWVkYWRlIHNlcsOhIGluc2VyaWRvIG8gYHZpcnR1YWwtc2Nyb2xsYCBuYSB0YWJlbGEgbWVsaG9yYW5kbyBhIHBlcmZvcm1hbmNlLlxuICAgKi9cbiAgQElucHV0KCdwLWhlaWdodCcpIHNldCBoZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLl9oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBnZXQgaGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBhIHZpc3VhbGl6YcOnw6NvIGRhIGxpc3RhIGRlIGRldGFsaGVzIGRlIGNhZGEgbGluaGEgZGEgY29sdW5hLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1kZXRhaWwnKSBzZXQgaGlkZURldGFpbChoaWRlRGV0YWlsOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZURldGFpbCA9IGhpZGVEZXRhaWwgIT0gbnVsbCAmJiBoaWRlRGV0YWlsLnRvU3RyaW5nKCkgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oaGlkZURldGFpbCk7XG4gIH1cblxuICBnZXQgaGlkZURldGFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZURldGFpbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby10YWJsZWAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvVGFibGVMaXRlcmFscyA9IHtcbiAgICogICAgbm9Db2x1bW5zOiAnTmVuaHVtYSBkZWZpbmnDp8OjbyBkZSBjb2x1bmFzJyxcbiAgICogICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAqICAgIG5vVmlzaWJsZUNvbHVtbjogJ05lbmh1bWEgY29sdW5hIHZpc8OtdmVsJyxcbiAgICogICAgbm9JdGVtOiAnTmVuaHVtIGl0ZW0gc2VsZWNpb25hZG8nLFxuICAgKiAgICBvbmVJdGVtOiAnMSBpdGVtIHNlbGVjaW9uYWRvJyxcbiAgICogICAgbXVsdGlwbGVJdGVtczogJ2l0ZW5zIHNlbGVjaW9uYWRvcycsXG4gICAqICAgIGxvYWRpbmdEYXRhOiAnQ2FycmVnYW5kbycsXG4gICAqICAgIGxvYWRNb3JlRGF0YTogJ0NhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcycsXG4gICAqICAgIHNlZUNvbXBsZXRlU3VidGl0bGU6ICdWZXIgbGVnZW5kYSBjb21wbGV0YScsXG4gICAqICAgIGNvbXBsZXRlU3VidGl0bGU6ICdMZWdlbmRhIGNvbXBsZXRhJyxcbiAgICogICAgY29sdW1uc01hbmFnZXI6ICdHZXJlbmNpYWRvciBkZSBjb2x1bmFzJyxcbiAgICogICAgYm9keURlbGV0ZTogJ0Rlc2VqYSByZWFsbWVudGUgZXhjbHVpciBlc3NlIGl0ZW0/JyxcbiAgICogICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgKiAgICBkZWxldGU6ICdFeGNsdWlyJyxcbiAgICogICAgZGVsZXRlU3VjY2Vzc2Z1bDogJ0l0ZW5zIHJlbW92aWRvcyBjb20gc3VjZXNzbycsXG4gICAqICAgIGRlbGV0ZUFwaUVycm9yOiAnT2NvcnJldSB1bSBlcnJvIGluZXNwZXJhZG8sIHRlbnRlIG5vdmFtZW50ZSBtYWlzIHRhcmRlIScsXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9UYWJsZUxpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdTZW0gZGFkb3MnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby10YWJsZVxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tdGFibGU+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9UYWJsZUxpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb1RhYmxlTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvVGFibGVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvVGFibGVMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9UYWJsZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEJsb3F1ZWlhIGEgaW50ZXJhw6fDo28gZG8gdXN1w6FyaW8gY29tIG9zIGRhZG9zIGRhIF90YWJsZV8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkaW5nJykgc2V0IGxvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmcgPSBjb252ZXJ0VG9Cb29sZWFuKGxvYWRpbmcpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGxpc3RhIGRlIGHDp8O1ZXMuXG4gICAqXG4gICAqIFF1YW5kbyBob3V2ZXIgYXBlbmFzIHVtYSBhw6fDo28gZGVmaW5pZGEgZWxhIHNlcsOhIGV4aWJpZGEgZGlyZXRhbWVudGUgbmEgY29sdW5hLCBjYXNvIGNvbnRyw6FyaW8sIG8gY29tcG9uZW50ZVxuICAgKiBzZSBlbmNhcnJlZ2EgZGUgYWdydXDDoS1sYXMgZXhpYmluZG8gbyDDrWNvbmUgWyoqcG8taWNvbi1tb3JlKipdKC9ndWlkZXMvaWNvbnMpIHF1ZSBsaXN0YXLDoSBhcyBhw6fDtWVzIGFvIHNlciBjbGljYWRvLlxuICAgKlxuICAgKiAqKkEgY29sdW5hIGRlIGHDp8O1ZXMgbsOjbyBzZXLDoSBleGliaWRhIHF1YW5kbzoqKlxuICAgKiAgLSBhIGxpc3RhIGNvbnRlciB2YWxvcmVzIGludsOhbGlkb3Mgb3UgaW5kZWZpbmlkb3MuXG4gICAqICAtIHRlbmhhIHVtYSDDum5pY2EgYcOnw6NvIGUgYSBtZXNtYSBuw6NvIGZvciB2aXPDrXZlbC5cbiAgICovXG4gIEBJbnB1dCgncC1hY3Rpb25zJykgc2V0IGFjdGlvbnMoYWN0aW9uczogQXJyYXk8UG9UYWJsZUFjdGlvbj4pIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gYWN0aW9ucztcbiAgfVxuXG4gIGdldCBhY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHNlbGXDp8OjbyBkZSBsaW5oYXMgbmEgdGFiZWxhIGUsIGNhc28gYSBwcm9wcmllZGFkZSBgcC1zaW5nbGUtc2VsZWN0YCBlc3RlamEgZGVmaW5pZGEgc2Vyw6EgcG9zc8OtdmVsXG4gICAqIHNlbGVjaW9uYXIgYXBlbmFzIHVtYSDDum5pY2EgbGluaGEuXG4gICAqXG4gICAqICoqSW1wb3J0YW50ZToqKlxuICAgKiAgLSBBcyBsaW5oYXMgZGUgZGV0YWxoZSBkZWZpbmlkYXMgZW0gYFBvVGFibGVEZXRhaWxgIHBvc3N1ZW0gY29tcG9ydGFtZW50byBpbmRlcGVuZGVudGUgZGEgbGluaGEgbWVzdHJlO1xuICAgKiAgLSBDYWRhIGxpbmhhIHBvc3N1aSBwb3IgcGFkcsOjbyBhIHByb3ByaWVkYWRlIGRpbsOibWljYSBgJHNlbGVjdGVkYCwgbmEgcXVhbCDDqSBwb3Nzw612ZWwgdmFsaWRhciBzZSBhIGxpbmhhXG4gICAqIGVzdMOhIHNlbGVjaW9uYWRhLCBwb3IgZXhlbXBsbzogYGl0ZW0uJHNlbGVjdGVkYCBvdSBgaXRlbVsnJHNlbGVjdGVkJ11gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atc2VsZWN0YWJsZScpIHNldCBzZWxlY3RhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VsZWN0YWJsZSA9IDxhbnk+dmFsdWUgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGFibGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZSB2ZXJkYWRlaXJvLCBhdGl2YSBhIGZ1bmNpb25hbGlkYWRlIGRlIHNjcm9sbCBpbmZpbml0byBwYXJhIGEgdGFiZWxhIGUgbyBib3TDo28gXCJDYXJyZWdhciBNYWlzXCIgZGVpeGFyw6EgZGUgc2VyIGV4aWJpZG8uIEFvIGNoZWdhciBubyBmaW0gZGEgdGFiZWxhXG4gICAqIGV4ZWN1dGFyw6EgYSBmdW7Dp8OjbyBgcC1zaG93LW1vcmVgLlxuICAgKlxuICAgKiAqKlJlZ3JhcyBkZSB1dGlsaXphw6fDo286KipcbiAgICogIC0gTyBzY3JvbGwgaW5maW5pdG8gc8OzIGZ1bmNpb25hIHBhcmEgdGFiZWxhcyBxdWUgdXRpbGl6YW0gYSBwcm9wcmllZGFkZSBgcC1oZWlnaHRgIGUgcXVlIHBvc3N1ZW0gbyBzY3JvbGwgasOhIG5hIGNhcmdhIGluaWNpYWwgZG9zIGRhZG9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgc2V0IGluZmluaXRlU2Nyb2xsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5maW5pdGVTY3JvbGwgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlICYmIHRoaXMuaGVpZ2h0ID4gMCk7XG4gIH1cblxuICBnZXQgaW5maW5pdGVTY3JvbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXRlU2Nyb2xsO1xuICB9XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIHBlcmNlbnR1YWwgbmVjZXNzw6FyaW8gcGFyYSBkaXNwYXJhciBvIGV2ZW50byBgcC1zaG93LW1vcmVgLCBxdWUgw6kgcmVzcG9uc8OhdmVsIHBvciBjYXJyZWdhciBtYWlzIGRhZG9zIG5hIHRhYmVsYS4gQ2FzbyBvIHZhbG9yIGluZm9ybWFkbyBzZWphIG1haW9yIHF1ZSAxMDAgb3UgbWVub3JcbiAgICogcXVlIDAsIG8gdmFsb3IgcGFkcsOjbyBzZXLDoSAxMDAlXG4gICAqXG4gICAqICoqRXhlbXBsb3M6KipcbiAgICogIC0gcC1pbmZpbml0ZS1zY3JvbGwtZGlzdGFuY2UgPSA4MDogUXVhbmRvIGF0aW5naXIgODAlICBkbyBzY3JvbGwgZGEgdGFiZWxhLCBvIGBwLXNob3ctbW9yZWAgc2Vyw6EgZGlzcGFyYWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWluZmluaXRlLXNjcm9sbC1kaXN0YW5jZScpIHNldCBpbmZpbml0ZVNjcm9sbERpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9pbmZpbml0ZVNjcm9sbERpc3RhbmNlID0gdmFsdWUgPiAxMDAgfHwgdmFsdWUgPCAwID8gMTAwIDogdmFsdWU7XG4gIH1cblxuICBnZXQgaW5maW5pdGVTY3JvbGxEaXN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdGVTY3JvbGxEaXN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFVSTCBkYSBBUEkgcmVzcG9uc8OhdmVsIHBvciByZXRvcm5hciBvcyByZWdpc3Ryb3MuXG4gICAqXG4gICAqIEFvIHJlYWxpemFyIGEgYnVzY2EgZGUgbWFpcyByZWdpc3Ryb3MgdmlhIHBhZ2luYcOnw6NvIChDYXJyZWdhciBtYWlzIHJlc3VsdGFkb3MpLCBzZXLDoSBlbnZpYWRvIG9zIHBhcsOibWV0cm9zIGBwYWdlYCBlIGBwYWdlU2l6ZWAsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gdXRpbGl6YXIgb3JkZW5hw6fDo28sIGEgY29sdW5hIG9yZGVuYWRhIHNlcsOhIGVudmlhZGEgYXRyYXbDqXMgZG8gcGFyw6JtZXRybyBgb3JkZXJgLCBwb3IgZXhlbXBsbzpcbiAgICogLSBDb2x1bmEgZGVjcmVzY2VudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZvcmRlcj0tbmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBDb2x1bmEgYXNjZW5kZW50ZTpcbiAgICogYGBgXG4gICAqICB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwJm9yZGVyPW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqID4gRXN0YSBVUkwgZGV2ZSByZXRvcm5hciBlIHJlY2ViZXIgb3MgZGFkb3Mgbm8gcGFkcsOjbyBkZSBbQVBJIGRvIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpLlxuICAgKi9cbiAgQElucHV0KCdwLXNlcnZpY2UtYXBpJykgc2V0IHNlcnZpY2VBcGkoc2VydmljZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VydmljZUFwaSA9IHNlcnZpY2U7XG4gICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuc2VydmljZUFwaSwgJ0dFVCcpO1xuICAgIHRoaXMuaGFzU2VydmljZSA9ICEhc2VydmljZTtcbiAgICB0aGlzLnNob3dNb3JlRGlzYWJsZWQgPSAhdGhpcy5oYXNTZXJ2aWNlO1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xuICB9XG5cbiAgZ2V0IHNlcnZpY2VBcGkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VBcGk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBVUkwgZGEgQVBJIHJlc3BvbnPDoXZlbCBwb3IgZXhjbHVpciBvcyByZWdpc3Ryb3MuXG4gICAqXG4gICAqIEFvIHNlbGVjaW9uYXIgbyBib3TDo28gZGUgZXhjbHVpciBpdGVucywgZXNzYSB1cmwgc2Vyw6EgZXhlY3V0YWRhIHV0aWxpemFuZG8gbyBwYXLDom1ldHJvIGVudmlhZG8gbmEgcHJvcHJpZWRhZGUgYHAtcGFyYW0tZGVsZXRlLWFwaWAuXG4gICAqIENhc28gZWxhIG7Do28gc2VqYSB1dGlsaXphZGEsIG8gcGFyw6JtZXRybyBwYWRyw6NvIGEgc2VyIGVudmlhZG8gc2Vyw6EgYGlkYC5cbiAgICpcbiAgICogPiBFc3RhIFVSTCBkZXZlIHJldG9ybmFyIGUgcmVjZWJlciBvcyBkYWRvcyBubyBwYWRyw6NvIGRlIFtBUEkgZG8gUE8gVUldKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkuXG4gICAqL1xuICBASW5wdXQoJ3Atc2VydmljZS1kZWxldGUnKSBzZXQgc2VydmljZURlbGV0ZUFwaShzZXJ2aWNlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXJ2aWNlRGVsZXRlQXBpID0gc2VydmljZTtcbiAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5zZXJ2aWNlRGVsZXRlQXBpLCAnREVMRVRFJyk7XG4gIH1cblxuICBnZXQgc2VydmljZURlbGV0ZUFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZURlbGV0ZUFwaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJlc3BvbnPDoXZlbCBwb3IgYXBsaWNhciBlc3Bhw6dhbWVudG8gbmFzIGNvbHVuYXMuXG4gICAqXG4gICAqIERldmUgcmVjZWJlciB1bSBkb3MgdmFsb3JlcyBkbyBlbnVtIGBQb1RhYmxlQ29sdW1uU3BhY2luZ2AuXG4gICAqXG4gICAqIFZhbG9yIGBzbWFsbGAgc8OzIGZ1bmNpb25hIGVtIHRhYmVsYXMgbsOjbyBpbnRlcmF0aXZhcy4gQ2FzbyBzZWphIHNldGFkbyBjb20gYHNtYWxsYCBlIGEgdGFiZWxhIHNlamEgaW50ZXJhdGl2YSwgbyB2YWxvciBzZXLDoSByZXRvcm5hZG8gcGFyYSBgbWVkaXVtYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYG1lZGl1bWBcbiAgICovXG4gIEBJbnB1dCgncC1zcGFjaW5nJykgc2V0IHNwYWNpbmcodmFsdWU6IFBvVGFibGVDb2x1bW5TcGFjaW5nKSB7XG4gICAgaWYgKHZhbHVlID09PSAnc21hbGwnIHx8IHZhbHVlID09PSAnbWVkaXVtJyB8fCB2YWx1ZSA9PT0gJ2xhcmdlJykge1xuICAgICAgdGhpcy5fc3BhY2luZyA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zcGFjaW5nID0gUG9UYWJsZUNvbHVtblNwYWNpbmcuTWVkaXVtO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzcGFjaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9zcGFjaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGFzIGNvbHVuYXMgcXVlIHNlcsOjbyBmaWx0cmFkYXMgbm8gY2FtcG8gZGUgcGVzcXVpc2EuXG4gICAqIEFjZWl0YSB1bSBhcnJheSBkZSBzdHJpbmdzLCByZXByZXNlbnRhbmRvIGFzIGNvbHVuYXMgZXNwZWPDrWZpY2FzIHF1ZSBzZXLDo28gY29uc2lkZXJhZGFzIG5hIGZpbHRyYWdlbS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXJlZC1jb2x1bW5zJykgc2V0IGZpbHRlcmVkQ29sdW1ucyh2YWx1ZXM6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLl9maWx0ZXJlZENvbHVtbnMgPSB2YWx1ZXM7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRDb2x1bW5zKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZENvbHVtbnM7XG4gIH1cblxuICBnZXQgaGFzQ29sdW1ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGhhc0l0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoKTtcbiAgfVxuXG4gIGdldCBuYW1lQ29sdW1uRGV0YWlsKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hc3RlckRldGFpbCA/IHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsLnByb3BlcnR5IDogbnVsbDtcbiAgfVxuXG4gIGdldCB2YWxpZENvbHVtbnMoKSB7XG4gICAgY29uc3QgdHlwZXNWYWxpZCA9IFtcbiAgICAgICdzdHJpbmcnLFxuICAgICAgJ251bWJlcicsXG4gICAgICAnYm9vbGVhbicsXG4gICAgICAnZGF0ZScsXG4gICAgICAndGltZScsXG4gICAgICAnZGF0ZVRpbWUnLFxuICAgICAgJ2N1cnJlbmN5JyxcbiAgICAgICdzdWJ0aXRsZScsXG4gICAgICAnbGluaycsXG4gICAgICAnbGFiZWwnLFxuICAgICAgJ2ljb24nLFxuICAgICAgJ2NlbGxUZW1wbGF0ZScsXG4gICAgICAnY29sdW1uVGVtcGxhdGUnXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gIWNvbC50eXBlIHx8IHR5cGVzVmFsaWQuaW5jbHVkZXMoY29sLnR5cGUpKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5hY3Rpb25zICE9PSB1bmRlZmluZWQgJiYgdGhpcy5hY3Rpb25zICYmIHRoaXMuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbiAmJiBhY3Rpb24udmlzaWJsZSAhPT0gZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4udmlzaWJsZSAhPT0gZmFsc2UpXG4gICAgICAubWFwKGNvbHVtbiA9PiBjb2x1bW4ucHJvcGVydHkgfHwgY29sdW1uLmxhYmVsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNvcnRUeXBlKCk6IFBvVGFibGVDb2x1bW5Tb3J0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkQ29sdW1uLmFzY2VuZGluZyA/IFBvVGFibGVDb2x1bW5Tb3J0VHlwZS5Bc2NlbmRpbmcgOiBQb1RhYmxlQ29sdW1uU29ydFR5cGUuRGVzY2VuZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIG8gbW9kbyBkcmFnIGFuZCBkcm9wIHBhcmEgYXMgY29sdW5hcyBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1kcmFnZ2FibGUnKSBzZXQgZHJhZ2dhYmxlKGRyYWdnYWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2RyYWdnYWJsZSA9IGRyYWdnYWJsZSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBkcmFnZ2FibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RyYWdnYWJsZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucG9UYWJsZVNlcnZpY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0IHx8IHRoaXMuaGlkZVNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZVNlbGVjdEFsbCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKHRoaXMuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAoKGNoYW5nZXMuaGVpZ2h0IHx8IGNoYW5nZXMuaXRlbXMpICYmIHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlSGVhZGVyV2lkdGgoKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VTaXplTG9hZGluZygpO1xuICB9XG5cbiAgc2VsZWN0QWxsUm93cygpIHtcbiAgICBpZiAoIXRoaXMuaGlkZVNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSAhdGhpcy5zZWxlY3RBbGw7XG5cbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdEFsbDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmVtaXRTZWxlY3RBbGxFdmVudHModGhpcy5zZWxlY3RBbGwsIFsuLi50aGlzLml0ZW1zXSk7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2VsZWN0ZWQgPSAhcm93LiRzZWxlY3RlZDtcblxuICAgIHRoaXMuZW1pdFNlbGVjdEV2ZW50cyhyb3cpO1xuXG4gICAgdGhpcy5jb25maWdBZnRlclNlbGVjdFJvdyh0aGlzLml0ZW1zLCByb3cpO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRMaXN0KCk7XG4gIH1cblxuICBoYXNTZWxlY3RhYmxlUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5zZWxlY3RhYmxlRW50aXJlTGluZTtcbiAgfVxuXG4gIHNlbGVjdERldGFpbFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMuZW1pdFNlbGVjdEV2ZW50cyhyb3cpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRMaXN0KCkge1xuICAgIHRoaXMuaXRlbXNTZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLiRzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLml0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmNvbG9yID8gYHBvLXRleHQtJHt0aGlzLmdldENvbHVtbkNvbG9yKHJvdywgY29sdW1uKX1gIDogJyc7XG4gIH1cblxuICB0b2dnbGVEZXRhaWwocm93OiBhbnkpIHtcbiAgICBjb25zdCByb3dTaG93RGV0YWlsID0gcm93LiRzaG93RGV0YWlsO1xuICAgIGlmICh0aGlzLmF1dG9Db2xsYXBzZSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUFsbEl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3csICFyb3dTaG93RGV0YWlsKTtcbiAgICB0aGlzLmVtaXRFeHBhbmRFdmVudHMocm93KTtcbiAgfVxuXG4gIHRvZ2dsZVJvd0FjdGlvbihyb3c6IGFueSkge1xuICAgIGNvbnN0IHRvZ2dsZVNob3dBY3Rpb24gPSByb3cuJHNob3dBY3Rpb247XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbS4kc2hvd0FjdGlvbikge1xuICAgICAgICBpdGVtLiRzaG93QWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcm93LiRzaG93QWN0aW9uID0gIXRvZ2dsZVNob3dBY3Rpb247XG4gIH1cblxuICBzb3J0Q29sdW1uKGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5zb3J0IHx8IGNvbHVtbi50eXBlID09PSAnZGV0YWlsJyB8fCBjb2x1bW4uc29ydGFibGUgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0ZWRDb2x1bW4uYXNjZW5kaW5nID0gdGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkgPT09IGNvbHVtbiA/ICF0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcgOiB0cnVlO1xuXG4gICAgdGhpcy5zb3J0QXJyYXkoY29sdW1uLCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcpO1xuICAgIHRoaXMuc29ydEJ5LmVtaXQoeyBjb2x1bW4sIHR5cGU6IHRoaXMuc29ydFR5cGUgfSk7XG4gICAgaWYgKHRoaXMuaGFzU2VydmljZSAmJiB0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuc29ydFN0b3JlID0geyBjb2x1bW4sIHR5cGU6IHRoaXMuc29ydFR5cGUgfTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSA9IGNvbHVtbjtcbiAgfVxuXG4gIG9uU2hvd01vcmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydCA9IHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5ID8geyBjb2x1bW46IHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0eXBlOiB0aGlzLnNvcnRUeXBlIH0gOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5oYXNTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnBhZ2UrKztcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRpbmdTaG93TW9yZSA9IHRydWU7XG5cbiAgICAgIHRoaXMucG9UYWJsZVNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgLi4uZGF0YS5pdGVtc107XG4gICAgICAgIHRoaXMuc2hvd01vcmVEaXNhYmxlZCA9ICFkYXRhLmhhc05leHQ7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdTaG93TW9yZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TW9yZS5lbWl0KHNvcnQpO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRJdGVtcyhxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogUXVlcnlQYXJhbXNUeXBlIH0pOiBPYnNlcnZhYmxlPFBvVGFibGVSZXNwb25zZUFwaT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zOiBQb1RhYmxlRmlsdGVyZWRJdGVtc1BhcmFtcyA9IHRoaXMuZ2V0RmlsdGVyZWRQYXJhbXMocXVlcnlQYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMucG9UYWJsZVNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcyk7XG4gIH1cblxuICBzZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhkYXRhOiBQb1RhYmxlUmVzcG9uc2VBcGkpIHtcbiAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcyB8fCBbXTtcbiAgICB0aGlzLnNob3dNb3JlRGlzYWJsZWQgPSAhZGF0YS5oYXNOZXh0O1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZURhdGEocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnBhcmFtc0ZpbHRlciA9IHBhcmFtcztcbiAgICAgIHRoaXMuZ2V0RmlsdGVyZWRJdGVtcyhwYXJhbXMpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5zZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhkYXRhKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNvcnRBcnJheShjb2x1bW46IFBvVGFibGVDb2x1bW4sIGFzY2VuZGluZzogYm9vbGVhbiwgaXRlbT86IEFycmF5PGFueT4pIHtcbiAgICBsZXQgaXRlbXNMaXN0O1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBpdGVtc0xpc3QgPSB0aGlzLmhlaWdodCA/IFsuLi5pdGVtXSA6IGl0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1zTGlzdCA9IHRoaXMuaGVpZ2h0ID8gWy4uLnRoaXMuZmlsdGVyZWRJdGVtc10gOiB0aGlzLmZpbHRlcmVkSXRlbXM7XG4gICAgfVxuICAgIGl0ZW1zTGlzdC5zb3J0KChsZWZ0U2lkZSwgcmlnaHRTaWRlKTogbnVtYmVyID0+XG4gICAgICBzb3J0VmFsdWVzKGxlZnRTaWRlW2NvbHVtbi5wcm9wZXJ0eV0sIHJpZ2h0U2lkZVtjb2x1bW4ucHJvcGVydHldLCBhc2NlbmRpbmcpXG4gICAgKTtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBpdGVtc0xpc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdENvbHVtbnMoaXRlbTogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pO1xuXG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5maWx0ZXIoa2V5ID0+IHR5cGVvZiBpdGVtW2tleV0gIT09ICdvYmplY3QnKVxuICAgICAgLm1hcChrZXkgPT4gKHsgbGFiZWw6IGNhcGl0YWxpemVGaXJzdExldHRlcihrZXkpLCBwcm9wZXJ0eToga2V5IH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTaG93RGV0YWlsKHJvd0lkZW50aWZpZXI6IGFueSB8IG51bWJlciwgaXNTaG93RGV0YWlsOiBib29sZWFuKSB7XG4gICAgY29uc3QgaXNSb3dJbmRleCA9IHR5cGVvZiByb3dJZGVudGlmaWVyID09PSAnbnVtYmVyJyAmJiB0aGlzLml0ZW1zW3Jvd0lkZW50aWZpZXJdO1xuXG4gICAgY29uc3Qgcm93ID0gaXNSb3dJbmRleCA/IHRoaXMuaXRlbXNbcm93SWRlbnRpZmllcl0gOiByb3dJZGVudGlmaWVyO1xuXG4gICAgcm93LiRzaG93RGV0YWlsID0gaXNTaG93RGV0YWlsO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsYXBzZUFsbEl0ZW1zKGl0ZW1zOiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9Pikge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKGl0ZW0uJHNob3dEZXRhaWwpIHtcbiAgICAgICAgdGhpcy5zZXRTaG93RGV0YWlsKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgdGhpcy5lbWl0RXhwYW5kRXZlbnRzKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnQWZ0ZXJTZWxlY3RSb3cocm93czogQXJyYXk8YW55Piwgcm93KSB7XG4gICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0KSB7XG4gICAgICB0aGlzLnVuc2VsZWN0T3RoZXJSb3dzKHJvd3MsIHJvdyk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5oaWRlU2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMuaXNFdmVyeVNlbGVjdGVkKHJvd3MpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEV4cGFuZEV2ZW50cyhyb3c6IGFueSkge1xuICAgIHJvdy4kc2hvd0RldGFpbCA/IHRoaXMuZXhwYW5kZWQuZW1pdChyb3cpIDogdGhpcy5jb2xsYXBzZWQuZW1pdChyb3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0QWxsRXZlbnRzKHNlbGVjdEFsbDogYm9vbGVhbiwgcm93czogYW55KSB7XG4gICAgc2VsZWN0QWxsID8gdGhpcy5hbGxTZWxlY3RlZC5lbWl0KHJvd3MpIDogdGhpcy5hbGxVbnNlbGVjdGVkLmVtaXQocm93cyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3RFdmVudHMocm93OiBhbnkpIHtcbiAgICByb3cuJHNlbGVjdGVkID8gdGhpcy5zZWxlY3RlZC5lbWl0KHJvdykgOiB0aGlzLnVuc2VsZWN0ZWQuZW1pdChyb3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5Db2xvcihyb3csIGNvbHVtbikge1xuICAgIGNvbnN0IGNvbHVtbkNvbG9yID0gY29sdW1uLmNvbG9yO1xuXG4gICAgcmV0dXJuIGlzVHlwZW9mKGNvbHVtbkNvbG9yLCAnZnVuY3Rpb24nKSA/IGNvbHVtbkNvbG9yKHJvdywgY29sdW1uLnByb3BlcnR5KSA6IGNvbHVtbkNvbG9yO1xuICB9XG5cbiAgLy8gUmV0b3JuYSBhIGNvbHVuYSBkYSBsaXN0YSBkZSBjb2x1bmFzIHF1ZSDDqSBkbyB0aXBvIGRldGFpbFxuICBwcml2YXRlIGdldENvbHVtbk1hc3RlckRldGFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC50eXBlID09PSAnZGV0YWlsJyk7XG4gIH1cblxuICAvLyBDb2x1bmFzIHF1ZSBzw6NvIGluc2VyaWRhcyBubyA8aGVhZD4gZGEgdGFiZWxhXG4gIHByaXZhdGUgZ2V0TWFpbkNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRDb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIC8vIFJldG9ybmEgYXMgY29sdW5hcyBjb20gc3RhdHVzXG4gIHByaXZhdGUgZ2V0U3VidGl0bGVDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wudHlwZSA9PT0gJ3N1YnRpdGxlJyk7XG4gIH1cblxuICBwcml2YXRlIGlzRXZlcnlTZWxlY3RlZChpdGVtczogQXJyYXk8YW55Pik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNvbWVDaGVja2VkT3JJbmRldGVybWluYXRlID0gaXRlbSA9PiBpdGVtLiRzZWxlY3RlZCB8fCBpdGVtLiRzZWxlY3RlZCA9PT0gbnVsbDtcbiAgICBjb25zdCBldmVyeUNoZWNrZWQgPSBpdGVtID0+IGl0ZW0uJHNlbGVjdGVkO1xuXG4gICAgaWYgKGl0ZW1zLmV2ZXJ5KGV2ZXJ5Q2hlY2tlZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpdGVtcy5zb21lKHNvbWVDaGVja2VkT3JJbmRldGVybWluYXRlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZUNvbHVtbnMoKSB7XG4gICAgdGhpcy5zZXRNYWluQ29sdW1ucygpO1xuICAgIHRoaXMuc2V0Q29sdW1uTWFzdGVyRGV0YWlsKCk7XG4gICAgdGhpcy5zZXRTdWJ0aXRsZUNvbHVtbnMoKTtcbiAgICB0aGlzLmdldEZpbHRlcmVkQ29sdW1ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb2x1bW5MaW5rKCkge1xuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBpZiAoY29sdW1uWyd0eXBlJ10gPT09ICdsaW5rJyAmJiAhY29sdW1uWydsaW5rJ10pIHtcbiAgICAgICAgY29sdW1uWydsaW5rJ10gPSAnbGluayc7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbHVtbk1hc3RlckRldGFpbCgpIHtcbiAgICB0aGlzLmNvbHVtbk1hc3RlckRldGFpbCA9IHRoaXMuZ2V0Q29sdW1uTWFzdGVyRGV0YWlsKCk7XG4gIH1cblxuICBwcml2YXRlIHNldE1haW5Db2x1bW5zKCkge1xuICAgIHRoaXMubWFpbkNvbHVtbnMgPSB0aGlzLmdldE1haW5Db2x1bW5zKCk7XG5cbiAgICB0aGlzLmhhc01haW5Db2x1bW5zID0gISF0aGlzLm1haW5Db2x1bW5zLmxlbmd0aDtcblxuICAgIHRoaXMuYWxsQ29sdW1uc1dpZHRoUGl4ZWxzID0gdGhpcy52ZXJpZnlXaWR0aENvbHVtbnNQaXhlbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3VidGl0bGVDb2x1bW5zKCkge1xuICAgIHRoaXMuc3VidGl0bGVDb2x1bW5zID0gdGhpcy5nZXRTdWJ0aXRsZUNvbHVtbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zZWxlY3RPdGhlclJvd3Mocm93czogQXJyYXk8YW55Piwgcm93KSB7XG4gICAgcm93cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0gIT09IHJvdykge1xuICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJbnRlcmFjdGl2ZUNvbHVtbnMoKSB7XG4gICAgY29uc3QgaGFzTGlua09yRGV0YWlsID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sdW1uID0+IGNvbHVtbi50eXBlID09PSAnbGluaycgfHwgY29sdW1uLnR5cGUgPT09ICdkZXRhaWwnKTtcbiAgICBpZiAodGhpcy5zcGFjaW5nID09PSAnc21hbGwnICYmICh0aGlzLnNlbGVjdGFibGUgfHwgaGFzTGlua09yRGV0YWlsIHx8IHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMCkpIHtcbiAgICAgIHRoaXMuc3BhY2luZyA9IFBvVGFibGVDb2x1bW5TcGFjaW5nLk1lZGl1bTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeVdpZHRoQ29sdW1uc1BpeGVscygpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNNYWluQ29sdW1ucyA/IHRoaXMubWFpbkNvbHVtbnMuZXZlcnkoY29sdW1uID0+IGNvbHVtbi53aWR0aCAmJiBjb2x1bW4ud2lkdGguaW5jbHVkZXMoJ3B4JykpIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHNldFNlcnZpY2Uoc2VydmljZTogc3RyaW5nLCBtZXRob2Q6ICdHRVQnIHwgJ0RFTEVURScpIHtcbiAgICBpZiAoc2VydmljZSAmJiBpc1R5cGVvZihzZXJ2aWNlLCAnc3RyaW5nJykpIHtcbiAgICAgIHRoaXMucG9UYWJsZVNlcnZpY2Uuc2V0VXJsKHNlcnZpY2UsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJlZFBhcmFtcyhxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogUXVlcnlQYXJhbXNUeXBlIH0pIHtcbiAgICBjb25zdCB7IHBhZ2UsIHBhZ2VTaXplLCBzb3J0U3RvcmUgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5nZXRPcmRlclBhcmFtKHNvcnRTdG9yZSk7XG4gICAgY29uc3QgcGFyYW1zID0geyBwYWdlLCBwYWdlU2l6ZSwgb3JkZXIsIC4uLnF1ZXJ5UGFyYW1zIH07XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBwYXJhbXNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZpbHRlcmVkUGFyYW1zW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkUGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmRlclBhcmFtKHNvcnQ6IFBvVGFibGVDb2x1bW5Tb3J0ID0geyB0eXBlOiB1bmRlZmluZWQgfSkge1xuICAgIGNvbnN0IHsgY29sdW1uLCB0eXBlIH0gPSBzb3J0O1xuXG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmcpIHtcbiAgICAgIHJldHVybiBgLSR7Y29sdW1uLnByb3BlcnR5fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVQcm9wZXJ0eUZpeGVkKGFycjogQXJyYXk8YW55Pikge1xuICAgIHJldHVybiBhcnIubWFwKG9iaiA9PiB7XG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KCdmaXhlZCcpKSB7XG4gICAgICAgIG9iai5maXhlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcihoZWlnaHQpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjaGVja0luZmluaXRlU2Nyb2xsKCk7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoYW5nZVNpemVMb2FkaW5nKCk7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoYW5nZUhlYWRlcldpZHRoKCk7XG59XG4iXX0=
|
package/esm2022/lib/components/po-table/po-table-column-frozen/po-table-column-frozen.directive.mjs
CHANGED
|
@@ -112,7 +112,7 @@ export class PoTableColumnFrozenDirective {
|
|
|
112
112
|
static ɵfac = function PoTableColumnFrozenDirective_Factory(t) { return new (t || PoTableColumnFrozenDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
113
113
|
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTableColumnFrozenDirective, selectors: [["", "pFrozenColumn", ""]], hostAttrs: [1, "p-element"], hostVars: 2, hostBindings: function PoTableColumnFrozenDirective_HostBindings(rf, ctx) { if (rf & 2) {
|
|
114
114
|
i0.ɵɵclassProp("po-frozen-column", ctx.frozen);
|
|
115
|
-
} }, inputs: { frozen: ["pFrozenColumn", "frozen"], alignFrozen: "alignFrozen" }, features: [i0.ɵɵNgOnChangesFeature] });
|
|
115
|
+
} }, inputs: { frozen: [i0.ɵɵInputFlags.None, "pFrozenColumn", "frozen"], alignFrozen: "alignFrozen" }, features: [i0.ɵɵNgOnChangesFeature] });
|
|
116
116
|
}
|
|
117
117
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableColumnFrozenDirective, [{
|
|
118
118
|
type: Directive,
|
package/esm2022/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.mjs
CHANGED
|
@@ -72,7 +72,7 @@ export class PoTableColumnIconComponent {
|
|
|
72
72
|
return [];
|
|
73
73
|
}
|
|
74
74
|
static ɵfac = function PoTableColumnIconComponent_Factory(t) { return new (t || PoTableColumnIconComponent)(); };
|
|
75
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableColumnIconComponent, selectors: [["po-table-column-icon"]], inputs: { column: ["p-column", "column"], row: ["p-row", "row"], icons: ["p-icons", "icons"] }, decls: 1, vars: 2, consts: [[3, "p-clickable", "p-color", "p-disabled", "p-icon", "p-icon-tooltip", "p-click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-clickable", "p-color", "p-disabled", "p-icon", "p-icon-tooltip", "p-click"]], template: function PoTableColumnIconComponent_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableColumnIconComponent, selectors: [["po-table-column-icon"]], inputs: { column: [i0.ɵɵInputFlags.None, "p-column", "column"], row: [i0.ɵɵInputFlags.None, "p-row", "row"], icons: [i0.ɵɵInputFlags.None, "p-icons", "icons"] }, decls: 1, vars: 2, consts: [[3, "p-clickable", "p-color", "p-disabled", "p-icon", "p-icon-tooltip", "p-click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-clickable", "p-color", "p-disabled", "p-icon", "p-icon-tooltip", "p-click"]], template: function PoTableColumnIconComponent_Template(rf, ctx) { if (rf & 1) {
|
|
76
76
|
i0.ɵɵtemplate(0, PoTableColumnIconComponent_po_table_icon_0_Template, 1, 5, "po-table-icon", 0);
|
|
77
77
|
} if (rf & 2) {
|
|
78
78
|
i0.ɵɵproperty("ngForOf", ctx.icons)("ngForTrackBy", ctx.trackByFunction);
|
package/esm2022/lib/components/po-table/po-table-column-label/po-table-column-label.component.mjs
CHANGED
|
@@ -25,7 +25,7 @@ export class PoTableColumnLabelComponent {
|
|
|
25
25
|
this.hasLabel = this.value?.label?.trim() ? true : false;
|
|
26
26
|
}
|
|
27
27
|
static ɵfac = function PoTableColumnLabelComponent_Factory(t) { return new (t || PoTableColumnLabelComponent)(); };
|
|
28
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableColumnLabelComponent, selectors: [["po-table-column-label"]], inputs: { value: ["p-value", "value"] }, decls: 1, vars: 1, consts: [[3, "p-color", "p-value", "p-text-color", "p-icon", "p-type", 4, "ngIf"], [3, "p-color", "p-value", "p-text-color", "p-icon", "p-type"]], template: function PoTableColumnLabelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableColumnLabelComponent, selectors: [["po-table-column-label"]], inputs: { value: [i0.ɵɵInputFlags.None, "p-value", "value"] }, decls: 1, vars: 1, consts: [[3, "p-color", "p-value", "p-text-color", "p-icon", "p-type", 4, "ngIf"], [3, "p-color", "p-value", "p-text-color", "p-icon", "p-type"]], template: function PoTableColumnLabelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
29
29
|
i0.ɵɵtemplate(0, PoTableColumnLabelComponent_po_tag_0_Template, 1, 5, "po-tag", 0);
|
|
30
30
|
} if (rf & 2) {
|
|
31
31
|
i0.ɵɵproperty("ngIf", ctx.hasLabel);
|
package/esm2022/lib/components/po-table/po-table-column-link/po-table-column-link.component.mjs
CHANGED
|
@@ -46,7 +46,7 @@ export class PoTableColumnLinkComponent {
|
|
|
46
46
|
return isExternalLink(this.link) ? 'externalLink' : 'internalLink';
|
|
47
47
|
}
|
|
48
48
|
static ɵfac = function PoTableColumnLinkComponent_Factory(t) { return new (t || PoTableColumnLinkComponent)(); };
|
|
49
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableColumnLinkComponent, selectors: [["po-table-column-link"]], inputs: { action: ["p-action", "action"], disabled: ["p-disabled", "disabled"], link: ["p-link", "link"], openNewTab: ["p-open-new-tab", "openNewTab"], row: ["p-row", "row"], value: ["p-value", "value"] }, decls: 5, vars: 7, consts: [[1, "po-table-link", 3, "ngClass"], [3, "ngSwitch"], [3, "p-label", "p-open-new-tab", "p-action", 4, "ngSwitchCase"], [3, "p-label", "p-open-new-tab", "p-url", 4, "ngSwitchCase"], [3, "p-label", "p-open-new-tab", "p-action"], [3, "p-label", "p-open-new-tab", "p-url"]], template: function PoTableColumnLinkComponent_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableColumnLinkComponent, selectors: [["po-table-column-link"]], inputs: { action: [i0.ɵɵInputFlags.None, "p-action", "action"], disabled: [i0.ɵɵInputFlags.None, "p-disabled", "disabled"], link: [i0.ɵɵInputFlags.None, "p-link", "link"], openNewTab: [i0.ɵɵInputFlags.None, "p-open-new-tab", "openNewTab"], row: [i0.ɵɵInputFlags.None, "p-row", "row"], value: [i0.ɵɵInputFlags.None, "p-value", "value"] }, decls: 5, vars: 7, consts: [[1, "po-table-link", 3, "ngClass"], [3, "ngSwitch"], [3, "p-label", "p-open-new-tab", "p-action", 4, "ngSwitchCase"], [3, "p-label", "p-open-new-tab", "p-url", 4, "ngSwitchCase"], [3, "p-label", "p-open-new-tab", "p-action"], [3, "p-label", "p-open-new-tab", "p-url"]], template: function PoTableColumnLinkComponent_Template(rf, ctx) { if (rf & 1) {
|
|
50
50
|
i0.ɵɵelementStart(0, "div", 0);
|
|
51
51
|
i0.ɵɵelementContainerStart(1, 1);
|
|
52
52
|
i0.ɵɵtemplate(2, PoTableColumnLinkComponent_po_link_2_Template, 1, 2, "po-link", 2)(3, PoTableColumnLinkComponent_po_link_3_Template, 1, 3, "po-link", 3)(4, PoTableColumnLinkComponent_po_link_4_Template, 1, 3, "po-link", 3);
|