@gipisistemas/ng-core 1.1.0 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- package/assets/styles/colors.scss +261 -0
- package/assets/styles/layout-grid.scss +146 -0
- package/assets/styles/styles.scss +149 -0
- package/assets/styles/theme.scss +22 -0
- package/assets/styles/typography.scss +54 -0
- package/assets/styles/variable.scss +41 -0
- package/bundles/gipisistemas-ng-core.umd.js +28372 -0
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -0
- package/bundles/gipisistemas-ng-core.umd.min.js +66 -0
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -0
- package/core/app-messages.d.ts +9 -0
- package/core/app.messages.d.ts +4 -0
- package/core/components/abstract-crud.component.d.ts +27 -0
- package/core/components/abstract-find.component.d.ts +43 -0
- package/core/components/abstract.component.d.ts +23 -0
- package/core/components/alert/alert.component.d.ts +7 -0
- package/core/core.module.d.ts +17 -0
- package/core/custom-breakpoints.d.ts +7 -0
- package/core/enums/local-time.enum.d.ts +5 -0
- package/core/extensions/string.extension.d.ts +3 -0
- package/core/gipi-components/components/abstract-crud.component.d.ts +25 -0
- package/core/gipi-components/components/abstract-find.component.d.ts +73 -0
- package/core/gipi-components/components/abstract.component.d.ts +38 -0
- package/core/gipi-components/decorators/autowired.decorator.d.ts +7 -0
- package/core/gipi-components/enums/sort-direction.enum.d.ts +5 -0
- package/core/gipi-components/interface/abstract-crud.interface.d.ts +5 -0
- package/core/gipi-components/interface/abstract-find.interface.d.ts +12 -0
- package/core/gipi-components/interface/abstract.interface.d.ts +11 -0
- package/core/gipi-components/interface/base-permission.interface.d.ts +9 -0
- package/core/gipi-components/models/abstract-filter.model.d.ts +9 -0
- package/core/gipi-components/models/abstract.model.d.ts +7 -0
- package/core/gipi-components/models/applied-filter.model.d.ts +9 -0
- package/core/gipi-components/models/dto/abstract.dto.d.ts +7 -0
- package/core/gipi-components/models/page-event.model.d.ts +18 -0
- package/core/gipi-components/models/page.model.d.ts +7 -0
- package/core/gipi-components/models/sort.model.d.ts +6 -0
- package/core/gipi-components/services/abstract-crud.service.d.ts +83 -0
- package/core/gipi-components/services/abstract.service.d.ts +19 -0
- package/core/gipi-components/services/base.service.d.ts +35 -0
- package/core/gipi-components/services/file.service.d.ts +6 -0
- package/core/gipi-components/services/session-storage.service.d.ts +8 -0
- package/core/gipi-components/types/generic.type.d.ts +1 -0
- package/core/gipi-components/types/uuid.type.d.ts +1 -0
- package/core/guards/auth.guard.d.ts +11 -0
- package/core/guards/permission.guard.d.ts +14 -0
- package/core/guards/public.guard.d.ts +11 -0
- package/core/interceptors/auth.interceptor.d.ts +9 -0
- package/core/interceptors/error.interceptor.d.ts +11 -0
- package/core/models/abstract.model.d.ts +3 -0
- package/core/models/archive.model.d.ts +4 -0
- package/core/models/authority.model.d.ts +3 -0
- package/core/models/base-user.model.d.ts +12 -0
- package/core/models/dto/abstract.dto.d.ts +2 -0
- package/core/models/dto/api-error.dto.d.ts +9 -0
- package/core/models/dto/api-sub-error.dto.d.ts +7 -0
- package/core/models/dto/chart.dto.d.ts +5 -0
- package/core/models/dto/confirmation.dto.d.ts +10 -0
- package/core/models/dto/dialog.dto.d.ts +36 -0
- package/core/models/dto/filter.dto.d.ts +8 -0
- package/core/models/dto/input-listbox.dto.d.ts +6 -0
- package/core/models/dto/menu.dto.d.ts +15 -0
- package/core/models/dto/message.dto.d.ts +7 -0
- package/core/models/dto/page.dto.d.ts +8 -0
- package/core/models/dto/sort.dto.d.ts +7 -0
- package/core/models/dto/tab.dto.d.ts +12 -0
- package/core/models/dto/table-column.dto.d.ts +21 -0
- package/core/models/dto/table-group-header.dto.d.ts +7 -0
- package/core/models/dto/table-page-event.dto.d.ts +6 -0
- package/core/models/dto/token.dto.d.ts +8 -0
- package/core/models/enums/criteria-operation.enum.d.ts +13 -0
- package/core/models/enums/criteria-sort-direction.enum.d.ts +4 -0
- package/core/models/enums/menu-type.enum.d.ts +6 -0
- package/core/models/enums/radio-button.enum.d.ts +6 -0
- package/core/models/enums/sort-direction.enum.d.ts +4 -0
- package/core/models/multitenant.model.d.ts +4 -0
- package/core/models/permission.model.d.ts +8 -0
- package/core/models/role.model.d.ts +7 -0
- package/core/pipes/local-time.pipe.d.ts +6 -0
- package/core/services/abstract-crud.service.d.ts +15 -0
- package/core/services/abstract-find.service.d.ts +30 -0
- package/core/services/abstract.service.d.ts +13 -0
- package/core/services/authentication.service.d.ts +23 -0
- package/core/services/breakpoint-observer.service.d.ts +9 -0
- package/core/services/confirmation.service.d.ts +8 -0
- package/core/services/dialog.service.d.ts +8 -0
- package/core/services/message.service.d.ts +8 -0
- package/core/services/nav.service.d.ts +16 -0
- package/core/services/svg-register.service.d.ts +22 -0
- package/core/types/local-time.type.d.ts +5 -0
- package/core/types/ng-class.type.d.ts +10 -0
- package/core/utils/array.util.d.ts +14 -0
- package/core/utils/browser.util.d.ts +4 -0
- package/core/utils/currency.util.d.ts +6 -0
- package/core/utils/date.util.d.ts +39 -0
- package/core/utils/document.util.d.ts +11 -0
- package/core/utils/email.util.d.ts +4 -0
- package/core/utils/number.util.d.ts +8 -0
- package/core/utils/object.util.d.ts +20 -0
- package/core/utils/password.util.d.ts +11 -0
- package/core/utils/phone.util.d.ts +13 -0
- package/core/utils/string.util.d.ts +9 -0
- package/core/utils/table-column-builder.d.ts +40 -0
- package/core/utils/time.util.d.ts +9 -0
- package/core/utils/url-params.util.d.ts +7 -0
- package/core/utils/uuid.util.d.ts +5 -0
- package/core/utils/zindex.util.d.ts +7 -0
- package/core.d.ts +88 -0
- package/esm2015/core/app-messages.js +1 -0
- package/esm2015/core/app.messages.js +12 -0
- package/esm2015/core/components/abstract-crud.component.js +97 -0
- package/esm2015/core/components/abstract-find.component.js +189 -0
- package/esm2015/core/components/abstract.component.js +110 -0
- package/esm2015/core/components/alert/alert.component.js +24 -0
- package/esm2015/core/core.module.js +103 -0
- package/esm2015/core/custom-breakpoints.js +87 -0
- package/esm2015/core/enums/local-time.enum.js +6 -0
- package/esm2015/core/extensions/string.extension.js +37 -0
- package/esm2015/core/gipi-components/components/abstract-crud.component.js +110 -0
- package/esm2015/core/gipi-components/components/abstract-find.component.js +471 -0
- package/esm2015/core/gipi-components/components/abstract.component.js +140 -0
- package/esm2015/core/gipi-components/decorators/autowired.decorator.js +47 -0
- package/esm2015/core/gipi-components/enums/sort-direction.enum.js +6 -0
- package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/abstract-find.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/abstract.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/base-permission.interface.js +1 -0
- package/esm2015/core/gipi-components/models/abstract-filter.model.js +3 -0
- package/esm2015/core/gipi-components/models/abstract.model.js +3 -0
- package/esm2015/core/gipi-components/models/applied-filter.model.js +19 -0
- package/esm2015/core/gipi-components/models/dto/abstract.dto.js +3 -0
- package/esm2015/core/gipi-components/models/page-event.model.js +35 -0
- package/esm2015/core/gipi-components/models/page.model.js +7 -0
- package/esm2015/core/gipi-components/models/sort.model.js +7 -0
- package/esm2015/core/gipi-components/services/abstract-crud.service.js +109 -0
- package/esm2015/core/gipi-components/services/abstract.service.js +47 -0
- package/esm2015/core/gipi-components/services/base.service.js +102 -0
- package/esm2015/core/gipi-components/services/file.service.js +51 -0
- package/esm2015/core/gipi-components/services/session-storage.service.js +44 -0
- package/esm2015/core/gipi-components/types/generic.type.js +1 -0
- package/esm2015/core/gipi-components/types/uuid.type.js +1 -0
- package/esm2015/core/guards/auth.guard.js +48 -0
- package/esm2015/core/guards/permission.guard.js +61 -0
- package/esm2015/core/guards/public.guard.js +45 -0
- package/esm2015/core/interceptors/auth.interceptor.js +28 -0
- package/esm2015/core/interceptors/error.interceptor.js +110 -0
- package/esm2015/core/models/abstract.model.js +3 -0
- package/esm2015/core/models/archive.model.js +3 -0
- package/esm2015/core/models/authority.model.js +3 -0
- package/esm2015/core/models/base-user.model.js +8 -0
- package/esm2015/core/models/dto/abstract.dto.js +3 -0
- package/esm2015/core/models/dto/api-error.dto.js +8 -0
- package/esm2015/core/models/dto/api-sub-error.dto.js +4 -0
- package/esm2015/core/models/dto/chart.dto.js +4 -0
- package/esm2015/core/models/dto/confirmation.dto.js +8 -0
- package/esm2015/core/models/dto/dialog.dto.js +4 -0
- package/esm2015/core/models/dto/filter.dto.js +4 -0
- package/esm2015/core/models/dto/input-listbox.dto.js +7 -0
- package/esm2015/core/models/dto/menu.dto.js +9 -0
- package/esm2015/core/models/dto/message.dto.js +4 -0
- package/esm2015/core/models/dto/page.dto.js +9 -0
- package/esm2015/core/models/dto/sort.dto.js +9 -0
- package/esm2015/core/models/dto/tab.dto.js +10 -0
- package/esm2015/core/models/dto/table-column.dto.js +24 -0
- package/esm2015/core/models/dto/table-group-header.dto.js +10 -0
- package/esm2015/core/models/dto/table-page-event.dto.js +7 -0
- package/esm2015/core/models/dto/token.dto.js +4 -0
- package/esm2015/core/models/enums/criteria-operation.enum.js +15 -0
- package/esm2015/core/models/enums/criteria-sort-direction.enum.js +6 -0
- package/esm2015/core/models/enums/menu-type.enum.js +7 -0
- package/esm2015/core/models/enums/radio-button.enum.js +8 -0
- package/esm2015/core/models/enums/sort-direction.enum.js +6 -0
- package/esm2015/core/models/multitenant.model.js +4 -0
- package/esm2015/core/models/permission.model.js +11 -0
- package/esm2015/core/models/role.model.js +8 -0
- package/esm2015/core/pipes/local-time.pipe.js +21 -0
- package/esm2015/core/services/abstract-crud.service.js +24 -0
- package/esm2015/core/services/abstract-find.service.js +65 -0
- package/esm2015/core/services/abstract.service.js +30 -0
- package/esm2015/core/services/authentication.service.js +100 -0
- package/esm2015/core/services/breakpoint-observer.service.js +42 -0
- package/esm2015/core/services/confirmation.service.js +55 -0
- package/esm2015/core/services/dialog.service.js +41 -0
- package/esm2015/core/services/message.service.js +33 -0
- package/esm2015/core/services/nav.service.js +48 -0
- package/esm2015/core/services/svg-register.service.js +55 -0
- package/esm2015/core/types/local-time.type.js +1 -0
- package/esm2015/core/types/ng-class.type.js +1 -0
- package/esm2015/core/utils/array.util.js +110 -0
- package/esm2015/core/utils/browser.util.js +13 -0
- package/esm2015/core/utils/currency.util.js +21 -0
- package/esm2015/core/utils/date.util.js +257 -0
- package/esm2015/core/utils/document.util.js +153 -0
- package/esm2015/core/utils/email.util.js +25 -0
- package/esm2015/core/utils/number.util.js +28 -0
- package/esm2015/core/utils/object.util.js +199 -0
- package/esm2015/core/utils/password.util.js +38 -0
- package/esm2015/core/utils/phone.util.js +125 -0
- package/esm2015/core/utils/string.util.js +40 -0
- package/esm2015/core/utils/table-column-builder.js +85 -0
- package/esm2015/core/utils/time.util.js +59 -0
- package/esm2015/core/utils/url-params.util.js +12 -0
- package/esm2015/core/utils/uuid.util.js +17 -0
- package/esm2015/core/utils/zindex.util.js +35 -0
- package/esm2015/core.js +89 -0
- package/esm2015/gipi-components.js +105 -0
- package/esm2015/gipisistemas-ng-core.js +21 -0
- package/esm2015/public_api.js +4 -0
- package/esm2015/shared/api/generate-id-component.js +12 -0
- package/esm2015/shared/api/gipi-ng-config.js +76 -0
- package/esm2015/shared/api/overlay-message.js +1 -0
- package/esm2015/shared/api/throttle.js +60 -0
- package/esm2015/shared/api/translation.js +1 -0
- package/esm2015/shared/components/button/button.component.js +110 -0
- package/esm2015/shared/components/card/card.component.js +44 -0
- package/esm2015/shared/components/checkbox/checkbox.component.js +79 -0
- package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +27 -0
- package/esm2015/shared/components/dom/dom-handler.js +538 -0
- package/esm2015/shared/components/icon/icon.component.js +35 -0
- package/esm2015/shared/components/input/input.component.js +235 -0
- package/esm2015/shared/components/input-currency/input-currency.component.js +115 -0
- package/esm2015/shared/components/input-file/input-file.component.js +161 -0
- package/esm2015/shared/components/loading/loading.component.js +15 -0
- package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +21 -0
- package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +361 -0
- package/esm2015/shared/components/popover/popover-ref.js +25 -0
- package/esm2015/shared/components/popover/popover.component.js +34 -0
- package/esm2015/shared/components/popover/popover.service.js +85 -0
- package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +74 -0
- package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +126 -0
- package/esm2015/shared/components/select-button/select-button.component.js +181 -0
- package/esm2015/shared/components/select-entity/select-entity.component.js +262 -0
- package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +419 -0
- package/esm2015/shared/components/select-entity-paged/shared/default-options.js +35 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +69 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +59 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +20 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +547 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +18 -0
- package/esm2015/shared/components/select-enum/select-enum.component.js +117 -0
- package/esm2015/shared/components/select-month-period/select-month-period.component.js +87 -0
- package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +75 -0
- package/esm2015/shared/components/stepper/stepper.component.js +32 -0
- package/esm2015/shared/components/tab/tab.component.js +57 -0
- package/esm2015/shared/components/tab-group/tab-group.component.js +117 -0
- package/esm2015/shared/components/table/table.component.js +585 -0
- package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +105 -0
- package/esm2015/shared/components/textarea/textarea.component.js +156 -0
- package/esm2015/shared/directives/dynamic-tab.directive.js +18 -0
- package/esm2015/shared/directives/generic-template.directive.js +30 -0
- package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +109 -0
- package/esm2015/shared/directives/lower-case.directive.js +47 -0
- package/esm2015/shared/directives/phone-mask.directive.js +60 -0
- package/esm2015/shared/directives/space-drop.directive.js +47 -0
- package/esm2015/shared/directives/upper-case.directive.js +47 -0
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +119 -0
- package/esm2015/shared/gipi-components/action-row/action-row.component.js +30 -0
- package/esm2015/shared/gipi-components/badge/badge.component.js +44 -0
- package/esm2015/shared/gipi-components/button/button.component.js +251 -0
- package/esm2015/shared/gipi-components/chips/chips.component.js +149 -0
- package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +44 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +324 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +41 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +35 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +259 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +218 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +130 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +341 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +397 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +325 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +329 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +41 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +61 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +159 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +555 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +303 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +179 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +51 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +124 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +29 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +365 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +305 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +116 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +294 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +81 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +294 -0
- package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +27 -0
- package/esm2015/shared/gipi-components/dom/dom-handler.js +645 -0
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +185 -0
- package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +81 -0
- package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +240 -0
- package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +92 -0
- package/esm2015/shared/gipi-components/footer/footer.component.js +29 -0
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +262 -0
- package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +62 -0
- package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +103 -0
- package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +112 -0
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +197 -0
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +408 -0
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +655 -0
- package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +311 -0
- package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +422 -0
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +374 -0
- package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +350 -0
- package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +269 -0
- package/esm2015/shared/gipi-components/layout-grid/col.directive.js +161 -0
- package/esm2015/shared/gipi-components/layout-grid/row.directive.js +124 -0
- package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +87 -0
- package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +64 -0
- package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +193 -0
- package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +47 -0
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +460 -0
- package/esm2015/shared/gipi-components/notification/notification.component.js +104 -0
- package/esm2015/shared/gipi-components/novelties/novelties.component.js +109 -0
- package/esm2015/shared/gipi-components/overlay/overlay.component.js +565 -0
- package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +21 -0
- package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
- package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +127 -0
- package/esm2015/shared/gipi-components/popover/popover.component.js +397 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +29 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +27 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-target.js +19 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +514 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-types.js +1 -0
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +143 -0
- package/esm2015/shared/gipi-components/range-page/range-page.component.js +254 -0
- package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +345 -0
- package/esm2015/shared/gipi-components/select/select.component.js +211 -0
- package/esm2015/shared/gipi-components/select-button/select-button.component.js +187 -0
- package/esm2015/shared/gipi-components/sidebar/container/container.component.js +83 -0
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +240 -0
- package/esm2015/shared/gipi-components/stepper/stepper.component.js +37 -0
- package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +203 -0
- package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +30 -0
- package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +152 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +122 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +225 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +105 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +102 -0
- package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +30 -0
- package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
- package/esm2015/shared/gipi-components/table/models/sort.model.js +19 -0
- package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +2 -0
- package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +104 -0
- package/esm2015/shared/gipi-components/table/models/table-column.model.js +162 -0
- package/esm2015/shared/gipi-components/table/table.component.js +159 -0
- package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +1 -0
- package/esm2015/shared/gipi-components/table/types/sort.type.js +1 -0
- package/esm2015/shared/gipi-components/template/template.directive.js +33 -0
- package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +53 -0
- package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +38 -0
- package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +109 -0
- package/esm2015/shared/material.module.js +102 -0
- package/esm2015/shared/shared.module.js +339 -0
- package/esm2015/shared.js +36 -0
- package/esm5/core/app-messages.js +1 -0
- package/esm5/core/app.messages.js +12 -0
- package/esm5/core/components/abstract-crud.component.js +108 -0
- package/esm5/core/components/abstract-find.component.js +201 -0
- package/esm5/core/components/abstract.component.js +112 -0
- package/esm5/core/components/alert/alert.component.js +25 -0
- package/esm5/core/core.module.js +107 -0
- package/esm5/core/custom-breakpoints.js +87 -0
- package/esm5/core/enums/local-time.enum.js +6 -0
- package/esm5/core/extensions/string.extension.js +37 -0
- package/esm5/core/gipi-components/components/abstract-crud.component.js +122 -0
- package/esm5/core/gipi-components/components/abstract-find.component.js +507 -0
- package/esm5/core/gipi-components/components/abstract.component.js +152 -0
- package/esm5/core/gipi-components/decorators/autowired.decorator.js +52 -0
- package/esm5/core/gipi-components/enums/sort-direction.enum.js +6 -0
- package/esm5/core/gipi-components/interface/abstract-crud.interface.js +1 -0
- package/esm5/core/gipi-components/interface/abstract-find.interface.js +1 -0
- package/esm5/core/gipi-components/interface/abstract.interface.js +1 -0
- package/esm5/core/gipi-components/interface/base-permission.interface.js +1 -0
- package/esm5/core/gipi-components/models/abstract-filter.model.js +7 -0
- package/esm5/core/gipi-components/models/abstract.model.js +7 -0
- package/esm5/core/gipi-components/models/applied-filter.model.js +29 -0
- package/esm5/core/gipi-components/models/dto/abstract.dto.js +7 -0
- package/esm5/core/gipi-components/models/page-event.model.js +49 -0
- package/esm5/core/gipi-components/models/page.model.js +9 -0
- package/esm5/core/gipi-components/models/sort.model.js +9 -0
- package/esm5/core/gipi-components/services/abstract-crud.service.js +114 -0
- package/esm5/core/gipi-components/services/abstract.service.js +49 -0
- package/esm5/core/gipi-components/services/base.service.js +143 -0
- package/esm5/core/gipi-components/services/file.service.js +53 -0
- package/esm5/core/gipi-components/services/session-storage.service.js +45 -0
- package/esm5/core/gipi-components/types/generic.type.js +1 -0
- package/esm5/core/gipi-components/types/uuid.type.js +1 -0
- package/esm5/core/guards/auth.guard.js +50 -0
- package/esm5/core/guards/permission.guard.js +74 -0
- package/esm5/core/guards/public.guard.js +47 -0
- package/esm5/core/interceptors/auth.interceptor.js +29 -0
- package/esm5/core/interceptors/error.interceptor.js +129 -0
- package/esm5/core/models/abstract.model.js +7 -0
- package/esm5/core/models/archive.model.js +7 -0
- package/esm5/core/models/authority.model.js +7 -0
- package/esm5/core/models/base-user.model.js +13 -0
- package/esm5/core/models/dto/abstract.dto.js +7 -0
- package/esm5/core/models/dto/api-error.dto.js +13 -0
- package/esm5/core/models/dto/api-sub-error.dto.js +11 -0
- package/esm5/core/models/dto/chart.dto.js +11 -0
- package/esm5/core/models/dto/confirmation.dto.js +13 -0
- package/esm5/core/models/dto/dialog.dto.js +11 -0
- package/esm5/core/models/dto/filter.dto.js +11 -0
- package/esm5/core/models/dto/input-listbox.dto.js +11 -0
- package/esm5/core/models/dto/menu.dto.js +14 -0
- package/esm5/core/models/dto/message.dto.js +11 -0
- package/esm5/core/models/dto/page.dto.js +14 -0
- package/esm5/core/models/dto/sort.dto.js +14 -0
- package/esm5/core/models/dto/tab.dto.js +15 -0
- package/esm5/core/models/dto/table-column.dto.js +29 -0
- package/esm5/core/models/dto/table-group-header.dto.js +15 -0
- package/esm5/core/models/dto/table-page-event.dto.js +11 -0
- package/esm5/core/models/dto/token.dto.js +11 -0
- package/esm5/core/models/enums/criteria-operation.enum.js +15 -0
- package/esm5/core/models/enums/criteria-sort-direction.enum.js +6 -0
- package/esm5/core/models/enums/menu-type.enum.js +7 -0
- package/esm5/core/models/enums/radio-button.enum.js +8 -0
- package/esm5/core/models/enums/sort-direction.enum.js +6 -0
- package/esm5/core/models/multitenant.model.js +11 -0
- package/esm5/core/models/permission.model.js +16 -0
- package/esm5/core/models/role.model.js +13 -0
- package/esm5/core/pipes/local-time.pipe.js +26 -0
- package/esm5/core/services/abstract-crud.service.js +30 -0
- package/esm5/core/services/abstract-find.service.js +71 -0
- package/esm5/core/services/abstract.service.js +32 -0
- package/esm5/core/services/authentication.service.js +121 -0
- package/esm5/core/services/breakpoint-observer.service.js +52 -0
- package/esm5/core/services/confirmation.service.js +66 -0
- package/esm5/core/services/dialog.service.js +44 -0
- package/esm5/core/services/message.service.js +36 -0
- package/esm5/core/services/nav.service.js +51 -0
- package/esm5/core/services/svg-register.service.js +67 -0
- package/esm5/core/types/local-time.type.js +1 -0
- package/esm5/core/types/ng-class.type.js +1 -0
- package/esm5/core/utils/array.util.js +120 -0
- package/esm5/core/utils/browser.util.js +17 -0
- package/esm5/core/utils/currency.util.js +26 -0
- package/esm5/core/utils/date.util.js +269 -0
- package/esm5/core/utils/document.util.js +157 -0
- package/esm5/core/utils/email.util.js +29 -0
- package/esm5/core/utils/number.util.js +32 -0
- package/esm5/core/utils/object.util.js +204 -0
- package/esm5/core/utils/password.util.js +42 -0
- package/esm5/core/utils/phone.util.js +135 -0
- package/esm5/core/utils/string.util.js +44 -0
- package/esm5/core/utils/table-column-builder.js +87 -0
- package/esm5/core/utils/time.util.js +65 -0
- package/esm5/core/utils/url-params.util.js +16 -0
- package/esm5/core/utils/uuid.util.js +21 -0
- package/esm5/core/utils/zindex.util.js +35 -0
- package/esm5/core.js +89 -0
- package/esm5/gipi-components.js +105 -0
- package/esm5/gipisistemas-ng-core.js +21 -0
- package/esm5/public_api.js +4 -0
- package/esm5/shared/api/generate-id-component.js +16 -0
- package/esm5/shared/api/gipi-ng-config.js +77 -0
- package/esm5/shared/api/overlay-message.js +1 -0
- package/esm5/shared/api/throttle.js +60 -0
- package/esm5/shared/api/translation.js +1 -0
- package/esm5/shared/components/button/button.component.js +111 -0
- package/esm5/shared/components/card/card.component.js +45 -0
- package/esm5/shared/components/checkbox/checkbox.component.js +85 -0
- package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +30 -0
- package/esm5/shared/components/dom/dom-handler.js +573 -0
- package/esm5/shared/components/icon/icon.component.js +38 -0
- package/esm5/shared/components/input/input.component.js +242 -0
- package/esm5/shared/components/input-currency/input-currency.component.js +121 -0
- package/esm5/shared/components/input-file/input-file.component.js +165 -0
- package/esm5/shared/components/loading/loading.component.js +18 -0
- package/esm5/shared/components/loading-overlay/loading-overlay.component.js +23 -0
- package/esm5/shared/components/overlay-panel/overlay-panel.component.js +366 -0
- package/esm5/shared/components/popover/popover-ref.js +28 -0
- package/esm5/shared/components/popover/popover.component.js +35 -0
- package/esm5/shared/components/popover/popover.service.js +88 -0
- package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +80 -0
- package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +138 -0
- package/esm5/shared/components/select-button/select-button.component.js +195 -0
- package/esm5/shared/components/select-entity/select-entity.component.js +269 -0
- package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +453 -0
- package/esm5/shared/components/select-entity-paged/shared/default-options.js +35 -0
- package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +72 -0
- package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +62 -0
- package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +23 -0
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +590 -0
- package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +21 -0
- package/esm5/shared/components/select-enum/select-enum.component.js +124 -0
- package/esm5/shared/components/select-month-period/select-month-period.component.js +91 -0
- package/esm5/shared/components/slide-toggle/slide-toggle.component.js +81 -0
- package/esm5/shared/components/stepper/stepper.component.js +36 -0
- package/esm5/shared/components/tab/tab.component.js +58 -0
- package/esm5/shared/components/tab-group/tab-group.component.js +125 -0
- package/esm5/shared/components/table/table.component.js +599 -0
- package/esm5/shared/components/table-scrolled/table-scrolled.component.js +107 -0
- package/esm5/shared/components/textarea/textarea.component.js +174 -0
- package/esm5/shared/directives/dynamic-tab.directive.js +19 -0
- package/esm5/shared/directives/generic-template.directive.js +31 -0
- package/esm5/shared/directives/input-select-infinite-scroll.directive.js +113 -0
- package/esm5/shared/directives/lower-case.directive.js +48 -0
- package/esm5/shared/directives/phone-mask.directive.js +61 -0
- package/esm5/shared/directives/space-drop.directive.js +48 -0
- package/esm5/shared/directives/upper-case.directive.js +48 -0
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +141 -0
- package/esm5/shared/gipi-components/action-row/action-row.component.js +33 -0
- package/esm5/shared/gipi-components/badge/badge.component.js +46 -0
- package/esm5/shared/gipi-components/button/button.component.js +257 -0
- package/esm5/shared/gipi-components/chips/chips.component.js +159 -0
- package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +46 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +378 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +42 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +40 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +291 -0
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +252 -0
- package/esm5/shared/gipi-components/datepicker/datepicker.module.js +133 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +349 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +441 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +339 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +376 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +46 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +62 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +167 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +586 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +327 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +199 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +52 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +133 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +34 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +384 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +324 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +118 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +300 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +82 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +313 -0
- package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +30 -0
- package/esm5/shared/gipi-components/dom/dom-handler.js +681 -0
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +191 -0
- package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +83 -0
- package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +255 -0
- package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +93 -0
- package/esm5/shared/gipi-components/footer/footer.component.js +32 -0
- package/esm5/shared/gipi-components/form-field/form-field.component.js +276 -0
- package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +68 -0
- package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +106 -0
- package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +118 -0
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +207 -0
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +426 -0
- package/esm5/shared/gipi-components/input-select/input-select.component.js +698 -0
- package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +351 -0
- package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +437 -0
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +397 -0
- package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +384 -0
- package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +286 -0
- package/esm5/shared/gipi-components/layout-grid/col.directive.js +164 -0
- package/esm5/shared/gipi-components/layout-grid/row.directive.js +127 -0
- package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +90 -0
- package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +68 -0
- package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +200 -0
- package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +50 -0
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +505 -0
- package/esm5/shared/gipi-components/notification/notification.component.js +106 -0
- package/esm5/shared/gipi-components/novelties/novelties.component.js +111 -0
- package/esm5/shared/gipi-components/overlay/overlay.component.js +670 -0
- package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +22 -0
- package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
- package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +157 -0
- package/esm5/shared/gipi-components/popover/popover.component.js +473 -0
- package/esm5/shared/gipi-components/popover/shared/popover-animations.js +29 -0
- package/esm5/shared/gipi-components/popover/shared/popover-errors.js +21 -0
- package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
- package/esm5/shared/gipi-components/popover/shared/popover-target.js +20 -0
- package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +529 -0
- package/esm5/shared/gipi-components/popover/shared/popover-types.js +1 -0
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +155 -0
- package/esm5/shared/gipi-components/range-page/range-page.component.js +283 -0
- package/esm5/shared/gipi-components/range-slider/range-slider.component.js +364 -0
- package/esm5/shared/gipi-components/select/select.component.js +222 -0
- package/esm5/shared/gipi-components/select-button/select-button.component.js +206 -0
- package/esm5/shared/gipi-components/sidebar/container/container.component.js +96 -0
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +267 -0
- package/esm5/shared/gipi-components/stepper/stepper.component.js +43 -0
- package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +209 -0
- package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +33 -0
- package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +155 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +123 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +228 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +108 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +116 -0
- package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +33 -0
- package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
- package/esm5/shared/gipi-components/table/models/sort.model.js +29 -0
- package/esm5/shared/gipi-components/table/models/sorted-column.model.js +2 -0
- package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +106 -0
- package/esm5/shared/gipi-components/table/models/table-column.model.js +252 -0
- package/esm5/shared/gipi-components/table/table.component.js +161 -0
- package/esm5/shared/gipi-components/table/types/sort-direction.type.js +1 -0
- package/esm5/shared/gipi-components/table/types/sort.type.js +1 -0
- package/esm5/shared/gipi-components/template/template.directive.js +34 -0
- package/esm5/shared/gipi-components/toolbar/toolbar.component.js +56 -0
- package/esm5/shared/gipi-components/top-nav/top-nav.component.js +40 -0
- package/esm5/shared/gipi-components/user-profile/user-profile.component.js +115 -0
- package/esm5/shared/material.module.js +101 -0
- package/esm5/shared/shared.module.js +340 -0
- package/esm5/shared.js +36 -0
- package/fesm2015/gipisistemas-ng-core.js +25941 -0
- package/fesm2015/gipisistemas-ng-core.js.map +1 -0
- package/fesm5/gipisistemas-ng-core.js +27966 -0
- package/fesm5/gipisistemas-ng-core.js.map +1 -0
- package/gipi-components.d.ts +97 -0
- package/gipisistemas-ng-core.d.ts +20 -0
- package/gipisistemas-ng-core.metadata.json +1 -0
- package/package.json +31 -83
- package/public_api.d.ts +3 -0
- package/shared/api/generate-id-component.d.ts +3 -0
- package/shared/api/gipi-ng-config.d.ts +18 -0
- package/shared/api/overlay-message.d.ts +14 -0
- package/shared/api/throttle.d.ts +17 -0
- package/shared/api/translation.d.ts +45 -0
- package/shared/components/button/button.component.d.ts +26 -0
- package/shared/components/card/card.component.d.ts +10 -0
- package/shared/components/checkbox/checkbox.component.d.ts +20 -0
- package/shared/components/dom/connected-overlay-scroll-handler.d.ts +9 -0
- package/shared/components/dom/dom-handler.d.ts +74 -0
- package/shared/components/icon/icon.component.d.ts +9 -0
- package/shared/components/input/input.component.d.ts +52 -0
- package/shared/components/input-currency/input-currency.component.d.ts +29 -0
- package/shared/components/input-file/input-file.component.d.ts +28 -0
- package/shared/components/loading/loading.component.d.ts +4 -0
- package/shared/components/loading-overlay/loading-overlay.component.d.ts +6 -0
- package/shared/components/overlay-panel/overlay-panel.component.d.ts +67 -0
- package/shared/components/popover/popover-ref.d.ts +17 -0
- package/shared/components/popover/popover.component.d.ts +10 -0
- package/shared/components/popover/popover.service.d.ts +23 -0
- package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +19 -0
- package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +30 -0
- package/shared/components/select-button/select-button.component.d.ts +35 -0
- package/shared/components/select-entity/select-entity.component.d.ts +52 -0
- package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +78 -0
- package/shared/components/select-entity-paged/shared/default-options.d.ts +25 -0
- package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +18 -0
- package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +16 -0
- package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +11 -0
- package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +119 -0
- package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +9 -0
- package/shared/components/select-enum/select-enum.component.d.ts +29 -0
- package/shared/components/select-month-period/select-month-period.component.d.ts +20 -0
- package/shared/components/slide-toggle/slide-toggle.component.d.ts +19 -0
- package/shared/components/stepper/stepper.component.d.ts +7 -0
- package/shared/components/tab/tab.component.d.ts +14 -0
- package/shared/components/tab-group/tab-group.component.d.ts +22 -0
- package/shared/components/table/table.component.d.ts +137 -0
- package/shared/components/table-scrolled/table-scrolled.component.d.ts +31 -0
- package/shared/components/textarea/textarea.component.d.ts +35 -0
- package/shared/directives/dynamic-tab.directive.d.ts +5 -0
- package/shared/directives/generic-template.directive.d.ts +8 -0
- package/shared/directives/input-select-infinite-scroll.directive.d.ts +35 -0
- package/shared/directives/lower-case.directive.d.ts +9 -0
- package/shared/directives/phone-mask.directive.d.ts +8 -0
- package/shared/directives/space-drop.directive.d.ts +9 -0
- package/shared/directives/upper-case.directive.d.ts +9 -0
- package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +21 -0
- package/shared/gipi-components/action-row/action-row.component.d.ts +5 -0
- package/shared/gipi-components/badge/badge.component.d.ts +8 -0
- package/shared/gipi-components/button/button.component.d.ts +56 -0
- package/shared/gipi-components/chips/chips.component.d.ts +37 -0
- package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +11 -0
- package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +71 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +11 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +6 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +40 -0
- package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +49 -0
- package/shared/gipi-components/datepicker/datepicker.module.d.ts +2 -0
- package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +143 -0
- package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +152 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +102 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +124 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +21 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +45 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +106 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +16 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +209 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +9 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +136 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +68 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +38 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +39 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +11 -0
- package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +120 -0
- package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +85 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +225 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +20 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +76 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +9 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +33 -0
- package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +97 -0
- package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +9 -0
- package/shared/gipi-components/dom/dom-handler.d.ts +85 -0
- package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +36 -0
- package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +16 -0
- package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +43 -0
- package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +13 -0
- package/shared/gipi-components/footer/footer.component.d.ts +5 -0
- package/shared/gipi-components/form-field/form-field.component.d.ts +61 -0
- package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +13 -0
- package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +27 -0
- package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +28 -0
- package/shared/gipi-components/input-currency/input-currency.component.d.ts +48 -0
- package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +89 -0
- package/shared/gipi-components/input-select/input-select.component.d.ts +120 -0
- package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +65 -0
- package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +85 -0
- package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +77 -0
- package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +66 -0
- package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +53 -0
- package/shared/gipi-components/layout-grid/col.directive.d.ts +38 -0
- package/shared/gipi-components/layout-grid/row.directive.d.ts +28 -0
- package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +30 -0
- package/shared/gipi-components/layout-grid/services/resize.service.d.ts +17 -0
- package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +37 -0
- package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +2 -0
- package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +104 -0
- package/shared/gipi-components/notification/notification.component.d.ts +21 -0
- package/shared/gipi-components/novelties/novelties.component.d.ts +22 -0
- package/shared/gipi-components/overlay/overlay.component.d.ts +113 -0
- package/shared/gipi-components/overlay/shared/overlay-service.d.ts +6 -0
- package/shared/gipi-components/overlay/shared/overlay_options.d.ts +50 -0
- package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +27 -0
- package/shared/gipi-components/popover/popover.component.d.ts +133 -0
- package/shared/gipi-components/popover/shared/popover-animations.d.ts +13 -0
- package/shared/gipi-components/popover/shared/popover-errors.d.ts +14 -0
- package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +43 -0
- package/shared/gipi-components/popover/shared/popover-target.d.ts +5 -0
- package/shared/gipi-components/popover/shared/popover-trigger.d.ts +140 -0
- package/shared/gipi-components/popover/shared/popover-types.d.ts +4 -0
- package/shared/gipi-components/radio-group/radio-group.component.d.ts +33 -0
- package/shared/gipi-components/range-page/range-page.component.d.ts +55 -0
- package/shared/gipi-components/range-slider/range-slider.component.d.ts +57 -0
- package/shared/gipi-components/select/select.component.d.ts +45 -0
- package/shared/gipi-components/select-button/select-button.component.d.ts +39 -0
- package/shared/gipi-components/sidebar/container/container.component.d.ts +15 -0
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +40 -0
- package/shared/gipi-components/stepper/stepper.component.d.ts +8 -0
- package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +36 -0
- package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +5 -0
- package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +28 -0
- package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +40 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +81 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +24 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +45 -0
- package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +21 -0
- package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +5 -0
- package/shared/gipi-components/table/models/pipe-transform.model.d.ts +3 -0
- package/shared/gipi-components/table/models/sort.model.d.ts +10 -0
- package/shared/gipi-components/table/models/sorted-column.model.d.ts +6 -0
- package/shared/gipi-components/table/models/table-column-builder.model.d.ts +52 -0
- package/shared/gipi-components/table/models/table-column.model.d.ts +74 -0
- package/shared/gipi-components/table/table.component.d.ts +37 -0
- package/shared/gipi-components/table/types/sort-direction.type.d.ts +1 -0
- package/shared/gipi-components/table/types/sort.type.d.ts +1 -0
- package/shared/gipi-components/template/template.directive.d.ts +8 -0
- package/shared/gipi-components/toolbar/toolbar.component.d.ts +11 -0
- package/shared/gipi-components/top-nav/top-nav.component.d.ts +8 -0
- package/shared/gipi-components/user-profile/user-profile.component.d.ts +24 -0
- package/shared/material.module.d.ts +2 -0
- package/shared/shared.module.d.ts +6 -0
- package/shared.d.ts +35 -0
- package/README.md +0 -38
- package/_ITSS-NG-CI-CD.yml +0 -53
- package/_ITSS-NG-CI-PR.yml +0 -53
- package/angular-cli.json +0 -42
- package/azure-pipelines.yml +0 -35
- package/projects/itss-ng/ng-package.json +0 -7
- package/projects/itss-ng/package.json +0 -25
@@ -0,0 +1,655 @@
|
|
1
|
+
var GIPIInputSelectComponent_1;
|
2
|
+
import { __awaiter, __decorate, __metadata } from "tslib";
|
3
|
+
import { A, ENTER, ESCAPE, NINE, SPACE, Z, ZERO } from '@angular/cdk/keycodes';
|
4
|
+
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
5
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TrackByFunction, ViewChild, forwardRef } from '@angular/core';
|
6
|
+
import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
7
|
+
import { Subject } from 'rxjs';
|
8
|
+
import { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';
|
9
|
+
import { ObjectUtil } from '../../../core/utils/object.util';
|
10
|
+
import { GIPIFormFieldComponent } from '../form-field/form-field.component';
|
11
|
+
import { GIPIOverlayComponent } from '../overlay/overlay.component';
|
12
|
+
/** A altura dos itens selecionados em unidades `px`. */
|
13
|
+
const OPTION_HEIGHT_PX = 40;
|
14
|
+
let nextUniqueId = 0;
|
15
|
+
let GIPIInputSelectComponent = GIPIInputSelectComponent_1 = class GIPIInputSelectComponent {
|
16
|
+
constructor(_changeDetectorRef) {
|
17
|
+
this._changeDetectorRef = _changeDetectorRef;
|
18
|
+
this._name = `gipi-input-select-${nextUniqueId++}`;
|
19
|
+
this._onDestroy = new Subject();
|
20
|
+
this._itemSizeScrollViewport = 5;
|
21
|
+
this._overlayVisible = false;
|
22
|
+
this._formControlSearch = new FormControl({ value: '', disabled: false });
|
23
|
+
this.inputFieldValue = '';
|
24
|
+
this.inputFieldValueSelected = 0;
|
25
|
+
this.toggleAllCheckboxChecked = false;
|
26
|
+
this.toggleAllCheckboxIndeterminate = false;
|
27
|
+
this.isLoading = 0;
|
28
|
+
this.id = this._name;
|
29
|
+
this.name = this._name;
|
30
|
+
this.placeholder = 'Selecionar';
|
31
|
+
this.labelSelectAll = 'Selecionar todos';
|
32
|
+
this.multiple = false;
|
33
|
+
// Mostrar/ocultar o botão limpar opções selecionadas
|
34
|
+
this.showClear = false;
|
35
|
+
this.showOnFocus = true;
|
36
|
+
this.hideOnEscape = true;
|
37
|
+
this.showSelectAll = false;
|
38
|
+
this.showFooter = false;
|
39
|
+
this.infiniteScroll = true;
|
40
|
+
this.showSearch = false;
|
41
|
+
this.required = false;
|
42
|
+
this.pageSize = 5;
|
43
|
+
// Input search --------
|
44
|
+
// Ativar limpar input ao pressionar escape
|
45
|
+
this.enableClearOnEscapePressed = true;
|
46
|
+
// ---------------------
|
47
|
+
this._disabled = false;
|
48
|
+
this._loading = false;
|
49
|
+
this.onFocus = new EventEmitter();
|
50
|
+
this.onBlur = new EventEmitter();
|
51
|
+
this.onClose = new EventEmitter();
|
52
|
+
this.onSelectChange = new EventEmitter();
|
53
|
+
this.onOpenedChange = new EventEmitter();
|
54
|
+
this.onSearchChange = new EventEmitter();
|
55
|
+
this.onAddChange = new EventEmitter();
|
56
|
+
this.trackByOption = (index, obj) => obj && this.trackBy && obj[this.trackBy] ? obj[this.trackBy] : obj;
|
57
|
+
this.onChange = () => { };
|
58
|
+
this.onTouch = () => { };
|
59
|
+
}
|
60
|
+
set disabled(value) {
|
61
|
+
this._disabled = value;
|
62
|
+
this._disableInputSearch();
|
63
|
+
}
|
64
|
+
get disabled() {
|
65
|
+
return this._disabled;
|
66
|
+
}
|
67
|
+
set loading(value) {
|
68
|
+
this._loading = value;
|
69
|
+
this._disableInputSearch();
|
70
|
+
}
|
71
|
+
get loading() {
|
72
|
+
return this._loading;
|
73
|
+
}
|
74
|
+
set paramNextBatch(val) {
|
75
|
+
this._paramNextBatch = val;
|
76
|
+
}
|
77
|
+
get paramNextBatch() {
|
78
|
+
return this._paramNextBatch;
|
79
|
+
}
|
80
|
+
set value(value) {
|
81
|
+
this._value = value;
|
82
|
+
if (this.multiple) {
|
83
|
+
if (Array.isArray(value) && value && value.length) {
|
84
|
+
const firstValue = value[0];
|
85
|
+
this.inputFieldValue = this.property ? firstValue[this.property] : this.getPropertyValue(firstValue);
|
86
|
+
this.inputFieldValueSelected = value.length;
|
87
|
+
}
|
88
|
+
else {
|
89
|
+
this.inputFieldValue = '';
|
90
|
+
this.inputFieldValueSelected = 0;
|
91
|
+
}
|
92
|
+
}
|
93
|
+
else {
|
94
|
+
if (!Array.isArray(value) && value) {
|
95
|
+
this.inputFieldValue = this.property ? value[this.property] : this.getPropertyValue(value);
|
96
|
+
this.inputFieldValueSelected = 0;
|
97
|
+
}
|
98
|
+
else {
|
99
|
+
this.inputFieldValue = '';
|
100
|
+
this.inputFieldValueSelected = 0;
|
101
|
+
}
|
102
|
+
}
|
103
|
+
this.onChange(value);
|
104
|
+
this.onSelectChange.emit(value);
|
105
|
+
this.onTouch();
|
106
|
+
this._changeDetectorRef.markForCheck();
|
107
|
+
}
|
108
|
+
get value() {
|
109
|
+
return this._value;
|
110
|
+
}
|
111
|
+
set options(val) {
|
112
|
+
this._options = val;
|
113
|
+
}
|
114
|
+
get options() {
|
115
|
+
return this._options;
|
116
|
+
}
|
117
|
+
get scrollViewportHeight() {
|
118
|
+
let height = 0;
|
119
|
+
if (this.options && this.options.length) {
|
120
|
+
height = (this.options.length * OPTION_HEIGHT_PX) - (this.pageSize === this.options.length ? OPTION_HEIGHT_PX : 0);
|
121
|
+
}
|
122
|
+
if (!ObjectUtil.isNull(this.overlaySelect)) {
|
123
|
+
this.overlaySelect.alignOverlay();
|
124
|
+
}
|
125
|
+
return height;
|
126
|
+
}
|
127
|
+
get valueSearch() {
|
128
|
+
return this._formControlSearch.value;
|
129
|
+
}
|
130
|
+
ngOnInit() {
|
131
|
+
this._formControlSearch.valueChanges
|
132
|
+
.pipe(map((value) => value), debounceTime(1000), distinctUntilChanged(), takeUntil(this._onDestroy))
|
133
|
+
.subscribe((value) => this._searchChange(value));
|
134
|
+
this.indeterminateAllCheckbox();
|
135
|
+
}
|
136
|
+
ngOnDestroy() {
|
137
|
+
this._onDestroy.next();
|
138
|
+
this._onDestroy.complete();
|
139
|
+
}
|
140
|
+
registerOnChange(fn) {
|
141
|
+
this.onChange = fn;
|
142
|
+
}
|
143
|
+
registerOnTouched(fn) {
|
144
|
+
this.onTouch = fn;
|
145
|
+
}
|
146
|
+
writeValue(value) {
|
147
|
+
this.value = value;
|
148
|
+
}
|
149
|
+
setDisabledState(val) {
|
150
|
+
this.disabled = val;
|
151
|
+
this._changeDetectorRef.markForCheck();
|
152
|
+
}
|
153
|
+
compareFn(f1, f2) {
|
154
|
+
if (!this.property && !this.propertyFn) {
|
155
|
+
throw new Error('O parâmetro property ou propertyFn deve conter um valor');
|
156
|
+
}
|
157
|
+
if (!this.property && this.propertyFn && f1 && f2) {
|
158
|
+
const propF1 = this.getPropertyValue(f1);
|
159
|
+
const propF2 = this.getPropertyValue(f2);
|
160
|
+
return propF1 === propF2;
|
161
|
+
}
|
162
|
+
return f1 && f2 && f1[this.property] === f2[this.property];
|
163
|
+
}
|
164
|
+
getPropertyValue(entity) {
|
165
|
+
if (!ObjectUtil.isNull(entity)) {
|
166
|
+
if (!ObjectUtil.isNull(this.propertyFn)) {
|
167
|
+
return this.propertyFn(entity);
|
168
|
+
}
|
169
|
+
else if (this.property) {
|
170
|
+
return this._getValue(entity, this.property);
|
171
|
+
}
|
172
|
+
}
|
173
|
+
return '';
|
174
|
+
}
|
175
|
+
_getValue(entity, property) {
|
176
|
+
const properties = property.split('.');
|
177
|
+
let value = entity;
|
178
|
+
for (let i = 0; i < properties.length; i++) {
|
179
|
+
value = Reflect.get(value, properties[i]);
|
180
|
+
if (value && i === properties.length - 1) {
|
181
|
+
return value;
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}
|
185
|
+
onInputFocus(event) {
|
186
|
+
if (this.showOnFocus && !this.disabled) {
|
187
|
+
this.showOverlay();
|
188
|
+
this.onFocus.emit(event);
|
189
|
+
}
|
190
|
+
}
|
191
|
+
onInputClick() {
|
192
|
+
if (!this.disabled) {
|
193
|
+
this.showOverlay();
|
194
|
+
if (!this._overlayVisible) {
|
195
|
+
this.formFieldSelect.focus();
|
196
|
+
}
|
197
|
+
}
|
198
|
+
}
|
199
|
+
onInputBlur(event) {
|
200
|
+
if (!this.disabled) {
|
201
|
+
this.onBlur.emit(event);
|
202
|
+
this.onTouch();
|
203
|
+
}
|
204
|
+
}
|
205
|
+
onInputKeydown(event) {
|
206
|
+
if (this.disabled) {
|
207
|
+
event.stopImmediatePropagation();
|
208
|
+
return;
|
209
|
+
}
|
210
|
+
if (((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||
|
211
|
+
((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||
|
212
|
+
(event.code.toUpperCase() === 'TAB')) {
|
213
|
+
if (this._overlayVisible) {
|
214
|
+
this.hideOverlay();
|
215
|
+
event.preventDefault();
|
216
|
+
}
|
217
|
+
}
|
218
|
+
}
|
219
|
+
onClearOptionsClick(event) {
|
220
|
+
if (this.disabled) {
|
221
|
+
event.stopImmediatePropagation();
|
222
|
+
return;
|
223
|
+
}
|
224
|
+
if (this.multiple && Array.isArray(this.value)) {
|
225
|
+
this.value = [];
|
226
|
+
}
|
227
|
+
else {
|
228
|
+
this.value = null;
|
229
|
+
}
|
230
|
+
this.toggleAllCheckboxChecked = false;
|
231
|
+
this.toggleAllCheckboxIndeterminate = false;
|
232
|
+
this._changeDetectorRef.detectChanges();
|
233
|
+
this.onSelectChange.emit(this.value);
|
234
|
+
this._searchSelectInputFocus();
|
235
|
+
event.stopImmediatePropagation();
|
236
|
+
}
|
237
|
+
showOverlay() {
|
238
|
+
if (!this._overlayVisible) {
|
239
|
+
this._overlayVisible = true;
|
240
|
+
this.indeterminateAllCheckbox();
|
241
|
+
this.onOpenedChange.emit(this._overlayVisible);
|
242
|
+
this._changeDetectorRef.detectChanges();
|
243
|
+
if (ObjectUtil.isNull(this._cache)) {
|
244
|
+
this.onScroll();
|
245
|
+
}
|
246
|
+
}
|
247
|
+
}
|
248
|
+
hideOverlay() {
|
249
|
+
this._overlayVisible = false;
|
250
|
+
this.onOpenedChange.emit(this._overlayVisible);
|
251
|
+
this._cache = {};
|
252
|
+
this._changeDetectorRef.markForCheck();
|
253
|
+
}
|
254
|
+
toggleOverlay() {
|
255
|
+
if (this.disabled || this.loading) {
|
256
|
+
return;
|
257
|
+
}
|
258
|
+
else {
|
259
|
+
if (!this._overlayVisible) {
|
260
|
+
this.showOverlay();
|
261
|
+
}
|
262
|
+
else {
|
263
|
+
this.hideOverlay();
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
// Infinite scroll ------------------------------------------------
|
268
|
+
onScroll() {
|
269
|
+
return __awaiter(this, void 0, void 0, function* () {
|
270
|
+
if (!this.infiniteScroll) {
|
271
|
+
return;
|
272
|
+
}
|
273
|
+
if (ObjectUtil.isNull(this.nextBatchFn)) {
|
274
|
+
console.error('A função "nextBatchFn" é obrigatória e não foi informada');
|
275
|
+
return;
|
276
|
+
}
|
277
|
+
if (!ObjectUtil.isNull(this._pageModel) && (this._pageModel.totalPages === this._pageModel.number)) {
|
278
|
+
return;
|
279
|
+
}
|
280
|
+
const pageNumber = !ObjectUtil.isNull(this._pageModel) ? this._pageModel.number + 1 : 0;
|
281
|
+
// Mantemos um índice de páginas carregadas pelo servidor para não carregarmos os mesmos dados duas vezes
|
282
|
+
// Isso é baseado na página do servidor, não na interface do usuário
|
283
|
+
if (ObjectUtil.isNull(this._cache)) {
|
284
|
+
this._cache = {};
|
285
|
+
}
|
286
|
+
if (this._cache[pageNumber]) {
|
287
|
+
return;
|
288
|
+
}
|
289
|
+
this._cache[pageNumber] = true;
|
290
|
+
this.isLoading++;
|
291
|
+
yield this.nextBatchFn(this._formControlSearch.value, pageNumber, this.paramNextBatch).then(pagedData => {
|
292
|
+
this._pageModel = pagedData;
|
293
|
+
this._totalOptions = pagedData.totalElements;
|
294
|
+
if (!this.options) {
|
295
|
+
this.options = [];
|
296
|
+
}
|
297
|
+
// Deslocamento da linha inicial. Esta é a posição para inserir os novos dados
|
298
|
+
const start = this._pageModel.number * this.pageSize;
|
299
|
+
// Copiar dados existentes
|
300
|
+
const options = [...this.options];
|
301
|
+
// Inserir novas linhas na posição correta
|
302
|
+
options.splice(start, this.pageSize, ...pagedData.content);
|
303
|
+
// Volta o array de opções ja atualizado para exibição
|
304
|
+
this.options = options;
|
305
|
+
if (this.toggleAllCheckboxChecked) {
|
306
|
+
this.onChangeToggleAllCheckbox();
|
307
|
+
}
|
308
|
+
else {
|
309
|
+
this.indeterminateAllCheckbox();
|
310
|
+
}
|
311
|
+
// Diminuir o contador de chamadas de API pendentes
|
312
|
+
this.isLoading--;
|
313
|
+
}, error => {
|
314
|
+
this.isLoading = 0;
|
315
|
+
});
|
316
|
+
if (!ObjectUtil.isNull(this.cdkVirtualScrollViewPort) && this.options && this.options.length) {
|
317
|
+
this.cdkVirtualScrollViewPort.scrollToIndex(this.options.length, 'smooth');
|
318
|
+
this.cdkVirtualScrollViewPort.checkViewportSize();
|
319
|
+
}
|
320
|
+
this._changeDetectorRef.detectChanges();
|
321
|
+
});
|
322
|
+
}
|
323
|
+
// Options --------------------------------------------------------
|
324
|
+
onButtonSelectOptionClick(option) {
|
325
|
+
if (this.multiple) {
|
326
|
+
if (!this.value) {
|
327
|
+
this.value = [];
|
328
|
+
}
|
329
|
+
if (Array.isArray(this.value)) {
|
330
|
+
const indexOption = this.value.findIndex(o => ObjectUtil.equals(o, option));
|
331
|
+
if (indexOption >= 0) {
|
332
|
+
const lValue = this.value;
|
333
|
+
lValue.splice(indexOption, 1);
|
334
|
+
this.value = [...lValue];
|
335
|
+
}
|
336
|
+
else {
|
337
|
+
this.value = [...this.value, option];
|
338
|
+
}
|
339
|
+
}
|
340
|
+
}
|
341
|
+
else {
|
342
|
+
if (!Array.isArray(this.value)) {
|
343
|
+
this.value = option;
|
344
|
+
}
|
345
|
+
}
|
346
|
+
this.indeterminateAllCheckbox();
|
347
|
+
this.onSelectChange.emit(this.value);
|
348
|
+
this._changeDetectorRef.detectChanges();
|
349
|
+
}
|
350
|
+
indeterminateAllCheckbox() {
|
351
|
+
if (this.multiple && this.showSelectAll) {
|
352
|
+
if (!Array.isArray(this.value) ||
|
353
|
+
!this.value ||
|
354
|
+
(this.value && !this.value.length) ||
|
355
|
+
!this.options ||
|
356
|
+
(this.options && !this.options.length)) {
|
357
|
+
this.toggleAllCheckboxChecked = false;
|
358
|
+
this.toggleAllCheckboxIndeterminate = false;
|
359
|
+
}
|
360
|
+
if (Array.isArray(this.value)) {
|
361
|
+
if (this.infiniteScroll) {
|
362
|
+
this.toggleAllCheckboxChecked = this.value && this._pageModel && (this.value.length > 0) && (this._totalOptions > 0) && (this.value.length === this._totalOptions);
|
363
|
+
this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.value.length < this._totalOptions);
|
364
|
+
}
|
365
|
+
else {
|
366
|
+
this.toggleAllCheckboxChecked = this.value && (this.value.length > 0) && this.options && (this.options.length > 0) && (this.value.length === this.options.length);
|
367
|
+
this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.options.length > 0) && (this.value.length < this.options.length);
|
368
|
+
}
|
369
|
+
}
|
370
|
+
this._changeDetectorRef.detectChanges();
|
371
|
+
}
|
372
|
+
}
|
373
|
+
optionCheckboxIsChecked(option) {
|
374
|
+
if (!this.multiple) {
|
375
|
+
return false;
|
376
|
+
}
|
377
|
+
if (Array.isArray(this.value) && (this.value && this.value.length)) {
|
378
|
+
this._changeDetectorRef.markForCheck();
|
379
|
+
return this.value.findIndex(o => ObjectUtil.equals(o, option)) > -1;
|
380
|
+
}
|
381
|
+
}
|
382
|
+
onClickSelectAllByOption() {
|
383
|
+
if (this.disabled || this.loading) {
|
384
|
+
return;
|
385
|
+
}
|
386
|
+
this.toggleAllCheckboxChecked = !this.toggleAllCheckboxChecked;
|
387
|
+
this.onChangeToggleAllCheckbox();
|
388
|
+
}
|
389
|
+
onChangeToggleAllCheckbox() {
|
390
|
+
if (this.multiple) {
|
391
|
+
if (this.toggleAllCheckboxChecked) {
|
392
|
+
this.value = [...this.options];
|
393
|
+
}
|
394
|
+
else {
|
395
|
+
this.value = [];
|
396
|
+
}
|
397
|
+
this.indeterminateAllCheckbox();
|
398
|
+
}
|
399
|
+
}
|
400
|
+
onClickAddOptions() {
|
401
|
+
if (this.multiple && !this.showSelectAll) {
|
402
|
+
const addChange = {
|
403
|
+
values: this.value,
|
404
|
+
selectedAll: false
|
405
|
+
};
|
406
|
+
this.onAddChange.emit(addChange);
|
407
|
+
}
|
408
|
+
}
|
409
|
+
// Input search --------------------------------------------------
|
410
|
+
_disableInputSearch() {
|
411
|
+
if (this.disabled || this.loading) {
|
412
|
+
this._formControlSearch.disable();
|
413
|
+
}
|
414
|
+
else {
|
415
|
+
this._formControlSearch.enable();
|
416
|
+
}
|
417
|
+
}
|
418
|
+
_searchChange(value) {
|
419
|
+
if (this._overlayVisible) {
|
420
|
+
this.loading = true;
|
421
|
+
this.onSearchChange.emit(value);
|
422
|
+
this._pageModel = null;
|
423
|
+
this.options = [];
|
424
|
+
this._cache = {};
|
425
|
+
this.onScroll();
|
426
|
+
this.loading = false;
|
427
|
+
this._changeDetectorRef.detectChanges();
|
428
|
+
}
|
429
|
+
}
|
430
|
+
/**
|
431
|
+
* Focaliza o input de pesquisa
|
432
|
+
*/
|
433
|
+
_searchSelectInputFocus() {
|
434
|
+
if (ObjectUtil.isNull(this.formfieldSelectSearchInput) || !this._overlayVisible) {
|
435
|
+
return;
|
436
|
+
}
|
437
|
+
// Seta o foco
|
438
|
+
this.formfieldSelectSearchInput.focus();
|
439
|
+
}
|
440
|
+
/**
|
441
|
+
* Redefine o valor do input de pesquisa atual
|
442
|
+
* @param focus se deve focar após a redefinição
|
443
|
+
*/
|
444
|
+
_searchSelectInputReset(focus) {
|
445
|
+
this._formControlSearch.setValue('');
|
446
|
+
if (focus) {
|
447
|
+
this._searchSelectInputFocus();
|
448
|
+
}
|
449
|
+
}
|
450
|
+
/**
|
451
|
+
* Manipula o evento de tecla pressionada.
|
452
|
+
* Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.
|
453
|
+
* @param event
|
454
|
+
*/
|
455
|
+
onInputSearchKeydown(event) {
|
456
|
+
// Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção
|
457
|
+
if ((event.key && event.key.length === 1) ||
|
458
|
+
(event.keyCode >= A && event.keyCode <= Z) ||
|
459
|
+
(event.keyCode >= ZERO && event.keyCode <= NINE) ||
|
460
|
+
(event.keyCode === SPACE)) {
|
461
|
+
event.stopPropagation();
|
462
|
+
}
|
463
|
+
if (this.multiple && event.key && event.keyCode === ENTER) {
|
464
|
+
// Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais
|
465
|
+
setTimeout(() => this._searchSelectInputFocus());
|
466
|
+
}
|
467
|
+
// Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa
|
468
|
+
if (this.enableClearOnEscapePressed && (event.keyCode === ESCAPE) && this._formControlSearch.value) {
|
469
|
+
this._searchSelectInputReset(true);
|
470
|
+
event.stopPropagation();
|
471
|
+
}
|
472
|
+
}
|
473
|
+
};
|
474
|
+
GIPIInputSelectComponent.ctorParameters = () => [
|
475
|
+
{ type: ChangeDetectorRef }
|
476
|
+
];
|
477
|
+
__decorate([
|
478
|
+
ViewChild('formfieldSelectSearchInput', { read: GIPIFormFieldComponent, static: true }),
|
479
|
+
__metadata("design:type", GIPIFormFieldComponent)
|
480
|
+
], GIPIInputSelectComponent.prototype, "formfieldSelectSearchInput", void 0);
|
481
|
+
__decorate([
|
482
|
+
ViewChild('formFieldSelect', { read: GIPIFormFieldComponent, static: false }),
|
483
|
+
__metadata("design:type", GIPIFormFieldComponent)
|
484
|
+
], GIPIInputSelectComponent.prototype, "formFieldSelect", void 0);
|
485
|
+
__decorate([
|
486
|
+
ViewChild('overlaySelect', { read: GIPIOverlayComponent, static: false }),
|
487
|
+
__metadata("design:type", GIPIOverlayComponent)
|
488
|
+
], GIPIInputSelectComponent.prototype, "overlaySelect", void 0);
|
489
|
+
__decorate([
|
490
|
+
ViewChild(CdkVirtualScrollViewport, { static: false }),
|
491
|
+
__metadata("design:type", CdkVirtualScrollViewport)
|
492
|
+
], GIPIInputSelectComponent.prototype, "cdkVirtualScrollViewPort", void 0);
|
493
|
+
__decorate([
|
494
|
+
Input(),
|
495
|
+
__metadata("design:type", Object)
|
496
|
+
], GIPIInputSelectComponent.prototype, "id", void 0);
|
497
|
+
__decorate([
|
498
|
+
Input(),
|
499
|
+
__metadata("design:type", String)
|
500
|
+
], GIPIInputSelectComponent.prototype, "name", void 0);
|
501
|
+
__decorate([
|
502
|
+
Input(),
|
503
|
+
__metadata("design:type", String)
|
504
|
+
], GIPIInputSelectComponent.prototype, "ariaLabel", void 0);
|
505
|
+
__decorate([
|
506
|
+
Input(),
|
507
|
+
__metadata("design:type", String)
|
508
|
+
], GIPIInputSelectComponent.prototype, "label", void 0);
|
509
|
+
__decorate([
|
510
|
+
Input(),
|
511
|
+
__metadata("design:type", String)
|
512
|
+
], GIPIInputSelectComponent.prototype, "placeholder", void 0);
|
513
|
+
__decorate([
|
514
|
+
Input(),
|
515
|
+
__metadata("design:type", String)
|
516
|
+
], GIPIInputSelectComponent.prototype, "labelSelectAll", void 0);
|
517
|
+
__decorate([
|
518
|
+
Input(),
|
519
|
+
__metadata("design:type", Boolean)
|
520
|
+
], GIPIInputSelectComponent.prototype, "multiple", void 0);
|
521
|
+
__decorate([
|
522
|
+
Input(),
|
523
|
+
__metadata("design:type", Boolean)
|
524
|
+
], GIPIInputSelectComponent.prototype, "showClear", void 0);
|
525
|
+
__decorate([
|
526
|
+
Input(),
|
527
|
+
__metadata("design:type", Boolean)
|
528
|
+
], GIPIInputSelectComponent.prototype, "showOnFocus", void 0);
|
529
|
+
__decorate([
|
530
|
+
Input(),
|
531
|
+
__metadata("design:type", Boolean)
|
532
|
+
], GIPIInputSelectComponent.prototype, "hideOnEscape", void 0);
|
533
|
+
__decorate([
|
534
|
+
Input(),
|
535
|
+
__metadata("design:type", Boolean)
|
536
|
+
], GIPIInputSelectComponent.prototype, "showSelectAll", void 0);
|
537
|
+
__decorate([
|
538
|
+
Input(),
|
539
|
+
__metadata("design:type", Boolean)
|
540
|
+
], GIPIInputSelectComponent.prototype, "showFooter", void 0);
|
541
|
+
__decorate([
|
542
|
+
Input(),
|
543
|
+
__metadata("design:type", Boolean)
|
544
|
+
], GIPIInputSelectComponent.prototype, "infiniteScroll", void 0);
|
545
|
+
__decorate([
|
546
|
+
Input(),
|
547
|
+
__metadata("design:type", Boolean)
|
548
|
+
], GIPIInputSelectComponent.prototype, "showSearch", void 0);
|
549
|
+
__decorate([
|
550
|
+
Input(),
|
551
|
+
__metadata("design:type", Boolean)
|
552
|
+
], GIPIInputSelectComponent.prototype, "required", void 0);
|
553
|
+
__decorate([
|
554
|
+
Input(),
|
555
|
+
__metadata("design:type", String)
|
556
|
+
], GIPIInputSelectComponent.prototype, "property", void 0);
|
557
|
+
__decorate([
|
558
|
+
Input(),
|
559
|
+
__metadata("design:type", String)
|
560
|
+
], GIPIInputSelectComponent.prototype, "trackBy", void 0);
|
561
|
+
__decorate([
|
562
|
+
Input(),
|
563
|
+
__metadata("design:type", Object)
|
564
|
+
], GIPIInputSelectComponent.prototype, "appendTo", void 0);
|
565
|
+
__decorate([
|
566
|
+
Input(),
|
567
|
+
__metadata("design:type", Function)
|
568
|
+
], GIPIInputSelectComponent.prototype, "propertyFn", void 0);
|
569
|
+
__decorate([
|
570
|
+
Input(),
|
571
|
+
__metadata("design:type", Function)
|
572
|
+
], GIPIInputSelectComponent.prototype, "nextBatchFn", void 0);
|
573
|
+
__decorate([
|
574
|
+
Input(),
|
575
|
+
__metadata("design:type", Number)
|
576
|
+
], GIPIInputSelectComponent.prototype, "pageSize", void 0);
|
577
|
+
__decorate([
|
578
|
+
Input(),
|
579
|
+
__metadata("design:type", Boolean)
|
580
|
+
], GIPIInputSelectComponent.prototype, "enableClearOnEscapePressed", void 0);
|
581
|
+
__decorate([
|
582
|
+
Input(),
|
583
|
+
__metadata("design:type", Boolean),
|
584
|
+
__metadata("design:paramtypes", [Boolean])
|
585
|
+
], GIPIInputSelectComponent.prototype, "disabled", null);
|
586
|
+
__decorate([
|
587
|
+
Input(),
|
588
|
+
__metadata("design:type", Boolean),
|
589
|
+
__metadata("design:paramtypes", [Boolean])
|
590
|
+
], GIPIInputSelectComponent.prototype, "loading", null);
|
591
|
+
__decorate([
|
592
|
+
Input(),
|
593
|
+
__metadata("design:type", Object),
|
594
|
+
__metadata("design:paramtypes", [Object])
|
595
|
+
], GIPIInputSelectComponent.prototype, "paramNextBatch", null);
|
596
|
+
__decorate([
|
597
|
+
Input(),
|
598
|
+
__metadata("design:type", Object),
|
599
|
+
__metadata("design:paramtypes", [Object])
|
600
|
+
], GIPIInputSelectComponent.prototype, "value", null);
|
601
|
+
__decorate([
|
602
|
+
Input(),
|
603
|
+
__metadata("design:type", Array),
|
604
|
+
__metadata("design:paramtypes", [Array])
|
605
|
+
], GIPIInputSelectComponent.prototype, "options", null);
|
606
|
+
__decorate([
|
607
|
+
Output(),
|
608
|
+
__metadata("design:type", EventEmitter)
|
609
|
+
], GIPIInputSelectComponent.prototype, "onFocus", void 0);
|
610
|
+
__decorate([
|
611
|
+
Output(),
|
612
|
+
__metadata("design:type", EventEmitter)
|
613
|
+
], GIPIInputSelectComponent.prototype, "onBlur", void 0);
|
614
|
+
__decorate([
|
615
|
+
Output(),
|
616
|
+
__metadata("design:type", EventEmitter)
|
617
|
+
], GIPIInputSelectComponent.prototype, "onClose", void 0);
|
618
|
+
__decorate([
|
619
|
+
Output(),
|
620
|
+
__metadata("design:type", EventEmitter)
|
621
|
+
], GIPIInputSelectComponent.prototype, "onSelectChange", void 0);
|
622
|
+
__decorate([
|
623
|
+
Output(),
|
624
|
+
__metadata("design:type", EventEmitter)
|
625
|
+
], GIPIInputSelectComponent.prototype, "onOpenedChange", void 0);
|
626
|
+
__decorate([
|
627
|
+
Output(),
|
628
|
+
__metadata("design:type", EventEmitter)
|
629
|
+
], GIPIInputSelectComponent.prototype, "onSearchChange", void 0);
|
630
|
+
__decorate([
|
631
|
+
Output(),
|
632
|
+
__metadata("design:type", EventEmitter)
|
633
|
+
], GIPIInputSelectComponent.prototype, "onAddChange", void 0);
|
634
|
+
GIPIInputSelectComponent = GIPIInputSelectComponent_1 = __decorate([
|
635
|
+
Component({
|
636
|
+
selector: `gipi-input-select`,
|
637
|
+
exportAs: 'gipiInputSelect',
|
638
|
+
template: "<gipi-form-field #formFieldSelect\n [id]=\"id\"\n [name]=\"name\"\n [type]=\"'select'\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [showClear]=\"inputFieldValue && showClear && !disabled && !loading\"\n [showTrigger]=\"inputFieldValueSelected && (inputFieldValueSelected > 1)\"\n [trigger]=\"inputFieldValueSelected\"\n [ariaLabel]=\"ariaLabel\"\n [(ngModel)]=\"inputFieldValue\"\n (onKeydown)=\"onInputKeydown($event)\"\n (onClear)=\"onClearOptionsClick($event)\"\n (onFocus)=\"onInputFocus($event)\"\n (onBlur)=\"onInputBlur($event)\"\n (onClick)=\"onInputClick()\">\n</gipi-form-field>\n\n<gipi-overlay *ngIf=\"!disabled && !loading\"\n contentStyleClass=\"overlay-select\"\n #overlaySelect\n [(visible)]=\"_overlayVisible\"\n [autoZIndex]=\"true\"\n [appendTo]=\"appendTo ? appendTo : 'body'\"\n (onShow)=\"onOpenedChange.emit(true)\"\n (onHide)=\"onOpenedChange.emit(false)\">\n <div class=\"select-search\"\n *ngIf=\"showSearch\"\n [class.disabled]=\"showSelectAll && (disabled || loading || (isLoading > 0))\">\n <mat-checkbox *ngIf=\"multiple && showSelectAll\"\n class=\"select-search-toggle-all-checkbox\"\n [disabled]=\"disabled || loading || !options || (options && !options.length)\"\n [(ngModel)]=\"toggleAllCheckboxChecked\"\n [indeterminate]=\"toggleAllCheckboxIndeterminate\"\n (change)=\"onChangeToggleAllCheckbox()\">\n </mat-checkbox>\n\n <gipi-form-field #formfieldSelectSearchInput\n placeholder=\"Pesquisar\"\n type=\"search\"\n [style.width]=\"'100%'\"\n [formControl]=\"_formControlSearch\"\n [showClear]=\"valueSearch && !disabled && !loading && isLoading <= 0\"\n (onKeydown)=\"onInputSearchKeydown($event)\">\n </gipi-form-field>\n </div>\n\n <div class=\"select-row select-option-all\"\n [style.height.px]=\"40\"\n [class.disabled]=\"disabled || loading\"\n *ngIf=\"(!showSearch && multiple && showSelectAll)\"\n (click)=\"onClickSelectAllByOption()\">\n <mat-pseudo-checkbox *ngIf=\"multiple\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"toggleAllCheckboxIndeterminate ? 'indeterminate' : toggleAllCheckboxChecked ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ labelSelectAll ? labelSelectAll : 'Selecionar todos' }} </span>\n </div>\n\n <cdk-virtual-scroll-viewport *ngIf=\"(options && options.length) && (!loading || isLoading <= 0)\"\n class=\"select-virtual-scroll-viewport\"\n [style.height.px]=\"scrollViewportHeight\"\n [itemSize]=\"_itemSizeScrollViewport\"\n GIPIInfiniteScroll\n [infiniteScrollDistance]=\"'30%'\"\n [infiniteScrollThrottle]=\"50\"\n [infiniteScrollcomplete]=\"options && _totalOptions && options.length === _totalOptions\"\n (scrolled)=\"onScroll()\">\n <div *cdkVirtualFor=\"let option of options; trackBy: trackByOption\"\n class=\"select-row\"\n [style.height.px]=\"40\"\n [class.disabled]=\"disabled || loading\"\n (click)=\"onButtonSelectOptionClick(option)\">\n <mat-pseudo-checkbox *ngIf=\"multiple && option\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"optionCheckboxIsChecked(option) ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ option ? getPropertyValue(option) : '' }} </span>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <div *ngIf=\"loading || isLoading > 0\"\n class=\"select-loading\">\n <div class=\"dot-pulse\"> </div>\n </div>\n\n <div *ngIf=\"(!options || (options && options.length <= 0)) && !loading && (isLoading <= 0)\"\n class=\"select-not-found\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n Nenhum registro foi encontrado\n </div>\n\n <div class=\"select-footer\"\n *ngIf=\"multiple && !showSelectAll && showFooter\">\n <gipi-button label=\"Adicionar\"\n gipi-primary\n id=\"btnAddOptions\"\n [style.width]=\"'100%'\"\n [disabled]=\"disabled || loading || (!value || (value && !value.length))\"\n (click)=\"onClickAddOptions()\">\n </gipi-button>\n </div>\n</gipi-overlay>\n",
|
639
|
+
providers: [
|
640
|
+
{
|
641
|
+
provide: NG_VALUE_ACCESSOR,
|
642
|
+
useExisting: forwardRef(() => GIPIInputSelectComponent_1),
|
643
|
+
multi: true
|
644
|
+
}
|
645
|
+
],
|
646
|
+
host: {
|
647
|
+
'class': 'gipi-input-select',
|
648
|
+
},
|
649
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
650
|
+
styles: ["::ng-deep .overlay-select{padding:0!important;overflow:hidden!important}::ng-deep .select-virtual-scroll-viewport{width:100%!important;max-height:240px;overflow:auto}::ng-deep .select-virtual-scroll-viewport .cdk-virtual-scroll-content-wrapper{width:100%!important;position:relative!important}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar{width:15px}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar-thumb{background-color:#e0e1e2;border-radius:10px;border:4px solid transparent;background-clip:padding-box}::ng-deep .select-row{display:flex;align-items:center;padding:0 16px;cursor:pointer;font-size:1.4rem;line-height:100%;gap:12px}::ng-deep .select-row:hover{background:#f5f5f6}::ng-deep .select-row:active{background:#e0e1e2}::ng-deep .select-row.disabled{background-color:#d1d2d4!important;color:#9a9da2!important;cursor:not-allowed!important;pointer-events:none!important}::ng-deep .select-row>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-search{display:flex;align-items:center;font-size:1.4rem;line-height:100%;gap:12px;padding:8px 12px}.select-option-all{border-bottom:1px solid rgba(0,0,0,.12)}.select-not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:600;font-size:1.2rem;gap:8px;color:#131313;cursor:default;padding:0 0 16px}.select-not-found>mat-icon{width:2.8rem;height:2.8rem;font-size:2.8rem;line-height:2.8rem;color:#131313}.select-loading{height:4rem;width:100%;background-color:#fff;display:flex;align-items:center;justify-content:center}.select-loading .dot-pulse{position:relative;left:-9999px;width:5px;height:5px;border-radius:50%;background-color:#e0313e;color:#e0313e;box-shadow:9999px 0 0 -5px;-webkit-animation:1.5s linear .25s infinite dot-pulse;animation:1.5s linear .25s infinite dot-pulse}.select-loading .dot-pulse::after,.select-loading .dot-pulse::before{content:\"\";display:inline-block;position:absolute;top:0;width:5px;height:5px;border-radius:50%;background-color:#e0313e;color:#e0313e}.select-loading .dot-pulse::before{box-shadow:9984px 0 0 -5px;-webkit-animation:1.5s linear infinite dot-pulse-before;animation:1.5s linear infinite dot-pulse-before}.select-loading .dot-pulse::after{box-shadow:10014px 0 0 -5px;-webkit-animation:1.5s linear .5s infinite dot-pulse-after;animation:1.5s linear .5s infinite dot-pulse-after}@-webkit-keyframes dot-pulse-before{0%,100%,60%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}}@keyframes dot-pulse-before{0%,100%,60%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}}@-webkit-keyframes dot-pulse{0%,100%,60%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}}@keyframes dot-pulse{0%,100%,60%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}}@-webkit-keyframes dot-pulse-after{0%,100%,60%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}}@keyframes dot-pulse-after{0%,100%,60%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}}.select-footer{display:flex;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid #bfbfbf}::ng-deep .select-mat-option-pseudo-checkbox{margin:0!important}"]
|
651
|
+
}),
|
652
|
+
__metadata("design:paramtypes", [ChangeDetectorRef])
|
653
|
+
], GIPIInputSelectComponent);
|
654
|
+
export { GIPIInputSelectComponent };
|
655
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU9wRSx3REFBd0Q7QUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFNUIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBbUJyQixJQUFhLHdCQUF3QixnQ0FBckMsTUFBYSx3QkFBd0I7SUFnTGpDLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBOUtqRCxVQUFLLEdBQVcscUJBQXFCLFlBQVksRUFBRSxFQUFFLENBQUM7UUFNdEQsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhELDRCQUF1QixHQUFXLENBQUMsQ0FBQztRQUlwQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyx1QkFBa0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWxGLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBRTdCLDRCQUF1QixHQUFXLENBQUMsQ0FBQztRQUVwQyw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFDMUMsbUNBQThCLEdBQVksS0FBSyxDQUFDO1FBRWhELGNBQVMsR0FBVyxDQUFDLENBQUM7UUFXYixPQUFFLEdBQW9CLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFakMsU0FBSSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUM7UUFNMUIsZ0JBQVcsR0FBVyxZQUFZLENBQUM7UUFFbkMsbUJBQWMsR0FBVyxrQkFBa0IsQ0FBQztRQUU1QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRW5DLHFEQUFxRDtRQUM1QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTVCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRTdCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRS9CLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUIsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFFL0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBWTFCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFOUIsd0JBQXdCO1FBQ3hCLDJDQUEyQztRQUNsQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFDcEQsd0JBQXdCO1FBRWhCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFTM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQTBEeEIsWUFBTyxHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3pELFdBQU0sR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUN4RCxZQUFPLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7UUFDekQsbUJBQWMsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNwRSxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3BFLG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEUsZ0JBQVcsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUF1Q3JGLGtCQUFhLEdBQXVCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRXZILGFBQVEsR0FBUSxHQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFaEMsWUFBTyxHQUFRLEdBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQXhCOEIsQ0FBQztJQTNGckQsSUFBSSxRQUFRLENBQUMsS0FBYztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFHUSxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUdRLElBQUksY0FBYyxDQUFDLEdBQVE7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBR1EsSUFBSSxLQUFLLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQy9DLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3JHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQy9DO2lCQUFNO2dCQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO2FBQ3BDO1NBRUo7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7YUFDcEM7U0FDSjtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUdRLElBQUksT0FBTyxDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBVUQsSUFBSSxvQkFBb0I7UUFDcEIsSUFBSSxNQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNyQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RIO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFJRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVk7YUFDL0IsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ3JDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDN0I7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBUUQsZ0JBQWdCLENBQUMsRUFBTztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVk7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBSyxFQUFFLEVBQUs7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztTQUM5RTtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUMvQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxLQUFLLE1BQU0sQ0FBQztTQUM1QjtRQUVELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQVM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEM7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoRDtTQUNKO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQVMsRUFBRSxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBYSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxHQUFRLE1BQU0sQ0FBQztRQUV4QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLEtBQUssQ0FBQzthQUNoQjtTQUNKO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFZO1FBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVNLFlBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWTtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQVU7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDakMsT0FBTztTQUNWO1FBRUQsSUFDSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzlELENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxhQUFhLENBQUMsQ0FBQztZQUN4RixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQ3RDO1lBQ0UsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUMxQjtTQUNKO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQVk7UUFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDakMsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ25CO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNyQjtRQUVELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLDhCQUE4QixHQUFHLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUV4QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkI7U0FDSjtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPO1NBQ1Y7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdEI7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsbUVBQW1FO0lBQzdELFFBQVE7O1lBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RCLE9BQU87YUFDVjtZQUNELElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztnQkFDMUUsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEcsT0FBTzthQUNWO1lBRUQsTUFBTSxVQUFVLEdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFaEcseUdBQXlHO1lBQ3pHLG9FQUFvRTtZQUNwRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNwQjtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDekIsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWpCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNwRyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztpQkFDckI7Z0JBRUQsOEVBQThFO2dCQUM5RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUVyRCwwQkFBMEI7Z0JBQzFCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRWxDLDBDQUEwQztnQkFDMUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFM0Qsc0RBQXNEO2dCQUN0RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQkFFdkIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7b0JBQy9CLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2lCQUNwQztxQkFBTTtvQkFDSCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztpQkFDbkM7Z0JBR0QsbURBQW1EO2dCQUNuRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDMUYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDckQ7WUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUMsQ0FBQztLQUFBO0lBRUQsbUVBQW1FO0lBQzVELHlCQUF5QixDQUFDLE1BQVM7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7YUFDbkI7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQixNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3BGLElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTtvQkFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUN4QzthQUNKO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7YUFDdkI7U0FDSjtRQUVELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLHdCQUF3QjtRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQyxJQUNJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUMxQixDQUFDLElBQUksQ0FBQyxLQUFLO2dCQUNYLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUNiLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3hDO2dCQUNFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUM7YUFDL0M7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25LLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUM3RztxQkFBTTtvQkFDSCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2xLLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzSTthQUNKO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQUVNLHVCQUF1QixDQUFDLE1BQVM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFTSx3QkFBd0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDL0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQy9ELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSx5QkFBeUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNsQztpQkFBTTtnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUNuQjtZQUVELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLGlCQUFpQjtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RDLE1BQU0sU0FBUyxHQUFpQjtnQkFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSzthQUNyQixDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQsa0VBQWtFO0lBQzFELG1CQUFtQjtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDckM7YUFBTTtZQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYTtRQUMvQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFakIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUF1QjtRQUMxQixJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzdFLE9BQU87U0FDVjtRQUNELGNBQWM7UUFDZCxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHVCQUF1QixDQUFDLEtBQWU7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxvQkFBb0IsQ0FBQyxLQUFvQjtRQUM1QywyRkFBMkY7UUFDM0YsSUFDSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNoRCxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQzNCO1lBQ0UsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDdkQsZ0ZBQWdGO1lBQ2hGLFVBQVUsQ0FBQyxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1NBQzFEO1FBRUQscUlBQXFJO1FBQ3JJLElBQUksSUFBSSxDQUFDLDBCQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1lBQ2hHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0NBRUosQ0FBQTs7WUEvWjJDLGlCQUFpQjs7QUFwSmdDO0lBQXhGLFNBQVMsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OEJBQTZCLHNCQUFzQjs0RUFBQztBQUU3RDtJQUE5RSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDOzhCQUFrQixzQkFBc0I7aUVBQUM7QUFFNUM7SUFBMUUsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7OEJBQWdCLG9CQUFvQjsrREFBQztBQUV2RDtJQUF2RCxTQUFTLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7OEJBQW1DLHdCQUF3QjswRUFBQztBQUUxRztJQUFSLEtBQUssRUFBRTs7b0RBQWtDO0FBRWpDO0lBQVIsS0FBSyxFQUFFOztzREFBMkI7QUFFMUI7SUFBUixLQUFLLEVBQUU7OzJEQUFtQjtBQUVsQjtJQUFSLEtBQUssRUFBRTs7dURBQWU7QUFFZDtJQUFSLEtBQUssRUFBRTs7NkRBQW9DO0FBRW5DO0lBQVIsS0FBSyxFQUFFOztnRUFBNkM7QUFFNUM7SUFBUixLQUFLLEVBQUU7OzBEQUEyQjtBQUcxQjtJQUFSLEtBQUssRUFBRTs7MkRBQTRCO0FBRTNCO0lBQVIsS0FBSyxFQUFFOzs2REFBNkI7QUFFNUI7SUFBUixLQUFLLEVBQUU7OzhEQUE4QjtBQUU3QjtJQUFSLEtBQUssRUFBRTs7K0RBQWdDO0FBRS9CO0lBQVIsS0FBSyxFQUFFOzs0REFBNkI7QUFFNUI7SUFBUixLQUFLLEVBQUU7O2dFQUFnQztBQUUvQjtJQUFSLEtBQUssRUFBRTs7NERBQTZCO0FBRTVCO0lBQVIsS0FBSyxFQUFFOzswREFBMkI7QUFFMUI7SUFBUixLQUFLLEVBQUU7OzBEQUFrQjtBQUVqQjtJQUFSLEtBQUssRUFBRTs7eURBQWlCO0FBRWhCO0lBQVIsS0FBSyxFQUFFOzswREFBZTtBQUVkO0lBQVIsS0FBSyxFQUFFOzs0REFBZ0M7QUFFL0I7SUFBUixLQUFLLEVBQUU7OzZEQUFrRztBQUVqRztJQUFSLEtBQUssRUFBRTs7MERBQXNCO0FBSXJCO0lBQVIsS0FBSyxFQUFFOzs0RUFBNEM7QUFJM0M7SUFBUixLQUFLLEVBQUU7Ozt3REFHUDtBQU1RO0lBQVIsS0FBSyxFQUFFOzs7dURBR1A7QUFNUTtJQUFSLEtBQUssRUFBRTs7OzhEQUVQO0FBTVE7SUFBUixLQUFLLEVBQUU7OztxREEyQlA7QUFNUTtJQUFSLEtBQUssRUFBRTs7O3VEQUVQO0FBS1M7SUFBVCxNQUFNLEVBQUU7OEJBQVUsWUFBWTt5REFBb0M7QUFDekQ7SUFBVCxNQUFNLEVBQUU7OEJBQVMsWUFBWTt3REFBb0M7QUFDeEQ7SUFBVCxNQUFNLEVBQUU7OEJBQVUsWUFBWTt5REFBb0M7QUFDekQ7SUFBVCxNQUFNLEVBQUU7OEJBQWlCLFlBQVk7Z0VBQXdDO0FBQ3BFO0lBQVQsTUFBTSxFQUFFOzhCQUFpQixZQUFZO2dFQUF3QztBQUNwRTtJQUFULE1BQU0sRUFBRTs4QkFBaUIsWUFBWTtnRUFBc0M7QUFDbEU7SUFBVCxNQUFNLEVBQUU7OEJBQWMsWUFBWTs2REFBa0Q7QUE3SjVFLHdCQUF3QjtJQWpCcEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLDhyS0FBNEM7UUFFNUMsU0FBUyxFQUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFvQyxFQUFFLENBQUMsMEJBQXdCLENBQUM7Z0JBQ3hGLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSjtRQUNELElBQUksRUFBRTtZQUNGLE9BQU8sRUFBRSxtQkFBbUI7U0FDL0I7UUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDbEQsQ0FBQztxQ0FpTDBDLGlCQUFpQjtHQWhMaEQsd0JBQXdCLENBK2tCcEM7U0Eva0JZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEEsIEVOVEVSLCBFU0NBUEUsIE5JTkUsIFNQQUNFLCBaLCBaRVJPIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUcmFja0J5RnVuY3Rpb24sIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQYWdlRFRPIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvZHRvL3BhZ2UuZHRvJztcbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL29iamVjdC51dGlsJztcbmltcG9ydCB7IEdJUElGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEdJUElPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhbmdlPFQ+IHtcbiAgICB2YWx1ZXM6IFQgfCBUW107XG4gICAgc2VsZWN0ZWRBbGw/OiBib29sZWFuO1xufVxuXG4vKiogQSBhbHR1cmEgZG9zIGl0ZW5zIHNlbGVjaW9uYWRvcyBlbSB1bmlkYWRlcyBgcHhgLiAqL1xuY29uc3QgT1BUSU9OX0hFSUdIVF9QWCA9IDQwO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGBnaXBpLWlucHV0LXNlbGVjdGAsXG4gICAgZXhwb3J0QXM6ICdnaXBpSW5wdXRTZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgR0lQSUlucHV0U2VsZWN0Q29tcG9uZW50ID0+IEdJUElJbnB1dFNlbGVjdENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdnaXBpLWlucHV0LXNlbGVjdCcsXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHSVBJSW5wdXRTZWxlY3RDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9IGBnaXBpLWlucHV0LXNlbGVjdC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICBwcml2YXRlIF9jYWNoZTogYW55O1xuXG4gICAgcHJpdmF0ZSBfcGFnZU1vZGVsOiBQYWdlRFRPPFQ+O1xuXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIF9pdGVtU2l6ZVNjcm9sbFZpZXdwb3J0OiBudW1iZXIgPSA1O1xuXG4gICAgX3RvdGFsT3B0aW9uczogbnVtYmVyO1xuXG4gICAgX292ZXJsYXlWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBfZm9ybUNvbnRyb2xTZWFyY2g6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogZmFsc2UgfSk7XG5cbiAgICBpbnB1dEZpZWxkVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQ6IG51bWJlciA9IDA7XG5cbiAgICB0b2dnbGVBbGxDaGVja2JveENoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICB0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzTG9hZGluZzogbnVtYmVyID0gMDtcblxuICAgIC8vIEBWaWV3Q2hpbGQoJ3NlYXJjaFNlbGVjdElucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgc2VhcmNoU2VsZWN0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZm9ybWZpZWxkU2VsZWN0U2VhcmNoSW5wdXQnLCB7IHJlYWQ6IEdJUElGb3JtRmllbGRDb21wb25lbnQsIHN0YXRpYzogdHJ1ZSB9KSBmb3JtZmllbGRTZWxlY3RTZWFyY2hJbnB1dDogR0lQSUZvcm1GaWVsZENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1GaWVsZFNlbGVjdCcsIHsgcmVhZDogR0lQSUZvcm1GaWVsZENvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KSBmb3JtRmllbGRTZWxlY3Q6IEdJUElGb3JtRmllbGRDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdvdmVybGF5U2VsZWN0JywgeyByZWFkOiBHSVBJT3ZlcmxheUNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KSBvdmVybGF5U2VsZWN0OiBHSVBJT3ZlcmxheUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBjZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLl9uYW1lO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gdGhpcy5fbmFtZTtcblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWNpb25hcic7XG5cbiAgICBASW5wdXQoKSBsYWJlbFNlbGVjdEFsbDogc3RyaW5nID0gJ1NlbGVjaW9uYXIgdG9kb3MnO1xuXG4gICAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIE1vc3RyYXIvb2N1bHRhciBvIGJvdMOjbyBsaW1wYXIgb3DDp8O1ZXMgc2VsZWNpb25hZGFzXG4gICAgQElucHV0KCkgc2hvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93T25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBoaWRlT25Fc2NhcGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd1NlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2hvd0Zvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHByb3BlcnR5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0cmFja0J5OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55O1xuXG4gICAgQElucHV0KCkgcHJvcGVydHlGbjogKG9iajogVCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmV4dEJhdGNoRm4hOiAocmVzZWFyY2hGaWVsZDogc3RyaW5nLCBwYWdlOiBudW1iZXIsIHBhcmFtTmV4dEJhdGNoPzogYW55KSA9PiBQcm9taXNlPFBhZ2VEVE88VD4+O1xuXG4gICAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDU7XG5cbiAgICAvLyBJbnB1dCBzZWFyY2ggLS0tLS0tLS1cbiAgICAvLyBBdGl2YXIgbGltcGFyIGlucHV0IGFvIHByZXNzaW9uYXIgZXNjYXBlXG4gICAgQElucHV0KCkgZW5hYmxlQ2xlYXJPbkVzY2FwZVByZXNzZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGlzYWJsZUlucHV0U2VhcmNoKCk7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb2FkaW5nID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVJbnB1dFNlYXJjaCgpO1xuICAgIH1cbiAgICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyYW1OZXh0QmF0Y2g6IGFueTtcbiAgICBASW5wdXQoKSBzZXQgcGFyYW1OZXh0QmF0Y2godmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1OZXh0QmF0Y2ggPSB2YWw7XG4gICAgfVxuICAgIGdldCBwYXJhbU5leHRCYXRjaCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1OZXh0QmF0Y2g7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsdWU6IFQgfCBUW107XG4gICAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBUIHwgVFtdKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFZhbHVlID0gdmFsdWVbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWUgPSB0aGlzLnByb3BlcnR5ID8gZmlyc3RWYWx1ZVt0aGlzLnByb3BlcnR5XSA6IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShmaXJzdFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZVNlbGVjdGVkID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWUgPSB0aGlzLnByb3BlcnR5ID8gdmFsdWVbdGhpcy5wcm9wZXJ0eV0gOiB0aGlzLmdldFByb3BlcnR5VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IFQgfCBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogVFtdO1xuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbDogVFtdKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gICAgfVxuICAgIGdldCBvcHRpb25zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9uU2VsZWN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VCB8IFRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBUW10+KCk7XG4gICAgQE91dHB1dCgpIG9uT3BlbmVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIG9uU2VhcmNoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBvbkFkZENoYW5nZTogRXZlbnRFbWl0dGVyPEFkZENoYW5nZTxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZENoYW5nZTxUPj4oKTtcblxuICAgIGdldCBzY3JvbGxWaWV3cG9ydEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgaGVpZ2h0OiBudW1iZXIgPSAwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhlaWdodCA9ICh0aGlzLm9wdGlvbnMubGVuZ3RoICogT1BUSU9OX0hFSUdIVF9QWCkgLSAodGhpcy5wYWdlU2l6ZSA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aCA/IE9QVElPTl9IRUlHSFRfUFggOiAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5vdmVybGF5U2VsZWN0KSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VsZWN0LmFsaWduT3ZlcmxheSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhlaWdodDtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWVTZWFyY2goKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2gudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4gdmFsdWUpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKTogdm9pZCA9PiB0aGlzLl9zZWFyY2hDaGFuZ2UodmFsdWUpKTtcblxuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICB0cmFja0J5T3B0aW9uOiBUcmFja0J5RnVuY3Rpb248VD4gPSAoaW5kZXgsIG9iaikgPT4gb2JqICYmIHRoaXMudHJhY2tCeSAmJiBvYmpbdGhpcy50cmFja0J5XSA/IG9ialt0aGlzLnRyYWNrQnldIDogb2JqO1xuXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcblxuICAgIG9uVG91Y2g6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGNvbXBhcmVGbihmMTogVCwgZjI6IFQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5ICYmICF0aGlzLnByb3BlcnR5Rm4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTyBwYXLDom1ldHJvIHByb3BlcnR5IG91IHByb3BlcnR5Rm4gZGV2ZSBjb250ZXIgdW0gdmFsb3InKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wcm9wZXJ0eSAmJiB0aGlzLnByb3BlcnR5Rm4gJiYgZjEgJiYgZjIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BGMSA9IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShmMSk7XG4gICAgICAgICAgICBjb25zdCBwcm9wRjIgPSB0aGlzLmdldFByb3BlcnR5VmFsdWUoZjIpO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BGMSA9PT0gcHJvcEYyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGYxICYmIGYyICYmIGYxW3RoaXMucHJvcGVydHldID09PSBmMlt0aGlzLnByb3BlcnR5XTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJvcGVydHlWYWx1ZShlbnRpdHk6IFQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKGVudGl0eSkpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5wcm9wZXJ0eUZuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5Rm4oZW50aXR5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZShlbnRpdHksIHRoaXMucHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRWYWx1ZShlbnRpdHk6IFQsIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IHByb3BlcnR5LnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCB2YWx1ZTogYW55ID0gZW50aXR5O1xuXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHZhbHVlLCBwcm9wZXJ0aWVzW2ldKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBpID09PSBwcm9wZXJ0aWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zaG93T25Gb2N1cyAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmxheSgpO1xuICAgICAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1GaWVsZFNlbGVjdC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dEtleWRvd24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ0VTQ0FQRScpICYmIHRoaXMuaGlkZU9uRXNjYXBlKSB8fFxuICAgICAgICAgICAgKChldmVudC5jb2RlLnRvVXBwZXJDYXNlKCkgPT09ICdFTlRFUicpIHx8IChldmVudC5jb2RlLnRvVXBwZXJDYXNlKCkgPT09ICdOVU1QQURFTlRFUicpKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ1RBQicpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhck9wdGlvbnNDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcblxuICAgICAgICB0aGlzLl9zZWFyY2hTZWxlY3RJbnB1dEZvY3VzKCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQWxsQ2hlY2tib3goKTtcbiAgICAgICAgICAgIHRoaXMub25PcGVuZWRDaGFuZ2UuZW1pdCh0aGlzLl9vdmVybGF5VmlzaWJsZSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9jYWNoZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2Nyb2xsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25PcGVuZWRDaGFuZ2UuZW1pdCh0aGlzLl9vdmVybGF5VmlzaWJsZSk7XG4gICAgICAgIHRoaXMuX2NhY2hlID0ge307XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluZmluaXRlIHNjcm9sbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBhc3luYyBvblNjcm9sbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMubmV4dEJhdGNoRm4pKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBIGZ1bsOnw6NvIFwibmV4dEJhdGNoRm5cIiDDqSBvYnJpZ2F0w7NyaWEgZSBuw6NvIGZvaSBpbmZvcm1hZGEnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX3BhZ2VNb2RlbCkgJiYgKHRoaXMuX3BhZ2VNb2RlbC50b3RhbFBhZ2VzID09PSB0aGlzLl9wYWdlTW9kZWwubnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFnZU51bWJlcjogbnVtYmVyID0gIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX3BhZ2VNb2RlbCkgPyB0aGlzLl9wYWdlTW9kZWwubnVtYmVyICsgMSA6IDA7XG5cbiAgICAgICAgLy8gTWFudGVtb3MgdW0gw61uZGljZSBkZSBww6FnaW5hcyBjYXJyZWdhZGFzIHBlbG8gc2Vydmlkb3IgcGFyYSBuw6NvIGNhcnJlZ2FybW9zIG9zIG1lc21vcyBkYWRvcyBkdWFzIHZlemVzXG4gICAgICAgIC8vIElzc28gw6kgYmFzZWFkbyBuYSBww6FnaW5hIGRvIHNlcnZpZG9yLCBuw6NvIG5hIGludGVyZmFjZSBkbyB1c3XDoXJpb1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5fY2FjaGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9jYWNoZVtwYWdlTnVtYmVyXSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NhY2hlW3BhZ2VOdW1iZXJdID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmlzTG9hZGluZysrO1xuXG4gICAgICAgIGF3YWl0IHRoaXMubmV4dEJhdGNoRm4odGhpcy5fZm9ybUNvbnRyb2xTZWFyY2gudmFsdWUsIHBhZ2VOdW1iZXIsIHRoaXMucGFyYW1OZXh0QmF0Y2gpLnRoZW4ocGFnZWREYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3BhZ2VNb2RlbCA9IHBhZ2VkRGF0YTtcbiAgICAgICAgICAgIHRoaXMuX3RvdGFsT3B0aW9ucyA9IHBhZ2VkRGF0YS50b3RhbEVsZW1lbnRzO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEZXNsb2NhbWVudG8gZGEgbGluaGEgaW5pY2lhbC4gRXN0YSDDqSBhIHBvc2nDp8OjbyBwYXJhIGluc2VyaXIgb3Mgbm92b3MgZGFkb3NcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fcGFnZU1vZGVsLm51bWJlciAqIHRoaXMucGFnZVNpemU7XG5cbiAgICAgICAgICAgIC8vIENvcGlhciBkYWRvcyBleGlzdGVudGVzXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XG5cbiAgICAgICAgICAgIC8vIEluc2VyaXIgbm92YXMgbGluaGFzIG5hIHBvc2nDp8OjbyBjb3JyZXRhXG4gICAgICAgICAgICBvcHRpb25zLnNwbGljZShzdGFydCwgdGhpcy5wYWdlU2l6ZSwgLi4ucGFnZWREYXRhLmNvbnRlbnQpO1xuXG4gICAgICAgICAgICAvLyBWb2x0YSBvIGFycmF5IGRlIG9ww6fDtWVzIGphIGF0dWFsaXphZG8gcGFyYSBleGliacOnw6NvXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlVG9nZ2xlQWxsQ2hlY2tib3goKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQWxsQ2hlY2tib3goKTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAvLyBEaW1pbnVpciBvIGNvbnRhZG9yIGRlIGNoYW1hZGFzIGRlIEFQSSBwZW5kZW50ZXNcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLS07XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydCkgJiYgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0LnNjcm9sbFRvSW5kZXgodGhpcy5vcHRpb25zLmxlbmd0aCwgJ3Ntb290aCcpO1xuICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvLyBPcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIG9uQnV0dG9uU2VsZWN0T3B0aW9uQ2xpY2sob3B0aW9uOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhPcHRpb246IG51bWJlciA9IHRoaXMudmFsdWUuZmluZEluZGV4KG8gPT4gT2JqZWN0VXRpbC5lcXVhbHMobywgb3B0aW9uKSk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4T3B0aW9uID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgbFZhbHVlLnNwbGljZShpbmRleE9wdGlvbiwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4ubFZhbHVlXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIG9wdGlvbl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk7XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5zaG93U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAhdGhpcy52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLnZhbHVlICYmICF0aGlzLnZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgICAhdGhpcy5vcHRpb25zIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMub3B0aW9ucyAmJiAhdGhpcy5vcHRpb25zLmxlbmd0aClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCA9IHRoaXMudmFsdWUgJiYgdGhpcy5fcGFnZU1vZGVsICYmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDApICYmICh0aGlzLl90b3RhbE9wdGlvbnMgPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMuX3RvdGFsT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlID0gKHRoaXMudmFsdWUubGVuZ3RoID4gMCkgJiYgKHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5fdG90YWxPcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCA9IHRoaXMudmFsdWUgJiYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCkgJiYgdGhpcy5vcHRpb25zICYmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkgJiYgKHRoaXMudmFsdWUubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiAodGhpcy5vcHRpb25zLmxlbmd0aCA+IDApICYmICh0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9wdGlvbkNoZWNrYm94SXNDaGVja2VkKG9wdGlvbjogVCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoKSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5maW5kSW5kZXgobyA9PiBPYmplY3RVdGlsLmVxdWFscyhvLCBvcHRpb24pKSA+IC0xO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tTZWxlY3RBbGxCeU9wdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZDtcbiAgICAgICAgdGhpcy5vbkNoYW5nZVRvZ2dsZUFsbENoZWNrYm94KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hhbmdlVG9nZ2xlQWxsQ2hlY2tib3goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMub3B0aW9uc107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQWxsQ2hlY2tib3goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrQWRkT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIXRoaXMuc2hvd1NlbGVjdEFsbCkge1xuICAgICAgICAgICAgY29uc3QgYWRkQ2hhbmdlOiBBZGRDaGFuZ2U8VD4gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQWxsOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMub25BZGRDaGFuZ2UuZW1pdChhZGRDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5wdXQgc2VhcmNoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHJpdmF0ZSBfZGlzYWJsZUlucHV0U2VhcmNoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VhcmNoQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5vblNlYXJjaENoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5fcGFnZU1vZGVsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fY2FjaGUgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5vblNjcm9sbCgpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2NhbGl6YSBvIGlucHV0IGRlIHBlc3F1aXNhXG4gICAgICovXG4gICAgcHVibGljIF9zZWFyY2hTZWxlY3RJbnB1dEZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5mb3JtZmllbGRTZWxlY3RTZWFyY2hJbnB1dCkgfHwgIXRoaXMuX292ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2V0YSBvIGZvY29cbiAgICAgICAgdGhpcy5mb3JtZmllbGRTZWxlY3RTZWFyY2hJbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZGVmaW5lIG8gdmFsb3IgZG8gaW5wdXQgZGUgcGVzcXVpc2EgYXR1YWxcbiAgICAgKiBAcGFyYW0gZm9jdXMgc2UgZGV2ZSBmb2NhciBhcMOzcyBhIHJlZGVmaW5pw6fDo29cbiAgICAgKi9cbiAgICBwdWJsaWMgX3NlYXJjaFNlbGVjdElucHV0UmVzZXQoZm9jdXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLnNldFZhbHVlKCcnKTtcbiAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hTZWxlY3RJbnB1dEZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBvIGV2ZW50byBkZSB0ZWNsYSBwcmVzc2lvbmFkYS5cbiAgICAgKiBQZXJtaXRlLCBwb3IgZXguIHNlbGVjaW9uYW5kbyBjb20gYSB0ZWNsYSBlbnRlciwgbmF2ZWdhbmRvIGNvbSBhcyB0ZWNsYXMgZGUgc2V0YSwgZXRjLlxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvbklucHV0U2VhcmNoS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBFdml0ZSBhIHByb3BhZ2HDp8OjbyBkZSB0b2RvcyBvcyBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zIHBhcmEgZXZpdGFyIHByb2JsZW1hcyBkZSBzZWxlw6fDo29cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGV2ZW50LmtleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPj0gQSAmJiBldmVudC5rZXlDb2RlIDw9IFopIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBaRVJPICYmIGV2ZW50LmtleUNvZGUgPD0gTklORSkgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID09PSBTUEFDRSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIGV2ZW50LmtleSAmJiBldmVudC5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgICAgICAgLy8gUmVjdXBlcmUgbyBmb2NvIGFww7NzIGEgc2VsZcOnw6NvIG3Dumx0aXBsYSwgcGFyYSBxdWUgcG9zc2Ftb3MgZGlnaXRhciBhaW5kYSBtYWlzXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYXNvIGVzcGVjaWFsLCBzZSBjbGljYXIgZW0gRXNjYXBlLCBzZSBhIGVudHJhZGEgZXN0aXZlciB2YXppYSwgZmVjaGUgbyBtZW51IHN1c3BlbnNvLCBjYXNvIGNvbnRyw6FyaW8sIGVzdmF6aWUgbyBjYW1wbyBkZSBwZXNxdWlzYVxuICAgICAgICBpZiAodGhpcy5lbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZCAmJiAoZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFKSAmJiB0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VhcmNoU2VsZWN0SW5wdXRSZXNldCh0cnVlKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|