@gipisistemas/ng-core 1.0.68 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +38 -0
- package/_ITSS-NG-CI-CD.yml +53 -0
- package/_ITSS-NG-CI-PR.yml +53 -0
- package/angular-cli.json +42 -0
- package/azure-pipelines.yml +35 -0
- package/package.json +83 -31
- package/projects/itss-ng/ng-package.json +7 -0
- package/projects/itss-ng/package.json +25 -0
- package/assets/styles/colors.scss +0 -261
- package/assets/styles/layout-grid.scss +0 -146
- package/assets/styles/styles.scss +0 -149
- package/assets/styles/theme.scss +0 -22
- package/assets/styles/typography.scss +0 -54
- package/assets/styles/variable.scss +0 -41
- package/bundles/gipisistemas-ng-core.umd.js +0 -28311
- package/bundles/gipisistemas-ng-core.umd.js.map +0 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +0 -66
- package/bundles/gipisistemas-ng-core.umd.min.js.map +0 -1
- package/core/app-messages.d.ts +0 -9
- package/core/app.messages.d.ts +0 -4
- package/core/components/abstract-crud.component.d.ts +0 -27
- package/core/components/abstract-find.component.d.ts +0 -43
- package/core/components/abstract.component.d.ts +0 -23
- package/core/components/alert/alert.component.d.ts +0 -7
- package/core/core.module.d.ts +0 -17
- package/core/custom-breakpoints.d.ts +0 -7
- package/core/enums/local-time.enum.d.ts +0 -5
- package/core/extensions/string.extension.d.ts +0 -3
- package/core/gipi-components/components/abstract-crud.component.d.ts +0 -25
- package/core/gipi-components/components/abstract-find.component.d.ts +0 -73
- package/core/gipi-components/components/abstract.component.d.ts +0 -38
- package/core/gipi-components/decorators/autowired.decorator.d.ts +0 -7
- package/core/gipi-components/enums/sort-direction.enum.d.ts +0 -5
- package/core/gipi-components/interface/abstract-crud.interface.d.ts +0 -5
- package/core/gipi-components/interface/abstract-find.interface.d.ts +0 -12
- package/core/gipi-components/interface/abstract.interface.d.ts +0 -11
- package/core/gipi-components/interface/base-permission.interface.d.ts +0 -9
- package/core/gipi-components/models/abstract-filter.model.d.ts +0 -9
- package/core/gipi-components/models/abstract.model.d.ts +0 -7
- package/core/gipi-components/models/applied-filter.model.d.ts +0 -9
- package/core/gipi-components/models/dto/abstract.dto.d.ts +0 -7
- package/core/gipi-components/models/page-event.model.d.ts +0 -18
- package/core/gipi-components/models/page.model.d.ts +0 -7
- package/core/gipi-components/models/sort.model.d.ts +0 -6
- package/core/gipi-components/services/abstract-crud.service.d.ts +0 -83
- package/core/gipi-components/services/abstract.service.d.ts +0 -19
- package/core/gipi-components/services/base.service.d.ts +0 -35
- package/core/gipi-components/services/file.service.d.ts +0 -6
- package/core/gipi-components/services/session-storage.service.d.ts +0 -8
- package/core/gipi-components/types/generic.type.d.ts +0 -1
- package/core/gipi-components/types/uuid.type.d.ts +0 -1
- package/core/guards/auth.guard.d.ts +0 -11
- package/core/guards/permission.guard.d.ts +0 -14
- package/core/guards/public.guard.d.ts +0 -11
- package/core/interceptors/auth.interceptor.d.ts +0 -9
- package/core/interceptors/error.interceptor.d.ts +0 -11
- package/core/models/abstract.model.d.ts +0 -3
- package/core/models/archive.model.d.ts +0 -4
- package/core/models/authority.model.d.ts +0 -3
- package/core/models/base-user.model.d.ts +0 -12
- package/core/models/dto/abstract.dto.d.ts +0 -2
- package/core/models/dto/api-error.dto.d.ts +0 -9
- package/core/models/dto/api-sub-error.dto.d.ts +0 -7
- package/core/models/dto/chart.dto.d.ts +0 -5
- package/core/models/dto/confirmation.dto.d.ts +0 -10
- package/core/models/dto/dialog.dto.d.ts +0 -36
- package/core/models/dto/filter.dto.d.ts +0 -8
- package/core/models/dto/input-listbox.dto.d.ts +0 -6
- package/core/models/dto/menu.dto.d.ts +0 -15
- package/core/models/dto/message.dto.d.ts +0 -7
- package/core/models/dto/page.dto.d.ts +0 -8
- package/core/models/dto/sort.dto.d.ts +0 -7
- package/core/models/dto/tab.dto.d.ts +0 -12
- package/core/models/dto/table-column.dto.d.ts +0 -21
- package/core/models/dto/table-group-header.dto.d.ts +0 -7
- package/core/models/dto/table-page-event.dto.d.ts +0 -6
- package/core/models/dto/token.dto.d.ts +0 -8
- package/core/models/enums/criteria-operation.enum.d.ts +0 -13
- package/core/models/enums/criteria-sort-direction.enum.d.ts +0 -4
- package/core/models/enums/menu-type.enum.d.ts +0 -6
- package/core/models/enums/radio-button.enum.d.ts +0 -6
- package/core/models/enums/sort-direction.enum.d.ts +0 -4
- package/core/models/multitenant.model.d.ts +0 -4
- package/core/models/permission.model.d.ts +0 -8
- package/core/models/role.model.d.ts +0 -7
- package/core/pipes/local-time.pipe.d.ts +0 -6
- package/core/services/abstract-crud.service.d.ts +0 -15
- package/core/services/abstract-find.service.d.ts +0 -30
- package/core/services/abstract.service.d.ts +0 -13
- package/core/services/authentication.service.d.ts +0 -23
- package/core/services/breakpoint-observer.service.d.ts +0 -9
- package/core/services/confirmation.service.d.ts +0 -8
- package/core/services/dialog.service.d.ts +0 -8
- package/core/services/message.service.d.ts +0 -8
- package/core/services/nav.service.d.ts +0 -16
- package/core/services/svg-register.service.d.ts +0 -22
- package/core/types/local-time.type.d.ts +0 -5
- package/core/types/ng-class.type.d.ts +0 -10
- package/core/utils/array.util.d.ts +0 -14
- package/core/utils/browser.util.d.ts +0 -4
- package/core/utils/currency.util.d.ts +0 -6
- package/core/utils/date.util.d.ts +0 -39
- package/core/utils/document.util.d.ts +0 -11
- package/core/utils/email.util.d.ts +0 -4
- package/core/utils/number.util.d.ts +0 -8
- package/core/utils/object.util.d.ts +0 -20
- package/core/utils/password.util.d.ts +0 -11
- package/core/utils/phone.util.d.ts +0 -13
- package/core/utils/string.util.d.ts +0 -9
- package/core/utils/table-column-builder.d.ts +0 -40
- package/core/utils/time.util.d.ts +0 -9
- package/core/utils/url-params.util.d.ts +0 -7
- package/core/utils/uuid.util.d.ts +0 -5
- package/core/utils/zindex.util.d.ts +0 -7
- package/core.d.ts +0 -88
- package/esm2015/core/app-messages.js +0 -1
- package/esm2015/core/app.messages.js +0 -12
- package/esm2015/core/components/abstract-crud.component.js +0 -97
- package/esm2015/core/components/abstract-find.component.js +0 -189
- package/esm2015/core/components/abstract.component.js +0 -110
- package/esm2015/core/components/alert/alert.component.js +0 -24
- package/esm2015/core/core.module.js +0 -103
- package/esm2015/core/custom-breakpoints.js +0 -87
- package/esm2015/core/enums/local-time.enum.js +0 -6
- package/esm2015/core/extensions/string.extension.js +0 -37
- package/esm2015/core/gipi-components/components/abstract-crud.component.js +0 -110
- package/esm2015/core/gipi-components/components/abstract-find.component.js +0 -471
- package/esm2015/core/gipi-components/components/abstract.component.js +0 -140
- package/esm2015/core/gipi-components/decorators/autowired.decorator.js +0 -47
- package/esm2015/core/gipi-components/enums/sort-direction.enum.js +0 -6
- package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +0 -1
- package/esm2015/core/gipi-components/interface/abstract-find.interface.js +0 -1
- package/esm2015/core/gipi-components/interface/abstract.interface.js +0 -1
- package/esm2015/core/gipi-components/interface/base-permission.interface.js +0 -1
- package/esm2015/core/gipi-components/models/abstract-filter.model.js +0 -3
- package/esm2015/core/gipi-components/models/abstract.model.js +0 -3
- package/esm2015/core/gipi-components/models/applied-filter.model.js +0 -19
- package/esm2015/core/gipi-components/models/dto/abstract.dto.js +0 -3
- package/esm2015/core/gipi-components/models/page-event.model.js +0 -35
- package/esm2015/core/gipi-components/models/page.model.js +0 -7
- package/esm2015/core/gipi-components/models/sort.model.js +0 -7
- package/esm2015/core/gipi-components/services/abstract-crud.service.js +0 -109
- package/esm2015/core/gipi-components/services/abstract.service.js +0 -47
- package/esm2015/core/gipi-components/services/base.service.js +0 -102
- package/esm2015/core/gipi-components/services/file.service.js +0 -51
- package/esm2015/core/gipi-components/services/session-storage.service.js +0 -44
- package/esm2015/core/gipi-components/types/generic.type.js +0 -1
- package/esm2015/core/gipi-components/types/uuid.type.js +0 -1
- package/esm2015/core/guards/auth.guard.js +0 -48
- package/esm2015/core/guards/permission.guard.js +0 -61
- package/esm2015/core/guards/public.guard.js +0 -45
- package/esm2015/core/interceptors/auth.interceptor.js +0 -28
- package/esm2015/core/interceptors/error.interceptor.js +0 -110
- package/esm2015/core/models/abstract.model.js +0 -3
- package/esm2015/core/models/archive.model.js +0 -3
- package/esm2015/core/models/authority.model.js +0 -3
- package/esm2015/core/models/base-user.model.js +0 -8
- package/esm2015/core/models/dto/abstract.dto.js +0 -3
- package/esm2015/core/models/dto/api-error.dto.js +0 -8
- package/esm2015/core/models/dto/api-sub-error.dto.js +0 -4
- package/esm2015/core/models/dto/chart.dto.js +0 -4
- package/esm2015/core/models/dto/confirmation.dto.js +0 -8
- package/esm2015/core/models/dto/dialog.dto.js +0 -4
- package/esm2015/core/models/dto/filter.dto.js +0 -4
- package/esm2015/core/models/dto/input-listbox.dto.js +0 -7
- package/esm2015/core/models/dto/menu.dto.js +0 -9
- package/esm2015/core/models/dto/message.dto.js +0 -4
- package/esm2015/core/models/dto/page.dto.js +0 -9
- package/esm2015/core/models/dto/sort.dto.js +0 -9
- package/esm2015/core/models/dto/tab.dto.js +0 -10
- package/esm2015/core/models/dto/table-column.dto.js +0 -24
- package/esm2015/core/models/dto/table-group-header.dto.js +0 -10
- package/esm2015/core/models/dto/table-page-event.dto.js +0 -7
- package/esm2015/core/models/dto/token.dto.js +0 -4
- package/esm2015/core/models/enums/criteria-operation.enum.js +0 -15
- package/esm2015/core/models/enums/criteria-sort-direction.enum.js +0 -6
- package/esm2015/core/models/enums/menu-type.enum.js +0 -7
- package/esm2015/core/models/enums/radio-button.enum.js +0 -8
- package/esm2015/core/models/enums/sort-direction.enum.js +0 -6
- package/esm2015/core/models/multitenant.model.js +0 -4
- package/esm2015/core/models/permission.model.js +0 -11
- package/esm2015/core/models/role.model.js +0 -8
- package/esm2015/core/pipes/local-time.pipe.js +0 -21
- package/esm2015/core/services/abstract-crud.service.js +0 -24
- package/esm2015/core/services/abstract-find.service.js +0 -65
- package/esm2015/core/services/abstract.service.js +0 -30
- package/esm2015/core/services/authentication.service.js +0 -100
- package/esm2015/core/services/breakpoint-observer.service.js +0 -42
- package/esm2015/core/services/confirmation.service.js +0 -55
- package/esm2015/core/services/dialog.service.js +0 -41
- package/esm2015/core/services/message.service.js +0 -33
- package/esm2015/core/services/nav.service.js +0 -48
- package/esm2015/core/services/svg-register.service.js +0 -55
- package/esm2015/core/types/local-time.type.js +0 -1
- package/esm2015/core/types/ng-class.type.js +0 -1
- package/esm2015/core/utils/array.util.js +0 -110
- package/esm2015/core/utils/browser.util.js +0 -13
- package/esm2015/core/utils/currency.util.js +0 -21
- package/esm2015/core/utils/date.util.js +0 -257
- package/esm2015/core/utils/document.util.js +0 -153
- package/esm2015/core/utils/email.util.js +0 -25
- package/esm2015/core/utils/number.util.js +0 -28
- package/esm2015/core/utils/object.util.js +0 -199
- package/esm2015/core/utils/password.util.js +0 -38
- package/esm2015/core/utils/phone.util.js +0 -125
- package/esm2015/core/utils/string.util.js +0 -40
- package/esm2015/core/utils/table-column-builder.js +0 -85
- package/esm2015/core/utils/time.util.js +0 -59
- package/esm2015/core/utils/url-params.util.js +0 -12
- package/esm2015/core/utils/uuid.util.js +0 -17
- package/esm2015/core/utils/zindex.util.js +0 -35
- package/esm2015/core.js +0 -89
- package/esm2015/gipi-components.js +0 -105
- package/esm2015/gipisistemas-ng-core.js +0 -21
- package/esm2015/public_api.js +0 -4
- package/esm2015/shared/api/generate-id-component.js +0 -12
- package/esm2015/shared/api/gipi-ng-config.js +0 -76
- package/esm2015/shared/api/overlay-message.js +0 -1
- package/esm2015/shared/api/throttle.js +0 -60
- package/esm2015/shared/api/translation.js +0 -1
- package/esm2015/shared/components/button/button.component.js +0 -110
- package/esm2015/shared/components/card/card.component.js +0 -44
- package/esm2015/shared/components/checkbox/checkbox.component.js +0 -79
- package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +0 -27
- package/esm2015/shared/components/dom/dom-handler.js +0 -538
- package/esm2015/shared/components/icon/icon.component.js +0 -35
- package/esm2015/shared/components/input/input.component.js +0 -235
- package/esm2015/shared/components/input-currency/input-currency.component.js +0 -115
- package/esm2015/shared/components/input-file/input-file.component.js +0 -161
- package/esm2015/shared/components/loading/loading.component.js +0 -15
- package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +0 -21
- package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +0 -361
- package/esm2015/shared/components/popover/popover-ref.js +0 -25
- package/esm2015/shared/components/popover/popover.component.js +0 -34
- package/esm2015/shared/components/popover/popover.service.js +0 -85
- package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +0 -74
- package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +0 -126
- package/esm2015/shared/components/select-button/select-button.component.js +0 -181
- package/esm2015/shared/components/select-entity/select-entity.component.js +0 -262
- package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +0 -419
- package/esm2015/shared/components/select-entity-paged/shared/default-options.js +0 -35
- package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +0 -69
- package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +0 -59
- package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +0 -20
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +0 -547
- package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +0 -18
- package/esm2015/shared/components/select-enum/select-enum.component.js +0 -117
- package/esm2015/shared/components/select-month-period/select-month-period.component.js +0 -87
- package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +0 -75
- package/esm2015/shared/components/stepper/stepper.component.js +0 -32
- package/esm2015/shared/components/tab/tab.component.js +0 -57
- package/esm2015/shared/components/tab-group/tab-group.component.js +0 -117
- package/esm2015/shared/components/table/table.component.js +0 -523
- package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +0 -105
- package/esm2015/shared/components/textarea/textarea.component.js +0 -156
- package/esm2015/shared/directives/dynamic-tab.directive.js +0 -18
- package/esm2015/shared/directives/generic-template.directive.js +0 -30
- package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +0 -109
- package/esm2015/shared/directives/lower-case.directive.js +0 -47
- package/esm2015/shared/directives/phone-mask.directive.js +0 -60
- package/esm2015/shared/directives/space-drop.directive.js +0 -47
- package/esm2015/shared/directives/upper-case.directive.js +0 -47
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +0 -119
- package/esm2015/shared/gipi-components/action-row/action-row.component.js +0 -30
- package/esm2015/shared/gipi-components/badge/badge.component.js +0 -44
- package/esm2015/shared/gipi-components/button/button.component.js +0 -251
- package/esm2015/shared/gipi-components/chips/chips.component.js +0 -149
- package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +0 -44
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +0 -324
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +0 -41
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +0 -35
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +0 -259
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +0 -218
- package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +0 -130
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +0 -341
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +0 -397
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +0 -325
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +0 -329
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +0 -41
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +0 -61
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +0 -159
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +0 -35
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +0 -555
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +0 -14
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +0 -303
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +0 -179
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +0 -51
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +0 -124
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +0 -29
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +0 -365
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +0 -305
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +0 -116
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +0 -10
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +0 -294
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +0 -19
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +0 -81
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +0 -294
- package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +0 -27
- package/esm2015/shared/gipi-components/dom/dom-handler.js +0 -645
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +0 -185
- package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +0 -81
- package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +0 -240
- package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +0 -92
- package/esm2015/shared/gipi-components/footer/footer.component.js +0 -29
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +0 -262
- package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +0 -62
- package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +0 -103
- package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +0 -112
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +0 -197
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +0 -408
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +0 -655
- package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +0 -311
- package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +0 -422
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +0 -374
- package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +0 -350
- package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +0 -269
- package/esm2015/shared/gipi-components/layout-grid/col.directive.js +0 -161
- package/esm2015/shared/gipi-components/layout-grid/row.directive.js +0 -124
- package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +0 -87
- package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +0 -64
- package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +0 -193
- package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +0 -47
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +0 -460
- package/esm2015/shared/gipi-components/notification/notification.component.js +0 -104
- package/esm2015/shared/gipi-components/novelties/novelties.component.js +0 -109
- package/esm2015/shared/gipi-components/overlay/overlay.component.js +0 -565
- package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +0 -21
- package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +0 -1
- package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +0 -127
- package/esm2015/shared/gipi-components/popover/popover.component.js +0 -397
- package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +0 -29
- package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +0 -27
- package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +0 -1
- package/esm2015/shared/gipi-components/popover/shared/popover-target.js +0 -19
- package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +0 -514
- package/esm2015/shared/gipi-components/popover/shared/popover-types.js +0 -1
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +0 -143
- package/esm2015/shared/gipi-components/range-page/range-page.component.js +0 -254
- package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +0 -345
- package/esm2015/shared/gipi-components/select/select.component.js +0 -211
- package/esm2015/shared/gipi-components/select-button/select-button.component.js +0 -187
- package/esm2015/shared/gipi-components/sidebar/container/container.component.js +0 -83
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +0 -240
- package/esm2015/shared/gipi-components/stepper/stepper.component.js +0 -37
- package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +0 -203
- package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +0 -30
- package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +0 -152
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +0 -122
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +0 -225
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +0 -1
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +0 -105
- package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +0 -102
- package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +0 -30
- package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +0 -1
- package/esm2015/shared/gipi-components/table/models/sort.model.js +0 -19
- package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +0 -2
- package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +0 -104
- package/esm2015/shared/gipi-components/table/models/table-column.model.js +0 -162
- package/esm2015/shared/gipi-components/table/table.component.js +0 -159
- package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +0 -1
- package/esm2015/shared/gipi-components/table/types/sort.type.js +0 -1
- package/esm2015/shared/gipi-components/template/template.directive.js +0 -33
- package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +0 -53
- package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +0 -38
- package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +0 -109
- package/esm2015/shared/material.module.js +0 -102
- package/esm2015/shared/shared.module.js +0 -339
- package/esm2015/shared.js +0 -36
- package/esm5/core/app-messages.js +0 -1
- package/esm5/core/app.messages.js +0 -12
- package/esm5/core/components/abstract-crud.component.js +0 -108
- package/esm5/core/components/abstract-find.component.js +0 -201
- package/esm5/core/components/abstract.component.js +0 -112
- package/esm5/core/components/alert/alert.component.js +0 -25
- package/esm5/core/core.module.js +0 -107
- package/esm5/core/custom-breakpoints.js +0 -87
- package/esm5/core/enums/local-time.enum.js +0 -6
- package/esm5/core/extensions/string.extension.js +0 -37
- package/esm5/core/gipi-components/components/abstract-crud.component.js +0 -122
- package/esm5/core/gipi-components/components/abstract-find.component.js +0 -507
- package/esm5/core/gipi-components/components/abstract.component.js +0 -152
- package/esm5/core/gipi-components/decorators/autowired.decorator.js +0 -52
- package/esm5/core/gipi-components/enums/sort-direction.enum.js +0 -6
- package/esm5/core/gipi-components/interface/abstract-crud.interface.js +0 -1
- package/esm5/core/gipi-components/interface/abstract-find.interface.js +0 -1
- package/esm5/core/gipi-components/interface/abstract.interface.js +0 -1
- package/esm5/core/gipi-components/interface/base-permission.interface.js +0 -1
- package/esm5/core/gipi-components/models/abstract-filter.model.js +0 -7
- package/esm5/core/gipi-components/models/abstract.model.js +0 -7
- package/esm5/core/gipi-components/models/applied-filter.model.js +0 -29
- package/esm5/core/gipi-components/models/dto/abstract.dto.js +0 -7
- package/esm5/core/gipi-components/models/page-event.model.js +0 -49
- package/esm5/core/gipi-components/models/page.model.js +0 -9
- package/esm5/core/gipi-components/models/sort.model.js +0 -9
- package/esm5/core/gipi-components/services/abstract-crud.service.js +0 -114
- package/esm5/core/gipi-components/services/abstract.service.js +0 -49
- package/esm5/core/gipi-components/services/base.service.js +0 -143
- package/esm5/core/gipi-components/services/file.service.js +0 -53
- package/esm5/core/gipi-components/services/session-storage.service.js +0 -45
- package/esm5/core/gipi-components/types/generic.type.js +0 -1
- package/esm5/core/gipi-components/types/uuid.type.js +0 -1
- package/esm5/core/guards/auth.guard.js +0 -50
- package/esm5/core/guards/permission.guard.js +0 -74
- package/esm5/core/guards/public.guard.js +0 -47
- package/esm5/core/interceptors/auth.interceptor.js +0 -29
- package/esm5/core/interceptors/error.interceptor.js +0 -129
- package/esm5/core/models/abstract.model.js +0 -7
- package/esm5/core/models/archive.model.js +0 -7
- package/esm5/core/models/authority.model.js +0 -7
- package/esm5/core/models/base-user.model.js +0 -13
- package/esm5/core/models/dto/abstract.dto.js +0 -7
- package/esm5/core/models/dto/api-error.dto.js +0 -13
- package/esm5/core/models/dto/api-sub-error.dto.js +0 -11
- package/esm5/core/models/dto/chart.dto.js +0 -11
- package/esm5/core/models/dto/confirmation.dto.js +0 -13
- package/esm5/core/models/dto/dialog.dto.js +0 -11
- package/esm5/core/models/dto/filter.dto.js +0 -11
- package/esm5/core/models/dto/input-listbox.dto.js +0 -11
- package/esm5/core/models/dto/menu.dto.js +0 -14
- package/esm5/core/models/dto/message.dto.js +0 -11
- package/esm5/core/models/dto/page.dto.js +0 -14
- package/esm5/core/models/dto/sort.dto.js +0 -14
- package/esm5/core/models/dto/tab.dto.js +0 -15
- package/esm5/core/models/dto/table-column.dto.js +0 -29
- package/esm5/core/models/dto/table-group-header.dto.js +0 -15
- package/esm5/core/models/dto/table-page-event.dto.js +0 -11
- package/esm5/core/models/dto/token.dto.js +0 -11
- package/esm5/core/models/enums/criteria-operation.enum.js +0 -15
- package/esm5/core/models/enums/criteria-sort-direction.enum.js +0 -6
- package/esm5/core/models/enums/menu-type.enum.js +0 -7
- package/esm5/core/models/enums/radio-button.enum.js +0 -8
- package/esm5/core/models/enums/sort-direction.enum.js +0 -6
- package/esm5/core/models/multitenant.model.js +0 -11
- package/esm5/core/models/permission.model.js +0 -16
- package/esm5/core/models/role.model.js +0 -13
- package/esm5/core/pipes/local-time.pipe.js +0 -26
- package/esm5/core/services/abstract-crud.service.js +0 -30
- package/esm5/core/services/abstract-find.service.js +0 -71
- package/esm5/core/services/abstract.service.js +0 -32
- package/esm5/core/services/authentication.service.js +0 -121
- package/esm5/core/services/breakpoint-observer.service.js +0 -52
- package/esm5/core/services/confirmation.service.js +0 -66
- package/esm5/core/services/dialog.service.js +0 -44
- package/esm5/core/services/message.service.js +0 -36
- package/esm5/core/services/nav.service.js +0 -51
- package/esm5/core/services/svg-register.service.js +0 -67
- package/esm5/core/types/local-time.type.js +0 -1
- package/esm5/core/types/ng-class.type.js +0 -1
- package/esm5/core/utils/array.util.js +0 -120
- package/esm5/core/utils/browser.util.js +0 -17
- package/esm5/core/utils/currency.util.js +0 -26
- package/esm5/core/utils/date.util.js +0 -269
- package/esm5/core/utils/document.util.js +0 -157
- package/esm5/core/utils/email.util.js +0 -29
- package/esm5/core/utils/number.util.js +0 -32
- package/esm5/core/utils/object.util.js +0 -204
- package/esm5/core/utils/password.util.js +0 -42
- package/esm5/core/utils/phone.util.js +0 -135
- package/esm5/core/utils/string.util.js +0 -44
- package/esm5/core/utils/table-column-builder.js +0 -87
- package/esm5/core/utils/time.util.js +0 -65
- package/esm5/core/utils/url-params.util.js +0 -16
- package/esm5/core/utils/uuid.util.js +0 -21
- package/esm5/core/utils/zindex.util.js +0 -35
- package/esm5/core.js +0 -89
- package/esm5/gipi-components.js +0 -105
- package/esm5/gipisistemas-ng-core.js +0 -21
- package/esm5/public_api.js +0 -4
- package/esm5/shared/api/generate-id-component.js +0 -16
- package/esm5/shared/api/gipi-ng-config.js +0 -77
- package/esm5/shared/api/overlay-message.js +0 -1
- package/esm5/shared/api/throttle.js +0 -60
- package/esm5/shared/api/translation.js +0 -1
- package/esm5/shared/components/button/button.component.js +0 -111
- package/esm5/shared/components/card/card.component.js +0 -45
- package/esm5/shared/components/checkbox/checkbox.component.js +0 -85
- package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +0 -30
- package/esm5/shared/components/dom/dom-handler.js +0 -573
- package/esm5/shared/components/icon/icon.component.js +0 -38
- package/esm5/shared/components/input/input.component.js +0 -242
- package/esm5/shared/components/input-currency/input-currency.component.js +0 -121
- package/esm5/shared/components/input-file/input-file.component.js +0 -165
- package/esm5/shared/components/loading/loading.component.js +0 -18
- package/esm5/shared/components/loading-overlay/loading-overlay.component.js +0 -23
- package/esm5/shared/components/overlay-panel/overlay-panel.component.js +0 -366
- package/esm5/shared/components/popover/popover-ref.js +0 -28
- package/esm5/shared/components/popover/popover.component.js +0 -35
- package/esm5/shared/components/popover/popover.service.js +0 -88
- package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +0 -80
- package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +0 -138
- package/esm5/shared/components/select-button/select-button.component.js +0 -195
- package/esm5/shared/components/select-entity/select-entity.component.js +0 -269
- package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +0 -453
- package/esm5/shared/components/select-entity-paged/shared/default-options.js +0 -35
- package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +0 -72
- package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +0 -62
- package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +0 -23
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +0 -590
- package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +0 -21
- package/esm5/shared/components/select-enum/select-enum.component.js +0 -124
- package/esm5/shared/components/select-month-period/select-month-period.component.js +0 -91
- package/esm5/shared/components/slide-toggle/slide-toggle.component.js +0 -81
- package/esm5/shared/components/stepper/stepper.component.js +0 -36
- package/esm5/shared/components/tab/tab.component.js +0 -58
- package/esm5/shared/components/tab-group/tab-group.component.js +0 -125
- package/esm5/shared/components/table/table.component.js +0 -538
- package/esm5/shared/components/table-scrolled/table-scrolled.component.js +0 -107
- package/esm5/shared/components/textarea/textarea.component.js +0 -174
- package/esm5/shared/directives/dynamic-tab.directive.js +0 -19
- package/esm5/shared/directives/generic-template.directive.js +0 -31
- package/esm5/shared/directives/input-select-infinite-scroll.directive.js +0 -113
- package/esm5/shared/directives/lower-case.directive.js +0 -48
- package/esm5/shared/directives/phone-mask.directive.js +0 -61
- package/esm5/shared/directives/space-drop.directive.js +0 -48
- package/esm5/shared/directives/upper-case.directive.js +0 -48
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +0 -141
- package/esm5/shared/gipi-components/action-row/action-row.component.js +0 -33
- package/esm5/shared/gipi-components/badge/badge.component.js +0 -46
- package/esm5/shared/gipi-components/button/button.component.js +0 -257
- package/esm5/shared/gipi-components/chips/chips.component.js +0 -159
- package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +0 -46
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +0 -378
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +0 -42
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +0 -40
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +0 -291
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +0 -252
- package/esm5/shared/gipi-components/datepicker/datepicker.module.js +0 -133
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +0 -349
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +0 -441
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +0 -339
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +0 -376
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +0 -46
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +0 -62
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +0 -167
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +0 -35
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +0 -586
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +0 -14
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +0 -327
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +0 -199
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +0 -52
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +0 -133
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +0 -34
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +0 -384
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +0 -324
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +0 -118
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +0 -10
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +0 -300
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +0 -19
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +0 -82
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +0 -313
- package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +0 -30
- package/esm5/shared/gipi-components/dom/dom-handler.js +0 -681
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +0 -191
- package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +0 -83
- package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +0 -255
- package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +0 -93
- package/esm5/shared/gipi-components/footer/footer.component.js +0 -32
- package/esm5/shared/gipi-components/form-field/form-field.component.js +0 -276
- package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +0 -68
- package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +0 -106
- package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +0 -118
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +0 -207
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +0 -426
- package/esm5/shared/gipi-components/input-select/input-select.component.js +0 -698
- package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +0 -351
- package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +0 -437
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +0 -397
- package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +0 -384
- package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +0 -286
- package/esm5/shared/gipi-components/layout-grid/col.directive.js +0 -164
- package/esm5/shared/gipi-components/layout-grid/row.directive.js +0 -127
- package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +0 -90
- package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +0 -68
- package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +0 -200
- package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +0 -50
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +0 -505
- package/esm5/shared/gipi-components/notification/notification.component.js +0 -106
- package/esm5/shared/gipi-components/novelties/novelties.component.js +0 -111
- package/esm5/shared/gipi-components/overlay/overlay.component.js +0 -670
- package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +0 -22
- package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +0 -1
- package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +0 -157
- package/esm5/shared/gipi-components/popover/popover.component.js +0 -473
- package/esm5/shared/gipi-components/popover/shared/popover-animations.js +0 -29
- package/esm5/shared/gipi-components/popover/shared/popover-errors.js +0 -21
- package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +0 -1
- package/esm5/shared/gipi-components/popover/shared/popover-target.js +0 -20
- package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +0 -529
- package/esm5/shared/gipi-components/popover/shared/popover-types.js +0 -1
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +0 -155
- package/esm5/shared/gipi-components/range-page/range-page.component.js +0 -283
- package/esm5/shared/gipi-components/range-slider/range-slider.component.js +0 -364
- package/esm5/shared/gipi-components/select/select.component.js +0 -222
- package/esm5/shared/gipi-components/select-button/select-button.component.js +0 -206
- package/esm5/shared/gipi-components/sidebar/container/container.component.js +0 -96
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +0 -267
- package/esm5/shared/gipi-components/stepper/stepper.component.js +0 -43
- package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +0 -209
- package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +0 -33
- package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +0 -155
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +0 -123
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +0 -228
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +0 -1
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +0 -108
- package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +0 -116
- package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +0 -33
- package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +0 -1
- package/esm5/shared/gipi-components/table/models/sort.model.js +0 -29
- package/esm5/shared/gipi-components/table/models/sorted-column.model.js +0 -2
- package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +0 -106
- package/esm5/shared/gipi-components/table/models/table-column.model.js +0 -252
- package/esm5/shared/gipi-components/table/table.component.js +0 -161
- package/esm5/shared/gipi-components/table/types/sort-direction.type.js +0 -1
- package/esm5/shared/gipi-components/table/types/sort.type.js +0 -1
- package/esm5/shared/gipi-components/template/template.directive.js +0 -34
- package/esm5/shared/gipi-components/toolbar/toolbar.component.js +0 -56
- package/esm5/shared/gipi-components/top-nav/top-nav.component.js +0 -40
- package/esm5/shared/gipi-components/user-profile/user-profile.component.js +0 -115
- package/esm5/shared/material.module.js +0 -101
- package/esm5/shared/shared.module.js +0 -340
- package/esm5/shared.js +0 -36
- package/fesm2015/gipisistemas-ng-core.js +0 -25879
- package/fesm2015/gipisistemas-ng-core.js.map +0 -1
- package/fesm5/gipisistemas-ng-core.js +0 -27905
- package/fesm5/gipisistemas-ng-core.js.map +0 -1
- package/gipi-components.d.ts +0 -97
- package/gipisistemas-ng-core.d.ts +0 -20
- package/gipisistemas-ng-core.metadata.json +0 -1
- package/public_api.d.ts +0 -3
- package/shared/api/generate-id-component.d.ts +0 -3
- package/shared/api/gipi-ng-config.d.ts +0 -18
- package/shared/api/overlay-message.d.ts +0 -14
- package/shared/api/throttle.d.ts +0 -17
- package/shared/api/translation.d.ts +0 -45
- package/shared/components/button/button.component.d.ts +0 -26
- package/shared/components/card/card.component.d.ts +0 -10
- package/shared/components/checkbox/checkbox.component.d.ts +0 -20
- package/shared/components/dom/connected-overlay-scroll-handler.d.ts +0 -9
- package/shared/components/dom/dom-handler.d.ts +0 -74
- package/shared/components/icon/icon.component.d.ts +0 -9
- package/shared/components/input/input.component.d.ts +0 -52
- package/shared/components/input-currency/input-currency.component.d.ts +0 -29
- package/shared/components/input-file/input-file.component.d.ts +0 -28
- package/shared/components/loading/loading.component.d.ts +0 -4
- package/shared/components/loading-overlay/loading-overlay.component.d.ts +0 -6
- package/shared/components/overlay-panel/overlay-panel.component.d.ts +0 -67
- package/shared/components/popover/popover-ref.d.ts +0 -17
- package/shared/components/popover/popover.component.d.ts +0 -10
- package/shared/components/popover/popover.service.d.ts +0 -23
- package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +0 -19
- package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +0 -30
- package/shared/components/select-button/select-button.component.d.ts +0 -35
- package/shared/components/select-entity/select-entity.component.d.ts +0 -52
- package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +0 -78
- package/shared/components/select-entity-paged/shared/default-options.d.ts +0 -25
- package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +0 -18
- package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +0 -16
- package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +0 -11
- package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +0 -119
- package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +0 -9
- package/shared/components/select-enum/select-enum.component.d.ts +0 -29
- package/shared/components/select-month-period/select-month-period.component.d.ts +0 -20
- package/shared/components/slide-toggle/slide-toggle.component.d.ts +0 -19
- package/shared/components/stepper/stepper.component.d.ts +0 -7
- package/shared/components/tab/tab.component.d.ts +0 -14
- package/shared/components/tab-group/tab-group.component.d.ts +0 -22
- package/shared/components/table/table.component.d.ts +0 -86
- package/shared/components/table-scrolled/table-scrolled.component.d.ts +0 -31
- package/shared/components/textarea/textarea.component.d.ts +0 -35
- package/shared/directives/dynamic-tab.directive.d.ts +0 -5
- package/shared/directives/generic-template.directive.d.ts +0 -8
- package/shared/directives/input-select-infinite-scroll.directive.d.ts +0 -35
- package/shared/directives/lower-case.directive.d.ts +0 -9
- package/shared/directives/phone-mask.directive.d.ts +0 -8
- package/shared/directives/space-drop.directive.d.ts +0 -9
- package/shared/directives/upper-case.directive.d.ts +0 -9
- package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +0 -21
- package/shared/gipi-components/action-row/action-row.component.d.ts +0 -5
- package/shared/gipi-components/badge/badge.component.d.ts +0 -8
- package/shared/gipi-components/button/button.component.d.ts +0 -56
- package/shared/gipi-components/chips/chips.component.d.ts +0 -37
- package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -11
- package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +0 -71
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +0 -11
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +0 -6
- package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +0 -40
- package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +0 -49
- package/shared/gipi-components/datepicker/datepicker.module.d.ts +0 -2
- package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +0 -143
- package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +0 -152
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +0 -102
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +0 -124
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +0 -21
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +0 -45
- package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +0 -106
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +0 -16
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +0 -209
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +0 -9
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +0 -136
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +0 -68
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +0 -38
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +0 -39
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +0 -11
- package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +0 -120
- package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +0 -85
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +0 -225
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +0 -20
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +0 -76
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +0 -9
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +0 -33
- package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +0 -97
- package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +0 -9
- package/shared/gipi-components/dom/dom-handler.d.ts +0 -85
- package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +0 -36
- package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +0 -16
- package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +0 -43
- package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +0 -13
- package/shared/gipi-components/footer/footer.component.d.ts +0 -5
- package/shared/gipi-components/form-field/form-field.component.d.ts +0 -61
- package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +0 -13
- package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +0 -27
- package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +0 -28
- package/shared/gipi-components/input-currency/input-currency.component.d.ts +0 -48
- package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +0 -89
- package/shared/gipi-components/input-select/input-select.component.d.ts +0 -120
- package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +0 -65
- package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +0 -85
- package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +0 -77
- package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +0 -66
- package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +0 -53
- package/shared/gipi-components/layout-grid/col.directive.d.ts +0 -38
- package/shared/gipi-components/layout-grid/row.directive.d.ts +0 -28
- package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +0 -30
- package/shared/gipi-components/layout-grid/services/resize.service.d.ts +0 -17
- package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +0 -37
- package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +0 -2
- package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +0 -104
- package/shared/gipi-components/notification/notification.component.d.ts +0 -21
- package/shared/gipi-components/novelties/novelties.component.d.ts +0 -22
- package/shared/gipi-components/overlay/overlay.component.d.ts +0 -113
- package/shared/gipi-components/overlay/shared/overlay-service.d.ts +0 -6
- package/shared/gipi-components/overlay/shared/overlay_options.d.ts +0 -50
- package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +0 -27
- package/shared/gipi-components/popover/popover.component.d.ts +0 -133
- package/shared/gipi-components/popover/shared/popover-animations.d.ts +0 -13
- package/shared/gipi-components/popover/shared/popover-errors.d.ts +0 -14
- package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +0 -43
- package/shared/gipi-components/popover/shared/popover-target.d.ts +0 -5
- package/shared/gipi-components/popover/shared/popover-trigger.d.ts +0 -140
- package/shared/gipi-components/popover/shared/popover-types.d.ts +0 -4
- package/shared/gipi-components/radio-group/radio-group.component.d.ts +0 -33
- package/shared/gipi-components/range-page/range-page.component.d.ts +0 -55
- package/shared/gipi-components/range-slider/range-slider.component.d.ts +0 -57
- package/shared/gipi-components/select/select.component.d.ts +0 -45
- package/shared/gipi-components/select-button/select-button.component.d.ts +0 -39
- package/shared/gipi-components/sidebar/container/container.component.d.ts +0 -15
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +0 -40
- package/shared/gipi-components/stepper/stepper.component.d.ts +0 -8
- package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +0 -36
- package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +0 -5
- package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +0 -28
- package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +0 -40
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +0 -81
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +0 -24
- package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +0 -45
- package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +0 -21
- package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +0 -5
- package/shared/gipi-components/table/models/pipe-transform.model.d.ts +0 -3
- package/shared/gipi-components/table/models/sort.model.d.ts +0 -10
- package/shared/gipi-components/table/models/sorted-column.model.d.ts +0 -6
- package/shared/gipi-components/table/models/table-column-builder.model.d.ts +0 -52
- package/shared/gipi-components/table/models/table-column.model.d.ts +0 -74
- package/shared/gipi-components/table/table.component.d.ts +0 -37
- package/shared/gipi-components/table/types/sort-direction.type.d.ts +0 -1
- package/shared/gipi-components/table/types/sort.type.d.ts +0 -1
- package/shared/gipi-components/template/template.directive.d.ts +0 -8
- package/shared/gipi-components/toolbar/toolbar.component.d.ts +0 -11
- package/shared/gipi-components/top-nav/top-nav.component.d.ts +0 -8
- package/shared/gipi-components/user-profile/user-profile.component.d.ts +0 -24
- package/shared/material.module.d.ts +0 -2
- package/shared/shared.module.d.ts +0 -6
- package/shared.d.ts +0 -35
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"gipisistemas-ng-core.js","sources":["ng://@gipisistemas/ng-core/core/app.messages.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.ts","ng://@gipisistemas/ng-core/shared/material.module.ts","ng://@gipisistemas/ng-core/shared/components/button/button.component.ts","ng://@gipisistemas/ng-core/shared/components/card/card.component.ts","ng://@gipisistemas/ng-core/shared/components/checkbox/checkbox.component.ts","ng://@gipisistemas/ng-core/shared/components/icon/icon.component.ts","ng://@gipisistemas/ng-core/shared/components/input-currency/input-currency.component.ts","ng://@gipisistemas/ng-core/core/utils/string.util.ts","ng://@gipisistemas/ng-core/core/utils/object.util.ts","ng://@gipisistemas/ng-core/core/utils/uuid.util.ts","ng://@gipisistemas/ng-core/core/components/abstract.component.ts","ng://@gipisistemas/ng-core/core/models/archive.model.ts","ng://@gipisistemas/ng-core/core/services/abstract.service.ts","ng://@gipisistemas/ng-core/core/models/dto/abstract.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/message.dto.ts","ng://@gipisistemas/ng-core/core/components/alert/alert.component.ts","ng://@gipisistemas/ng-core/core/services/message.service.ts","ng://@gipisistemas/ng-core/shared/components/input-file/input-file.component.ts","ng://@gipisistemas/ng-core/shared/components/input/input.component.ts","ng://@gipisistemas/ng-core/shared/components/loading-overlay/loading-overlay.component.ts","ng://@gipisistemas/ng-core/shared/components/loading/loading.component.ts","ng://@gipisistemas/ng-core/core/utils/zindex.util.ts","ng://@gipisistemas/ng-core/shared/api/gipi-ng-config.ts","ng://@gipisistemas/ng-core/shared/gipi-components/overlay/shared/overlay-service.ts","ng://@gipisistemas/ng-core/shared/components/dom/dom-handler.ts","ng://@gipisistemas/ng-core/shared/components/dom/connected-overlay-scroll-handler.ts","ng://@gipisistemas/ng-core/shared/components/overlay-panel/overlay-panel.component.ts","ng://@gipisistemas/ng-core/shared/components/popover/popover-ref.ts","ng://@gipisistemas/ng-core/shared/components/popover/popover.component.ts","ng://@gipisistemas/ng-core/shared/components/radio-group-entity/radio-group-entity.component.ts","ng://@gipisistemas/ng-core/shared/api/generate-id-component.ts","ng://@gipisistemas/ng-core/shared/components/radio-group-enum/radio-group-enum.component.ts","ng://@gipisistemas/ng-core/shared/components/select-button/select-button.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/select-entity-paged.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-no-entries-found.directive.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-search-clear.directive.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/default-options.ts","ng://@gipisistemas/ng-core/shared/components/select-entity-paged/shared/select-search/select-search.component.ts","ng://@gipisistemas/ng-core/core/utils/array.util.ts","ng://@gipisistemas/ng-core/shared/components/select-entity/select-entity.component.ts","ng://@gipisistemas/ng-core/shared/components/select-enum/select-enum.component.ts","ng://@gipisistemas/ng-core/shared/components/select-month-period/select-month-period.component.ts","ng://@gipisistemas/ng-core/shared/components/slide-toggle/slide-toggle.component.ts","ng://@gipisistemas/ng-core/shared/components/stepper/stepper.component.ts","ng://@gipisistemas/ng-core/shared/components/tab/tab.component.ts","ng://@gipisistemas/ng-core/shared/directives/dynamic-tab.directive.ts","ng://@gipisistemas/ng-core/core/models/dto/tab.dto.ts","ng://@gipisistemas/ng-core/shared/components/tab-group/tab-group.component.ts","ng://@gipisistemas/ng-core/shared/api/throttle.ts","ng://@gipisistemas/ng-core/shared/components/table-scrolled/table-scrolled.component.ts","ng://@gipisistemas/ng-core/core/models/dto/table-group-header.dto.ts","ng://@gipisistemas/ng-core/shared/components/table/table.component.ts","ng://@gipisistemas/ng-core/shared/components/textarea/textarea.component.ts","ng://@gipisistemas/ng-core/shared/directives/generic-template.directive.ts","ng://@gipisistemas/ng-core/shared/directives/input-select-infinite-scroll.directive.ts","ng://@gipisistemas/ng-core/shared/directives/lower-case.directive.ts","ng://@gipisistemas/ng-core/shared/directives/phone-mask.directive.ts","ng://@gipisistemas/ng-core/shared/directives/space-drop.directive.ts","ng://@gipisistemas/ng-core/shared/directives/upper-case.directive.ts","ng://@gipisistemas/ng-core/core/custom-breakpoints.ts","ng://@gipisistemas/ng-core/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/infinite-scroll/infinite-scroll.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/services/resize.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/services/breakpoint.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/row.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/layout-grid/col.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/shared/pagination.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/template/template.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.ts","ng://@gipisistemas/ng-core/shared/gipi-components/action-row/action-row.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/abstract-form/abstract-form.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/badge/badge.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/dom/dom-handler.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-errors.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-trigger.ts","ng://@gipisistemas/ng-core/shared/gipi-components/button/button.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/chips/chips.component.ts","ng://@gipisistemas/ng-core/core/models/dto/confirmation.dto.ts","ng://@gipisistemas/ng-core/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/dropdown-menu/dropdown-menu.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/expansion-panel/expansion-panel.component.ts","ng://@gipisistemas/ng-core/core/services/confirmation.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/footer/footer.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/form-field/form-field.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/helpful-tip/helpful-tip.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-checkbox/input-checkbox.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-currency/input-currency.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-monthpicker/input-monthpicker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-enum/input-select-enum.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/dom/connected-overlay-scroll-handler.ts","ng://@gipisistemas/ng-core/shared/gipi-components/overlay/overlay.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select/input-select.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-listbox/input-select-listbox.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-paged/input-search/input-search.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-paged/input-select-paged.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/input-select-radio/input-select-radio.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/notification/notification.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/novelties/novelties.component.ts","ng://@gipisistemas/ng-core/core/utils/password.util.ts","ng://@gipisistemas/ng-core/shared/gipi-components/password-requeriments/password-requeriments.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-animations.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/popover.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/popover/shared/popover-target.ts","ng://@gipisistemas/ng-core/shared/gipi-components/radio-group/radio-group.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/select-button/select-button.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/select/select.component.ts","ng://@gipisistemas/ng-core/core/services/breakpoint-observer.service.ts","ng://@gipisistemas/ng-core/core/services/nav.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/sidebar/container/container.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/sidebar/sidenav/sidenav.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/stepper/stepper.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-body/table-body.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-footer/table-footer.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/sort.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-header/table-header.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-pagination/table-pagination.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/table.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/toolbar/toolbar.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/top-nav/top-nav.component.ts","ng://@gipisistemas/ng-core/core/utils/number.util.ts","ng://@gipisistemas/ng-core/core/utils/date.util.ts","ng://@gipisistemas/ng-core/shared/gipi-components/user-profile/user-profile.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/calendar-body.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/month-view.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/year-view.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/calendar.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/date-range-input.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.ts","ng://@gipisistemas/ng-core/core/utils/browser.util.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/datepicker/datepicker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/datepicker.module.ts","ng://@gipisistemas/ng-core/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/month-year-picker/month-year-picker.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/month-year-picker/mont-year-picker.module.ts","ng://@gipisistemas/ng-core/shared/gipi-components/range-page/range-page.component.ts","ng://@gipisistemas/ng-core/shared/gipi-components/range-slider/range-slider.component.ts","ng://@gipisistemas/ng-core/shared/shared.module.ts","ng://@gipisistemas/ng-core/core/models/dto/page.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/sort.dto.ts","ng://@gipisistemas/ng-core/core/models/enums/sort-direction.enum.ts","ng://@gipisistemas/ng-core/core/components/abstract-find.component.ts","ng://@gipisistemas/ng-core/core/components/abstract-crud.component.ts","ng://@gipisistemas/ng-core/core/services/authentication.service.ts","ng://@gipisistemas/ng-core/core/interceptors/auth.interceptor.ts","ng://@gipisistemas/ng-core/core/interceptors/error.interceptor.ts","ng://@gipisistemas/ng-core/core/services/dialog.service.ts","ng://@gipisistemas/ng-core/core/services/svg-register.service.ts","ng://@gipisistemas/ng-core/core/utils/time.util.ts","ng://@gipisistemas/ng-core/core/pipes/local-time.pipe.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/abstract.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/abstract-crud.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/file.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/session-storage.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/services/base.service.ts","ng://@gipisistemas/ng-core/core/gipi-components/components/abstract.component.ts","ng://@gipisistemas/ng-core/core/gipi-components/components/abstract-crud.component.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/page.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/sort.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/components/abstract-find.component.ts","ng://@gipisistemas/ng-core/core/core.module.ts","ng://@gipisistemas/ng-core/core/enums/local-time.enum.ts","ng://@gipisistemas/ng-core/core/guards/auth.guard.ts","ng://@gipisistemas/ng-core/core/guards/permission.guard.ts","ng://@gipisistemas/ng-core/core/guards/public.guard.ts","ng://@gipisistemas/ng-core/core/models/abstract.model.ts","ng://@gipisistemas/ng-core/core/models/base-user.model.ts","ng://@gipisistemas/ng-core/core/models/dto/chart.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/dialog.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/filter.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/input-listbox.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/menu.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/table-column.dto.ts","ng://@gipisistemas/ng-core/core/models/dto/token.dto.ts","ng://@gipisistemas/ng-core/core/models/enums/criteria-operation.enum.ts","ng://@gipisistemas/ng-core/core/models/enums/criteria-sort-direction.enum.ts","ng://@gipisistemas/ng-core/core/models/enums/menu-type.enum.ts","ng://@gipisistemas/ng-core/core/models/enums/radio-button.enum.ts","ng://@gipisistemas/ng-core/core/models/multitenant.model.ts","ng://@gipisistemas/ng-core/core/models/permission.model.ts","ng://@gipisistemas/ng-core/core/models/role.model.ts","ng://@gipisistemas/ng-core/core/services/abstract-find.service.ts","ng://@gipisistemas/ng-core/core/services/abstract-crud.service.ts","ng://@gipisistemas/ng-core/core/extensions/string.extension.ts","ng://@gipisistemas/ng-core/core/utils/currency.util.ts","ng://@gipisistemas/ng-core/core/utils/document.util.ts","ng://@gipisistemas/ng-core/core/utils/email.util.ts","ng://@gipisistemas/ng-core/core/utils/phone.util.ts","ng://@gipisistemas/ng-core/core/utils/table-column-builder.ts","ng://@gipisistemas/ng-core/core/utils/url-params.util.ts","ng://@gipisistemas/ng-core/core/gipi-components/decorators/autowired.decorator.ts","ng://@gipisistemas/ng-core/core/gipi-components/enums/sort-direction.enum.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/abstract-filter.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/abstract.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/applied-filter.model.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/dto/abstract.dto.ts","ng://@gipisistemas/ng-core/core/gipi-components/models/page-event.model.ts","ng://@gipisistemas/ng-core/shared/components/popover/popover.service.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/sorted-column.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/table-column.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/table/models/table-column-builder.model.ts","ng://@gipisistemas/ng-core/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.ts","ng://@gipisistemas/ng-core/gipisistemas-ng-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { AppMessages } from './app-messages';\n\nexport const APP_MESSAGES = new InjectionToken<AppMessages>('app.messages');\n\nexport const DEFAULT_MESSAGES: AppMessages = {\n SUCCESS: 'Operação realizada com sucesso',\n RETURN_CONFIRMATION: 'Deseja retornar para à tela de consulta?',\n DELETE_CONFIRMATION: 'Deseja realmente excluir este registro?',\n DELETE_ALL_CONFIRMATION: 'Deseja realmente excluir os registros selecionados?',\n BUTTON_OK_CONFIRMATION: 'OK',\n BUTTON_CANCEL_CONFIRMATION: 'Cancelar',\n NOT_PERMISSION: 'Infelizmente, esta ação não é permitida para o seu perfil',\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { InjectionToken } from '@angular/core';\n\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any\n },\n display: {\n dateInput: any,\n monthYearLabel: any,\n dateA11yLabel: any,\n monthYearA11yLabel: any,\n }\n};\n\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n","import { NgModule } from '@angular/core';\n\nimport { CdkPopoverEditModule } from '@angular/cdk-experimental/popover-edit';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\n\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n\nconst MODULES = [\n A11yModule,\n CdkPopoverEditModule,\n CdkTableModule,\n CdkTreeModule,\n CdkStepperModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSlideToggleModule,\n MatSliderModule,\n MatSnackBarModule,\n MatSortModule,\n MatStepperModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n ScrollingModule,\n PortalModule,\n];\n\n@NgModule({\n imports: [\n ...MODULES\n ],\n exports: [\n ...MODULES\n ]\n})\nexport class MaterialModule { }\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { MatMenu } from '@angular/material';\nimport { MdePopoverTrigger } from '@material-extended/mde';\n\n@Component({\n selector: 'itss-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent implements OnInit {\n\n @ContentChild('popover', { static: false }) popoverRef: TemplateRef<any>;\n\n @ViewChild('popoverTrigger', { static: false }) popoverTrigger: MdePopoverTrigger;\n\n @ViewChild('button', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() label: string;\n\n @Input() icon: string;\n\n @Input() rightIcon: string;\n\n @Input() svgIcon: string;\n\n @Input() color: string = 'primary';\n\n @Input() type: 'raised' | 'stroked' | 'icon' | 'menu' | 'spinner' | 'popover' | 'popover-icon';\n\n @Input() menu: MatMenu;\n\n @Input() badge: number;\n\n @Input() badgeColor: string;\n\n @Input() disabled: boolean;\n\n @Input() tooltip: string;\n\n @Input() loading: boolean = false;\n\n @Input() download: boolean = false;\n\n @Input() stylePopover: string = '';\n\n @Input() styleClassPopover: string;\n\n // tslint:disable-next-line: no-output-on-prefix\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n ngOnInit(): void {\n }\n\n onClickButton(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n }\n\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'itss-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss']\n})\nexport class CardComponent implements OnInit {\n\n @Input() cardTitle;\n\n @Input() cardSubtitle;\n\n @Input() icon;\n\n @Input() loading = false;\n\n @Input() shadow = true;\n\n @Input() margin = true;\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, forwardRef, Input, OnInit, EventEmitter, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit {\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() indeterminate: boolean;\n\n @Output() indeterminateChange = new EventEmitter<boolean>();\n\n @Output() change = new EventEmitter<any>();\n\n @Input('value') val: any;\n\n ngOnInit(): void {\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'itss-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss']\n})\nexport class IconComponent implements OnInit {\n\n @Input() color: string;\n\n @Input() icon: string;\n\n @Input() svgIcon: string;\n\n @Input() tooltip: string;\n\n @Input() iconSize: number;\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, ContentChild, ElementRef, forwardRef, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CurrencyMaskConfig } from 'ngx-currency';\n\n@Component({\n selector: 'itss-input-currency',\n templateUrl: './input-currency.component.html',\n styleUrls: ['./input-currency.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputCurrencyComponent),\n multi: true\n }\n ]\n})\nexport class InputCurrencyComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ContentChild('suffix', { static: false }) suffixRef: TemplateRef<any>;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() tooltip: string = '';\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() maxlength = 250;\n\n @Input() type = 'text';\n\n @Input() appearance = 'outline';\n\n @Input('value') val: any;\n\n @Input() prefix: string;\n\n @Input() styleClassFormField: string = '';\n\n @Input() styleClassSuffix: string = '';\n\n @Input() options: Partial<CurrencyMaskConfig>;\n\n ngOnInit(): void {\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","import { ObjectUtil } from './object.util';\n\n/** @dynamic */\nexport class StringUtil {\n\n public static EMPTY: string = '';\n\n public static replaceAccents(value: string): string {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n\n public static removeAccents(value: string): string {\n return value.replace(/[^\\w\\s]/gi, '');\n }\n\n public static isEmpty(value: string): boolean {\n return ObjectUtil.isNull(value) || value.length === 0;\n }\n\n public static format(value: string, mask: string): string {\n let formatted: string = value;\n if (!value.includes('*')) {\n formatted = value.replace(/\\D/g, '');\n }\n\n const pad: string = mask.replace(/\\D/g, '').replace(/9/g, '_');\n const valueMask: string = formatted + pad.substring(0, pad.length - pad.length);\n\n let valorMaskPos: number = 0;\n formatted = '';\n for (let i: number = 0; i < mask.length; i++) {\n if (isNaN(parseInt(mask.charAt(i)))) {\n formatted += mask.charAt(i);\n } else {\n formatted += valueMask[valorMaskPos++];\n }\n }\n\n if (formatted.indexOf('_') > -1) {\n formatted = formatted.substring(0, formatted.indexOf('_'));\n }\n\n return formatted;\n }\n\n public static truncateWithEllipses(text: string, max: number): '' | '...' {\n return text.trim().substring(0, max - 1) + (text.trim().length > max) ? '...' : '';\n }\n}\n","import { GIPIIndexableObject } from '../types/ng-class.type';\nimport { StringUtil } from './string.util';\nimport { UUIDUtil } from './uuid.util';\n\n/** @dynamic */\nexport class ObjectUtil {\n\n public static isNull(value: Object): boolean {\n return value === undefined || value === null;\n }\n\n public static isNewModel(value: Object): boolean {\n if (ObjectUtil.isNull(value)) {\n return true;\n }\n\n let id: number | string = null;\n if (typeof value === 'object') {\n id = Reflect.get(value, 'id');\n }\n return !UUIDUtil.isValid(id);\n }\n\n public static isNotNil<T>(value: T): value is NonNullable<T> {\n return typeof value !== 'undefined' && value !== null;\n }\n\n public static isNil(value: unknown): value is null | undefined {\n return typeof value === 'undefined' || value === null;\n }\n\n public static clone(value: Object): any {\n if (ObjectUtil.isNull(value)) {\n return new Object();\n }\n return { ...value };\n }\n\n public static resolveFieldData(data: any, field: any): any {\n if (data && field) {\n if (this.isFunction(field)) {\n return field(data);\n } else if (field.indexOf('.') === -1) {\n return data[field];\n } else {\n const fields: string[] = field.split('.');\n let value: any = data;\n for (let i: number = 0, len: number = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n } else {\n return null;\n }\n }\n\n public static isFunction(obj: any): boolean {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n\n public static equals(obj1: any, obj2: any, field?: string): boolean {\n if (field) {\n return (this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field));\n } else {\n return this.equalsByValue(obj1, obj2);\n }\n }\n\n public static equalsByValue(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n\n if (obj1 && obj2 && typeof obj1 === 'object' && typeof obj2 === 'object') {\n const arrA: boolean = Array.isArray(obj1);\n const arrB: boolean = Array.isArray(obj2);\n let i: any;\n let length: any;\n let key: any;\n\n if (arrA && arrB) {\n length = obj1.length;\n if (length !== obj2.length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!this.equalsByValue(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n\n if (arrA !== arrB) {\n return false;\n }\n\n const dateA: boolean = obj1 instanceof Date;\n const dateB: boolean = obj2 instanceof Date;\n if (dateA !== dateB) {\n return false;\n }\n\n if (dateA && dateB) {\n return obj1.getTime() === obj2.getTime();\n }\n\n const regexpA: boolean = obj1 instanceof RegExp;\n const regexpB: boolean = obj2 instanceof RegExp;\n if (regexpA !== regexpB) {\n return false;\n }\n\n if (regexpA && regexpB) {\n return obj1.toString() === obj2.toString();\n }\n\n const keys: string[] = Object.keys(obj1);\n length = keys.length;\n\n if (length !== Object.keys(obj2).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(obj2, keys[i])) {\n return false;\n }\n }\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!this.equalsByValue(obj1[key], obj2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return obj1 !== obj1 && obj2 !== obj2;\n }\n\n public static removeAccents(str: any): any {\n if (str && str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, 'A')\n .replace(/[\\xC6]/g, 'AE')\n .replace(/[\\xC7]/g, 'C')\n .replace(/[\\xC8-\\xCB]/g, 'E')\n .replace(/[\\xCC-\\xCF]/g, 'I')\n .replace(/[\\xD0]/g, 'D')\n .replace(/[\\xD1]/g, 'N')\n .replace(/[\\xD2-\\xD6\\xD8]/g, 'O')\n .replace(/[\\xD9-\\xDC]/g, 'U')\n .replace(/[\\xDD]/g, 'Y')\n .replace(/[\\xDE]/g, 'P')\n .replace(/[\\xE0-\\xE5]/g, 'a')\n .replace(/[\\xE6]/g, 'ae')\n .replace(/[\\xE7]/g, 'c')\n .replace(/[\\xE8-\\xEB]/g, 'e')\n .replace(/[\\xEC-\\xEF]/g, 'i')\n .replace(/[\\xF1]/g, 'n')\n .replace(/[\\xF2-\\xF6\\xF8]/g, 'o')\n .replace(/[\\xF9-\\xFC]/g, 'u')\n .replace(/[\\xFE]/g, 'p')\n .replace(/[\\xFD\\xFF]/g, 'y');\n }\n\n return str;\n }\n\n public static merge(obj1?: any, obj2?: any): any {\n if (obj1 == undefined && obj2 == undefined) {\n return undefined;\n } else if ((obj1 == undefined || typeof obj1 === 'object') && (obj2 == undefined || typeof obj2 === 'object')) {\n return { ...(obj1 || {}), ...(obj2 || {}) };\n } else if ((obj1 == undefined || typeof obj1 === 'string') && (obj2 == undefined || typeof obj2 === 'string')) {\n return [obj1 || '', obj2 || ''].join(' ');\n }\n\n return obj2 || obj1;\n }\n\n /**\n * Examine se dois objetos são superficialmente igualados.\n */\n public static shallowEqual(objA?: GIPIIndexableObject, objB?: GIPIIndexableObject): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n const keysA: string[] = Object.keys(objA);\n const keysB: string[] = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n const bHasOwnProperty: any = Object.prototype.hasOwnProperty.bind(objB);\n\n for (let idx: number = 0; idx < keysA.length; idx++) {\n const key: string = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n }\n\n public static hasPropertyInObj(obj: Object, property: string): boolean {\n if (ObjectUtil.isNull(obj) || StringUtil.isEmpty(property)) {\n return false;\n }\n return Object.prototype.hasOwnProperty.call(obj, property);\n }\n\n}\n","import { GIPIUuid } from '../gipi-components/types/uuid.type';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class UUIDUtil {\n\n public static isValid(id: GIPIUuid): boolean {\n if (ObjectUtil.isNull(id)) {\n return false;\n }\n if (typeof id === 'number') {\n return id && id > 0;\n } else if (typeof id === 'string') {\n return !StringUtil.isEmpty(id) && (id.length > 0);\n }\n }\n\n}\n","import { EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { TokenDTO } from '../models/dto/token.dto';\nimport { MessageService } from '../services/message.service';\nimport { UUIDUtil } from '../utils/uuid.util';\n\nexport abstract class AbstractComponent implements OnInit, OnDestroy {\n\n @Input() loading: boolean = false;\n @Output() loadingChange: EventEmitter<boolean> = new EventEmitter<boolean>(true);\n\n constructor(\n protected messageService: MessageService,\n protected router: Router,\n protected activatedRoute: ActivatedRoute\n ) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n\n hasPermission(permission: string): boolean {\n const token: TokenDTO<BaseUser> = JSON.parse(localStorage.getItem('token'));\n return !!token.user.authorities.find(authority => authority.authority.match(permission));\n }\n\n protected handleError(error: any): void {\n this.loading = false;\n this.loadingChange.emit(this.loading);\n if (String(error).includes('Unknown')) {\n error = new Error('Ocorreu um erro ao realizar essa operação, tente novamente');\n }\n if (error instanceof Error) {\n error = error.message;\n }\n this.addErrorMessage(error);\n throw error;\n }\n\n protected addSuccessMessage(message: string): void {\n this.messageService.add({\n icon: 'check_circle',\n title: 'Sucesso',\n message: message,\n type: 'success'\n });\n }\n\n protected addErrorMessage(message: string): void {\n this.messageService.add({\n icon: 'cancel',\n title: 'Ocorreu um erro',\n message: message,\n type: 'error'\n });\n }\n\n protected addWarningMessage(message: string): void {\n this.messageService.add({\n icon: 'error',\n title: 'Atenção',\n message: message,\n type: 'warning'\n });\n }\n\n protected addInfoMessage(message: string): void {\n this.messageService.add({\n icon: 'info',\n title: 'Notificação',\n message: message,\n type: 'info'\n });\n }\n\n download(data: any, fileName: string, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const link: HTMLAnchorElement = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n downloadContent(response: any): void {\n this.download(\n response.body,\n response.headers.get('content-disposition').split(';')[1].split('filename')[1].split('=')[1].trim(),\n response.headers.get('content-type')\n );\n }\n\n printArchive(data: any, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const url: string = URL.createObjectURL(blob);\n const htmlIFrameElement: HTMLIFrameElement = document.createElement('iframe');\n\n document.body.appendChild(htmlIFrameElement);\n htmlIFrameElement.style.display = 'none';\n htmlIFrameElement.style.position = 'fixed';\n htmlIFrameElement.style.right = '0';\n htmlIFrameElement.style.bottom = '0';\n htmlIFrameElement.style.width = '0';\n htmlIFrameElement.style.height = '0';\n htmlIFrameElement.style.border = '0';\n htmlIFrameElement.src = url;\n htmlIFrameElement.onload = () => {\n setTimeout(() => {\n htmlIFrameElement.focus();\n htmlIFrameElement.contentWindow.print();\n }, 1);\n };\n }\n\n UUIDIsValid(id: number | string): boolean {\n return UUIDUtil.isValid(id);\n }\n\n}\n","export class Archive {\n\n name: string;\n\n content: any;\n\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { OnDestroy } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\n\nexport abstract class AbstractService implements OnDestroy {\n\n protected onDestroy: Subject<void> = new Subject<void>();\n\n constructor() { }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n protected options(params?: HttpParams, headers?: HttpHeaders): {} {\n return {\n headers: headers ? headers : this.buildHeaders(),\n params: params ? params : this.buildParams()\n };\n }\n\n protected buildHeaders(): HttpHeaders {\n return new HttpHeaders();\n }\n\n protected buildParams(): HttpParams {\n return new HttpParams();\n }\n\n protected mapper(jsonObj: any): any {\n return jsonObj;\n }\n\n protected handleError(error: string): Observable<any> {\n return throwError(error);\n }\n\n}\n","export abstract class AbstractDTO {\n}\n","import { AbstractDTO } from './abstract.dto';\n\nexport class MessageDTO extends AbstractDTO {\n\n title: string;\n\n message: string;\n\n icon?: string;\n\n type: 'success' | 'error' | 'warning' | 'info';\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material';\n\nimport { MessageDTO } from '../../models/dto/message.dto';\n\n@Component({\n selector: 'a-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent implements OnInit {\n\n constructor(@Inject(MAT_SNACK_BAR_DATA) public message: MessageDTO) { }\n\n ngOnInit(): void { }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material';\n\nimport { AbstractService } from './abstract.service';\nimport { MessageDTO } from '../models/dto/message.dto';\nimport { AlertComponent } from '../components/alert/alert.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService extends AbstractService {\n\n constructor(protected snackBar: MatSnackBar) {\n super();\n }\n\n add(message: MessageDTO): void {\n this.snackBar.openFromComponent(AlertComponent, {\n verticalPosition: 'top',\n horizontalPosition: 'center',\n duration: 8000,\n data: message\n });\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { AbstractComponent } from '../../../core/components/abstract.component';\nimport { Archive } from '../../../core/models/archive.model';\nimport { MessageService } from '../../../core/services/message.service';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: 'itss-input-file',\n templateUrl: './input-file.component.html',\n styleUrls: ['./input-file.component.scss']\n})\nexport class InputFileComponent extends AbstractComponent {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef<HTMLInputElement>;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() tooltip: string = '';\n\n @Input() placeholder: string;\n\n @Input() required: boolean;\n\n @Input() disabled: boolean;\n\n @Input() appearance = 'outline';\n\n @Input() loading = false;\n\n @Input() extensions: string[];\n\n @Input() maximumSize = 3;\n\n @Output() archiveChange = new EventEmitter<Archive>();\n\n @Input() archive: Archive;\n\n @Output() nativeFileChange = new EventEmitter<File>();\n\n constructor(\n messageService: MessageService,\n router: Router,\n activatedRoute: ActivatedRoute\n ) {\n super(messageService, router, activatedRoute);\n }\n\n private validateExtensions(file: File): boolean {\n if (this.extensions.filter(extension => file.name.toLowerCase().endsWith(extension.toLowerCase())).length === 0) {\n super.addErrorMessage(\n `São permitidos somente arquivos do tipo: ${this.extensions.reduce((previous, current) => previous + ', ' + current)}`\n );\n return false;\n }\n return true;\n }\n\n private validateMaximumSize(file: File): boolean {\n if (file.size > this.maximumSize * 1000000) {\n super.addErrorMessage(\n `O arquivo deve ter no máximo ${this.maximumSize} MB.`\n );\n return false;\n }\n return true;\n }\n\n uploadArchive(): void {\n // tslint:disable-next-line:no-shadowed-variable\n const element = this.fileInput.nativeElement;\n element.value = StringUtil.EMPTY;\n element.onchange = () => {\n const file = element.files[0];\n if (!ObjectUtil.isNull(file) && this.validateExtensions(file) && this.validateMaximumSize(file)) {\n const archive = new Archive();\n archive.name = file.name;\n\n const reader = new FileReader();\n const fileByteArray = [];\n reader.readAsArrayBuffer(file);\n reader.onloadend = function (e) {\n if (reader.readyState === FileReader.DONE) {\n const arrayBuffer = reader.result, array = new Uint8Array(arrayBuffer as ArrayBuffer);\n for (let i = 0; i < array.length; i++) {\n fileByteArray.push(array[i]);\n }\n }\n };\n\n archive.content = fileByteArray;\n this.archiveChange.emit(archive);\n this.nativeFileChange.emit(file);\n }\n };\n element.click();\n }\n\n downloadArchive(): void {\n /*\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.fileService.download(this.target, this.file).subscribe(\n resp => {\n super.download(\n resp.body,\n resp.headers.get('content-disposition').split(';')[1].split('filename')[1].split('=')[1].trim(),\n resp.headers.get('content-type')\n );\n this.loading = false;\n this.loadingChange.emit(this.loading);\n },\n error => {\n super.addErrorMessage('Não foi possível baixar o arquivo');\n this.clearFile();\n });\n */\n }\n\n clearArchive(): void {\n this.fileInput.nativeElement.value = StringUtil.EMPTY;\n this.archiveChange.emit(null);\n }\n\n}\n","import { AfterViewInit, Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { debounceTime } from 'rxjs/operators';\nimport { PhoneUtil } from '../../../core';\n\n@Component({\n selector: 'itss-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof InputComponent => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ContentChild('suffix', { static: false }) suffixRef: TemplateRef<any>;\n\n private _inputSubject: BehaviorSubject<string> = new BehaviorSubject('');\n\n public _maskPhone: BehaviorSubject<string> = new BehaviorSubject('');\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() tooltip: string = '';\n\n @Input() styleClassFormField: string = '';\n\n @Input() styleClassSuffix: string = '';\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() readonly: boolean = false;\n\n @Input() hidePasswordManager: boolean = false;\n\n @Input() maxlength: number = 250;\n\n @Input() type: string = 'text';\n\n @Input() min;\n\n @Input() max;\n\n @Input() appearance: string = 'outline';\n\n @Input('value') val: any;\n get value(): any {\n return this.val;\n }\n set value(val: any) {\n if (this.lowerCase) {\n this.val = this.checkLowercase(this.checkSpaceDrop(val));\n } else {\n this.val = this.checkUppercase(this.checkSpaceDrop(val));\n }\n this.onChange(this.val);\n this.onTouch();\n }\n\n @Input() mask: string | undefined | null;\n\n @Input() phone: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() dropSpecialCharacters: boolean = true;\n\n @Input() upperCase: boolean = false;\n\n @Input() lowerCase: boolean = false;\n\n @Input() patterns: any;\n\n @Input() spaceDrop: boolean = false;\n\n @Output() focus: EventEmitter<Event> = new EventEmitter();\n\n @Output() blur: EventEmitter<Event> = new EventEmitter();\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.phone) {\n this._inputSubject.pipe(\n debounceTime(300)\n ).subscribe(value => {\n this._maskPhone.next(PhoneUtil.mask(value));\n });\n }\n }\n\n ngAfterViewInit(): void { }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n checkSpaceDrop(value: any): any {\n if (this.spaceDrop && value) {\n return value.replace(/\\s/g, '');\n }\n return value;\n }\n\n checkUppercase(value: any): any {\n if (this.upperCase && value) {\n return value.toUpperCase();\n }\n return value;\n }\n\n checkLowercase(value: any): any {\n if (this.lowerCase && value) {\n return value.toLowerCase();\n }\n return value;\n }\n\n onFocus(event: Event): void {\n if (!this.disabled) {\n this.focus.emit(event);\n }\n }\n\n onBlur(event: Event): void {\n if (!this.disabled) {\n this.blur.emit(event);\n this.onTouch();\n }\n }\n\n onInputPhoneKeyup(event: KeyboardEvent): void {\n if (!this.phone) {\n return;\n }\n const value = PhoneUtil.removeCharacters((event.target as HTMLInputElement).value);\n const key = event.key;\n\n if (/\\d/.test(key) && value.length < 12) {\n this._maskPhone.next('0*');\n }\n }\n\n onInputPhoneChange(value: string): void {\n if (!this.phone) {\n return;\n }\n\n this._inputSubject.next(value);\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'itss-loading-overlay',\n templateUrl: './loading-overlay.component.html',\n styleUrls: ['./loading-overlay.component.scss']\n})\nexport class LoadingOverlayComponent implements OnInit {\n\n @Input() message: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'itss-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss']\n})\nexport class LoadingComponent implements OnInit {\n\n ngOnInit(): void {\n }\n\n}\n\n","function ZIndexUtils() {\n let zIndexes = [];\n\n const generateZIndex = (key, baseZIndex) => {\n const lastZIndex = zIndexes.length > 0 ? zIndexes[zIndexes.length - 1] : { key, value: baseZIndex };\n const newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;\n\n zIndexes.push({ key, value: newZIndex });\n\n return newZIndex;\n };\n\n const revertZIndex = (zIndex) => {\n zIndexes = zIndexes.filter(obj => obj.value !== zIndex);\n };\n\n const getCurrentZIndex = () => {\n return zIndexes.length > 0 ? zIndexes[zIndexes.length - 1].value : 0;\n };\n\n const getZIndex = (el) => {\n return el ? parseInt(el.style.zIndex, 10) || 0 : 0;\n };\n\n return {\n get: getZIndex,\n set: (key, el, baseZIndex) => {\n if (el) {\n el.style.zIndex = String(generateZIndex(key, baseZIndex));\n }\n },\n clear: (el) => {\n if (el) {\n revertZIndex(getZIndex(el));\n el.style.zIndex = '';\n }\n },\n getCurrent: () => getCurrentZIndex()\n };\n}\n\nexport default ZIndexUtils();\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { OverlayOptions } from '../gipi-components/overlay/shared/overlay_options';\nimport { Translation } from './translation';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPINgConfig {\n\n ripple: boolean = false;\n\n overlayOptions: OverlayOptions = {};\n\n public translation: Translation = {\n startsWith: 'Começa com',\n contains: 'Contém',\n notContains: 'Não contém',\n endsWith: 'Termina com',\n equals: 'É igual a',\n notEquals: 'Não é igual',\n noFilter: 'Sem filtro',\n lt: 'Menor que',\n lte: 'Menor que ou igual a',\n gt: 'Maior que',\n gte: 'Maior que ou igual a',\n is: 'É',\n isNot: 'Não é',\n before: 'Antes',\n after: 'Depois',\n dateIs: 'A data é',\n dateIsNot: 'A data não é',\n dateBefore: 'A data é anterior',\n dateAfter: 'A data é depois',\n clear: 'Limpar',\n apply: 'Aplicar',\n matchAll: 'Corresponder a todos',\n matchAny: 'Corresponder a qualquer',\n addRule: 'Adicionar regra',\n removeRule: 'Remover regra',\n accept: 'Sim',\n reject: 'Não',\n choose: 'Escolher',\n upload: 'Envio',\n cancel: 'Cancelar',\n dayNames: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'],\n dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],\n dayNamesMin: ['Do', 'Se', 'Te', 'Qa', 'Qi', 'Se', 'Sá'],\n monthNames: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthNamesShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n dateFormat: 'dd/mm/yyyy',\n firstDayOfWeek: 0,\n today: 'Hoje',\n weekHeader: 'Cabeçalho da semana',\n weak: 'Fraco',\n medium: 'Médio',\n strong: 'Forte',\n passwordPrompt: 'Insira uma senha'\n };\n\n zIndex: { modal: number; overlay: number; menu: number; tooltip: number; } = {\n modal: 2,\n overlay: 1000,\n menu: 1,\n tooltip: 2\n };\n\n private translationSource: Subject<any> = new Subject<any>();\n\n translationObserver: Observable<any> = this.translationSource.asObservable();\n\n getTranslation(key: string): any {\n return this.translation[key];\n }\n\n setTranslation(value: Translation): void {\n this.translation = { ...this.translation, ...value };\n this.translationSource.next(this.translation);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { OverlayMessage } from '../../../api/overlay-message';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPIOverlayService {\n\n private clickSource: Subject<any> = new Subject<OverlayMessage | OverlayMessage[]>();\n\n clickObservable: Observable<any> = this.clickSource.asObservable();\n\n add(event: any): void {\n if (event) {\n this.clickSource.next(event);\n }\n }\n}\n","/**\n * @dynamic é para inicializar o DomHandler.browser em tempo de execução\n *\n * Se excluir o comentário abaixo, podemos ver esta mensagem de erro:\n * Os metadados coletados contêm um erro que será relatado em tempo de execução:\n * Somente variáveis e constantes inicializadas podem ser referenciadas\n * porque o valor desta variável é necessário para o compilador de template.\n */\n/** @dynamic */\nexport class DomHandler {\n\n public static zindex: number = 100;\n\n private static calculatedScrollbarWidth: number = null;\n\n private static calculatedScrollbarHeight: number = null;\n\n private static browser: any;\n\n public static addClass(element: any, className: string): void {\n if (element.classList) {\n element.classList.add(className);\n } else {\n element.className += ' ' + className;\n }\n }\n\n public static addMultipleClasses(element: any, className: string): void {\n if (element.classList) {\n const styles: string[] = className.trim().split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n\n } else {\n const styles: string[] = className.split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n\n public static removeClass(element: any, className: string): void {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (element.classList) {\n return element.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n }\n\n public static siblings(element: any): any {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n\n public static find(element: any, selector: string): any[] {\n return Array.from(element.querySelectorAll(selector));\n }\n\n public static findSingle(element: any, selector: string): any {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n\n public static index(element: any): number {\n const children: any = element.parentNode.childNodes;\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n // tslint:disable-next-line: triple-equals\n if (children[i] == element) {\n return num;\n }\n // tslint:disable-next-line: triple-equals\n if (children[i].nodeType == 1) {\n num++;\n }\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n const children: any = element.parentNode ? element.parentNode.childNodes : [];\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n // tslint:disable-next-line: triple-equals\n if (children[i] == element) {\n return num;\n }\n // tslint:disable-next-line: triple-equals\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) {\n num++;\n }\n }\n return -1;\n }\n\n public static relativePosition(element: any, target: any): void {\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight: any = target.offsetHeight;\n const targetOffset: any = target.getBoundingClientRect();\n const viewport: any = this.getViewport();\n let top: number, left: number;\n\n if ((targetOffset.top + targetHeight + elementDimensions.height) > viewport.height) {\n top = -1 * (elementDimensions.height);\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // Elemento mais largo que a viewport e não cabe na tela (alinhar no lado esquerdo da viewport)\n left = targetOffset.left * -1;\n } else if ((targetOffset.left + elementDimensions.width) > viewport.width) {\n // Elemento mais largo que a janela de visualização, mas pode ser ajustado na tela (alinhar no lado direito da janela de visualização)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // Elemento se encaixa na tela (alinhar com o destino)\n left = 0;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n public static absolutePosition(element: any, target: any, calculateTop: boolean = true): void {\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight: any = elementDimensions.height;\n const elementOuterWidth: any = elementDimensions.width;\n const targetOuterHeight: any = target.offsetHeight;\n const targetOuterWidth: any = target.offsetWidth;\n const targetOffset: any = target.getBoundingClientRect();\n const windowScrollTop: number = this.getWindowScrollTop();\n const windowScrollLeft: number = this.getWindowScrollLeft();\n const viewport: any = this.getViewport();\n let top, left;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n if (calculateTop) {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n }\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + elementOuterWidth > viewport.width) {\n left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n } else {\n left = targetOffset.left + windowScrollLeft;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n static getParents(element: any, parents: any = []): any {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n\n static getScrollableParents(element: any): any[] {\n const scrollableParents: any[] = [];\n\n if (element) {\n const parents: any = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node: any) => {\n const styleDeclaration: CSSStyleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow'))\n || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX'))\n || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n\n for (const parent of parents) {\n const scrollSelectors: any = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n const selectors: any = scrollSelectors.split(',');\n for (const selector of selectors) {\n const el: any = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n\n return scrollableParents;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementHeight: any = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementHeight;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementWidth: any = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementWidth;\n }\n\n public static getHiddenElementDimensions(element: any): any {\n const dimensions: any = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return dimensions;\n }\n\n public static scrollInView(container: any, item: any): void {\n const borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n const borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n const paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n const paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n const containerRect: any = container.getBoundingClientRect();\n const itemRect: any = item.getBoundingClientRect();\n const offset: number = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n const scroll: any = container.scrollTop;\n const elementHeight: any = container.clientHeight;\n const itemHeight: any = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if ((offset + itemHeight) > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n\n public static fadeIn(element: any, duration: number): void {\n element.style.opacity = 0;\n\n let last: number = +new Date();\n let opacity: number = 0;\n const tick = () => {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n\n if (+opacity < 1) {\n // tslint:disable-next-line: no-unused-expression\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n\n public static fadeOut(element: any, ms: any): void {\n let opacity: number = 1;\n const interval = 50;\n const duration: any = ms;\n const gap: number = interval / duration;\n\n const fading = setInterval(() => {\n opacity = opacity - gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n\n public static getWindowScrollTop(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n public static matches(element: any, selector: string): boolean {\n const p: Element = Element.prototype;\n const f: any = p['matches'] || p.webkitMatchesSelector || p['mozMatchesSelector'] || p['msMatchesSelector'] || function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n\n public static getOuterWidth(el: any, margin?: any): any {\n let width: any = el.offsetWidth;\n\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n public static getHorizontalPadding(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n\n public static getHorizontalMargin(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n public static innerWidth(el: any): any {\n let width: any = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static width(el: any): any {\n let width: any = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static getInnerHeight(el: any): any {\n let height: any = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n\n public static getOuterHeight(el: any, margin?: any): any {\n let height: any = el.offsetHeight;\n\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n public static getHeight(el: any): number {\n let height: any = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return height;\n }\n\n public static getWidth(el: any): number {\n let width: any = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n return width;\n }\n\n public static getViewport(): any {\n\n const win = window;\n const d: Document = document;\n const e: HTMLElement = d.documentElement;\n const g: HTMLBodyElement = d.getElementsByTagName('body')[0];\n const w: number = win.innerWidth || e.clientWidth || g.clientWidth;\n const h: number = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n public static getOffset(el: any): { top: any; left: any; } {\n const rect: any = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0),\n };\n }\n\n public static replaceElementWith(element: any, replacementElement: any): any {\n const parentNode: any = element.parentNode;\n if (!parentNode) {\n throw new Error('Não é possível substituir o elemento');\n }\n return parentNode.replaceChild(replacementElement, element);\n }\n\n public static getUserAgent(): string {\n return navigator.userAgent;\n }\n\n public static isIE(): boolean {\n const ua: string = window.navigator.userAgent;\n\n const msie: number = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n\n const trident: number = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n const rv: number = ua.indexOf('rv:');\n return true;\n }\n\n const edge: number = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n\n // other browser\n return false;\n }\n\n public static isIOS(): boolean {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n\n public static isAndroid(): boolean {\n return /(android)/i.test(navigator.userAgent);\n }\n\n public static isTouchDevice(): boolean {\n return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));\n }\n\n public static appendChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.appendChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.appendChild(element);\n } else {\n throw new Error(`Não é possível anexar ${target} para ${element}`);\n }\n }\n\n public static removeChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.removeChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.removeChild(element);\n } else {\n throw new Error(`Não é possível remover ${element} a partir de ${target}`);\n }\n }\n\n public static removeElement(element: Element): void {\n if (!('remove' in Element.prototype)) {\n element.parentNode.removeChild(element);\n } else {\n element.remove();\n }\n }\n\n public static isElement(obj: any): boolean {\n return (\n typeof HTMLElement === 'object'\n ? obj instanceof HTMLElement\n : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string'\n );\n }\n\n public static calculateScrollbarWidth(el?: HTMLElement): number {\n if (el) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return (el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth));\n } else {\n if (this.calculatedScrollbarWidth !== null) {\n return this.calculatedScrollbarWidth;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarWidth: number = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarWidth;\n\n return scrollbarWidth;\n }\n }\n\n public static calculateScrollbarHeight(): number {\n if (this.calculatedScrollbarHeight !== null) {\n return this.calculatedScrollbarHeight;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarHeight: number = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarHeight;\n\n return scrollbarHeight;\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n (element as any)[methodName].apply(element, args);\n }\n\n public static clearSelection(): void {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n // Ignore IE bug\n }\n }\n }\n\n public static getBrowser(): any {\n if (!this.browser) {\n const matched: { browser: any; version: any; } = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n\n public static resolveUserAgent(): { browser: any; version: any; } {\n const ua: string = navigator.userAgent.toLowerCase();\n const match: any[] | RegExpExecArray = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n /(msie) ([\\w.]+)/.exec(ua) ||\n ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) ||\n [];\n\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n\n public static isInteger(value: any): boolean {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n\n public static isHidden(element: HTMLElement): boolean {\n return element.offsetParent === null;\n }\n\n public static getFocusableElements(element: HTMLElement): any[] {\n const focusableElements: any[] = DomHandler.find(element, `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]):not(.p-disabled)`\n );\n\n const visibleFocusableElements: any[] = [];\n for (const focusableElement of focusableElements) {\n // tslint:disable-next-line: triple-equals\n if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden') {\n visibleFocusableElements.push(focusableElement);\n }\n }\n return visibleFocusableElements;\n }\n\n static generateZIndex(): number {\n this.zindex = this.zindex || 100;\n return ++this.zindex;\n }\n\n}\n","import { DomHandler } from './dom-handler';\n\nexport class ConnectedOverlayScrollHandler {\n\n element: any;\n\n listener: any;\n\n scrollableParents: any;\n\n constructor(element: any, listener: any = () => { }) {\n this.element = element;\n this.listener = listener;\n }\n\n bindScrollListener(): void {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n\n unbindScrollListener(): void {\n if (this.scrollableParents) {\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n\n destroy(): void {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n","import { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output, Renderer2,\n TemplateRef,\n ViewEncapsulation,\n ViewRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport ZIndexUtils from '../../../core/utils/zindex.util';\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\nimport { GIPIOverlayService } from '../../gipi-components/overlay/shared/overlay-service';\nimport { ConnectedOverlayScrollHandler } from '../dom/connected-overlay-scroll-handler';\nimport { DomHandler } from '../dom/dom-handler';\n\n@Component({\n selector: 'itss-overlay-panel',\n templateUrl: './overlay-panel.component.html',\n styleUrls: ['./overlay-panel.component.scss'],\n animations: [\n trigger('animation', [\n state('void', style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })),\n state('close', style({\n opacity: 0\n })),\n state('open', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => close', animate('{{hideTransitionParams}}')),\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'itss-element' }\n})\nexport class OverlayPanelComponent implements AfterContentInit, OnInit, OnDestroy {\n\n @Input() dismissable: boolean = true;\n\n @Input() showCloseIcon: boolean;\n\n @Input() closeIconSize: number = 15;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() appendTo: any = 'body';\n\n @Input() autoZIndex: boolean = true;\n\n @Input() ariaCloseLabel: string;\n\n @Input() baseZIndex: number = 0;\n\n @Input() focusOnShow: boolean = true;\n\n @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n @Input() hideTransitionOptions: string = '.1s linear';\n\n @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n @ContentChild('overlayContent', { static: false }) overlayContentRef: TemplateRef<any>;\n\n @ContentChild('overlayFooter', { static: false }) overlayFooterRef: TemplateRef<any>;\n\n container: HTMLDivElement;\n\n overlayVisible: boolean = false;\n\n render: boolean = false;\n\n isOverlayAnimationInProgress: boolean = false;\n\n selfClick: boolean = false;\n\n documentClickListener: any;\n\n target: any;\n\n willHide: boolean;\n\n scrollHandler: any;\n\n documentResizeListener: any;\n\n destroyCallback: Function;\n\n overlayEventListener;\n\n overlaySubscription: Subscription;\n\n constructor(\n public el: ElementRef,\n public renderer: Renderer2,\n public cd: ChangeDetectorRef,\n private zone: NgZone,\n public config: GIPINgConfig,\n public overlayService: GIPIOverlayService\n ) { }\n\n ngOnInit(): void {\n }\n\n ngAfterContentInit(): void {\n }\n\n bindDocumentClickListener(): void {\n if (!this.documentClickListener && this.dismissable) {\n this.zone.runOutsideAngular(() => {\n const documentEvent: 'touchstart' | 'click' = DomHandler.isIOS() ? 'touchstart' : 'click';\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n this.documentClickListener = this.renderer.listen(documentTarget, documentEvent, (event) => {\n if (!this.container.contains(event.target) && this.target !== event.target && !this.target.contains(event.target) && !this.selfClick) {\n this.zone.run(() => {\n this.hide();\n });\n }\n\n this.selfClick = false;\n this.cd.markForCheck();\n });\n });\n }\n }\n\n unbindDocumentClickListener(): void {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n\n toggle(event: any, target?: any): void {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n if (this.overlayVisible) {\n if (this.hasTargetChanged(event, target)) {\n this.destroyCallback = () => {\n this.show(null, (target || event.currentTarget || event.target));\n };\n }\n\n this.hide();\n } else {\n this.show(event, target);\n }\n }\n\n show(event: any, target?: any): void {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.target = target || event.currentTarget || event.target;\n this.overlayVisible = true;\n this.render = true;\n this.cd.markForCheck();\n }\n\n onOverlayClick(event: any): void {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n\n this.selfClick = true;\n }\n\n onContentClick(): void {\n this.selfClick = true;\n }\n\n hasTargetChanged(event: any, target: any): boolean {\n return this.target != null && this.target !== (target || event.currentTarget || event.target);\n }\n\n appendContainer(): void {\n if (this.appendTo) {\n if (this.appendTo === 'body') {\n document.body.appendChild(this.container);\n } else {\n DomHandler.appendChild(this.container, this.appendTo);\n }\n }\n }\n\n restoreAppend(): void {\n if (this.container && this.appendTo) {\n this.el.nativeElement.appendChild(this.container);\n }\n }\n\n align(): void {\n if (this.autoZIndex) {\n ZIndexUtils.set('overlay', this.container, this.baseZIndex + this.config.zIndex.overlay);\n }\n\n DomHandler.absolutePosition(this.container, this.target);\n\n const containerOffset: { top: any; left: any; } = DomHandler.getOffset(this.container);\n const targetOffset: { top: any; left: any; } = DomHandler.getOffset(this.target);\n let arrowLeft: number = 0;\n\n if (containerOffset.left < targetOffset.left) {\n arrowLeft = targetOffset.left - containerOffset.left;\n }\n this.container.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n\n if (containerOffset.top < targetOffset.top) {\n DomHandler.addClass(this.container, 'overlay-panel-flipped');\n }\n }\n\n onAnimationStart(event: AnimationEvent): void {\n if (event.toState === 'open') {\n this.container = event.element;\n this.onShow.emit(null);\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n\n if (this.focusOnShow) {\n this.focus();\n }\n\n this.overlayEventListener = e => {\n if (this.container && this.container.contains(e.target)) {\n this.selfClick = true;\n }\n };\n\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n }\n\n this.isOverlayAnimationInProgress = true;\n }\n\n onAnimationEnd(event: AnimationEvent): void {\n switch (event.toState) {\n case 'void': {\n if (this.destroyCallback) {\n this.destroyCallback();\n this.destroyCallback = null;\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n }\n case 'close': {\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n\n this.onContainerDestroy();\n this.onHide.emit({});\n this.render = false;\n break;\n }\n }\n\n this.isOverlayAnimationInProgress = false;\n }\n\n focus(): void {\n const focusable: any = DomHandler.findSingle(this.container, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n }\n }\n\n hide(): void {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n onCloseClick(event: any): void {\n this.hide();\n event.preventDefault();\n }\n\n onWindowResize(event: any): void {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n\n bindDocumentResizeListener(): void {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n\n unbindDocumentResizeListener(): void {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n\n bindScrollListener(): void {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.target, () => {\n if (this.overlayVisible) {\n this.hide();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener(): void {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n onContainerDestroy(): void {\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n\n ngOnDestroy(): void {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.destroyCallback = null;\n if (this.container) {\n this.restoreAppend();\n this.onContainerDestroy();\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n\n}\n","import {OverlayRef} from '@angular/cdk/overlay';\nimport {TemplateRef, Type} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nexport interface PopoverCloseEvent<T = any> {\n type: 'backdropClick' | 'close';\n data: T;\n}\n\nexport type PopoverContent = TemplateRef<any> | Type<any> | string;\n\nexport class PopoverRef<T = any> {\n private afterClosed = new Subject<PopoverCloseEvent<T>>();\n afterClosed$ = this.afterClosed.asObservable();\n\n constructor(public overlay: OverlayRef,\n public content: PopoverContent,\n public data: T) {\n overlay.backdropClick().subscribe(() => {\n this._close('backdropClick', null);\n });\n }\n\n close(data?: T) {\n this._close('close', data);\n }\n\n private _close(type: PopoverCloseEvent['type'], data?: T) {\n this.overlay.dispose();\n this.afterClosed.next({\n type,\n data\n });\n this.afterClosed.complete();\n }\n\n}\n","import {Component, OnInit, TemplateRef} from '@angular/core';\nimport {PopoverContent, PopoverRef} from './popover-ref';\n\n@Component({\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss']\n})\nexport class PopoverComponent implements OnInit {\n\n renderMethod: 'template' | 'component' | 'text' = 'component';\n\n content: PopoverContent;\n\n context;\n\n constructor(private popoverRef: PopoverRef) {\n }\n\n ngOnInit(): void {\n this.content = this.popoverRef.content;\n\n if (typeof this.content === 'string') {\n this.renderMethod = 'text';\n }\n\n if (this.content instanceof TemplateRef) {\n this.renderMethod = 'template';\n this.context = {\n close: this.popoverRef.close.bind(this.popoverRef),\n data: this.popoverRef.data\n };\n }\n }\n\n}\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-radio-group-entity',\n templateUrl: './radio-group-entity.component.html',\n styleUrls: ['./radio-group-entity.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupEntityComponent),\n multi: true\n }\n ]\n})\nexport class RadioGroupEntityComponent implements ControlValueAccessor, OnInit {\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() property = 'description';\n\n @Input() entities = [];\n\n @Input('value') val: any;\n\n ngOnInit(): void {\n }\n\n getPropertyValue(entity: any): string {\n return entity && typeof entity !== 'string' && entity[this.property];\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","export class GenerateIdComponent {\n\n public static uniqueId(nameComponent: string): string {\n const stringArr: any[] = [];\n for (let i: number = 0; i < 2; i++) {\n // tslint:disable-next-line: no-bitwise\n const S4: string = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n stringArr.push(S4);\n }\n return `${nameComponent}-${stringArr.join('-')}`;\n }\n\n}\n\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material';\n\nimport { ObjectUtil } from '../../../core';\nimport { GenerateIdComponent } from '../../api/generate-id-component';\n\n@Component({\n selector: 'itss-radio-group-enum',\n templateUrl: './radio-group-enum.component.html',\n styleUrls: ['./radio-group-enum.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupEnumComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'itss-element' },\n})\nexport class RadioGroupEnumComponent implements ControlValueAccessor, OnInit {\n\n enumList: any[] = [];\n\n @Input() label: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input('groupbox') isGroupbox: boolean = false;\n\n @Input('input') isInput: boolean = false;\n\n @Input() enum;\n\n @Input('value') val: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this.enumList.push(lEnumList[i]);\n }\n }\n } else {\n this.enumList = lEnumList;\n }\n this.changeDetectorRef.detectChanges();\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n changeRadioGroup({ value }: MatRadioChange): void {\n this.selectionChange.emit(value);\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n getId(key: string): string {\n return GenerateIdComponent.uniqueId(key);\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, forwardRef, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core';\n\n@Component({\n selector: 'itss-select-button',\n templateUrl: './select-button.component.html',\n styleUrls: ['./select-button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectButtonComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'itss-element'\n }\n})\nexport class SelectButtonComponent implements OnInit {\n\n @Input() options: any[];\n\n @Input() property: string;\n\n @Input() optionValue: string;\n\n @Input() optionDisabled: string;\n\n @Input() tabindex: number = 0;\n\n @Input() multiple: boolean;\n\n @Input() label: string;\n\n @Input() required: boolean;\n\n @Input() styleClass: string;\n\n @Input() ariaLabelledBy: string;\n\n @Input() disabled: boolean;\n\n @Input() dataKey: string;\n\n @Output() onOptionClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @ContentChild(TemplateRef, { static: false }) itemTemplate;\n\n value: any;\n\n onModelChange: Function = () => { };\n\n onModelTouched: Function = () => { };\n\n constructor(public cd: ChangeDetectorRef) { }\n\n ngOnInit(): void { }\n\n getPropertyLabel(option: any): any {\n return this.property ? ObjectUtil.resolveFieldData(option, this.property) : (option.label !== undefined ? option.label : option);\n }\n\n getOptionValue(option: any): any {\n return this.optionValue ? ObjectUtil.resolveFieldData(option, this.optionValue) : (this.property || option.value === undefined ? option : option.value);\n }\n\n isOptionDisabled(option: any): any {\n return this.optionDisabled ? ObjectUtil.resolveFieldData(option, this.optionDisabled) : (option.disabled !== undefined ? option.disabled : false);\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n onItemClick(event: any, option: any, index: number): void {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n if (this.multiple) {\n if (this.isSelected(option)) {\n this.removeOption(option);\n } else {\n this.value = [...(this.value || []), this.getOptionValue(option)];\n }\n\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n } else {\n const value: any = this.getOptionValue(option);\n\n if (this.value !== value) {\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n\n onBlur(): void {\n this.onModelTouched();\n }\n\n removeOption(option: any): void {\n this.value = this.value.filter(val => !ObjectUtil.equals(val, this.getOptionValue(option), this.dataKey));\n }\n\n isSelected(option: any): boolean {\n let selected: boolean = false;\n const optionValue: any = this.getOptionValue(option);\n\n if (this.multiple) {\n if (this.value) {\n for (const val of this.value) {\n if (ObjectUtil.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n } else {\n selected = ObjectUtil.equals(this.getOptionValue(option), this.value, this.dataKey);\n }\n\n return selected;\n }\n\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { MatOption } from '@angular/material/core/typings/option';\nimport { AbstractModel, ArrayUtil, ObjectUtil, PageDTO, StringUtil } from '../../../core';\nimport { UUIDUtil } from '../../../core/utils/uuid.util';\n\n@Component({\n selector: 'itss-select-entity-paged',\n templateUrl: './select-entity-paged.component.html',\n styleUrls: ['./select-entity-paged.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof SelectEntityPagedComponent => SelectEntityPagedComponent),\n multi: true\n }\n ]\n})\nexport class SelectEntityPagedComponent<T> implements OnInit, OnChanges, ControlValueAccessor, OnDestroy {\n\n valueSearchCtrl: FormControl = new FormControl('');\n\n page: PageDTO<T>;\n\n totalOptions: number = 0;\n\n subscriptions: Subscription[] = [];\n\n searching: boolean = false;\n\n toggleAllCheckboxChecked: boolean = false;\n\n toggleAllCheckboxIndeterminate: boolean = false;\n\n modelValue: any;\n\n private _paramNextBatch: any;\n\n private _options: T[] = [];\n\n @ViewChild('matSelect', { static: false }) private matSelect: MatSelect;\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) private cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n @Input() initAllCheckboxChecked: boolean;\n\n @Input() closeIcon: string = 'close';\n\n @Input() closeSvgIcon?: string;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() showButtonAdd: boolean;\n\n @Input() multiple: boolean = false;\n\n @Input() iconPrefix: string;\n @Input() svgIconPrefix: string;\n\n // Mostrar/ocultar o input para pesquisar\n @Input() hideFieldSearch: boolean = false;\n\n // Mostrar/ocultar o botão limpar opções selecionadas\n @Input() showClear: boolean = false;\n\n @Input() debounceTime: number = 1000; // milissegundos\n\n // Valores que não serão exibidos nas opções\n @Input() valuesExclud: T[] = [];\n\n @Input() appearance: string = 'outline';\n\n @Input() classSelectPanel: string;\n\n @Input() property: string = 'description';\n\n @Input() trackyBy: string = 'id';\n\n @Input() initLoaded: boolean = true;\n\n @Input() infiniteScroll: boolean = true;\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n @Input() set paramNextBatch(val: any) {\n this._paramNextBatch = val;\n }\n get paramNextBatch(): any {\n return this._paramNextBatch;\n }\n\n @Input() set model(val: any) {\n this.modelValue = val;\n this.modelChange.emit(this.modelValue);\n this.onChange(this.modelValue);\n this.onTouch(this.modelValue);\n }\n get model(): any {\n return this.modelValue;\n }\n\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() selectionChange: EventEmitter<T> = new EventEmitter<T>();\n @Output() searchChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() addChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get scrollViewportHeight(): number {\n if (ArrayUtil.isEmpty(this.options)) {\n return 0;\n }\n\n // Cada mat-option possui 3em ou 39px. 3 * quantidade de mat-option\n return (3 * this.options.length);\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => this.trackyBy ? obj[this.trackyBy] : obj;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n // O debounceTime é utlizado para emitir o valor após o usuário parar\n // de digitar, evitando consulta a toda letra que for digitada.\n // O distinctUntilChanged é utilizado para emitir apenas valores\n // que são diferentes dos valores anteriores emitidos.\n this.subscriptions.push(\n this.valueSearchCtrl.valueChanges\n .pipe(\n map((value: string): string => value),\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n )\n .subscribe((value: string): void => {\n this.onSearchChange(value);\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!ObjectUtil.isNull(changes.model) && !changes.model.isFirstChange()) {\n if (ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.model)) {\n if (!this.multiple) {\n this.options.push(this.model);\n } else {\n this.options = this.model;\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n compareFn(f1: AbstractModel, f2: AbstractModel): boolean {\n return f1 && f2 && f1.id === f2.id;\n }\n\n getPropertyValue(entity: any): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this.getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n getValue(entity: any, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n onSelectionChange(entity: T): void {\n this.selectionChange.emit(entity);\n }\n\n onSearchChange(value: string): void {\n if (this.matSelect.panelOpen) {\n this.searchChange.emit(value);\n\n this.model = null;\n this.onSelectionChange(this.model);\n\n if (this.multiple) {\n this.onToggleAllSelection(false);\n }\n\n this.page = null;\n this.options = [];\n\n this.onLoadMoreOptions(false);\n }\n }\n\n async onLoadMoreOptions(isInfiniteScroll: boolean, isOpened: boolean = true): Promise<void> {\n if (!this.infiniteScroll) {\n return;\n }\n if (!isOpened) {\n return;\n }\n if (ObjectUtil.isNull(this.nextBatchFn)) {\n console.error('A função nextBatchFn é obrigatória e não foi informada');\n return;\n }\n if (this.searching) {\n return;\n }\n if (!ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.page) && ArrayUtil.isEmpty(this.valuesExclud)) {\n if (this.options.length === this.page.totalElements) {\n return;\n }\n }\n\n this.cdkVirtualScrollViewPort.scrollToIndex(0, 'smooth');\n this.cdkVirtualScrollViewPort.checkViewportSize();\n\n this.searching = true;\n\n let pageNumber: number = 0;\n if (isInfiniteScroll) {\n pageNumber = !ObjectUtil.isNull(this.page) ? this.page.number + 1 : 1;\n } else {\n this.page = null;\n this.options = [];\n }\n\n await this.nextBatchFn(this.valueSearchCtrl.value, pageNumber, this.paramNextBatch)\n .then(page => {\n this.page = page;\n\n if (!ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n if (!ArrayUtil.isEmpty(this.valuesExclud)) {\n for (let i: number = 0; i < this.valuesExclud.length; i++) {\n const index: number = this.page.content.findIndex(o => this.valuesExclud[i][this.trackyBy] === o[this.trackyBy]);\n this.page.content.splice(index, 1);\n }\n }\n\n this.options = [...this.options, ...this.page.content];\n }\n\n if (!ObjectUtil.isNull(this.model) && !this.multiple) {\n const modelInList: T = this.options.find(o => ObjectUtil.equals(o, this.model));\n if (ObjectUtil.isNull(modelInList)) {\n this.options.push(this.model);\n }\n }\n\n this.searching = false;\n })\n .finally(() => {\n this.searching = false;\n });\n }\n\n onToggleAllSelection(selectAll: boolean): void {\n if (this.multiple && !ObjectUtil.isNull(this.matSelect) && !this.searching) {\n if (selectAll) {\n this.matSelect.options.forEach((item: MatOption) => item.select());\n } else {\n this.matSelect.options.forEach((item: MatOption) => item.deselect());\n }\n\n this.onToggleIndeterminateAllSelection();\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n onToggleIndeterminateAllSelection(): void {\n if (this.multiple && !ObjectUtil.isNull(this.matSelect)) {\n const lOptions: MatOption[] = this.matSelect.options.filter((item: MatOption) => item.selected);\n this.toggleAllCheckboxChecked = lOptions.length > 0;\n this.toggleAllCheckboxIndeterminate = (lOptions.length > 0) && (lOptions.length < this.matSelect.options.length);\n\n if (lOptions.length <= 0) {\n this.model = null;\n this.onSelectionChange(this.model);\n }\n }\n }\n\n showClearOptionButton(): boolean {\n let isNewModel: boolean = false;\n if (this.multiple && Array.isArray(this.model)) {\n isNewModel = !this.model || (this.model && (this.model.length <= 0));\n } else if (!this.multiple && !ObjectUtil.isNull(this.model)) {\n isNewModel = ObjectUtil.isNewModel(this.model);\n }\n return this.showClear && !isNewModel && (!this.disabled) && (!this.searching);\n }\n\n removeOption(): void {\n if (this.multiple) {\n this.onToggleAllSelection(false);\n }\n\n this.model = null;\n this.onSelectionChange(this.model);\n this.options = [];\n }\n\n haveSelected(): boolean {\n const entity: any = this.model;\n if (entity) {\n return UUIDUtil.isValid(entity.id);\n }\n return false;\n }\n\n onClickAdd(): void {\n if (Array.isArray(this.model) && !ArrayUtil.isEmpty(this.model)) {\n this.addChange.emit(this.model);\n } else {\n this.addChange.emit([]);\n }\n }\n\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Optional, Output } from '@angular/core';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\n\n@Component({\n selector: 'itss-select-button-add',\n templateUrl: './select-button-add.component.html',\n styleUrls: ['./select-button-add.component.scss']\n})\nexport class SelectButtonAddComponent implements OnInit {\n\n // Rótulo do marcador de posição de pesquisa\n @Input() label: string = 'Adicionar novo registro';\n\n // Ícone baseado em fonte usado para exibir addIcon\n @Input() addIcon: string = 'add_circle';\n\n // Ícone baseado em Svg usado para exibir addIcon. Se definido, addIcon é substituído\n @Input() addSvgIcon?: string;\n\n // Adiciona suporte a leitor de tela 508 para o botão\n @Input() ariaLabel: string = 'Botão de adicionar registro';\n\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n ) { }\n\n ngOnInit(): void { }\n\n onClickButton(event: MouseEvent): void {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnInit, Optional, Output } from '@angular/core';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\n\n@Component({\n selector: 'itss-select-button-next-batch',\n templateUrl: './select-button-next-batch.component.html',\n styleUrls: ['./select-button-next-batch.component.scss']\n})\nexport class SelectButtonNextBatchComponent implements OnInit {\n\n // Rótulo do marcador de posição de pesquisa\n @Input() label: string = 'Mostrar mais';\n\n // Adiciona suporte a leitor de tela 508 para o botão\n @Input() ariaLabel: string = 'Botão para exibir mais resultados';\n\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n ) { }\n\n ngOnInit(): void { }\n\n onClickButton(event: MouseEvent): void {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Diretiva para fornecer um elemento personalizado sem entradas encontradas.\n * Por exemplo:\n * <itss-select-search [formControl]=\"entityFilterCtrl\">\n * <span itssSelectNoEntriesFound>\n * Nenhum registro encontrado <button>Add</button>\n * </span>\n * </itss-select-search>\n */\n@Directive({\n selector: '[itssSelectNoEntriesFound]'\n})\nexport class SelectNoEntriesFoundDirective { }\n","import { Directive } from '@angular/core';\n\n/**\n * Diretiva para fornecer um ícone transparente personalizado.\n * Por exemplo:\n * <itss-select-search [formControl]=\"entityFilterCtrl\">\n * <mat-icon itssSelectSearchClear>delete</mat-icon>\n * </itss-select-search>\n */\n@Directive({\n selector: '[itssSelectSearchClear]'\n})\nexport class SelectSearchClearDirective { }\n","import { InjectionToken } from '@angular/core';\nimport { SelectSearchComponent } from './select-search/select-search.component';\n\n/** Lista de entradas de ItssSelectSearchComponent que podem ser configuradas com um padrão global. */\nexport const configurableDefaultOptions = [\n 'ariaLabel',\n 'clearSearchInput',\n 'closeIcon',\n 'closeSvgIcon',\n 'disableInitialFocus',\n 'disableScrollToActiveOnOptionsChanged',\n 'enableClearOnEscapePressed',\n 'hideClearSearchButton',\n 'noEntriesFoundLabel',\n 'placeholderLabel',\n 'preventHomeEndKeyPropagation',\n 'searching',\n] as const;\n\nexport type ConfigurableDefaultOptions = typeof configurableDefaultOptions[number];\n\n/**\n * InjectionToken que pode ser usado para especificar opções globais. por exemplo.\n *\n * ```typescript\n * providers: [\n * {\n * provide: ITSS_SELECT_SEARCH_DEFAULT_OPTIONS,\n * useValue: <ItssSelectSearchOptions>{\n * closeIcon: 'delete',\n * noEntriesFoundLabel: 'Nenhuma registro foi encontrado'\n * }\n * }\n * ]\n * ```\n *\n * Veja as entradas correspondentes de `ItssSelectSearchComponent` para documentação.\n */\nexport const ITSS_SELECT_SEARCH_DEFAULT_OPTIONS = new InjectionToken<ItssSelectSearchOptions>('itss-select_search-default-options');\n\n/** Opções globais configuráveis para ItssSelectSearch. */\nexport type ItssSelectSearchOptions = Readonly<Partial<Pick<SelectSearchComponent, ConfigurableDefaultOptions>>>;\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, NINE, SPACE, UP_ARROW, Z, ZERO } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, Inject, Input, OnChanges, OnDestroy, OnInit, Optional, Output, QueryList, SimpleChanges, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport { delay, filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { ITSS_SELECT_SEARCH_DEFAULT_OPTIONS, ItssSelectSearchOptions, configurableDefaultOptions } from '../default-options';\nimport { SelectNoEntriesFoundDirective } from '../select-no-entries-found.directive';\nimport { SelectSearchClearDirective } from '../select-search-clear.directive';\n\n/**\n * Este componente foi reescrito utilizando se do projeto a seguir\n * https://github.com/bithost-gmbh/ngx-mat-select-search\n */\n@Component({\n selector: 'itss-input-search',\n templateUrl: './select-search.component.html',\n styleUrls: ['./select-search.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof SelectSearchComponent => SelectSearchComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectSearchComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n\n // Valor de pesquisa atual\n get value(): string {\n return this._formControl.value;\n }\n\n // Referência às opções MatSelect\n public set _options(_options: QueryList<MatOption>) {\n this._options$.next(_options);\n }\n public get _options(): QueryList<MatOption> {\n return this._options$.getValue();\n }\n\n // Adiciona a classe mat-select-search-inside-mat-option se o itss-select-search estiver\n // dentro do mat-option\n @HostBinding('class.mat-select-search-inside-mat-option')\n get isInsideMatOption(): boolean {\n return !!this.matOption;\n }\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n @Optional() @Inject(ITSS_SELECT_SEARCH_DEFAULT_OPTIONS) defaultOptions?: ItssSelectSearchOptions\n ) {\n this.applyDefaultOptions(defaultOptions);\n }\n\n // Rótulo do marcador de posição de pesquisa\n @Input() placeholderLabel: string = 'Pesquisar...';\n\n // Tipo do campo de entrada de pesquisa\n @Input() type: string = 'text';\n\n // Ícone baseado em fonte usado para exibir Close-Icon\n @Input() closeIcon: string = 'close';\n\n // Ícone baseado em Svg usado para exibir Close-Icon. Se definido, Close-Icon é substituído\n @Input() closeSvgIcon?: string;\n\n // Rótulo a ser mostrado quando nenhuma entrada for encontrada. Defina como nulo se nenhuma mensagem deve ser mostrada\n @Input() noEntriesFoundLabel: string = 'Nenhum resultado encontrado';\n\n /**\n * Se o campo de pesquisa deve ou não ser limpo após o menu suspenso ser fechado.\n * Útil para filtragem do lado do servidor. Veja [#3](https://github.com/bithost-gmbh/ngx-mat-select-search/issues/3)\n */\n @Input() clearSearchInput: boolean = true;\n\n // Se deve mostrar o indicador de pesquisa em andamento\n @Input() searching: boolean = false;\n\n // Desativa o foco inicial do campo de entrada\n @Input() disableInitialFocus: boolean = false;\n\n // Ativar limpar input ao pressionar escape\n @Input() enableClearOnEscapePressed: boolean = false;\n\n /**\n * Impede que a chave home/end seja propagada para mat-select,\n * permitindo mover o cursor dentro da entrada de pesquisa em vez de navegar pelas opções\n */\n @Input() preventHomeEndKeyPropagation: boolean = false;\n\n // Desativa a rolagem para as opções ativas quando a lista de opções é alterada. Útil para pesquisa do lado do servidor\n @Input() disableScrollToActiveOnOptionsChanged: boolean = false;\n\n // Adiciona suporte a leitor de tela 508 para caixa de pesquisa\n @Input() ariaLabel: string = 'Pesquisa suspensa';\n\n // Se deve mostrar a caixa de seleção Selecionar tudo (para mat-select[multi=true])\n @Input() showToggleAllCheckbox: boolean = false;\n\n // Selecione tudo caixa de seleção marcada estado\n private _toggleAllCheckboxChecked: boolean = false;\n @Input() set toggleAllCheckboxChecked(value: boolean) {\n this._toggleAllCheckboxChecked = value;\n this.toggleAll.emit(value);\n }\n get toggleAllCheckboxChecked(): boolean {\n return this._toggleAllCheckboxChecked;\n }\n\n // Marque todas as caixas de seleção estado indeterminado\n private _toggleAllCheckboxIndeterminate: boolean = false;\n @Input() set toggleAllCheckboxIndeterminate(value: boolean) {\n this._toggleAllCheckboxIndeterminate = value;\n this.toggleAllIndeterminate.emit(value);\n }\n get toggleAllCheckboxIndeterminate(): boolean {\n return this._toggleAllCheckboxIndeterminate;\n }\n\n // Exibir uma mensagem em uma dica de ferramenta na caixa de seleção de alternar tudo\n @Input() toggleAllCheckboxTooltipMessage: string = '';\n\n // Defina a posição da dica de ferramenta na caixa de seleção de alternar tudo.\n @Input() toggleAllCheckboxTooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n // Mostrar/ocultar o botão limpar pesquisa da entrada de pesquisa\n @Input() hideClearSearchButton: boolean = false;\n\n /**\n * Sempre restaure as opções selecionadas na seleção Altere para o modo multi (por exemplo, para carregamento lento/rolagem infinita).\n * O padrão é falso, portanto, as opções selecionadas são restauradas apenas enquanto a filtragem está ativa.\n */\n @Input() alwaysRestoreSelectedOptionsMulti: boolean = false;\n\n // Emissor de saída para enviar ao componente pai com a alternância de todos os booleanos\n @Output() toggleAll: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() toggleAllIndeterminate: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput: ElementRef;\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('innerSelectSearch', { read: ElementRef, static: true }) innerSelectSearch: ElementRef;\n\n // Referência ao ícone claro de entrada de pesquisa personalizada\n @ContentChild(SelectSearchClearDirective, { static: false }) clearIcon: SelectSearchClearDirective;\n\n // Referência ao elemento personalizado sem entradas encontradas\n @ContentChild(SelectNoEntriesFoundDirective, { static: false }) noEntriesFound: SelectNoEntriesFoundDirective;\n private _lastExternalInputValue: string;\n public _options$: BehaviorSubject<QueryList<MatOption>> = new BehaviorSubject<QueryList<MatOption>>(null);\n\n private optionsList$: Observable<MatOption[]> = this._options$.pipe(\n switchMap((_options: QueryList<MatOption>): Observable<any> => _options\n ? _options.changes.pipe(\n map((options: any): any => options.toArray()),\n startWith<MatOption[]>(_options.toArray()),)\n : of(null)\n )\n );\n\n private optionsLength$: Observable<number> = this.optionsList$.pipe(\n map((options: MatOption[]): number => options ? options.length : 0)\n );\n\n // Valores previamente selecionados ao usar <mat-select [multiple]=\"true\">\n private previousSelectedValues: any[];\n\n public _formControl: FormControl = new FormControl('');\n\n // Se deve mostrar a mensagem sem entradas encontradas\n public _showNoEntriesFound$: Observable<boolean> = combineLatest([\n this._formControl.valueChanges,\n this.optionsLength$\n ]).pipe(\n map(([value, optionsLength]: [any, number]): boolean => this.noEntriesFoundLabel && value\n && optionsLength === this.getOptionsLengthOffset())\n );\n\n // Subject emitido quando o componente foi destruído\n private _onDestroy: Subject<void> = new Subject<void>();\n\n // Referência ao descendente ativo para suporte ARIA.\n private activeDescendant: HTMLElement;\n\n private applyDefaultOptions(defaultOptions: ItssSelectSearchOptions): void {\n if (!defaultOptions) {\n return;\n }\n\n for (const key of configurableDefaultOptions) {\n if (defaultOptions.hasOwnProperty(key)) {\n (this[key] as any) = defaultOptions[key];\n }\n }\n }\n\n ngOnInit(): void {\n // Definir classe de opção mat personalizada se o componente foi colocado dentro de uma opção mat\n if (this.matOption) {\n this.matOption.disabled = true;\n this.matOption._getHostElement().classList.add('contains-mat-select-search');\n this.matOption._getHostElement().setAttribute('aria-hidden', 'true');\n } else {\n console.error('<itss-input-search> deve ser colocado dentro de um elemento <mat-option>');\n }\n\n // Quando o painel suspenso de seleção é aberto ou fechado\n this.matSelect.openedChange\n .pipe(\n delay(1),\n takeUntil(this._onDestroy)\n )\n .subscribe((opened: boolean): void => {\n if (opened) {\n this.updateInputWidth();\n\n // Focar o campo de pesquisa ao abrir\n if (!this.disableInitialFocus) {\n this._focus();\n }\n } else {\n // Limpá-lo ao fechar\n if (this.clearSearchInput) {\n this._reset();\n }\n }\n });\n\n // Definir o primeiro item ativo após as opções alteradas\n this.matSelect.openedChange\n .pipe(\n take(1),\n switchMap((): Observable<any> => {\n this._options = this.matSelect.options;\n\n // Variável de fechamento para rastrear a primeira opção mais recente.\n // Para evitar que a lista role para o topo quando as opções são adicionadas ao final da lista\n // (por exemplo: rolagem infinita), comparamos apenas as alterações nas primeiras opções para\n // determinar se devemos definir o primeiro item como ativo. Isso evita a rolagem desnecessária\n // para o topo da lista quando as opções são anexadas, mas permite que o primeiro item da lista\n // seja definido como ativo por padrão quando não há seleção ativa.\n let previousFirstOption: MatOption = this._options.toArray()[this.getOptionsLengthOffset()];\n\n return this._options.changes\n .pipe(\n tap((): void => {\n // Evitar o erro \"expression has been changed\"\n setTimeout((): void => {\n // Converter a QueryList em uma matriz\n const options: MatOption[] = this._options.toArray();\n\n // O verdadeiro primeiro item é compensado por 1\n const currentFirstOption: MatOption = options[this.getOptionsLengthOffset()];\n\n const keyManager: ActiveDescendantKeyManager<MatOption> = this.matSelect._keyManager;\n if (keyManager && this.matSelect.panelOpen) {\n\n // Definir primeiro item ativo e largura de entrada\n\n // Verifique se a primeira opção nessas alterações é diferente da anterior.\n const firstOptionIsChanged: boolean = !this.matSelect.compareWith(previousFirstOption, currentFirstOption);\n\n // CASO: A primeira opção é diferente agora.\n // Indica que devemos defini-lo como ativo e rolar para o topo.\n if (firstOptionIsChanged\n || !keyManager.activeItem\n || !options.find((option: MatOption): boolean => this.matSelect.compareWith(option, keyManager.activeItem))) {\n keyManager.setFirstItemActive();\n }\n\n // Aguarde as alterações na largura do painel\n setTimeout((): void => {\n this.updateInputWidth();\n });\n }\n\n // Atualize nossa referência\n previousFirstOption = currentFirstOption;\n });\n })\n );\n })\n )\n .pipe(takeUntil(this._onDestroy))\n .subscribe();\n\n // Adicione ou remova a classe css dependendo se deseja mostrar a mensagem sem entradas encontradas\n // obs: isso é hacky\n this._showNoEntriesFound$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((showNoEntriesFound: boolean): void => {\n // Definir nenhuma classe de entrada encontrada na mat-option\n if (this.matOption) {\n if (showNoEntriesFound) {\n this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n } else {\n this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n }\n }\n });\n\n // Redimensione a largura de entrada quando a viewport for redimensionada,\n // ou seja, a largura do acionador pode ser redimensionada.\n this._viewportRuler.change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe((): void => {\n if (this.matSelect.panelOpen) {\n this.updateInputWidth();\n }\n });\n\n this.initMultipleHandling();\n\n this.optionsList$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((): void => {\n // Atualizar visualização quando as opções disponíveis mudarem\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.searching) {\n this._formControl.disable();\n } else {\n this._formControl.enable();\n this._focus();\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n onTouched: Function = (_: any): void => { };\n\n _isToggleAllCheckboxVisible(): boolean {\n return this.matSelect.multiple && this.showToggleAllCheckbox;\n }\n\n /**\n * Manipula o evento de tecla pressionada com MatSelect.\n * Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.\n * @param event\n */\n _handleKeydown(event: KeyboardEvent): void {\n // Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção\n if ((event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n || (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))\n ) {\n event.stopPropagation();\n }\n\n if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n // Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais\n setTimeout((): void => this._focus());\n }\n\n // Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa\n if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n this._reset(true);\n event.stopPropagation();\n }\n }\n\n /**\n * Manipula o evento de ativação de chave com MatSelect.\n * Permite, por ex. o anúncio do Descendente atualmente ativo por leitores de tela.\n */\n _handleKeyup(event: KeyboardEvent): void {\n if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n const ariaActiveDescendantId: string = this.matSelect._getAriaActiveDescendant();\n const index: number = this._options.toArray().findIndex((item: MatOption): boolean => item.id === ariaActiveDescendantId);\n if (index !== -1) {\n this.unselectActiveDescendant();\n this.activeDescendant = this._options.toArray()[index]._getHostElement();\n this.activeDescendant.setAttribute('aria-selected', 'true');\n this.searchSelectInput.nativeElement.setAttribute('aria-activedescendant', ariaActiveDescendantId);\n }\n }\n }\n\n writeValue(value: string): void {\n this._lastExternalInputValue = value;\n this._formControl.setValue(value);\n this.changeDetectorRef.markForCheck();\n }\n\n onBlur(): void {\n this.unselectActiveDescendant();\n this.onTouched();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._formControl.valueChanges.pipe(\n filter((value: any): boolean => value !== this._lastExternalInputValue),\n tap((): any => this._lastExternalInputValue = undefined),\n takeUntil(this._onDestroy)\n ).subscribe(fn);\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n /**\n * Focaliza o campo de entrada de pesquisa\n */\n public _focus(): void {\n if (!this.searchSelectInput || !this.matSelect.panel) {\n return;\n }\n // salve e restaure o scrollTop do painel, pois será redefinido por focus ()\n // obs: isso é hacky\n const panel: any = this.matSelect.panel.nativeElement;\n const scrollTop: any = panel.scrollTop;\n\n // Seta o foco\n this.searchSelectInput.nativeElement.focus();\n\n panel.scrollTop = scrollTop;\n }\n\n /**\n * Redefine o valor de pesquisa atual\n * @param focus se deve focar após a redefinição\n */\n public _reset(focus?: boolean): void {\n this._formControl.setValue('');\n if (focus) {\n this._focus();\n }\n }\n\n /**\n * Inicializa a manipulação <mat-select [multiple]=\"true\">\n * Nota: para melhorar este código, mat-select deve ser estendido para permitir desabilitar a redefinição da seleção durante a filtragem.\n */\n private initMultipleHandling(): void {\n if (!this.matSelect.ngControl) {\n if (this.matSelect.multiple) {\n // nota: o acesso a matSelect.ngControl (em vez de matSelect.value / matSelect.valueChanges)\n // é necessário para funcionar corretamente no modo de seleção múltipla.\n console.error('o mat-select contendo itss-input-search deve ter uma diretiva ngModel ou formControl quando multiple=true');\n }\n return;\n }\n // Se <mat-select [multiple]=\"true\">\n // armazenar valores previamente selecionados e restaurá-los quando forem desmarcados\n // porque a opção não está disponível enquanto estamos filtrando\n this.previousSelectedValues = this.matSelect.ngControl.value;\n\n this.matSelect.ngControl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .subscribe((values: any): void => {\n let restoreSelectedValues: boolean = false;\n\n if (this.matSelect.multiple) {\n if ((this.alwaysRestoreSelectedOptionsMulti || (this._formControl.value && this._formControl.value.length))\n && this.previousSelectedValues && Array.isArray(this.previousSelectedValues)) {\n\n if (!values || !Array.isArray(values)) {\n values = [];\n }\n\n const optionValues: any[] = this.matSelect.options.map((option: MatOption): any => option.value);\n\n this.previousSelectedValues.forEach((previousValue: any): void => {\n if (!values.some((v: any): boolean => this.matSelect.compareWith(v, previousValue))\n && !optionValues.some((v: any): boolean => this.matSelect.compareWith(v, previousValue))) {\n // Se um valor que foi selecionado antes for desmarcado e não encontrado nas opções, ele foi desmarcado\n // devido à filtragem, então restauramos.\n values.push(previousValue);\n restoreSelectedValues = true;\n }\n });\n }\n }\n this.previousSelectedValues = values;\n\n if (restoreSelectedValues) {\n this.matSelect._onChange(values);\n }\n });\n }\n\n /**\n * Defina a largura do innerSelectSearch para ajustar até mesmo as barras de rolagem personalizadas\n * E apoiar todos os sistemas de operação\n */\n public updateInputWidth(): void {\n if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n return;\n }\n let element: HTMLElement = this.innerSelectSearch.nativeElement;\n let panelElement: HTMLElement;\n while (element = element.parentElement) {\n if (element.classList.contains('mat-select-panel')) {\n panelElement = element;\n break;\n }\n }\n if (panelElement) {\n this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n }\n }\n\n /**\n * Determine o deslocamento para o comprimento que pode ser causado pelo matOption opcional usado como uma entrada de pesquisa.\n */\n private getOptionsLengthOffset(): number {\n if (this.matOption) {\n return 1;\n } else {\n return 0;\n }\n }\n\n private unselectActiveDescendant(): void {\n if (this.activeDescendant) {\n this.activeDescendant.removeAttribute('aria-selected');\n }\n this.searchSelectInput.nativeElement.removeAttribute('aria-activedescendant');\n }\n\n\n}\n","import { ObjectUtil } from './object.util';\n\n/** @dynamic */\nexport class ArrayUtil {\n\n public static isEmpty(value: Object[]): boolean {\n return ObjectUtil.isNull(value) || value.length === 0;\n }\n\n public static clone(value: Object[]): any[] {\n if (ObjectUtil.isNull(value)) {\n return new Array();\n }\n return [...value];\n }\n\n /**\n * Função para realizar ordenação de Array de objetos\n * @param propertyList Lista de propriedades que serão usadas na ordenação\n * @returns (a,b) => n. Onde n é -1, 0, 1\n */\n public static sortObjects(propertyList: { property: string, isAsc: boolean }[]): () => number {\n const fnGetPropertyValue = function (entity: any, property: string): string {\n if (!ObjectUtil.isNewModel(entity)) {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n return '';\n }\n\n const fnSort = function (sortProp: { property: string, isAsc: boolean }[], x: any, y: any): number {\n const typeOrder: string[] = ['boolean', 'number', 'string', 'object', 'undefined']; // Quando os pares não combinam usará esta ordem de precedência\n for (let i: number = 0; i < sortProp.length; i++) {\n let sortFactor: number = 1;\n if (!sortProp[i].isAsc) {\n sortFactor = -1;\n }\n\n let xValue: any = fnGetPropertyValue(x, sortProp[i].property);\n let yValue: any = y[sortProp[i].property];\n const xType: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' = typeof xValue;\n const yType: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' = typeof yValue;\n\n let compareResult: number = 0;\n if (xType === yType) {\n switch (xType) {\n case 'string': {\n compareResult = xValue.localeCompare(yValue);\n break;\n }\n case 'number': {\n compareResult = (xValue === yValue) ? 0 : (xValue < yValue) ? -1 : 1;\n break;\n }\n case 'boolean': {\n compareResult = (xValue === yValue) ? 0 : (xValue === false) ? -1 : 1;\n break;\n }\n case 'object': {\n if (ObjectUtil.isNull(xValue) && ObjectUtil.isNull(yValue)) {\n compareResult = 0;\n } else if (ObjectUtil.isNull(xValue)) {\n compareResult = -1;\n } else if (ObjectUtil.isNull(yValue)) {\n compareResult = 1;\n } else {\n xValue = xValue.toString();\n yValue = yValue.toString();\n compareResult = xValue.localeCompare(yValue);\n }\n break;\n }\n default: {\n // Isso é típico de indefinido, o que acontecerá muito se o nome da propriedade passada for digitado incorretamente, etc.\n // Então, apenas assuma que os pares de itens não podem ser distinguidos e use 0.\n compareResult = 0;\n }\n }\n } else {\n if (ObjectUtil.isNull(xValue) && ObjectUtil.isNull(yValue)) {\n compareResult = 0;\n } else if (ObjectUtil.isNull(xValue)) {\n compareResult = 1; // Ordena NULL para o final\n } else if (ObjectUtil.isNull(yValue)) {\n compareResult = -1; // Ordena NULL para o final\n } else {\n const xValOrder: number = typeOrder.findIndex(t => t === xType);\n const yValOrder: number = typeOrder.findIndex(t => t === yType);\n compareResult = (xValOrder === yValOrder) ? 0 : (xValOrder < yValOrder) ? -1 : 1;\n }\n if (compareResult !== 0) {\n return compareResult; // Uma decisão de classificação definida está disponível, mas IGNORE o fator de classificação! Este caso é precedente\n }\n }\n if (compareResult !== 0) {\n return compareResult * sortFactor; // Uma decisão de classificação definida está disponível\n }\n }\n return 0; // Trate os itens como equivalentes não tendo encontrado uma diferença específica na lista de propriedades de ordenação\n\n };\n\n return fnSort.bind(this, propertyList);\n }\n\n}\n","import { AfterContentChecked, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { MatOption, MatSelect } from '@angular/material';\n\nimport { AbstractModel } from '../../../core/models/abstract.model';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: 'itss-select-entity',\n templateUrl: './select-entity.component.html',\n styleUrls: ['./select-entity.component.scss']\n})\nexport class SelectEntityComponent<T> implements OnInit, AfterContentChecked, OnChanges {\n\n filteredEntities: any[] = [];\n\n previousSearchValue: string = null;\n\n allSelected: boolean = false;\n\n indeterminateAllSelected: boolean = false;\n\n @ViewChild('select', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @ViewChild('select', { static: false }) private select: MatSelect;\n\n @ViewChild('search', { static: false, read: ElementRef }) search: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() multiple: boolean = false;\n\n @Input() displayCheckboxAll: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() showClear: boolean = false;\n\n @Input() upperCase: boolean = false;\n\n @Input() property: string = 'description';\n\n @Input() propertyFn: (obj: any) => any;\n\n @Input() propertyEnum;\n\n @Input() map: (value: any, index?: number, array?: any[]) => boolean;\n\n @Input() nullValue: string;\n\n @Input() valuesExclud: T[] = [];\n\n @Input() entities: T[] = [];\n\n private _modelValue: T;\n @Input() set model(model: T) {\n this._modelValue = model;\n this.modelChange.emit(this._modelValue);\n }\n get model(): T {\n return this._modelValue;\n }\n\n @Output() modelChange: EventEmitter<T> = new EventEmitter<T>();\n @Output() selectionChange: EventEmitter<T> = new EventEmitter<T>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void { }\n\n ngAfterContentChecked(): void {\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.model && !ObjectUtil.isNull(changes.model.currentValue)) {\n this.filterEntities();\n }\n if (changes.entities && !ObjectUtil.isNull(changes.entities.currentValue)) {\n this.filteredEntities = this.entities;\n this.filterEntities();\n }\n }\n\n filterEntities(): void {\n if (!ObjectUtil.isNewModel(this.model) && !ArrayUtil.isEmpty(this.filteredEntities) && !this.multiple) {\n const entity = this.filteredEntities.find(e => ObjectUtil.equalsByValue(e, this.model));\n if (!ObjectUtil.isNewModel(entity)) {\n this.model = entity;\n }\n }\n }\n\n getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this.getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n getValue(entity: any, property: string): string {\n const properties = property.split('.');\n let value = entity;\n\n for (let i = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n if (!ObjectUtil.isNull(this.propertyEnum)) {\n return this.propertyEnum[value];\n }\n return value;\n }\n }\n }\n\n onSearch(valueSearch: string): void {\n if (\n (valueSearch === this.previousSearchValue) ||\n (this.haveSelected() && (valueSearch === this.getPropertyValue(this.model)))\n ) {\n return;\n }\n if (this.upperCase) {\n this.search.nativeElement.value = this.search.nativeElement.value.toUpperCase();\n }\n\n this.previousSearchValue = valueSearch;\n\n this.filteredEntities = this.entities\n .filter(entity => StringUtil.replaceAccents(this.getPropertyValue(entity)).toLowerCase().includes(StringUtil.replaceAccents(valueSearch).toLowerCase()));\n }\n\n haveSelected(): boolean {\n return !ObjectUtil.isNull(this.model);\n }\n\n onSelectionChange(entity: T): void {\n this.selectionChange.emit(entity);\n }\n\n compareFn = (f1: AbstractModel, f2: AbstractModel): boolean => {\n return f1 && f2 && f1.id === f2.id;\n }\n\n resetSearch(): void {\n if (ArrayUtil.isEmpty(this.filteredEntities)) {\n this.search.nativeElement.value = '';\n this.filteredEntities = this.entities;\n }\n }\n\n selectAll(): void {\n this.allSelected = true;\n this.indeterminateAllSelected = false;\n this.toggleAllSelection();\n this._changeDetectorRef.detectChanges();\n }\n\n toggleAllSelection(): void {\n if (!this.disabled) {\n if (this.displayCheckboxAll && this.allSelected && !ObjectUtil.isNull(this.select)) {\n for (let i: number = 0; i < this.select.options.length; i++) {\n const option: MatOption = this.select.options[i];\n if (!ObjectUtil.isNull(option)) {\n option.select();\n }\n }\n } else {\n for (let i: number = 0; i < this.select.options.length; i++) {\n const option: MatOption = this.select.options[i];\n if (!ObjectUtil.isNull(option)) {\n option.deselect();\n }\n }\n }\n\n this.validateIndeterminateAllSelected();\n this._changeDetectorRef.detectChanges();\n }\n }\n\n validateIndeterminateAllSelected(): void {\n if (this.displayCheckboxAll && !ObjectUtil.isNull(this.select)) {\n const lOptions: MatOption[] = this.select.options.filter((item: MatOption) => item.selected);\n this.allSelected = lOptions.length > 0;\n this.indeterminateAllSelected = lOptions.length > 0 && lOptions.length !== this.select.options.length;\n this._changeDetectorRef.detectChanges();\n }\n }\n\n removeOption(): void {\n if (this.multiple) {\n this.allSelected = false;\n this.indeterminateAllSelected = false;\n this.toggleAllSelection();\n } else {\n this.model = null;\n this.onSelectionChange(null);\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n showClearButton(): boolean {\n return (this.showClear) && (!StringUtil.isEmpty(this.getPropertyValue(this.model))) && (!ObjectUtil.isNull(this.model)) && (!this.disabled) && (!this.loading) && (!ArrayUtil.isEmpty(this.entities));\n }\n\n validKey(option: any): boolean {\n return !ObjectUtil.isNull(this.valuesExclud) ? !this.valuesExclud.some(el => el === option) : true;\n }\n}\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\n\n@Component({\n selector: 'itss-select-enum',\n templateUrl: './select-enum.component.html',\n styleUrls: ['./select-enum.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectEnumComponent),\n multi: true\n }\n ]\n})\nexport class SelectEnumComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('select', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() multiple = false;\n\n @Input() enum;\n\n @Output() selectionChange = new EventEmitter<any>();\n\n @Input('value') val: any;\n\n @Input() loading = false;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() nullValue: string;\n\n enumList: any[] = [];\n\n ngOnInit(): void {\n this.enumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n }\n\n onSelectionChange(entity: any) {\n this.selectionChange.emit(entity);\n }\n\n onChange: any = () => {\n }\n\n onTouch: any = () => {\n }\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n validKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesExclud) ? !this.valuesExclud.some(el => el === key) : true;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\n\n@Component({\n selector: 'itss-select-month-period',\n templateUrl: './select-month-period.component.html',\n styleUrls: ['./select-month-period.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectMonthPeriodComponent),\n multi: true\n }\n ],\n host: { 'class': 'itss-element' }\n})\nexport class SelectMonthPeriodComponent implements OnInit {\n\n periodSelected: Date;\n\n @ViewChild('datePeriodDropdown', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() bootPeriod: Date = new Date();\n\n @Output() dateChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n constructor(private _config: GIPINgConfig) { }\n\n ngOnInit(): void {\n this.periodSelected = new Date(this.bootPeriod);\n }\n\n onClickButtonLeft(): void {\n setTimeout(() => {\n this.periodSelected.setMonth(this.periodSelected.getMonth() - 1);\n this.dateChangeEmit();\n });\n }\n\n onClickButtonRight(): void {\n setTimeout(() => {\n this.periodSelected.setMonth(this.periodSelected.getMonth() + 1);\n this.dateChangeEmit();\n });\n }\n\n dateChangeEmit(): void {\n this.dateChange.emit(this.periodSelected);\n }\n\n getMonthNameByDate(): string {\n return this._config.getTranslation('monthNames')[this.periodSelected.getMonth()];\n }\n\n getFullYearByDate(): string {\n return this.periodSelected.getFullYear().toString();\n }\n\n}\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true\n }\n ]\n})\nexport class SlideToggleComponent implements ControlValueAccessor, OnInit {\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() color = 'primary';\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input('value') val: any;\n\n @Output() change = new EventEmitter<any>();\n\n ngOnInit(): void {\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n get value() {\n return this.val;\n }\n\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CdkStepper } from '@angular/cdk/stepper';\n\n@Component({\n selector: 'itss-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [{\n provide: CdkStepper,\n useExisting: StepperComponent\n }]\n})\nexport class StepperComponent extends CdkStepper implements OnInit {\n\n @Input() isDisableClick = false;\n\n ngOnInit(): void {\n }\n\n onClick(index: number): void {\n this.selectedIndex = index;\n }\n\n}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\n\n@Component({\n selector: 'itss-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss']\n})\nexport class TabComponent implements OnInit {\n\n @Input() index: number;\n\n @Input() label: string;\n\n @Input() active = false;\n\n @Input() template: TemplateRef<any>;\n\n @Input() closeable = false;\n\n @Input() disabled = false;\n\n @Input() data: any;\n\n @Input() icon: string;\n\n @Output() selectionChange = new EventEmitter<any>();\n\n action: (obj: any) => void;\n\n ngOnInit(): void {\n }\n\n}\n","import {Directive, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[dynamicTab]'\n})\nexport class DynamicTabDirective {\n\n constructor(public viewContainer: ViewContainerRef) {\n }\n\n}\n","import {EventEmitter, TemplateRef} from '@angular/core';\nimport {AbstractDTO} from './abstract.dto';\nimport {AbstractModel} from '../abstract.model';\n\nexport class TabDTO extends AbstractDTO {\n\n label: string;\n\n active = false;\n\n template: TemplateRef<any>;\n\n closeable = false;\n\n disabled = false;\n\n data: any;\n\n icon: string;\n\n action: (obj: any) => void;\n\n}\n","import {AfterContentInit, Component, ComponentFactoryResolver, ContentChildren, OnInit, QueryList, ViewChild} from '@angular/core';\nimport {TabComponent} from '../tab/tab.component';\nimport {DynamicTabDirective} from '../../directives/dynamic-tab.directive';\nimport {TabDTO} from '../../../core/models/dto/tab.dto';\n\n@Component({\n selector: 'itss-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.scss']\n})\nexport class TabGroupComponent implements AfterContentInit, OnInit {\n\n dynamicTabs: TabComponent[] = [];\n\n @ContentChildren(TabComponent) tabs: QueryList<TabComponent>;\n\n @ViewChild(DynamicTabDirective, {static: false}) dynamicTabPlaceholder: DynamicTabDirective;\n\n constructor(private _componentFactoryResolver: ComponentFactoryResolver) {\n }\n\n ngOnInit(): void {\n }\n\n ngAfterContentInit() {\n const activeTabs = this.tabs.filter(tab => tab.active);\n\n if (activeTabs.length === 0 && this.tabs.length > 0) {\n this.selectTab(this.tabs.first);\n }\n }\n\n openTab(label: string, template, data, closeable = false, disabled = false, action?: (obj: any) => void): void {\n const tab = new TabDTO();\n tab.label = label;\n tab.template = template;\n tab.data = data;\n tab.closeable = closeable;\n tab.disabled = disabled;\n tab.action = action;\n this.openTabs(Array(tab));\n }\n\n openTabs(tabs: TabDTO[]): void {\n const tabsComponent = tabs.map(tab => this.getTabComponent(tab.label, tab.template, tab.data, tab.closeable, tab.disabled, tab.action));\n this.dynamicTabs.push(...tabsComponent);\n this.selectTab(this.dynamicTabs[0]);\n }\n\n getTabComponent(label: string, template, data, closeable = false, disabled = false, action?: (obj: any) => void): TabComponent {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(TabComponent);\n const componentRef = this.dynamicTabPlaceholder.viewContainer.createComponent(componentFactory);\n\n const instance = componentRef.instance;\n instance.label = label;\n instance.template = template;\n instance.data = data;\n instance.closeable = closeable;\n instance.disabled = disabled;\n instance.action = action;\n\n return componentRef.instance;\n }\n\n selectTab(tab: TabComponent) {\n this.tabs.toArray().forEach(t => (t.active = false));\n this.dynamicTabs.forEach(t => (t.active = false));\n tab.active = true;\n tab.selectionChange.emit();\n if (tab.action) {\n tab.action(tab.data);\n }\n }\n\n closeTab(tab: TabComponent) {\n const index = this.dynamicTabs.indexOf(tab);\n this.dynamicTabs.splice(index, 1);\n\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\n viewContainerRef.remove(index);\n\n if (this.tabs.length > 0) {\n this.selectTab(this.tabs.first);\n }\n }\n\n closeActiveTab() {\n const activeTabs = this.dynamicTabs.filter(tab => tab.active);\n if (activeTabs.length > 0) {\n this.closeTab(activeTabs[0]);\n }\n }\n\n closeAllTabs() {\n const tabs = Object.assign([], this.dynamicTabs);\n if (tabs.length > 0) {\n tabs.forEach(tab => this.closeTab(tab));\n }\n }\n\n nextTab() {\n const currentTab = this.tabs.toArray().find(tab => tab.active);\n const nextTab = this.tabs.toArray()[this.tabs.toArray().indexOf(currentTab) + 1];\n if (nextTab != null) {\n this.tabs.toArray().forEach(t => (t.active = false));\n this.dynamicTabs.forEach(t => (t.active = false));\n nextTab.active = true;\n nextTab.selectionChange.emit();\n }\n }\n\n previousTab() {\n const currentTab = this.tabs.toArray().find(tab => tab.active);\n const previousTab = this.tabs.toArray()[this.tabs.toArray().indexOf(currentTab) - 1];\n if (previousTab != null) {\n this.tabs.toArray().forEach(t => (t.active = false));\n this.dynamicTabs.forEach(t => (t.active = false));\n previousTab.active = true;\n previousTab.selectionChange.emit();\n }\n }\n\n}\n\n","/**\n * Throttle a function\n */\nexport function throttle(func: any, wait: number, options?: any): (this: any) => any {\n options = options || {};\n let context: any;\n let args: any;\n let result: any;\n let timeout: any = null;\n let previous: number = 0;\n\n function later(): void {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n\n return function (this: any): any {\n const now: number = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining: number = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport function throttleable(duration: number, options?: any): (target: any, key: PropertyKey, descriptor: PropertyDescriptor) => { configurable: boolean; enumerable: boolean; get: () => any; } {\n return function innerDecorator(target: any, key: PropertyKey, descriptor: PropertyDescriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter(): any {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n\n return this[key];\n }\n };\n };\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\nimport { throttle } from '../../api/throttle';\n\nenum ScrollDirection {\n UP = 'up',\n DOWN = 'down'\n}\n\nenum ScrollListener {\n HOST = 'scroll',\n WINDOW = 'window:scroll'\n}\n\n@Component({\n selector: 'itss-table-scrolled',\n templateUrl: './table-scrolled.component.html',\n styleUrls: ['./table-scrolled.component.scss']\n})\nexport class TableScrolledComponent implements OnInit, OnChanges {\n\n private _element: Element;\n\n private _window: Element;\n\n public scrollTop: number = 0;\n\n @Input() more: boolean = true;\n\n @Input() scrollDelay: number = 500;\n\n @Input() scrollOffset: number = 1000;\n\n @Output() scrolled: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener(ScrollListener.HOST) _scroll: Function;\n\n @HostListener(ScrollListener.WINDOW) _windowScroll: Function;\n\n constructor(private _elementRef: ElementRef) {\n this._element = this._elementRef.nativeElement;\n this._window = document.documentElement as Element;\n }\n\n ngOnInit(): void {\n this.setThrottle();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.scrollDelay) {\n this.setThrottle();\n }\n }\n\n setThrottle(): void {\n this._scroll = this._windowScroll = throttle(this.handleScroll, this.scrollDelay);\n }\n\n getListener(): ScrollListener {\n if (this._elementRef.nativeElement.clientHeight === this._elementRef.nativeElement.scrollHeight) {\n return ScrollListener.WINDOW;\n } else {\n return ScrollListener.HOST;\n }\n }\n\n roundTo(from: number, to: number = this.scrollOffset): number {\n return (Math.floor(from / to) * to);\n }\n\n getScrollDirection(st: number): ScrollDirection {\n if (this.scrollTop <= st) {\n return ScrollDirection.DOWN;\n } else {\n return ScrollDirection.UP;\n }\n }\n\n canScroll(element: Element): boolean {\n const scrolled: boolean = this.more && (this.getScrollDirection(element.scrollTop) === ScrollDirection.DOWN) && (this.roundTo(element.clientHeight) === this.roundTo(element.scrollHeight - element.scrollTop));\n this.scrollTop = element.scrollTop;\n return scrolled;\n }\n\n handleScroll(): void {\n if (this.getListener() === ScrollListener.HOST) {\n this.scrolled.emit(this.canScroll(this._element));\n } else {\n this.scrolled.emit(this.canScroll(this._window));\n }\n }\n\n}\n","import { AbstractDTO } from './abstract.dto';\n\nexport class TableGroupHeaderDTO extends AbstractDTO {\n\n columnData: any;\n\n childrenGroup: any[];\n\n totalCount: number;\n\n constructor(columnData?: any, childrenGroup?: any[], totalCount?: number) {\n super();\n this.columnData = columnData;\n this.childrenGroup = childrenGroup;\n this.totalCount = totalCount;\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, Component, ContentChild, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { MatHeaderRowDef, MatPaginator, MatSort, MatTableDataSource, Sort, SortDirection } from '@angular/material';\nimport { Observable, of } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n\nimport { ArrayUtil, ObjectUtil, StringUtil } from '../../../core';\nimport { TableColumnDTO } from '../../../core/models/dto/table-column.dto';\nimport { TableGroupHeaderDTO } from '../../../core/models/dto/table-group-header.dto';\nimport { TablePageEventDTO } from '../../../core/models/dto/table-page-event.dto';\n\n\n@Component({\n selector: 'itss-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n})\nexport class TableComponent<T> implements AfterViewInit, OnChanges, OnInit {\n\n private _expandedElements: any[] = [];\n\n public _scrollHeightCalc: number = 410;\n public _isPopoverHover: any = null;\n public _contextPopover: T;\n public _expandedElement: any;\n public _displayedColumns: any[] = [];\n public _dataSource: MatTableDataSource<T | TableGroupHeaderDTO>;\n\n @ViewChild(MatSort, { static: true }) matSort: MatSort;\n @ViewChild(MatPaginator, { static: true }) matPaginator: MatPaginator;\n @ViewChild('frontendPaginator', { static: false }) matFrontendPaginator: MatPaginator;\n @ViewChild('backendPaginator', { static: false }) matBackendPaginator: MatPaginator;\n\n @ViewChild('matHeaderRow', { static: true }) private _matHeaderRowRef: TemplateRef<MatHeaderRowDef>;\n @ViewChild('frontendPaginator', { static: true }) private _matFrontendPaginatorRowRef: TemplateRef<any>;\n @ViewChild('backendPaginator', { static: true }) private _matBackendPaginatorRowRef: TemplateRef<any>;\n\n @ContentChild('actions', { static: false }) actionsRef: TemplateRef<any>;\n @ContentChild('actionsPopover', { static: false }) actionsPopoverRef: TemplateRef<any>;\n @ContentChild('footer', { static: false }) footerRef: TemplateRef<any>;\n @ContentChild('expanded', { static: false }) expandedRef: TemplateRef<any>;\n @ContentChild('groupHeader', { static: false }) groupHeaderRef: TemplateRef<any>;\n @ContentChild('groupFooter', { static: false }) groupFooterRef: TemplateRef<any>;\n\n @Input() shadow: boolean = false;\n\n @Input() columns: TableColumnDTO[] = [];\n\n private _dataValue: T[];\n @Input() get data(): T[] {\n return this._dataValue;\n }\n set data(data: T[]) {\n this._dataValue = data;\n this.dataChange.emit(this._dataValue);\n }\n\n @Input() paginator: boolean = false;\n\n @Input() backendPagination: boolean = true;\n\n @Input() paginatorPageIndex: number = 0;\n\n @Input() paginatorLength: number = 0;\n\n @Input() paginatorPageSize: number = 10;\n\n @Input() paginatorPageSizeOptions: number[] = [10, 20, 30];\n\n @Input() showPageSizeOptions: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() expandable: boolean = false;\n\n @Input() showHeader: boolean = true;\n\n @Input() columnInitial: number;\n\n @Input() columnFinal: number;\n\n @Input() headerSticky: boolean = false;\n\n @Input() groupByColumn: string;\n\n @Input() groupHeaderSticky: boolean = false;\n\n @Input() groupStartExpanded: boolean = false;\n\n @Input() highlightRowFn: (row: T | TableGroupHeaderDTO) => boolean;\n\n @Input() infiniteScroll: boolean = false;\n\n @Input() scrollDelay: number = 1000;\n\n @Input() scrollOffset: number = 1000;\n\n @Input() scrollHeigth: number;\n\n @Input() isFiltering: boolean = false;\n\n @Input('columnExpandableFixed') showColumnExpandableFixed: boolean = false;\n\n @Input() expandableOneRow: boolean = false;\n\n @Input() ignoreChildrenExpandRow: boolean = false;\n\n @Input() clearSort: boolean = false;\n @Input() sortActive: string = '';\n @Input() sortDirection: SortDirection = 'asc';\n\n @Output() rowExpandedChange: EventEmitter<T> = new EventEmitter<T>(true);\n @Output() dataChange: EventEmitter<T[]> = new EventEmitter<T[]>(true);\n @Output() page: EventEmitter<TablePageEventDTO> = new EventEmitter();\n @Output() rowHover: EventEmitter<any> = new EventEmitter();\n\n public get matTableHeigth(): Observable<string> {\n let headerRowHeight: number;\n if (!ObjectUtil.isNull(this._matHeaderRowRef)) {\n headerRowHeight = (this._matHeaderRowRef.elementRef.nativeElement as HTMLElement).clientHeight;\n }\n\n let paginatorRowHeight: number;\n const paginatorRef = this.backendPagination ? this._matBackendPaginatorRowRef : this._matFrontendPaginatorRowRef;\n if (!ObjectUtil.isNull(paginatorRef)) {\n paginatorRowHeight = (paginatorRef.elementRef.nativeElement as HTMLElement).clientHeight;\n }\n\n const matHeaderwHeight: number = headerRowHeight || 60;\n const matPaginatorHeight: number = paginatorRowHeight || 57;\n\n const pageSize: number = this.paginatorPageSize && (this.paginatorPageSize <= 10) ? this.paginatorPageSize : 10;\n const setHeigth: boolean = this.headerSticky && (this.data.length > pageSize);\n\n return of(setHeigth ? `${((57 * pageSize) + matHeaderwHeight + matPaginatorHeight)}px` : 'auto');\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (!ObjectUtil.isNull(this._dataSource)) {\n this._dataSource.sort = this.matSort;\n\n if (this.paginator && !this.backendPagination && !this.infiniteScroll) {\n this._dataSource.paginator = this.matFrontendPaginator;\n }\n }\n\n if (this.paginator && (this.backendPagination || this.infiniteScroll)) {\n this.onPage({\n pageSize: this.paginatorPageSize,\n paginatorPageSizeOptions: this.paginatorPageSizeOptions,\n pageIndex: 0,\n length: 0,\n previousPageIndex: 0\n });\n }\n\n if (!ObjectUtil.isNull(this.actionsPopoverRef)) {\n this._contextPopover = null;\n this._isPopoverHover = false;\n this.closePopover(0);\n\n const popover: HTMLElement = document.getElementById('table-popover');\n if (!ObjectUtil.isNull(popover)) {\n popover.style.visibility = 'hidden';\n }\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (changes.data) {\n this._createDataSource();\n }\n });\n }\n\n private _createDataSource(): void {\n let columns: string[] = this.columns.filter(c => c.visible).map(c => c.property);\n if (!ObjectUtil.isNull(this.expandedRef)) {\n columns = ['expandedColumn', ...columns];\n }\n if (!ObjectUtil.isNull(this.actionsRef)) {\n columns = [...columns, 'actionsColumn'];\n }\n this._displayedColumns = columns;\n\n if (this.infiniteScroll) {\n let dataAll: T[] = [];\n\n if (!this.isFiltering) {\n if (!ObjectUtil.isNull(this._dataSource)) {\n dataAll = ArrayUtil.clone(this._dataSource.data);\n }\n }\n\n if (!ArrayUtil.isEmpty(this.data)) {\n dataAll.push(...this.data);\n }\n\n this._dataSource = new MatTableDataSource([]);\n if (!StringUtil.isEmpty(this.groupByColumn) && !ObjectUtil.isNull(this.groupHeaderRef)) {\n this._dataSource.data = this.genereteGroupsByColumn(dataAll);\n } else {\n this._dataSource.data = dataAll;\n }\n\n this.data = dataAll;\n this.dataChange.emit(this.data);\n this.calcScrollHeight();\n } else {\n this._dataSource = new MatTableDataSource([]);\n if (!StringUtil.isEmpty(this.groupByColumn) && !ObjectUtil.isNull(this.groupHeaderRef)) {\n this._dataSource.data = this.genereteGroupsByColumn(this.data);\n } else {\n this._dataSource.data = this.data;\n }\n }\n\n if (!ArrayUtil.isEmpty(this._dataSource.data)) {\n this._dataSource.sort = this.matSort;\n this.setSortingDataAccessor();\n }\n\n if (this.paginator && !this.backendPagination) {\n this._dataSource.paginator = this.matFrontendPaginator;\n }\n\n if (!this.groupStartExpanded && (this.groupHeaderRef || (this.expandable && this.expandedRef)) && !ArrayUtil.isEmpty(this._dataSource.data)) {\n this._dataSource.data.forEach(row => this.addCollapse(row));\n }\n }\n\n calcScrollHeight(): void {\n if ((this._dataSource && (this._dataSource.data.length > 0)) && (Math.floor(this._scrollHeightCalc) <= 700)) {\n this._scrollHeightCalc = 130 + (this._dataSource.data.length * 48);\n }\n }\n\n onPage(pageEvent: TablePageEventDTO): void {\n this.paginatorPageSize = pageEvent.pageSize;\n pageEvent.paginatorPageSizeOptions = ArrayUtil.isEmpty(pageEvent.paginatorPageSizeOptions) ? this.paginatorPageSizeOptions : pageEvent.paginatorPageSizeOptions;\n this.page.emit(pageEvent);\n }\n\n isExpansed(element: any): boolean {\n return this._expandedElements.filter(e => ObjectUtil.equals(e, element)).length > 0;\n }\n\n removeCollapse(element: any): void {\n if (this.expandableOneRow) {\n this._dataSource.data.forEach(row => this.addCollapse(row));\n }\n\n const expandedElementsAux: any[] = ArrayUtil.clone(this._expandedElements);\n expandedElementsAux.splice(this._expandedElements.indexOf(element), 1);\n this._expandedElements = ArrayUtil.clone(expandedElementsAux);\n }\n\n addCollapse(element: any): void {\n const collapsedElement: boolean = this._expandedElements.filter(e => ObjectUtil.equals(e, element)).length > 0;\n if (!collapsedElement) {\n this._expandedElements.push(element);\n }\n }\n\n rowExpandedChangeEmit(element: any): void {\n this.rowExpandedChange.emit(element);\n }\n\n sortData(sort: Sort): void {\n if (this.infiniteScroll) {\n this.data = [];\n this.dataChange.emit([]);\n this._dataSource = new MatTableDataSource([]);\n this.calcScrollHeight();\n }\n\n this.onPage({\n pageSize: this.paginatorPageSize,\n pageIndex: 0,\n length: 0,\n previousPageIndex: 0,\n paginatorPageSizeOptions: this.paginatorPageSizeOptions,\n sort: sort\n });\n }\n\n showPopover(event: MouseEvent, data: any): void {\n const popover: HTMLElement = document.getElementById('table-popover');\n if (!ObjectUtil.isNull(popover)) {\n popover.style.visibility = 'hidden';\n\n if (!this.loading) {\n const domRectPopover = popover.getBoundingClientRect();\n const domRectRow = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const cells = (event.currentTarget as HTMLTableRowElement).children;\n\n if (domRectPopover && domRectRow) {\n popover.style.visibility = 'visible';\n popover.style.top = `${(domRectRow.top + domRectRow.height) - 1}px`;\n\n let startPosition: number = 0;\n let endPosition: number = 0;\n\n if (this.columnInitial && (this.columnInitial >= 0)) {\n if (!cells[this.columnInitial]) {\n throw new Error('Initial column undefined or null');\n }\n startPosition = cells[this.columnInitial].getBoundingClientRect().left;\n } else {\n startPosition = domRectRow.left;\n }\n\n if (this.columnFinal && (this.columnFinal >= 0)) {\n if (!cells[this.columnFinal]) {\n throw new Error('Final column undefined or null');\n }\n endPosition = cells[this.columnFinal].getBoundingClientRect().left - domRectPopover.width;\n } else {\n endPosition = domRectRow.right - domRectPopover.width;\n }\n\n setTimeout(() => {\n if (event.clientX > startPosition + 15 && event.clientX < endPosition) {\n popover.style.left = `${event.clientX - 15}px`;\n } else if (event.clientX <= startPosition) {\n popover.style.left = `${startPosition}px`;\n } else if (event.clientX >= endPosition) {\n popover.style.left = `${endPosition}px`;\n }\n });\n }\n }\n }\n this.rowHover.emit(data);\n this._contextPopover = data;\n }\n\n closePopover(time: number): void {\n of(null).pipe(delay(time)).subscribe(() => {\n if (!ObjectUtil.isNull(this._isPopoverHover) && !this._isPopoverHover) {\n if (!ObjectUtil.isNull(this._isPopoverHover) && !ObjectUtil.isNull(this.actionsPopoverRef)) {\n const popover: HTMLElement = document.getElementById('table-popover');\n if (!ObjectUtil.isNull(popover)) {\n popover.style.visibility = 'hidden';\n }\n }\n this._contextPopover = null;\n this._isPopoverHover = null;\n }\n });\n }\n\n setSortingDataAccessor(): void {\n this._dataSource.sortingDataAccessor = (data: any, sortHeaderId: string): string => {\n if (typeof data[sortHeaderId] === 'string') {\n return data[sortHeaderId].toLowerCase();\n }\n return data[sortHeaderId];\n };\n }\n\n // group header\n genereteGroupsByColumn(data: any[]): TableGroupHeaderDTO[] {\n const groups: {} = data.reduce((group, row) => {\n const dataColumn: string = row[this.groupByColumn].toString();\n if (!group[dataColumn]) {\n group[dataColumn] = [];\n }\n group[dataColumn].push(row);\n return group;\n }, {});\n\n return Object.keys(groups).map(groupValue => {\n return new TableGroupHeaderDTO(groupValue, groups[groupValue], groups[groupValue].length);\n });\n }\n\n getHighlightRow(row: T | TableGroupHeaderDTO): boolean {\n if (!ObjectUtil.isNull(row)) {\n if (!ObjectUtil.isNull(this.highlightRowFn)) {\n return this.highlightRowFn(row);\n }\n return false;\n }\n return false;\n }\n\n getIndexRow(row: T | TableGroupHeaderDTO): number {\n if (!ObjectUtil.isNull(this._dataSource) && !ArrayUtil.isEmpty(this._dataSource.data) && !ObjectUtil.isNull(row)) {\n return this._dataSource.data.findIndex(r => r === row);\n }\n }\n\n // infinite scroll\n hasMore(): boolean {\n return !this._dataSource || (this._dataSource.data.length < this.paginatorLength);\n }\n\n handleScroll(scrolled: boolean): void {\n if (scrolled && this.hasMore()) {\n this.onPage({\n pageSize: this.paginatorPageSize,\n pageIndex: this.paginatorPageIndex,\n length: this.paginatorLength,\n previousPageIndex: this.paginatorPageIndex,\n });\n\n this.paginatorPageIndex += 1;\n }\n }\n\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'itss-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ]\n})\nexport class TextareaComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('input', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() name: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n @Input() maxlength = 250;\n\n @Input() rows = 2;\n\n @Input() appearance = 'outline';\n\n @Input('value') val: any;\n get value() {\n return this.val;\n }\n set value(val) {\n this.val = this.checkUppercase(val);\n this.onChange(this.val);\n this.onTouch();\n }\n\n @Input() upperCase = false;\n\n @Input() mentionConfiguration = {};\n\n private _minHeight: string = '60px';\n @Input() get minHeight(): string {\n return this._minHeight;\n }\n set minHeight(value: string) {\n if (value.trim().toUpperCase() === 'AUTO') {\n this._minHeight = 'auto';\n } else {\n this._minHeight = coerceCssPixelValue(value);\n }\n }\n\n private _height: string = '60px';\n @Input() get height(): string {\n return this._height;\n }\n set height(value: string) {\n if (value.trim().toUpperCase() === 'AUTO') {\n this._height = 'auto';\n } else {\n this._height = coerceCssPixelValue(value);\n }\n }\n\n private _maxHeight: string = 'auto';\n @Input() get maxHeight(): string {\n return this._maxHeight;\n }\n set maxHeight(value: string) {\n if (value.trim().toUpperCase() === 'AUTO') {\n this._maxHeight = 'auto';\n } else {\n this._maxHeight = coerceCssPixelValue(value);\n }\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = this.checkUppercase(value);\n }\n\n checkUppercase(value: any): any {\n if (this.upperCase && value) {\n return value.toUpperCase();\n }\n return value;\n }\n\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[pTemplate]',\n host: {}\n})\nexport class ItssTemplate {\n\n @Input() type: string;\n\n @Input('pTemplate') name: string;\n\n constructor(public template: TemplateRef<any>) { }\n\n getType(): string {\n return this.name;\n }\n}\n","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\n\n/** A altura dos itens selecionados em unidades `em`. */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n\n/**\n * Esta diretiva foi reescrita utilizando se do projeto a seguir\n * https://github.com/HaidarZ/ng-mat-select-infinite-scroll\n */\n@Directive({\n selector: '[itssInfiniteScroll]'\n})\nexport class InputSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\n\n /**\n * A distância limite da parte inferior da lista de opções para chamar o evento\n * infiniteScroll quando rolado. O valor limite pode ser em porcentagem ou em\n * pixels. Por exemplo, use o valor de 10%para que o infiniteScrollevento de saída\n * seja chamado quando o usuário precisar de 10% para chegar ao fundo.\n */\n @Input() threshold: string = '15%';\n\n /** O tempo limite antes de disparar o evento infiniteScroll */\n @Input() debounceTime: number = 100;\n\n /* Se true, a infiniteScroll não será mais acionada */\n @Input() complete!: boolean;\n\n /** Emitido quando o scroller dentro do mat-select atinge a distância necessária */\n @Output() infiniteScroll: EventEmitter<void> = new EventEmitter<void>();\n\n private _panel!: Element;\n\n private _thrPx: number = 0;\n\n private _thrPc: number = 0;\n\n private _singleOptionHeight: number = SELECT_ITEM_HEIGHT_EM;\n\n private _destroyed$: Subject<boolean> = new Subject<boolean>();\n\n constructor(\n private matSelect: MatSelect,\n private ngZone: NgZone\n ) { }\n\n ngOnInit(): void {\n this.evaluateThreshold();\n }\n\n ngAfterViewInit(): void {\n this.matSelect.openedChange.pipe(\n takeUntil(this._destroyed$)\n ).subscribe((opened: boolean): void => {\n if (opened) {\n this._panel = this.matSelect.panel.nativeElement;\n this._singleOptionHeight = this.getSelectItemHeightPx();\n this.registerScrollListener();\n }\n });\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next(true);\n this._destroyed$.complete();\n }\n\n evaluateThreshold(): void {\n if (this.threshold.lastIndexOf('%') > -1) {\n this._thrPx = 0;\n this._thrPc = (parseFloat(this.threshold) / 100);\n\n } else {\n this._thrPx = parseFloat(this.threshold);\n this._thrPc = 0;\n }\n }\n\n registerScrollListener(): void {\n fromEvent(this._panel, 'scroll').pipe(\n takeUntil(this._destroyed$),\n debounceTime(this.debounceTime),\n tap((event: Event): void => {\n this.handleScrollEvent(event);\n })\n ).subscribe();\n }\n\n handleScrollEvent(event: any): void {\n this.ngZone.runOutsideAngular((): void => {\n if (this.complete) {\n return;\n }\n const countOfRenderedOptions: number = this.matSelect.options.length;\n const infiniteScrollDistance: number = this._singleOptionHeight * countOfRenderedOptions;\n const threshold: number = this._thrPc !== 0 ? (infiniteScrollDistance * this._thrPc) : this._thrPx;\n\n const scrolledDistance: number = this._panel.clientHeight + event.target.scrollTop;\n\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\n this.ngZone.run((): void => this.infiniteScroll.emit());\n }\n });\n }\n\n getSelectItemHeightPx(): number {\n return parseFloat(getComputedStyle(this._panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\n }\n\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[lowerCase]',\n})\nexport class LowerCaseDirective {\n\n @Input() enabledLowerCase = false;\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n ngModelChange(event) {\n this.onInputChange(event);\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event) {\n this.onInputChange(event.target.value);\n }\n\n onInputChange(event) {\n if (this.enabledLowerCase) {\n this.ngControl.valueAccessor.writeValue(event.toLowerCase());\n }\n }\n\n}\n","import {Directive, HostListener} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[phoneMask]',\n})\nexport class PhoneMaskDirective {\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n onModelChange(event) {\n this.onInputChange(event, false);\n }\n\n @HostListener('keydown.backspace', ['$event'])\n keydownBackspace(event) {\n this.onInputChange(event.target.value, true);\n }\n\n\n onInputChange(event, backspace) {\n let newVal = event.replace(/\\D/g, '');\n if (backspace && newVal.length <= 6) {\n newVal = newVal.substring(0, newVal.length - 1);\n }\n if (newVal.length === 0) {\n newVal = '';\n } else if (newVal.length <= 3) {\n newVal = newVal.replace(/^(\\d{0,2})/, '($1)');\n } else if (newVal.length <= 6) {\n newVal = newVal.replace(/^(\\d{0,2})(\\d{0,4})/, '($1) $2');\n } else if (newVal.length <= 10) {\n newVal = newVal.replace(/^(\\d{0,2})(\\d{0,4})(\\d{0,4})/, '($1) $2-$3');\n } else {\n newVal = newVal.substring(0, 11);\n newVal = newVal.replace(/^(\\d{0,2})(\\d{0,5})(\\d{0,4})/, '($1) $2-$3');\n }\n this.ngControl.valueAccessor.writeValue(newVal);\n }\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[spaceDrop]',\n})\nexport class SpaceDropDirective {\n\n @Input() spaceDrop = false;\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n ngModelChange(event) {\n this.onInputChange(event);\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event) {\n this.onInputChange(event.target.value);\n }\n\n onInputChange(event) {\n if (this.spaceDrop) {\n this.ngControl.valueAccessor.writeValue(event.replace(/\\s/g, ''));\n }\n }\n\n}\n","import {Directive, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[upperCase]',\n})\nexport class UpperCaseDirective {\n\n @Input() enabledUpperCase = false;\n\n constructor(public ngControl: NgControl) {\n }\n\n @HostListener('ngModelChange', ['$event'])\n ngModelChange(event) {\n this.onInputChange(event);\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event) {\n this.onInputChange(event.target.value);\n }\n\n onInputChange(event) {\n if (this.enabledUpperCase) {\n this.ngControl.valueAccessor.writeValue(event.toUpperCase());\n }\n }\n\n}\n","import { BreakPoint, BREAKPOINT } from '@angular/flex-layout';\n\nexport const GIPI_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.98px)',\n priority: 1001,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 767.98px)',\n priority: 1001,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 768px) and (max-width: 1365.98px)',\n priority: 1001,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1366px) and (max-width: 1919.98px)',\n priority: 1001,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-xs',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 767.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1365.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1919.98px)',\n priority: 1001,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 1001,\n mediaQuery: 'screen and (max-width: 4999.98px)',\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 600px)',\n priority: 1001,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 768px)',\n priority: 1001,\n }, {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1366px)',\n priority: 1001,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1920px)',\n priority: 1001,\n }\n];\n\nexport const GIPI_CUSTOM_BREAKPOINTS_PROVIDER = {\n provide: BREAKPOINT,\n useValue: GIPI_BREAKPOINTS,\n multi: true\n};\n","import { Directive, HostListener, HostBinding, Output, EventEmitter, Input } from '@angular/core';\n\n@Directive({\n selector: '[fileDragAndDrop]'\n})\nexport class GIPIFileDragAndDropDirective {\n\n @Output() filesChangeEmiter: EventEmitter<File[]> = new EventEmitter();\n\n @Input() disabled: boolean = false;\n\n @HostBinding('style.background') background: string = 'transparent';\n @HostBinding('style.border') borderStyle: string = '2px dashed';\n @HostBinding('style.border-color') borderColor: string = '#595959';\n @HostBinding('style.border-radius') borderRadius: string = '5px';\n\n constructor() { }\n\n @HostListener('dragover', ['$event']) public onDragOver(evt) {\n if (!this.disabled) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'transparent';\n this.borderColor = '#595959';\n this.borderStyle = '2px solid';\n }\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n if (!this.disabled) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#f5f5f6';\n this.borderColor = '#262626';\n this.borderStyle = '2px dashed';\n }\n }\n\n @HostListener('drop', ['$event']) public onDrop(evt) {\n if (!this.disabled) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'transparent';\n this.borderColor = '#595959';\n this.borderStyle = '2px dashed';\n const files = evt.dataTransfer.files;\n const valid_files: Array<File> = files;\n this.filesChangeEmiter.emit(valid_files);\n }\n }\n\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\n\n/** A altura dos itens selecionados em unidades `px`. */\nconst SELECT_ITEM_HEIGHT_PX = 48;\n\n/**\n * Esta diretiva foi reescrita utilizando se do projeto a seguir\n * https://github.com/HaidarZ/ng-mat-select-infinite-scroll\n */\n@Directive({\n selector: '[GIPIInfiniteScroll]',\n})\nexport class GIPIInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\n\n private _panel!: Element;\n\n private _thrPx: number = 0;\n\n private _thrPc: number = 0;\n\n private _destroyed$: Subject<boolean> = new Subject<boolean>();\n\n @Input() infiniteScrollDistance: string = '15%';\n @Input() infiniteScrollThrottle: number = 150;\n @Input() infiniteScrollDisabled: boolean = false;\n @Input() infiniteScrollcomplete!: boolean;\n @Input() infiniteScrollOptionHeight: number = SELECT_ITEM_HEIGHT_PX;\n\n @Output() scrolled: EventEmitter<'up' | 'down'> = new EventEmitter<'up' | 'down'>();\n\n constructor(\n private _cdkVirtualScrollViewport: CdkVirtualScrollViewport,\n private _ngZone: NgZone\n ) { }\n\n ngOnInit(): void {\n this.evaluateThreshold();\n }\n\n ngAfterViewInit(): void {\n if (!this.infiniteScrollDisabled) {\n this._panel = this._cdkVirtualScrollViewport.getElementRef().nativeElement;\n this.registerScrollListener();\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next(true);\n this._destroyed$.complete();\n }\n\n evaluateThreshold(): void {\n if (typeof this.infiniteScrollDistance === 'string' && this.infiniteScrollDistance.lastIndexOf('%') > -1) {\n this._thrPx = 0;\n this._thrPc = (parseFloat(this.infiniteScrollDistance) / 100);\n } else {\n this._thrPx = parseFloat(this.infiniteScrollDistance);\n this._thrPc = 0;\n }\n }\n\n registerScrollListener(): void {\n this._cdkVirtualScrollViewport.elementScrolled\n\n fromEvent(this._panel, 'scroll').pipe(\n takeUntil(this._destroyed$),\n debounceTime(this.infiniteScrollThrottle),\n tap((event: Event): void => this.handleScrollEvent(event))\n ).subscribe();\n }\n\n handleScrollEvent(event: any): void {\n this._ngZone.runOutsideAngular((): void => {\n if (this.infiniteScrollcomplete) {\n return;\n }\n const countOfRenderedOptions: number = this._cdkVirtualScrollViewport.getDataLength();\n const infiniteScrollDistance: number = this.infiniteScrollOptionHeight * countOfRenderedOptions;\n const threshold: number = this._thrPc !== 0 ? (infiniteScrollDistance * this._thrPc) : this._thrPx;\n const scrolledDistance: number = this._panel.clientHeight + event.target.scrollTop;\n\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\n this._ngZone.run((): void => this.scrolled.emit());\n }\n });\n }\n\n}\n","import { Injectable, NgZone, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { auditTime, finalize } from 'rxjs/operators';\n\nconst NOOP: () => void = (): void => { };\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GIPIResizeService implements OnDestroy {\n\n private readonly resizeSource$: Subject<void> = new Subject<void>();\n\n private listeners: number = 0;\n\n private renderer: Renderer2;\n\n private disposeHandle: () => void = NOOP;\n\n private handler: () => void = (): void => {\n this.ngZone.run(() => {\n this.resizeSource$.next();\n });\n }\n\n constructor(\n private ngZone: NgZone,\n private rendererFactory2: RendererFactory2\n ) {\n this.renderer = this.rendererFactory2.createRenderer(null, null);\n }\n\n ngOnDestroy(): void {\n // Caretaker note: the `handler` is an instance property (it's not defined on the class prototype).\n // The `handler` captures `this` and prevents the `GIPIResizeService` from being GC'd.\n this.handler = NOOP;\n }\n\n subscribe(): Observable<void> {\n this.registerListener();\n\n return this.resizeSource$.pipe(\n auditTime(16),\n finalize(() => this.unregisterListener())\n );\n }\n\n unsubscribe(): void {\n this.unregisterListener();\n }\n\n private registerListener(): void {\n if (this.listeners === 0) {\n this.ngZone.runOutsideAngular(() => {\n this.disposeHandle = this.renderer.listen('window', 'resize', this.handler);\n });\n }\n\n this.listeners += 1;\n }\n\n private unregisterListener(): void {\n this.listeners -= 1;\n\n if (this.listeners === 0) {\n this.disposeHandle();\n this.disposeHandle = NOOP;\n }\n }\n}\n\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';\n\nimport { GIPIResizeService } from './resize.service';\n\nexport enum BreakpointEnum {\n xl = 'xl',\n lg = 'lg',\n md = 'md',\n sm = 'sm',\n xs = 'xs'\n}\n\nexport type BreakpointMap = { [key in BreakpointEnum]: string };\nexport type BreakpointBooleanMap = { [key in BreakpointEnum]: boolean };\nexport type GridBreakpointKey = keyof typeof BreakpointEnum;\n\nexport const gridResponsiveMap: BreakpointMap = {\n xs: '(max-width: 419px)',\n sm: '(min-width: 420px)',\n md: '(min-width: 600px)',\n lg: '(min-width: 768px)',\n xl: '(min-width: 1366px)',\n};\n\nexport const siderResponsiveMap: BreakpointMap = {\n xs: '(max-width: 420px)',\n sm: '(max-width: 600px)',\n md: '(max-width: 768px)',\n lg: '(max-width: 1366px)',\n xl: '(max-width: 1920px)',\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GIPIBreakpointService implements OnDestroy {\n\n private destroy$: Subject<void> = new Subject<void>();\n\n constructor(\n private resizeService: GIPIResizeService,\n private mediaMatcher: MediaMatcher\n ) {\n this.resizeService\n .subscribe()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => { });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n subscribe(breakpointMap: BreakpointMap): Observable<BreakpointEnum>;\n subscribe(breakpointMap: BreakpointMap, fullMap: true): Observable<BreakpointBooleanMap>;\n subscribe(breakpointMap: BreakpointMap, fullMap?: true): Observable<BreakpointEnum | BreakpointBooleanMap> {\n if (fullMap) {\n const get = () => this.matchMedia(breakpointMap, true);\n return this.resizeService.subscribe().pipe(\n map(get),\n startWith(get()),\n distinctUntilChanged(\n (x: [BreakpointEnum, BreakpointBooleanMap], y: [BreakpointEnum, BreakpointBooleanMap]) => x[0] === y[0]\n ),\n map(x => x[1])\n );\n } else {\n const get = () => this.matchMedia(breakpointMap);\n return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged());\n }\n }\n\n private matchMedia(breakpointMap: BreakpointMap): BreakpointEnum;\n private matchMedia(breakpointMap: BreakpointMap, fullMap: true): [BreakpointEnum, BreakpointBooleanMap];\n private matchMedia(\n breakpointMap: BreakpointMap,\n fullMap?: true\n ): BreakpointEnum | [BreakpointEnum, BreakpointBooleanMap] {\n let bp: BreakpointEnum = BreakpointEnum.md;\n\n const breakpointBooleanMap: Partial<BreakpointBooleanMap> = {};\n\n Object.keys(breakpointMap).map(breakpoint => {\n const castBP = breakpoint as BreakpointEnum;\n const matched: boolean = this.mediaMatcher.matchMedia(gridResponsiveMap[castBP]).matches;\n\n breakpointBooleanMap[breakpoint as BreakpointEnum] = matched;\n\n if (matched) {\n bp = castBP;\n }\n });\n\n if (fullMap) {\n return [bp, breakpointBooleanMap as BreakpointBooleanMap];\n } else {\n return bp;\n }\n }\n}\n\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport { Platform } from '@angular/cdk/platform';\nimport { AfterViewInit, Directive, ElementRef, Input, NgZone, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { GIPIIndexableObject } from '../../../core/types/ng-class.type';\nimport { GridBreakpointKey, GIPIBreakpointService, gridResponsiveMap } from './services/breakpoint.service';\n\nexport type GIPIJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly';\nexport type GIPIAlign = 'top' | 'middle' | 'bottom';\n\n@Directive({\n selector: '[gipi-row],gipi-row,GIPIRow',\n exportAs: 'gipiRow',\n host: {\n class: 'grid-row',\n '[class.grid-row-top]': `GIPIAlign === 'top'`,\n '[class.grid-row-middle]': `GIPIAlign === 'middle'`,\n '[class.grid-row-bottom]': `GIPIAlign === 'bottom'`,\n '[class.grid-row-start]': `GIPIJustify === 'start'`,\n '[class.grid-row-end]': `GIPIJustify === 'end'`,\n '[class.grid-row-center]': `GIPIJustify === 'center'`,\n '[class.grid-row-space-around]': `GIPIJustify === 'space-around'`,\n '[class.grid-row-space-between]': `GIPIJustify === 'space-between'`,\n '[class.grid-row-space-evenly]': `GIPIJustify === 'space-evenly'`\n }\n})\nexport class GIPIRowDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n private readonly _destroy$: Subject<unknown> = new Subject();\n\n readonly actualGap$: ReplaySubject<[number, number]> = new ReplaySubject<[number | null, number | null]>(1);\n\n @Input() GIPIAlign: GIPIAlign | null = null;\n\n @Input() GIPIJustify: GIPIJustify | null = null;\n\n @Input() GIPIGap: string | number | GIPIIndexableObject | [number, number] | [GIPIIndexableObject, GIPIIndexableObject] | null = null;\n\n constructor(\n public elementRef: ElementRef,\n public renderer: Renderer2,\n public mediaMatcher: MediaMatcher,\n public ngZone: NgZone,\n public platform: Platform,\n private _breakpointService: GIPIBreakpointService,\n ) { }\n\n ngOnInit(): void {\n this._setGapStyle();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.GIPIGap) {\n this._setGapStyle();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.platform.isBrowser) {\n this._breakpointService\n .subscribe(gridResponsiveMap)\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._setGapStyle();\n });\n }\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _setGapStyle(): void {\n let [horizontalGap, verticalGap] = this._getGap();\n if (horizontalGap === null && verticalGap !== null) {\n horizontalGap = 0;\n }\n if (verticalGap === null) {\n verticalGap = 0;\n }\n\n this.actualGap$.next([horizontalGap, verticalGap]);\n\n const nativeElement: ElementRef = this.elementRef.nativeElement;\n if (horizontalGap !== null && verticalGap !== null) {\n this.renderer.setStyle(nativeElement, 'gap', `${verticalGap}px ${horizontalGap}px`);\n }\n }\n\n private _getGap(): [number | null, number | null] {\n const results: [number | null, number | null] = [null, null];\n const gap: string | number | GIPIIndexableObject = this.GIPIGap || 0;\n const normalizedGap: any[] = Array.isArray(gap) ? gap : [gap, null];\n\n normalizedGap.forEach((g, index) => {\n if (typeof g === 'object' && g !== null) {\n results[index] = null;\n\n Object.keys(gridResponsiveMap).map((screen: string) => {\n const bp = screen as GridBreakpointKey;\n if (this.mediaMatcher.matchMedia(gridResponsiveMap[bp]).matches && g[bp]) {\n results[index] = g![bp] as number;\n }\n });\n } else {\n results[index] = Number(g) || null;\n }\n });\n return results;\n }\n\n}\n","import { AfterViewInit, Directive, ElementRef, Host, Input, OnChanges, OnDestroy, OnInit, Optional, Renderer2, SimpleChanges } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { GIPIClassInterface } from '../../../core/types/ng-class.type';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIRowDirective } from './row.directive';\n\nexport interface EmbeddedProperty {\n span?: number;\n pull?: number;\n push?: number;\n offset?: number;\n order?: number;\n}\n\n@Directive({\n selector: '[gipi-col],gipi-col,GIPICol',\n exportAs: 'gipiCol',\n host: {\n 'class': 'grid-col',\n '[style.flex]': 'hostFlexStyle'\n }\n})\nexport class GIPIColDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n private _classMap: { [key: string]: boolean } = {};\n\n private _destroy$: Subject<unknown> = new Subject();\n\n hostFlexStyle: string | null = null;\n\n @Input() GIPIFlex: string | number | null = null;\n\n @Input() GIPISpan: string | number | null = null;\n\n @Input() GIPIOrder: string | number | null = null;\n\n @Input() GIPIOffset: string | number | null = null;\n\n @Input() GIPIPush: string | number | null = null;\n\n @Input() GIPIPull: string | number | null = null;\n\n @Input() GIPIXs: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPISm: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPIMd: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPILg: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPIXl: string | number | EmbeddedProperty | null = null;\n\n @Input() GIPIXXl: string | number | EmbeddedProperty | null = null;\n\n constructor(\n private elementRef: ElementRef,\n @Optional() @Host() public GIPIRowDirective: GIPIRowDirective,\n public renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n this._setHostClassMap();\n this._setHostFlexStyle();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this._setHostClassMap();\n\n const { GIPIFlex } = changes;\n if (GIPIFlex) {\n this._setHostFlexStyle();\n }\n }\n\n ngAfterViewInit(): void { }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _setHostClassMap(): void {\n const hostClassMap = {\n ['grid-col']: true,\n [`grid-col-${this.GIPISpan}`]: ObjectUtil.isNotNil(this.GIPISpan),\n [`grid-col-order-${this.GIPIOrder}`]: ObjectUtil.isNotNil(this.GIPIOrder),\n [`grid-col-offset-${this.GIPIOffset}`]: ObjectUtil.isNotNil(this.GIPIOffset),\n [`grid-col-pull-${this.GIPIPull}`]: ObjectUtil.isNotNil(this.GIPIPull),\n [`grid-col-push-${this.GIPIPush}`]: ObjectUtil.isNotNil(this.GIPIPush),\n ...this._generateClass()\n };\n\n for (const i in this._classMap) {\n if (this._classMap.hasOwnProperty(i)) {\n this.renderer.removeClass(this.elementRef.nativeElement, i);\n }\n }\n\n this._classMap = { ...hostClassMap };\n for (const i in this._classMap) {\n if (this._classMap.hasOwnProperty(i) && this._classMap[i]) {\n this.renderer.addClass(this.elementRef.nativeElement, i);\n }\n }\n }\n\n private _setHostFlexStyle(): void {\n this.hostFlexStyle = this._parseFlex(this.GIPIFlex);\n }\n\n private _parseFlex(flex: number | string | null): string | null {\n if (typeof flex === 'number') {\n return `${flex} ${flex} auto`;\n } else if (typeof flex === 'string') {\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return `0 0 ${flex}`;\n }\n }\n return flex;\n }\n\n private _generateClass(): object {\n const listOfSizeInputName: Array<keyof GIPIColDirective> = ['GIPIXs', 'GIPISm', 'GIPIMd', 'GIPILg', 'GIPIXl', 'GIPIXXl'];\n const listClassMap: GIPIClassInterface = {};\n\n listOfSizeInputName.forEach(name => {\n const sizeName: string = name.replace('GIPI', '').toLowerCase();\n\n if (ObjectUtil.isNotNil(this[name])) {\n if (typeof this[name] === 'number' || typeof this[name] === 'string') {\n listClassMap[`grid-col-${sizeName}-${this[name]}`] = true;\n } else {\n const embedded = this[name] as EmbeddedProperty;\n const prefixArray: Array<keyof EmbeddedProperty> = ['span', 'pull', 'push', 'offset', 'order'];\n\n prefixArray.forEach(prefix => {\n const prefixClass: string = prefix === 'span' ? '-' : `-${prefix}-`;\n listClassMap[`grid-col-${sizeName}${prefixClass}${embedded[prefix]}`] = embedded && ObjectUtil.isNotNil(embedded[prefix]);\n });\n }\n }\n });\n return listClassMap;\n }\n\n}\n","import { EventEmitter } from '@angular/core';\nimport { PaginationInstance } from './pagination-instance';\n\nexport class GIPIPaginationService {\n\n private _instances: { [id: string]: PaginationInstance } = {};\n private _DEFAULT_ID = 'DEFAULT_PAGINATION_ID';\n\n public change: EventEmitter<string> = new EventEmitter<string>();\n\n constructor() { }\n\n public defaultId(): string {\n return this._DEFAULT_ID;\n }\n\n /**\n * Registre uma PaginationInstance com este serviço. Retorna um\n * valor booleano significando se a instância é nova ou atualizada.\n * (true = new or updated, false = unchanged).\n */\n public register(instance: PaginationInstance): boolean {\n if (instance.id == null) {\n instance.id = this._DEFAULT_ID;\n }\n\n if (!this._instances[instance.id]) {\n this._instances[instance.id] = instance;\n return true;\n } else {\n return this.updateInstance(instance);\n }\n }\n\n /**\n * Verifique cada propriedade da instância e atualize as que foram alteradas. Retornar\n * true se alguma alteração foi feita, senão retorna false.\n */\n private updateInstance(instance: PaginationInstance): boolean {\n let changed = false;\n for (let prop in this._instances[instance.id]) {\n if (instance[prop] !== this._instances[instance.id][prop]) {\n this._instances[instance.id][prop] = instance[prop];\n changed = true;\n }\n }\n return changed;\n }\n\n /**\n * Retorna o número da página atual.\n */\n public getCurrentPage(id: string): number {\n if (this._instances[id]) {\n return this._instances[id].currentPage;\n }\n return 1;\n }\n\n /**\n * Define o número da página atual.\n */\n public setCurrentPage(id: string, page: number) {\n if (this._instances[id]) {\n let instance = this._instances[id];\n let maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);\n\n if (page <= maxPage && 1 <= page) {\n this._instances[id].currentPage = page;\n this.change.emit(id);\n }\n }\n }\n\n /**\n * Define o valor de instance.totalItems\n */\n public setTotalItems(id: string, totalItems: number) {\n if (this._instances[id] && 0 <= totalItems) {\n this._instances[id].totalItems = totalItems;\n this.change.emit(id);\n }\n }\n\n /**\n * Define o valor de instance.itemsPerPage\n */\n public setItemsPerPage(id: string, itemsPerPage: number) {\n if (this._instances[id]) {\n this._instances[id].itemsPerPage = itemsPerPage;\n this.change.emit(id);\n }\n }\n\n /**\n * Retorna um clone do objeto de instância de paginação correspondente ao id. Se não tiver\n * id especificado, retorna a instância correspondente ao id padrão.\n */\n public getInstance(id: string = this._DEFAULT_ID): PaginationInstance {\n if (this._instances[id]) {\n return this.clone(this._instances[id]);\n }\n return {} as PaginationInstance;\n }\n\n /**\n * Execute um clone raso de um objeto.\n */\n private clone(obj: any): any {\n var target = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n }\n\n}\n","import { ChangeDetectorRef, Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { PaginationInstance } from './pagination-instance';\nimport { GIPIPaginationService } from './pagination.service';\n\nexport interface Page {\n label: string;\n value: any;\n}\n\n/**\n * Esta diretiva é o que alimenta todos os componentes de controle de paginação, incluindo o padrão.\n * Ele expõe uma API conectada ao GIPIPaginationService para manter o PaginatePipe sincronizado\n * com os controles de paginação.\n */\n@Directive({\n selector: 'pagination-template,[pagination-template]',\n exportAs: 'paginationApi'\n})\nexport class GIPIPaginationControlsDirective {\n\n private changeSub: Subscription;\n\n pages: Page[] = [];\n\n @Input() id: string;\n\n @Input() maxSize: number = 5;\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\n\n constructor(\n private _service: GIPIPaginationService,\n private _changeDetectorRef: ChangeDetectorRef,\n ) {\n this.changeSub = this._service.change.subscribe(id => {\n if (this.id === id) {\n this.updatePageLinks();\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n\n ngOnInit() {\n if (this.id === undefined) {\n this.id = this._service.defaultId();\n }\n\n this.updatePageLinks();\n }\n\n ngOnChanges(changes: any) {\n this.updatePageLinks();\n }\n\n ngOnDestroy() {\n this.changeSub.unsubscribe();\n }\n\n /**\n * Ir para a página anterior\n */\n previous() {\n this.checkValidId();\n this.setCurrent(this.getCurrent() - 1);\n }\n\n /**\n * Vá para a página seguinte\n */\n next() {\n this.checkValidId();\n this.setCurrent(this.getCurrent() + 1);\n }\n\n /**\n * Retorna true se a página atual for a primeira página\n */\n isFirstPage(): boolean {\n return this.getCurrent() === 1;\n }\n\n /**\n * Retorna true se a página atual for a última página\n */\n isLastPage(): boolean {\n return this.getLastPage() === this.getCurrent();\n }\n\n /**\n * Defina o número da página atual\n */\n setCurrent(page: number) {\n this.pageChange.emit(page);\n }\n\n /**\n * Obtenha o número da página atual\n */\n getCurrent(): number {\n return this._service.getCurrentPage(this.id);\n }\n\n /**\n * Retorna o número da última página\n */\n getLastPage(): number {\n let inst = this._service.getInstance(this.id);\n if (inst.totalItems < 1) {\n // quando há 0 ou menos itens (um caso de erro), não há \"páginas\" como tal,\n // mas faz sentido considerar uma única página vazia como a última página.\n return 1;\n }\n return Math.ceil(inst.totalItems / inst.itemsPerPage);\n }\n\n /**\n * Retorna a quantidade total de páginas\n */\n getTotalItems(): number {\n return this._service.getInstance(this.id).totalItems;\n }\n\n /**\n * Verifica se o id da PaginationInstance é válido\n */\n private checkValidId() {\n if (this._service.getInstance(this.id).id == null) {\n console.warn(`PaginationControlsDirective: O id especificado \"${this.id}\" não corresponde a nenhuma PaginationInstance registrada`);\n }\n }\n\n /**\n * Atualiza os links da página e verifica se a página atual é válida. Deve ser executado sempre que o\n * PaginationService.change stream emite um valor correspondente ao ID atual ou quando qualquer um das\n * mudanças nos valores de entrada.\n */\n private updatePageLinks() {\n let inst = this._service.getInstance(this.id);\n const correctedCurrentPage = this.outOfBoundCorrection(inst);\n\n if (correctedCurrentPage !== inst.currentPage) {\n setTimeout(() => {\n this.pageBoundsCorrection.emit(correctedCurrentPage);\n this.pages = this.createPageArray(inst.currentPage, inst.itemsPerPage, inst.totalItems, this.maxSize);\n });\n } else {\n this.pages = this.createPageArray(inst.currentPage, inst.itemsPerPage, inst.totalItems, this.maxSize);\n }\n }\n\n /**\n * Verifica se a propriedade instance.currentPage está dentro dos limites do intervalo de páginas atual.\n * Caso contrário, retorne um valor correto para currentPage ou o valor atual se OK.\n */\n private outOfBoundCorrection(instance: PaginationInstance): number {\n const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);\n if (totalPages < instance.currentPage && 0 < totalPages) {\n return totalPages;\n } else if (instance.currentPage < 1) {\n return 1;\n }\n\n return instance.currentPage;\n }\n\n /**\n * Retorna uma matriz de objetos Page para usar nos controles de paginação.\n */\n private createPageArray(currentPage: number, itemsPerPage: number, totalItems: number, paginationRange: number): Page[] {\n // paginationRange pode ser uma string se for passada de atributo, então converta para number.\n paginationRange = +paginationRange;\n let pages = [];\n\n // Retorne 1 como número de página padrão\n // Faz sentido mostrar 1 em vez de vazio quando não há itens\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\n const halfWay = Math.ceil(paginationRange / 2);\n\n const isStart = currentPage <= halfWay;\n const isEnd = totalPages - halfWay < currentPage;\n const isMiddle = !isStart && !isEnd;\n\n let ellipsesNeeded = paginationRange < totalPages;\n let i = 1;\n\n while (i <= totalPages && i <= paginationRange) {\n let label: string;\n let pageNumber = this.calculatePageNumber(i, currentPage, paginationRange, totalPages);\n let openingEllipsesNeeded = (i === 2 && (isMiddle || isEnd));\n let closingEllipsesNeeded = (i === paginationRange - 1 && (isMiddle || isStart));\n if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\n label = '...';\n } else {\n label = String(pageNumber);\n }\n pages.push({\n label: label,\n value: pageNumber\n });\n i++;\n }\n return pages;\n }\n\n /**\n * Dada a posição na sequência de links de paginação [i],\n * descubra qual número de página corresponde a essa posição.\n */\n private calculatePageNumber(i: number, currentPage: number, paginationRange: number, totalPages: number) {\n let halfWay = Math.ceil(paginationRange / 2);\n if (i === paginationRange) {\n return totalPages;\n } else if (i === 1) {\n return i;\n } else if (paginationRange < totalPages) {\n if (totalPages - halfWay < currentPage) {\n return totalPages - paginationRange + i;\n } else if (halfWay < currentPage) {\n return currentPage - halfWay + i;\n } else {\n return i;\n }\n } else {\n return i;\n }\n }\n\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[GIPItemplate]',\n exportAs: 'GIPITemplate',\n host: {\n 'class': 'gipi-template',\n }\n})\nexport class GIPITemplateDirective {\n\n @Input() type: string;\n\n @Input('gipi-template') name: string;\n\n constructor(public template: TemplateRef<any>) { }\n\n getType(): string {\n return this.name;\n }\n\n}\n","import { Pipe } from \"@angular/core\";\nimport { PaginationInstance } from './pagination-instance';\nimport { GIPIPaginationService } from \"./pagination.service\";\n\nconst LARGE_NUMBER = Number.MAX_SAFE_INTEGER;\n\nexport type Collection<T> = T[] | ReadonlyArray<T>;\n\nexport interface PaginatePipeArgs {\n id?: string;\n itemsPerPage?: string | number;\n currentPage?: string | number;\n totalItems?: string | number;\n}\n\nexport interface PipeState {\n collection: ArrayLike<any>;\n size: number;\n start: number;\n end: number;\n slice: ArrayLike<any>;\n}\n\n@Pipe({\n name: 'paginate',\n pure: false\n})\nexport class GIPIPaginatePipe {\n\n // Armazenar os valores da última vez que o pipe foi invocado\n private _state: { [id: string]: PipeState } = {};\n\n constructor(private _service: GIPIPaginationService) { }\n\n public transform<T, U extends Collection<T>>(collection: U, args: PaginatePipeArgs): U {\n\n // Quando um observável é passado pelo AsyncPipe, ele produzirá\n // `null` até que a assinatura seja resolvida. Neste caso, queremos\n // usar os dados em cache do objeto `_state` para evitar que o NgFor\n // pisque vazio até que os valores reais cheguem.\n if (!(collection instanceof Array)) {\n let _id = args.id || this._service.defaultId();\n if (this._state[_id]) {\n return this._state[_id].slice as U;\n } else {\n return collection;\n }\n }\n\n let serverSideMode: boolean = args.totalItems && args.totalItems !== collection.length;\n let instance: PaginationInstance = this.createInstance(collection, args);\n let id: string = instance.id;\n let start: number;\n let end: number;\n let perPage: number = instance.itemsPerPage;\n\n let emitChange: boolean = this._service.register(instance);\n\n if (!serverSideMode && collection instanceof Array) {\n perPage = +perPage || LARGE_NUMBER;\n start = (instance.currentPage - 1) * perPage;\n end = start + perPage;\n\n let isIdentical = this.stateIsIdentical(id, collection, start, end);\n if (isIdentical) {\n return this._state[id].slice as U;\n } else {\n let slice = collection.slice(start, end);\n this.saveState(id, collection, slice, start, end);\n this._service.change.emit(id);\n return slice as U;\n }\n } else {\n if (emitChange) {\n this._service.change.emit(id);\n }\n\n // salve o estado para coleta do lado do servidor para evitar nulo\n // pisca à medida que novos dados são carregados.\n this.saveState(id, collection, collection, start, end);\n\n return collection;\n }\n }\n\n /**\n * Crie um objeto PaginationInstance, usando padrões para quaisquer propriedades opcionais não fornecidas.\n */\n private createInstance(collection: readonly any[], config: PaginatePipeArgs): PaginationInstance {\n this.checkConfig(config);\n\n return {\n id: config.id != null ? config.id : this._service.defaultId(),\n itemsPerPage: +config.itemsPerPage || 0,\n currentPage: +config.currentPage || 1,\n totalItems: +config.totalItems || collection.length\n };\n }\n\n /**\n * Assegure-se de que o argumento passado para o filtro contenha as propriedades necessárias.\n */\n private checkConfig(config: PaginatePipeArgs): void {\n const required = ['itemsPerPage', 'currentPage'];\n\n const missing = required.filter(prop => !(prop in config));\n if (0 < missing.length) {\n throw new Error(`PaginatePipe: Argumento está faltando as seguintes propriedades necessárias: ${missing.join(', ')}`);\n }\n }\n\n /**\n * Para evitar o retorno de um novo array toda vez que o pipe é executado, armazenamos o estado do sliced\n * array para um determinado id. Isso significa que na próxima vez que o canal for executado nesta coleção e id, apenas\n * precisa verificar se a coleta, os pontos inicial e final são todos idênticos e, em caso afirmativo, retornar o\n * último array fatiado.\n */\n private saveState(id: string, collection: ArrayLike<any>, slice: ArrayLike<any>, start: number, end: number) {\n this._state[id] = {\n collection,\n size: collection.length,\n slice,\n start,\n end\n };\n }\n\n /**\n * Para um determinado id, retorna true se os valores de coleção, tamanho, início e fim forem idênticos.\n */\n private stateIsIdentical(id: string, collection: ArrayLike<any>, start: number, end: number): boolean {\n let state = this._state[id];\n if (!state) {\n return false;\n }\n let isMetaDataIdentical = state.size === collection.length &&\n state.start === start &&\n state.end === end;\n\n if (!isMetaDataIdentical) {\n return false;\n }\n\n return (state.slice as Array<any>).every((element, index) => element === collection[start + index]);\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-action-row`,\n exportAs: 'gipiActionRow',\n templateUrl: './action-row.component.html',\n styleUrls: ['./action-row.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIActionRowComponent => GIPIActionRowComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-action-row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIActionRowComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, ContentChildren, HostBinding, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GIPIActionRowComponent } from '../action-row/action-row.component';\n\n@Component({\n selector: `gipi-abstract-form`,\n exportAs: 'gipiAbstractForm',\n templateUrl: './abstract-form.component.html',\n styleUrls: ['./abstract-form.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIAbstractFormComponent => GIPIAbstractFormComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-abstract-form',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIAbstractFormComponent implements OnInit {\n\n @HostBinding('attr.id') attrId: string;\n\n @HostBinding('attr.name') attrName: string;\n\n @HostBinding('style.margin')\n get attrMargin() {\n return this.dialog ? '0' : '0 auto';\n }\n\n @ContentChildren(GIPIActionRowComponent) GIPIActionRowComponent: GIPIActionRowComponent;\n\n @Input() set id(value: string) {\n if (!value) {\n this.attrId = value;\n }\n }\n\n @Input() set name(value: string) {\n if (value) {\n this.attrName = value;\n }\n }\n\n @Input() flexDirection: 'row' | 'column' = 'column';\n\n @Input() gap: string | number = 32;\n\n @Input() alignItems: 'start' | 'center' | 'end' | 'flex-start' | 'flex-end' | 'stretch' = 'stretch';\n\n @Input() justifyContent: 'start' | 'center' | 'end' | 'flex-start' | 'flex-end' | 'space-around' | 'space-between' | 'space-evenly' | 'stretch' = 'flex-start';\n\n @Input() padding: string | number = 16;\n\n @Input() dialog: boolean = false;\n\n @Input() loading: boolean = false;\n\n get getPadding(): string {\n if (typeof this.padding === 'string' && this.padding.includes('px')) {\n return this.padding;\n }\n\n return this.padding + 'px';\n }\n\n get getGap(): string {\n if (typeof this.gap === 'string' && this.gap.includes('px')) {\n return this.gap;\n }\n\n return this.gap + 'px';\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'gipi-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GIPIBadgeComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-badge',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIBadgeComponent implements OnInit {\n\n @Input() label: string;\n\n @Input() color = 'primary';\n\n @Input() textColor = '#ffffff';\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","/**\n * @dynamic é para inicializar DomHandler.browser em tempo de execução\n *\n * Se excluir o comentário abaixo, podemos ver esta mensagem de erro:\n * Os metadados coletados contêm um erro que será reportado em tempo de execução:\n * Somente variáveis e constantes inicializadas podem ser referenciadas\n * porque o valor dessa variável é necessário para o compilador de modelo.\n */\n\n\n/** @dynamic */\nexport class GIPIDomHandler {\n\n public static zIndex: number = 1000;\n\n private static calculatedScrollbarWidth: number = null;\n\n private static calculatedScrollbarHeight: number = null;\n\n private static browser: any;\n\n public static addClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) { element.classList.add(className); } else { element.className += ' ' + className; }\n }\n }\n\n public static addMultipleClasses(element: any, className: string): void {\n if (element && className) {\n if (element.classList) {\n const styles: string[] = className.trim().split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n const styles: string[] = className.split(' ');\n for (let i: number = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n }\n\n public static removeClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) { element.classList.remove(className); } else { element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' '); }\n }\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (element && className) {\n if (element.classList) { return element.classList.contains(className); } else { return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className); }\n }\n\n return false;\n }\n\n public static siblings(element: any): any {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n\n public static find(element: any, selector: string): any[] {\n return Array.from(element.querySelectorAll(selector));\n }\n\n public static findSingle(element: any, selector: string): any {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n\n public static index(element: any): number {\n const children: any = element.parentNode.childNodes;\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n if (children[i] == element) { return num; }\n if (children[i].nodeType == 1) { num++; }\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n const children: any = element.parentNode ? element.parentNode.childNodes : [];\n let num: number = 0;\n for (let i: number = 0; i < children.length; i++) {\n if (children[i] == element) { return num; }\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) { num++; }\n }\n return -1;\n }\n\n public static appendOverlay(overlay: any, target: any, appendTo: any = 'self'): void {\n if (appendTo !== 'self' && overlay && target) {\n this.appendChild(overlay, target);\n }\n }\n\n public static alignOverlay(overlay: any, target: any, appendTo: any = 'self', calculateMinWidth: boolean = true): void {\n if (overlay && target) {\n calculateMinWidth && (overlay.style.minWidth || (overlay.style.minWidth = GIPIDomHandler.getOuterWidth(target) + 'px'));\n\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n this.absolutePosition(overlay, target);\n }\n }\n }\n\n public static relativePosition(element: any, target: any): void {\n const getClosestRelativeElement: (el: any) => any = (el: any): any => {\n if (!el) {\n return;\n }\n return (getComputedStyle(el).getPropertyValue('position') === 'relative')\n ? el\n : getClosestRelativeElement(el.parentElement);\n };\n\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight: any = target.offsetHeight;\n const targetOffset: any = target.getBoundingClientRect();\n const windowScrollTop: number = this.getWindowScrollTop();\n const windowScrollLeft: number = this.getWindowScrollLeft();\n const viewport: { width: number; height: number; } = this.getViewport();\n const relativeElement: any = getClosestRelativeElement(element);\n const relativeElementOffset: any = relativeElement?.getBoundingClientRect() || { top: -1 * windowScrollTop, left: -1 * windowScrollLeft };\n\n let top: number, left: number;\n\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight + targetOffset.top - relativeElementOffset.top;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = (targetOffset.left - relativeElementOffset.left) * -1;\n } else if (targetOffset.left - relativeElementOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left - relativeElementOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = targetOffset.left - relativeElementOffset.left;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n public static absolutePosition(element: any, target: any): void {\n const elementDimensions: any = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight: any = elementDimensions.height;\n const elementOuterWidth: any = elementDimensions.width;\n const targetOuterHeight: any = target.offsetHeight;\n const targetOuterWidth: any = target.offsetWidth;\n const targetOffset: any = target.getBoundingClientRect();\n const windowScrollTop: number = this.getWindowScrollTop();\n const windowScrollLeft: number = this.getWindowScrollLeft();\n const viewport: any = this.getViewport();\n let top: number, left: number;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + elementOuterWidth > viewport.width) { left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth); } else { left = targetOffset.left + windowScrollLeft; }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n static getParents(element: any, parents: any = []): any {\n return (element['parentNode'] === null)\n ? parents\n : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n\n static getScrollableParents(element: any): any[] {\n const scrollableParents: any[] = [];\n\n if (element) {\n const parents: any = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n\n const overflowCheck: (node: any) => boolean = (node: any): boolean => {\n const styleDeclaration: CSSStyleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n\n for (const parent of parents) {\n const scrollSelectors: any = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n const selectors: any = scrollSelectors.split(',');\n for (const selector of selectors) {\n const el: any = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n\n return scrollableParents;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementHeight: any = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementHeight;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n const elementWidth: any = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementWidth;\n }\n\n public static getHiddenElementDimensions(element: any): any {\n const dimensions: any = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return dimensions;\n }\n\n public static scrollInView(container: any, item: any): void {\n const borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n const borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n const paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n const paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n const containerRect: any = container.getBoundingClientRect();\n const itemRect: any = item.getBoundingClientRect();\n const offset: number = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n const scroll: any = container.scrollTop;\n const elementHeight: any = container.clientHeight;\n const itemHeight: any = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n\n public static fadeIn(element: any, duration: number): void {\n element.style.opacity = 0;\n\n let last: number = +new Date();\n let opacity: number = 0;\n const tick: () => void = (): void => {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n\n public static fadeOut(element: any, ms: number): void {\n let opacity: number = 1;\n const interval: number = 50;\n const duration: number = ms;\n const gap: number = interval / duration;\n\n const fading = setInterval((): void => {\n opacity = opacity - gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n\n public static getWindowScrollTop(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n const doc: HTMLElement = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n public static matches(element: any, selector: string): boolean {\n const p: Element = Element.prototype;\n const f: any =\n p['matches'] ||\n p.webkitMatchesSelector ||\n p['mozMatchesSelector'] ||\n p['msMatchesSelector'] ||\n function (s: any): boolean {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n\n public static getOuterWidth(el: any, margin?: any): number {\n let width: number = el.offsetWidth;\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n public static getHorizontalPadding(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n\n public static getHorizontalMargin(el: any): number {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n public static innerWidth(el: any): number {\n let width: number = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static width(el: any): number {\n let width: number = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static getInnerHeight(el: any): number {\n let height: number = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n\n public static getOuterHeight(el: any, margin?: any): number {\n let height: number = el.offsetHeight;\n\n if (margin) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n public static getHeight(el: any): number {\n let height: number = el.offsetHeight;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return height;\n }\n\n public static getWidth(el: any): number {\n let width: number = el.offsetWidth;\n const style: CSSStyleDeclaration = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n return width;\n }\n\n public static getViewport(): { width: number; height: number; } {\n const win = window;\n const d: Document = document;\n const e: HTMLElement = d.documentElement;\n const g: HTMLBodyElement = d.getElementsByTagName('body')[0];\n const w: number = win.innerWidth || e.clientWidth || g.clientWidth;\n const h: number = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n public static getOffset(el: any): { top: any; left: any; } {\n const rect: any = el.getBoundingClientRect();\n\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n\n public static replaceElementWith(element: any, replacementElement: any): any {\n const parentNode: any = element.parentNode;\n if (!parentNode) {\n throw new Error(`Can't replace element`);\n }\n return parentNode.replaceChild(replacementElement, element);\n }\n\n public static getUserAgent(): string {\n return navigator.userAgent;\n }\n\n public static isIE(): boolean {\n const ua: string = window.navigator.userAgent;\n\n const msie: number = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n\n const trident: number = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n const rv: number = ua.indexOf('rv:');\n return true;\n }\n\n const edge: number = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n\n // other browser\n return false;\n }\n\n public static isIOS(): boolean {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n\n public static isAndroid(): boolean {\n return /(android)/i.test(navigator.userAgent);\n }\n\n public static isTouchDevice(): boolean {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n public static appendChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.appendChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.appendChild(element);\n } else {\n throw new Error('Cannot append ' + target + ' to ' + element);\n }\n }\n\n public static removeChild(element: any, target: any): void {\n if (this.isElement(target)) {\n target.removeChild(element);\n } else if (target.el && target.el.nativeElement) {\n target.el.nativeElement.removeChild(element);\n } else {\n throw new Error('Cannot remove ' + element + ' from ' + target);\n }\n }\n\n public static removeElement(element: Element): void {\n if (!('remove' in Element.prototype)) {\n element.parentNode.removeChild(element);\n } else {\n element.remove();\n }\n }\n\n public static isElement(obj: any): boolean {\n return (typeof HTMLElement === 'object')\n ? (obj instanceof HTMLElement)\n : (obj) && (typeof obj === 'object') && (obj !== null) && (obj.nodeType === 1) && (typeof obj.nodeName === 'string');\n }\n\n public static calculateScrollbarWidth(el?: HTMLElement): number {\n if (el) {\n const style: CSSStyleDeclaration = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n } else {\n if (this.calculatedScrollbarWidth !== null) {\n return this.calculatedScrollbarWidth;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarWidth: number = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarWidth;\n\n return scrollbarWidth;\n }\n }\n\n public static calculateScrollbarHeight(): number {\n if (this.calculatedScrollbarHeight !== null) {\n return this.calculatedScrollbarHeight;\n }\n\n const scrollDiv: HTMLDivElement = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarHeight: number = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarHeight;\n\n return scrollbarHeight;\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n (element as any)[methodName].apply(element, args);\n }\n\n public static clearSelection(): void {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n // ignore IE bug\n }\n }\n }\n\n public static getBrowser(): any {\n if (!this.browser) {\n const matched: { browser: string; version: string; } = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n\n public static resolveUserAgent(): { browser: string; version: string; } {\n const ua: string = navigator.userAgent.toLowerCase();\n const match: RegExpExecArray | [] = /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) || [];\n\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n\n public static isInteger(value: any): boolean {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n\n public static isHidden(element: HTMLElement): boolean {\n return !element || element.offsetParent === null;\n }\n\n public static isVisible(element: HTMLElement): boolean {\n return element && element.offsetParent != null;\n }\n\n public static isExist(element: HTMLElement): ParentNode {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n\n public static focus(element: HTMLElement, options?: FocusOptions): void {\n element && document.activeElement !== element && element.focus(options);\n }\n\n public static getFocusableElements(element: HTMLElement): any[] {\n const focusableElements: any[] = GIPIDomHandler.find(\n element,\n `button:not([tabindex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n [href]:not([tabindex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n input:not([tabindex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n select:not([tabindex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n textarea:not([tabindex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n [tabIndex]:not([tabIndex = '-1']):not([disabled]):not([style*='display:none']):not([hidden]),\n [contenteditable]:not([tabIndex = '-1']):not([disabled]):not([style*='display:none']):not([hidden])`\n );\n\n const visibleFocusableElements: any[] = [];\n for (const focusableElement of focusableElements) {\n if (!!(focusableElement.offsetWidth || focusableElement.offsetHeight || focusableElement.getClientRects().length)) { visibleFocusableElements.push(focusableElement); }\n }\n return visibleFocusableElements;\n }\n\n public static getNextFocusableElement(element: HTMLElement, reverse = false): any {\n const focusableElements: any[] = GIPIDomHandler.getFocusableElements(element);\n let index: number = 0;\n if (focusableElements && focusableElements.length > 0) {\n const focusedIndex: number = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n if (reverse) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n index = focusableElements.length - 1;\n } else {\n index = focusedIndex - 1;\n }\n } else if (focusedIndex != -1 && focusedIndex !== focusableElements.length - 1) {\n index = focusedIndex + 1;\n }\n }\n\n return focusableElements[index];\n }\n\n static generateZIndex(): number {\n this.zIndex = this.zIndex || 999;\n return ++this.zIndex;\n }\n\n public static getSelection(): string {\n if (window.getSelection) {\n return window.getSelection().toString();\n } else if (document.getSelection) {\n return document.getSelection().toString();\n } else if (document['selection']) {\n return document['selection'].createRange().text;\n }\n\n return null;\n }\n\n public static getTargetElement(target: any, el?: HTMLElement) {\n if (!target) {\n return null;\n }\n\n switch (target) {\n case 'document': {\n return document;\n } case 'window': {\n return window;\n } case '@next': {\n return el?.nextElementSibling;\n } case '@prev': {\n return el?.previousElementSibling;\n } case '@parent': {\n return el?.parentElement;\n } case '@grandparent': {\n return el?.parentElement.parentElement;\n } default: {\n const type: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' = typeof target;\n\n if (type === 'string') {\n return document.querySelector(target);\n } else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n }\n\n const isFunction: (obj: any) => boolean = (obj: any): boolean => !!(obj && obj.constructor && obj.call && obj.apply);\n const element: any = isFunction(target) ? target() : target;\n\n return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n }\n }\n }\n}\n","/**\n * Lança uma exceção para o caso em que o gatilho popover não possui uma instância popover válida\n */\nexport function throwPopoverMissingError() {\n throw Error(`popover-trigger: deve passar em uma instância popover.\n\n Example:\n <gipi-popover #popover=\"popover\"> </gipi-popover>\n <button [popoverTriggerFor]=\"popover\"> </button>`);\n}\n\n/**\n * Lança uma exceção para o caso em que o valor popoverPositionX do popover não é válido.\n * Em outras palavras, não corresponde a 'before' ou 'after'.\n */\nexport function throwPopoverInvalidPositionX() {\n throw Error(`O valor popoverPositionX deve ser 'before' ou after'.\n Example: <gipi-popover popoverPositionX=\"before\" #popover=\"popover\"> </gipi-popover>`);\n}\n\n/**\n * Lança uma exceção para o caso em que o valor popoverPositionY do popover não é válido.\n * Em outras palavras, não corresponde a 'above' ou 'below'.\n */\nexport function throwPopoverInvalidPositionY() {\n throw Error(`O valor popoverPositionY deve ser 'above' ou below'.\n Example: <gipi-popover popoverPositionY=\"above\" #popover=\"popover\"> </gipi-popover>`);\n}\n","import { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Optional, Output, ViewContainerRef, } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ObjectUtil } from '../../../../core/utils/object.util';\nimport { StringUtil } from '../../../../core/utils/string.util';\nimport { GIPIDomHandler } from '../../dom/dom-handler';\nimport { throwPopoverMissingError } from './popover-errors';\nimport { PopoverPanel, Target } from './popover-interfaces';\nimport { PopoverPositionX, PopoverPositionY, PopoverScrollStrategy, PopoverTriggerEvent } from './popover-types';\n\n/**\n * Esta diretiva destina-se a ser usada em conjunto com uma tag gipi-popover.\n * Ele é responsável por alternar a exibição da instância popover fornecida.\n */\n\n@Directive({\n selector: '[popoverTriggerFor]',\n exportAs: 'popoverTrigger'\n})\nexport class GIPIPopoverTrigger implements AfterViewInit, OnDestroy { // tslint:disable-line:directive-class-suffix\n\n @HostBinding('attr.aria-haspopup') ariaHaspopup: boolean = true;\n\n popoverOpened: Subject<void> = new Subject<void>();\n popoverClosed: Subject<void> = new Subject<void>();\n\n private _portal: TemplatePortal<any>;\n private _overlayRef: OverlayRef | null = null;\n private _popoverOpen: boolean = false;\n private _halt: boolean = false;\n private _backdropSubscription: Subscription;\n private _positionSubscription: Subscription;\n private _detachmentsSubscription: Subscription;\n\n private _mouseoverTimer: any;\n\n // tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the popover is opened via the keyboard\n private _openedByMouse: boolean = false;\n\n private _onDestroy: Subject<void> = new Subject<void>();\n\n /** References the popover instance that the trigger is associated with. */\n @Input('popoverTriggerFor') popover: PopoverPanel;\n\n /** References the popover target instance that the trigger is associated with. */\n @Input('popoverTargetAt') targetElement: Target;\n\n /** Position of the popover in the X axis */\n @Input('popoverPositionX') positionX: PopoverPositionX;\n\n /** Position of the popover in the Y axis */\n @Input('popoverPositionY') positionY: PopoverPositionY;\n\n /** Popover trigger event */\n @Input('popoverTriggerOn') triggerEvent: PopoverTriggerEvent;\n\n /** Popover delay */\n @Input('popoverEnterDelay') enterDelay: number;\n\n /** Popover delay */\n @Input('popoverLeaveDelay') leaveDelay: number;\n\n /** Popover overlap trigger */\n @Input('popoverOverlapTrigger') overlapTrigger: boolean;\n\n /** Popover target offset x */\n @Input('popoverOffsetX') targetOffsetX: number;\n\n /** Popover target offset y */\n @Input('popoverOffsetY') targetOffsetY: number;\n\n /** Popover arrow offset x */\n @Input('popoverArrowOffsetX') arrowOffsetX: number;\n\n /** Popover arrow width */\n @Input('popoverArrowWidth') arrowWidth: number;\n\n /** Popover arrow color */\n @Input('popoverArrowColor') arrowColor: string;\n\n /** Popover container close on click */\n @Input('popoverCloseOnClick') closeOnClick: boolean;\n\n /** Popover backdrop close on click */\n @Input('popoverBackdropCloseOnClick') backdropCloseOnClick: boolean = true;\n\n /** Event emitted when the associated popover is opened. */\n @Output() opened: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the associated popover is closed. */\n @Output() closed: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _overlay: Overlay,\n public _elementRef: ElementRef,\n private _viewContainerRef: ViewContainerRef,\n @Optional() private _dir: Directionality,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit(): void {\n this._checkPopover();\n this._setCurrentConfig();\n this.popover.close.subscribe(() => this.closePopover());\n }\n\n ngOnDestroy(): void {\n this.destroyPopover();\n }\n\n private _setCurrentConfig(): void {\n if (this.positionX === 'before' || this.positionX === 'after') {\n this.popover.positionX = this.positionX;\n }\n\n if (this.positionY === 'above' || this.positionY === 'below') {\n this.popover.positionY = this.positionY;\n }\n\n if (this.triggerEvent) {\n this.popover.triggerEvent = this.triggerEvent;\n }\n\n if (this.enterDelay) {\n this.popover.enterDelay = this.enterDelay;\n }\n\n if (this.leaveDelay) {\n this.popover.leaveDelay = this.leaveDelay;\n }\n\n if (this.overlapTrigger === true || this.overlapTrigger === false) {\n this.popover.overlapTrigger = this.overlapTrigger;\n }\n\n if (this.targetOffsetX) {\n this.popover.targetOffsetX = this.targetOffsetX;\n }\n\n if (this.targetOffsetY) {\n this.popover.targetOffsetY = this.targetOffsetY;\n }\n\n if (this.arrowOffsetX) {\n this.popover.arrowOffsetX = this.arrowOffsetX;\n }\n\n if (this.arrowWidth) {\n this.popover.arrowWidth = this.arrowWidth;\n }\n\n if (this.arrowColor) {\n this.popover.arrowColor = this.arrowColor;\n }\n\n if (this.closeOnClick === true || this.closeOnClick === false) {\n this.popover.closeOnClick = this.closeOnClick;\n }\n\n this.popover.setCurrentStyles();\n }\n\n /** Whether the popover is open. */\n get popoverOpen(): boolean { return this._popoverOpen; }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this.popover.triggerEvent === 'click') {\n this.togglePopover();\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseEnter(event: MouseEvent): void {\n this._halt = false;\n if (this.popover.triggerEvent === 'hover') {\n this._mouseoverTimer = setTimeout(() => {\n this.openPopover();\n }, this.popover.enterDelay);\n }\n }\n\n @HostListener('mouseleave', ['$event'])\n onMouseLeave(event: MouseEvent): void {\n if (this.popover.triggerEvent === 'hover') {\n if (this._mouseoverTimer) {\n clearTimeout(this._mouseoverTimer);\n this._mouseoverTimer = null;\n }\n if (this._popoverOpen) {\n setTimeout(() => {\n if (!this.popover.closeDisabled) {\n this.closePopover();\n }\n }, this.popover.leaveDelay);\n } else {\n this._halt = true;\n }\n }\n }\n\n /** Toggles the popover between the open and closed states. */\n togglePopover(): void {\n return this._popoverOpen ? this.closePopover() : this.openPopover();\n }\n\n /** Opens the popover. */\n openPopover(): void {\n if (!this._popoverOpen && !this._halt) {\n this._createOverlay().attach(this._portal);\n\n if (!ObjectUtil.isNull(this._viewContainerRef) && !ObjectUtil.isNull(this._viewContainerRef.element)) {\n const width: number = GIPIDomHandler.getWidth((this._viewContainerRef.element.nativeElement as HTMLElement));\n if (StringUtil.isEmpty(this.popover.popoverWidth) || (this.popover.popoverWidth === 'auto')) {\n this.popover.popoverWidth = `${width}px`;\n }\n }\n\n this._subscribeToBackdrop();\n this._subscribeToDetachments();\n\n this._initPopover();\n }\n }\n\n /** Closes the popover. */\n closePopover(): void {\n if (this._overlayRef) {\n this._overlayRef.detach();\n this._resetPopover();\n }\n }\n\n /** Removes the popover from the DOM. */\n destroyPopover(): void {\n if (this._mouseoverTimer) {\n clearTimeout(this._mouseoverTimer);\n this._mouseoverTimer = null;\n }\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n this._cleanUpSubscriptions();\n }\n\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n /** Focuses the popover trigger. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** The text direction of the containing app. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /**\n * This method ensures that the popover closes when the overlay backdrop is clicked.\n * We do not use first() here because doing so would not catch clicks from within\n * the popover, and it would fail to unsubscribe properly. Instead, we unsubscribe\n * explicitly when the popover is closed or destroyed.\n */\n private _subscribeToBackdrop(): void {\n if (this._overlayRef) {\n /** Only subscribe to backdrop if trigger event is click */\n if (this.triggerEvent === 'click' && this.backdropCloseOnClick === true) {\n this._overlayRef.backdropClick()\n .pipe(\n takeUntil(this.popoverClosed),\n takeUntil(this._onDestroy),\n )\n .subscribe(() => {\n this.popover._emitCloseEvent();\n });\n }\n }\n }\n\n private _subscribeToDetachments(): void {\n if (this._overlayRef) {\n this._overlayRef.detachments()\n .pipe(\n takeUntil(this.popoverClosed),\n takeUntil(this._onDestroy),\n )\n .subscribe(() => {\n this._setPopoverClosed();\n });\n }\n }\n\n /**\n * This method sets the popover state to open and focuses the first item if\n * the popover was opened via the keyboard.\n */\n private _initPopover(): void {\n this._setPopoverOpened();\n }\n\n /**\n * This method resets the popover when it's closed, most importantly restoring\n * focus to the popover trigger if the popover was opened via the keyboard.\n */\n private _resetPopover(): void {\n this._setPopoverClosed();\n\n // Focus only needs to be reset to the host element if the popover was opened\n // by the keyboard and manually shifted to the first popover item.\n if (!this._openedByMouse) {\n this.focus();\n }\n this._openedByMouse = false;\n }\n\n /** set state rather than toggle to support triggers sharing a popover */\n private _setPopoverOpened(): void {\n if (!this._popoverOpen) {\n this._popoverOpen = true;\n\n this.popoverOpened.next();\n this.opened.emit();\n }\n }\n\n /** set state rather than toggle to support triggers sharing a popover */\n private _setPopoverClosed(): void {\n if (this._popoverOpen) {\n this._popoverOpen = false;\n\n this.popoverClosed.next();\n this.closed.emit();\n }\n }\n\n /**\n * This method checks that a valid instance of MdPopover has been passed into\n * mdPopoverTriggerFor. If not, an exception is thrown.\n */\n private _checkPopover(): void {\n if (!this.popover) {\n throwPopoverMissingError();\n }\n }\n\n /**\n * This method creates the overlay from the provided popover's template and saves its\n * OverlayRef so that it can be attached to the DOM when openPopover is called.\n */\n private _createOverlay(): OverlayRef {\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.popover.templateRef, this._viewContainerRef);\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy as FlexibleConnectedPositionStrategy);\n this._overlayRef = this._overlay.create(config);\n }\n\n return this._overlayRef;\n }\n\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayConfig.\n * @returns OverlayConfig\n */\n private _getOverlayConfig(): OverlayConfig {\n const overlayState = new OverlayConfig();\n overlayState.positionStrategy = this._getPosition();\n\n /** Display overlay backdrop if trigger event is click */\n if (this.triggerEvent === 'click') {\n overlayState.hasBackdrop = true;\n overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';\n }\n\n overlayState.direction = this.dir;\n overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);\n\n return overlayState;\n }\n\n /**\n * This method returns the scroll strategy used by the cdk/overlay.\n */\n private _getOverlayScrollStrategy(strategy: PopoverScrollStrategy): ScrollStrategy {\n switch (strategy) {\n case 'noop':\n return this._overlay.scrollStrategies.noop();\n case 'close':\n return this._overlay.scrollStrategies.close();\n case 'block':\n return this._overlay.scrollStrategies.block();\n case 'reposition':\n default:\n return this._overlay.scrollStrategies.reposition();\n }\n }\n\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the popover based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n private _subscribeToPositions(position: FlexibleConnectedPositionStrategy): void {\n this._positionSubscription = position.positionChanges.subscribe(change => {\n const posisionX: PopoverPositionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n let posisionY: PopoverPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n\n if (!this.popover.overlapTrigger) {\n posisionY = posisionY === 'below' ? 'above' : 'below';\n }\n\n // required for ChangeDetectionStrategy.OnPush\n this._changeDetectorRef.markForCheck();\n\n this.popover.zone.run(() => {\n this.popover.positionX = posisionX;\n this.popover.positionY = posisionY;\n this.popover.setCurrentStyles();\n\n this.popover.setPositionClasses(posisionX, posisionY);\n });\n });\n }\n\n /**\n * This method builds the position strategy for the overlay, so the popover is properly connected\n * to the trigger.\n * @returns ConnectedPositionStrategy\n */\n private _getPosition(): FlexibleConnectedPositionStrategy {\n const [originX, originFallbackX]: HorizontalConnectionPos[] =\n this.popover.positionX === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n this.popover.positionY === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n // let originY = overlayY;\n // let fallbackOriginY = overlayFallbackY;\n\n let originY: 'top' | 'bottom' = overlayY;\n let originFallbackY: 'top' | 'bottom' = overlayFallbackY;\n\n const overlayX: 'start' | 'end' = originX;\n const overlayFallbackX: 'start' | 'end' = originFallbackX;\n\n /** Reverse overlayY and fallbackOverlayY when overlapTrigger is false */\n if (!this.popover.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n\n let offsetX: number = 0;\n let offsetY: number = 0;\n\n if (this.popover.targetOffsetX && !isNaN(Number(this.popover.targetOffsetX))) {\n offsetX = Number(this.popover.targetOffsetX);\n }\n\n if (this.popover.targetOffsetY && !isNaN(Number(this.popover.targetOffsetY))) {\n offsetY = Number(this.popover.targetOffsetY);\n }\n\n /**\n * For overriding position element, when popoverTargetAt has a valid element reference.\n * Useful for sticking popover to parent element and offsetting arrow to trigger element.\n * If undefined defaults to the trigger element reference.\n */\n let element: ElementRef<any> = this._elementRef;\n if (typeof this.targetElement !== 'undefined') {\n this.popover.containerPositioning = true;\n element = this.targetElement._elementRef;\n }\n\n return this._overlay.position()\n .flexibleConnectedTo(element)\n .withLockedPosition(true)\n .withPositions([\n {\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY\n },\n {\n originX: originFallbackX,\n originY,\n overlayX: overlayFallbackX,\n overlayY,\n offsetY\n },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }\n ])\n .withDefaultOffsetX(offsetX)\n .withDefaultOffsetY(offsetY);\n }\n\n private _cleanUpSubscriptions(): void {\n if (this._backdropSubscription) {\n this._backdropSubscription.unsubscribe();\n }\n if (this._positionSubscription) {\n this._positionSubscription.unsubscribe();\n }\n if (this._detachmentsSubscription) {\n this._detachmentsSubscription.unsubscribe();\n }\n }\n\n @HostListener('mousedown', ['$event']) _handleMousedown(event: MouseEvent): void {\n if (event && !isFakeMousedownFromScreenReader(event)) {\n this._openedByMouse = true;\n }\n }\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\ntype ButtonIconPosition = 'left' | 'right' | 'top' | 'bottom' | 'center';\n\n@Component({\n selector: `gipi-button[gipi-primary], gipi-button[gipi-primary-icon], gipi-button[gipi-secondary], gipi-button[gipi-secondary-icon],\n gipi-button[gipi-tertiary], gipi-button[gipi-link], gipi-button[gipi-icon], gipi-button[gipi-action]`,\n exportAs: 'gipiButton',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIButtonComponent => GIPIButtonComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-button',\n }\n})\nexport class GIPIButtonComponent implements OnInit, OnDestroy {\n\n readonly isButtonPrimary: boolean = this._hasHostAttributes('gipi-primary');\n readonly isButtonPrimaryIcon: boolean = this._hasHostAttributes('gipi-primary-icon');\n readonly isButtonSecondary: boolean = this._hasHostAttributes('gipi-secondary');\n readonly isButtonSecondaryIcon: boolean = this._hasHostAttributes('gipi-secondary-icon');\n readonly isButtonTertiary: boolean = this._hasHostAttributes('gipi-tertiary');\n readonly isButtonTertiaryIcon: boolean = this._hasHostAttributes('gipi-tertiary-icon');\n readonly isButtonLink: boolean = this._hasHostAttributes('gipi-link');\n readonly isButtonIcon: boolean = this._hasHostAttributes('gipi-icon');\n readonly isButtonAction: boolean = this._hasHostAttributes('gipi-action');\n\n _overlayVisible: boolean = false;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n\n @Input() ariaLabel: string = '';\n\n @Input() title: string = '';\n\n @Input() label: string = '';\n\n @Input() buttonClass: string;\n\n @Input() buttonPadding: number | string;\n\n @Input() iconWidth: number | string;\n @Input() iconHeight: number | string;\n\n @Input() icon: string = null;\n\n @Input() svgIcon: string = null;\n\n @Input() iconPos: ButtonIconPosition = 'left';\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() notification: boolean = false;\n\n @Input() tooltip: string = '';\n\n @Input() popover: boolean = false;\n\n @Input() overlay: boolean = false;\n\n @Input('forInput') isForInput: boolean = false;\n\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output() onOpenPopover: EventEmitter<void> = new EventEmitter<void>();\n @Output() onClosePopover: EventEmitter<void> = new EventEmitter<void>();\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n @Output('focus') onFocus: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n @Output('blur') onBlur: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(true);\n\n constructor(private _elementRef: ElementRef) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n getHostElement(): any {\n return this._elementRef.nativeElement;\n }\n\n private _hasHostAttributes(...attributes: string[]): boolean {\n return attributes.some(attribute => this.getHostElement().hasAttribute(attribute));\n }\n\n toggleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this._overlayVisible = !this._overlayVisible;\n }\n }\n\n showPopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.openPopover();\n }\n }\n\n closePopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.closePopover();\n }\n }\n\n handleClick(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (this.overlay) {\n this.toggleOverlay();\n }\n this.onClick.emit(event);\n event.stopPropagation();\n }\n }\n\n handleFocus(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.onFocus.emit(event);\n event.stopPropagation();\n }\n }\n\n handleBlur(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.onBlur.emit(event);\n event.stopPropagation();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: UIEvent): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.closePopover();\n event.stopPropagation();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport class RemoveChange<T> {\n chip: T;\n index: number;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-chips`,\n exportAs: 'gipiChips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIChipsComponent => GIPIChipsComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-chips',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIChipsComponent<T> implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-chips-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = 'Selecionados';\n\n @Input() labelRemoveAll: string = 'Limpar';\n\n @Input() ariaLabel: string;\n\n @Input() disabled: boolean = false;\n\n @Input() showRemovableAll: boolean = false;\n\n @Input() showRemovable: boolean = false;\n\n @Input() property: string = 'description';\n\n private _value: T[];\n @Input() set value(value: T[]) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get value(): T[] {\n return this._value;\n }\n\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() removeChange: EventEmitter<RemoveChange<T>> = new EventEmitter<RemoveChange<T>>();\n @Output() removeAllChange: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public removeChip(chip: T, index: number): void {\n if (!this.disabled && this.showRemovable) {\n this.value.splice(index, 1);\n this._changeDetectorRef.detectChanges();\n this.removeChange.emit({ chip: chip, index: index });\n }\n }\n\n public removeAllChips(): void {\n if (!this.disabled && this.showRemovableAll) {\n this.value = [];\n this._changeDetectorRef.detectChanges();\n this.removeAllChange.emit();\n }\n }\n\n}\n","import { AbstractDTO } from './abstract.dto';\n\nexport class ConfirmationDTO extends AbstractDTO {\n\n title: string;\n\n message: string;\n\n listMessage?: string[];\n\n isWarningScreen?: boolean = false;\n\n width?: string;\n\n accept?: Function;\n\n cancel?: Function;\n\n}\n","import { Component, Inject, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';\n\nimport { AppMessages } from '../../../core/app-messages';\nimport { APP_MESSAGES } from '../../../core/app.messages';\nimport { ConfirmationDTO } from '../../../core/models/dto/confirmation.dto';\n\n@Component({\n selector: `gipi-confirmation-dialog`,\n exportAs: 'gipiConfirmationDialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIConfirmationDialogComponent => GIPIConfirmationDialogComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-confirmation-dialog',\n },\n})\nexport class GIPIConfirmationDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<GIPIConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public confirmation: ConfirmationDTO,\n @Inject(APP_MESSAGES) public messages: AppMessages\n ) { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-dropdown-menu`,\n exportAs: 'gipiDropdownMenu',\n templateUrl: './dropdown-menu.component.html',\n styleUrls: ['./dropdown-menu.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIDropdownMenuComponent => GIPIDropdownMenuComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-dropdown-menu',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIDropdownMenuComponent implements OnInit, OnDestroy {\n\n private _name: string = `gipi-dropdown-menu-${nextUniqueId++}`;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() ariaLabel: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() showTrigger: boolean = true;\n\n private _trigger: number = 0;\n @Input() set trigger(value: number) {\n this._trigger = value;\n }\n get trigger(): number {\n return this._trigger;\n }\n\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenPopover: EventEmitter<void> = new EventEmitter<void>();\n @Output() onClosePopover: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n ngOnDestroy(): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.onClick.emit(event);\n event.stopPropagation();\n }\n }\n\n public togglePopover(): void {\n if (!this.disabled) {\n this.popoverTrigger.togglePopover();\n }\n }\n\n public showPopover(): void {\n if (this.disabled) {\n return;\n } else {\n this.popoverTrigger.openPopover();\n }\n }\n\n public closePopover(): void {\n if (this.disabled) {\n return;\n } else {\n this.popoverTrigger.closePopover();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: UIEvent): void {\n if (this.popoverTrigger) {\n this.popoverTrigger.closePopover();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-expansion-panel`,\n exportAs: 'gipiExpansionPanel',\n templateUrl: './expansion-panel.component.html',\n styleUrls: ['./expansion-panel.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIExpansionPanelComponent => GIPIExpansionPanelComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-expansion-panel',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIExpansionPanelComponent implements OnInit {\n\n @Input() icon: string;\n\n @Input() svgIcon: string;\n\n @Input() iconSize: string | number;\n\n @Input() panelTitle: string;\n\n @Input() isExpanded: boolean = false;\n\n @Input() startExpanded: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Output() expanded: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n if (this.startExpanded) {\n this.isExpanded = this.startExpanded;\n }\n }\n\n emitExpanded(value: boolean): void {\n this.expanded.emit(value);\n }\n\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material';\nimport { tap } from 'rxjs/operators';\n\nimport { GIPIConfirmationDialogComponent } from '../../shared/gipi-components/confirmation-dialog/confirmation-dialog.component';\nimport { ConfirmationDTO } from '../models/dto/confirmation.dto';\nimport { AbstractService } from './abstract.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService extends AbstractService {\n\n constructor(public dialog: MatDialog) {\n super();\n }\n\n async confirm(confirmation: ConfirmationDTO): Promise<boolean> {\n let result: boolean = false;\n const dialogConfig = new MatDialogConfig();\n dialogConfig.disableClose = true;\n dialogConfig.autoFocus = true;\n dialogConfig.data = confirmation;\n dialogConfig.minWidth = '20%';\n (confirmation.width ? dialogConfig.width = confirmation.width : dialogConfig.maxWidth = '40%');\n\n await this.dialog\n .open(GIPIConfirmationDialogComponent, dialogConfig)\n .afterClosed()\n .pipe(\n tap((isAccept: boolean) => {\n if (isAccept) {\n if ((confirmation.accept !== null) && (confirmation.accept !== undefined)) {\n confirmation.accept();\n }\n } else {\n if ((confirmation.cancel !== null) && (confirmation.cancel !== undefined)) {\n confirmation.cancel();\n }\n }\n result = isAccept;\n })\n )\n .toPromise();\n\n return result;\n }\n\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ConfirmationService } from '../../../core/services/confirmation.service';\nimport { MessageService } from '../../../core/services/message.service';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: `gipi-file-drag-and-drop`,\n exportAs: 'gipiFileDragAndDrop',\n templateUrl: './file-drag-and-drop.component.html',\n styleUrls: ['./file-drag-and-drop.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIFileDragAndDropComponent => GIPIFileDragAndDropComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-file-drag-and-drop',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIFileDragAndDropComponent implements ControlValueAccessor, OnInit {\n\n @ViewChild('inputFile', { static: false, read: ElementRef }) _elementRef: ElementRef;\n\n @Input() files: any[] = [];\n\n @Input() color: string;\n\n @Input() icon: string;\n\n @Input() iconFile: string;\n\n @Input() iconDeleteFile: string;\n\n @Input() svgIcon: string;\n\n @Input() svgIconFile: string;\n\n @Input() svgIconDeleteFile: string;\n\n @Input() iconSize: number = 0;\n\n @Input() iconSizeFile: number = 0;\n\n @Input() multiple: boolean = false;\n\n @Input() disabled: boolean;\n\n @Input() onlyExtensions: string[];\n\n @Input() verifyHasAdded: boolean = false;\n\n @Input() legendFieldset: string = '';\n\n @Input() listFileVisible: boolean = false;\n\n @Input() removingFiles: boolean = false;\n\n @Output() fileChange: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(\n private _messageService: MessageService,\n private _confirmationService: ConfirmationService\n ) { }\n\n ngOnInit(): void { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.files = value;\n }\n\n onFileChange(pFileList: File[]): void {\n if (this._validateCountFiles(pFileList) && this._validateExtensionFile(pFileList) && this._validateHasAdded(pFileList)) {\n this.files = Object.keys(pFileList).map(key => pFileList[key]);\n this.fileChange.emit(this.files);\n }\n this._elementRef.nativeElement.value = '';\n }\n\n onDeleteFile(file: File): void {\n let list: File[] = this.files;\n this.files = [];\n\n list = this.files.filter((fileUploaded) => fileUploaded.name !== file.name);\n this.files = list;\n\n this.fileChange.emit(this.files);\n this._elementRef.nativeElement.value = '';\n }\n\n onClearInputFile(emitFileChange: boolean): boolean {\n this._elementRef.nativeElement.value = '';\n this.files = [];\n if (emitFileChange) {\n this.fileChange.emit(this.files);\n }\n return ((this.files.length <= 0) && StringUtil.isEmpty(this._elementRef.nativeElement.value));\n }\n\n openConfirmDialogRemoveFile(file: File, index: number): void {\n try {\n this._confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente remover o arquivo ${file.name} da lista?`,\n accept: () => {\n const list: File[] = this.files;\n list.splice(index, 1);\n this.files = [];\n this.files = list;\n },\n cancel: () => { }\n });\n } catch (e) {\n this.addErrorMessage(e);\n }\n }\n\n private _validateCountFiles(pFileList: File[]): boolean {\n if (!this.multiple && pFileList.length > 1) {\n this.addErrorMessage('Não é possível selecionar mais de um arquivo por vez');\n return false;\n }\n\n return true;\n }\n\n private _validateHasAdded(pFileList: File[]): boolean {\n if ((!this.verifyHasAdded) || (ArrayUtil.isEmpty(this.files))) {\n return true;\n }\n\n let valid: boolean = true;\n for (let i: number = 0; i < pFileList.length; i++) {\n const existInListFile: boolean = this.files.filter(f => f.name.toUpperCase() === pFileList[i].name.toUpperCase()).length > 0;\n if (existInListFile) {\n this.addErrorMessage(`O arquivo ${pFileList[i].name} já foi adicionado`);\n valid = false;\n break;\n }\n }\n\n return valid;\n }\n\n private _validateExtensionFile(pFileList: File[]): boolean {\n // Verifica se não há extensões especificadas\n if (!this.onlyExtensions || this.onlyExtensions.length === 0) {\n return true; // Se não há extensões especificadas, todos os arquivos são considerados válidos\n }\n\n const specialExtensions = this.onlyExtensions.filter(ext => ext.includes('*')).map(ext => ext.slice(0, ext.indexOf('*')));\n\n for (let i = 0; i < pFileList.length; i++) {\n const fileName = pFileList[i].name;\n const fileExtension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();\n\n // Verifica se a extensão está na lista de extensões permitidas\n let isValid = this.onlyExtensions.includes(fileExtension);\n\n // Se a extensão não estiver na lista e houver extensões especiais\n if (!isValid && specialExtensions.length > 0) {\n isValid = specialExtensions.some(specExt => fileExtension.startsWith(specExt));\n }\n\n // Se não for válido, adiciona mensagem de erro e retorna falso imediatamente\n if (!isValid) {\n this.addErrorMessage(`Informe somente arquivos com extensão ${this.onlyExtensions.join(', ')}`);\n return false;\n }\n }\n\n return true; // Se todas as extensões forem válidas, retorna true\n }\n\n private addSuccessMessage(message: string): void {\n this._messageService.add({\n icon: 'check_circle',\n title: 'Sucesso',\n message: message,\n type: 'success'\n });\n }\n\n private addErrorMessage(message: string): void {\n this._messageService.add({\n icon: 'cancel',\n title: 'Ocorreu um erro',\n message: message,\n type: 'error'\n });\n }\n\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-footer`,\n exportAs: 'gipiFooter',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIFooterComponent => GIPIFooterComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-footer',\n }\n})\nexport class GIPIFooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CurrencyMaskConfig } from 'ngx-currency';\nimport { ObjectUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-form-field`,\n exportAs: 'gipiFormField',\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIFormFieldComponent => GIPIFormFieldComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-form-field',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIFormFieldComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-form-field-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() ariaLabel: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() readonly: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() showClear: boolean = false;\n\n @Input() showSearch: boolean = false;\n\n @Input() showTrigger: boolean = false;\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'url' | 'tel' | 'select' | 'search' | 'currency' = 'text';\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() maxLength: number;\n\n @Input() mask: string | undefined | null;\n\n @Input() pattern: string;\n\n @Input() optionsCurrency: Partial<CurrencyMaskConfig>;\n\n private _model: any;\n @Input() set model(value: any) {\n this._model = value;\n this.onChange(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get model() {\n return this._model;\n }\n\n private _value: any;\n @Input() set value(value: any) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n\n private _trigger: number = 0;\n @Input() set trigger(value: number) {\n this._trigger = value;\n }\n get trigger(): number {\n return this._trigger;\n }\n\n @ViewChild('inputRef', { static: true, read: ElementRef }) inputRef: ElementRef;\n\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onKeydownEnter: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClear: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSearch: EventEmitter<Event> = new EventEmitter<Event>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.key.toUpperCase() === 'ENTER') {\n this.onKeydownEnter.emit(event);\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.onClick.emit(event);\n this.focus();\n }\n }\n\n public onButtonClearClick(event: Event): void {\n if (!this.disabled) {\n if (this.type === 'search') {\n this.model = '';\n }\n this.onClear.emit(event);\n }\n }\n\n onButtonSearchClick(event: Event): void {\n if (!this.disabled && (this.type === 'search')) {\n this.onSearch.emit(event);\n }\n }\n\n /**\n * Seta o foco no inputRef\n */\n public focus(): void {\n if (!ObjectUtil.isNull(this.inputRef)) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-helpful-tip`,\n exportAs: 'gipiHelpfulTip',\n templateUrl: './helpful-tip.component.html',\n styleUrls: ['./helpful-tip.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIHelpfulTipComponent => GIPIHelpfulTipComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-helpful-tip',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIHelpfulTipComponent implements OnInit {\n\n private _name: string = `gipi-form-field-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n private _tooltip: string = '';\n @Input() set tooltip(value: string) {\n this._tooltip = value;\n }\n get tooltip(): string {\n return this._tooltip;\n }\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-checkbox`,\n exportAs: 'gipiInputCheckbox',\n templateUrl: './input-checkbox.component.html',\n styleUrls: ['./input-checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputCheckboxComponent => GIPIInputCheckboxComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-checkbox',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputCheckboxComponent implements ControlValueAccessor, OnInit {\n\n private _name: string = `gipi-input-checkbox-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string;\n\n @Input() disabled: boolean = false;\n\n @Input() disableRipple: boolean = false;\n\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n @Input() required: boolean;\n\n @Input() indeterminate: boolean;\n\n private _value: any;\n @Input() set value(val: any) {\n this._value = val;\n this.onChange(val);\n this.onTouch();\n }\n get value() {\n return this._value;\n }\n\n @Output() change: EventEmitter<MatCheckboxChange> = new EventEmitter<MatCheckboxChange>();\n @Output() indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void { }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CurrencyMaskConfig } from 'ngx-currency';\nimport { ObjectUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-currency`,\n exportAs: 'gipiInputCurrency',\n templateUrl: './input-currency.component.html',\n styleUrls: ['./input-currency.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputCurrencyComponent => GIPIInputCurrencyComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-currency',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputCurrencyComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-currency-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string;\n\n @Input() ariaLabel: string;\n\n @Input() placeholder: string = '';\n\n @Input() readonly: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() maxLength: number;\n\n @Input() options: Partial<CurrencyMaskConfig>;\n\n private _model: any;\n @Input() set model(value: any) {\n this._model = value;\n this.onChange(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get model() {\n return this._model;\n }\n\n private _value: any;\n @Input() set value(value: any) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n\n @ViewChild('inputCurrencyRef', { static: true, read: ElementRef }) inputCurrencyRef: ElementRef;\n\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onKeydownEnter: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef,\n ) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.key.toUpperCase() === 'ENTER') {\n this.onKeydownEnter.emit(event);\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled) {\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.onClick.emit(event);\n this.focus();\n }\n }\n\n /**\n * Seta o foco no inputRef\n */\n public focus(): void {\n if (!ObjectUtil.isNull(this.inputCurrencyRef)) {\n this.inputCurrencyRef.nativeElement.focus();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\n\nconst yearsPerPage = 24;\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-monthpicker`,\n exportAs: 'gipiInputMonthPicker',\n templateUrl: './input-monthpicker.component.html',\n styleUrls: ['./input-monthpicker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputMonthPickerComponent => GIPIInputMonthPickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-monthpicker',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputMonthPickerComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-monthpicker-${nextUniqueId++}`;\n\n private _initialYear: number;\n set initialYear(value: number) {\n if (value > 1900) {\n this._initialYear = value;\n }\n }\n get initialYear(): number {\n return this._initialYear;\n }\n\n private _yearArrays: number[] = [];\n set yearArrays(value: number[]) {\n this._yearArrays = value;\n }\n get yearArrays(): number[] {\n return this._yearArrays;\n }\n\n _now: Date = new Date();\n _currentMonth: number = this._now.getMonth();\n _currentYear: number = this._now.getFullYear();\n\n _overlayVisible: boolean = false;\n\n monthArrays: number[] = Array.from(Array(12).keys());\n\n monthNames: string[] = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'];\n\n internalCalendarView: 'month' | 'year' = 'month';\n\n inputFieldValue: string;\n\n @Input() id: string | number = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string = '';\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() minDate: Date;\n\n @Input() maxDate: Date;\n\n private _calendarView: 'month' | 'year' = 'month';\n @Input() set calendarView(value: 'month' | 'year') {\n this._calendarView = value;\n\n if (!ObjectUtil.isNull(this.value)) {\n if (value === 'month') {\n this.monthChanged(this.value.getMonth());\n } else if (value === 'year') {\n this.yearChanged(this.value.getFullYear());\n }\n\n this.internalCalendarView = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n get calendarView(): 'month' | 'year' {\n return this._calendarView;\n }\n\n private _value: Date;\n @Input() set value(value: Date) {\n this._value = value;\n\n if (value) {\n value.setDate(1);\n this._value = value;\n\n if (this.calendarView === 'month') {\n const month: number = this.value.getMonth() + 1;\n this.inputFieldValue = `${((month <= 9) ? ('0' + month) : month)}/${this.value.getFullYear()}`;\n } else if (this.calendarView === 'year') {\n this.inputFieldValue = `${this.value.getFullYear()}`;\n }\n }\n\n this.onChange(value);\n this._changeDetectorRef.markForCheck();\n }\n get value(): Date {\n return this._value;\n }\n\n @Output() onClose: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onMonthChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onYearChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onKeydownEnter: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('inputMonthPicker', { static: true, read: HTMLInputElement }) inputMonthPickerRef: HTMLInputElement;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _config: GIPINgConfig,\n ) { }\n\n ngOnInit(): void {\n this._generateYears();\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n private _generateYears(): void {\n const realCurrentYear: number = this._now.getFullYear();\n\n if (!this.initialYear) {\n this.initialYear = this.value ? this.value.getFullYear() : this._now.getFullYear();\n }\n\n this.yearArrays = [];\n if (this.initialYear === realCurrentYear) {\n let baseYear = this.initialYear - (this.initialYear % (yearsPerPage / 2));\n for (let y = 0; y < yearsPerPage; y++) {\n this.yearArrays.push((baseYear + y));\n }\n } else {\n for (let y = this.initialYear; y < (this.initialYear + yearsPerPage); y++) {\n this.yearArrays.push(y);\n }\n }\n }\n\n public clickToggleCalendar(currentView?: 'month' | 'year') {\n if (currentView) {\n this.internalCalendarView = currentView;\n } else {\n if (this.internalCalendarView === 'month') {\n this.internalCalendarView = 'year';\n }\n }\n this._changeDetectorRef.detectChanges();\n }\n\n public clickPrev() {\n if (this.internalCalendarView === 'month') {\n this.value = new Date(this.value.getFullYear() - 1, this.value.getMonth(), 1);\n this.initialYear = (this.value.getFullYear() - 7);\n } else if (this.internalCalendarView === 'year') {\n this.initialYear = this.yearArrays[0] - (yearsPerPage - 1);\n }\n this._generateYears();\n this._changeDetectorRef.detectChanges();\n }\n\n public clickNext() {\n if (this.internalCalendarView === 'month') {\n this.value = new Date(this.value.getFullYear() + 1, this.value.getMonth(), 1);\n this.initialYear = ((this.value.getFullYear() - 7) + 1);\n } else if (this.internalCalendarView === 'year') {\n this.initialYear = this.yearArrays[yearsPerPage - 1];\n }\n this._generateYears();\n this._changeDetectorRef.detectChanges();\n }\n\n /**\n * Chamado quando o mês é alterado\n * @param month mês selecionado no calendário de meses\n */\n public monthChanged(month: number) {\n const year: number = this.value.getFullYear();\n this._monthOrYearChanged(month, year);\n this._hideOverlay();\n }\n\n /**\n * Chamado quando o ano é alterado\n * @param year ano selecionado no calendário de anos\n */\n public yearChanged(year: number) {\n const month: number = this.value.getMonth();\n this._monthOrYearChanged(month, year);\n\n if (this.calendarView === 'month') {\n this.clickToggleCalendar('month');\n } else if (this.calendarView === 'year') {\n this._hideOverlay();\n }\n }\n\n /**\n * Chamar quando mês ou ano mudou\n * @param month número do mês 0-11\n * @param year ano exemplo: 1995\n */\n private _monthOrYearChanged(month: number, year: number) {\n let newMonth: number = month;\n let newYear: number = year;\n\n if (this.minDate) {\n if (newYear < this.minDate.getFullYear() || (newYear === this.minDate.getFullYear() && newMonth < this.minDate.getMonth())) {\n newMonth = this.minDate.getMonth();\n newYear = this.minDate.getFullYear();\n }\n }\n\n if (this.maxDate) {\n if (newYear > this.maxDate.getFullYear() || (newYear === this.maxDate.getFullYear() && newMonth > this.maxDate.getMonth())) {\n newMonth = this.maxDate.getMonth();\n newYear = this.maxDate.getFullYear();\n }\n }\n\n this.value = new Date(newYear, newMonth, 1);\n\n this._changeDetectorRef.detectChanges();\n }\n\n public isMonthSelected(month: number): boolean {\n if (this.value) {\n return this.value.getMonth() === month;\n }\n\n return false;\n }\n\n public isMonthDisabled(month: number): boolean {\n if (this.value && this.minDate && this.maxDate) {\n return (this.value.getFullYear() === this.minDate.getFullYear() && month < this.minDate.getMonth())\n || (this.value.getFullYear() === this.maxDate.getFullYear() && month > this.maxDate.getMonth());\n }\n return false;\n }\n\n public isYearSelected(year: number): boolean {\n if (this.value) {\n return this.value.getFullYear() === year;\n }\n\n return false;\n }\n\n public isYearDisabled(year: number): boolean {\n if (this.value && this.minDate && this.maxDate) {\n return (this.value.getFullYear() === this.minDate.getFullYear() && year < this.minDate.getFullYear())\n || (this.value.getFullYear() === this.maxDate.getFullYear() && year > this.maxDate.getFullYear());\n }\n return false;\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.key.toUpperCase() === 'ENTER') {\n this.onKeydownEnter.emit(event);\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputKeyup(event: KeyboardEvent): void {\n if (!this.disabled) {\n if ((event.key.toUpperCase() === 'ESC') || (event.key.toUpperCase() === 'ESCAPE')) {\n this._hideOverlay();\n }\n this.onKeydown.emit(event);\n }\n }\n\n public onInputFocus(event: Event): void {\n if (!this.disabled && this.showOnFocus) {\n this._showOverlay();\n this.onFocus.emit(event);\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this._showOverlay();\n this.onClick.emit(event);\n }\n }\n\n public onButtonShowMonthpicker(): void {\n this.toogleOverlay();\n this._changeDetectorRef.markForCheck();\n }\n\n private _showOverlay(): void {\n if (!this._overlayVisible) {\n this._overlayVisible = true;\n }\n }\n\n private _hideOverlay(): void {\n this._overlayVisible = false;\n this._changeDetectorRef.markForCheck();\n }\n\n public toogleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (!this._overlayVisible) {\n this._showOverlay();\n } else {\n this._hideOverlay();\n }\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\nlet nextUniqueId = 0;\n\n/** A altura dos itens selecionados em unidades `px`. */\nconst OPTION_HEIGHT_PX = 40;\n\n@Component({\n selector: `gipi-input-select-enum`,\n exportAs: 'gipiInputSelectEnum',\n templateUrl: './input-select-enum.component.html',\n styleUrls: ['./input-select-enum.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectEnumComponent => GIPIInputSelectEnumComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-enum',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectEnumComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-enum-${nextUniqueId++}`;\n\n _enumList: any[] = [];\n\n _itemSizeScrollViewport: number = 5;\n\n _lastOptionSelected: any = null;\n\n @ViewChild('formFieldSelectEnum', { read: GIPIFormFieldComponent, static: false }) formFieldSelectEnum: GIPIFormFieldComponent;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() required: boolean;\n\n private _disabled: boolean = false;\n @Input() set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n }\n get disabled() {\n return this._disabled;\n }\n\n private _loading: boolean = false;\n @Input() set loading(value: any) {\n this._loading = coerceBooleanProperty(value);\n }\n get loading() {\n return this._loading;\n }\n\n private _multiple: boolean = false;\n @Input() set multiple(value: any) {\n this._multiple = coerceBooleanProperty(value);\n }\n get multiple() {\n return this._multiple;\n }\n\n private _showOnFocus: boolean = true;\n @Input() set showOnFocus(value: any) {\n this._showOnFocus = coerceBooleanProperty(value);\n }\n get showOnFocus() {\n return this._showOnFocus;\n }\n\n private _hideOnEscape: boolean = true;\n @Input() set hideOnEscape(value: any) {\n this._hideOnEscape = coerceBooleanProperty(value);\n }\n get hideOnEscape() {\n return this._hideOnEscape;\n }\n\n @Input() enum: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n private _value: any;\n @Input('value') set value(value: any) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n }\n get value() {\n return this._value;\n }\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get optionSelected(): string {\n if (this.value && !ArrayUtil.isEmpty(this._enumList)) {\n const selected = this._enumList.find(e => e.key === this.value);\n if (selected) {\n return selected.value;\n }\n }\n\n return '';\n }\n\n get scrollViewportHeight(): number {\n let height: number = 0;\n if (this._enumList && this._enumList.length) {\n height = (this._enumList.length * OPTION_HEIGHT_PX);\n }\n\n return height;\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this._enumList.push(lEnumList[i]);\n }\n }\n } else {\n this._enumList = lEnumList;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n if (!ObjectUtil.isNull(this.popoverTrigger)) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n public showPopover(): void {\n if (!this.disabled && !this.loading) {\n this.popoverTrigger.openPopover();\n }\n }\n\n public closePopover(): void {\n if (!this.disabled && !this.loading) {\n this.popoverTrigger.closePopover();\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showPopover();\n }\n if (!this.disabled) {\n this.onFocus.emit(event);\n event.stopPropagation();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.showPopover();\n\n if (!ObjectUtil.isNull(this.popoverTrigger) && !this.popoverTrigger.popoverOpen) {\n this.formFieldSelectEnum.focus();\n }\n\n event.stopPropagation();\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n event.preventDefault();\n }\n }\n }\n\n public onButtonSelectOptionClick(key: string): void {\n this.value = key;\n this.closePopover();\n this._changeDetectorRef.detectChanges();\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent): void {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n this._changeDetectorRef.detectChanges();\n event.stopPropagation();\n }\n }\n\n}\n","import { GIPIDomHandler } from './dom-handler';\n\nexport class GIPIConnectedOverlayScrollHandler {\n\n element: any;\n\n listener: any;\n\n scrollableParents: any;\n\n constructor(element: any, listener: any = (): void => { }) {\n this.element = element;\n this.listener = listener;\n }\n\n bindScrollListener(): void {\n this.scrollableParents = GIPIDomHandler.getScrollableParents(this.element);\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n\n unbindScrollListener(): void {\n if (this.scrollableParents) {\n for (let i: number = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n\n destroy(): void {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n","import { AnimationEvent, AnimationReferenceMetadata, animate, animation, style, transition, trigger, useAnimation } from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, NgZone, OnDestroy, OnInit, Output, QueryList, Renderer2, TemplateRef, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport ZIndexUtils from '../../../core/utils/zindex.util';\nimport { GIPINgConfig } from '../../api/gipi-ng-config';\nimport { GIPIConnectedOverlayScrollHandler } from '../dom/connected-overlay-scroll-handler';\nimport { GIPIDomHandler } from '../dom/dom-handler';\nimport { GIPITemplateDirective } from '../template/template.directive';\nimport { GIPIOverlayService } from './shared/overlay-service';\nimport { OverlayModeType, OverlayOptions, ResponsiveOverlayDirectionType, ResponsiveOverlayOptions } from './shared/overlay_options';\n\nconst showOverlayContentAnimation: AnimationReferenceMetadata = animation([style({ transform: '{{transform}}', opacity: 0 }), animate('{{showTransitionParams}}')]);\nconst hideOverlayContentAnimation: AnimationReferenceMetadata = animation([animate('{{hideTransitionParams}}', style({ transform: '{{transform}}', opacity: 0 }))]);\n\n/** @dynamic */\n@Component({\n selector: `gipi-overlay`,\n exportAs: 'gipiOverlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('overlayContentAnimation', [\n transition(':enter', [useAnimation(showOverlayContentAnimation)]),\n transition(':leave', [useAnimation(hideOverlayContentAnimation)])\n ])\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIOverlayComponent => GIPIOverlayComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-overlay',\n }\n})\nexport class GIPIOverlayComponent implements OnInit, AfterContentInit, OnDestroy {\n\n contentTemplate: TemplateRef<any> | undefined;\n\n modalVisible: boolean = false;\n\n isOverlayClicked: boolean = false;\n\n isOverlayContentClicked: boolean = false;\n\n scrollHandler: any;\n\n documentClickListener: any;\n\n documentResizeListener: any;\n\n private documentKeyboardListener: VoidFunction | null;\n\n public transformOptions: any = {\n default: 'scaleY(0.8)',\n center: 'scale(0.7)',\n top: 'translate3d(0px, -100%, 0px)',\n 'top-start': 'translate3d(0px, -100%, 0px)',\n 'top-end': 'translate3d(0px, -100%, 0px)',\n bottom: 'translate3d(0px, 100%, 0px)',\n 'bottom-start': 'translate3d(0px, 100%, 0px)',\n 'bottom-end': 'translate3d(0px, 100%, 0px)',\n left: 'translate3d(-100%, 0px, 0px)',\n 'left-start': 'translate3d(-100%, 0px, 0px)',\n 'left-end': 'translate3d(-100%, 0px, 0px)',\n right: 'translate3d(100%, 0px, 0px)',\n 'right-start': 'translate3d(100%, 0px, 0px)',\n 'right-end': 'translate3d(100%, 0px, 0px)'\n };\n\n private _window: Window | null;\n\n private _visible: boolean = false;\n @Input() get visible(): boolean {\n return this._visible;\n }\n set visible(value: boolean) {\n this._visible = value;\n\n if (this._visible && !this.modalVisible) {\n this.modalVisible = true;\n }\n }\n\n private _mode: OverlayModeType | string;\n @Input() get mode(): OverlayModeType | string {\n return this._mode || this.overlayOptions?.mode;\n }\n set mode(value: OverlayModeType | string) {\n this._mode = value;\n }\n\n private _style: any;\n @Input() get style(): any {\n return ObjectUtil.merge(this._style, this.modal ? this.overlayResponsiveOptions?.style : this.overlayOptions?.style);\n }\n set style(value: any) {\n this._style = value;\n }\n\n private _styleClass: string | undefined;\n @Input() get styleClass(): string {\n return ObjectUtil.merge(this._styleClass, this.modal ? this.overlayResponsiveOptions?.styleClass : this.overlayOptions?.styleClass);\n }\n set styleClass(value: string) {\n this._styleClass = value;\n }\n\n private _contentStyle: any;\n @Input() get contentStyle(): any {\n return ObjectUtil.merge(this._contentStyle, this.modal ? this.overlayResponsiveOptions?.contentStyle : this.overlayOptions?.contentStyle);\n }\n set contentStyle(value: any) {\n this._contentStyle = value;\n }\n\n private _contentStyleClass: string | undefined;\n @Input() get contentStyleClass(): string {\n return ObjectUtil.merge(this._contentStyleClass, this.modal ? this.overlayResponsiveOptions?.contentStyleClass : this.overlayOptions?.contentStyleClass);\n }\n set contentStyleClass(value: string) {\n this._contentStyleClass = value;\n }\n\n private _target: any;\n @Input() get target(): any {\n const value: any = this._target || this.overlayOptions?.target;\n return (value === undefined) ? '@prev' : value;\n }\n set target(value: any) {\n this._target = value;\n }\n\n private _appendTo: 'body' | HTMLElement | undefined;\n @Input() get appendTo(): any {\n return this._appendTo || this.overlayOptions?.appendTo;\n }\n set appendTo(value: any) {\n this._appendTo = value;\n }\n\n private _autoZIndex: boolean | undefined;\n @Input() get autoZIndex(): boolean {\n const value: boolean = this._autoZIndex || this.overlayOptions?.autoZIndex;\n return (value === undefined) ? true : value;\n }\n set autoZIndex(value: boolean) {\n this._autoZIndex = value;\n }\n\n private _baseZIndex: number | undefined;\n @Input() get baseZIndex(): number {\n const value: number = this._baseZIndex || this.overlayOptions?.baseZIndex;\n return (value === undefined) ? 0 : value;\n }\n set baseZIndex(value: number) {\n this._baseZIndex = value;\n }\n\n private _showTransitionOptions: string | undefined;\n @Input() get showTransitionOptions(): string {\n const value: string = this._showTransitionOptions || this.overlayOptions?.showTransitionOptions;\n return (value === undefined) ? '.12s cubic-bezier(0, 0, 0.2, 1)' : value;\n }\n set showTransitionOptions(value: string) {\n this._showTransitionOptions = value;\n }\n\n private _hideTransitionOptions: string | undefined;\n @Input() get hideTransitionOptions(): string {\n const value: string = this._hideTransitionOptions || this.overlayOptions?.hideTransitionOptions;\n return (value === undefined) ? '.1s linear' : value;\n }\n set hideTransitionOptions(value: string) {\n this._hideTransitionOptions = value;\n }\n\n private _listener: any;\n @Input() get listener(): any {\n return this._listener || this.overlayOptions?.listener;\n }\n set listener(value: any) {\n this._listener = value;\n }\n\n private _responsive: ResponsiveOverlayOptions | undefined;\n @Input() get responsive(): ResponsiveOverlayOptions | undefined {\n return this._responsive || this.overlayOptions?.responsive;\n }\n set responsive(val: ResponsiveOverlayOptions | undefined) {\n this._responsive = val;\n }\n\n private _options: OverlayOptions | undefined;\n @Input() get options(): OverlayOptions | undefined {\n return this._options;\n }\n set options(val: OverlayOptions | undefined) {\n this._options = val;\n }\n\n private _documentClick: () => boolean;\n @Input() get documentClick(): () => boolean {\n return this._documentClick;\n }\n set documentClick(val: () => boolean) {\n this._documentClick = val;\n }\n\n @Output() visibleChange: EventEmitter<any> = new EventEmitter();\n @Output() onBeforeShow: EventEmitter<any> = new EventEmitter();\n @Output() onShow: EventEmitter<any> = new EventEmitter();\n @Output() onBeforeHide: EventEmitter<any> = new EventEmitter();\n @Output() onHide: EventEmitter<any> = new EventEmitter();\n @Output() onAnimationStart: EventEmitter<any> = new EventEmitter();\n @Output() onAnimationDone: EventEmitter<any> = new EventEmitter();\n\n @ContentChildren(GIPITemplateDirective) templates: QueryList<any> | undefined;\n\n @ViewChild('overlay', { static: false }) overlayViewChild: ElementRef | undefined;\n\n @ViewChild('content', { static: false }) contentViewChild: ElementRef | undefined;\n\n get modal(): boolean {\n return this.mode === 'modal' || (this.overlayResponsiveOptions && this._window?.matchMedia(this.overlayResponsiveOptions.media?.replace('@media', '') || `(max-width: ${this.overlayResponsiveOptions.breakpoint})`).matches);\n }\n\n get overlayMode(): string {\n return this.mode || (this.modal ? 'modal' : 'overlay');\n }\n\n get overlayOptions(): OverlayOptions {\n return { ...this._config?.overlayOptions, ...this.options }; // TODO: Melhorar o desempenho\n }\n\n get overlayResponsiveOptions(): ResponsiveOverlayOptions {\n return { ...this.overlayOptions?.responsive, ...this.responsive }; // TODO: Melhorar o desempenho\n }\n\n get overlayResponsiveDirection(): ResponsiveOverlayDirectionType {\n return this.overlayResponsiveOptions?.direction || 'center';\n }\n\n get overlayEl(): any {\n return this.overlayViewChild?.nativeElement;\n }\n\n get contentEl(): any {\n return this.contentViewChild?.nativeElement;\n }\n\n get targetEl(): any {\n return GIPIDomHandler.getTargetElement(this.target, this.elementRef?.nativeElement);\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: Document,\n private _config: GIPINgConfig,\n private _zone: NgZone,\n public elementRef: ElementRef,\n public renderer: Renderer2,\n public overlayService: GIPIOverlayService,\n ) {\n this._window = this._document.defaultView;\n }\n\n ngOnInit(): void { }\n\n ngAfterContentInit(): void {\n if (!ObjectUtil.isNull(this.templates)) {\n this.templates.forEach(item => {\n switch (item.getType()) {\n case 'content': {\n this.contentTemplate = item.template;\n break;\n } default: {\n this.contentTemplate = item.template;\n break;\n }\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.hide(this.overlayEl, true);\n\n if (this.overlayEl) {\n GIPIDomHandler.appendOverlay(this.overlayEl, this.targetEl, this.appendTo);\n ZIndexUtils.clear(this.overlayEl);\n }\n\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n this.unbindListeners();\n }\n\n show(overlay?: HTMLElement, isFocus: boolean = false): void {\n this.onVisibleChange(true);\n this.handleEvents('onShow', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n\n isFocus && GIPIDomHandler.focus(this.targetEl);\n this.modal && GIPIDomHandler.addClass(this._document?.body, 'overflow-hidden');\n }\n\n hide(overlay?: HTMLElement, isFocus: boolean = false): void {\n if (!this.visible) {\n return;\n } else {\n this.onVisibleChange(false);\n this.handleEvents('onHide', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n isFocus && GIPIDomHandler.focus(this.targetEl);\n this.modal && GIPIDomHandler.removeClass(this._document?.body, 'overflow-hidden');\n }\n }\n\n alignOverlay(): void {\n !this.modal && GIPIDomHandler.alignOverlay(this.overlayEl, this.targetEl, this.appendTo);\n }\n\n onVisibleChange(visible: boolean): void {\n this._visible = visible;\n this.visibleChange.emit(visible);\n }\n\n onOverlayClick(event: any): void {\n this.isOverlayClicked = true;\n }\n\n onOverlayContentClick(event: MouseEvent): void {\n this.overlayService.add({\n originalEvent: event,\n target: this.targetEl\n });\n\n this.isOverlayContentClicked = true;\n }\n\n onOverlayContentAnimationStart(event: AnimationEvent): void {\n switch (event.toState) {\n case 'visible': {\n this.handleEvents('onBeforeShow', { overlay: this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n\n if (this.autoZIndex) {\n ZIndexUtils.set(this.overlayMode, this.overlayEl, this.baseZIndex + this._config?.zIndex[this.overlayMode]);\n }\n\n GIPIDomHandler.appendOverlay(this.overlayEl, this.appendTo === 'body' ? this._document.body : this.appendTo, this.appendTo);\n this.alignOverlay();\n\n break;\n } case 'void': {\n this.handleEvents('onBeforeHide', { overlay: this.overlayEl, target: this.targetEl, mode: this.overlayMode });\n this.modal && GIPIDomHandler.addClass(this.overlayEl, 'component-overlay-leave');\n break;\n }\n }\n\n this.handleEvents('onAnimationStart', event);\n }\n\n onOverlayContentAnimationDone(event: AnimationEvent): void {\n const container: any = this.overlayEl || event.element.parentElement;\n switch (event.toState) {\n case 'visible': {\n this.show(container, true);\n this.bindListeners();\n break;\n } case 'void': {\n this.hide(container, true);\n this.unbindListeners();\n GIPIDomHandler.appendOverlay(this.overlayEl, this.targetEl, this.appendTo);\n ZIndexUtils.clear(container);\n this.modalVisible = false;\n break;\n }\n }\n\n this.handleEvents('onAnimationDone', event);\n }\n\n handleEvents(name: string, params: any): void {\n (this as any)[name].emit(params);\n this.options && (this.options as any)[name] && (this.options as any)[name](params);\n this._config?.overlayOptions && (this._config?.overlayOptions as any)[name] && (this._config?.overlayOptions as any)[name](params);\n }\n\n bindListeners(): void {\n this.bindScrollListener();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindDocumentKeyboardListener();\n }\n\n unbindListeners(): void {\n this.unbindScrollListener();\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindDocumentKeyboardListener();\n }\n\n bindScrollListener(): void {\n if (!this.scrollHandler) {\n this.scrollHandler = new GIPIConnectedOverlayScrollHandler(this.targetEl, (event: any): void => {\n const valid: any = this.listener\n ? this.listener(event, { type: 'scroll', mode: this.overlayMode, valid: true })\n : true;\n\n valid && this.hide(event, true);\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener(): void {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n bindDocumentClickListener(): void {\n if (!this.documentClickListener) {\n this.documentClickListener = this.renderer.listen(this._document, 'click', event => {\n const isTargetClicked: any = this.targetEl && (this.targetEl.isSameNode(event.target) || (!this.isOverlayClicked && this.targetEl.contains(event.target)));\n const isDocumentClicked: boolean = this.documentClick ? this.documentClick() : false;\n const isOutsideClicked: boolean = !isTargetClicked && !this.isOverlayContentClicked && !isDocumentClicked;\n\n const valid: any = this.listener\n ? this.listener(event, { type: 'outside', mode: this.overlayMode, valid: event.which !== 3 && isOutsideClicked })\n : isOutsideClicked;\n\n valid && this.hide(event);\n this.isOverlayClicked = this.isOverlayContentClicked = false;\n });\n }\n }\n\n unbindDocumentClickListener(): void {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n bindDocumentResizeListener(): void {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this._window, 'resize', event => {\n const valid: any = this.listener\n ? this.listener(event, { type: 'resize', mode: this.overlayMode, valid: !GIPIDomHandler.isTouchDevice() })\n : !GIPIDomHandler.isTouchDevice();\n\n valid && this.hide(event, true);\n });\n }\n }\n\n unbindDocumentResizeListener(): void {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n\n bindDocumentKeyboardListener(): void {\n if (this.documentKeyboardListener) {\n return;\n }\n\n this._zone.runOutsideAngular(() => {\n this.documentKeyboardListener = this.renderer.listen(this._window, 'keydown', (event) => {\n if (!this.overlayOptions.hideOnEscape || event.keyCode !== 27) {\n return;\n }\n\n const valid: any = this.listener\n ? this.listener(event, { type: 'keydown', mode: this.overlayMode, valid: !GIPIDomHandler.isTouchDevice() })\n : !GIPIDomHandler.isTouchDevice();\n\n if (valid) {\n this._zone.run(() => {\n this.hide(event, true);\n });\n }\n });\n });\n }\n\n unbindDocumentKeyboardListener(): void {\n if (this.documentKeyboardListener) {\n this.documentKeyboardListener();\n this.documentKeyboardListener = null;\n }\n }\n\n}\n","import { A, ENTER, ESCAPE, NINE, SPACE, Z, ZERO } from '@angular/cdk/keycodes';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { PageDTO } from '../../../core/models/dto/page.dto';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIOverlayComponent } from '../overlay/overlay.component';\n\nexport interface AddChange<T> {\n values: T | T[];\n selectedAll?: boolean;\n}\n\n/** A altura dos itens selecionados em unidades `px`. */\nconst OPTION_HEIGHT_PX = 40;\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select`,\n exportAs: 'gipiInputSelect',\n templateUrl: './input-select.component.html',\n styleUrls: ['./input-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectComponent => GIPIInputSelectComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectComponent<T> implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-${nextUniqueId++}`;\n\n private _cache: any;\n\n private _pageModel: PageDTO<T>;\n\n private _onDestroy: Subject<void> = new Subject<void>();\n\n _itemSizeScrollViewport: number = 5;\n\n _totalOptions: number;\n\n _overlayVisible: boolean = false;\n\n _formControlSearch: FormControl = new FormControl({ value: '', disabled: false });\n\n inputFieldValue: string = '';\n\n inputFieldValueSelected: number = 0;\n\n toggleAllCheckboxChecked: boolean = false;\n toggleAllCheckboxIndeterminate: boolean = false;\n\n isLoading: number = 0;\n\n // @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput: ElementRef;\n @ViewChild('formfieldSelectSearchInput', { read: GIPIFormFieldComponent, static: true }) formfieldSelectSearchInput: GIPIFormFieldComponent;\n\n @ViewChild('formFieldSelect', { read: GIPIFormFieldComponent, static: false }) formFieldSelect: GIPIFormFieldComponent;\n\n @ViewChild('overlaySelect', { read: GIPIOverlayComponent, static: false }) overlaySelect: GIPIOverlayComponent;\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) private cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n @Input() id: string | number = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() labelSelectAll: string = 'Selecionar todos';\n\n @Input() multiple: boolean = false;\n\n // Mostrar/ocultar o botão limpar opções selecionadas\n @Input() showClear: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() hideOnEscape: boolean = true;\n\n @Input() showSelectAll: boolean = false;\n\n @Input() showFooter: boolean = false;\n\n @Input() infiniteScroll: boolean = true;\n\n @Input() showSearch: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() property: string;\n\n @Input() trackBy: string;\n\n @Input() appendTo: any;\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn!: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n @Input() pageSize: number = 5;\n\n // Input search --------\n // Ativar limpar input ao pressionar escape\n @Input() enableClearOnEscapePressed: boolean = true;\n // ---------------------\n\n private _disabled: boolean = false;\n @Input() set disabled(value: boolean) {\n this._disabled = value;\n this._disableInputSearch();\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n private _loading: boolean = false;\n @Input() set loading(value: boolean) {\n this._loading = value;\n this._disableInputSearch();\n }\n get loading(): boolean {\n return this._loading;\n }\n\n private _paramNextBatch: any;\n @Input() set paramNextBatch(val: any) {\n this._paramNextBatch = val;\n }\n get paramNextBatch(): any {\n return this._paramNextBatch;\n }\n\n private _value: T | T[];\n @Input() set value(value: T | T[]) {\n this._value = value;\n\n if (this.multiple) {\n if (Array.isArray(value) && value && value.length) {\n const firstValue = value[0];\n this.inputFieldValue = this.property ? firstValue[this.property] : this.getPropertyValue(firstValue);\n this.inputFieldValueSelected = value.length;\n } else {\n this.inputFieldValue = '';\n this.inputFieldValueSelected = 0;\n }\n\n } else {\n if (!Array.isArray(value) && value) {\n this.inputFieldValue = this.property ? value[this.property] : this.getPropertyValue(value);\n this.inputFieldValueSelected = 0;\n } else {\n this.inputFieldValue = '';\n this.inputFieldValueSelected = 0;\n }\n }\n\n this.onChange(value);\n this.onSelectChange.emit(value);\n this.onTouch();\n this._changeDetectorRef.markForCheck();\n }\n get value(): T | T[] {\n return this._value;\n }\n\n private _options: T[];\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClose: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onSelectChange: EventEmitter<T | T[]> = new EventEmitter<T | T[]>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() onSearchChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onAddChange: EventEmitter<AddChange<T>> = new EventEmitter<AddChange<T>>();\n\n get scrollViewportHeight(): number {\n let height: number = 0;\n if (this.options && this.options.length) {\n height = (this.options.length * OPTION_HEIGHT_PX) - (this.pageSize === this.options.length ? OPTION_HEIGHT_PX : 0);\n }\n\n if (!ObjectUtil.isNull(this.overlaySelect)) {\n this.overlaySelect.alignOverlay();\n }\n\n return height;\n }\n\n get valueSearch(): string {\n return this._formControlSearch.value;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n this._formControlSearch.valueChanges\n .pipe(\n map((value: string): string => value),\n debounceTime(1000),\n distinctUntilChanged(),\n takeUntil(this._onDestroy)\n )\n .subscribe((value: string): void => this._searchChange(value));\n\n this.indeterminateAllCheckbox();\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => obj && this.trackBy && obj[this.trackBy] ? obj[this.trackBy] : obj;\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n compareFn(f1: T, f2: T): boolean {\n if (!this.property && !this.propertyFn) {\n throw new Error('O parâmetro property ou propertyFn deve conter um valor');\n }\n\n if (!this.property && this.propertyFn && f1 && f2) {\n const propF1 = this.getPropertyValue(f1);\n const propF2 = this.getPropertyValue(f2);\n return propF1 === propF2;\n }\n\n return f1 && f2 && f1[this.property] === f2[this.property];\n }\n\n public getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNull(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n } else if (this.property) {\n return this._getValue(entity, this.property);\n }\n }\n return '';\n }\n\n private _getValue(entity: T, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showOverlay();\n this.onFocus.emit(event);\n }\n }\n\n public onInputClick(): void {\n if (!this.disabled) {\n this.showOverlay();\n\n if (!this._overlayVisible) {\n this.formFieldSelect.focus();\n }\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: any): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (this._overlayVisible) {\n this.hideOverlay();\n event.preventDefault();\n }\n }\n }\n\n public onClearOptionsClick(event: Event): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (this.multiple && Array.isArray(this.value)) {\n this.value = [];\n } else {\n this.value = null;\n }\n\n this.toggleAllCheckboxChecked = false;\n this.toggleAllCheckboxIndeterminate = false;\n this._changeDetectorRef.detectChanges();\n this.onSelectChange.emit(this.value);\n\n this._searchSelectInputFocus();\n event.stopImmediatePropagation();\n }\n\n public showOverlay(): void {\n if (!this._overlayVisible) {\n this._overlayVisible = true;\n this.indeterminateAllCheckbox();\n this.onOpenedChange.emit(this._overlayVisible);\n this._changeDetectorRef.detectChanges();\n\n if (ObjectUtil.isNull(this._cache)) {\n this.onScroll();\n }\n }\n }\n\n public hideOverlay(): void {\n this._overlayVisible = false;\n this.onOpenedChange.emit(this._overlayVisible);\n this._cache = {};\n this._changeDetectorRef.markForCheck();\n }\n\n public toggleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (!this._overlayVisible) {\n this.showOverlay();\n } else {\n this.hideOverlay();\n }\n }\n }\n\n // Infinite scroll ------------------------------------------------\n async onScroll() {\n if (!this.infiniteScroll) {\n return;\n }\n if (ObjectUtil.isNull(this.nextBatchFn)) {\n console.error('A função \"nextBatchFn\" é obrigatória e não foi informada');\n return;\n }\n if (!ObjectUtil.isNull(this._pageModel) && (this._pageModel.totalPages === this._pageModel.number)) {\n return;\n }\n\n const pageNumber: number = !ObjectUtil.isNull(this._pageModel) ? this._pageModel.number + 1 : 0;\n\n // Mantemos um índice de páginas carregadas pelo servidor para não carregarmos os mesmos dados duas vezes\n // Isso é baseado na página do servidor, não na interface do usuário\n if (ObjectUtil.isNull(this._cache)) {\n this._cache = {};\n }\n if (this._cache[pageNumber]) {\n return;\n }\n this._cache[pageNumber] = true;\n\n this.isLoading++;\n\n await this.nextBatchFn(this._formControlSearch.value, pageNumber, this.paramNextBatch).then(pagedData => {\n this._pageModel = pagedData;\n this._totalOptions = pagedData.totalElements;\n\n if (!this.options) {\n this.options = [];\n }\n\n // Deslocamento da linha inicial. Esta é a posição para inserir os novos dados\n const start = this._pageModel.number * this.pageSize;\n\n // Copiar dados existentes\n const options = [...this.options];\n\n // Inserir novas linhas na posição correta\n options.splice(start, this.pageSize, ...pagedData.content);\n\n // Volta o array de opções ja atualizado para exibição\n this.options = options;\n\n if (this.toggleAllCheckboxChecked) {\n this.onChangeToggleAllCheckbox();\n } else {\n this.indeterminateAllCheckbox();\n }\n\n\n // Diminuir o contador de chamadas de API pendentes\n this.isLoading--;\n }, error => {\n this.isLoading = 0;\n });\n\n if (!ObjectUtil.isNull(this.cdkVirtualScrollViewPort) && this.options && this.options.length) {\n this.cdkVirtualScrollViewPort.scrollToIndex(this.options.length, 'smooth');\n this.cdkVirtualScrollViewPort.checkViewportSize();\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n // Options --------------------------------------------------------\n public onButtonSelectOptionClick(option: T): void {\n if (this.multiple) {\n if (!this.value) {\n this.value = [];\n }\n\n if (Array.isArray(this.value)) {\n const indexOption: number = this.value.findIndex(o => ObjectUtil.equals(o, option));\n if (indexOption >= 0) {\n const lValue = this.value;\n lValue.splice(indexOption, 1);\n this.value = [...lValue];\n } else {\n this.value = [...this.value, option];\n }\n }\n } else {\n if (!Array.isArray(this.value)) {\n this.value = option;\n }\n }\n\n this.indeterminateAllCheckbox();\n\n this.onSelectChange.emit(this.value);\n this._changeDetectorRef.detectChanges();\n }\n\n public indeterminateAllCheckbox(): void {\n if (this.multiple && this.showSelectAll) {\n if (\n !Array.isArray(this.value) ||\n !this.value ||\n (this.value && !this.value.length) ||\n !this.options ||\n (this.options && !this.options.length)\n ) {\n this.toggleAllCheckboxChecked = false;\n this.toggleAllCheckboxIndeterminate = false;\n }\n\n if (Array.isArray(this.value)) {\n if (this.infiniteScroll) {\n this.toggleAllCheckboxChecked = this.value && this._pageModel && (this.value.length > 0) && (this._totalOptions > 0) && (this.value.length === this._totalOptions);\n this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.value.length < this._totalOptions);\n } else {\n this.toggleAllCheckboxChecked = this.value && (this.value.length > 0) && this.options && (this.options.length > 0) && (this.value.length === this.options.length);\n this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.options.length > 0) && (this.value.length < this.options.length);\n }\n }\n\n this._changeDetectorRef.detectChanges();\n }\n }\n\n public optionCheckboxIsChecked(option: T): boolean {\n if (!this.multiple) {\n return false;\n }\n\n if (Array.isArray(this.value) && (this.value && this.value.length)) {\n this._changeDetectorRef.markForCheck();\n return this.value.findIndex(o => ObjectUtil.equals(o, option)) > -1;\n }\n }\n\n public onClickSelectAllByOption(): void {\n if (this.disabled || this.loading) {\n return;\n }\n\n this.toggleAllCheckboxChecked = !this.toggleAllCheckboxChecked;\n this.onChangeToggleAllCheckbox();\n }\n\n public onChangeToggleAllCheckbox(): void {\n if (this.multiple) {\n if (this.toggleAllCheckboxChecked) {\n this.value = [...this.options];\n } else {\n this.value = [];\n }\n\n this.indeterminateAllCheckbox();\n }\n }\n\n public onClickAddOptions(): void {\n if (this.multiple && !this.showSelectAll) {\n const addChange: AddChange<T> = {\n values: this.value,\n selectedAll: false\n };\n this.onAddChange.emit(addChange);\n }\n }\n\n // Input search --------------------------------------------------\n private _disableInputSearch(): void {\n if (this.disabled || this.loading) {\n this._formControlSearch.disable();\n } else {\n this._formControlSearch.enable();\n }\n }\n\n private _searchChange(value: string): void {\n if (this._overlayVisible) {\n this.loading = true;\n this.onSearchChange.emit(value);\n\n this._pageModel = null;\n this.options = [];\n this._cache = {};\n\n this.onScroll();\n this.loading = false;\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Focaliza o input de pesquisa\n */\n public _searchSelectInputFocus(): void {\n if (ObjectUtil.isNull(this.formfieldSelectSearchInput) || !this._overlayVisible) {\n return;\n }\n // Seta o foco\n this.formfieldSelectSearchInput.focus();\n }\n\n /**\n * Redefine o valor do input de pesquisa atual\n * @param focus se deve focar após a redefinição\n */\n public _searchSelectInputReset(focus?: boolean): void {\n this._formControlSearch.setValue('');\n if (focus) {\n this._searchSelectInputFocus();\n }\n }\n\n /**\n * Manipula o evento de tecla pressionada.\n * Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.\n * @param event\n */\n public onInputSearchKeydown(event: KeyboardEvent): void {\n // Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção\n if (\n (event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n ) {\n event.stopPropagation();\n }\n\n if (this.multiple && event.key && event.keyCode === ENTER) {\n // Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais\n setTimeout((): void => this._searchSelectInputFocus());\n }\n\n // Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa\n if (this.enableClearOnEscapePressed && (event.keyCode === ESCAPE) && this._formControlSearch.value) {\n this._searchSelectInputReset(true);\n event.stopPropagation();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, Renderer2, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material/radio';\n\nimport { PageDTO } from '../../../core/models/dto/page.dto';\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIInputSelectComponent } from '../input-select/input-select.component';\nimport { GIPIOverlayComponent } from '../overlay/overlay.component';\n\nexport type FilterType = 'TO_OMIT' | 'ALL' | 'BY_SELECTION';\n\nexport interface ApplyChange<T> {\n filterType: FilterType;\n values: T[];\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select-listbox`,\n exportAs: 'gipiInputSelectListbox',\n templateUrl: './input-select-listbox.component.html',\n styleUrls: ['./input-select-listbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectListboxComponent => GIPIInputSelectListboxComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-listbox',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectListboxComponent<T> implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-listbox-${nextUniqueId++}`;\n\n _isOverlayChildrenClicked: boolean = false;\n\n _overlayVisible: boolean = false;\n\n _selectEntityOpened: boolean = false;\n\n _radioValue: FilterType = 'ALL';\n\n @ViewChild('formFieldSelectListbox', { read: GIPIFormFieldComponent, static: false }) formFieldSelectListbox: GIPIFormFieldComponent;\n\n @ViewChild('overlaySelectListbox', { read: GIPIOverlayComponent, static: false }) overlaySelectListbox: GIPIOverlayComponent;\n\n @ViewChild('inputSelect', { read: GIPIInputSelectComponent, static: false }) inputSelect: GIPIInputSelectComponent<T>;\n\n @Input() id: string | number = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() placeholderSelected: string = 'Opções selecionadas';\n\n @Input() placeholderSearch: string = 'Selecionar';\n\n @Input() multiple: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() readonly: boolean;\n\n @Input() required: boolean;\n\n @Input() hideFilterType: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() hideOnEscape: boolean = true;\n\n @Input() showSearch: boolean = true;\n\n @Input() property: string;\n\n @Input() trackBy: string;\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n _value: T[];\n @Input() set value(value: T[]) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n }\n get value(): T[] {\n return this._value;\n }\n\n _options: T[];\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onClose: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() onSelectChange: EventEmitter<T[]> = new EventEmitter<T[]>();\n @Output() onApply: EventEmitter<ApplyChange<T>> = new EventEmitter<ApplyChange<T>>();\n\n get valueInput(): string {\n if (this._radioValue === 'ALL') {\n return 'Todas as opções selecionadas';\n }\n\n if (!ArrayUtil.isEmpty(this.value)) {\n return this.placeholderSelected;\n }\n\n return !StringUtil.isEmpty(this.placeholder) ? this.placeholder : '';\n }\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n ) { }\n\n ngOnInit() { }\n\n trackByOption: TrackByFunction<T> = (index, obj) => this.trackBy ? obj[this.trackBy] : obj;\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n public getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNull(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n } else if (this.property) {\n return this._getValue(entity, this.property);\n }\n }\n return '';\n }\n\n private _getValue(entity: T, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showOverlay();\n }\n this.onFocus.emit(event);\n }\n\n public onInputClick(): void {\n if (!this.disabled) {\n this.showOverlay();\n\n if (!this._overlayVisible) {\n this.formFieldSelectListbox.focus();\n }\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (this._overlayVisible) {\n this.hideOverlay();\n }\n }\n }\n\n public showOverlay(): void {\n if (!this._overlayVisible) {\n this._overlayVisible = true;\n this.onOpenedChange.emit(this._overlayVisible);\n this._changeDetectorRef.detectChanges();\n }\n }\n\n public hideOverlay(): void {\n this._overlayVisible = false;\n this._changeDetectorRef.markForCheck();\n }\n\n public toggleOverlay(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n if (!this._overlayVisible) {\n this.showOverlay();\n } else {\n this.hideOverlay();\n }\n }\n }\n\n public onSelectEntityOpened(isOpened: boolean): void {\n this._selectEntityOpened = isOpened;\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onChangeInputSelect(values: T[], ngModelRadioGroup: NgModel): void {\n if ((!ArrayUtil.isEmpty(values)) && (this._radioValue === 'ALL')) {\n this.onClickRadioButton('BY_SELECTION', ngModelRadioGroup);\n }\n }\n\n @HostListener('window:resize', ['$event'])\n resizeOverlay(event: UIEvent): void {\n if (this._overlayVisible) {\n this.hideOverlay();\n this._changeDetectorRef.detectChanges();\n }\n }\n\n documentClick = () => {\n return this._selectEntityOpened;\n }\n\n // Options --------------------------------------------------------\n onRemoveOptionsSelected(option: T, inputSelect: GIPIInputSelectComponent<T>): void {\n const values = [...this.value];\n const index: number = values.findIndex(o => o === option);\n if (index >= 0) {\n values.splice(index, 1);\n this.value = [...values];\n\n if (!ArrayUtil.isEmpty(values)) {\n inputSelect.indeterminateAllCheckbox();\n } else {\n inputSelect.toggleAllCheckboxChecked = false;\n inputSelect.toggleAllCheckboxIndeterminate = false;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n }\n\n onChangeRadioGroup(radioChange: MatRadioChange, ngModel: NgModel): void {\n if ((radioChange.value === this._radioValue) || (this._radioValue === 'BY_SELECTION')) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n if ((radioChange.value === 'ALL') && (!ArrayUtil.isEmpty(this.value))) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n this._radioValue = radioChange.value;\n }\n }\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onClickRadioButton(radioValue: FilterType, ngModel: NgModel): void {\n if (radioValue === this._radioValue) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n if ((radioValue === 'ALL') && (!ArrayUtil.isEmpty(this.value))) {\n ngModel.reset();\n this._radioValue = 'BY_SELECTION';\n } else {\n this._radioValue = radioValue;\n }\n }\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onClickClear(inputSelect?: GIPIInputSelectComponent<T>): void {\n this.value = [];\n if (!ObjectUtil.isNull(this.inputSelect)) {\n inputSelect = this.inputSelect;\n }\n if (!ObjectUtil.isNull(inputSelect)) {\n inputSelect.toggleAllCheckboxChecked = false;\n inputSelect.toggleAllCheckboxIndeterminate = false;\n }\n\n this._radioValue = this.hideFilterType ? 'BY_SELECTION' : 'ALL';\n\n if (!ObjectUtil.isNull(this.overlaySelectListbox)) {\n this.overlaySelectListbox.alignOverlay();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n onClickApply(): void {\n const applyChange: ApplyChange<T> = {\n filterType: this._radioValue,\n values: this.value,\n };\n this.onApply.emit(applyChange);\n this.hideOverlay();\n\n }\n\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, NINE, SPACE, UP_ARROW, Z, ZERO } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Inject, Input, OnChanges, OnDestroy, OnInit, Optional, QueryList, SimpleChanges, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatOption, MatSelect } from '@angular/material';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport { delay, filter, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\n@Component({\n selector: `gipi-input-search`,\n exportAs: 'gipiInputSearch',\n templateUrl: './input-search.component.html',\n styleUrls: ['./input-search.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSearchComponent => GIPIInputSearchComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-search',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSearchComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n\n // Valor de pesquisa atual\n get value(): string {\n return this._formControl.value;\n }\n\n private _lastExternalInputValue: string;\n\n // Referência às opções MatSelect\n public _options$: BehaviorSubject<QueryList<MatOption>> = new BehaviorSubject<QueryList<MatOption>>(null);\n public set _options(_options: QueryList<MatOption>) {\n this._options$.next(_options);\n }\n public get _options(): QueryList<MatOption> {\n return this._options$.getValue();\n }\n\n private optionsList$: Observable<MatOption[]> = this._options$.pipe(\n switchMap((_options: QueryList<MatOption>): Observable<any> => _options\n ? _options.changes.pipe(\n map((options: any): any => options.toArray()),\n startWith<MatOption[]>(_options.toArray()),)\n : of(null)\n )\n );\n\n private optionsLength$: Observable<number> = this.optionsList$.pipe(\n map((options: MatOption[]): number => options ? options.length : 0)\n );\n\n public _formControl: FormControl = new FormControl('');\n\n // Se deve mostrar a mensagem sem entradas encontradas\n public _showNoEntriesFound$: Observable<boolean> = combineLatest([\n this._formControl.valueChanges,\n this.optionsLength$\n ]).pipe(\n map(([value, optionsLength]: [any, number]): boolean => value && optionsLength === this.getOptionsLengthOffset())\n );\n\n // Subject emitido quando o componente foi destruído\n private _onDestroy: Subject<void> = new Subject<void>();\n\n // Referência ao descendente ativo para suporte ARIA.\n private activeDescendant: HTMLElement;\n\n @Input() placeholderLabel: string = 'Pesquisar';\n\n @Input() clearSearchInput: boolean = true;\n\n // Se deve mostrar o indicador de pesquisa em andamento\n @Input() searching: boolean = false;\n\n // Desativa o foco inicial do campo de entrada\n @Input() disableInitialFocus: boolean = false;\n\n // Ativar limpar input ao pressionar escape\n @Input() enableClearOnEscapePressed: boolean = false;\n\n /**\n * Impede que a chave home/end seja propagada para mat-select,\n * permitindo mover o cursor dentro da entrada de pesquisa em vez de navegar pelas opções\n */\n @Input() preventHomeEndKeyPropagation: boolean = false;\n\n // Desativa a rolagem para as opções ativas quando a lista de opções é alterada. Útil para pesquisa do lado do servidor\n @Input() disableScrollToActiveOnOptionsChanged: boolean = false;\n\n // Mostrar/ocultar o botão limpar pesquisa da entrada de pesquisa\n @Input() hideClearSearchButton: boolean = false;\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('searchSelectInput', { read: ElementRef, static: true }) searchSelectInput: ElementRef;\n\n // Referência ao campo de entrada de pesquisa\n @ViewChild('innerSelectSearch', { read: ElementRef, static: true }) innerSelectSearch: ElementRef;\n\n // Adiciona a classe mat-select-search-inside-mat-option se o itss-input-search estiver\n // dentro do mat-option\n @HostBinding('class.mat-select-search-inside-mat-option')\n get isInsideMatOption(): boolean {\n return !!this.matOption;\n }\n\n constructor(\n @Inject(MatSelect) public matSelect: MatSelect,\n public changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MatOption) public matOption: MatOption = null,\n @Optional() @Inject(MatFormField) public matFormField: MatFormField = null,\n ) { }\n\n ngOnInit(): void {\n // Definir classe de opção mat personalizada se o componente foi colocado dentro de uma opção mat\n if (this.matOption) {\n this.matOption.disabled = true;\n this.matOption._getHostElement().classList.add('contains-mat-select-search');\n this.matOption._getHostElement().setAttribute('aria-hidden', 'true');\n } else {\n console.error('<gipi-select-search> deve ser colocado dentro de um elemento <mat-option>');\n }\n\n // Quando o painel suspenso de seleção é aberto ou fechado\n this.matSelect.openedChange\n .pipe(\n delay(1),\n takeUntil(this._onDestroy)\n )\n .subscribe((opened: boolean): void => {\n if (opened) {\n this.updateInputWidth();\n\n // Focar o campo de pesquisa ao abrir\n if (!this.disableInitialFocus) {\n this._focus();\n }\n } else {\n // Limpá-lo ao fechar\n if (this.clearSearchInput) {\n this._reset();\n }\n }\n });\n\n // Definir o primeiro item ativo após as opções alteradas\n this.matSelect.openedChange\n .pipe(\n take(1),\n switchMap((): Observable<any> => {\n this._options = this.matSelect.options;\n\n // Variável de fechamento para rastrear a primeira opção mais recente.\n // Para evitar que a lista role para o topo quando as opções são adicionadas ao final da lista\n // (por exemplo: rolagem infinita), comparamos apenas as alterações nas primeiras opções para\n // determinar se devemos definir o primeiro item como ativo. Isso evita a rolagem desnecessária\n // para o topo da lista quando as opções são anexadas, mas permite que o primeiro item da lista\n // seja definido como ativo por padrão quando não há seleção ativa.\n let previousFirstOption: MatOption = this._options.toArray()[this.getOptionsLengthOffset()];\n\n return this._options.changes\n .pipe(\n tap((): void => {\n // Evitar o erro \"expression has been changed\"\n setTimeout((): void => {\n // Converter a QueryList em uma matriz\n const options: MatOption[] = this._options.toArray();\n\n // O verdadeiro primeiro item é compensado por 1\n const currentFirstOption: MatOption = options[this.getOptionsLengthOffset()];\n\n const keyManager: ActiveDescendantKeyManager<MatOption> = this.matSelect._keyManager;\n if (keyManager && this.matSelect.panelOpen) {\n\n // Definir primeiro item ativo e largura de entrada\n\n // Verifique se a primeira opção nessas alterações é diferente da anterior.\n const firstOptionIsChanged: boolean = !this.matSelect.compareWith(previousFirstOption, currentFirstOption);\n\n // CASO: A primeira opção é diferente agora.\n // Indica que devemos defini-lo como ativo e rolar para o topo.\n if (firstOptionIsChanged\n || !keyManager.activeItem\n || !options.find((option: MatOption): boolean => this.matSelect.compareWith(option, keyManager.activeItem))) {\n keyManager.setFirstItemActive();\n }\n\n // Aguarde as alterações na largura do painel\n setTimeout((): void => {\n this.updateInputWidth();\n });\n }\n\n // Atualize nossa referência\n previousFirstOption = currentFirstOption;\n });\n })\n );\n })\n )\n .pipe(takeUntil(this._onDestroy))\n .subscribe();\n\n // Adicione ou remova a classe css dependendo se deseja mostrar a mensagem sem entradas encontradas\n // obs: isso é hacky\n this._showNoEntriesFound$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((showNoEntriesFound: boolean): void => {\n // Definir nenhuma classe de entrada encontrada na mat-option\n if (this.matOption) {\n if (showNoEntriesFound) {\n this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n } else {\n this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n }\n }\n });\n\n // Redimensione a largura de entrada quando a viewport for redimensionada,\n // ou seja, a largura do acionador pode ser redimensionada.\n this._viewportRuler.change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe((): void => {\n if (this.matSelect.panelOpen) {\n this.updateInputWidth();\n }\n });\n\n this.optionsList$.pipe(\n takeUntil(this._onDestroy)\n ).subscribe((): void => {\n // Atualizar visualização quando as opções disponíveis mudarem\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.searching) {\n this._formControl.disable();\n } else {\n this._formControl.enable();\n this._focus();\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n onTouched: Function = (_: any): void => { };\n\n registerOnChange(fn: (value: string) => void): void {\n this._formControl.valueChanges.pipe(\n filter((value: any): boolean => value !== this._lastExternalInputValue),\n tap((): any => this._lastExternalInputValue = undefined),\n takeUntil(this._onDestroy)\n ).subscribe(fn);\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n writeValue(value: string): void {\n this._lastExternalInputValue = value;\n this._formControl.setValue(value);\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Manipula o evento de tecla pressionada com MatSelect.\n * Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.\n * @param event\n */\n _handleKeydown(event: KeyboardEvent): void {\n // Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção\n if ((event.key && event.key.length === 1) ||\n (event.keyCode >= A && event.keyCode <= Z) ||\n (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n (event.keyCode === SPACE)\n || (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))\n ) {\n event.stopPropagation();\n }\n\n if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n // Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais\n setTimeout((): void => this._focus());\n }\n\n // Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa\n if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n this._reset(true);\n event.stopPropagation();\n }\n }\n\n /**\n * Manipula o evento de ativação de chave com MatSelect.\n * Permite, por ex. o anúncio do Descendente atualmente ativo por leitores de tela.\n */\n _handleKeyup(event: KeyboardEvent): void {\n if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n const ariaActiveDescendantId: string = this.matSelect._getAriaActiveDescendant();\n const index: number = this._options.toArray().findIndex((item: MatOption): boolean => item.id === ariaActiveDescendantId);\n if (index !== -1) {\n this.unselectActiveDescendant();\n this.activeDescendant = this._options.toArray()[index]._getHostElement();\n this.activeDescendant.setAttribute('aria-selected', 'true');\n this.searchSelectInput.nativeElement.setAttribute('aria-activedescendant', ariaActiveDescendantId);\n }\n }\n }\n\n onBlur(): void {\n this.unselectActiveDescendant();\n this.onTouched();\n }\n\n /**\n * Focaliza o campo de entrada de pesquisa\n */\n public _focus(): void {\n if (!this.searchSelectInput || !this.matSelect.panel) {\n return;\n }\n // salve e restaure o scrollTop do painel, pois será redefinido por focus ()\n // obs: isso é hacky\n const panel: any = this.matSelect.panel.nativeElement;\n const scrollTop: any = panel.scrollTop;\n\n // Seta o foco\n this.searchSelectInput.nativeElement.focus();\n\n panel.scrollTop = scrollTop;\n }\n\n /**\n * Redefine o valor de pesquisa atual\n * @param focus se deve focar após a redefinição\n */\n public _reset(focus?: boolean): void {\n this._formControl.setValue('');\n if (focus) {\n this._focus();\n }\n }\n\n /**\n * Defina a largura do innerSelectSearch para ajustar até mesmo as barras de rolagem personalizadas\n * E apoiar todos os sistemas de operação\n */\n public updateInputWidth(): void {\n if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n return;\n }\n let element: HTMLElement = this.innerSelectSearch.nativeElement;\n let panelElement: HTMLElement;\n while (element = element.parentElement) {\n if (element.classList.contains('mat-select-panel')) {\n panelElement = element;\n break;\n }\n }\n if (panelElement) {\n this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n }\n }\n\n /**\n * Determine o deslocamento para o comprimento que pode ser causado pelo matOption opcional usado como uma entrada de pesquisa.\n */\n private getOptionsLengthOffset(): number {\n if (this.matOption) {\n return 1;\n } else {\n return 0;\n }\n }\n\n private unselectActiveDescendant(): void {\n if (this.activeDescendant) {\n this.activeDescendant.removeAttribute('aria-selected');\n }\n this.searchSelectInput.nativeElement.removeAttribute('aria-activedescendant');\n }\n\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TrackByFunction, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { AbstractModel, ArrayUtil, ObjectUtil, PageDTO, StringUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select-paged`,\n exportAs: 'gipiInputSelectPaged',\n templateUrl: './input-select-paged.component.html',\n styleUrls: ['./input-select-paged.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectPagedComponent => GIPIInputSelectPagedComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-paged',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectPagedComponent<T> implements OnInit, OnChanges, ControlValueAccessor, OnDestroy {\n\n private _name: string = `gipi-input-select-paged-${nextUniqueId++}`;\n\n valueSearchCtrl: FormControl = new FormControl('');\n\n page: PageDTO<T>;\n\n totalOptions: number = 0;\n\n subscriptions: Subscription[] = [];\n\n searching: boolean = false;\n\n @ViewChild('matSelect', { static: false }) private matSelect: MatSelect;\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) private cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string;\n\n @Input() ariaLabel: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() disabled: boolean;\n\n @Input() required: boolean;\n\n // Mostrar/ocultar o input para pesquisar\n @Input() hideFieldSearch: boolean = false;\n\n // Mostrar/ocultar o botão limpar opções selecionadas\n @Input() showClear: boolean = false;\n\n @Input() debounceTime: number = 1000; // milissegundos\n\n // Valores que não serão exibidos nas opções\n @Input() valuesExclud: T[] = [];\n\n @Input() classSelectPanel: string;\n\n @Input() trackyBy: string = 'id';\n\n @Input() infiniteScroll: boolean = true;\n\n @Input() property: string = 'description';\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() nextBatchFn: (researchField: string, page: number, paramNextBatch?: any) => Promise<PageDTO<T>>;\n\n private _paramNextBatch: any;\n @Input() set paramNextBatch(val: any) {\n this._paramNextBatch = val;\n }\n get paramNextBatch(): any {\n return this._paramNextBatch;\n }\n\n private _model: T;\n @Input() set model(value: T) {\n this._model = value;\n this.modelChange.emit(this._model);\n this.onChange(this._model);\n this.onTouch(this._model);\n\n this._changeDetectorRef.markForCheck();\n }\n get model(): T {\n return this._model;\n }\n\n private _options: T[] = [];\n @Input() set options(val: T[]) {\n this._options = val;\n }\n get options(): T[] {\n return this._options;\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() selectionChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() searchChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get scrollViewportHeight(): number {\n if (ArrayUtil.isEmpty(this.options)) {\n return 0;\n }\n\n // Cada mat-option possui 3em ou 39px. 3 * quantidade de mat-option\n return (3 * this.options.length);\n };\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n // O debounceTime é utlizado para emitir o valor após o usuário parar\n // de digitar, evitando consulta a toda letra que for digitada.\n // O distinctUntilChanged é utilizado para emitir apenas valores\n // que são diferentes dos valores anteriores emitidos.\n this.subscriptions.push(\n this.valueSearchCtrl.valueChanges\n .pipe(\n map((value: string): string => value),\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n )\n .subscribe((value: string): void => {\n this.onSearchChange(value);\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!ObjectUtil.isNull(changes.model) && !changes.model.isFirstChange()) {\n if (ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.model)) {\n this.options.push(this.model);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => obj && this.trackyBy ? obj[this.trackyBy] : obj;\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this._changeDetectorRef.markForCheck();\n }\n\n compareFn(f1: AbstractModel, f2: AbstractModel): boolean {\n return f1 && f2 && f1.id === f2.id;\n }\n\n getPropertyValue(entity: any): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this.getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n getValue(entity: any, property: string): string {\n if (ObjectUtil.isNull(entity)) {\n return '';\n }\n\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n onSelectionChange(entity: T): void {\n this.selectionChange.emit(entity);\n }\n\n onSearchChange(value: string): void {\n if (this.matSelect.panelOpen) {\n this.searchChange.emit(value);\n\n this.model = null;\n this.onSelectionChange(this.model);\n\n this.page = null;\n this.options = [];\n\n this.onLoadMoreOptions(false);\n }\n }\n\n async onLoadMoreOptions(isInfiniteScroll: boolean, isOpened: boolean = true): Promise<void> {\n if (!this.infiniteScroll) {\n return;\n }\n if (!isOpened) {\n return;\n }\n if (ObjectUtil.isNull(this.nextBatchFn)) {\n console.error('A função nextBatchFn é obrigatória e não foi informada');\n return;\n }\n if (this.searching) {\n return;\n }\n if (!ArrayUtil.isEmpty(this.options) && !ObjectUtil.isNull(this.page)) {\n if (this.options.length === this.page.totalElements) {\n return;\n }\n }\n\n this.cdkVirtualScrollViewPort.scrollToIndex(0, 'smooth');\n this.cdkVirtualScrollViewPort.checkViewportSize();\n\n this.searching = true;\n\n let pageNumber: number = 0;\n if (isInfiniteScroll) {\n pageNumber = !ObjectUtil.isNull(this.page) ? this.page.number + 1 : 1;\n } else {\n this.page = null;\n this.options = [];\n }\n\n await this.nextBatchFn(this.valueSearchCtrl.value, pageNumber, this.paramNextBatch)\n .then(page => {\n this.page = page;\n\n if (!ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n if (!ArrayUtil.isEmpty(this.valuesExclud)) {\n for (let i: number = 0; i < this.valuesExclud.length; i++) {\n const index: number = this.page.content.findIndex(o => this.valuesExclud[i][this.trackyBy] === o[this.trackyBy]);\n this.page.content.splice(index, 1);\n }\n }\n\n this.options = [...this.options, ...this.page.content];\n }\n\n if (!ObjectUtil.isNull(this.model)) {\n const modelInList: T = this.options.find(o => ObjectUtil.equals(o, this.model));\n if (ObjectUtil.isNull(modelInList)) {\n this.options.push(this.model);\n }\n }\n\n this.searching = false;\n })\n .finally(() => {\n this.searching = false;\n });\n\n this._changeDetectorRef.detectChanges();\n }\n\n showClearOptionButton(): boolean {\n let isNewModel: boolean = true;\n if (!ObjectUtil.isNull(this.model)) {\n isNewModel = ObjectUtil.isNewModel(this.model);\n }\n return this.showClear && !isNewModel && (!this.disabled) && (!this.searching);\n }\n\n haveSelected(): boolean {\n const entity: any = this.model;\n if (entity) {\n return entity.id && entity.id > 0;\n }\n return false;\n }\n\n removeOption(): void {\n this.model = null;\n this.onSelectionChange(this.model);\n this.options = [];\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material/radio';\n\nimport { ArrayUtil } from '../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { GIPIFormFieldComponent } from '../form-field/form-field.component';\nimport { GIPIPopoverTrigger } from '../popover/shared/popover-trigger';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-input-select-radio`,\n exportAs: 'gipiInputSelectRadio',\n templateUrl: './input-select-radio.component.html',\n styleUrls: ['./input-select-radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIInputSelectRadioComponent => GIPIInputSelectRadioComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-input-select-radio',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIInputSelectRadioComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n private _name: string = `gipi-input-select-radio-${nextUniqueId++}`;\n\n _enumList: any[] = [];\n\n @ViewChild('formFieldSelectRadio', { read: GIPIFormFieldComponent, static: false }) formFieldSelectRadio: GIPIFormFieldComponent;\n\n @ViewChild(GIPIPopoverTrigger, { static: false }) popoverTrigger: GIPIPopoverTrigger;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string = 'Selecionar';\n\n @Input() required: boolean;\n\n @Input() disabled: boolean = false;\n\n @Input() loading: boolean = false;\n\n @Input() showOnFocus: boolean = true;\n\n @Input() hideOnEscape: boolean = true;\n\n @Input() hideOnClick: boolean = true;\n\n @Input() enum: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n _value: any;\n @Input('value') set value(value: any) {\n this._value = value;\n this.onChange(value);\n this.onTouch();\n }\n get value() {\n return this._value;\n }\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n @Output() onOpenedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n get optionSelected(): string {\n if (this.value && !ArrayUtil.isEmpty(this._enumList)) {\n const selected = this._enumList.find(e => e.key === this.value);\n if (selected) {\n return selected.value;\n }\n }\n\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this._enumList.push(lEnumList[i]);\n }\n }\n } else {\n this._enumList = lEnumList;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n if (!ObjectUtil.isNull(this.popoverTrigger)) {\n this.popoverTrigger.destroyPopover();\n }\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n changeRadioGroup({ value }: MatRadioChange): void {\n this.selectionChange.emit(value);\n\n if (this.hideOnClick) {\n this.popoverTrigger.closePopover();\n }\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n public showPopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.openPopover();\n }\n }\n\n public closePopover(): void {\n if (this.disabled || this.loading) {\n return;\n } else {\n this.popoverTrigger.closePopover();\n }\n }\n\n public onInputFocus(event: Event): void {\n if (this.showOnFocus && !this.disabled) {\n this.showPopover();\n this.onFocus.emit(event);\n event.stopPropagation();\n }\n }\n\n public onInputClick(event: Event): void {\n if (!this.disabled) {\n this.showPopover();\n\n if (!ObjectUtil.isNull(this.popoverTrigger) && !this.popoverTrigger.popoverOpen) {\n this.formFieldSelectRadio.focus();\n }\n\n event.stopPropagation();\n }\n }\n\n public onInputBlur(event: Event): void {\n if (!this.disabled) {\n this.onBlur.emit(event);\n this.onTouch();\n }\n }\n\n public onInputKeydown(event: KeyboardEvent): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n return;\n }\n\n if (\n ((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||\n ((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||\n (event.code.toUpperCase() === 'TAB')\n ) {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n event.preventDefault();\n }\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent): void {\n if (!ObjectUtil.isNull(this.popoverTrigger) && this.popoverTrigger.popoverOpen) {\n this.closePopover();\n event.stopPropagation();\n this._changeDetectorRef.detectChanges();\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-notification`,\n exportAs: 'gipiNotification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPINotificationComponent => GIPINotificationComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-notification',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPINotificationComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() buttonPadding: number | string = 4;\n\n @Input() iconWidth: number | string = 24;\n @Input() iconHeight: number | string = 24;\n\n @Input() icon: string = null;\n\n @Input() svgIcon: string = null;\n\n @Input() disabled: string;\n\n @Input() loading: string;\n\n @Input() tooltip: string;\n\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('focus') onFocus: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('blur') onBlur: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-novelties`,\n exportAs: 'gipiNovelties',\n templateUrl: './novelties.component.html',\n styleUrls: ['./novelties.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPINoveltiesComponent => GIPINoveltiesComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-novelties',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPINoveltiesComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() buttonPadding: number | string = 4;\n\n @Input() iconWidth: number | string = 24;\n @Input() iconHeight: number | string = 24;\n\n @Input() icon: string = null;\n\n @Input() svgIcon: string = null;\n\n @Input() disabled: string;\n\n @Input() loading: string;\n\n @Input() tooltip: string;\n\n @Input() hasNovelties: boolean = false;\n\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output('click') onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('focus') onFocus: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('blur') onBlur: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class PasswordUtil {\n\n public static isValid(password: string): boolean {\n if (StringUtil.isEmpty(password)) {\n return false;\n }\n\n return (\n this.isValidMinLength(password) &&\n this.isValidMaxLength(password) &&\n this.hasUppercase(password) &&\n this.hasLowercase(password) &&\n this.hasNumber(password) &&\n this.hasSpecialChar(password) &&\n !this.hasBackspace(password)\n );\n }\n\n public static isValidMinLength(password: string): boolean {\n return (password.trim().length > 0) && (password.trim().length >= 6);\n }\n\n public static isValidMaxLength(password: string): boolean {\n return (password.trim().length > 0) && (password.trim().length <= 15);\n }\n\n public static hasUppercase(password: string): boolean {\n return (password.trim().length > 0) && (password.toLowerCase() !== password);\n }\n\n public static hasLowercase(password: string): boolean {\n return (password.trim().length > 0) && (password.toUpperCase() !== password);\n }\n\n public static hasNumber(password: string): boolean {\n return (password.trim().length > 0) && (/\\d/.test(password));\n }\n\n public static hasSpecialChar(password: string): boolean {\n return (password.trim().length > 0) && (/[!@#$%^&*()_={};':\"|,.<>?~]/g.test(password));\n }\n\n public static hasBackspace(password: string): boolean {\n return (password.trim.length > 0) && (/\\s/g.test(password));\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { PasswordUtil } from '../../../core/utils/password.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-password-requeriments`,\n exportAs: 'gipiPasswordRequeriments',\n templateUrl: './password-requeriments.component.html',\n styleUrls: ['./password-requeriments.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIPasswordRequerimentsComponent => GIPIPasswordRequerimentsComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-password-requeriments',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIPasswordRequerimentsComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-password-requeriments-${nextUniqueId++}`;\n\n @Input() id: number | string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() disabled: boolean = false;\n\n private _password: string = '';\n @Input() set password(value: string) {\n if (ObjectUtil.isNull(value)) {\n this._password = '';\n } else {\n this._password = value;\n }\n\n if (StringUtil.isEmpty(this._password)) {\n this.onValid.emit(false);\n } else {\n this.onValid.emit(\n this.isValidMinLength &&\n this.isValidMaxLength &&\n this.hasUppercase &&\n this.hasLowercase &&\n this.hasNumber &&\n // this.hasSpecialChar &&\n !this.hasBackspace\n );\n }\n\n this.onChange(this._password);\n this.onTouch();\n }\n get password(): string {\n return this._password;\n }\n\n get isValidMinLength(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.isValidMinLength(this.password));\n }\n\n get isValidMaxLength(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.isValidMaxLength(this.password));\n }\n\n get hasUppercase(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasUppercase(this.password));\n }\n\n get hasLowercase(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasLowercase(this.password));\n }\n\n get hasNumber(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasNumber(this.password));\n }\n\n // get hasSpecialChar(): boolean {\n // return (this.password.trim().length > 0) && (PasswordUtil.hasSpecialChar(this.password));\n // }\n\n get hasBackspace(): boolean {\n return (this.password.trim().length > 0) && (PasswordUtil.hasBackspace(this.password));\n }\n\n @Output() onValid: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.password = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState?(value: boolean): void {\n this.disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { trigger, state, style, animate, transition, AnimationTriggerMetadata, } from '@angular/animations';\n\n/**\n * Abaixo estão todas as animações para o componente popover.\n * A duração da animação e os valores de tempo são baseados no Angular Material.\n */\n\n/**\n * Esta animação controla a entrada e saída do painel popover da página.\n *\n * Quando o painel popover é adicionado ao DOM, ele é dimensionado e esmaecido em sua borda.\n *\n * Quando o painel popover é removido do DOM, ele simplesmente desaparece após um breve atraso para exibir a ondulação.\n */\n\nexport const transformPopover: AnimationTriggerMetadata = trigger('transformPopover', [\n state('enter', style({\n opacity: 1,\n transform: `scale(1)`\n })),\n transition('void => *', [\n style({\n opacity: 0,\n transform: `scale(0)`\n }),\n animate(`200ms cubic-bezier(0.25, 0.8, 0.25, 1)`)\n ]),\n transition('* => void', [\n animate('50ms 100ms linear', style({ opacity: 0 }))\n ])\n]);\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnDestroy, OnInit, Output, TemplateRef, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { transformPopover } from './shared/popover-animations';\nimport { throwPopoverInvalidPositionX, throwPopoverInvalidPositionY } from './shared/popover-errors';\nimport { PopoverPanel } from './shared/popover-interfaces';\nimport { PopoverPositionX, PopoverPositionY, PopoverScrollStrategy, PopoverTriggerEvent } from './shared/popover-types';\n\n@Component({\n selector: `gipi-popover`,\n exportAs: 'gipiPopover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIPopoverComponent => GIPIPopoverComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-popover',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n transformPopover\n ],\n})\nexport class GIPIPopoverComponent implements OnInit, PopoverPanel, OnDestroy {\n\n @HostBinding('attr.role') role: string = 'dialog';\n\n private _popoverWidth: string = 'auto';\n private _positionX: PopoverPositionX = 'after';\n private _positionY: PopoverPositionY = 'below';\n private _triggerEvent: PopoverTriggerEvent = 'hover';\n private _scrollStrategy: PopoverScrollStrategy = 'reposition';\n private _enterDelay: number = 200;\n private _leaveDelay: number = 200;\n private _overlapTrigger: boolean = true;\n private _disableAnimation: boolean = false;\n private _targetOffsetX: number = 0;\n private _targetOffsetY: number = 0;\n private _arrowOffsetX: number = 20;\n private _arrowWidth: number = 8;\n private _arrowColor: string = 'rgba(0, 0, 0, 0.12)';\n private _closeOnClick: boolean = true;\n private _focusTrapEnabled: boolean = true;\n private _focusTrapAutoCaptureEnabled: boolean = true;\n\n /** Objeto de configuração a ser passado para o ngClass do popover */\n _classList: { [key: string]: boolean } = {};\n\n /** Posição do popover */\n public containerPositioning: boolean = false;\n\n /** Fechamento desabilitado no popover */\n public closeDisabled: boolean = false;\n\n /** Objeto de configuração a ser passado para a seta ngStyle do popover */\n public popoverPanelStyles: {};\n\n /** Objeto de configuração a ser passado para a seta ngStyle do popover */\n public popoverArrowStyles: {};\n\n /** Objeto de configuração a ser passado para o conteúdo do popover ngStyle */\n public popoverContentStyles: {};\n\n /** Emite o estado de animação atual sempre que muda. */\n _onAnimationStateChange: EventEmitter<AnimationEvent> = new EventEmitter<AnimationEvent>();\n\n /** Largura do popover */\n @Input()\n get popoverWidth(): string {\n return this._popoverWidth;\n }\n set popoverWidth(value: string) {\n this._popoverWidth = value;\n }\n\n /** Posição do popover no eixo X. */\n @Input('popoverPositionX')\n get positionX(): PopoverPositionX {\n return this._positionX;\n }\n set positionX(value: PopoverPositionX) {\n if (value !== 'before' && value !== 'after') {\n throwPopoverInvalidPositionX();\n }\n this._positionX = value;\n this.setPositionClasses();\n }\n\n /** Posição do popover no eixo Y. */\n @Input('popoverPositionY')\n get positionY(): PopoverPositionY {\n return this._positionY;\n }\n set positionY(value: PopoverPositionY) {\n if (value !== 'above' && value !== 'below') {\n throwPopoverInvalidPositionY();\n }\n this._positionY = value;\n this.setPositionClasses();\n }\n\n /** Evento de gatilho popover */\n @Input('popoverTriggerOn')\n get triggerEvent(): PopoverTriggerEvent {\n return this._triggerEvent;\n }\n set triggerEvent(value: PopoverTriggerEvent) {\n this._triggerEvent = value;\n }\n\n /** Estratégia de rolagem popover */\n @Input('popoverScrollStrategy')\n get scrollStrategy(): PopoverScrollStrategy {\n return this._scrollStrategy;\n }\n set scrollStrategy(value: PopoverScrollStrategy) {\n this._scrollStrategy = value;\n }\n\n /** Atrazo de entrada popover */\n @Input('popoverEnterDelay')\n get enterDelay(): number {\n return this._enterDelay;\n }\n set enterDelay(value: number) {\n this._enterDelay = value;\n }\n\n /** Atraso de saída popover */\n @Input('popoverLeaveDelay')\n get leaveDelay(): number {\n return this._leaveDelay;\n }\n set leaveDelay(value: number) {\n this._leaveDelay = value;\n }\n\n /** Gatilho de sobreposição de popover */\n @Input('popoverOverlapTrigger')\n get overlapTrigger(): boolean {\n return this._overlapTrigger;\n }\n set overlapTrigger(value: boolean) {\n this._overlapTrigger = value;\n }\n\n /** Deslocamento alvo do popover x */\n @Input('popoverOffsetX')\n get targetOffsetX(): number {\n return this._targetOffsetX;\n }\n set targetOffsetX(value: number) {\n this._targetOffsetX = value;\n }\n\n /** Deslocamento do alvo popover y */\n @Input('popoverOffsetY')\n get targetOffsetY(): number {\n return this._targetOffsetY;\n }\n set targetOffsetY(value: number) {\n this._targetOffsetY = value;\n }\n\n /** Deslocamento da seta popover x */\n @Input('popoverArrowOffsetX')\n get arrowOffsetX(): number {\n return this._arrowOffsetX;\n }\n set arrowOffsetX(value: number) {\n this._arrowOffsetX = value;\n }\n\n /** Largura da seta popover */\n @Input('popoverArrowWidth')\n get arrowWidth(): number {\n return this._arrowWidth;\n }\n set arrowWidth(value: number) {\n this._arrowWidth = value;\n }\n\n /** Cor da seta popover */\n @Input('popoverArrowColor')\n get arrowColor(): string {\n return this._arrowColor;\n }\n set arrowColor(value: string) {\n this._arrowColor = value;\n }\n\n /**\n * Contêiner popover fechado ao clicar\n * default: true\n */\n @Input('popoverCloseOnClick')\n get closeOnClick(): boolean {\n return this._closeOnClick;\n }\n set closeOnClick(value: boolean) {\n this._closeOnClick = coerceBooleanProperty(value);\n }\n\n /**\n * Desativar animações de popover e todos os elementos filhos\n * default: false\n */\n @Input('popoverDisableAnimation')\n get disableAnimation(): boolean {\n return this._disableAnimation;\n }\n set disableAnimation(value: boolean) {\n this._disableAnimation = coerceBooleanProperty(value);\n }\n\n /**\n * Armadilha de foco popover usando cdkTrapFocus\n * default: true\n */\n @Input('focusTrapEnabled')\n get focusTrapEnabled(): boolean {\n return this._focusTrapEnabled;\n }\n set focusTrapEnabled(value: boolean) {\n this._focusTrapEnabled = coerceBooleanProperty(value);\n }\n\n /**\n * Captura automática da armadilha de foco popover usando cdkTrapFocusAutoCapture\n * default: true\n */\n @Input('focusTrapAutoCaptureEnabled')\n get focusTrapAutoCaptureEnabled(): boolean {\n return this._focusTrapAutoCaptureEnabled;\n }\n set focusTrapAutoCaptureEnabled(value: boolean) {\n this._focusTrapAutoCaptureEnabled = coerceBooleanProperty(value);\n }\n\n /**\n * Esse método usa classes definidas no elemento popover do host e as aplica no modelo popover\n * exibido no contêiner de sobreposição. Caso contrário, é difícil estilizar o popover de fora do componente.\n * @param classes list of class names\n */\n @Input('class')\n set panelClass(classes: string) {\n if (classes && classes.length) {\n this._classList = classes.split(' ').reduce((obj: any, className: string) => {\n obj[className] = true;\n return obj;\n }, {});\n\n this._elementRef.nativeElement.className = '';\n this.setPositionClasses();\n }\n }\n\n /** Evento emitido quando o popover é fechado. */\n @Output() close: EventEmitter<void> = new EventEmitter<void>();\n\n @ViewChild(TemplateRef, { static: false }) templateRef: TemplateRef<any>;\n\n constructor(private _elementRef: ElementRef, public zone: NgZone) {\n this.setPositionClasses();\n }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void {\n this._emitCloseEvent();\n this.close.complete();\n }\n\n /** Manipule um evento de teclado do popover, delegando para a ação apropriada. */\n _handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case ESCAPE: {\n this._emitCloseEvent();\n return;\n }\n }\n }\n\n /** Isso emite um evento de fechamento no qual o acionador está inscrito. Quando emitido, o gatilho fechará o popover. */\n _emitCloseEvent(): void {\n this.close.emit();\n }\n\n /** Fechar popover ao clicar se closeOnClick for true */\n onClick(): void {\n if (this.closeOnClick) {\n this._emitCloseEvent();\n }\n }\n\n /** Desativa o fechamento do popover ao sair do elemento de gatilho e passar o mouse sobre o popover */\n onMouseOver(): void {\n if (this.triggerEvent === 'hover') {\n this.closeDisabled = true;\n }\n }\n\n /** Habilita o fechamento do popover quando o mouse sai do elemento popover */\n onMouseLeave(): void {\n if (this.triggerEvent === 'hover') {\n this.closeDisabled = false;\n this._emitCloseEvent();\n }\n }\n\n // TODO: Refatore como os estilos são definidos e atualizados no componente, use as melhores práticas.\n // TODO: Se o posicionamento da seta para a esquerda e para a direita for solicitado, veja se a direção flexível pode ser usada para trabalhar com a ordem.\n /** Define os estilos atuais para o popover para permitir a alteração dinâmica das configurações */\n setCurrentStyles(): void {\n\n // TODO: Veja se a posição da seta pode ser calculada automaticamente e permitir a substituição.\n // TODO: Veja se a ordem flexível é uma alternativa melhor para posicionar a seta para cima ou para baixo.\n this.popoverArrowStyles = {\n 'right': this.positionX === 'before' ? (this.arrowOffsetX - this.arrowWidth) + 'px' : '',\n 'left': this.positionX === 'after' ? (this.arrowOffsetX - this.arrowWidth) + 'px' : '',\n 'border-top': this.positionY === 'below' ? this.arrowWidth + 'px solid ' + this.arrowColor : '0px solid transparent',\n 'border-right': 'undefined' === undefined ? this.arrowWidth + 'px solid ' + this.arrowColor : this.arrowWidth + 'px solid transparent',\n 'border-bottom': this.positionY === 'above' ? this.arrowWidth + 'px solid ' + this.arrowColor : this.arrowWidth + 'px solid transparent',\n 'border-left': 'undefined' === undefined ? this.arrowWidth + 'px solid ' + this.arrowColor : this.arrowWidth + 'px solid transparent',\n };\n\n // TODO: Remova se a ordem flexível for adicionada.\n this.popoverContentStyles = {\n 'padding-top': this.overlapTrigger === true ? '0px' : this.arrowWidth + 'px',\n 'padding-bottom': this.overlapTrigger === true ? '0px' : (this.arrowWidth) + 'px',\n 'margin-top': this.overlapTrigger === false && this.positionY === 'below' && this.containerPositioning === false ? -(this.arrowWidth * 2) + 'px' : '0px'\n };\n }\n\n /**\n * É necessário definir classes baseadas em posição para garantir que a animação do painel popover\n * se expanda na direção correta.\n */\n setPositionClasses(posX: PopoverPositionX = this.positionX, posY: PopoverPositionY = this.positionY): void {\n this._classList['popover-before'] = posX === 'before';\n this._classList['popover-after'] = posX === 'after';\n this._classList['popover-above'] = posY === 'above';\n this._classList['popover-below'] = posY === 'below';\n }\n\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'popover-target, [popoverTarget]',\n exportAs: 'popoverTarget'\n})\nexport class GIPIPopoverTarget {\n constructor(public _elementRef: ElementRef) { }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioChange } from '@angular/material';\n\nimport { ObjectUtil } from '../../../core';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: `gipi-radio-group`,\n exportAs: 'gipiRadioGroup',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIRadioGroupComponent => GIPIRadioGroupComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-radio-group',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIRadioGroupComponent implements ControlValueAccessor, OnInit {\n\n private _name: string = `gipi-radio-group-${nextUniqueId++}`;\n\n _enumList: any[] = [];\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() fieldset: boolean = false;\n\n @Input() direction: 'row' | 'column' = 'row';\n\n @Input() enum: any;\n\n @Input() sort: (a: any, b: any) => number;\n\n @Input() valuesExclud: string[];\n\n @Input() valuesOmit: string[];\n\n @Input('value') val: any;\n get value() {\n return this.val;\n }\n set value(val) {\n this.val = val;\n this.onChange(val);\n this.onTouch();\n }\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n const lEnumList = Object.keys(this.enum)\n .map(key => ({ key: key, value: this.enum[key] }))\n .sort(this.sort);\n\n if (!ObjectUtil.isNull(this.valuesExclud)) {\n for (let i = 0; i < lEnumList.length; i++) {\n const excludEnum: boolean = this.valuesExclud.some(e => e === lEnumList[i].key);\n if (!excludEnum) {\n this._enumList.push(lEnumList[i]);\n }\n }\n } else {\n this._enumList = lEnumList;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n onChange: any = () => { };\n\n onTouch: any = () => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n changeRadioGroup({ value }: MatRadioChange): void {\n this.selectionChange.emit(value);\n }\n\n validateOmitByKey(key: string): boolean {\n return !ObjectUtil.isNull(this.valuesOmit) ? !this.valuesOmit.some(el => el === key) : true;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\n\n@Component({\n selector: `gipi-select-button[gipi-primary], gipi-select-button[gipi-secondary]`,\n exportAs: 'gipiSelectButton',\n templateUrl: './select-button.component.html',\n styleUrls: ['./select-button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISelectButtonComponent => GIPISelectButtonComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-select-button',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPISelectButtonComponent implements ControlValueAccessor, OnInit {\n\n readonly isButtonPrimary: boolean = this._hasHostAttributes('gipi-primary');\n readonly isButtonSecondary: boolean = this._hasHostAttributes('gipi-secondary');\n\n @Input() id: string | number;\n\n @Input() arialLabel: string;\n\n @Input() dataKey: string;\n\n @Input() label: string;\n\n @Input() required: boolean = false;\n\n @Input() options: any[];\n\n @Input() optionLabel: string;\n\n @Input() optionValue: string;\n\n @Input() optionDisabled: string;\n\n @Input() multiple: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Output() onOptionClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n value: any;\n\n onModelChange: Function = () => { };\n\n onModelTouched: Function = () => { };\n\n constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void { }\n\n writeValue(obj: any): void {\n this.value = obj;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n getOptionLabel(option: any): any {\n return this.optionLabel ? ObjectUtil.resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n }\n\n getOptionValue(option: any): any {\n return this.optionValue ? ObjectUtil.resolveFieldData(option, this.optionValue) : this.optionLabel || option.value === undefined ? option : option.value;\n }\n\n isOptionDisabled(option: any): any {\n return this.optionDisabled ? ObjectUtil.resolveFieldData(option, this.optionDisabled) : option.disabled !== undefined ? option.disabled : false;\n }\n\n onItemClick(event: any, option: any, index: number): void {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n if (this.multiple) {\n if (this.isSelected(option)) { this.removeOption(option); } else { this.value = [...(this.value || []), this.getOptionValue(option)]; }\n\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n } else {\n const value: any = this.getOptionValue(option);\n\n if (this.value !== value) {\n this.value = this.getOptionValue(option);\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n\n isSelected(option: any): boolean {\n let selected: boolean = false;\n const optionValue: any = this.getOptionValue(option);\n\n if (this.multiple) {\n if (this.value && Array.isArray(this.value)) {\n for (const val of this.value) {\n if (ObjectUtil.equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n } else {\n selected = ObjectUtil.equals(this.getOptionValue(option), this.value, this.dataKey);\n }\n\n return selected;\n }\n\n removeOption(option: any): void {\n this.value = this.value.filter(val => !ObjectUtil.equals(val, this.getOptionValue(option), this.dataKey));\n }\n\n onBlur(): void {\n this.onModelTouched();\n }\n\n private _getHostElement(): any {\n return this._elementRef.nativeElement;\n }\n\n private _hasHostAttributes(...attributes: string[]): boolean {\n return attributes.some(attribute => this._getHostElement().hasAttribute(attribute));\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, TrackByFunction, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../core/utils/object.util';\nimport { StringUtil } from '../../../core/utils/string.util';\n\n@Component({\n selector: `gipi-select`,\n exportAs: 'gipiSelect',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISelectComponent => GIPISelectComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-select',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class GIPISelectComponent<T> implements OnInit, ControlValueAccessor {\n\n _overlayVisible: boolean = false;\n\n _modelValue: T;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() placeholder: string;\n\n @Input() disabled: boolean = false;\n\n @Input() required: boolean = false;\n\n @Input() iconPrefix: string;\n @Input() iconPrefixWidth: string | number;\n @Input() iconPrefixHeight: string | number;\n @Input() svgIconPrefix: string;\n\n @Input() iconSuffix: string;\n @Input() iconSuffixWidth: string | number;\n @Input() iconSuffixHeight: string | number;\n @Input() svgIconSuffix: string;\n\n @Input() property: string = 'description';\n\n @Input() propertyFn: (obj: T) => string;\n\n @Input() options: T[] = [];\n\n @Input() trackyBy: string = 'id';\n\n @Input() set model(model: any) {\n this._modelValue = model;\n this.onModelChange.emit(this._modelValue);\n this.onChange(this._modelValue);\n this.onTouch(this._modelValue);\n }\n get model(): any {\n return this._modelValue;\n }\n\n @Output() onClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output() onShowOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output() onModelChange: EventEmitter<T> = new EventEmitter<T>();\n @Output() onSelectionChange: EventEmitter<T> = new EventEmitter<T>();\n\n get optionSelectedText(): string {\n if (ObjectUtil.isNull(this.model) && !StringUtil.isEmpty(this.placeholder)) {\n return this.placeholder;\n } else if (!ObjectUtil.isNull(this.model)) {\n return this.getPropertyValue(this.model);\n }\n\n return '';\n }\n\n trackByOption: TrackByFunction<T> = (index, obj) => this.trackyBy ? obj[this.trackyBy] : obj;\n\n constructor() { }\n\n ngOnInit(): void { }\n\n onChange: any = (): void => { };\n\n onTouch: any = (): void => { };\n\n writeValue(value: any): void {\n this.model = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n toggleOverlay(): void {\n if (this.disabled) {\n return;\n }\n\n this._overlayVisible = !this._overlayVisible;\n }\n\n getPropertyValue(entity: T): string {\n if (!ObjectUtil.isNewModel(entity)) {\n if (!ObjectUtil.isNull(this.propertyFn)) {\n return this.propertyFn(entity);\n }\n return this._getValue(entity, this.property);\n }\n return StringUtil.EMPTY;\n }\n\n private _getValue(entity: T, property: string): string {\n const properties: string[] = property.split('.');\n let value: any = entity;\n\n for (let i: number = 0; i < properties.length; i++) {\n value = Reflect.get(value, properties[i]);\n if (value && i === properties.length - 1) {\n return value;\n }\n }\n }\n\n isOptionActive(option: T): boolean {\n if (!ObjectUtil.isNull(this._modelValue)) {\n if (!StringUtil.isEmpty(this.property)) {\n return (option[this.property] === this._modelValue[this.property]);\n } else {\n return (option === this._modelValue);\n }\n }\n return false;\n }\n\n onClickOption(option: T): void {\n this.model = option;\n this.onSelectionChange.emit(option);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs/operators';\n\nimport { AbstractService } from './abstract.service';\n\nexport const POINTS_NAME: string[] = [\n 'xl',\n 'lg',\n 'md',\n 'sm',\n 'xs'\n];\n\nconst QUERY: Map<string, string> = new Map([\n [POINTS_NAME[0], '(min-width: 1920px)'], // xl\n [POINTS_NAME[1], '(min-width: 1366px)'], // lg\n [POINTS_NAME[2], '(min-width: 768px)'], // md\n [POINTS_NAME[3], '(min-width: 600px)'], // sm\n [POINTS_NAME[4], '(min-width: 0px)'], // xs\n]);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreakpointObserverService extends AbstractService {\n\n readonly _size$: Observable<string>;\n\n constructor() {\n super();\n this._size$ = fromEvent(window, 'resize').pipe(\n startWith(this._getScreenSize()),\n map((event: Event) => this._getScreenSize()),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n public get size$(): Observable<string> {\n return this._size$;\n }\n\n private _getScreenSize(): string {\n const [[newSize = 'never']] = Array.from(QUERY.entries()).filter(([size, mediaQuery]) => window.matchMedia(mediaQuery).matches);\n return newSize;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { AbstractService } from './abstract.service';\nimport { MenuDTO } from '../models/dto/menu.dto';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavService extends AbstractService {\n\n public sidenav: any;\n\n public menuItems: MenuDTO[] = [];\n\n public isOpened: boolean = false;\n\n public currentUrl: BehaviorSubject<string> = new BehaviorSubject<string>(undefined);\n\n constructor(private router: Router) {\n super();\n this.router.events.subscribe((event: NavigationEnd) => {\n if (event instanceof NavigationEnd) {\n this.currentUrl.next(event.url);\n }\n });\n }\n\n public close(): void {\n this.isOpened = false;\n this._collapseAllMenu();\n }\n\n public open(): void {\n this.isOpened = true;\n this._collapseAllMenu();\n }\n\n public toggle(): void {\n this.isOpened = !this.isOpened;\n this._collapseAllMenu();\n }\n\n private _collapseAllMenu(): void {\n this.menuItems.forEach(m => m.expanded = false);\n }\n\n}\n","import { AfterContentInit, Component, HostListener, OnInit, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BreakpointObserverService } from '../../../../core/services/breakpoint-observer.service';\nimport { NavService } from '../../../../core/services/nav.service';\n\n@Component({\n selector: `gipi-sidenav-container`,\n exportAs: 'gipiSidenavContainer',\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISidenavContainerComponent => GIPISidenavContainerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-sidenav-container',\n },\n})\nexport class GIPISidenavContainerComponent implements OnInit, AfterContentInit {\n\n constructor(\n private _navService: NavService,\n private _breakpointObserverService: BreakpointObserverService\n ) { }\n\n ngOnInit(): void { }\n\n ngAfterContentInit(): void {\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (isScreenLarge) {\n this._navService.open();\n }\n });\n }\n\n get isOpened(): Observable<boolean> {\n return of(this._navService.isOpened);\n }\n\n get isScreenLarge(): Observable<boolean> {\n // return this._breakpointObserverService.size$.pipe(\n // map(size => (size === 'lg'))\n // );\n return this._breakpointObserverService.size$.pipe(\n map(size => (size !== 'xs') && (size !== 'sm') && (size !== 'md'))\n );\n }\n\n onClickBackdrop(): void {\n if (this._navService.isOpened) {\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (!isScreenLarge) {\n this._navService.close();\n }\n });\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: UIEvent): void {\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (isScreenLarge) {\n this._navService.open();\n } else {\n this._navService.close();\n }\n });\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { MenuDTO } from '../../../../core/models/dto/menu.dto';\nimport { BreakpointObserverService } from '../../../../core/services/breakpoint-observer.service';\nimport { NavService } from '../../../../core/services/nav.service';\nimport { ArrayUtil } from '../../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../../core/utils/object.util';\nimport { StringUtil } from '../../../../core/utils/string.util';\n\n@Component({\n selector: `gipi-sidenav`,\n exportAs: 'gipiSidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPISidenavComponent => GIPISidenavComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-sidenav',\n },\n animations: [\n trigger('indicatorRotate', [\n state('closed', style({ transform: 'rotate(0deg)' })),\n state('opened', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),\n ])\n ]\n})\nexport class GIPISidenavComponent implements OnInit, AfterViewInit {\n\n @ViewChild('sidenav', { static: false }) sidenav: MatSidenav;\n\n public _levelOneMenuCollapsableSelected: MenuDTO = null;\n public _levelTwoMenuCollapsableSelected: MenuDTO = null;\n\n public _mouseEnter: boolean = false;\n\n @Input() menuItems: MenuDTO[] = [];\n\n @Input() labelToggle: string = 'Retrair menu';\n\n @Input() iconConfiguration: string;\n\n @Input() svgIconConfiguration: string;\n\n @Input() labelConfiguration: string;\n\n @Input() showConfiguration: boolean = false;\n\n @Output() onClickMenuItem: EventEmitter<MenuDTO | null> = new EventEmitter<MenuDTO | null>();\n\n constructor(\n private _navService: NavService,\n private _breakpointObserverService: BreakpointObserverService,\n private _router: Router,\n ) { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n this._navService.sidenav = this.sidenav;\n this._navService.menuItems = this.menuItems;\n }\n\n public get isOpened(): Observable<boolean> {\n return of(this._navService.isOpened);\n }\n\n public get isScreenLarge(): Observable<boolean> {\n return this._breakpointObserverService.size$.pipe(\n map(size => (size !== 'xs') && (size !== 'sm') && (size !== 'md'))\n );\n }\n\n public get submenuBackButtonName(): Observable<string> {\n if (ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of('Voltar');\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this._levelOneMenuCollapsableSelected.name);\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && !ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(`${this._levelOneMenuCollapsableSelected.name} / ${this._levelTwoMenuCollapsableSelected.name}`);\n }\n }\n\n public get levelMenuCollapsableSelected(): Observable<MenuDTO[]> {\n if (ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this.menuItems);\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this._levelOneMenuCollapsableSelected.menuList);\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && !ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n return of(this._levelTwoMenuCollapsableSelected.menuList);\n }\n }\n\n public toggleSidenav(): void {\n this._levelOneMenuCollapsableSelected = null;\n this._levelTwoMenuCollapsableSelected = null;\n this.onMenuCollapsableReset(this.menuItems);\n\n this._navService.toggle();\n }\n\n public onMenuCollapsableSelected(menu: MenuDTO): void {\n setTimeout(() => {\n if (!this._navService.isOpened) {\n this._navService.open();\n }\n\n if (this._navService.isOpened) {\n menu.expanded = true;\n\n /**\n * Se o menuList está carregado e o (this._levelOneMenuCollapsableSelected === null) significa que possui mais niveis, portanto este é o nivel 1.\n * Se o menuList está carregado e o (this._levelTwoMenuCollapsableSelected === null) significa que este é o útimo nível, portanto este é o nivel 2.\n */\n if (!ArrayUtil.isEmpty(menu.menuList) && ObjectUtil.isNull(this._levelOneMenuCollapsableSelected)) {\n this._levelOneMenuCollapsableSelected = ObjectUtil.clone(menu);\n } else if (!ArrayUtil.isEmpty(menu.menuList) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n this._levelTwoMenuCollapsableSelected = ObjectUtil.clone(menu);\n }\n }\n });\n }\n\n public onMenuCollapsableReset(menuList: MenuDTO[]): void {\n setTimeout(() => {\n for (let i = 0; i < menuList.length; i++) {\n menuList[i].expanded = false;\n\n if (!ArrayUtil.isEmpty(menuList[i].menuList)) {\n this.onMenuCollapsableReset(menuList[i].menuList);\n }\n }\n });\n }\n\n public onMenuCollapsableGoBack(): void {\n setTimeout(() => {\n if (!ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n this._levelTwoMenuCollapsableSelected = null;\n } else if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected)) {\n this._levelOneMenuCollapsableSelected = null;\n } else {\n this.onMenuCollapsableReset(this.menuItems);\n }\n });\n }\n\n public isMenuActive(menu: MenuDTO): boolean {\n return this._router.url.startsWith(menu.route);\n }\n\n public isMenuCollapsableActive(menu: MenuDTO): boolean {\n if (StringUtil.isEmpty(menu.route)) {\n return false;\n }\n\n const existInRoute: boolean = this._router.url.includes(menu.route);\n\n let menuList: MenuDTO[] = ArrayUtil.clone(this.menuItems);\n if (!ObjectUtil.isNull(this._levelOneMenuCollapsableSelected) && ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n menuList = ArrayUtil.clone(this._levelOneMenuCollapsableSelected.menuList);\n } else if (!ObjectUtil.isNull(this._levelTwoMenuCollapsableSelected)) {\n menuList = ArrayUtil.clone(this._levelTwoMenuCollapsableSelected.menuList);\n }\n\n const levelZeroActive: MenuDTO = menuList\n .filter(mi => !ArrayUtil.isEmpty(mi.menuList))\n .find(mi => ((mi.route === menu.route) && (mi.index === menu.index) && (mi.type && menu.type)));\n\n if (existInRoute && !ObjectUtil.isNull(levelZeroActive) && !ArrayUtil.isEmpty(levelZeroActive.menuList)) {\n const levelOneActive: MenuDTO = levelZeroActive.menuList.find(mi => this._router.url.includes(mi.route));\n if (!ObjectUtil.isNull(levelOneActive) && !ArrayUtil.isEmpty(levelOneActive.menuList)) {\n const levelTwoActive: MenuDTO = levelOneActive.menuList.find(mi => this._router.url.includes(mi.route));\n return !ObjectUtil.isNull(levelTwoActive);\n } else {\n return !ObjectUtil.isNull(levelOneActive);\n }\n }\n\n return false;\n }\n\n public onMenuItemSelected(menu: MenuDTO = null, closeNav: boolean = true): void {\n if (closeNav) {\n this._levelOneMenuCollapsableSelected = null;\n this._levelTwoMenuCollapsableSelected = null;\n\n this.onMenuCollapsableReset(this.menuItems);\n\n this.isScreenLarge.subscribe(isScreenLarge => {\n if (!isScreenLarge) {\n this._navService.close();\n }\n });\n }\n\n this.onClickMenuItem.emit(menu);\n }\n\n public getMenuName(name: string): string {\n return (name.length <= 35) ? name : (name.slice(0, 35) + '...');\n }\n\n public onMouseEnter(): void {\n this.isOpened.toPromise().then(isOpened => {\n if (!isOpened) {\n this._mouseEnter = true;\n this.toggleSidenav();\n }\n });\n }\n\n public onMouseLeave(): void {\n this.isOpened.toPromise().then(isOpened => {\n if (isOpened && this._mouseEnter) {\n this._mouseEnter = false;\n this.toggleSidenav();\n }\n })\n }\n\n}\n","import { CdkStep, CdkStepper } from '@angular/cdk/stepper';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, forwardRef } from '@angular/core';\n\n@Component({\n selector: `gipi-stepper`,\n exportAs: 'gipiStepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [\n {\n provide: CdkStepper,\n useExisting: GIPIStepperComponent,\n }\n ],\n host: {\n 'class': 'gipi-stepper',\n },\n})\nexport class GIPIStepperComponent extends CdkStepper implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n ngOnInit(): void { }\n\n onClick(index: number): void {\n this.selectedIndex = index;\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TemplateRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ArrayUtil } from '../../../../../core/utils/array.util';\nimport { ObjectUtil } from '../../../../../core/utils/object.util';\nimport { PipeTransformModel } from '../../models/pipe-transform.model';\nimport { TableColumnModel } from '../../models/table-column.model';\n\n@Component({\n selector: `gipi-table-body`,\n exportAs: 'gipiTableBody',\n templateUrl: './table-body.component.html',\n styleUrls: ['./table-body.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableBodyComponent => GIPITableBodyComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-body',\n },\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableBodyComponent<T> implements OnInit {\n\n private _rows: T[];\n\n _rowsExpanded: T[] = [];\n\n @Input() loading: boolean = false;\n\n @Input() loadingDetail: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() clickOnRow: boolean = false;\n\n @Input() expandable: boolean = false;\n\n @Input() expandOnlyOneRow: boolean = false;\n\n @Input() rowExpandableFn: (row: T) => boolean;\n\n @Input() highlightRowFn: (row: T) => boolean;\n\n @Input() columns: TableColumnModel[] = [];\n\n @Input() trackBy: string = 'id';\n\n @Input() rowDetailRef: TemplateRef<any>;\n\n @Input() set rows(val: T[]) {\n this._rows = val;\n }\n get rows(): T[] {\n return this._rows;\n }\n\n @Output() rowsExpandedChange: EventEmitter<T[]> = new EventEmitter();\n @Output() rowDetailToggleChange: EventEmitter<{ row: T; isExpanded: boolean; }> = new EventEmitter();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() { }\n\n public columnTrackingFn(index: number, column: TableColumnModel): any {\n return column.property;\n }\n\n public rowTrackingFn(index: number, row: T): any {\n return row[this.trackBy];\n }\n\n public getShowHighlightRow(row: T): boolean {\n if (ObjectUtil.isNull(row) || ObjectUtil.isNull(this.highlightRowFn)) {\n return false;\n }\n\n return this.highlightRowFn(row);\n }\n\n public getIdentifierRow(index: number): string {\n return `row-${index}`;\n }\n\n public getShowExpandable(row: T): boolean {\n if (!ObjectUtil.isNull(this.rowExpandableFn)) {\n return this.expandable && this.rowExpandableFn(row);\n } else {\n return this.expandable;\n }\n }\n\n public getColumnValue(row: object, column: TableColumnModel): string {\n let value: string = '';\n\n if (!this.rows || !this.columns) {\n value = '';\n } else {\n let val: any = column.value;\n if (typeof column.value === 'function') {\n val = column.value(row);\n }\n const userPipe: PipeTransformModel = column.pipe;\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n\n return value;\n }\n\n public getRowExpanded(row: T): boolean {\n if (ArrayUtil.isEmpty(this._rowsExpanded)) {\n return false;\n }\n return this._rowsExpanded.includes(row);\n }\n\n public onRowExpandedChange(row: T): void {\n if (!this.getShowExpandable(row)) {\n return;\n }\n\n if (this.expandOnlyOneRow) {\n if (!ArrayUtil.isEmpty(this._rowsExpanded)) {\n if (this.getRowExpanded(row)) {\n this._rowsExpanded.splice(0, this._rowsExpanded.length);\n } else {\n this._rowsExpanded.splice(0, this._rowsExpanded.length, row);\n }\n } else {\n this._rowsExpanded.push(row);\n }\n } else {\n if (this.getRowExpanded(row)) {\n const index: number = this._rowsExpanded.findIndex(r => r === row);\n this._rowsExpanded.splice(index, 1);\n } else {\n this._rowsExpanded.push(row);\n }\n }\n\n this.rowsExpandedChange.emit(this._rowsExpanded);\n this.rowDetailToggleChange.emit({ row: row, isExpanded: this.getRowExpanded(row) });\n\n this._changeDetectorRef.detectChanges();\n }\n\n public onClickCell(row: T, column: TableColumnModel): void {\n if (!ObjectUtil.isNull(column.action)) {\n column.action(row);\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-table-footer`,\n exportAs: 'gipiTableFooter',\n templateUrl: './table-footer.component.html',\n styleUrls: ['./table-footer.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableFooterComponent => GIPITableFooterComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-footer',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableFooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n","import { SortDirection } from '../types/sort-direction.type';\n\nexport class SortModel {\n\n private _property: string;\n\n private _direction: SortDirection;\n\n constructor(\n property: string,\n direction: SortDirection\n ) {\n this.property = property;\n this.direction = direction;\n }\n\n public get property(): string {\n return this._property;\n }\n public set property(value: string) {\n this._property = value;\n }\n\n public get direction(): SortDirection {\n return this._direction;\n }\n public set direction(value: SortDirection) {\n this._direction = value;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ObjectUtil } from '../../../../../core/utils/object.util';\nimport { SortModel } from '../../models/sort.model';\nimport { TableColumnModel } from '../../models/table-column.model';\nimport { SortDirection } from '../../types/sort-direction.type';\n\n@Component({\n selector: `gipi-table-header`,\n exportAs: 'gipiTableHeader',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableHeaderComponent => GIPITableHeaderComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-header',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableHeaderComponent implements OnInit {\n\n _sortedColumn: { column?: TableColumnModel, sortDirection?: SortDirection } = null;\n\n @Input() columns: TableColumnModel[] = [];\n\n @Input() loading: boolean = false;\n\n @Input() disabled: boolean = false;\n\n @Input() sortActive: string;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Input() sortDisableClear: boolean = true;\n @Input() sortLocked: boolean = false;\n\n @Input() sortAscendingIcon: string = 'keyboard_arrow_up';\n @Input() sortDescendingIcon: string = 'keyboard_arrow_down';\n @Input() sortUnsetIcon: string = 'unfold_more';\n\n @Output() sortChange: EventEmitter<SortModel> = new EventEmitter<SortModel>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n if ((this.columns && this.columns.length) && this.sortActive) {\n const columnActive = this.columns.find(c => c.property === this.sortActive);\n if (!ObjectUtil.isNull(columnActive) && columnActive.sortable && ObjectUtil.isNull(this._sortedColumn)) {\n this._sortedColumn = {};\n this._sortedColumn.column = columnActive;\n this._sortedColumn.sortDirection = this.sortStart;\n this.sortChange.emit(new SortModel(columnActive.property, this._sortedColumn.sortDirection));\n } else {\n throw new Error('There is no column with the property indicated in \"sortActive\"');\n }\n }\n }\n\n public columnTrackingFn(index: number, column: TableColumnModel): any {\n return column.property;\n }\n\n public onSortChange(column: TableColumnModel): void {\n if (!column.sortable || this.sortLocked) {\n return;\n }\n\n if (ObjectUtil.isNull(this._sortedColumn)) {\n this._sortedColumn = {};\n }\n\n this._sortedColumn.column = column;\n this._sortedColumn.sortDirection = this._getNextSortDirection(column);\n this.sortChange.emit(new SortModel(column.property, this._sortedColumn.sortDirection));\n\n this._changeDetectorRef.markForCheck();\n }\n\n private _getNextSortDirection(column: TableColumnModel): SortDirection {\n if (!column.sortable) {\n return '';\n }\n\n if (this.sortDisableClear) {\n if (this._sortedColumn.sortDirection === 'asc') {\n return 'desc';\n } else {\n return 'asc';\n }\n } else {\n if (!this._sortedColumn.sortDirection) {\n return 'asc';\n } else if (this._sortedColumn.sortDirection === 'asc') {\n return 'desc';\n } else if (this._sortedColumn.sortDirection === 'desc') {\n return '';\n }\n }\n\n return '';\n }\n\n public isEqualsColumns(column: TableColumnModel): boolean {\n if (!ObjectUtil.isNull(this._sortedColumn) && !ObjectUtil.isNull(this._sortedColumn.column)) {\n const equals: boolean = ObjectUtil.shallowEqual(this._sortedColumn.column, column);\n return equals;\n }\n\n return false;\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-table-pagination`,\n exportAs: 'gipiTablePagination',\n templateUrl: './table-pagination.component.html',\n styleUrls: ['./table-pagination.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITablePaginationComponent => GIPITablePaginationComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-pagination',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITablePaginationComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() maxSize: number = 5;\n\n private _directionLinks: boolean = true;\n @Input() set directionLinks(value: boolean) {\n this._directionLinks = coerceToBoolean(value);\n }\n get directionLinks(): boolean {\n return this._directionLinks;\n }\n\n private _autoHide: boolean = false;\n @Input() set autoHide(value: boolean) {\n this._autoHide = coerceToBoolean(value);\n }\n get autoHide(): boolean {\n return this._autoHide;\n }\n\n private _responsive: boolean = false;\n @Input() set responsive(value: boolean) {\n this._responsive = coerceToBoolean(value);\n }\n get responsive(): boolean {\n return this._responsive;\n }\n\n @Input() previousTooltip: string = 'Voltar';\n\n @Input() nextTooltip: string = 'Avançar';\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\n\n constructor() { }\n\n ngOnInit(): void { }\n\n trackByIndex(index: number) {\n return index;\n }\n\n}\n\nfunction coerceToBoolean(input: string | boolean): boolean {\n return !!input && input !== 'false';\n}\n","import { ChangeDetectionStrategy, Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-table-progress-bar`,\n exportAs: 'gipiTableProgressBar',\n templateUrl: './table-progress-bar.component.html',\n styleUrls: ['./table-progress-bar.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableProgressBarComponent => GIPITableProgressBarComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table-progress-bar',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableProgressBarComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() { }\n\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { SortModel } from './models/sort.model';\nimport { TableColumnModel } from './models/table-column.model';\n\n@Component({\n selector: `gipi-table`,\n exportAs: 'gipiTable',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITableComponent => GIPITableComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-table',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPITableComponent<T> implements OnInit, OnDestroy {\n\n @Input() columns: TableColumnModel[] = [];\n @Input() loading: boolean = false;\n @Input() disabled: boolean = false;\n\n // Header ---------------------------------------------------------------------\n @Input() sortActive: string;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Input() sortDisableClear: boolean = true;\n @Input() sortLocked: boolean = false;\n\n @Input() sortAscendingIcon: string = 'keyboard_arrow_up';\n @Input() sortDescendingIcon: string = 'keyboard_arrow_down';\n @Input() sortUnsetIcon: string = 'unfold_more';\n\n @Output() sortChange: EventEmitter<SortModel> = new EventEmitter<SortModel>();\n // ----------------------------------------------------------------------------\n\n // Body -----------------------------------------------------------------------\n @Input() loadingDetail: boolean = false;\n @Input() clickOnRow: boolean = false;\n @Input() expandable: boolean = false;\n @Input() expandOnlyOneRow: boolean = false;\n @Input() rowExpandableFn: (row: T) => boolean;\n @Input() highlightRowFn: (row: T) => boolean;\n @Input() trackBy: string = 'id';\n @ContentChild('rowDetail', { static: false }) rowDetailRef: TemplateRef<any>;\n @Input() rows: T[];\n\n @Output() rowsExpandedChange: EventEmitter<T[]> = new EventEmitter();\n @Output() rowDetailToggleChange: EventEmitter<{ row: T; isExpanded: boolean; }> = new EventEmitter();\n // ----------------------------------------------------------------------------\n\n // Table ----------------------------------------------------------------------\n @Input() id: string | number;\n @Input() tableShowBorder: boolean = true;\n @Input() hideHeader: boolean = false;\n @Input() hideFooter: boolean = false;\n // ----------------------------------------------------------------------------\n\n constructor() { }\n\n ngOnInit() { }\n\n ngOnDestroy(): void { }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: `gipi-toolbar`,\n exportAs: 'gipiToolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIToolbarComponent => GIPIToolbarComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-toolbar',\n }\n})\nexport class GIPIToolbarComponent implements OnInit {\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() label: string;\n\n @Input() style: string;\n\n @Input() class: string;\n\n constructor() { }\n\n ngOnInit(): void { }\n\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NavService } from '../../../core/services/nav.service';\n\n@Component({\n selector: '[gipi-top-nav], gipi-top-nav',\n exportAs: 'gipiTopNav',\n templateUrl: './top-nav.component.html',\n styleUrls: ['./top-nav.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPITopNavComponent => GIPITopNavComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-top-nav'\n }\n})\nexport class GIPITopNavComponent implements OnInit {\n\n constructor(private _navService: NavService) { }\n\n ngOnInit(): void { }\n\n toggle(): void {\n this._navService.toggle();\n }\n\n}\n","import { formatNumber, formatPercent } from '@angular/common';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class NumberUtil {\n\n public static isPositive(value: number): boolean {\n return !ObjectUtil.isNull(value) && value > 0;\n }\n\n public static isNegative(value: number): boolean {\n return !ObjectUtil.isNull(value) && value < 0;\n }\n\n public static format(value: number, digitsInfo?: string, type?: 'NUMBER' | 'PERCENT'): string {\n if (!ObjectUtil.isNull(value) && (!type || type === 'NUMBER')) {\n return formatNumber(value, 'pt', digitsInfo);\n } else if (!ObjectUtil.isNull(value) && type === 'PERCENT') {\n return formatPercent(value / 100, 'pt', digitsInfo);\n }\n return StringUtil.EMPTY;\n }\n\n public static onlyNumbers(value: string | number): string {\n return String(value).replace(/[^\\d]/g, '');\n }\n\n public static isNumber(value: any): boolean {\n return value !== null && value !== undefined && !isNaN(value) && typeof value === 'number';\n }\n\n}\n","import { formatDate } from '@angular/common';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { GIPINgConfig } from '../../shared/api/gipi-ng-config';\nimport { NumberUtil } from './number.util';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class DateUtil {\n\n public static DATE_FORMAT = 'dd/MM/yyyy';\n\n public static DATE_TIME_FORMAT = 'dd/MM/yyyy HH:mm';\n\n constructor() { }\n\n public static format(value: Date, format: string): string {\n if (!ObjectUtil.isNull(value)) {\n return formatDate(value, format, 'pt');\n }\n return StringUtil.EMPTY;\n }\n\n public static isValid(value: Date): boolean {\n if (ObjectUtil.isNull(value)) {\n return false;\n }\n value = new Date(value);\n return !isNaN(value.getTime()) && DateUtil.isGreaterThan(value, new Date('1900-01-01Z00:00:00:000'));\n }\n\n /** Initial === Final, ignora o Time */\n public static isEqual(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n if (!ObjectUtil.isNull(initial) && !ObjectUtil.isNull(final)) {\n const initialMoment = moment(initial);\n const finalMoment = moment(final);\n return initialMoment.startOf('day').isSame(finalMoment.startOf('day'), granularity);\n }\n return false;\n }\n\n /** Initial > Final */\n public static isGreaterThan(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n if (!ObjectUtil.isNull(initial) && !ObjectUtil.isNull(final)) {\n const initialMoment = moment(initial);\n const finalMoment = moment(final);\n return initialMoment.isAfter(finalMoment, granularity);\n }\n return false;\n }\n\n /** Initial < Final */\n public static isLessThan(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n if (!ObjectUtil.isNull(initial) && !ObjectUtil.isNull(final)) {\n const initialMoment = moment(initial);\n const finalMoment = moment(final);\n return initialMoment.isBefore(finalMoment, granularity);\n }\n return false;\n }\n\n /** Initial <= Final */\n public static isLessThanOrEqual(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n return this.isLessThan(initial, final, granularity) || this.isEqual(initial, final, granularity);\n }\n\n /** Initial >= Final */\n public static isGreaterThanOrEqual(initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n return this.isGreaterThan(initial, final, granularity) || this.isEqual(initial, final, granularity);\n }\n\n /** Date >= Inicial ou Date <= Final */\n public static isBetween(date: Date | moment.Moment, initial: Date | moment.Moment, final: Date | moment.Moment, granularity: moment.unitOfTime.StartOf = 'date'): boolean {\n return this.isGreaterThanOrEqual(date, initial, granularity) && this.isLessThanOrEqual(date, final, granularity);\n }\n\n public static diffBetweenDates(initial: Date, final: Date, diff: 'MILLISECONDS' | 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS' | 'MONTHS'): number {\n const lDateInitial: Date = new Date(initial);\n const lDateFinal: Date = new Date(final);\n const lDiff: number = moment(lDateInitial, 'DD/MM/YYYY HH:mm:ss').diff(moment(lDateFinal, 'DD/MM/YYYY HH:mm:ss'));\n let lReturn = 0;\n switch (diff) {\n case 'MILLISECONDS': { lReturn = moment.duration(lDiff).asMilliseconds(); break; }\n case 'SECONDS': { lReturn = moment.duration(lDiff).asSeconds(); break; }\n case 'MINUTES': { lReturn = moment.duration(lDiff).asMinutes(); break; }\n case 'HOURS': { lReturn = moment.duration(lDiff).asHours(); break; }\n case 'DAYS': { lReturn = moment.duration(lDiff).asDays(); break; }\n case 'MONTHS': { lReturn = moment.duration(lDiff).asMonths(); break; }\n }\n return ((lReturn < 0) ? (lReturn * (-1)) : (lReturn));\n }\n\n public static getDayOfWeek(date: Date): string {\n switch (date.getDay() + 1) {\n case 1:\n return 'SUNDAY';\n case 2:\n return 'MONDAY';\n case 3:\n return 'TUESDAY';\n case 4:\n return 'WEDNESDAY';\n case 5:\n return 'THURSDAY';\n case 6:\n return 'FRIDAY';\n case 7:\n return 'SATURDAY';\n }\n return null;\n }\n\n public static isValidWithString(value: string, pattern: string): boolean {\n if (StringUtil.isEmpty(value) || value.length < pattern.length) {\n return false;\n }\n const date = this.stringToDate(value, pattern);\n return !isNaN(date.getTime());\n }\n\n public static stringToDate(date: string, format: string, zoned: boolean = false): Date {\n const dateItems = date.replace(/[^a-zA-Z0-9]/g, '-').split('-');\n const formatItems = format.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-').split('-');\n\n const yearIndex = formatItems.indexOf('yyyy');\n const monthIndex = formatItems.indexOf('mm');\n const dayIndex = formatItems.indexOf('dd');\n const hourIndex = formatItems.indexOf('hh');\n const minutesIndex = formatItems.indexOf('ii');\n const secondsIndex = formatItems.indexOf('ss');\n\n if (zoned) {\n return new Date(Date.UTC(\n (yearIndex > -1 ? +dateItems[yearIndex] : 0),\n (monthIndex > -1 ? +dateItems[monthIndex] - 1 : 0),\n (dayIndex > -1 ? +dateItems[dayIndex] : 1),\n (hourIndex > -1 ? +dateItems[hourIndex] : 0),\n (minutesIndex > -1 ? +dateItems[minutesIndex] : 0),\n (secondsIndex > -1 ? +dateItems[secondsIndex] : 0)));\n }\n return new Date(\n (yearIndex > -1 ? dateItems[yearIndex] : '1970') + '-' +\n (monthIndex > -1 ? dateItems[monthIndex] : '01') + '-' +\n (dayIndex > -1 ? dateItems[dayIndex] : '01') + 'T' +\n (hourIndex > -1 ? dateItems[hourIndex] : '00') + ':' +\n (minutesIndex > -1 ? dateItems[minutesIndex] : '00') + ':' +\n (secondsIndex > -1 ? dateItems[secondsIndex] : '00') + '.000Z');\n }\n\n public static dateAndStringHourToDate(date: Date, hour: string): Date {\n const list = String(date).split(' ');\n const stringDate = `${list[0]} ${list[1]} ${list[2]} ${list[3]} ${hour}:00`;\n return new Date(stringDate);\n }\n\n public static stringFormattedToDate(date: string): Date {\n const list = date.split('/').map(el => Number(el));\n return new Date(list[2], list[1] - 1, list[0]);\n }\n\n public static getLastDayMonth(month?: number): number {\n const date = new Date();\n let lastDay = new Date();\n if (!month) {\n lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n } else {\n lastDay = new Date(date.getFullYear(), month + 1, 0);\n }\n return lastDay.getDate();\n }\n\n /* Somente mês e ano */\n public static isValidMonth(date: Date): boolean {\n date = new Date(date);\n const year: number = date.getFullYear();\n const month: number = date.getMonth();\n if (NumberUtil.isNegative(year) || NumberUtil.isNegative(month) || (month < 0) || (month > 12) || (year <= 1900)) {\n return false;\n }\n return true;\n }\n\n public static isEqualMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n if (ObjectUtil.isNull(initial) || ObjectUtil.isNull(final) || !this.isValidMonth(initial) || !this.isValidMonth(final)) {\n return false;\n } else if (initial.getMonth() !== final.getMonth()) {\n return false;\n }\n return true;\n }\n\n public static isGreaterThanMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n if (ObjectUtil.isNull(initial) || ObjectUtil.isNull(final) || !this.isValidMonth(initial) || !this.isValidMonth(final)) {\n return false;\n } else if (initial.getFullYear() > final.getFullYear()) {\n return true;\n } else if ((initial.getFullYear() >= final.getFullYear()) && (initial.getMonth() > final.getMonth())) {\n return true;\n }\n return false;\n }\n\n public static isLessThanMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n if (ObjectUtil.isNull(initial) || ObjectUtil.isNull(final) || !this.isValidMonth(initial) || !this.isValidMonth(final)) {\n return false;\n } else if (initial.getFullYear() < final.getFullYear()) {\n return true;\n } else if (initial.getFullYear() <= final.getFullYear() && initial.getMonth() < final.getMonth()) {\n return true;\n }\n return false;\n }\n\n public static isLessThanOrEqualMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n return this.isLessThanMonth(initial, final) || this.isEqualMonth(initial, final);\n }\n\n public static isGreaterThanOrEqualMonth(initial: Date, final: Date): boolean {\n initial = new Date(initial);\n final = new Date(final);\n return this.isGreaterThanMonth(initial, final) || this.isEqualMonth(initial, final);\n }\n\n public static isBetweenMonth(date: Date, initial: Date, final: Date): boolean {\n date = new Date(date);\n initial = new Date(initial);\n final = new Date(final);\n return this.isGreaterThanOrEqualMonth(date, initial) && this.isLessThanOrEqualMonth(date, final);\n }\n\n public static getNameWeekTranslation(week: number, type: 'MIN' | 'SHORT' | 'LONG' = 'LONG'): string {\n const config: GIPINgConfig = new GIPINgConfig();\n switch (type) {\n case 'MIN': return config.translation.dayNamesMin[week];\n case 'SHORT': return config.translation.dayNamesShort[week];\n case 'LONG': return config.translation.dayNames[week];\n }\n }\n\n public static getNameMonthTranslation(month: number, type: 'SHORT' | 'LONG' = 'LONG'): string {\n const config: GIPINgConfig = new GIPINgConfig();\n switch (type) {\n case 'SHORT': return config.translation.monthNamesShort[month];\n case 'LONG': return config.translation.monthNames[month];\n }\n }\n\n public static isDate(input: any): boolean {\n return Object.prototype.toString.call(input) === '[object Date]';\n }\n\n public static isEmpty(value: any): boolean {\n return (\n (value === null) ||\n (value === undefined) ||\n (value === '') ||\n (Array.isArray(value) && (value.length === 0)) ||\n (!this.isDate(value) && (typeof value === 'object') && (Object.keys(value).length === 0))\n );\n }\n\n public static isNotEmpty(value: any) {\n return !this.isEmpty(value);\n }\n\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateUtil } from '../../../core/utils/date.util';\n\n@Component({\n selector: `gipi-user-profile`,\n exportAs: 'gipiUserProfile',\n templateUrl: './user-profile.component.html',\n styleUrls: ['./user-profile.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof GIPIUserProfileComponent => GIPIUserProfileComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'gipi-user-profile',\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GIPIUserProfileComponent implements OnInit {\n\n _overlayVisible: boolean = false;\n\n @Input() id: string;\n\n @Input() name: string;\n\n @Input() ariaLabel: string;\n\n @Input() imgSrc: string;\n\n @Input() text: string;\n\n @Input() username: string;\n\n @Input() email: string;\n\n @Input() lastAccess: Date;\n\n @Input() iconEdit: string;\n @Input() svgIconEdit: string;\n\n @Input() iconExit: string;\n @Input() svgIconExit: string;\n\n @Output('onClick') click: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('onShowOverlay') showOverlay: EventEmitter<void> = new EventEmitter<void>();\n @Output('onClickEdit') clickEdit: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n @Output('onClickExit') clickExit: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n get lastAccessText(): string {\n const date: string = DateUtil.format(this.lastAccess, DateUtil.DATE_FORMAT);\n const hours: string = DateUtil.format(this.lastAccess, 'HH:mm');\n return `Último acesso ${date} às ${hours}`;\n }\n\n constructor() { }\n\n ngOnInit(): void { }\n\n toggleOverlay(): void {\n this._overlayVisible = !this._overlayVisible;\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<string>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function MAT_DATE_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/**\n * No longer needed since MAT_DATE_LOCALE has been changed to a scoped injectable.\n * If you are importing and providing this in your code you can simply remove it.\n * @deprecated\n * @breaking-change 8.0.0\n */\nexport const MAT_DATE_LOCALE_PROVIDER = { provide: MAT_DATE_LOCALE, useExisting: LOCALE_ID };\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D> {\n /** The locale to use for all dates. */\n protected locale: any;\n protected _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second);\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, FactoryProvider, Injectable, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** A class representing a range of dates. */\nexport class DateRange<D> {\n /**\n * Ensures that objects with a `start` and `end` property can't be assigned to a variable that\n * expects a `DateRange`\n */\n // tslint:disable-next-line:no-unused-variable\n private _disableStructuralEquivalency: never;\n\n constructor(\n /** The start date of the range. */\n readonly start: D | null,\n /** The end date of the range. */\n readonly end: D | null,\n ) { }\n}\n\n/**\n * Conditionally picks the date type, if a DateRange is passed in.\n * @docs-private\n */\nexport type ExtractDateTypeFromSelection<T> = T extends DateRange<infer D> ? D : NonNullable<T>;\n\n/** Event emitted by the date selection model when its selection changes. */\nexport interface DateSelectionModelChange<S> {\n /** New value for the selection. */\n selection: S;\n\n /** Object that triggered the change. */\n source: unknown;\n}\n\n/** A selection model containing a date selection. */\nexport abstract class MatDateSelectionModel<S, D = any> implements OnDestroy {\n\n private _selectionChanged = new Subject<DateSelectionModelChange<S>>();\n\n /** Emits when the selection has changed. */\n selectionChanged: Observable<DateSelectionModelChange<S>> = this._selectionChanged;\n\n protected constructor(\n /** The current selection. */\n readonly selection: S,\n protected _adapter: DateAdapter<D>\n ) {\n this.selection = selection;\n }\n\n /**\n * Updates the current selection in the model.\n * @param value New selection that should be assigned.\n * @param source Object that triggered the selection change.\n */\n updateSelection(value: S, source: unknown) {\n (this as { selection: S }).selection = value;\n this._selectionChanged.next({ selection: value, source });\n }\n\n ngOnDestroy() {\n this._selectionChanged.complete();\n }\n\n protected _isValidDateInstance(date: D): boolean {\n return this._adapter.isDateInstance(date) && this._adapter.isValid(date);\n }\n\n /** Adds a date to the current selection. */\n abstract add(date: D | null): void;\n\n /** Checks whether the current selection is valid. */\n abstract isValid(): boolean;\n\n /** Checks whether the current selection is complete. */\n abstract isComplete(): boolean;\n}\n\n/** A selection model that contains a single date. */\n@Injectable()\nexport class MatSingleDateSelectionModel<D> extends MatDateSelectionModel<D | null, D> {\n constructor(adapter: DateAdapter<D>) {\n super(null, adapter);\n }\n\n /**\n * Adds a date to the current selection. In the case of a single date selection, the added date\n * simply overwrites the previous selection\n */\n add(date: D | null) {\n super.updateSelection(date, this);\n }\n\n /** Checks whether the current selection is valid. */\n isValid(): boolean {\n return this.selection != null && this._isValidDateInstance(this.selection);\n }\n\n /**\n * Checks whether the current selection is complete. In the case of a single date selection, this\n * is true if the current selection is not null.\n */\n isComplete() {\n return this.selection != null;\n }\n}\n\n/** A selection model that contains a date range. */\n@Injectable()\nexport class MatRangeDateSelectionModel<D> extends MatDateSelectionModel<DateRange<D>, D> {\n\n constructor(adapter: DateAdapter<D>) {\n super(new DateRange<D>(null, null), adapter);\n }\n\n /**\n * Adds a date to the current selection. In the case of a date range selection, the added date\n * fills in the next `null` value in the range. If both the start and the end already have a date,\n * the selection is reset so that the given date is the new `start` and the `end` is null.\n */\n add(date: D | null): void {\n let { start, end } = this.selection;\n\n if (start == null) {\n start = date;\n } else if (end == null) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n\n super.updateSelection(new DateRange<D>(start, end), this);\n }\n\n /** Checks whether the current selection is valid. */\n isValid(): boolean {\n const { start, end } = this.selection;\n\n // Empty ranges are valid.\n if (start == null && end == null) {\n return true;\n }\n\n // Complete ranges are only valid if both dates are valid and the start is before the end.\n if (start != null && end != null) {\n return this._isValidDateInstance(start) && this._isValidDateInstance(end) &&\n this._adapter.compareDate(start, end) <= 0;\n }\n\n // Partial ranges are valid if the start/end is valid.\n return (start == null || this._isValidDateInstance(start)) &&\n (end == null || this._isValidDateInstance(end));\n }\n\n /**\n * Checks whether the current selection is complete. In the case of a date range selection, this\n * is true if the current selection has a non-null `start` and `end`.\n */\n isComplete(): boolean {\n return this.selection.start != null && this.selection.end != null;\n }\n}\n\n/** @docs-private */\nexport function MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent: MatSingleDateSelectionModel<unknown>, adapter: DateAdapter<unknown>) {\n return parent || new MatSingleDateSelectionModel(adapter);\n}\n\n/** Used to provide a single selection model to a component. */\nexport const MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY,\n};\n\n\n/** @docs-private */\nexport function MAT_RANGE_DATE_SELECTION_MODEL_FACTORY(parent: MatSingleDateSelectionModel<unknown>, adapter: DateAdapter<unknown>) {\n return parent || new MatRangeDateSelectionModel(adapter);\n}\n\n/** Used to provide a range selection model to a component. */\nexport const MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_RANGE_DATE_SELECTION_MODEL_FACTORY,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `MatDatepicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: MatNativeDateModule, MatMomentDateModule, or provide a ` +\n `custom implementation.`\n );\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable({ providedIn: 'root' })\nexport class MatDatepickerIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel: string = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel: string = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel: string = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel: string = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel: string = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel: string = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 20 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 20 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel: string = 'Choose date';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\n\n /** Formats a range of years. */\n formatYearRange(start: string, end: string): string {\n return `${start} \\u2013 ${end}`;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, Output, SimpleChanges, ViewEncapsulation, } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\n/** Extra CSS classes that can be associated with a calendar cell. */\nexport type MatCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\n\n/** Function that can generate the extra classes that should be added to a calendar cell. */\nexport type MatCalendarCellClassFunction<D> =\n (date: D, view: 'month' | 'year' | 'multi-year') => MatCalendarCellCssClasses;\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class MatCalendarCell<D = any> {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public cssClasses: MatCalendarCellCssClasses = {},\n public compareValue = value,\n public rawValue?: D\n ) { }\n}\n\n/** Event emitted when a date inside the calendar is triggered as a result of a user action. */\nexport interface MatCalendarUserEvent<D> {\n value: D;\n event: Event;\n}\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n selector: '[gipi-mat-calendar-body]',\n templateUrl: 'calendar-body.html',\n styleUrls: ['calendar-body.scss'],\n host: {\n 'class': 'mat-calendar-body',\n 'role': 'grid',\n 'aria-readonly': 'true'\n },\n exportAs: 'gipiMatCalendarBody',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarBody implements OnChanges, OnDestroy {\n /**\n * Used to skip the next focus event when rendering the preview range.\n * We need a flag like this, because some browsers fire focus events asynchronously.\n */\n private _skipNextFocus: boolean;\n\n /** The label for the table. (e.g. \"Jan 2017\"). */\n @Input() label: string;\n\n /** The cells to display in the table. */\n @Input() rows: MatCalendarCell[][];\n\n /** The value in the table that corresponds to today. */\n @Input() todayValue: number;\n\n /** Start value of the selected date range. */\n @Input() startValue: number;\n\n /** End value of the selected date range. */\n @Input() endValue: number;\n\n /** The minimum number of free cells needed to fit the label in the first row. */\n @Input() labelMinRequiredCells: number;\n\n /** The number of columns in the table. */\n @Input() numCols: number = 7;\n\n /** The cell number of the active cell in the table. */\n @Input() activeCell: number = 0;\n\n /** Whether a range is being selected. */\n @Input() isRange: boolean = false;\n\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n @Input() cellAspectRatio: number = 1;\n\n /** Start of the comparison range. */\n @Input() comparisonStart: number | null;\n\n /** End of the comparison range. */\n @Input() comparisonEnd: number | null;\n\n /** Start of the preview range. */\n @Input() previewStart: number | null = null;\n\n /** End of the preview range. */\n @Input() previewEnd: number | null = null;\n\n /** Emits when a new value is selected. */\n @Output() readonly selectedValueChange: EventEmitter<MatCalendarUserEvent<number>> =\n new EventEmitter<MatCalendarUserEvent<number>>();\n\n /** Emits when the preview has changed as a result of a user action. */\n @Output() previewChange = new EventEmitter<MatCalendarUserEvent<MatCalendarCell | null>>();\n\n /** The number of blank cells to put at the beginning for the first row. */\n _firstRowOffset: number;\n\n /** Padding for the individual date cells. */\n _cellPadding: string;\n\n /** Width of an individual cell. */\n _cellWidth: string;\n\n constructor(private _elementRef: ElementRef<HTMLElement>, private _ngZone: NgZone) {\n _ngZone.runOutsideAngular(() => {\n const element = _elementRef.nativeElement;\n element.addEventListener('mouseenter', this._enterHandler, true);\n element.addEventListener('focus', this._enterHandler, true);\n element.addEventListener('mouseleave', this._leaveHandler, true);\n element.addEventListener('blur', this._leaveHandler, true);\n });\n }\n\n /** Called when a cell is clicked. */\n _cellClicked(cell: MatCalendarCell, event: MouseEvent): void {\n if (cell.enabled) {\n this.selectedValueChange.emit({ value: cell.value, event });\n }\n }\n\n /** Returns whether a cell should be marked as selected. */\n _isSelected(value: number) {\n return this.startValue === value || this.endValue === value;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const columnChanges = changes['numCols'];\n const { rows, numCols } = this;\n\n if (changes['rows'] || columnChanges) {\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\n }\n\n if (columnChanges || !this._cellWidth) {\n this._cellWidth = `${100 / numCols}%`;\n }\n }\n\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('mouseenter', this._enterHandler, true);\n element.removeEventListener('focus', this._enterHandler, true);\n element.removeEventListener('mouseleave', this._leaveHandler, true);\n element.removeEventListener('blur', this._leaveHandler, true);\n }\n\n /** Returns whether a cell is active. */\n _isActiveCell(rowIndex: number, colIndex: number): boolean {\n let cellNumber = rowIndex * this.numCols + colIndex;\n\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n\n return cellNumber == this.activeCell;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview = true) {\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n const activeCell: HTMLElement | null =\n this._elementRef.nativeElement.querySelector('.mat-calendar-body-active');\n\n if (activeCell) {\n if (!movePreview) {\n this._skipNextFocus = true;\n }\n\n activeCell.focus();\n }\n });\n });\n }\n\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value: number) {\n return isStart(value, this.startValue, this.endValue);\n }\n\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value: number) {\n return isEnd(value, this.startValue, this.endValue);\n }\n\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value: number): boolean {\n return isInRange(value, this.startValue, this.endValue, this.isRange);\n }\n\n /** Gets whether a value is the start of the comparison range. */\n _isComparisonStart(value: number) {\n return isStart(value, this.comparisonStart, this.comparisonEnd);\n }\n\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\n _isComparisonBridgeStart(value: number, rowIndex: number, colIndex: number) {\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\n return false;\n }\n\n let previousCell: MatCalendarCell | undefined = this.rows[rowIndex][colIndex - 1];\n\n if (!previousCell) {\n const previousRow = this.rows[rowIndex - 1];\n previousCell = previousRow && previousRow[previousRow.length - 1];\n }\n\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\n }\n\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\n _isComparisonBridgeEnd(value: number, rowIndex: number, colIndex: number) {\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\n return false;\n }\n\n let nextCell: MatCalendarCell | undefined = this.rows[rowIndex][colIndex + 1];\n\n if (!nextCell) {\n const nextRow = this.rows[rowIndex + 1];\n nextCell = nextRow && nextRow[0];\n }\n\n return nextCell && !this._isRangeStart(nextCell.compareValue);\n }\n\n /** Gets whether a value is the end of the comparison range. */\n _isComparisonEnd(value: number) {\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\n }\n\n /** Gets whether a value is within the current comparison range. */\n _isInComparisonRange(value: number) {\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\n }\n\n /**\n * Gets whether a value is the same as the start and end of the comparison range.\n * For context, the functions that we use to determine whether something is the start/end of\n * a range don't allow for the start and end to be on the same day, because we'd have to use\n * much more specific CSS selectors to style them correctly in all scenarios. This is fine for\n * the regular range, because when it happens, the selected styles take over and still show where\n * the range would've been, however we don't have these selected styles for a comparison range.\n * This function is used to apply a class that serves the same purpose as the one for selected\n * dates, but it only applies in the context of a comparison range.\n */\n _isComparisonIdentical(value: number) {\n // Note that we don't need to null check the start/end\n // here, because the `value` will always be defined.\n return this.comparisonStart === this.comparisonEnd && value === this.comparisonStart;\n }\n\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value: number) {\n return isStart(value, this.previewStart, this.previewEnd);\n }\n\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value: number) {\n return isEnd(value, this.previewStart, this.previewEnd);\n }\n\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value: number) {\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\n }\n\n /**\n * Event handler for when the user enters an element\n * inside the calendar body (e.g. by hovering in or focus).\n */\n private _enterHandler = (event: Event) => {\n if (this._skipNextFocus && event.type === 'focus') {\n this._skipNextFocus = false;\n return;\n }\n\n // We only need to hit the zone when we're selecting a range.\n if (event.target && this.isRange) {\n const cell = this._getCellFromElement(event.target as HTMLElement);\n\n if (cell) {\n this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\n }\n }\n }\n\n /**\n * Event handler for when the user's pointer leaves an element\n * inside the calendar body (e.g. by hovering out or blurring).\n */\n private _leaveHandler = (event: Event) => {\n // We only need to hit the zone when we're selecting a range.\n if (this.previewEnd !== null && this.isRange) {\n // Only reset the preview end value when leaving cells. This looks better, because\n // we have a gap between the cells and the rows and we don't want to remove the\n // range just for it to show up again when the user moves a few pixels to the side.\n if (event.target && isTableCell(event.target as HTMLElement)) {\n this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\n }\n }\n }\n\n /** Finds the MatCalendarCell that corresponds to a DOM node. */\n private _getCellFromElement(element: HTMLElement): MatCalendarCell | null {\n let cell: HTMLElement | undefined;\n\n if (isTableCell(element)) {\n cell = element;\n } else if (isTableCell(element.parentNode!)) {\n cell = element.parentNode as HTMLElement;\n }\n\n if (cell) {\n const row = cell.getAttribute('data-mat-row');\n const col = cell.getAttribute('data-mat-col');\n\n if (row && col) {\n return this.rows[parseInt(row)][parseInt(col)];\n }\n }\n\n return null;\n }\n\n}\n\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node: Node): node is HTMLTableCellElement {\n return node.nodeName === 'TD';\n}\n\n/** Checks whether a value is the start of a range. */\nfunction isStart(value: number, start: number | null, end: number | null): boolean {\n return end !== null && start !== end && value < end && value === start;\n}\n\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value: number, start: number | null, end: number | null): boolean {\n return start !== null && start !== end && value >= start && value === end;\n}\n\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value: number, start: number | null, end: number | null, rangeEnabled: boolean): boolean {\n return rangeEnabled && start !== null && end !== null && start !== end && value >= start && value <= end;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { FactoryProvider, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\nimport { DateRange } from './date-selection-model';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** Injection token used to customize the date range selection behavior. */\nexport const MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken<MatDateRangeSelectionStrategy<any>>('MAT_DATE_RANGE_SELECTION_STRATEGY');\n\n/** Object that can be provided in order to customize the date range selection behavior. */\nexport interface MatDateRangeSelectionStrategy<D> {\n /**\n * Called when the user has finished selecting a value.\n * @param date Date that was selected. Will be null if the user cleared the selection.\n * @param currentRange Range that is currently show in the calendar.\n * @param event DOM event that triggered the selection. Currently only corresponds to a `click`\n * event, but it may get expanded in the future.\n */\n selectionFinished(date: D | null, currentRange: DateRange<D>, event: Event): DateRange<D>;\n\n /**\n * Called when the user has activated a new date (e.g. by hovering over\n * it or moving focus) and the calendar tries to display a date range.\n *\n * @param activeDate Date that the user has activated. Will be null if the user moved\n * focus to an element that's no a calendar cell.\n * @param currentRange Range that is currently shown in the calendar.\n * @param event DOM event that caused the preview to be changed. Will be either a\n * `mouseenter`/`mouseleave` or `focus`/`blur` depending on how the user is navigating.\n */\n createPreview(activeDate: D | null, currentRange: DateRange<D>, event: Event): DateRange<D>;\n}\n\n/** Provides the default date range selection behavior. */\n@Injectable()\nexport class DefaultMatCalendarRangeStrategy<D> implements MatDateRangeSelectionStrategy<D> {\n\n constructor(private _dateAdapter: DateAdapter<D>) { }\n\n selectionFinished(date: D, currentRange: DateRange<D>) {\n let { start, end } = currentRange;\n\n if (start == null) {\n start = date;\n } else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n\n return new DateRange<D>(start, end);\n }\n\n createPreview(activeDate: D | null, currentRange: DateRange<D>) {\n let start: D | null = null;\n let end: D | null = null;\n\n if (currentRange.start && !currentRange.end && activeDate) {\n start = currentRange.start;\n end = activeDate;\n }\n\n return new DateRange<D>(start, end);\n }\n}\n\n\n/** @docs-private */\nexport function MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY(parent: MatDateRangeSelectionStrategy<unknown>, adapter: DateAdapter<unknown>) {\n return parent || new DefaultMatCalendarRangeStrategy(adapter);\n}\n\n/** @docs-private */\nexport const MAT_CALENDAR_RANGE_STRATEGY_PROVIDER: FactoryProvider = {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), MAT_DATE_RANGE_SELECTION_STRATEGY], DateAdapter],\n useFactory: MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY,\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellClassFunction, MatCalendarUserEvent, } from './calendar-body';\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY, MatDateRangeSelectionStrategy, } from './date-range-selection-strategy';\nimport { DateRange } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\nconst DAYS_PER_WEEK = 7;\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-month-view',\n templateUrl: 'month-view.html',\n exportAs: 'gipiMatMonthView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatMonthView<D> implements AfterContentInit, OnChanges, OnDestroy {\n private _rerenderSubscription = Subscription.EMPTY;\n\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n\n this._setRanges(this._selected);\n }\n private _selected: DateRange<D> | D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Start of the comparison range. */\n @Input() comparisonStart: D | null;\n\n /** End of the comparison range. */\n @Input() comparisonEnd: D | null;\n\n /** Emits when a new date is selected. */\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() readonly _userSelection: EventEmitter<MatCalendarUserEvent<D | null>> =\n new EventEmitter<MatCalendarUserEvent<D | null>>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, { static: true }) _matCalendarBody: MatCalendarBody;\n\n /** The label for this month (e.g. \"January 2017\"). */\n _monthLabel: string;\n\n /** Grid of calendar cells representing the dates of the month. */\n _weeks: MatCalendarCell[][];\n\n /** The number of blank cells in the first row before the 1st of the month. */\n _firstWeekOffset: number;\n\n /** Start value of the currently-shown date range. */\n _rangeStart: number | null;\n\n /** End value of the currently-shown date range. */\n _rangeEnd: number | null;\n\n /** Start value of the currently-shown comparison date range. */\n _comparisonRangeStart: number | null;\n\n /** End value of the currently-shown comparison date range. */\n _comparisonRangeEnd: number | null;\n\n /** Start of the preview range. */\n _previewStart: number | null;\n\n /** End of the preview range. */\n _previewEnd: number | null;\n\n /** Whether the user is currently selecting a range of dates. */\n _isRange: boolean;\n\n /** The date of the month that today falls on. Null if today is in another month. */\n _todayDate: number | null;\n\n /** The names of the weekdays. */\n _weekdays: { long: string, narrow: string }[];\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality,\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY) @Optional()\n private _rangeStrategy?: MatDateRangeSelectionStrategy<D>\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];\n\n if (comparisonChange && !comparisonChange.firstChange) {\n this._setRanges(this.selected);\n }\n }\n\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Handles when a new date is selected. */\n _dateSelected(event: MatCalendarUserEvent<number>) {\n const date = event.value;\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n let rangeStartDate: number | null;\n let rangeEndDate: number | null;\n\n if (this._selected instanceof DateRange) {\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n } else {\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n }\n\n if (rangeStartDate !== date || rangeEndDate !== date) {\n this.selectedChange.emit(selectedDate);\n }\n\n this._userSelection.emit({ value: selectedDate, event: event.event });\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate)));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n return;\n case ESCAPE:\n // Abort the current range selection if the user presses escape mid-selection.\n if (this._previewEnd != null) {\n this._previewStart = this._previewEnd = null;\n this.selectedChange.emit(null);\n this._userSelection.emit({ value: null, event });\n event.preventDefault();\n event.stopPropagation(); // Prevents the overlay from closing.\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this month view. */\n _init() {\n this._setRanges(this.selected);\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n this._monthLabel = this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset = (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) - this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview?: boolean) {\n this._matCalendarBody._focusActiveCell(movePreview);\n }\n\n /** Called when the user has activated a new cell and the preview needs to be updated. */\n _previewChanged({ event, value: cell }: MatCalendarUserEvent<MatCalendarCell<D> | null>) {\n if (this._rangeStrategy) {\n // We can assume that this will be a range, because preview\n // events aren't fired for single date selections.\n const value = cell ? cell.rawValue! : null;\n const previewRange = this._rangeStrategy.createPreview(value, this.selected as DateRange<D>, event);\n this._previewStart = this._getCellCompareValue(previewRange.start);\n this._previewEnd = this._getCellCompareValue(previewRange.end);\n\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n // when navigating one month back using the keyboard which will cause this handler\n // to throw a \"changed after checked\" error when updating the preview state.\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Initializes the weekdays. */\n private _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n\n /** Creates MatCalendarCells for the dates in this month. */\n private _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;\n\n this._weeks[this._weeks.length - 1].push(new MatCalendarCell<D>(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date)!, date));\n }\n }\n\n /** Date filter for the month */\n private _shouldEnableDate(date: D): boolean {\n return !!date &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\n (!this.dateFilter || this.dateFilter(date));\n }\n\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n private _getDateInCurrentMonth(date: D | null): number | null {\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\n this._dateAdapter.getDate(date) : null;\n }\n\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n\n /** Gets the value that will be used to one cell to another. */\n private _getCellCompareValue(date: D | null): number | null {\n if (date) {\n // We use the time since the Unix epoch to compare dates in this view, rather than the\n // cell values, because we need to support ranges that span across multiple months/years.\n const year = this._dateAdapter.getYear(date);\n const month = this._dateAdapter.getMonth(date);\n const day = this._dateAdapter.getDate(date);\n return new Date(year, month, day).getTime();\n }\n\n return null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n\n /** Sets the current range based on a model value. */\n private _setRanges(selectedValue: DateRange<D> | D | null) {\n if (selectedValue instanceof DateRange) {\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n this._isRange = true;\n } else {\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n this._isRange = false;\n }\n\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellClassFunction, MatCalendarUserEvent, } from './calendar-body';\nimport { DateRange } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-multi-year-view',\n templateUrl: 'multi-year-view.html',\n exportAs: 'gipiMatMultiYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatMultiYearView<D> implements AfterContentInit, OnDestroy {\n private _rerenderSubscription = Subscription.EMPTY;\n\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n let oldActiveDate = this._activeDate;\n const validDate =\n this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(value)\n ) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (!isSameMultiYearView(\n this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n\n this._setSelectedYear(value);\n }\n private _selected: DateRange<D> | D | null;\n\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to date cells. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Emits when a new year is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected year. This doesn't imply a change on the selected date */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, { static: true }) _matCalendarBody: MatCalendarBody;\n\n /** Grid of calendar cells representing the currently displayed years. */\n _years: MatCalendarCell[][];\n\n /** The year that today falls on. */\n _todayYear: number;\n\n /** The year of the selected date. Null if the selected date is null. */\n _selectedYear: number | null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(\n this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n\n this._years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** Handles when a new year is selected. */\n _yearSelected(event: MatCalendarUserEvent<number>) {\n const year = event.value;\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n let month = this._dateAdapter.getMonth(this.activeDate);\n let daysInMonth =\n this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(year, month,\n Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n yearsPerPage - getActiveOffset(\n this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\n break;\n case PAGE_UP:\n this.activeDate =\n this._dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this._dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n _getActiveCell(): number {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /** Creates an MatCalendarCell for the given year. */\n private _createCellForYear(year: number) {\n const date = this._dateAdapter.createDate(year, 0, 1);\n const yearName = this._dateAdapter.getYearName(date);\n const cellClasses = this.dateClass ? this.dateClass(date, 'multi-year') : undefined;\n\n return new MatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year), cellClasses);\n }\n\n /** Whether the given year is enabled. */\n private _shouldEnableYear(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year;\n date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n\n /** Sets the currently-highlighted year based on a model value. */\n private _setSelectedYear(value: DateRange<D> | D | null) {\n this._selectedYear = null;\n\n if (value instanceof DateRange) {\n const displayValue = value.start || value.end;\n\n if (displayValue) {\n this._selectedYear = this._dateAdapter.getYear(displayValue);\n }\n } else if (value) {\n this._selectedYear = this._dateAdapter.getYear(value);\n }\n }\n}\n\nexport function isSameMultiYearView<D>(dateAdapter: DateAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return Math.floor((year1 - startingYear) / yearsPerPage) === Math.floor((year2 - startingYear) / yearsPerPage);\n}\n\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nexport function getActiveOffset<D>(dateAdapter: DateAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)), yearsPerPage);\n}\n\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear<D>(dateAdapter: DateAdapter<D>, minDate: D | null, maxDate: D | null): number {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n } else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a: number, b: number): number {\n return (a % b + b) % b;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnDestroy, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { MatCalendarBody, MatCalendarCell, MatCalendarCellClassFunction, MatCalendarUserEvent, } from './calendar-body';\nimport { DateRange } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-year-view',\n templateUrl: 'year-view.html',\n exportAs: 'gipiMatYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatYearView<D> implements AfterContentInit, OnDestroy {\n private _rerenderSubscription = Subscription.EMPTY;\n\n /** The date to display in this year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D { return this._activeDate; }\n set activeDate(value: D) {\n let oldActiveDate = this._activeDate;\n const validDate =\n this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(value)\n ) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n private _activeDate: D;\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n\n this._setSelectedMonth(value);\n }\n private _selected: DateRange<D> | D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to date cells. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Emits when a new month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected month. This doesn't imply a change on the selected date */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(MatCalendarBody, { static: true }) _matCalendarBody: MatCalendarBody;\n\n /** Grid of calendar cells representing the months of the year. */\n _months: MatCalendarCell[][];\n\n /** The label for this year (e.g. \"2017\"). */\n _yearLabel: string;\n\n /** The month in this year that today falls on. Null if today is in a different year. */\n _todayMonth: number | null;\n\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n */\n _selectedMonth: number | null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() private _dir?: Directionality\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._activeDate = this._dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n\n /** Handles when a new month is selected. */\n _monthSelected(event: MatCalendarUserEvent<number>) {\n const month = event.value;\n const normalizedDate =\n this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n\n this.monthSelected.emit(normalizedDate);\n\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n\n this.selectedChange.emit(this._dateAdapter.createDate(\n this._dateAdapter.getYear(this.activeDate), month,\n Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this year view. */\n _init() {\n this._setSelectedMonth(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private _getMonthInCurrentYear(date: D | null) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\n this._dateAdapter.getMonth(date) : null;\n }\n\n /** Creates an MatCalendarCell for the given month. */\n private _createCellForMonth(month: number, monthName: string) {\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'year') : undefined;\n\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month), cellClasses);\n }\n\n /** Whether the given month is enabled. */\n private _shouldEnableMonth(month: number) {\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n\n if (\n month === undefined ||\n month === null ||\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n this._isYearAndMonthBeforeMinDate(activeYear, month)\n ) {\n return false;\n }\n\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month;\n date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n private _isYearAndMonthAfterMaxDate(year: number, month: number) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n private _isYearAndMonthBeforeMinDate(year: number, month: number) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n\n return year < minYear || (year === minYear && month < minMonth);\n }\n\n return false;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n\n /** Sets the currently-selected month based on a model value. */\n private _setSelectedMonth(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selectedMonth = this._getMonthInCurrentYear(value.start) ||\n this._getMonthInCurrentYear(value.end);\n } else {\n this._selectedMonth = this._getMonthInCurrentYear(value);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterContentInit, AfterViewChecked, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { MatCalendarCellClassFunction, MatCalendarUserEvent } from './calendar-body';\nimport { DateRange, MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { MatMonthView } from './month-view';\nimport { getActiveOffset, isSameMultiYearView, MatMultiYearView, yearsPerPage } from './multi-year-view';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { MAT_DATE_FORMATS, MatDateFormats } from './shared/adapter/date-formats';\nimport { MatYearView } from './year-view';\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport type MatCalendarView = 'month' | 'year' | 'multi-year';\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-calendar',\n templateUrl: 'calendar.html',\n styleUrls: ['calendar.scss'],\n host: {\n 'class': 'mat-calendar',\n },\n exportAs: 'gipiMatCalendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER\n ]\n})\nexport class MatCalendar<D> implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\n\n public matCalendarRef: MatCalendar<D> = this;\n\n /** Created by GIPI Sistemas */\n @Input() templatePresetRange: TemplateRef<any>;\n\n private _intlChanges: Subscription;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private _moveFocusOnNextTick = false;\n\n /** A date representing the period (month or year) to start the calendar in. */\n @Input()\n get startAt(): D | null { return this._startAt; }\n set startAt(value: D | null) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _startAt: D | null;\n\n /** Whether the calendar should be started in month or year view. */\n @Input() startView: MatCalendarView = 'month';\n\n /** The currently selected date. */\n @Input()\n get selected(): DateRange<D> | D | null { return this._selected; }\n set selected(value: DateRange<D> | D | null) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n }\n private _selected: DateRange<D> | D | null;\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null { return this._minDate; }\n set minDate(value: D | null) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _minDate: D | null;\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null { return this._maxDate; }\n set maxDate(value: D | null) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Start of the comparison range. */\n @Input() comparisonStart: D | null;\n\n /** End of the comparison range. */\n @Input() comparisonEnd: D | null;\n\n /**\n * Emits when the currently selected date changes.\n * @breaking-change 11.0.0 Emitted value to change to `D | null`.\n */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() readonly _userSelection: EventEmitter<MatCalendarUserEvent<D | null>> = new EventEmitter<MatCalendarUserEvent<D | null>>();\n\n /** Reference to the current month view component. */\n @ViewChild(MatMonthView, { static: false }) monthView: MatMonthView<D>;\n\n /** Reference to the current year view component. */\n @ViewChild(MatYearView, { static: false }) yearView: MatYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(MatMultiYearView, { static: false }) multiYearView: MatMultiYearView<D>;\n\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate(): D { return this._clampedActiveDate; }\n set activeDate(value: D) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n private _clampedActiveDate: D;\n\n /** Whether the calendar is in month view. */\n get currentView(): MatCalendarView { return this._currentView; }\n set currentView(value: MatCalendarView) {\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n }\n private _currentView: MatCalendarView;\n\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n stateChanges = new Subject<void>();\n\n constructor(\n _intl: MatDatepickerIntl,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n\n ngAfterContentInit() {\n this.activeDate = this.startAt || this._dateAdapter.today();\n\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change = changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\n\n if (change && !change.firstChange) {\n const view = this._getCurrentViewComponent();\n\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n\n this.stateChanges.next();\n }\n\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell(false);\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n const currentView = this.currentView;\n let view: MatMonthView<D> | MatYearView<D> | MatMultiYearView<D>;\n\n if (currentView === 'month') {\n view = this.monthView;\n } else if (currentView === 'year') {\n view = this.yearView;\n } else {\n view = this.multiYearView;\n }\n\n view._init();\n }\n\n /** Handles date selection in the month view. */\n _dateSelected(event: MatCalendarUserEvent<D | null>): void {\n const date = event.value;\n\n if (this.selected instanceof DateRange || (date && !this._dateAdapter.sameDate(date, this.selected))) {\n // @breaking-change 11.0.0 remove non-null assertion\n // once the `selectedChange` is allowed to be null.\n this.selectedChange.emit(date!);\n }\n\n this._userSelection.emit(event);\n }\n\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear: D) {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth: D) {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n this.activeDate = date;\n this.currentView = view;\n }\n\n /** Returns the component instance that corresponds to the current calendar view. */\n private _getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\n\n/** Default header for MatCalendar */\n@Component({\n selector: 'gipi-mat-calendar-header',\n templateUrl: 'calendar-header.html',\n exportAs: 'gipiMatCalendarHeader',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCalendarHeader<D> implements AfterViewInit {\n\n @Input() matCalendar: MatCalendar<D>;\n\n constructor(\n private _intl: MatDatepickerIntl,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngAfterViewInit(): void {\n this.matCalendar.stateChanges.subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n /** The label for the current matCalendar view. */\n get periodButtonText(): string {\n if (this.matCalendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.matCalendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.matCalendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.matCalendar.activeDate);\n }\n\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.matCalendar.activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.matCalendar.activeDate, this.matCalendar.minDate, this.matCalendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n const minYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\n const maxYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\n return this._intl.formatYearRange(minYearName, maxYearName);\n }\n\n get periodButtonLabel(): string {\n return this.matCalendar.currentView == 'month' ? this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n\n /** The label for the previous button. */\n get prevButtonLabel(): string {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel\n }[this.matCalendar.currentView];\n }\n\n /** The label for the next button. */\n get nextButtonLabel(): string {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel\n }[this.matCalendar.currentView];\n }\n\n /** Handles user clicks on the period label. */\n currentPeriodClicked(): void {\n this.matCalendar.currentView = this.matCalendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n\n /** Handles user clicks on the previous button. */\n previousClicked(): void {\n this.matCalendar.activeDate = this.matCalendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.matCalendar.activeDate, -1)\n : this._dateAdapter.addCalendarYears(this.matCalendar.activeDate, this.matCalendar.currentView == 'year' ? -1 : -yearsPerPage);\n }\n\n /** Handles user clicks on the next button. */\n nextClicked(): void {\n this.matCalendar.activeDate = this.matCalendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.matCalendar.activeDate, 1)\n : this._dateAdapter.addCalendarYears(this.matCalendar.activeDate, this.matCalendar.currentView == 'year' ? 1 : yearsPerPage);\n }\n\n /** Whether the previous period button is enabled. */\n previousEnabled(): boolean {\n if (!this.matCalendar.minDate) {\n return true;\n }\n return !this.matCalendar.minDate || !this._isSameView(this.matCalendar.activeDate, this.matCalendar.minDate);\n }\n\n /** Whether the next period button is enabled. */\n nextEnabled(): boolean {\n return !this.matCalendar.maxDate || !this._isSameView(this.matCalendar.activeDate, this.matCalendar.maxDate);\n }\n\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n private _isSameView(date1: D, date2: D): boolean {\n if (this.matCalendar.currentView == 'month') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) && this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\n }\n if (this.matCalendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.matCalendar.minDate, this.matCalendar.maxDate);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, Inject, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, ValidationErrors, Validator, ValidatorFn, } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { DateSelectionModelChange, ExtractDateTypeFromSelection, MatDateSelectionModel, } from './date-selection-model';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MAT_DATE_FORMATS, MatDateFormats } from './shared/adapter/date-formats';\n\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nexport class MatDatepickerInputEvent<D, S = unknown> {\n /** The new value for the target datepicker input. */\n value: D | null;\n\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n public target: MatDatepickerInputBase<S, D>,\n /** Reference to the native input element associated with the datepicker input. */\n public targetElement: HTMLElement) {\n this.value = this.target.value;\n }\n}\n\n/** Function that can be used to filter out dates from a calendar. */\nexport type DateFilterFn<D> = (date: D | null) => boolean;\n\n/** Base class for datepicker inputs. */\nexport abstract class MatDatepickerInputBase<S, D = ExtractDateTypeFromSelection<S>> implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy, Validator {\n\n /** Whether the component has been initialized. */\n private _isInitialized: boolean;\n\n /** The value of the input. */\n @Input()\n get value(): D | null {\n return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;\n }\n set value(value: D | null) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = this._isValidValue(value);\n value = this._dateAdapter.getValidDateOrNull(value);\n const oldDate = this.value;\n this._assignValue(value);\n this._formatValue(value);\n\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n }\n protected _model: MatDateSelectionModel<S, D> | undefined;\n\n /** Whether the datepicker-input is disabled. */\n @Input()\n get disabled(): boolean { return !!this._disabled || this._parentDisabled(); }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (newValue && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled: boolean;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly dateChange: EventEmitter<MatDatepickerInputEvent<D, S>> = new EventEmitter<MatDatepickerInputEvent<D, S>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly dateInput: EventEmitter<MatDatepickerInputEvent<D, S>> = new EventEmitter<MatDatepickerInputEvent<D, S>>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<D | null>();\n\n /** Emits when the internal state has changed */\n stateChanges = new Subject<void>();\n\n _onTouched = () => { };\n _validatorOnChange = () => { };\n\n protected _cvaOnChange: (value: any) => void = () => { };\n private _valueChangesSubscription = Subscription.EMPTY;\n private _localeSubscription = Subscription.EMPTY;\n\n /**\n * Since the value is kept on the model which is assigned in an Input,\n * we might get a value before we have a model. This property keeps track\n * of the value until we have somewhere to assign it.\n */\n private _pendingValue: D | null;\n\n /** The form control validator for whether the input parses. */\n private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this._lastValueValid ? null : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\n }\n\n /** The form control validator for the date filter. */\n private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const dateFilter = this._getDateFilter();\n return !dateFilter || !controlValue || dateFilter(controlValue) ? null : { 'matDatepickerFilter': true };\n }\n\n /** The form control validator for the min date. */\n private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const min = this._getMinDate();\n return (!min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0) ? null : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };\n }\n\n /** The form control validator for the max date. */\n private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const max = this._getMaxDate();\n return (!max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0) ? null : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };\n }\n\n /** Gets the base validator functions. */\n protected _getValidators(): ValidatorFn[] {\n return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];\n }\n\n /** Gets the minimum date for the input. Used for validation. */\n abstract _getMinDate(): D | null;\n\n /** Gets the maximum date for the input. Used for validation. */\n abstract _getMaxDate(): D | null;\n\n /** Gets the date filter function. Used for validation. */\n protected abstract _getDateFilter(): DateFilterFn<D> | undefined;\n\n /** Registers a date selection model with the input. */\n _registerModel(model: MatDateSelectionModel<S, D>): void {\n this._model = model;\n this._valueChangesSubscription.unsubscribe();\n\n if (this._pendingValue) {\n this._assignValue(this._pendingValue);\n }\n\n this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {\n if (event.source !== this) {\n const value = this._getValueFromModel(event.selection);\n this._lastValueValid = this._isValidValue(value);\n this._cvaOnChange(value);\n this._onTouched();\n this._formatValue(value);\n\n // Note that we can't wrap the entire block with this logic, because for the range inputs\n // we want to revalidate whenever either one of the inputs changes and we don't have a\n // good way of distinguishing it at the moment.\n if (this._canEmitChangeEvent(event)) {\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n if (this._outsideValueChanged) {\n this._outsideValueChanged();\n }\n }\n });\n }\n\n /** Opens the popup associated with the input. */\n protected abstract _openPopup(): void;\n\n /** Assigns a value to the input's model. */\n protected abstract _assignValueToModel(model: D | null): void;\n\n /** Converts a value from the model into a native value for the input. */\n protected abstract _getValueFromModel(modelValue: S): D | null;\n\n /** Combined form control validator for this input. */\n protected abstract _validator: ValidatorFn | null;\n\n /**\n * Callback that'll be invoked when the selection model is changed\n * from somewhere that's not the current datepicker input.\n */\n protected abstract _outsideValueChanged?: () => void;\n\n /** Predicate that determines whether we're allowed to emit a particular change event. */\n protected abstract _canEmitChangeEvent(event: DateSelectionModelChange<S>): boolean;\n\n /** Whether the last value set on the input was valid. */\n protected _lastValueValid = false;\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement>,\n @Optional() public _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n\n ngOnDestroy() {\n this._valueChangesSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this.stateChanges.complete();\n }\n\n /** @docs-private */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: D): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._openPopup();\n event.preventDefault();\n }\n }\n\n _onInput(value: string) {\n const lastValueWasValid = this._lastValueValid;\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = this._isValidValue(date);\n date = this._dateAdapter.getValidDateOrNull(date);\n\n if (!this._dateAdapter.sameDate(date, this.value)) {\n this._assignValue(date);\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n } else {\n // Call the CVA change handler for invalid values\n // since this is what marks the control as dirty.\n if (value && !this.value) {\n this._cvaOnChange(date);\n }\n\n if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n }\n\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n /** Formats a value and sets it on the input element. */\n protected _formatValue(value: D | null) {\n this._elementRef.nativeElement.value =\n value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n\n /** Assigns a value to the model. */\n private _assignValue(value: D | null) {\n // We may get some incoming values before the model was\n // assigned. Save the value so that we can assign it later.\n if (this._model) {\n this._assignValueToModel(value);\n this._pendingValue = null;\n } else {\n this._pendingValue = value;\n }\n }\n\n /** Whether a value is considered valid. */\n private _isValidValue(value: D | null): boolean {\n return !value || this._dateAdapter.isValid(value);\n }\n\n /**\n * Checks whether a parent control is disabled. This is in place so that it can be overridden\n * by inputs extending this one which can be placed inside of a group that can be disabled.\n */\n protected _parentDisabled() {\n return false;\n }\n\n}\n\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for date objects.\n */\nexport function dateInputsHaveChanged(changes: SimpleChanges, adapter: DateAdapter<unknown>): boolean {\n const keys = Object.keys(changes);\n\n for (let key of keys) {\n const { previousValue, currentValue } = changes[key];\n\n if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) {\n if (!adapter.sameDate(previousValue, currentValue)) {\n return true;\n }\n } else {\n return true;\n }\n }\n\n return false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { BACKSPACE } from '@angular/cdk/keycodes';\nimport { Directive, DoCheck, ElementRef, Inject, InjectFlags, InjectionToken, Injector, OnInit, Optional, Type, } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgForm, ValidationErrors, ValidatorFn, Validators, } from '@angular/forms';\nimport { CanUpdateErrorState, CanUpdateErrorStateCtor, ErrorStateMatcher, MAT_DATE_FORMATS, MatDateFormats, mixinErrorState, } from '@angular/material/core';\nimport { DateRange, DateSelectionModelChange } from './date-selection-model';\nimport { DateFilterFn, MatDatepickerInputBase } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** Parent component that should be wrapped around `MatStartDate` and `MatEndDate`. */\nexport interface MatDateRangeInputParent<D> {\n id: string;\n min: D | null;\n max: D | null;\n dateFilter: DateFilterFn<D>;\n rangePicker: {\n opened: boolean;\n id: string;\n };\n _startInput: MatDateRangeInputPartBase<D>;\n _endInput: MatDateRangeInputPartBase<D>;\n _groupDisabled: boolean;\n _handleChildValueChange(): void;\n _openDatepicker(): void;\n}\n\n/**\n * Used to provide the date range input wrapper component\n * to the parts without circular dependencies.\n */\nexport const MAT_DATE_RANGE_INPUT_PARENT = new InjectionToken<MatDateRangeInputParent<unknown>>('MAT_DATE_RANGE_INPUT_PARENT');\n\n/**\n * Base class for the individual inputs that can be projected inside a `mat-date-range-input`.\n */\n@Directive({})\nabstract class MatDateRangeInputPartBase<D> extends MatDatepickerInputBase<DateRange<D>> implements OnInit, DoCheck {\n\n /** @docs-private */\n ngControl: NgControl;\n\n /** @docs-private */\n abstract updateErrorState(): void;\n\n protected abstract _validator: ValidatorFn | null;\n protected abstract _assignValueToModel(value: D | null): void;\n protected abstract _getValueFromModel(modelValue: DateRange<D>): D | null;\n\n constructor(\n @Inject(MAT_DATE_RANGE_INPUT_PARENT) public _rangeInput: MatDateRangeInputParent<D>,\n elementRef: ElementRef<HTMLInputElement>,\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n private _injector: Injector,\n @Optional() public _parentForm: NgForm,\n @Optional() public _parentFormGroup: FormGroupDirective,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats) {\n super(elementRef, dateAdapter, dateFormats);\n }\n\n ngOnInit() {\n // We need the date input to provide itself as a `ControlValueAccessor` and a `Validator`, while\n // injecting its `NgControl` so that the error state is handled correctly. This introduces a\n // circular dependency, because both `ControlValueAccessor` and `Validator` depend on the input\n // itself. Usually we can work around it for the CVA, but there's no API to do it for the\n // validator. We work around it here by injecting the `NgControl` in `ngOnInit`, after\n // everything has been resolved.\n const ngControl = this._injector.get<NgControl>(NgControl as Type<NgControl>, null, InjectFlags.Self);\n\n this._injector.get(NgControl, null)\n\n if (ngControl) {\n this.ngControl = ngControl;\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n /** Gets whether the input is empty. */\n isEmpty(): boolean {\n return this._elementRef.nativeElement.value.length === 0;\n }\n\n /** Gets the placeholder of the input. */\n _getPlaceholder() {\n return this._elementRef.nativeElement.placeholder;\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Handles `input` events on the input element. */\n _onInput(value: string) {\n super._onInput(value);\n this._rangeInput._handleChildValueChange();\n }\n\n /** Opens the datepicker associated with the input. */\n protected _openPopup(): void {\n this._rangeInput._openDatepicker();\n }\n\n /** Gets the minimum date from the range input. */\n _getMinDate() {\n return this._rangeInput.min;\n }\n\n /** Gets the maximum date from the range input. */\n _getMaxDate() {\n return this._rangeInput.max;\n }\n\n /** Gets the date filter function from the range input. */\n protected _getDateFilter() {\n return this._rangeInput.dateFilter;\n }\n\n protected _outsideValueChanged = () => {\n // Whenever the value changes outside the input we need to revalidate, because\n // the validation state of each of the inputs depends on the other one.\n this._validatorOnChange();\n }\n\n protected _parentDisabled() {\n return this._rangeInput._groupDisabled;\n }\n}\n\nconst _MatDateRangeInputBase:\n CanUpdateErrorStateCtor & typeof MatDateRangeInputPartBase =\n // Needs to be `as any`, because the base class is abstract.\n mixinErrorState(MatDateRangeInputPartBase as any);\n\n/** Input for entering the start date in a `mat-date-range-input`. */\n@Directive({\n selector: 'input[gipiMatStartDate]',\n host: {\n 'class': 'mat-start-date mat-date-range-input-inner',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(keydown)': '_onKeydown($event)',\n '[attr.id]': '_rangeInput.id',\n '[attr.aria-haspopup]': '_rangeInput.rangePicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',\n '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',\n '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',\n '(blur)': '_onBlur()',\n 'type': 'text',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatStartDate, multi: true }\n ]\n})\nexport class MatStartDate<D> extends _MatDateRangeInputBase<D> implements CanUpdateErrorState, DoCheck, OnInit {\n\n /** Validator that checks that the start date isn't after the end date. */\n private _startValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const start = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const end = this._model ? this._model.selection.end : null;\n return (!start || !end || this._dateAdapter.compareDate(start, end) <= 0) ? null : { 'matStartDateInvalid': { 'end': end, 'actual': start } };\n }\n\n constructor(\n @Inject(MAT_DATE_RANGE_INPUT_PARENT) rangeInput: MatDateRangeInputParent<D>,\n elementRef: ElementRef<HTMLInputElement>,\n defaultErrorStateMatcher: ErrorStateMatcher,\n injector: Injector,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats\n ) {\n\n // TODO(crisbeto): this constructor shouldn't be necessary, but ViewEngine doesn't seem to\n // handle DI correctly when it is inherited from `MatDateRangeInputPartBase`. We can drop this\n // constructor once ViewEngine is removed.\n super(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats);\n }\n\n ngOnInit() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngOnInit();\n }\n\n ngDoCheck() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngDoCheck();\n }\n\n protected _validator = Validators.compose([...super._getValidators(), this._startValidator]);\n\n protected _getValueFromModel(modelValue: DateRange<D>) {\n return modelValue.start;\n }\n\n protected _assignValueToModel(value: D | null) {\n if (this._model) {\n const range = new DateRange(value, this._model.selection.end);\n this._model.updateSelection(range, this);\n this._cvaOnChange(value);\n }\n }\n\n protected _canEmitChangeEvent = (event: DateSelectionModelChange<DateRange<D>>): boolean => {\n return event.source !== this._rangeInput._endInput;\n }\n\n protected _formatValue(value: D | null) {\n super._formatValue(value);\n\n // Any time the input value is reformatted we need to tell the parent.\n this._rangeInput._handleChildValueChange();\n }\n\n /** Gets the value that should be used when mirroring the input's size. */\n getMirrorValue(): string {\n const element = this._elementRef.nativeElement;\n const value = element.value;\n return value.length > 0 ? value : element.placeholder;\n }\n\n\n}\n\n\n/** Input for entering the end date in a `mat-date-range-input`. */\n@Directive({\n selector: 'input[gipiMatEndDate]',\n host: {\n 'class': 'mat-end-date mat-date-range-input-inner',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(keydown)': '_onKeydown($event)',\n '[attr.aria-haspopup]': '_rangeInput.rangePicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',\n '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',\n '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',\n '(blur)': '_onBlur()',\n 'type': 'text',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatEndDate, multi: true }\n ]\n})\nexport class MatEndDate<D> extends _MatDateRangeInputBase<D> implements CanUpdateErrorState, DoCheck, OnInit {\n\n /** Validator that checks that the end date isn't before the start date. */\n private _endValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const start = this._model ? this._model.selection.start : null;\n return (!end || !start || this._dateAdapter.compareDate(end, start) >= 0) ? null : { 'matEndDateInvalid': { 'start': start, 'actual': end } };\n }\n\n constructor(\n @Inject(MAT_DATE_RANGE_INPUT_PARENT) rangeInput: MatDateRangeInputParent<D>,\n elementRef: ElementRef<HTMLInputElement>,\n defaultErrorStateMatcher: ErrorStateMatcher,\n injector: Injector,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats\n ) {\n\n // TODO(crisbeto): this constructor shouldn't be necessary, but ViewEngine doesn't seem to\n // handle DI correctly when it is inherited from `MatDateRangeInputPartBase`. We can drop this\n // constructor once ViewEngine is removed.\n super(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats);\n }\n\n ngOnInit() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngOnInit();\n }\n\n ngDoCheck() {\n // Normally this happens automatically, but it seems to break if not added explicitly when all\n // of the criteria below are met:\n // 1) The class extends a TS mixin.\n // 2) The application is running in ViewEngine.\n // 3) The application is being transpiled through tsickle.\n // This can be removed once google3 is completely migrated to Ivy.\n super.ngDoCheck();\n }\n\n protected _validator = Validators.compose([...super._getValidators(), this._endValidator]);\n\n protected _getValueFromModel(modelValue: DateRange<D>) {\n return modelValue.end;\n }\n\n protected _assignValueToModel(value: D | null) {\n if (this._model) {\n const range = new DateRange(this._model.selection.start, value);\n this._model.updateSelection(range, this);\n this._cvaOnChange(value);\n }\n }\n\n protected _canEmitChangeEvent = (event: DateSelectionModelChange<DateRange<D>>): boolean => {\n return event.source !== this._rangeInput._startInput;\n }\n\n _onKeydown(event: KeyboardEvent) {\n // If the user is pressing backspace on an empty end input, move focus back to the start.\n if (event.keyCode === BACKSPACE && !this._elementRef.nativeElement.value) {\n this._rangeInput._startInput.focus();\n }\n\n super._onKeydown(event);\n }\n\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { animate, AnimationTriggerMetadata, state, style, transition, trigger, } from '@angular/animations';\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nexport const matDatepickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))),\n transition('* => void', animate('100ms linear', style({ opacity: 0 })))\n ]),\n\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({ opacity: 0 })),\n state('enter', style({ opacity: 1 })),\n\n // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgZone, OnChanges, OnDestroy, Optional, Output, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CanColor, CanColorCtor, mixinColor, ThemePalette, } from '@angular/material/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { MatCalendar } from './calendar';\nimport { MatCalendarCellClassFunction, MatCalendarUserEvent } from './calendar-body';\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY, MatDateRangeSelectionStrategy, } from './date-range-selection-strategy';\nimport { DateRange, ExtractDateTypeFromSelection, MatDateSelectionModel, } from './date-selection-model';\nimport { matDatepickerAnimations } from './datepicker-animations';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { DateFilterFn } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('mat-datepicker-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** Possible positions for the datepicker dropdown along the X axis. */\nexport type DatepickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the datepicker dropdown along the Y axis. */\nexport type DatepickerDropdownPositionY = 'above' | 'below';\n\n/** @docs-private */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n// Boilerplate for applying mixins to MatDatepickerContent.\n/** @docs-private */\nclass MatDatepickerContentBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\nconst _MatDatepickerContentMixinBase: CanColorCtor & typeof MatDatepickerContentBase = mixinColor(MatDatepickerContentBase);\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n selector: 'gipi-mat-datepicker-content',\n templateUrl: 'datepicker-content.html',\n styleUrls: ['datepicker-content.scss'],\n host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n },\n animations: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ],\n exportAs: 'gipiMatDatepickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color'],\n})\nexport class MatDatepickerContent<S, D = ExtractDateTypeFromSelection<S>> extends _MatDatepickerContentMixinBase implements AfterViewInit, OnDestroy, CanColor {\n\n private _subscriptions = new Subscription();\n\n /** Reference to the internal calendar component. */\n @ViewChild(MatCalendar, { static: true }) _calendar: MatCalendar<D>;\n\n /** Reference to the datepicker that created the overlay. */\n datepicker: MatDatepickerBase<any, S, D>;\n\n /** Start of the comparison range. */\n comparisonStart: D | null;\n\n /** End of the comparison range. */\n comparisonEnd: D | null;\n\n /** Whether the datepicker is above or below the input. */\n _isAbove: boolean;\n\n /** Current state of the animation. */\n _animationState: 'enter' | 'void' = 'enter';\n\n /** Emits when an animation has finished. */\n _animationDone = new Subject<void>();\n\n constructor(\n elementRef: ElementRef,\n /**\n * @deprecated `_changeDetectorRef`, `_model` and `_rangeSelectionStrategy`\n * parameters to become required.\n * @breaking-change 11.0.0\n */\n private _changeDetectorRef?: ChangeDetectorRef,\n private _model?: MatDateSelectionModel<S, D>,\n private _dateAdapter?: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n private _rangeSelectionStrategy?: MatDateRangeSelectionStrategy<D>\n ) {\n super(elementRef);\n }\n\n ngAfterViewInit() {\n // @breaking-change 11.0.0 Remove null check for `_changeDetectorRef.\n if (this._changeDetectorRef) {\n this._subscriptions.add(this.datepicker._stateChanges.subscribe(() => {\n this._changeDetectorRef!.markForCheck();\n }));\n }\n\n this._calendar.focusActiveCell();\n }\n\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n\n _handleUserSelection(event: MatCalendarUserEvent<D | null>) {\n // @breaking-change 11.0.0 Remove null checks for _model,\n // _rangeSelectionStrategy and _dateAdapter.\n if (this._model && this._dateAdapter) {\n const selection = this._model.selection;\n const value = event.value;\n const isRange = selection instanceof DateRange;\n\n // If we're selecting a range and we have a selection strategy, always pass the value through\n // there. Otherwise don't assign null values to the model, unless we're selecting a range.\n // A null value when picking a range means that the user cancelled the selection (e.g. by\n // pressing escape), whereas when selecting a single value it means that the value didn't\n // change. This isn't very intuitive, but it's here for backwards-compatibility.\n if (isRange && this._rangeSelectionStrategy) {\n const newSelection = this._rangeSelectionStrategy.selectionFinished(value,\n selection as unknown as DateRange<D>, event.event);\n this._model.updateSelection(newSelection as unknown as S, this);\n } else if (value && (isRange ||\n !this._dateAdapter.sameDate(value, selection as unknown as D))) {\n this._model.add(value);\n }\n }\n\n if (!this._model || this._model.isComplete()) {\n this.datepicker.close();\n }\n }\n\n _startExitAnimation() {\n this._animationState = 'void';\n\n // @breaking-change 11.0.0 Remove null check for `_changeDetectorRef`.\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n _getSelected() {\n // @breaking-change 11.0.0 Remove null check for `_model`.\n return this._model ? this._model.selection as unknown as D | DateRange<D> | null : null;\n }\n}\n\n/** Form control that can be associated with a datepicker. */\nexport interface MatDatepickerControl<D> {\n getStartValue(): D | null;\n getThemePalette(): ThemePalette;\n min: D | null;\n max: D | null;\n disabled: boolean;\n dateFilter: DateFilterFn<D>;\n getConnectedOverlayOrigin(): ElementRef;\n stateChanges: Observable<void>;\n}\n\n/** Base class for a datepicker. */\nexport abstract class MatDatepickerBase<C extends MatDatepickerControl<D>, S, D = any> implements OnDestroy, OnChanges {\n\n private _scrollStrategy: () => ScrollStrategy;\n private _inputStateChanges = Subscription.EMPTY;\n\n @Input() templatePresetRange: TemplateRef<any>;\n\n /** The date to open the calendar to initially. */\n @Input()\n get startAt(): D | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this._datepickerInput ? this._datepickerInput.getStartValue() : null);\n }\n set startAt(value: D | null) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n private _startAt: D | null;\n\n /** The view that the calendar should start in. */\n @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n\n /** Color palette to use on the datepicker's calendar. */\n @Input()\n get color(): ThemePalette {\n return this._color || (this._datepickerInput ? this._datepickerInput.getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n _color: ThemePalette;\n\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a popup and elements have more padding to allow for bigger touch targets.\n */\n @Input()\n get touchUi(): boolean { return this._touchUi; }\n set touchUi(value: boolean) {\n this._touchUi = coerceBooleanProperty(value);\n }\n private _touchUi = false;\n\n /** Whether the datepicker pop-up should be disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._datepickerInput ?\n this._datepickerInput.disabled : !!this._disabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._stateChanges.next(undefined);\n }\n }\n private _disabled: boolean;\n\n /** Preferred position of the datepicker in the X axis. */\n @Input()\n xPosition: DatepickerDropdownPositionX = 'start';\n\n /** Preferred position of the datepicker in the Y axis. */\n @Input()\n yPosition: DatepickerDropdownPositionY = 'below';\n\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[];\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: MatCalendarCellClassFunction<D>;\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n private _opened = false;\n\n /** The id for the datepicker calendar. */\n id: string = `mat-datepicker-${datepickerUid++}`;\n\n /** The minimum selectable date. */\n _getMinDate(): D | null {\n return this._datepickerInput && this._datepickerInput.min;\n }\n\n /** The maximum selectable date. */\n _getMaxDate(): D | null {\n return this._datepickerInput && this._datepickerInput.max;\n }\n\n _getDateFilter(): DateFilterFn<D> {\n return this._datepickerInput && this._datepickerInput.dateFilter;\n }\n\n /** A reference to the overlay when the calendar is opened as a popup. */\n private _popupRef: OverlayRef | null;\n\n /** A reference to the dialog when the calendar is opened as a dialog. */\n private _dialogRef: MatDialogRef<MatDatepickerContent<S, D>> | null;\n\n /** Reference to the component instantiated in popup mode. */\n private _popupComponentRef: ComponentRef<MatDatepickerContent<S, D>> | null;\n\n /** The element that was focused before the datepicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n private _backdropHarnessClass = `${this.id}-backdrop`;\n\n /** The input element this datepicker is associated with. */\n _datepickerInput: C;\n\n /** Emits when the datepicker's state changes. */\n readonly _stateChanges = new Subject<void>();\n\n constructor(\n private _dialog: MatDialog,\n private _overlay: Overlay,\n private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any,\n private _model: MatDateSelectionModel<S, D>\n ) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n\n if (positionChange && !positionChange.firstChange && this._popupRef) {\n this._setConnectedPositions(this._popupRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy);\n\n if (this.opened) {\n this._popupRef.updatePosition();\n }\n }\n\n this._stateChanges.next(undefined);\n }\n\n ngOnDestroy() {\n this._destroyPopup();\n this.close();\n this._inputStateChanges.unsubscribe();\n this._stateChanges.complete();\n }\n\n /** Selects the given date */\n select(date: D): void {\n this._model.add(date);\n }\n\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear: D): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth: D): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n * @returns Selection model that the input should hook itself up to.\n */\n _registerInput(input: C): MatDateSelectionModel<S, D> {\n if (this._datepickerInput) {\n throw Error('A MatDatepicker can only be associated with a single input.');\n }\n this._inputStateChanges.unsubscribe();\n this._datepickerInput = input;\n this._inputStateChanges = input.stateChanges.subscribe(() => this._stateChanges.next(undefined));\n return this._model;\n }\n\n /** Open the calendar. */\n open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this._datepickerInput) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the calendar. */\n close(): void {\n if (!this._opened) {\n return;\n }\n if (this._popupComponentRef && this._popupRef) {\n const instance = this._popupComponentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyPopup());\n }\n if (this._dialogRef) {\n this._dialogRef.close();\n this._dialogRef = null;\n }\n\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /** Open the calendar as a dialog. */\n private _openAsDialog(): void {\n // Usually this would be handled by `open` which ensures that we can only have one overlay\n // open at a time, however since we reset the variables in async handlers some overlays\n // may slip through if the user opens and closes multiple times in quick succession (e.g.\n // by holding down the enter key).\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n\n this._dialogRef = this._dialog.open<MatDatepickerContent<S, D>>(MatDatepickerContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n\n // These values are all the same as the defaults, but we set them explicitly so that the\n // datepicker dialog behaves consistently even if the user changed the defaults.\n hasBackdrop: true,\n disableClose: false,\n backdropClass: `cdk-overlay-dark-backdrop, ${this._backdropHarnessClass}`,\n width: '',\n height: '',\n minWidth: '',\n minHeight: '',\n maxWidth: '80vw',\n maxHeight: '',\n position: {},\n autoFocus: true,\n\n // `MatDialog` has focus restoration built in, however we want to disable it since the\n // datepicker also has focus restoration for dropdown mode. We want to do this, in order\n // to ensure that the timing is consistent between dropdown and dialog modes since `MatDialog`\n // restores focus when the animation is finished, but the datepicker does it immediately.\n // Furthermore, this avoids any conflicts where the datepicker consumer might move focus\n // inside the `closed` event which is dispatched immediately.\n restoreFocus: false\n });\n\n this._dialogRef.afterClosed().subscribe(() => this.close());\n this._forwardContentValues(this._dialogRef.componentInstance);\n }\n\n /** Open the calendar as a popup. */\n private _openAsPopup(): void {\n const portal = new ComponentPortal<MatDatepickerContent<S, D>>(MatDatepickerContent, this._viewContainerRef);\n\n this._destroyPopup();\n this._createPopup();\n this._popupComponentRef = this._popupRef!.attach(portal);\n this._forwardContentValues(this._popupComponentRef.instance);\n\n // Update the position once the calendar has rendered.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._popupRef!.updatePosition();\n });\n }\n\n /** Forwards relevant values from the datepicker to the datepicker content inside the overlay. */\n protected _forwardContentValues(instance: MatDatepickerContent<S, D>) {\n instance.datepicker = this;\n instance.color = this.color;\n }\n\n /** Create the popup. */\n private _createPopup(): void {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(this._datepickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._setConnectedPositions(positionStrategy),\n hasBackdrop: true,\n backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return event.keyCode === ESCAPE || (this._datepickerInput && event.altKey && event.keyCode === UP_ARROW);\n }))\n ).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n /** Destroys the current popup overlay. */\n private _destroyPopup() {\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupRef = this._popupComponentRef = null;\n }\n }\n\n /** Sets the positions of the datepicker in dropdown mode based on the current configuration. */\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY\n }\n ]);\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { MAT_CALENDAR_RANGE_STRATEGY_PROVIDER } from './date-range-selection-strategy';\nimport { DateRange, MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\nimport { MatDatepickerBase, MatDatepickerContent, MatDatepickerControl } from './datepicker-base';\n\n/**\n * Input that can be associated with a date range picker.\n * @docs-private\n */\nexport interface MatDateRangePickerInput<D> extends MatDatepickerControl<D> {\n comparisonStart: D | null;\n comparisonEnd: D | null;\n}\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDateRangePicker\"). We can change this to a\n// directive if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the date range picker popup/dialog. */\n@Component({\n selector: 'gipi-mat-date-range-picker',\n template: '',\n exportAs: 'gipiMatDateRangePicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,\n MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,\n ]\n})\nexport class MatDateRangePicker<D> extends MatDatepickerBase<MatDateRangePickerInput<D>, DateRange<D>, D> {\n\n protected _forwardContentValues(instance: MatDatepickerContent<DateRange<D>, D>) {\n super._forwardContentValues(instance);\n\n const input = this._datepickerInput;\n\n if (input) {\n instance.comparisonStart = input.comparisonStart;\n instance.comparisonEnd = input.comparisonEnd;\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\nimport { MatDatepickerBase, MatDatepickerControl } from './datepicker-base';\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n selector: 'gipi-mat-datepicker',\n template: '',\n exportAs: 'gipiMatDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER]\n})\nexport class MatDatepicker<D> extends MatDatepickerBase<MatDatepickerControl<D>, D | null, D> { }\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, forwardRef, Inject, InjectionToken, Input, Optional, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidatorFn, Validators, } from '@angular/forms';\nimport { MAT_DATE_FORMATS, MatDateFormats, ThemePalette, } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { MatDatepicker } from './datepicker';\nimport { MatDatepickerControl } from './datepicker-base';\nimport { DateFilterFn, MatDatepickerInputBase } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\n\n/** @docs-private */\nexport const MAT_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\n/** @docs-private */\nexport const MAT_DATEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n\nexport const MAT_FORM_FIELD = new InjectionToken<MatFormField>('MatFormField');\n\n/** Directive used to connect an input to a MatDatepicker. */\n@Directive({\n selector: 'input[gipiMatDatepicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ],\n host: {\n 'class': 'mat-datepicker-input',\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': '_datepicker ? _datepicker.id : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'gipiMatDatepickerInput',\n})\nexport class MatDatepickerInput<D> extends MatDatepickerInputBase<D | null, D> implements MatDatepickerControl<D | null> {\n\n /** The datepicker that this input is associated with. */\n @Input()\n set gipiMatDatepicker(datepicker: MatDatepicker<D>) {\n if (datepicker) {\n this._datepicker = datepicker;\n this._registerModel(datepicker._registerInput(this));\n }\n }\n _datepicker: MatDatepicker<D>;\n\n /** The minimum valid date. */\n @Input()\n get min(): D | null { return this._min; }\n set min(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._validatorOnChange();\n }\n }\n private _min: D | null;\n\n /** The maximum valid date. */\n @Input()\n get max(): D | null { return this._max; }\n set max(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._validatorOnChange();\n }\n }\n private _max: D | null;\n\n /** Function that can be used to filter out dates within the datepicker. */\n @Input('gipiMatDatepickerFilter')\n get dateFilter() { return this._dateFilter; }\n set dateFilter(value: DateFilterFn<D | null>) {\n this._dateFilter = value;\n this._validatorOnChange();\n }\n private _dateFilter: DateFilterFn<D | null>;\n\n /** The combined form control validator for this input. */\n protected _validator: ValidatorFn | null;\n\n constructor(\n elementRef: ElementRef<HTMLInputElement>,\n @Optional() dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats,\n @Optional() @Inject(MAT_FORM_FIELD) private _formField: MatFormField\n ) {\n super(elementRef, dateAdapter, dateFormats);\n this._validator = Validators.compose(super._getValidators());\n }\n\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** Gets the value at which the calendar should start. */\n getStartValue(): D | null {\n return this.value;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /** Opens the associated datepicker. */\n protected _openPopup(): void {\n if (this._datepicker) {\n this._datepicker.open();\n }\n }\n\n protected _getValueFromModel(modelValue: D | null): D | null {\n return modelValue;\n }\n\n protected _assignValueToModel(value: D | null): void {\n if (this._model) {\n this._model.updateSelection(value, this);\n }\n }\n\n /** Gets the input's minimum date. */\n _getMinDate() {\n return this._min;\n }\n\n /** Gets the input's maximum date. */\n _getMaxDate() {\n return this._max;\n }\n\n /** Gets the input's date filtering function. */\n protected _getDateFilter() {\n return this._dateFilter;\n }\n\n protected _canEmitChangeEvent() {\n return true;\n }\n\n // Unnecessary when selecting a single date.\n protected _outsideValueChanged: undefined;\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Inject, Input, OnChanges, OnDestroy, Optional, Self, SimpleChanges, ViewEncapsulation, } from '@angular/core';\nimport { ControlContainer, NgControl } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject, merge } from 'rxjs';\nimport { MAT_DATE_RANGE_INPUT_PARENT, MatDateRangeInputParent, MatEndDate, MatStartDate, } from './date-range-input-parts';\nimport { MatDateRangePicker, MatDateRangePickerInput } from './date-range-picker';\nimport { DateRange, MatDateSelectionModel } from './date-selection-model';\nimport { MatDatepickerControl } from './datepicker-base';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { MAT_FORM_FIELD } from './datepicker-input';\nimport { DateFilterFn, dateInputsHaveChanged } from './datepicker-input-base';\nimport { DateAdapter } from './shared/adapter/date-adapter';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-mat-date-range-input',\n templateUrl: 'date-range-input.html',\n styleUrls: ['date-range-input.scss'],\n exportAs: 'gipiMatDateRangeInput',\n host: {\n 'class': 'mat-date-range-input',\n '[class.mat-date-range-input-hide-placeholders]': '_shouldHidePlaceholders()',\n '[class.mat-date-range-input-required]': 'required',\n '[attr.id]': 'null',\n 'role': 'group',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-describedby]': '_ariaDescribedBy',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': 'rangePicker ? rangePicker.id : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: MatFormFieldControl, useExisting: MatDateRangeInput },\n { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },\n ]\n})\nexport class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>, MatDatepickerControl<D>, MatDateRangeInputParent<D>, MatDateRangePickerInput<D>, AfterContentInit, OnChanges, OnDestroy {\n\n /** Current value of the range input. */\n get value() {\n return this._model ? this._model.selection : null;\n }\n\n /** Unique ID for the input. */\n id = `mat-date-range-input-${nextUniqueId++}`;\n\n /** Whether the control is focused. */\n focused = false;\n\n /** Whether the control's label should float. */\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n /** Name of the form control. */\n controlType = 'gipi-date-range-input';\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * Set the placeholder attribute on `matStartDate` and `matEndDate`.\n * @docs-private\n */\n get placeholder() {\n const start = this._startInput ? this._startInput._getPlaceholder() : '';\n const end = this._endInput ? this._endInput._getPlaceholder() : '';\n return (start || end) ? `${start} ${this.separator} ${end}` : '';\n }\n\n /** The range picker that this input is associated with. */\n @Input()\n get rangePicker() { return this._rangePicker; }\n set rangePicker(rangePicker: MatDateRangePicker<D>) {\n if (rangePicker) {\n this._model = rangePicker._registerInput(this);\n this._rangePicker = rangePicker;\n this._registerModel(this._model!);\n }\n }\n private _rangePicker: MatDateRangePicker<D>;\n\n /** Whether the input is required. */\n @Input()\n get required(): boolean { return !!this._required; }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n private _required: boolean;\n\n /** Function that can be used to filter out dates within the date range picker. */\n @Input()\n get dateFilter() { return this._dateFilter; }\n set dateFilter(value: DateFilterFn<D>) {\n this._dateFilter = value;\n this._revalidate();\n }\n private _dateFilter: DateFilterFn<D>;\n\n /** The minimum valid date. */\n @Input()\n get min(): D | null { return this._min; }\n set min(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._revalidate();\n }\n }\n private _min: D | null;\n\n /** The maximum valid date. */\n @Input()\n get max(): D | null { return this._max; }\n set max(value: D | null) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._revalidate();\n }\n }\n private _max: D | null;\n\n /** Whether the input is disabled. */\n @Input()\n get disabled(): boolean {\n return (this._startInput && this._endInput) ?\n (this._startInput.disabled && this._endInput.disabled) :\n this._groupDisabled;\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._groupDisabled) {\n this._groupDisabled = newValue;\n this.stateChanges.next(undefined);\n }\n }\n _groupDisabled = false;\n\n /** Whether the input is in an error state. */\n get errorState(): boolean {\n if (this._startInput && this._endInput) {\n return this._startInput.errorState || this._endInput.errorState;\n }\n\n return false;\n }\n\n /** Whether the datepicker input is empty. */\n get empty(): boolean {\n const startEmpty = this._startInput ? this._startInput.isEmpty() : false;\n const endEmpty = this._endInput ? this._endInput.isEmpty() : false;\n return startEmpty && endEmpty;\n }\n\n /** Value for the `aria-describedby` attribute of the inputs. */\n _ariaDescribedBy: string | null = null;\n\n /** Date selection model currently registered with the input. */\n private _model: MatDateSelectionModel<DateRange<D>> | undefined;\n\n /** Separator text to be shown between the inputs. */\n @Input() separator = '–';\n\n /** Start of the comparison range that should be shown in the calendar. */\n @Input() comparisonStart: D | null = null;\n\n /** End of the comparison range that should be shown in the calendar. */\n @Input() comparisonEnd: D | null = null;\n\n @ContentChild(MatStartDate, { static: true }) _startInput: MatStartDate<D>;\n @ContentChild(MatEndDate, { static: true }) _endInput: MatEndDate<D>;\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * TODO(crisbeto): change type to `AbstractControlDirective` after #18206 lands.\n * @docs-private\n */\n ngControl: NgControl | null;\n\n /** Emits when the input's state has changed. */\n stateChanges = new Subject<void>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() @Self() control: ControlContainer,\n @Optional() private _dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MAT_FORM_FIELD) private _formField?: MatFormField\n ) {\n\n if (!_dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n // TODO(crisbeto): remove `as any` after #18206 lands.\n this.ngControl = control as any;\n }\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * @docs-private\n */\n setDescribedByIds(ids: string[]): void {\n this._ariaDescribedBy = ids.length ? ids.join(' ') : null;\n }\n\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * @docs-private\n */\n onContainerClick(): void {\n if (!this.focused && !this.disabled) {\n if (!this._model || !this._model.selection.start) {\n this._startInput.focus();\n } else {\n this._endInput.focus();\n }\n }\n }\n\n ngAfterContentInit() {\n if (!this._startInput) {\n throw Error('mat-date-range-input must contain a matStartDate input');\n }\n\n if (!this._endInput) {\n throw Error('mat-date-range-input must contain a matEndDate input');\n }\n\n if (this._model) {\n this._registerModel(this._model);\n }\n\n // We don't need to unsubscribe from this, because we\n // know that the input streams will be completed on destroy.\n merge(this._startInput.stateChanges, this._endInput.stateChanges).subscribe(() => {\n this.stateChanges.next(undefined);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n\n /** Gets the date at which the calendar should start. */\n getStartValue(): D | null {\n return this.value ? this.value.start : null;\n }\n\n /** Gets the input's theme palette. */\n getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** Gets the element to which the calendar overlay should be attached. */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n /** Gets the value that is used to mirror the state input. */\n _getInputMirrorValue() {\n return this._startInput ? this._startInput.getMirrorValue() : '';\n }\n\n /** Whether the input placeholders should be hidden. */\n _shouldHidePlaceholders() {\n return this._startInput ? !this._startInput.isEmpty() : false;\n }\n\n /** Handles the value in one of the child inputs changing. */\n _handleChildValueChange() {\n this.stateChanges.next(undefined);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Opens the date range picker associated with the input. */\n _openDatepicker() {\n if (this._rangePicker) {\n this._rangePicker.open();\n }\n }\n\n /** Whether the separate text should be hidden. */\n _shouldHideSeparator() {\n return (!this._formField || this._formField._hideControlPlaceholder()) && this.empty;\n }\n\n /** Gets the value for the `aria-labelledby` attribute of the inputs. */\n _getAriaLabelledby() {\n const formField = this._formField;\n return formField && formField._hasFloatingLabel() ? formField._labelId : null;\n }\n\n /** Re-runs the validators on the start/end inputs. */\n private _revalidate() {\n if (this._startInput) {\n this._startInput._validatorOnChange();\n }\n\n if (this._endInput) {\n this._endInput._validatorOnChange();\n }\n }\n\n /** Registers the current date selection model with the start/end inputs. */\n private _registerModel(model: MatDateSelectionModel<DateRange<D>>) {\n if (this._startInput) {\n this._startInput._registerModel(model);\n }\n\n if (this._endInput) {\n this._endInput._registerModel(model);\n }\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { AfterContentInit, Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\nimport { MatDatepickerBase, MatDatepickerControl } from './datepicker-base';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\n@Directive({ selector: '[gipiDatepickerToggleIcon]' })\nexport class MatDatepickerToggleIcon { }\n\n@Component({\n selector: 'gipi-mat-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n styleUrls: ['datepicker-toggle.scss'],\n host: {\n 'class': 'mat-datepicker-toggle',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n '[class.mat-accent]': 'datepicker && datepicker.color === \"accent\"',\n '[class.mat-warn]': 'datepicker && datepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its datepicker.\n '[attr.data-mat-calendar]': 'datepicker ? datepicker.id : null',\n '(focus)': '_button.focus()',\n },\n exportAs: 'gipiMatDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n\n private _stateChanges = Subscription.EMPTY;\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') datepicker: MatDatepickerBase<MatDatepickerControl<any>, D>;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n if (this._disabled === undefined && this.datepicker) {\n return this.datepicker.disabled;\n }\n\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input() disableRipple: boolean;\n\n /** Custom icon set by the consumer. */\n @ContentChild(MatDatepickerToggleIcon, { static: true }) _customIcon: MatDatepickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button', { static: true }) _button: MatButton;\n\n constructor(\n public _intl: MatDatepickerIntl,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string\n ) {\n\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['datepicker']) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const datepickerStateChanged = this.datepicker ? this.datepicker._stateChanges : observableOf();\n const inputStateChanged = this.datepicker && this.datepicker._datepickerInput ?\n this.datepicker._datepickerInput.stateChanges : observableOf();\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n this._intl.changes,\n datepickerStateChanged,\n inputStateChanged,\n datepickerToggled\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nexport class Platform {\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n isBrowser: boolean = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n BLINK: boolean =\n this.isBrowser &&\n !!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n WEBKIT: boolean =\n this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean =\n this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n constructor(@Inject(PLATFORM_ID) private _platformId: Object) { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from './date-adapter';\nimport { Platform } from './platform';\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch {\n SUPPORTS_INTL_API = false;\n}\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n 'long': [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n 'October', 'November', 'December'\n ],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n *\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\n * getting the string representation of a Date object from its utc representation. We're keeping\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\n * though.\n */\n useUtcForDisplay: boolean = true;\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string,\n @Inject(PLATFORM_ID) private _platformId: Object\n ) {\n super();\n super.setLocale(matDateLocale);\n const platform: Platform = new Platform(this._platformId);\n\n if (platform) {\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n } else {\n this.useUtcForDisplay = true;\n this._clampDate = false;\n }\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, i => this._stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n getFirstDayOfWeek(): number {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate())\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n}\n","// tslint:disable\n/** @dynamic */\nexport class BrowserUtil {\n\n public static getBrowser(): 'MSIE' | 'Firefox' | 'Safari' | 'Chrome' | 'Opera' | string {\n let browsers: string[] = ['MSIE', 'Firefox', 'Safari', 'Chrome', 'Opera'];\n let userAgent: string = navigator.userAgent;\n let indexBrowser: number = browsers.length - 1;\n\n for (indexBrowser; indexBrowser > -1 && userAgent.indexOf(browsers[indexBrowser]) === -1; indexBrowser--);\n\n return browsers[indexBrowser];\n }\n\n}\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrowserUtil } from './../../../../core/utils/browser.util';\nimport { DateUtil } from './../../../../core/utils/date.util';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { DateRange } from '../mat-datepicker/date-selection-model';\nimport { DateFilterFn } from '../mat-datepicker/datepicker-input-base';\nimport { MatDatepickerToggle } from '../mat-datepicker/datepicker-toggle';\nimport { PresetRanges } from './shared/preset-range/preset-range.component';\n\nexport let nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-date-range-picker',\n exportAs: 'gipiDateRangePicker',\n templateUrl: './date-range-picker.component.html',\n styleUrls: ['./date-range-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof DateRangePickerComponent => DateRangePickerComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-date-range-picker',\n }\n})\nexport class DateRangePickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild(MatDatepickerToggle, { static: true }) matDatepickerToggleRef: MatDatepickerToggle<Date>;\n\n private _name: string = `gipi-date-range-${nextUniqueId++}`;\n\n private _startDate: Date;\n get startDate(): Date {\n return this._startDate;\n }\n set startDate(value: Date) {\n this._startDate = value;\n }\n\n private _endDate: Date;\n get endDate(): Date {\n return this._endDate;\n }\n set endDate(value: Date) {\n this._endDate = value;\n this.value = new DateRange(this.startDate, value);\n }\n\n @Input('idStart') idStartDate: string = `${this._name}-start`;\n @Input('idEnd') idEndDate: string = `${this._name}-end`;\n\n @Input('nameStart') nameStartDate: string = `${this._name}-start`;\n @Input('nameEnd') nameEndDate: string = `${this._name}-end`;\n\n @Input() label: string = '';\n\n @Input('placeholderStart') placeholderStartDate: string = 'Inicial';\n @Input('placeholderEnd') placeholderEndDate: string = 'Final';\n\n @Input() help: string = '';\n\n @Input() separator: string = '-';\n\n private _customRangeLabel: string = 'Personalizado';\n @Input() get customRangeLabel(): string {\n return this._customRangeLabel;\n }\n set customRangeLabel(value: string) {\n this._customRangeLabel = value;\n }\n\n private _ranges: PresetRanges<Date>;\n @Input() get ranges(): PresetRanges<Date> {\n return this._ranges;\n }\n set ranges(value: PresetRanges<Date>) {\n this._ranges = value;\n }\n\n private _maxRange: number = 368;\n @Input() get maxRange(): number {\n return this._maxRange;\n }\n set maxRange(value: number) {\n this._maxRange = coerceNumberProperty(value);\n }\n\n private _minDate: Date = new Date('01/01/2000');\n @Input('min') get minDate(): Date {\n return this._minDate;\n }\n set minDate(value: Date) {\n this._minDate = value;\n this._minDate.setHours(0, 0, 0, 0);\n }\n\n private _maxDate: Date;\n @Input('max') get maxDate(): Date {\n return this._maxDate;\n }\n set maxDate(value: Date) {\n this._maxDate = value;\n this._maxDate.setHours(0, 0, 0, 0);\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _readonly: boolean = false;\n @Input() get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _dateFilter: DateFilterFn<Date> = null;\n @Input() get dateFilter(): DateFilterFn<Date> {\n return this._dateFilter;\n }\n set dateFilter(value: DateFilterFn<Date>) {\n this._dateFilter = value;\n }\n\n private _value: DateRange<Date>;\n @Input() get value(): DateRange<Date> {\n return this._value;\n }\n set value(value: DateRange<Date>) {\n let start: Date = null;\n let end: Date = null;\n if (value && value.start) {\n start = moment(value.start).startOf('day').toDate();\n }\n if (value && value.end) {\n end = moment(value.end).endOf('day').toDate();\n }\n\n if (start && end) {\n this._value = new DateRange(start, end);\n this.onChange(this._value);\n this.onTouched(this._value);\n }\n }\n\n onChange: Function = () => { };\n\n onTouched: Function = () => { };\n\n public get formattedValue(): string {\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n\n writeValue(value: DateRange<Date>): void {\n if (value && value.start) {\n this.startDate = moment(value.start).startOf('day').toDate();\n } else {\n this.startDate = null;\n }\n if (value && value.end) {\n this.endDate = moment(value.end).endOf('day').toDate();\n } else {\n this.endDate = null;\n }\n\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputContentClick(event: MouseEvent): void {\n if (!this.readonly || !this.matDatepickerToggleRef) {\n return;\n }\n\n this.matDatepickerToggleRef._open(event);\n }\n\n public generatedStartDate(valueDate: string, keyUp: boolean): void {\n if (!keyUp && BrowserUtil.getBrowser() === 'Firefox') {\n return;\n }\n\n let match = false;\n if (valueDate.includes('/') && (!keyUp || valueDate.length === 10)) {\n this.startDate = moment(valueDate, 'DD/MM/YYYY').toDate();\n match = true;\n } else if (!valueDate.includes('/') && (!keyUp || valueDate.length === 8)) {\n this.startDate = moment(valueDate, 'DDMMYYYY').toDate();\n match = true;\n }\n\n if (BrowserUtil.getBrowser() !== 'Firefox') {\n if (match && !DateUtil.isValid(this.startDate)) {\n this.startDate = undefined;\n }\n } else {\n if (match && !this.startDate) {\n this.startDate = undefined;\n }\n }\n }\n\n public generatedEndDate(valueDate: string, keyUp: boolean): void {\n if (!keyUp && BrowserUtil.getBrowser() === 'Firefox') {\n return;\n }\n\n let match = false;\n if (valueDate.includes('/') && (!keyUp || valueDate.length === 10)) {\n this.endDate = moment(valueDate, 'DD/MM/YYYY').toDate();\n match = true;\n } else if (!valueDate.includes('/') && (!keyUp || valueDate.length === 8)) {\n this.endDate = moment(valueDate, 'DDMMYYYY').toDate();\n match = true;\n }\n\n if (BrowserUtil.getBrowser() !== 'Firefox') {\n if (match && !DateUtil.isValid(this.endDate)) {\n this.endDate = undefined;\n }\n } else {\n if (match && !this.endDate) {\n this.endDate = undefined;\n }\n }\n }\n\n\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { MatDateRangeSelectionStrategy } from \"../../../mat-datepicker/date-range-selection-strategy\";\nimport { DateRange } from \"../../../mat-datepicker/date-selection-model\";\nimport { DateAdapter } from \"../../../mat-datepicker/shared/adapter/date-adapter\";\n\n@Injectable()\nexport class MaxRangeSelectionStrategy<D> implements MatDateRangeSelectionStrategy<D> {\n\n start: any;\n\n public delta: number;\n\n constructor(private _dateAdapter: DateAdapter<D>) { }\n\n selectionFinished(date: D, currentRange: DateRange<D>) {\n let { start, end } = currentRange;\n\n if (start == null) {\n start = date;\n } else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n const maxDate = this._dateAdapter.addCalendarDays(start, (this.delta - 1));\n end = (date > maxDate) ? maxDate : date;\n } else {\n start = date;\n end = null;\n }\n\n return new DateRange<D>(start, end);\n }\n\n createPreview(activeDate: D | null, currentRange: DateRange<D>): DateRange<D> {\n if (currentRange.start && !currentRange.end) {\n const maxDate = this._dateAdapter.addCalendarDays(currentRange.start, (this.delta - 1));\n const rangeEnd = activeDate ? (activeDate > maxDate) ? maxDate : activeDate : null;\n return new DateRange(currentRange.start, rangeEnd);\n }\n\n return new DateRange<D>(null, null);\n }\n\n}\n","import { Directive, Inject, Input } from '@angular/core';\n\nimport { MAT_DATE_RANGE_SELECTION_STRATEGY } from '../../../mat-datepicker/date-range-selection-strategy';\nimport { MaxRangeSelectionStrategy } from './max-range-selection-startegy';\n\n@Directive({\n selector: '[maxRange]',\n providers: [\n {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: MaxRangeSelectionStrategy,\n }\n ]\n})\nexport class MaxRangeDirective {\n\n constructor(\n @Inject(MAT_DATE_RANGE_SELECTION_STRATEGY)\n private maxRangeStrategy: MaxRangeSelectionStrategy<any>\n ) { }\n\n @Input() set maxRange(value: number) {\n this.maxRangeStrategy.delta = +value || 365;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatCalendar } from '../../../mat-datepicker/calendar';\nimport { MatDateRangeInput } from '../../../mat-datepicker/date-range-input';\nimport { MatDateRangePicker } from '../../../mat-datepicker/date-range-picker';\n\nexport interface PresetRanges<D> {\n [index: string]: [D, D];\n}\n\n@Component({\n selector: 'gipi-preset-range',\n templateUrl: './preset-range.component.html',\n styleUrls: ['./preset-range.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof PresetRangeComponent => PresetRangeComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-preset-range',\n }\n})\nexport class PresetRangeComponent implements OnInit, OnDestroy {\n\n private readonly _destroy$: Subject<void> = new Subject();\n\n public rangesArray: string[] = [];\n public selectedRange: string = '';\n\n @Input() matDateRangeInput: MatDateRangeInput<Date> = null;\n @Input() matCalendar: MatCalendar<Date> = null;\n @Input() matDateRangePicker: MatDateRangePicker<Date> = null;\n\n private _customRangeLabel: string = 'Personalizado';\n @Input() get customRangeLabel(): string {\n return this._customRangeLabel;\n }\n set customRangeLabel(value: string) {\n this._customRangeLabel = value;\n }\n\n private _ranges: PresetRanges<moment.Moment>;\n @Input() get ranges(): PresetRanges<moment.Moment> {\n return this._ranges;\n }\n set ranges(value: PresetRanges<moment.Moment>) {\n this._ranges = value;\n this._renderRanges();\n }\n\n private _maxRange: number;\n @Input() get maxRange(): number {\n return this._maxRange;\n }\n set maxRange(value: number) {\n this._maxRange = value;\n }\n\n private get _startDate(): Date {\n const selectedRange: any = this.matCalendar.selected;\n return selectedRange.start;\n }\n\n private get _endDate(): Date {\n const selectedRange: any = this.matCalendar.selected;\n return selectedRange.end;\n }\n\n private get _minDate(): Date {\n return this.matCalendar.minDate;\n }\n\n private get _maxDate(): Date {\n return this.matCalendar.maxDate;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,) { }\n\n ngOnInit(): void {\n this.matCalendar.stateChanges\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._loadSelectedRange();\n this._changeDetectorRef.markForCheck();\n });\n\n this._loadSelectedRange();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n private _renderRanges(): void {\n let start: moment.Moment;\n let end: moment.Moment;\n\n if (typeof this.ranges === 'object') {\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n // Start date\n if (typeof this.ranges[range][0] === 'string') {\n start = moment(this.ranges[range][0]);\n } else {\n start = moment(this.ranges[range][0]);\n }\n\n if (typeof this.ranges[range][1] === 'string') {\n end = moment(this.ranges[range][1]);\n } else {\n end = moment(this.ranges[range][1]);\n }\n\n const minDate: moment.Moment = moment(this._minDate).clone();\n let maxDate: moment.Moment = moment(this._maxDate).clone();\n\n if (minDate.isValid() && start.isBefore(minDate)) {\n start = minDate.clone();\n }\n if (maxDate.isValid() && start.clone().add((this.maxRange - 1), 'days').isAfter(maxDate)) {\n maxDate = start;\n }\n if (maxDate.isValid() && end.isAfter(maxDate)) {\n end = maxDate.clone();\n }\n if (\n (minDate && end.isBefore(minDate, 'day')) ||\n (maxDate && start.isAfter(maxDate, 'day'))\n ) {\n continue;\n }\n\n this.ranges[range] = [start, end];\n }\n }\n\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n this.rangesArray.push(range);\n }\n }\n }\n\n this._loadSelectedRange();\n }\n\n private _loadSelectedRange(): void {\n let customRange: boolean = true;\n let i: number = 0;\n if (this.rangesArray.length > 0) {\n const startDate: moment.Moment = moment(this._startDate).startOf('day');\n const endDate: moment.Moment = moment(this._endDate).startOf('day');\n\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n const startRange: moment.Moment = (this.ranges[range][0]).startOf('day');\n const endRange: moment.Moment = (this.ranges[range][1]).startOf('day');\n if (startDate.isSame(startRange) && endDate.isSame(endRange)) {\n customRange = false;\n this.selectedRange = this.rangesArray[i];\n break;\n }\n\n i++;\n }\n }\n if (customRange) {\n this.selectedRange = this.customRangeLabel;\n }\n } else {\n this.selectedRange = this.customRangeLabel;\n }\n }\n\n private _calculateDateRange(range: string): Date[] {\n const minDate: moment.Moment = this._minDate ? moment(this._minDate) : null;\n const maxDate: moment.Moment = this._maxDate ? moment(this._maxDate) : null;\n const [start, end] = [this.ranges[range][0], this.ranges[range][1]];\n\n let startDateResp: moment.Moment = null;\n let endDateResp: moment.Moment = null;\n\n if (minDate && start.isBefore(minDate)) {\n startDateResp = minDate.clone();\n } else {\n startDateResp = start.clone();\n }\n if (maxDate && end.isAfter(maxDate)) {\n endDateResp = maxDate.clone();\n } else {\n endDateResp = end.clone();\n }\n\n if (range === this.customRangeLabel) {\n const selectedRange: any = this.matCalendar.selected;\n startDateResp = selectedRange.start;\n endDateResp = selectedRange.end;\n }\n\n return [this._getValidDateOrNull(startDateResp.toDate()), this._getValidDateOrNull(endDateResp.toDate())];\n }\n\n private _getValidDateOrNull(obj: unknown): Date | null {\n return this._isDateInstance(obj) && this._isValid(obj as Date) ? obj as Date : null;\n }\n\n private _isDateInstance(obj: any): obj is Date {\n return obj instanceof Date;\n }\n\n private _isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n public clickRange(event: MouseEvent, range: string): void {\n if (range === this.customRangeLabel) {\n return;\n }\n\n const [start, end] = this._calculateDateRange(range);\n // (this.matCalendar.selected as any).start = start;\n // (this.matCalendar.selected as any).end = end;\n // this.matCalendar.updateTodaysDate();\n // this.matCalendar.activeDate = start;\n // this.matCalendar.activeDate = end;\n this.matDateRangePicker.select(start);\n this.matDateRangePicker.select(end);\n this.matDateRangePicker.close();\n }\n\n\n public isDisableRange(range: string): boolean {\n if (range === this._customRangeLabel) {\n return false;\n }\n\n const rangeMarkers = this._ranges[range];\n const areBothBefore = rangeMarkers.every((date) => {\n const minDate: moment.Moment = moment(this.matCalendar.minDate);\n if (!minDate) {\n return false;\n }\n return moment(date).isBefore(minDate);\n\n });\n\n const areBothAfter = rangeMarkers.every((date) => {\n const maxDate: moment.Moment = moment(this.matCalendar.maxDate);\n if (!maxDate) {\n return false;\n }\n return moment(date).isAfter(maxDate);\n });\n\n return areBothBefore || areBothAfter;\n }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { BrowserUtil } from '../../../../core/utils/browser.util';\nimport { DateUtil } from '../../../../core/utils/date.util';\nimport { DateFilterFn } from '../mat-datepicker/datepicker-input-base';\nimport { MatDatepickerToggle } from '../mat-datepicker/datepicker-toggle';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-datepicker',\n exportAs: 'gipiDatePicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof DatepickerComponent => DatepickerComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-datepicker',\n }\n})\nexport class DatepickerComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild(MatDatepickerToggle, { static: true }) matDatepickerToggleRef: MatDatepickerToggle<Date>;\n\n private _name: string = `gipi-date-range-${nextUniqueId++}`;\n\n @Input() id: string = `${this._name}-date`;\n\n @Input() name: string = `${this._name}-date`;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '__/__/____';\n\n @Input() help: string = '';\n\n private _minDate: Date = new Date('01/01/2000');\n @Input('min') get minDate(): Date {\n return this._minDate;\n }\n set minDate(value: Date) {\n this._minDate = value;\n this._minDate.setHours(0, 0, 0, 0);\n }\n\n private _maxDate: Date;\n @Input('max') get maxDate(): Date {\n return this._maxDate;\n }\n set maxDate(value: Date) {\n this._maxDate = value;\n this._maxDate.setHours(0, 0, 0, 0);\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _readonly: boolean = false;\n @Input() get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _dateFilter: DateFilterFn<Date> = null;\n @Input() get dateFilter(): DateFilterFn<Date> {\n return this._dateFilter;\n }\n set dateFilter(value: DateFilterFn<Date>) {\n this._dateFilter = value;\n }\n\n private _value: Date;\n @Input() get value(): Date {\n return this._value;\n }\n set value(value: Date) {\n this._value = value;\n this.onChange(this._value);\n this.onTouched(this._value);\n }\n\n onChange: Function = () => { };\n\n onTouched: Function = () => { };\n\n public get formattedValue(): string {\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n\n writeValue(value: Date): void {\n this._value = value;\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public onInputContentClick(event: MouseEvent): void {\n if (!this.readonly || !this.matDatepickerToggleRef) {\n return;\n }\n }\n\n public generatedDate(valueDate: string, keyUp: boolean): void {\n if (!keyUp && BrowserUtil.getBrowser() === 'Firefox') {\n return;\n }\n\n let match = false;\n if (valueDate.includes('/') && (!keyUp || valueDate.length === 10)) {\n this.value = moment(valueDate, 'DD/MM/YYYY').toDate();\n match = true;\n } else if (!valueDate.includes('/') && (!keyUp || valueDate.length === 8)) {\n this.value = moment(valueDate, 'DDMMYYYY').toDate();\n match = true;\n }\n\n if (BrowserUtil.getBrowser() !== 'Firefox') {\n if (match && !DateUtil.isValid(this.value)) {\n this.value = undefined;\n }\n } else {\n if (match && !this.value) {\n this.value = undefined;\n }\n }\n }\n\n public validateMinAndMaxDate(valueDate: string): void {\n const dateInput = moment(valueDate, 'DD/MM/YYYY').toDate();\n if (DateUtil.isLessThan(dateInput, this.minDate)) {\n this.value = undefined;\n } else if (this.maxDate) {\n this.value = (DateUtil.isGreaterThan(dateInput, this.maxDate) ? undefined : dateInput);\n }\n }\n\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatNativeDateModule } from '@angular/material';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { MatCalendar, MatCalendarHeader } from './mat-datepicker/calendar';\nimport { MatCalendarBody } from './mat-datepicker/calendar-body';\nimport { MatDateRangeInput } from './mat-datepicker/date-range-input';\nimport { MatEndDate, MatStartDate } from './mat-datepicker/date-range-input-parts';\nimport { MatDateRangePicker } from './mat-datepicker/date-range-picker';\nimport { MatDatepicker } from './mat-datepicker/datepicker';\nimport { MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MatDatepickerContent, } from './mat-datepicker/datepicker-base';\nimport { MatDatepickerInput } from './mat-datepicker/datepicker-input';\nimport { MatDatepickerIntl } from './mat-datepicker/datepicker-intl';\nimport { MatDatepickerToggle, MatDatepickerToggleIcon } from './mat-datepicker/datepicker-toggle';\nimport { MatMonthView } from './mat-datepicker/month-view';\nimport { MatMultiYearView } from './mat-datepicker/multi-year-view';\nimport { NativeDateAdapter } from './mat-datepicker/shared/adapter/native-date-adapter';\nimport { MatYearView } from './mat-datepicker/year-view';\n\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { MaxRangeDirective } from './date-range-picker/shared/max-range/max-range.directive';\nimport { PresetRangeComponent } from './date-range-picker/shared/preset-range/preset-range.component';\nimport { DatepickerComponent } from './datepicker/datepicker.component';\nimport { DateAdapter, MAT_DATE_LOCALE } from './mat-datepicker/shared/adapter/date-adapter';\nimport { MAT_DATE_FORMATS } from './mat-datepicker/shared/adapter/date-formats';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n FormsModule,\n ReactiveFormsModule,\n PlatformModule,\n MatNativeDateModule,\n ],\n exports: [\n ScrollingModule,\n FormsModule,\n ReactiveFormsModule,\n PlatformModule,\n\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n\n MaxRangeDirective,\n PresetRangeComponent,\n DateRangePickerComponent,\n DatepickerComponent,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n\n MaxRangeDirective,\n PresetRangeComponent,\n DateRangePickerComponent,\n DatepickerComponent,\n ],\n providers: [\n MatDatepickerIntl,\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n {\n provide: DateAdapter,\n useClass: NativeDateAdapter,\n deps: [MAT_DATE_LOCALE]\n },\n {\n provide: MAT_DATE_LOCALE,\n useValue: 'pt-BR',\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: {\n parse: {\n dateInput: 'DD/MM/YYYY',\n },\n display: {\n dateInput: 'DD/MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n },\n },\n ],\n entryComponents: [\n MatDatepickerContent,\n ]\n})\nexport class DatepickerModule { }\n","import { AfterViewInit, ChangeDetectorRef, Component, forwardRef, OnDestroy, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { matDatepickerAnimations } from '@angular/material/datepicker';\nimport { ObjectUtil } from '../../../../core/utils/object.util';\nimport { MonthYearPickerComponent } from '../month-year-picker.component';\n@Component({\n selector: 'gipi-calendar-month-year',\n exportAs: 'gipiMonthYearPicker',\n templateUrl: './calendar-month-year.component.html',\n styleUrls: ['./calendar-month-year.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof CalendarMonthYearComponent => CalendarMonthYearComponent),\n multi: true\n },\n ],\n animations: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ],\n host: {\n 'class': 'gipi-calendar-month-year',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n }\n})\nexport class CalendarMonthYearComponent implements AfterViewInit, OnInit, OnDestroy {\n\n private _subscriptions = new Subscription();\n\n _animationState: 'enter' | 'void' = 'enter';\n _animationDone: Subject<void> = new Subject<void>();\n\n monthYearPicker: MonthYearPickerComponent;\n\n isShowYears: boolean;\n years: Array<number> = [];\n months: Array<string> = [];\n\n _calendarView: 'both' | 'year' = 'both';\n _locale: string;\n _year: number;\n _month: number;\n // _enabledMonths: Array<number> = [];\n // _disabledMonths: Array<number> = [];\n // _enabledYears: Array<number> = [];\n // _disabledYears: Array<number> = [];\n _multiple: boolean;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,) { }\n\n ngOnInit() {\n if (this._locale) {\n moment.locale(this._locale);\n } else {\n moment.locale('pt-br');\n }\n\n this.months = [...this.monthYearPicker.model.months];\n this._calendarView = this.monthYearPicker.calendarView;\n if (this._calendarView === 'year') {\n this.toggleShowYears();\n }\n\n this.monthYearPicker.onValueChange(this.monthYearPicker.model.selectedMonthIndex, this.monthYearPicker.model.selectedMonthYear);\n }\n\n ngAfterViewInit(): void {\n if (this._changeDetectorRef) {\n this._subscriptions.add(\n this.monthYearPicker._stateChanges.subscribe(() => {\n this._changeDetectorRef!.markForCheck();\n })\n );\n }\n }\n\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n\n public _startExitAnimation(): void {\n this._animationState = 'void';\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n public decrement(): void {\n this.monthYearPicker.model.decrementYear();\n if (this.isShowYears) {\n this._renderYears();\n }\n }\n\n public increment(): void {\n this.monthYearPicker.model.incrementYear();\n if (this.isShowYears) {\n this._renderYears();\n }\n }\n\n public selectMonth(index: number) {\n this.monthYearPicker.model.selectMonth(index);\n this.monthYearPicker.onValueChange(this.monthYearPicker.model.selectedMonthIndex, this.monthYearPicker.model.selectedMonthYear);\n this.monthYearPicker.close();\n }\n\n public isSelectedMonth(monthIndex: number) {\n return this.monthYearPicker.model.selectedMonthIndex == monthIndex && this.monthYearPicker.model.selectedMonthYear == this.monthYearPicker.model.selectedYearMoment.year();\n }\n\n public isCurrentMonth(monthIndex: number) {\n const currentMonth: number = moment().month();\n const currentYear: number = moment().year();\n return (monthIndex === currentMonth) && (this.monthYearPicker.model.selectedYearMoment.year() === currentYear);\n }\n\n public isDisabledMonth(index: number): boolean {\n let disabled = false;\n\n if (!ObjectUtil.isNull(this.monthYearPicker)) {\n const minMonth = !ObjectUtil.isNull(this.monthYearPicker.min) ? this.monthYearPicker.min.month : null;\n const maxMonth = !ObjectUtil.isNull(this.monthYearPicker.max) ? this.monthYearPicker.max.month : null;\n\n if (!ObjectUtil.isNull(minMonth) && !ObjectUtil.isNull(maxMonth)) {\n disabled = index < minMonth || index > maxMonth;\n } else if (!ObjectUtil.isNull(minMonth)) {\n disabled = index < minMonth;\n } else if (!ObjectUtil.isNull(maxMonth)) {\n disabled = index > maxMonth;\n }\n }\n\n return disabled;\n // let disabled = false;\n // if (this._enabledMonths && this._enabledMonths.length > 0) {\n // disabled = this._enabledMonths.indexOf(index) < 0;\n // }\n // if (this._disabledMonths && this._disabledMonths.length > 0) {\n // disabled = this._disabledMonths.indexOf(index) >= 0;\n // }\n // return disabled;\n }\n\n /** Years */\n public toggleShowYears() {\n this.isShowYears = !this.isShowYears;\n this._renderYears();\n }\n\n private _renderYears() {\n this.years = [];\n for (let i = 11; i > 0; i--) {\n this.years.push(this.monthYearPicker.model.selectedYearMoment.year() - i);\n }\n for (let i = 0; i <= 12; i++) {\n this.years.push(this.monthYearPicker.model.selectedYearMoment.year() + i);\n }\n }\n\n public get periodButtonLabel(): string {\n const formatYearRange = (start: number, end: number): string => {\n return `${start} \\u2013 ${end}`;\n };\n\n return this.isShowYears ? formatYearRange(this.years[0], this.years[this.years.length - 1]) : this.monthYearPicker.model.selectedYearText;\n }\n\n public selectYear(year: number) {\n if (this._calendarView === 'both') {\n this.isShowYears = false;\n }\n this.monthYearPicker.model.selectedYearMoment = moment().year(year);\n this.monthYearPicker.model.updateYearText();\n\n if (this._calendarView === 'year') {\n this.monthYearPicker.onValueChange(this.monthYearPicker.model.selectedMonthIndex, year);\n this.monthYearPicker.close();\n }\n }\n\n public isSelectedYear(year: number) {\n return this.monthYearPicker.model.selectedYearMoment.year() === year;\n }\n\n public isCurrentYear(year: number) {\n return moment().year() === year;\n }\n\n public isDisabledYear(index: number) {\n let disabled = false;\n\n if (!ObjectUtil.isNull(this.monthYearPicker)) {\n const minYear = !ObjectUtil.isNull(this.monthYearPicker.min) ? this.monthYearPicker.min.year : null;\n const maxYear = !ObjectUtil.isNull(this.monthYearPicker.max) ? this.monthYearPicker.max.year : null;\n\n if (!ObjectUtil.isNull(minYear) && !ObjectUtil.isNull(maxYear)) {\n disabled = index < minYear || index > maxYear;\n } else if (!ObjectUtil.isNull(minYear)) {\n disabled = index < minYear;\n } else if (!ObjectUtil.isNull(maxYear)) {\n disabled = index > maxYear;\n }\n }\n\n return disabled;\n\n // let disabled: boolean = false;\n // if (this._enabledYears && this._enabledYears.length > 0) {\n // disabled = this._enabledYears.findIndex(y => y === year) < 0;\n // }\n // if (this._disabledYears && this._disabledYears.length > 0) {\n // disabled = this._disabledYears.findIndex(y => y === year) >= 0;\n // }\n // return disabled;\n }\n\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, EventEmitter, forwardRef, Inject, InjectionToken, Input, NgZone, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { ObjectUtil } from './../../../core/utils/object.util';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { CalendarMonthYearComponent } from './calendar-month-year/calendar-month-year.component';\n\n\nexport const GIPI_MONTH_YEAR_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('gipi-month-year-scroll-strategy');\n\n/** @docs-private */\nexport function GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: GIPI_MONTH_YEAR_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY,\n};\n\n\nexport class MonthYear {\n private _month: number;\n private _year: number;\n\n public get date(): Date {\n const date = moment().day(1).month(this.month).year(this.year).startOf('day').toDate();\n return date;\n }\n\n public get month(): number {\n return this._month;\n }\n\n public get year(): number {\n return this._year;\n }\n\n constructor(month?: number, year?: number) {\n this._month = month;\n this._year = year;\n }\n}\n\nexport class MonthPickerModel {\n selectedYearMoment: moment.Moment;\n selectedYearText: string;\n\n selectedMonthMoment: moment.Moment;\n selectedMonthIndex: number;\n selectedMonthYear: number;\n\n months: Array<string> = [];\n\n constructor() {\n this.selectedYearMoment = moment();\n this.updateYearText();\n\n this.selectedMonthMoment = moment();\n\n this.months = moment.monthsShort().map(month => `${month}.`);\n\n this.selectedMonthIndex = this.selectedMonthMoment.month();\n this.selectedMonthYear = this.selectedYearMoment.year();\n }\n\n updateYearText() {\n this.selectedYearText = !ObjectUtil.isNull(moment) ? moment(this.selectedYearMoment).format('YYYY') : '';\n }\n\n selectMonth(index: number) {\n this.selectedMonthMoment = moment().month(index);\n this.selectedMonthIndex = this.selectedMonthMoment.month();\n this.selectedMonthYear = this.selectedYearMoment.year();\n }\n\n incrementYear() {\n this.selectedYearMoment = this.selectedYearMoment.add(1, \"year\")\n this.updateYearText();\n }\n\n decrementYear() {\n this.selectedYearMoment = this.selectedYearMoment.subtract(1, \"year\")\n this.updateYearText();\n }\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-month-year-picker',\n templateUrl: './month-year-picker.component.html',\n styleUrls: ['./month-year-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((): typeof MonthYearPickerComponent => MonthYearPickerComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-month-year-picker',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonthYearPickerComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\n\n @ViewChild('inputMonthYearContent', { static: false, }) inputMonthYearContentRef: ElementRef;\n\n private _name: string = `gipi-date-range-${nextUniqueId++}`;\n\n private _scrollStrategy: () => ScrollStrategy;\n\n private _popupRef: OverlayRef | null;\n private _popupComponentRef: ComponentRef<CalendarMonthYearComponent> | null;\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n private _backdropHarnessClass = `${this._name}-backdrop`;\n\n readonly _stateChanges: Subject<void> = new Subject();\n\n public valueLabel: string = '';\n\n public model: MonthPickerModel;\n\n @Input() id: string = `${this._name}-date`;\n\n @Input() name: string = `${this._name}-date`;\n\n @Input() label: string = '';\n\n @Input() placeholder: string = '';\n\n @Input() help: string = '';\n\n @Input() locale: string;\n @Input() year: number;\n @Input() month: number;\n\n // @Input() enabledMonths: Array<number> = [];\n // @Input() disabledMonths: Array<number> = [];\n\n // @Input() enabledYears: Array<number> = [];\n // @Input() disabledYears: Array<number> = [];\n\n @Input() multiple: boolean;\n\n @Input() xPosition: 'start' | 'end' = 'start';\n\n @Input() yPosition: 'above' | 'below' = 'below';\n\n @Input() calendarView: 'both' | 'year' = 'both';\n\n private _opened = false;\n @Input() get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _min: MonthYear = null;\n @Input() get min(): MonthYear {\n return this._min;\n }\n set min(value: MonthYear) {\n this._min = value;\n }\n\n private _max: MonthYear = null;\n @Input() get max(): MonthYear {\n return this._max;\n }\n set max(value: MonthYear) {\n this._max = value;\n }\n\n private _value: MonthYear;\n @Input() get value(): MonthYear {\n return this._value;\n }\n set value(value: MonthYear) {\n let valueAux: MonthYear = value;\n if (!value) {\n valueAux = null;\n }\n if (valueAux) {\n switch (this.calendarView) {\n case 'both': {\n this.valueLabel = moment(valueAux.date).format('MM/YYYY');\n break;\n }\n case 'year': {\n this.valueLabel = moment(valueAux.date).format('YYYY');\n break;\n }\n default: {\n this.valueLabel = moment(valueAux.date).format('MM/YYYY');\n break;\n }\n }\n }\n\n this._value = valueAux;\n\n this.onChange(this._value);\n this.onTouched(this._value);\n }\n\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n onChange: Function = () => { };\n\n onTouched: Function = () => { };\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n private _overlay: Overlay,\n private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Inject(GIPI_MONTH_YEAR_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any,\n ) {\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnInit(): void {\n this.model = new MonthPickerModel();\n\n if (this.year) {\n this.model.selectedYearMoment = moment().year(this.year);\n }\n\n if (this.month) {\n this.model.selectedMonthIndex = this.month;\n this.model.selectedMonthMoment = moment().month(this.month);\n\n if (this.year) {\n this.model.selectedMonthYear = this.year;\n }\n }\n\n this.model.updateYearText();\n if (ObjectUtil.isNull(this.month) && ObjectUtil.isNull(this.year)) {\n this.value = null;\n this._changeDetectorRef.detectChanges();\n } else {\n this.onValueChange(this.model.selectedMonthIndex, this.model.selectedMonthYear);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n\n if (positionChange && !positionChange.firstChange && this._popupRef) {\n this._setConnectedPositions(this._popupRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy);\n\n if (this.opened) {\n this._popupRef.updatePosition();\n }\n }\n\n this._stateChanges.next(undefined);\n }\n\n ngOnDestroy(): void {\n this._destroyPopup();\n this.close();\n this._stateChanges.complete();\n }\n\n writeValue(value: MonthYear): void {\n this.value = value;\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public onValueChange(month: number, year: number) {\n const monthYear: MonthYear = new MonthYear(month, year);\n this.value = monthYear;\n this._changeDetectorRef.detectChanges();\n }\n\n public open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this.inputMonthYearContentRef) {\n throw Error('Attempted to open an MonthYearPicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n\n public close(): void {\n if (!this._opened) {\n return;\n }\n if (this._popupComponentRef && this._popupRef) {\n const instance = this._popupComponentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyPopup());\n }\n\n const completeClose = () => {\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n private _openAsPopup(): void {\n const portal: ComponentPortal<CalendarMonthYearComponent> = new ComponentPortal<CalendarMonthYearComponent>(CalendarMonthYearComponent, this._viewContainerRef);\n\n this._destroyPopup();\n this._createPopup();\n this._popupComponentRef = this._popupRef!.attach(portal);\n this._popupComponentRef.instance.monthYearPicker = this;\n\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._popupRef!.updatePosition();\n });\n }\n\n private _getConnectedOverlayOrigin(): ElementRef {\n return this.inputMonthYearContentRef ? this.inputMonthYearContentRef : this.elementRef;\n }\n\n private _createPopup(): void {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(this._getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._setConnectedPositions(positionStrategy),\n hasBackdrop: true,\n backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n direction: this._dir || 'ltr',\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-month-year-picker-popup',\n });\n\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n merge(\n this._popupRef.backdropClick(),\n this._popupRef.detachments(),\n this._popupRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE || (this.inputMonthYearContentRef && event.altKey && event.keyCode === UP_ARROW)))\n ).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n\n this.close();\n });\n }\n\n private _destroyPopup() {\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupRef = this._popupComponentRef = null;\n }\n }\n\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY\n }\n ]);\n }\n\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { CalendarMonthYearComponent } from './calendar-month-year/calendar-month-year.component';\nimport { GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY_PROVIDER, MonthYearPickerComponent } from './month-year-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [\n ScrollingModule,\n CalendarMonthYearComponent,\n MonthYearPickerComponent,\n ],\n declarations: [\n CalendarMonthYearComponent,\n MonthYearPickerComponent,\n ],\n providers: [\n GIPI_MONTH_YEAR_SCROLL_STRATEGY_FACTORY_PROVIDER,\n ],\n entryComponents: [\n CalendarMonthYearComponent,\n ],\n})\nexport class MonthYearPickerModule { }\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NumberUtil } from '../../../core/utils/number.util';\nimport { ObjectUtil } from '../../../core/utils/object.util';\n\nlet nextUniqueId = 0;\n\nexport class RangePage {\n start: number;\n end: number;\n\n public getTotalCount(): number {\n return (this.end - this.start) + 1;\n }\n\n public getRange(): number[] {\n return Array.from({ length: this.getTotalCount() }, (_, i) => this.start - 1 + i);\n }\n\n constructor(start?: number, end?: number) {\n this.start = start;\n this.end = end;\n }\n}\n\n@Component({\n selector: 'gipi-range-page',\n templateUrl: './range-page.component.html',\n styleUrls: ['./range-page.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GIPIRangePageComponent),\n multi: true\n },\n ]\n})\nexport class GIPIRangePageComponent implements OnInit, ControlValueAccessor {\n\n private _name: string = `gipi-range-page-${nextUniqueId++}`;\n\n public _startPage: number = 1;\n public _endPage: number = 1;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() tooltip: string = '';\n\n @Input() placeholderStart: string = '';\n @Input() placeholderEnd: string = '';\n\n @Input() help: string = '';\n\n private _min: number = 1;\n @Input() get min(): number {\n return NumberUtil.isNumber(this._min) ? this._min : 1;\n }\n set min(value: number) {\n this._min = value;\n this._initPage();\n }\n\n private _max: number = 100;\n @Input() get max(): number {\n return NumberUtil.isNumber(this._max) ? this._max : 100;\n }\n set max(value: number) {\n this._max = value;\n this._initPage();\n }\n\n private _step: number = 1;\n @Input() get step(): number {\n return NumberUtil.isNumber(this._step) ? this._step : 1;\n }\n set step(value: number) {\n this._step = value;\n this._initPage();\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n onChange: Function = (value: RangePage) => { };\n onTouched: Function = () => { };\n\n public get formattedValue(): string {\n return '';\n }\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void {\n this._initPage();\n }\n\n ngOnDestroy(): void { }\n\n writeValue(value: RangePage): void {\n if (!ObjectUtil.isNull(value)) {\n this._startPage = value.start || this._startPage;\n this._endPage = value.end || this._endPage;\n }\n this._changeDetectorRef.detectChanges();\n }\n\n registerOnChange(fn: Function): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n private _initPage(): void {\n this._startPage = this.min;\n this._endPage = Math.min(this._startPage + this.step - 1, this.max);\n }\n\n public updateEndPage(): void {\n if (this.disabled) {\n return;\n }\n\n if (this._startPage < this.min) {\n this._startPage = this.min;\n } else if (this._startPage > this.max) {\n this._startPage = this.max;\n }\n\n if (this._endPage < this._startPage) {\n this._endPage = this._startPage;\n } else if (this._endPage > (this._startPage + (this.step - 1))) {\n this._endPage = Math.min(this._startPage + this.step - 1, this.max);\n }\n this._propagateChange();\n }\n\n public updateStartPage(): void {\n if (this.disabled) {\n return;\n }\n\n if (this._endPage > this.max) {\n this._endPage = this.max;\n } else if (this._endPage > this.max) {\n this._endPage = this.max;\n }\n\n if (this._startPage > this._endPage) {\n this._startPage = this._endPage;\n } else if (this._startPage < (this._endPage - (this.step + 1))) {\n this._startPage = Math.max(this._endPage - this.step + 1, this.min);\n }\n this._propagateChange();\n }\n\n public previous(): void {\n if (this.disabled) {\n return;\n }\n\n const newStartPage = Math.max(this._startPage - this.step + 1, this.min);\n let newEndPage = Math.min(newStartPage + this.step - 1, this.max);\n\n if (newEndPage >= this.min) {\n this._startPage = newStartPage;\n this._endPage = newEndPage;\n this._propagateChange();\n }\n }\n\n public next(): void {\n if (this.disabled) {\n return;\n }\n\n // const newStartPage = Math.min(this._startPage + this.step, this.max - this.step + 1);\n // let newEndPage = newStartPage + this.step - 1;\n const newStartPage = Math.min(this._startPage + this.step, this.max);\n let newEndPage = Math.min(newStartPage + this.step - 1, this.max);\n\n if ((newStartPage === this.max) || (newEndPage > this.max)) {\n newEndPage = newStartPage;\n }\n\n if (newEndPage <= this.max) {\n this._startPage = newStartPage;\n this._endPage = newEndPage;\n this._propagateChange();\n }\n }\n\n public selectText(input: HTMLInputElement) {\n if (this.disabled || !input) {\n return;\n }\n setTimeout(() => input.select(), 0);\n }\n\n private _propagateChange() {\n this.onChange(new RangePage(this._startPage, this._endPage));\n this.onTouched();\n }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface RangeSlider {\n from: number;\n to: number;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gipi-range-slider',\n exportAs: 'gipiRangeSlider',\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GIPIRangeSliderComponent),\n multi: true\n },\n ],\n host: {\n 'class': 'gipi-range-slider',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GIPIRangeSliderComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n @ViewChild('fromSlider', { static: false }) fromSlider: ElementRef;\n @ViewChild('toSlider', { static: false }) toSlider: ElementRef;\n\n private _name: string = `gipi-range-slider-${nextUniqueId++}`;\n\n @Input() id: string = this._name;\n\n @Input() name: string = this._name;\n\n @Input() label: string = '';\n\n @Input() help: string = '';\n\n @Input() min: number = 1;\n\n @Input() max: number = 100;\n\n private _maxRange: number = 5;\n @Input() get maxRange(): number {\n return this._maxRange || 5;\n }\n set maxRange(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"maxRange\" must be 1');\n }\n this._maxRange = value || 5;\n }\n\n private _fromValue: number = 1;\n @Input('from') get fromValue(): number {\n return this._fromValue || 1;\n }\n set fromValue(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"from\" must be 1');\n }\n this._fromValue = value || 1;\n }\n\n private _toValue: number = 1;\n @Input('to') get toValue(): number {\n return this._toValue || 1;\n }\n set toValue(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"to\" must be 1');\n }\n this._toValue = value || 1;\n }\n\n private _step: number = 1;\n @Input() get step(): number {\n return this._step || 1;\n }\n set step(value: number) {\n if (!value || (value <= 0)) {\n throw new Error('Minimum value for \"step\" must be 1');\n }\n this._step = value || 1;\n }\n\n private _disabled: boolean = false;\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _required: boolean = false;\n @Input() get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n onChange: Function = () => { };\n onTouched: Function = () => { };\n\n constructor(\n public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ) { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n this._fillSlider();\n this._setToggleAccessible();\n }\n\n ngOnDestroy(): void { }\n\n writeValue(value: RangeSlider): void {\n if (value) {\n this.fromValue = value.from;\n this.toValue = value.to;\n\n if (this.fromSlider && this.toSlider) {\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n this.toSlider.nativeElement.value = this.toValue.toString();\n\n this._fillSlider();\n this._setToggleAccessible();\n }\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n public controlFromInput(isByNgModel: boolean): void {\n let [from, to] = isByNgModel ? [this.fromValue, this.toValue] : this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n // if ((to - from) > this.maxRange) {\n // from = to - this.maxRange;\n // }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if (from > to) {\n this.fromValue = to;\n }\n\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n this._notifyValueChange();\n }\n\n public controlToInput(isByNgModel: boolean): void {\n let [from, to] = isByNgModel ? [this.fromValue, this.toValue] : this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n // if ((to - from) > this.maxRange) {\n // to = from + this.maxRange;\n // }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if (from <= to) {\n this.toValue = to;\n } else {\n this.toValue = from;\n }\n\n this.toSlider.nativeElement.value = this.toValue.toString();\n this._notifyValueChange();\n }\n\n public controlFromSlider(): void {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n from = to - this.maxRange;\n }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if ((to - from) === this.maxRange) {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n to = from + this.maxRange;\n }\n\n this._fillSlider();\n\n if (from <= to) {\n this.toValue = to;\n } else {\n this.toValue = from;\n }\n\n this.toSlider.nativeElement.value = this.toValue.toString();\n }\n\n if (from >= to) {\n this.fromValue = to;\n } else {\n this.fromValue = from;\n }\n\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n this._notifyValueChange();\n }\n\n public controlToSlider(): void {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n to = from + this.maxRange;\n }\n\n this._fillSlider();\n this._setToggleAccessible();\n\n if ((to - from) === this.maxRange) {\n let [from, to] = this._getParsed(this.fromSlider.nativeElement, this.toSlider.nativeElement);\n from = this._roundToStep(from);\n to = this._roundToStep(to);\n\n if ((to - from) > this.maxRange) {\n from = to - this.maxRange;\n }\n\n this._fillSlider();\n\n if (from >= to) {\n this.fromValue = to;\n } else {\n this.fromValue = from;\n }\n\n this.fromSlider.nativeElement.value = this.fromValue.toString();\n }\n\n if (from <= to) {\n this.toValue = to;\n } else {\n this.toValue = from;\n }\n\n this.toSlider.nativeElement.value = this.toValue.toString();\n this._notifyValueChange();\n }\n\n private _getParsed(currentFrom: HTMLInputElement, currentTo: HTMLInputElement): [number, number] {\n const from: number = parseInt(currentFrom.value, 10);\n const to: number = parseInt(currentTo.value, 10);\n return [from, to];\n }\n\n private _fillSlider(): void {\n const fromSliderEl: HTMLInputElement = (this.fromSlider.nativeElement as HTMLInputElement);\n const toSliderEl: HTMLInputElement = (this.toSlider.nativeElement as HTMLInputElement);\n const rangeDistance: number = Number(toSliderEl.max) - Number(toSliderEl.min);\n const fromPosition: number = (this.fromValue - Number(fromSliderEl.min));\n const toPosition: number = (this.toValue - Number(toSliderEl.min));\n const sliderColor: string = '#e0e1e2';\n const rangeColor: string = '#f1a0a6';\n\n toSliderEl.style.background = `linear-gradient(\n to right,\n ${sliderColor} 0%,\n ${sliderColor} ${(fromPosition) / (rangeDistance) * 100}%,\n ${rangeColor} ${((fromPosition) / (rangeDistance)) * 100}%,\n ${rangeColor} ${(toPosition) / (rangeDistance) * 100}%,\n ${sliderColor} ${(toPosition) / (rangeDistance) * 100}%,\n ${sliderColor} 100%)`;\n }\n\n private _setToggleAccessible(): void {\n const fromInput = (this.fromSlider.nativeElement as HTMLInputElement);\n const toInput = (this.toSlider.nativeElement as HTMLInputElement);\n\n const fromValue = parseInt(fromInput.value, 10);\n const toValue = parseInt(toInput.value, 10);\n\n if (fromValue <= parseInt(fromInput.min, 10) && toValue <= parseInt(toInput.min, 10)) {\n // Ambos estão no mínimo\n fromInput.style.zIndex = '1';\n toInput.style.zIndex = '2';\n } else if (fromValue >= parseInt(fromInput.max, 10) && toValue >= parseInt(toInput.max, 10)) {\n // Ambos estão no máximo\n fromInput.style.zIndex = '2';\n toInput.style.zIndex = '1';\n } else {\n // Caso geral\n fromInput.style.zIndex = '2';\n toInput.style.zIndex = '1';\n }\n }\n\n private _roundToStep(value: number): number {\n return Math.round(value / this.step) * this.step;\n }\n\n private _notifyValueChange(): void {\n this.onChange({ from: this.fromValue, to: this.toValue });\n }\n\n public onBlur(): void {\n this.onTouched();\n }\n\n}\n","import { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CommonModule } from '@angular/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule, MatRippleModule } from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { MdePopoverModule } from '@material-extended/mde';\nimport { MentionModule } from 'angular-mentions';\nimport { NgxCurrencyModule } from 'ngx-currency';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\nimport { MAT_DATE_FORMATS } from './gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats';\n\nimport { MaterialModule } from './material.module';\n\nimport { ButtonComponent } from './components/button/button.component';\nimport { CardComponent } from './components/card/card.component';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { IconComponent } from './components/icon/icon.component';\nimport { InputCurrencyComponent } from './components/input-currency/input-currency.component';\nimport { InputFileComponent } from './components/input-file/input-file.component';\nimport { InputComponent } from './components/input/input.component';\nimport { LoadingOverlayComponent } from './components/loading-overlay/loading-overlay.component';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { OverlayPanelComponent } from './components/overlay-panel/overlay-panel.component';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { RadioGroupEntityComponent } from './components/radio-group-entity/radio-group-entity.component';\nimport { RadioGroupEnumComponent } from './components/radio-group-enum/radio-group-enum.component';\nimport { SelectButtonComponent } from './components/select-button/select-button.component';\nimport { SelectEntityPagedComponent } from './components/select-entity-paged/select-entity-paged.component';\nimport { SelectButtonAddComponent } from './components/select-entity-paged/shared/select-button-add/select-button-add.component';\nimport { SelectButtonNextBatchComponent } from './components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component';\nimport { SelectNoEntriesFoundDirective } from './components/select-entity-paged/shared/select-no-entries-found.directive';\nimport { SelectSearchClearDirective } from './components/select-entity-paged/shared/select-search-clear.directive';\nimport { SelectSearchComponent } from './components/select-entity-paged/shared/select-search/select-search.component';\nimport { SelectEntityComponent } from './components/select-entity/select-entity.component';\nimport { SelectEnumComponent } from './components/select-enum/select-enum.component';\nimport { SelectMonthPeriodComponent } from './components/select-month-period/select-month-period.component';\nimport { SlideToggleComponent } from './components/slide-toggle/slide-toggle.component';\nimport { StepperComponent } from './components/stepper/stepper.component';\nimport { TabGroupComponent } from './components/tab-group/tab-group.component';\nimport { TabComponent } from './components/tab/tab.component';\nimport { TableScrolledComponent } from './components/table-scrolled/table-scrolled.component';\nimport { TableComponent } from './components/table/table.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\nimport { DynamicTabDirective } from './directives/dynamic-tab.directive';\nimport { ItssTemplate } from './directives/generic-template.directive';\nimport { InputSelectInfiniteScrollDirective } from './directives/input-select-infinite-scroll.directive';\nimport { LowerCaseDirective } from './directives/lower-case.directive';\nimport { PhoneMaskDirective } from './directives/phone-mask.directive';\nimport { SpaceDropDirective } from './directives/space-drop.directive';\nimport { UpperCaseDirective } from './directives/upper-case.directive';\n\nimport { GIPI_BREAKPOINTS, GIPI_CUSTOM_BREAKPOINTS_PROVIDER } from '../core/custom-breakpoints';\n\n// New components\nimport { GIPIFileDragAndDropDirective } from './gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive';\nimport { GIPIInfiniteScrollDirective } from './gipi-components/infinite-scroll/infinite-scroll.directive';\nimport { GIPIColDirective } from './gipi-components/layout-grid/col.directive';\nimport { GIPIRowDirective, } from './gipi-components/layout-grid/row.directive';\nimport { GIPIPaginationControlsDirective } from './gipi-components/table/components/table-pagination/shared/pagination-controls.directive';\nimport { GIPITemplateDirective } from './gipi-components/template/template.directive';\n\nimport { GIPIPaginatePipe } from './gipi-components/table/components/table-pagination/shared/paginate.pipe';\n\nimport { GIPIBreakpointService } from './gipi-components/layout-grid/services/breakpoint.service';\nimport { GIPIResizeService } from './gipi-components/layout-grid/services/resize.service';\nimport { GIPIOverlayService } from './gipi-components/overlay/shared/overlay-service';\nimport { GIPIPaginationService } from './gipi-components/table/components/table-pagination/shared/pagination.service';\n\nimport { GIPIAbstractFormComponent } from './gipi-components/abstract-form/abstract-form.component';\nimport { GIPIActionRowComponent } from './gipi-components/action-row/action-row.component';\nimport { GIPIBadgeComponent } from './gipi-components/badge/badge.component';\nimport { GIPIButtonComponent } from './gipi-components/button/button.component';\nimport { GIPIChipsComponent } from './gipi-components/chips/chips.component';\nimport { GIPIConfirmationDialogComponent } from './gipi-components/confirmation-dialog/confirmation-dialog.component';\nimport { GIPIDropdownMenuComponent } from './gipi-components/dropdown-menu/dropdown-menu.component';\nimport { GIPIExpansionPanelComponent } from './gipi-components/expansion-panel/expansion-panel.component';\nimport { GIPIFileDragAndDropComponent } from './gipi-components/file-drag-and-drop/file-drag-and-drop.component';\nimport { GIPIFooterComponent } from './gipi-components/footer/footer.component';\nimport { GIPIFormFieldComponent } from './gipi-components/form-field/form-field.component';\nimport { GIPIHelpfulTipComponent } from './gipi-components/helpful-tip/helpful-tip.component';\nimport { GIPIInputCheckboxComponent } from './gipi-components/input-checkbox/input-checkbox.component';\nimport { GIPIInputCurrencyComponent } from './gipi-components/input-currency/input-currency.component';\nimport { GIPIInputMonthPickerComponent } from './gipi-components/input-monthpicker/input-monthpicker.component';\nimport { GIPIInputSelectEnumComponent } from './gipi-components/input-select-enum/input-select-enum.component';\nimport { GIPIInputSelectListboxComponent } from './gipi-components/input-select-listbox/input-select-listbox.component';\nimport { GIPIInputSearchComponent } from './gipi-components/input-select-paged/input-search/input-search.component';\nimport { GIPIInputSelectPagedComponent } from './gipi-components/input-select-paged/input-select-paged.component';\nimport { GIPIInputSelectRadioComponent } from './gipi-components/input-select-radio/input-select-radio.component';\nimport { GIPIInputSelectComponent } from './gipi-components/input-select/input-select.component';\nimport { GIPINotificationComponent } from './gipi-components/notification/notification.component';\nimport { GIPINoveltiesComponent } from './gipi-components/novelties/novelties.component';\nimport { GIPIOverlayComponent } from './gipi-components/overlay/overlay.component';\nimport { GIPIPasswordRequerimentsComponent } from './gipi-components/password-requeriments/password-requeriments.component';\nimport { GIPIPopoverComponent } from './gipi-components/popover/popover.component';\nimport { GIPIPopoverTarget } from './gipi-components/popover/shared/popover-target';\nimport { GIPIPopoverTrigger } from './gipi-components/popover/shared/popover-trigger';\nimport { GIPIRadioGroupComponent } from './gipi-components/radio-group/radio-group.component';\nimport { GIPISelectButtonComponent } from './gipi-components/select-button/select-button.component';\nimport { GIPISelectComponent } from './gipi-components/select/select.component';\nimport { GIPISidenavContainerComponent } from './gipi-components/sidebar/container/container.component';\nimport { GIPISidenavComponent } from './gipi-components/sidebar/sidenav/sidenav.component';\nimport { GIPIStepperComponent } from './gipi-components/stepper/stepper.component';\nimport { GIPITableBodyComponent } from './gipi-components/table/components/table-body/table-body.component';\nimport { GIPITableFooterComponent } from './gipi-components/table/components/table-footer/table-footer.component';\nimport { GIPITableHeaderComponent } from './gipi-components/table/components/table-header/table-header.component';\nimport { GIPITablePaginationComponent } from './gipi-components/table/components/table-pagination/table-pagination.component';\nimport { GIPITableProgressBarComponent } from './gipi-components/table/components/table-progress-bar/table-progress-bar.component';\nimport { GIPITableComponent } from './gipi-components/table/table.component';\nimport { GIPIToolbarComponent } from './gipi-components/toolbar/toolbar.component';\nimport { GIPITopNavComponent } from './gipi-components/top-nav/top-nav.component';\nimport { GIPIUserProfileComponent } from './gipi-components/user-profile/user-profile.component';\n\nimport { DatepickerModule } from './gipi-components/datepicker/datepicker.module';\nimport { DateAdapter, MAT_DATE_LOCALE } from './gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter';\nimport { NativeDateAdapter } from './gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter';\nimport { MonthYearPickerModule } from './gipi-components/month-year-picker/mont-year-picker.module';\nimport { GIPIRangePageComponent } from './gipi-components/range-page/range-page.component';\nimport { GIPIRangeSliderComponent } from './gipi-components/range-slider/range-slider.component';\n\nexport let INJECTOR: Injector;\n\nconst GIPIComponents: any[] = [\n GIPITopNavComponent,\n GIPIFooterComponent,\n GIPIButtonComponent,\n GIPISidenavContainerComponent,\n GIPISidenavComponent,\n GIPIOverlayComponent,\n GIPIToolbarComponent,\n GIPISelectButtonComponent,\n GIPIUserProfileComponent,\n GIPISelectComponent,\n GIPINotificationComponent,\n GIPINoveltiesComponent,\n GIPIPopoverComponent,\n GIPIPopoverTrigger,\n GIPIPopoverTarget,\n GIPIActionRowComponent,\n GIPIAbstractFormComponent,\n GIPIStepperComponent,\n GIPIFileDragAndDropComponent,\n GIPIConfirmationDialogComponent,\n GIPIInputMonthPickerComponent,\n GIPIRadioGroupComponent,\n GIPIInputSelectRadioComponent,\n GIPIInputSelectListboxComponent,\n GIPIInputSelectComponent,\n GIPIFormFieldComponent,\n GIPIInputCheckboxComponent,\n GIPIChipsComponent,\n GIPIInputCurrencyComponent,\n GIPIInputSearchComponent,\n GIPIInputSelectPagedComponent,\n GIPIInputSelectEnumComponent,\n GIPIDropdownMenuComponent,\n GIPIExpansionPanelComponent,\n GIPIPasswordRequerimentsComponent,\n GIPIHelpfulTipComponent,\n GIPIBadgeComponent,\n GIPIRangeSliderComponent,\n GIPIRangePageComponent,\n\n // Table\n GIPITableHeaderComponent,\n GIPITableBodyComponent,\n GIPITableFooterComponent,\n GIPITablePaginationComponent,\n GIPITableProgressBarComponent,\n GIPITableComponent,\n];\n\nconst GIPIDirectives: any[] = [\n GIPITemplateDirective,\n GIPIColDirective,\n GIPIRowDirective,\n GIPIFileDragAndDropDirective,\n GIPIInfiniteScrollDirective,\n GIPIPaginationControlsDirective,\n];\n\nconst GIPIPipes: any[] = [\n GIPIPaginatePipe,\n];\n\nconst GIPIServices: any[] = [\n GIPIOverlayService,\n GIPIBreakpointService,\n GIPIResizeService,\n GIPIPaginationService,\n];\n\n@NgModule({\n declarations: [\n GIPIComponents,\n GIPIDirectives,\n GIPIPipes,\n LoadingComponent,\n LoadingOverlayComponent,\n ButtonComponent,\n InputComponent,\n SelectEntityComponent,\n SelectEnumComponent,\n TableComponent,\n CardComponent,\n CheckboxComponent,\n RadioGroupEntityComponent,\n RadioGroupEnumComponent,\n SlideToggleComponent,\n TabGroupComponent,\n TabComponent,\n DynamicTabDirective,\n IconComponent,\n StepperComponent,\n TextareaComponent,\n InputCurrencyComponent,\n InputFileComponent,\n PopoverComponent,\n PhoneMaskDirective,\n UpperCaseDirective,\n LowerCaseDirective,\n SpaceDropDirective,\n OverlayPanelComponent,\n ItssTemplate,\n SelectButtonComponent,\n SelectMonthPeriodComponent,\n InputSelectInfiniteScrollDirective,\n TableScrolledComponent,\n SelectSearchComponent,\n SelectEntityPagedComponent,\n SelectNoEntriesFoundDirective,\n SelectSearchClearDirective,\n SelectButtonAddComponent,\n SelectButtonNextBatchComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n MaterialModule,\n FlexLayoutModule.withConfig({ disableDefaultBps: true }, GIPI_BREAKPOINTS),\n NgxMaskModule.forChild(),\n NgxCurrencyModule,\n NgxMaterialTimepickerModule,\n MdePopoverModule,\n InfiniteScrollModule,\n MentionModule,\n\n DatepickerModule,\n MonthYearPickerModule,\n ],\n exports: [\n GIPIComponents,\n GIPIDirectives,\n GIPIPipes,\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n CdkStepperModule,\n MatRippleModule,\n MatDialogModule,\n InfiniteScrollModule,\n LoadingComponent,\n LoadingOverlayComponent,\n ButtonComponent,\n InputComponent,\n SelectEntityComponent,\n SelectEnumComponent,\n TableComponent,\n CardComponent,\n CheckboxComponent,\n RadioGroupEntityComponent,\n RadioGroupEnumComponent,\n SlideToggleComponent,\n TabGroupComponent,\n TabComponent,\n IconComponent,\n StepperComponent,\n TextareaComponent,\n InputCurrencyComponent,\n InputFileComponent,\n PopoverComponent,\n MentionModule,\n OverlayPanelComponent,\n ItssTemplate,\n SelectButtonComponent,\n SelectMonthPeriodComponent,\n InputSelectInfiniteScrollDirective,\n TableScrolledComponent,\n SelectSearchComponent,\n SelectEntityPagedComponent,\n SelectNoEntriesFoundDirective,\n SelectSearchClearDirective,\n SelectButtonAddComponent,\n SelectButtonNextBatchComponent,\n\n DatepickerModule,\n MonthYearPickerModule,\n ],\n entryComponents: [\n GIPIConfirmationDialogComponent,\n TabGroupComponent,\n TabComponent,\n PopoverComponent,\n ],\n providers: [\n GIPIServices,\n GIPI_CUSTOM_BREAKPOINTS_PROVIDER,\n {\n provide: DateAdapter,\n useClass: NativeDateAdapter,\n deps: [MAT_DATE_LOCALE]\n },\n {\n provide: MAT_DATE_LOCALE,\n useValue: 'pt-BR',\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: {\n parse: {\n dateInput: 'DD/MM/YYYY',\n },\n display: {\n dateInput: 'DD/MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n },\n },\n ]\n})\nexport class SharedModule {\n constructor(private _injector: Injector) {\n INJECTOR = this._injector;\n }\n}\n","import {AbstractDTO} from './abstract.dto';\n\nexport class PageDTO<U> extends AbstractDTO {\n\n content: U[];\n\n number: number;\n\n totalElements: number;\n\n totalPages: number;\n\n constructor() {\n super();\n this.content = [];\n this.number = 0;\n }\n\n}\n","import {AbstractDTO} from './abstract.dto';\nimport {SortDirectionEnum} from '../enums/sort-direction.enum';\n\nexport class SortDTO extends AbstractDTO {\n\n field: string;\n\n direction: SortDirectionEnum;\n\n constructor(field: string, direction: SortDirectionEnum) {\n super();\n this.field = field;\n this.direction = direction;\n }\n\n}\n","export enum SortDirectionEnum {\n\n ASC = 'ASC',\n DESC = 'DESC'\n\n}\n","import { OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { INJECTOR } from '../../shared/shared.module';\nimport { APP_MESSAGES } from '../app.messages';\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { PageDTO } from '../models/dto/page.dto';\nimport { SortDTO } from '../models/dto/sort.dto';\nimport { TableColumnDTO } from '../models/dto/table-column.dto';\nimport { TablePageEventDTO } from '../models/dto/table-page-event.dto';\nimport { SortDirectionEnum } from '../models/enums/sort-direction.enum';\nimport { AbstractCrudService } from '../services/abstract-crud.service';\nimport { ConfirmationService } from '../services/confirmation.service';\nimport { MessageService } from '../services/message.service';\nimport { ObjectUtil } from '../utils/object.util';\nimport { StringUtil } from '../utils/string.util';\nimport { AbstractComponent } from './abstract.component';\n\nexport abstract class AbstractFindComponent<T extends AbstractModel, F extends FilterDTO> extends AbstractComponent implements OnInit {\n\n filter: F;\n\n page: PageDTO<T>;\n\n columns: TableColumnDTO[];\n\n tablePageEventDTO: TablePageEventDTO;\n\n constructor(\n protected service: AbstractCrudService<T, F>,\n protected messageService: MessageService,\n protected confirmationService: ConfirmationService,\n protected router: Router,\n protected activatedRoute: ActivatedRoute,\n ) {\n super(messageService, router, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.service.returnPath = this.getPath();\n this.page = this.newPage();\n this.filter = this.newFilterDTO();\n this.getFilterDTOSessionStorage();\n this.columns = this.createTableColumns();\n }\n\n new(): void {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(\n () => this.router.navigate([this.getPath(), 'new'])\n );\n }\n\n edit(entity: T): void {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(\n () => this.router.navigate([this.getPath(), 'edit', entity.id])\n );\n }\n\n view(entity: T): void {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(\n () => this.router.navigate([this.getPath(), 'view', entity.id])\n );\n }\n\n delete(entity: T, filter?: boolean): void {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,\n accept: () => {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.page = this.newPage();\n this.preDelete();\n this.service.delete(entity.id).subscribe(() => {\n if (filter) {\n this.find();\n } else {\n this.new();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n if (this.isFinding()) {\n this.clear();\n }\n this.handleError(error);\n });\n } catch (e) {\n this.handleError(e);\n }\n }\n });\n }\n\n deleteAll(entityList: T[], filter?: boolean): void {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_ALL_CONFIRMATION,\n accept: () => {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.page = this.newPage();\n this.preDelete();\n this.service.deleteAll(entityList).subscribe(() => {\n if (filter) {\n this.find();\n } else {\n this.new();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n if (this.isFinding()) {\n this.clear();\n }\n this.handleError(error);\n });\n } catch (e) {\n this.handleError(e);\n }\n }\n });\n }\n\n updateStatus(entity: T, enabled: boolean): void {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente ${enabled ? 'ativar' : 'inativar'} este registro?`,\n accept: () => {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.service.save(entity).subscribe(() => {\n this.clear();\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n this.clear();\n this.handleError(error);\n });\n } catch (e) {\n this.handleError(e);\n }\n },\n cancel: () => this.clear()\n });\n }\n\n preDelete(): void {\n }\n\n clear(): void {\n this.page = this.newPage();\n this.filter = this.newFilterDTO();\n this.find();\n }\n\n protected getPath(): string {\n return `${this.activatedRoute.snapshot.parent.parent.url[0].path}/${this.activatedRoute.snapshot.parent.url[0].path}`;\n }\n\n protected newPage(): PageDTO<T> {\n return new PageDTO<T>();\n }\n\n protected newFilterDTO(): F {\n return null;\n }\n\n protected getFilterDTOSessionStorage(): Promise<void> {\n return Promise.resolve();\n }\n\n protected createTableColumns(): TableColumnDTO[] {\n return [];\n }\n\n protected createSorts(): SortDTO[] {\n return [];\n }\n\n find(pageEvent?: any): void {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n this.page = this.newPage();\n if (ObjectUtil.isNull(this.filter)) {\n this.filter = this.newFilterDTO();\n }\n\n if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {\n pageEvent = this.tablePageEventDTO;\n }\n\n if (pageEvent) {\n this.tablePageEventDTO = pageEvent;\n this.filter.pageNumber = pageEvent.pageIndex;\n this.filter.pageSize = pageEvent.pageSize;\n this.filter.offset = pageEvent.pageIndex * pageEvent.pageSize;\n if (pageEvent.sort) {\n this.filter.sorts = [new SortDTO(\n pageEvent.sort.active,\n StringUtil.isEmpty(pageEvent.sort.direction) ? SortDirectionEnum.DESC : pageEvent.sort.direction.toUpperCase()\n )];\n }\n } else {\n this.filter.pageNumber = 0;\n this.filter.offset = 0;\n this.filter.pageSize = 10;\n }\n this.service.find(this.filter).subscribe(page => {\n this.page = page;\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }, error => this.handleError(error));\n }\n\n isFinding(): boolean {\n return this.router.url.split('/').filter(path => path === 'new' || path === 'edit').length === 0;\n }\n\n isViewing(): boolean {\n return this.router.url.split('/').filter(path => path === 'view').length > 0;\n }\n\n isCreating(): boolean {\n return this.router.url.split('/').filter(path => path === 'new').length > 0;\n }\n\n}\n","import { EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { INJECTOR } from '../../shared/shared.module';\nimport { APP_MESSAGES } from '../app.messages';\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { AbstractCrudService } from '../services/abstract-crud.service';\nimport { ConfirmationService } from '../services/confirmation.service';\nimport { MessageService } from '../services/message.service';\nimport { AbstractFindComponent } from './abstract-find.component';\n\nexport abstract class AbstractCrudComponent<T extends AbstractModel, F extends FilterDTO> extends AbstractFindComponent<T, F> implements OnInit {\n\n entityValue: T;\n @Output() entityChange: EventEmitter<T> = new EventEmitter<T>(true);\n @Input() get entity(): T {\n return this.entityValue;\n }\n set entity(entity: T) {\n this.entityValue = entity;\n this.entityChange.emit(this.entityValue);\n }\n\n constructor(\n protected service: AbstractCrudService<T, F>,\n protected messageService: MessageService,\n protected confirmationService: ConfirmationService,\n protected router: Router,\n protected activatedRoute: ActivatedRoute\n ) {\n super(service, messageService, confirmationService, router, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.entity = this.newEntity();\n this.initializeForm();\n }\n\n save(edit?: boolean, filter?: boolean): void {\n try {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n if (filter) {\n this.page = this.newPage();\n }\n this.preSave();\n this.service.save(this.entity).subscribe(entity => {\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n if (edit) {\n this.edit(entity);\n } else if (filter) {\n this.find();\n } else {\n this.router.navigateByUrl(this.getPath(), { skipLocationChange: true }).then(() => this.router.navigate([this.getPath()]));\n }\n }, error => this.handleError(error));\n } catch (e) {\n this.handleError(e);\n }\n }\n\n preSave(): void { }\n\n return(): void {\n if (this.isViewing()) {\n this.router.navigateByUrl(this.service.returnPath, { skipLocationChange: true })\n .then(() => this.router.navigate([this.service.returnPath]));\n } else {\n this.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).RETURN_CONFIRMATION,\n accept: () => this.router.navigateByUrl(this.service.returnPath, { skipLocationChange: true })\n .then(() => this.router.navigate([this.service.returnPath]))\n });\n }\n }\n\n protected abstract newEntity(): T;\n\n protected initializeForm(): void {\n this.loading = true;\n this.loadingChange.emit(this.loading);\n const id: number | string = this.activatedRoute.snapshot.params.id;\n if (id) {\n this.service.getOne(id).subscribe(entity => {\n this.entity = entity;\n this.afterInitializeForm();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }, error => this.handleError(error));\n } else {\n this.entity = this.newEntity();\n this.loading = false;\n this.loadingChange.emit(this.loading);\n }\n }\n\n public afterInitializeForm(): void { }\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\nimport { BaseUser } from '../models/base-user.model';\nimport { TokenDTO } from '../models/dto/token.dto';\nimport { ObjectUtil } from '../utils/object.util';\nimport { AbstractService } from './abstract.service';\nimport { StringUtil } from '../utils/string.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService<U extends BaseUser> extends AbstractService {\n\n protected tokenSubject: BehaviorSubject<TokenDTO<U>>;\n\n token: Observable<TokenDTO<U>>;\n\n constructor(protected router: Router, protected http: HttpClient) {\n super();\n this.tokenSubject = new BehaviorSubject<TokenDTO<U>>(JSON.parse(localStorage.getItem('token')));\n this.token = this.tokenSubject.asObservable();\n }\n\n login(user: U): Observable<TokenDTO<U>> {\n const body: HttpParams = new HttpParams()\n .set('grant_type', 'password')\n .set('username', user.username)\n .set('password', user.password);\n\n return this.http.post<TokenDTO<U>>('api/authenticator/oauth/token', body, this.options()).pipe(\n map(accessToken => this.setCurrentUser(accessToken))\n );\n }\n\n async logout(): Promise<void> {\n await this.revokeToken().toPromise().then(() => {\n this.removeToken();\n this.router.navigate(['/oauth/login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url } });\n });\n }\n\n removeToken(): void {\n localStorage.removeItem('token');\n this.tokenSubject.next(null);\n }\n\n refreshToken(additionalParams?: Map<any, any>): Observable<TokenDTO<U>> {\n let body: HttpParams = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('refresh_token', this.tokenValue.refreshToken);\n\n if (!ObjectUtil.isNull(additionalParams)) {\n additionalParams.forEach((value, key) => body = body.append(key, value));\n }\n\n return this.http.post<TokenDTO<U>>('api/authenticator/oauth/token', body, this.options(this.buildParams(), this.buildHeaders().append('skip', 'true'))).pipe(\n map(accessToken => this.setCurrentUser(accessToken))\n );\n }\n\n revokeToken(token?: TokenDTO<U>): Observable<any> {\n let lHttpHeaders: HttpHeaders = null;\n if (!ObjectUtil.isNull(token)) {\n lHttpHeaders = new HttpHeaders()\n .append('Authorization', token.accessToken)\n .append('skip', 'true');\n }\n return this.http.post('api/authenticator/oauth/token/revoke', {}, this.options(null, lHttpHeaders));\n }\n\n isValidToken(token: TokenDTO<U>): boolean {\n if (!ObjectUtil.isNull(token) && !ObjectUtil.isNull(token.expiration)) {\n return new Date(token.expiration).valueOf() > new Date().valueOf();\n }\n return false;\n }\n\n protected setCurrentUser(token: TokenDTO<U>): TokenDTO<U> {\n if (token && token.accessToken) {\n localStorage.setItem('token', JSON.stringify(token));\n this.tokenSubject.next(token);\n }\n return token;\n }\n\n get tokenValue(): TokenDTO<U> {\n return this.tokenSubject.value;\n }\n\n get tokenValueLocalStorage(): TokenDTO<U> {\n const token: string = localStorage.getItem('token');\n return !StringUtil.isEmpty(token) ? JSON.parse(token) : null;\n }\n\n protected buildHeaders(): HttpHeaders {\n return new HttpHeaders()\n .append('Authorization', 'Basic ' + btoa('CONVENANT_MANAGEMENT:123'))\n .append('Content-Type', 'application/x-www-form-urlencoded')\n .append('accessType', 'WEB')\n .append('timeZone', moment(new Date()).format('ZZ'));\n }\n\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { TokenDTO } from '../models/dto/token.dto';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private authenticationService: AuthenticationService<BaseUser>) {\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const token: TokenDTO<BaseUser> = this.authenticationService.tokenValue;\n\n if (token && token.accessToken && !request.headers.get('skip')) {\n request = request.clone({\n setHeaders: {\n Authorization: `Bearer ${token.accessToken}`\n }\n });\n }\n\n return next.handle(request);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable, Injector, NgZone } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { ApiErrorDTO } from '../models/dto/api-error.dto';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ArrayUtil } from '../utils/array.util';\nimport { ObjectUtil } from '../utils/object.util';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n\n private _router: Router;\n\n constructor(private _injector: Injector) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError(async (err: any) => {\n this._router = this._injector.get(Router);\n let error: any = null;\n\n if (err instanceof HttpErrorResponse && err.error instanceof Blob && err.error.type === 'application/json') {\n\n await this.blobToJson(err).then(httpErrorResponse => {\n if ((!ObjectUtil.isNull(httpErrorResponse)) && (httpErrorResponse instanceof HttpErrorResponse)) {\n error = httpErrorResponse;\n }\n });\n\n } else if (err instanceof HttpErrorResponse) {\n error = err;\n }\n\n return await (await this.validateErrors(error)).toPromise().then(e => e);\n })\n ) as Observable<HttpEvent<any>>;\n }\n\n private async validateErrors(err: any): Promise<Observable<never>> {\n return new Promise((resolve, reject) => {\n let error: any = err.error.message || err.statusText;\n const apiError: ApiErrorDTO = err.error.apierror as ApiErrorDTO;\n\n if (!ObjectUtil.isNull(apiError)) {\n if ((apiError.status === 'INTERNAL_SERVER_ERROR')\n && (apiError.debugMessage && apiError.debugMessage.toUpperCase().includes('QUERY DID NOT RETURN A UNIQUE RESULT'))) {\n error = 'A consulta não retornou resultado único';\n } else if ((apiError.status === 'INTERNAL_SERVER_ERROR')\n && (apiError.message && apiError.message.toUpperCase().includes('NENHUM REGISTRO FOI ENCONTRADO'))) {\n error = 'Nenhum registro foi encontrado';\n } else if ((apiError.status === 'INTERNAL_SERVER_ERROR')\n && (apiError.message && apiError.message.toUpperCase().includes('OCORREU UM PROBLEMA INESPERADO'))) {\n error = 'Ocorreu um problema inesperado';\n } else if (apiError.status === 'FORBIDDEN') {\n this._injector.get(NgZone).run(() => this._router.navigate(['/errors/403']));\n return;\n } else if (apiError.status === 'UNAUTHORIZED') {\n error = 'Sua sessão expirou';\n this._injector.get(AuthenticationService).logout();\n } else if (!ArrayUtil.isEmpty(apiError.subErrorList)) {\n error = apiError.subErrorList[0].rejectedMessage;\n } else {\n error = apiError.message;\n }\n } else if (!navigator.onLine) {\n error = 'Sem internet';\n } else if (err.status === 504) {\n this._injector.get(NgZone).run(() => this._router.navigate(['/errors/504']));\n return;\n }\n\n return resolve(throwError(error));\n });\n }\n\n private async blobToJson(err: any): Promise<HttpErrorResponse> {\n return new Promise((resolve, reject) => {\n try {\n let httpErrorResponse: HttpErrorResponse = null;\n const reader: FileReader = new FileReader();\n reader.onload = (e: Event) => {\n const errmsg = JSON.parse((<any>e.target).result);\n httpErrorResponse = new HttpErrorResponse({\n error: errmsg,\n headers: err.headers,\n status: err.status,\n statusText: err.statusText,\n url: err.url\n });\n resolve(httpErrorResponse);\n };\n reader.readAsText(err.error);\n } catch (e) {\n reject(null);\n throwError(e);\n }\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material';\n\nimport { DialogDTO } from '../models/dto/dialog.dto';\nimport { AbstractService } from './abstract.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService extends AbstractService {\n\n constructor(public dialog: MatDialog) {\n super();\n }\n\n open(dialog: DialogDTO): MatDialogRef<any> {\n return this.dialog.open(dialog.componentOrTemplateRef, {\n panelClass: dialog.panelClass,\n disableClose: dialog.disableClose,\n width: dialog.width,\n height: dialog.height,\n minWidth: dialog.minWidth,\n minHeight: dialog.minHeight,\n maxWidth: dialog.maxWidth,\n maxHeight: dialog.maxHeight,\n position: dialog.position,\n data: dialog.data,\n autoFocus: dialog.autoFocus,\n restoreFocus: dialog.restoreFocus,\n closeOnNavigation: dialog.closeOnNavigation,\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SvgRegisterService {\n\n constructor(\n private _matIconRegistry: MatIconRegistry,\n private _domSanitizer: DomSanitizer,\n ) { }\n\n /**\n * @param enumSvgs Enum de svgs: ex\n * export enum SvgIcons {\n * SVG_ONE: 'svg_one',\n * ...\n * }\n * @param path Path where the svg is located\n */\n public registerListSvgIcons(enumSvgs: any, path: string): void {\n const svgKeys: string[] = Object.values(enumSvgs);\n for (const svg of svgKeys) {\n this.registerSvgIcon(svg, path);\n }\n }\n\n /**\n * Enter only the svg name without the extension.\n * @param svgName Svg name without the extension\n * @param path Path where the svg is located\n */\n public registerSvgIcon(svgName: string, path: string): void {\n try {\n const svgUrl: SafeResourceUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(`${path}/${svgName}.svg`);\n this._matIconRegistry.addSvgIcon(svgName, svgUrl);\n } catch (error) {\n throw new Error(error);\n }\n }\n\n}\n","import { LocalTimeType } from '../enums/local-time.enum';\nimport { GIPILocalTime } from '../types/local-time.type';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class TimeUtil {\n\n public static TIME_FORMAT = 'HH:mm:ss';\n\n public static format(time: GIPILocalTime | Date, format: LocalTimeType | string, period: boolean = false): string {\n if (!ObjectUtil.isNull(time)) {\n let lTime: GIPILocalTime = null;\n if (time instanceof Date) {\n lTime = {\n hour: time.getHours(),\n minute: time.getMinutes(),\n second: time.getSeconds(),\n };\n } else {\n lTime = time;\n }\n\n let lFormat: string = this.TIME_FORMAT;\n if (format.trim().toUpperCase() === 'FULL') {\n lFormat = `HH:mm:ss${period ? ' AA' : ''}`;\n } else if (format.trim().toUpperCase() === 'SHORT') {\n lFormat = `HH:mm${period ? ' AA' : ''}`;\n } else if (!StringUtil.isEmpty(format.trim())) {\n lFormat = format.trim();\n }\n\n return this._formatDate(lTime, lFormat);\n }\n\n return StringUtil.EMPTY;\n }\n\n private static _formatDate(time: GIPILocalTime, format: string) {\n let Hour: number = time.hour;\n format = format.replace(/(^|[^\\\\])HH+/g, \"$1\" + this._padToAnyDigits(Hour));\n format = format.replace(/(^|[^\\\\])H/g, \"$1\" + Hour);\n\n let hour = (Hour > 12) ? (Hour - 12) : ((Hour === 0) ? 12 : Hour);\n format = format.replace(/(^|[^\\\\])hh+/g, \"$1\" + this._padToAnyDigits(hour));\n format = format.replace(/(^|[^\\\\])h/g, \"$1\" + hour);\n\n let minutes = time.minute;\n format = format.replace(/(^|[^\\\\])mm+/g, \"$1\" + this._padToAnyDigits(minutes));\n format = format.replace(/(^|[^\\\\])m/g, \"$1\" + minutes);\n\n let seconds = time.second;\n format = format.replace(/(^|[^\\\\])ss+/g, \"$1\" + this._padToAnyDigits(seconds));\n format = format.replace(/(^|[^\\\\])s/g, \"$1\" + seconds);\n\n let Period = Hour < 12 ? \"AM\" : \"PM\";\n format = format.replace(/(^|[^\\\\])AA+/g, \"$1\" + Period);\n format = format.replace(/(^|[^\\\\])A/g, \"$1\" + Period.charAt(0));\n\n let period = Period.toLowerCase();\n format = format.replace(/(^|[^\\\\])aa+/g, \"$1\" + period);\n format = format.replace(/(^|[^\\\\])a/g, \"$1\" + period.charAt(0));\n\n format = format.replace(/\\\\(.)/g, \"$1\");\n\n return format;\n }\n\n private static _padToAnyDigits(value: number, digits: number = 2) {\n return value.toString().padStart(digits, '0');\n }\n\n}\n","import { Pipe, PipeTransform, ɵstringify as stringify } from '@angular/core';\n\nimport { LocalTimeType } from '../enums/local-time.enum';\nimport { GIPILocalTime } from '../types/local-time.type';\nimport { TimeUtil } from '../utils/time.util';\n\n@Pipe({\n name: 'localtime'\n})\nexport class LocalTimePipe implements PipeTransform {\n\n transform(time: GIPILocalTime | Date, format: LocalTimeType | string, period: boolean = false): any {\n try {\n return TimeUtil.format(time, format, period);\n } catch (error) {\n throw new Error(`InvalidPipeArgument: '${LocalTimePipe}' for pipe '${stringify((error as Error).message)}'`);\n }\n }\n\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { OnDestroy } from '@angular/core';\nimport { Observable, Subject, throwError } from 'rxjs';\n\nimport { StringUtil } from '../../utils/string.util';\n\nexport class GIPIAbstractService implements OnDestroy {\n\n protected handleDestroy: Subject<void> = new Subject<void>();\n\n constructor(\n protected path: string,\n protected version: string,\n ) { }\n\n ngOnDestroy(): void {\n this.handleDestroy.next();\n this.handleDestroy.complete();\n }\n\n protected url(resource?: string, version?: string): string {\n let versionAux: string = '';\n if (!StringUtil.isEmpty(version)) {\n versionAux = `/${version.toLowerCase()}`;\n } else if (StringUtil.isEmpty(version) && !StringUtil.isEmpty(this.version)) {\n versionAux = `/${this.version.toLowerCase()}`;\n }\n\n let resourceAux: string = '';\n if (!StringUtil.isEmpty(resource)) {\n resourceAux = `/${resource}`;\n }\n\n return `api/${this.path}${versionAux}${resourceAux}`;\n }\n\n protected options(params?: HttpParams, headers?: HttpHeaders): { headers: HttpHeaders; params: HttpParams; } {\n return {\n headers: headers ? headers : this.buildHeaders(),\n params: params ? params : this.buildParams()\n };\n }\n\n protected buildHeaders(): HttpHeaders {\n return new HttpHeaders();\n }\n\n protected buildParams(): HttpParams {\n return new HttpParams();\n }\n\n protected handleMapper<T = void>(jsonObj: Object): (T extends void ? any : T) {\n return jsonObj as (T extends void ? any : T);\n }\n\n protected handleError<T = void>(error: string): Observable<(T extends void ? any : T)> {\n return throwError(error);\n }\n\n}\n","import { OnDestroy } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\n\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { GIPIAbstractFilterModel } from '../models/abstract-filter.model';\nimport { GIPIAbstractModel } from '../models/abstract.model';\nimport { GIPIPageModel } from '../models/page.model';\nimport { GIPISortModel } from '../models/sort.model';\nimport { GIPIUuid } from '../types/uuid.type';\nimport { GIPIAbstractService } from './abstract.service';\nimport { GIPIBaseService } from './base.service';\n\nexport abstract class GIPIAbstractCrudService<TEntity extends GIPIAbstractModel, TFilter extends GIPIAbstractFilterModel> extends GIPIAbstractService implements OnDestroy {\n\n constructor(\n protected path: string,\n protected version: string,\n protected baseService: GIPIBaseService,\n ) {\n super(path, version);\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n /**\n * Refers to the save endpoint\n * @type POST\n * @path resource/version\n */\n public save<T = any>(entity: T, version?: string): Observable<T>;\n public save(entity: TEntity, version?: string): Observable<TEntity> {\n this.validate(entity);\n return this.baseService.httpClient.post(this.url('', version), entity, this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the save-all endpoint\n * @type POST\n * @path resource/version/save-all\n */\n public saveAll<T = any>(entities: T[], version?: string): Observable<T[]>;\n public saveAll(entities: TEntity[], version?: string): Observable<TEntity[]> {\n for (let i = 0; i < entities.length; i++) {\n this.validate(entities[i]);\n }\n\n return this.baseService.httpClient.post(this.url('save-all', version), entities, this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the delete endpoint\n * @type DELETE\n * @path resource/version/{id}\n */\n public delete<T = any>(id: number | string, version?: string): Observable<T>;\n public delete(id: number | string, version?: string): Observable<TEntity> {\n return this.baseService.httpClient.delete(this.url(`${id}`, version)).pipe(\n map(() => null),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the delete-all endpoint\n * @type POST\n * @path resource/version/delete-all\n */\n public deleteAll(idList: GIPIUuid[], version?: string): Observable<boolean> {\n for (let i = 0; i < idList.length; i++) {\n if (!UUIDUtil.isValid(idList[i])) {\n return of(false);\n }\n }\n\n return this.baseService.httpClient.post(this.url('delete-all', version), idList, this.options()).pipe(\n map(() => { return true; }),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the get-one endpoint\n * @type GET\n * @path resource/version/{id}\n */\n public getOne<T = any>(id: GIPIUuid, version?: string): Observable<T>;\n public getOne(id: GIPIUuid, version?: string): Observable<TEntity> {\n return this.baseService.httpClient.get(this.url(`${id}`, version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-all endpoint without the filters\n * @type GET\n * @path resource/version\n */\n public find<T = any>(version?: string): Observable<GIPIPageModel<T>>;\n public find(version?: string): Observable<GIPIPageModel<TEntity>> {\n return this.baseService.httpClient.get(this.url('', version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-all endpoint with filters\n * @type POST\n * @path resource/version/find-all\n */\n public findAll<F extends GIPIAbstractFilterModel = any, T = any>(filter?: F, version?: string): Observable<GIPIPageModel<T>>;\n public findAll(filter?: TFilter, version?: string): Observable<GIPIPageModel<TEntity>> {\n return this.baseService.httpClient.post(this.url('find-all', version), filter, this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-all-enabled endpoint\n * @type GET\n * @path resource/version/find-all-enabled\n */\n public findAllEnabled<T = any>(page: number, size: number, version?: string): Observable<GIPIPageModel<T>>;\n public findAllEnabled(page: number, size: number, version?: string): Observable<GIPIPageModel<TEntity>> {\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n return this.baseService.httpClient.get(this.url(`find-all-enabled?page=${page}&size=${size}`, version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the find-by-value endpoint\n * @type GET\n * @path resource/version/find-by-value\n */\n public findByValue<T = any>(value: string, page: number, size?: number, sort?: GIPISortModel, version?: string): Observable<GIPIPageModel<T>>;\n public findByValue(value: string, page: number, size?: number, sort?: GIPISortModel, version?: string): Observable<GIPIPageModel<TEntity>> {\n let lValue: string = value;\n if (value) {\n lValue = StringUtil.removeAccents(value).trim();\n } else {\n lValue = '';\n }\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n let lSort: string = '';\n if (!ObjectUtil.isNull(sort) && !StringUtil.isEmpty(sort.field)) {\n lSort = `&sort=${sort.field},${sort.direction}`;\n }\n\n return this.baseService.httpClient.get(this.url(`find-by-value?page=${page}&size=${size}${lSort}&value=${lValue}`, version), this.options()).pipe(\n map(this.handleMapper),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n );\n }\n\n /**\n * Refers to the enable-or-disable endpoint\n * @type PATCH\n * @path resource/version/enable-or-disable/{id}/{action}\n */\n public enableOrDisable(id: GIPIUuid, action: 'DISABLE' | 'ENABLE', version?: string): Observable<boolean> {\n if (!UUIDUtil.isValid(id)) {\n return of(false);\n }\n return this.baseService.httpClient.patch(this.url(`/enable-or-disable/${id}/${action}`, version), {}, this.options()).pipe(\n map(() => { return true; }),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n )\n }\n\n /**\n * Refers to the enable-or-disable-all endpoint\n * @type PATCH\n * @path resource/version/enable-or-disable-all/{action}\n */\n public enableOrDisableAll(idList: GIPIUuid[], action: 'DISABLE' | 'ENABLE', version?: string): Observable<boolean> {\n for (let i = 0; i < idList.length; i++) {\n if (!UUIDUtil.isValid(idList[i])) {\n return of(false);\n }\n }\n\n return this.baseService.httpClient.patch(this.url(`/enable-or-disable-all/${action}`, version), idList, this.options()).pipe(\n map(() => { return true; }),\n takeUntil(this.handleDestroy),\n catchError(this.handleError)\n )\n }\n\n public validate<T = any>(entity: T): string;\n public validate(entity: TEntity): string {\n return '';\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GIPIFileService {\n\n constructor() { }\n\n download(data: any, fileName: string, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const link: HTMLAnchorElement = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', fileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n downloadContent(response: any): void {\n this.download(\n response.body,\n response.headers.get('content-disposition').split(';')[1].split('filename')[1].split('=')[1].trim(),\n response.headers.get('content-type')\n );\n }\n\n printArchive(data: any, mimeType: string): void {\n const blob: Blob = new Blob([data], { type: mimeType });\n const url: string = URL.createObjectURL(blob);\n const htmlIFrameElement: HTMLIFrameElement = document.createElement('iframe');\n\n document.body.appendChild(htmlIFrameElement);\n htmlIFrameElement.style.display = 'none';\n htmlIFrameElement.style.position = 'fixed';\n htmlIFrameElement.style.right = '0';\n htmlIFrameElement.style.bottom = '0';\n htmlIFrameElement.style.width = '0';\n htmlIFrameElement.style.height = '0';\n htmlIFrameElement.style.border = '0';\n htmlIFrameElement.src = url;\n htmlIFrameElement.onload = () => {\n setTimeout(() => {\n htmlIFrameElement.focus();\n htmlIFrameElement.contentWindow.print();\n }, 1);\n };\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { ObjectUtil } from '../../utils/object.util';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPISessionStorageService<TFilter = any> {\n\n private _storage: Storage;\n\n constructor() {\n this._storage = window.sessionStorage;\n }\n\n set<T = any>(key: string, value: T): boolean;\n set(key: string, value: TFilter): boolean {\n if (this._storage) {\n this._storage.setItem(key, JSON.stringify(value));\n return true;\n }\n return false;\n }\n\n get<T = any>(key: string): T;\n get(key: string): TFilter {\n if (this._storage) {\n const json: any = JSON.parse(this._storage.getItem(key));\n return !ObjectUtil.isNull(json) ? json : null;\n }\n return null;\n }\n\n remove(key: string): boolean {\n if (this._storage) {\n this._storage.removeItem(key);\n return true;\n }\n return false;\n }\n\n clear(): boolean {\n if (this._storage) {\n this._storage.clear();\n return true;\n }\n return false;\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { ChangeDetectorRef, Injectable, Injector, OnDestroy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Router } from '@angular/router';\n\nimport { ConfirmationService } from '../../services/confirmation.service';\nimport { DialogService } from '../../services/dialog.service';\nimport { MessageService } from '../../services/message.service';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { GIPIFileService } from './file.service';\nimport { GIPISessionStorageService } from './session-storage.service';\n\n@Injectable({ providedIn: 'root' })\nexport class GIPIBaseService implements OnDestroy {\n\n private _sessionStorageService: GIPISessionStorageService = null;\n private _confirmationService: ConfirmationService = null;\n private _messageService: MessageService = null;\n private _dialogService: DialogService = null;\n private _fileService: GIPIFileService = null;\n private _matDialog: MatDialog = null;\n private _httpClient: HttpClient = null;\n private _changeDetectorRef: ChangeDetectorRef = null;\n private _matSnackBar: MatSnackBar = null;\n\n constructor(\n private _injector: Injector,\n private _router: Router,\n ) { }\n\n ngOnDestroy(): void { }\n\n get sessionStorageService(): GIPISessionStorageService {\n if (ObjectUtil.isNull(this._sessionStorageService)) {\n this._sessionStorageService = this._injector.get(GIPISessionStorageService);\n }\n return this._sessionStorageService;\n }\n\n get confirmationService(): ConfirmationService {\n if (ObjectUtil.isNull(this._confirmationService)) {\n this._confirmationService = this._injector.get(ConfirmationService);\n }\n return this._confirmationService;\n }\n\n get messageService(): MessageService {\n if (ObjectUtil.isNull(this._messageService)) {\n this._messageService = this._injector.get(MessageService);\n }\n return this._messageService;\n }\n\n get dialogService(): DialogService {\n if (ObjectUtil.isNull(this._dialogService)) {\n this._dialogService = this._injector.get(DialogService);\n }\n return this._dialogService;\n }\n\n get fileService(): GIPIFileService {\n if (ObjectUtil.isNull(this._fileService)) {\n this._fileService = this._injector.get(GIPIFileService);\n }\n return this._fileService;\n }\n\n get matDialog(): MatDialog {\n if (ObjectUtil.isNull(this._matDialog)) {\n this._matDialog = this._injector.get(MatDialog);\n }\n return this._matDialog;\n }\n\n get httpClient(): HttpClient {\n if (ObjectUtil.isNull(this._httpClient)) {\n this._httpClient = this._injector.get(HttpClient);\n }\n return this._httpClient;\n }\n\n get router(): Router {\n if (ObjectUtil.isNull(this._router)) {\n this._router = this._injector.get(Router);\n }\n return this._router;\n }\n\n get changeDetectorRef(): ChangeDetectorRef {\n if (ObjectUtil.isNull(this._changeDetectorRef)) {\n this._changeDetectorRef = this._injector.get(ChangeDetectorRef);\n }\n return this._changeDetectorRef;\n }\n\n get matSnackBar(): MatSnackBar {\n if (ObjectUtil.isNull(this._matSnackBar)) {\n this._matSnackBar = this._injector.get(MatSnackBar);\n }\n return this._matSnackBar;\n }\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AlertComponent } from '../../components/alert/alert.component';\nimport { BaseUser } from '../../models/base-user.model';\nimport { MessageDTO } from '../../models/dto/message.dto';\nimport { TokenDTO } from '../../models/dto/token.dto';\nimport { StringUtil } from '../../utils/string.util';\nimport { UUIDUtil } from '../../utils/uuid.util';\nimport { GIPIBasePermission } from '../interface/base-permission.interface';\nimport { GIPIBaseService } from '../services/base.service';\nimport { GIPIUuid } from '../types/uuid.type';\n\n@Component({ template: '' })\nexport abstract class GIPIAbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private _loading: boolean = false;\n public set loading(value: boolean) {\n this._loading = value;\n }\n public get loading(): boolean {\n return this._loading;\n }\n\n private _basePermissionList: GIPIBasePermission = null;\n public set basePermissionList(value: GIPIBasePermission) {\n this._basePermissionList = value;\n }\n public get basePermissionList(): GIPIBasePermission {\n return this._basePermissionList;\n }\n\n constructor(\n protected baseService: GIPIBaseService,\n protected activatedRoute: ActivatedRoute,\n ) { }\n\n ngOnInit(): void {\n this.onInitForm();\n }\n\n ngAfterViewInit(): void {\n this.onAfterInitForm();\n }\n\n ngOnDestroy(): void {\n this.onDestroy();\n }\n\n public isCreating(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'new')).length > 0;\n }\n\n public isEditing(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'edit')).length > 0;\n }\n\n public isViewing(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'view')).length > 0;\n }\n\n public isListing(): boolean {\n return this.baseService.router.url.split('/').filter(path => (path === 'new') || (path === 'edit') || (path === 'view')).length === 0;\n }\n\n public hasPermission(permission: string): boolean {\n if (StringUtil.isEmpty(permission)) {\n return false;\n }\n const token: TokenDTO<BaseUser> = JSON.parse(localStorage.getItem('token'));\n return !!token.user.authorities.find(authority => authority.authority.match(permission));\n }\n\n public UUIDIsValid(id: GIPIUuid): boolean {\n return UUIDUtil.isValid(id);\n }\n\n protected onInitForm(): void { }\n\n protected onAfterInitForm(): void { }\n\n protected onDestroy(): void { }\n\n protected getPath(): string {\n return `${this.activatedRoute.snapshot.parent.parent.url[0].path}/${this.activatedRoute.snapshot.parent.url[0].path}`;\n }\n\n protected navigateByUrl(navigateByUrl: string, navigate: any[], skipLocationChange: boolean = true): void {\n this.baseService.router.navigateByUrl(navigateByUrl, { skipLocationChange: skipLocationChange }).then(() => this.baseService.router.navigate(navigate));\n }\n\n protected addMessage(message: MessageDTO): void {\n this.baseService.matSnackBar.openFromComponent(AlertComponent, {\n verticalPosition: 'top',\n horizontalPosition: 'center',\n duration: 5000,\n data: message\n });\n }\n\n protected addSuccessMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'check_circle',\n title: 'Sucesso',\n message: message,\n type: 'success'\n });\n }\n\n protected addErrorMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'cancel',\n title: 'Erro',\n message: message,\n type: 'error'\n });\n }\n\n protected addWarningMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'error',\n title: 'Atenção',\n message: message,\n type: 'warning'\n });\n }\n\n protected addInfoMessage(message: string): void {\n this.baseService.messageService.add({\n icon: 'info',\n title: 'Informação',\n message: message,\n type: 'info'\n });\n }\n\n protected handleError(error: any): void {\n this.loading = false;\n if (String(error).includes('Unknown')) {\n error = new Error('Ocorreu um erro ao realizar essa operação, tente novamente');\n }\n if (error instanceof Error) {\n error = error.message;\n }\n this.addErrorMessage(error);\n throw error;\n }\n\n public getExistInRouterPath(value: string, validateParams: boolean = false): boolean {\n const url: string = this.baseService.router.url;\n const pathList: string[] = url.slice(1, url.indexOf('?') + 1).split('/');\n const parameterList: string[] = url.slice(url.indexOf('?') + 1, url.length).split('=');\n\n if (validateParams) {\n return parameterList.filter(path => path.toUpperCase() === value.toUpperCase()).length > 0;\n } else {\n return pathList.filter(path => path.toUpperCase() === value.toUpperCase()).length > 0;\n }\n }\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { INJECTOR } from '../../../shared/shared.module';\nimport { APP_MESSAGES } from '../../app.messages';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { GIPIAbstractModel } from '../models/abstract.model';\nimport { GIPIAbstractCrudService } from '../services/abstract-crud.service';\nimport { GIPIBaseService } from '../services/base.service';\nimport { GIPIUuid } from '../types/uuid.type';\nimport { GIPIAbstractComponent } from './abstract.component';\n\n@Component({ template: '' })\nexport abstract class GIPIAbstractCrudComponent<TEntity extends GIPIAbstractModel> extends GIPIAbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private _entity: TEntity = this.newEntity();\n public set entity(value: TEntity) {\n this._entity = value;\n }\n public get entity(): TEntity {\n return this._entity;\n }\n\n constructor(\n protected abstractCrudService: GIPIAbstractCrudService<TEntity, any>,\n protected baseService: GIPIBaseService,\n protected activatedRoute: ActivatedRoute,\n ) {\n super(baseService, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (ObjectUtil.isNull(this.basePermissionList)) {\n throw new Error('basePermissionList is required');\n }\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n protected onInitForm(): void {\n try {\n this.loading = true;\n const id: GIPIUuid = this.activatedRoute.snapshot.params.id;\n\n if (this.UUIDIsValid(id)) {\n this.abstractCrudService.getOne<TEntity>(id).toPromise().then(entity => {\n this.entity = entity;\n this.onAfterGetOne();\n this.loading = false;\n }, error => {\n throw new Error(error);\n });\n } else {\n this.entity = this.newEntity();\n this.onAfterGetOne();\n this.loading = false;\n }\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n\n protected abstract newEntity(): TEntity;\n\n protected abstract isValid(entity: TEntity): boolean;\n\n protected onAfterGetOne(): void { }\n\n protected preSave(entity: TEntity): void { }\n\n public save(entity?: TEntity, toGoBack: boolean = true): void {\n try {\n this.loading = true;\n if (ObjectUtil.isNull(entity)) {\n entity = this.entity;\n }\n if (this.isValid(entity)) {\n this.preSave(entity);\n\n this.abstractCrudService.save(entity).toPromise().then(resp => {\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n if (toGoBack) {\n this.navigateByUrl(this.getPath(), [this.getPath()], true);\n }\n }, error => {\n throw new Error(error);\n });\n }\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public goBack(showConfirmation: boolean = true): void {\n if (!this.isViewing() || showConfirmation) {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).RETURN_CONFIRMATION,\n accept: () => this.navigateByUrl(this.getPath(), [this.getPath()], true)\n });\n } else {\n this.navigateByUrl(this.getPath(), [this.getPath()], true);\n }\n }\n\n}\n","export class GIPIPageModel<TEntity> {\n\n content: TEntity[];\n\n number: number;\n\n totalElements: number;\n\n totalPages: number;\n\n constructor() {\n this.content = [];\n this.number = 0;\n }\n\n}\n","import { GIPISortDirection, GIPISortDirectionEnum } from '../enums/sort-direction.enum';\n\nexport class GIPISortModel {\n\n direction: GIPISortDirectionEnum | GIPISortDirection;\n\n field: string;\n\n constructor(\n field: string,\n direction: GIPISortDirectionEnum | GIPISortDirection,\n ) {\n this.field = field;\n this.direction = direction;\n }\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { INJECTOR } from '../../../shared/shared.module';\nimport { APP_MESSAGES } from '../../app.messages';\nimport { TableColumnDTO } from '../../models/dto/table-column.dto';\nimport { TablePageEventDTO } from '../../models/dto/table-page-event.dto';\nimport { ArrayUtil } from '../../utils/array.util';\nimport { ObjectUtil } from '../../utils/object.util';\nimport { StringUtil } from '../../utils/string.util';\nimport { GIPIAbstractFilterModel } from '../models/abstract-filter.model';\nimport { GIPIAbstractModel } from '../models/abstract.model';\nimport { GIPIAppliedFilter } from '../models/applied-filter.model';\nimport { GIPIPageModel } from '../models/page.model';\nimport { GIPISortModel } from '../models/sort.model';\nimport { GIPIAbstractCrudService } from '../services/abstract-crud.service';\nimport { GIPIBaseService } from '../services/base.service';\nimport { GIPIUuid } from '../types/uuid.type';\nimport { GIPIAbstractComponent } from './abstract.component';\n\n@Component({ template: '' })\nexport abstract class GIPIAbstractFindComponent<TEntity extends GIPIAbstractModel, TFilter extends GIPIAbstractFilterModel> extends GIPIAbstractComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private _filter: TFilter = null;\n public set filter(value: TFilter) {\n this._filter = value;\n }\n public get filter(): TFilter {\n return this._filter;\n }\n\n private _page: GIPIPageModel<TEntity> = null;\n public set page(value: GIPIPageModel<TEntity>) {\n this._page = value;\n }\n public get page(): GIPIPageModel<TEntity> {\n return this._page;\n }\n\n private _tablePageEventDTO: TablePageEventDTO;\n public set tablePageEventDTO(value: TablePageEventDTO) {\n this._tablePageEventDTO = value;\n }\n public get tablePageEventDTO(): TablePageEventDTO {\n return this._tablePageEventDTO;\n }\n\n private _columns: TableColumnDTO[] = [];\n public set columns(value: TableColumnDTO[]) {\n this._columns = value;\n }\n public get columns(): TableColumnDTO[] {\n return this._columns;\n }\n\n private _appliedFilters: GIPIAppliedFilter<any>[] = [];\n public set appliedFilters(value: GIPIAppliedFilter<any>[]) {\n this._appliedFilters = value;\n }\n public get appliedFilters(): GIPIAppliedFilter<any>[] {\n return this._appliedFilters;\n }\n\n constructor(\n protected abstractCrudService: GIPIAbstractCrudService<TEntity, TFilter>,\n protected baseService: GIPIBaseService,\n protected activatedRoute: ActivatedRoute,\n ) {\n super(baseService, activatedRoute);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n\n if (ObjectUtil.isNull(this.basePermissionList)) {\n throw new Error('basePermissionList is required');\n }\n\n this._onInitFilter();\n this.columns = this.createTableColumns();\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n protected abstract newFilter(): TFilter;\n\n protected abstract createTableColumns(): TableColumnDTO[];\n\n protected abstract setAppliedFilters(): void;\n\n protected abstract clearAppliedFilters(): void;\n\n public abstract removeAppliedFilters(filter: { chip: GIPIAppliedFilter<any>; index: number; }): void;\n\n protected abstract setFilterSessionStorage(): void;\n\n protected abstract handleFilterSessionStorage(): void;\n\n protected newPage(): GIPIPageModel<TEntity> {\n return new GIPIPageModel<TEntity>();\n }\n\n protected createTableSorts(): GIPISortModel[] {\n return [];\n }\n\n protected preDelete(id?: GIPIUuid): void { }\n\n protected existInAppliedFilters<T = any>(key: T): boolean {\n return (\n !ArrayUtil.isEmpty(this.appliedFilters) &&\n (this.appliedFilters.findIndex(e => e.key === key) >= 0)\n );\n }\n\n /** @Internal */\n protected _onInitFilter(): void {\n this.page = this.newPage();\n this.filter = this.newFilter();\n\n if (!ObjectUtil.isNull(this.filter)) {\n this.setAppliedFilters();\n }\n\n const filterSessionStorage = this.baseService.sessionStorageService.get('filter');\n if (!ObjectUtil.isNull(filterSessionStorage)) {\n this.handleFilterSessionStorage();\n }\n }\n\n public findAll(pageEvent?: any): void {\n try {\n this.loading = true;\n\n this.page = this.newPage();\n if (ObjectUtil.isNull(this.filter)) {\n this.filter = this.newFilter();\n }\n\n // if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {\n // pageEvent = this.tablePageEventDTO;\n // }\n\n if (pageEvent) {\n this.tablePageEventDTO = pageEvent;\n this.filter.pageNumber = pageEvent.pageIndex;\n this.filter.pageSize = pageEvent.pageSize;\n this.filter.offset = pageEvent.pageIndex * pageEvent.pageSize;\n\n if (pageEvent.sort) {\n this.filter.sorts = [\n new GIPISortModel(\n pageEvent.sort.active,\n StringUtil.isEmpty(pageEvent.sort.direction) ? 'DESC' : pageEvent.sort.direction.toUpperCase()\n )\n ];\n }\n } else {\n this.filter.pageNumber = 0;\n this.filter.offset = 0;\n this.filter.pageSize = 10;\n }\n\n this.abstractCrudService.findAll<TFilter, TEntity>(this.filter).toPromise().then(page => {\n this.page = page;\n this.setAppliedFilters();\n this.loading = false;\n }, error => {\n this.loading = false;\n throw new Error(error);\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public newRegister(permission?: string): void {\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.MAKE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);\n }\n }\n\n public editRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'edit'], true);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.UPDATE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'edit', id], true);\n }\n }\n\n public deleteRegister(id?: GIPIUuid, permission?: string, fetchAgain: boolean = true): void {\n try {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._deleteRegister(id, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.DELETE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._deleteRegister(id, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _deleteRegister(id: GIPIUuid, fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n this.preDelete(id);\n\n this.abstractCrudService.delete<TEntity>(id).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public deleteAllRegister(idList?: GIPIUuid[], permission?: string, fetchAgain: boolean = true): void {\n try {\n idList = this.handleEntityIdList(idList);\n if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._deleteAllRegister(idList, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.DELETE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._deleteAllRegister(idList, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _deleteAllRegister(idList: GIPIUuid[], fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n this.preDelete();\n\n this.abstractCrudService.deleteAll(idList).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public viewRegister(id?: GIPIUuid, permission?: string): void {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.READ;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this.setFilterSessionStorage();\n this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);\n }\n }\n\n public editOrViewRegister(id: GIPIUuid, permission: string): void {\n if (this.hasPermission(permission)) {\n this.editRegister(id, permission);\n } else {\n this.viewRegister(id, permission);\n }\n }\n\n public enableOrDisableRegister(action: 'DISABLE' | 'ENABLE', id?: GIPIUuid, permission?: string, fetchAgain: boolean = true): void {\n try {\n id = this.handleEntityId(id);\n if (ObjectUtil.isNull(id)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._enableOrDisableRegister(action, id, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.UPDATE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._enableOrDisableRegister(action, id, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _enableOrDisableRegister(action: 'DISABLE' | 'ENABLE', id: GIPIUuid, fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente ${(action === 'DISABLE') ? 'inativar' : 'ativar'} este registro?`,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n\n this.abstractCrudService.enableOrDisable(id, action).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public enableAndDisableAllRegister(action: 'DISABLE' | 'ENABLE', idList?: GIPIUuid[], permission?: string, fetchAgain: boolean = true): void {\n try {\n idList = this.handleEntityIdList(idList);\n if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {\n return;\n }\n\n if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {\n this._enableAndDisableAllRegister(action, idList, fetchAgain);\n } else {\n if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {\n permission = this.basePermissionList.UPDATE;\n }\n if (!this.hasPermission(permission)) {\n this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);\n return;\n }\n\n this._enableAndDisableAllRegister(action, idList, fetchAgain);\n }\n } catch (e) {\n this.loading = false;\n if (this.isListing()) {\n this.clear();\n }\n throw new Error(e);\n }\n }\n\n /** @Internal */\n private _enableAndDisableAllRegister(action: 'DISABLE' | 'ENABLE', idList: GIPIUuid[], fetchAgain: boolean = true): void {\n try {\n this.baseService.confirmationService.confirm({\n title: 'Confirmação',\n message: `Deseja realmente ${(action === 'DISABLE') ? 'inativar' : 'ativar'} os registros selecionados?`,\n accept: () => {\n this.setFilterSessionStorage();\n\n this.loading = true;\n this.page = this.newPage();\n\n this.abstractCrudService.enableOrDisableAll(idList, action).toPromise().then(() => {\n if (fetchAgain) {\n this.findAll();\n }\n this.loading = false;\n this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);\n }, error => {\n throw new Error(error);\n });\n }\n });\n } catch (e) {\n this.loading = false;\n throw new Error(e);\n }\n }\n\n public clear(): void {\n this.baseService.sessionStorageService.remove('filter');\n this.page = this.newPage();\n this.filter = this.newFilter();\n this.clearAppliedFilters();\n this.findAll();\n }\n\n public handleEntityId(id: GIPIUuid): GIPIUuid {\n if (!this.UUIDIsValid(id)) {\n throw new Error('O identificador do registro não é válido');\n }\n\n if (ObjectUtil.isNull(id) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n const firstSeletected = this.page.content.filter(c => c.selected)[0];\n if (ObjectUtil.isNull(firstSeletected)) {\n return null;\n }\n\n return firstSeletected.id;\n }\n\n return id;\n }\n\n public handleEntityIdList(idList: GIPIUuid[]): GIPIUuid[] {\n if (!ArrayUtil.isEmpty(idList)) {\n for (let i = 0; i < idList.length; i++) {\n if (!this.UUIDIsValid(idList[i])) {\n throw new Error('O identificador do registro não é válido');\n }\n }\n }\n\n if (ArrayUtil.isEmpty(idList) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {\n const listSelected = this.page.content.filter(p => p.selected).map(p => p.id);\n if (ArrayUtil.isEmpty(listSelected)) {\n return null;\n }\n\n return listSelected;\n }\n\n return idList;\n }\n\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { NgxCurrencyModule } from 'ngx-currency';\nimport { NgxMaskModule } from 'ngx-mask';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { AppMessages } from './app-messages';\nimport { APP_MESSAGES, DEFAULT_MESSAGES } from './app.messages';\n\nimport { AlertComponent } from './components/alert/alert.component';\n\nimport { GIPI_BREAKPOINTS, GIPI_CUSTOM_BREAKPOINTS_PROVIDER } from './custom-breakpoints';\nimport { AuthInterceptor } from './interceptors/auth.interceptor';\nimport { ErrorInterceptor } from './interceptors/error.interceptor';\n\nimport { ConfirmationService } from './services/confirmation.service';\nimport { DialogService } from './services/dialog.service';\nimport { MessageService } from './services/message.service';\nimport { NavService } from './services/nav.service';\nimport { SvgRegisterService } from './services/svg-register.service';\n\nimport { ObjectUtil } from './utils/object.util';\n\nimport { LocalTimePipe } from './pipes/local-time.pipe';\n\nimport { GIPIAbstractCrudComponent } from './gipi-components/components/abstract-crud.component';\nimport { GIPIAbstractFindComponent } from './gipi-components/components/abstract-find.component';\nimport { GIPIAbstractComponent } from './gipi-components/components/abstract.component';\n\nconst GIPIComponents: any[] = [\n GIPIAbstractCrudComponent,\n GIPIAbstractFindComponent,\n GIPIAbstractComponent,\n];\n\nexport const customCurrencyMaskConfig = {\n align: '',\n allowNegative: true,\n allowZero: true,\n decimal: ',',\n precision: 2,\n prefix: 'R$ ',\n suffix: '',\n thousands: '.',\n nullable: true,\n max: 999999999.99\n};\n\n@NgModule({\n declarations: [\n AlertComponent,\n LocalTimePipe,\n GIPIComponents,\n ],\n entryComponents: [\n AlertComponent,\n // GIPIComponents,\n ],\n imports: [\n BrowserAnimationsModule,\n OverlayModule,\n HttpClientModule,\n RouterModule,\n FlexLayoutModule.withConfig({ disableDefaultBps: true }, GIPI_BREAKPOINTS),\n MatIconModule,\n MatToolbarModule,\n MatSidenavModule,\n MatListModule,\n MatButtonModule,\n MatMenuModule,\n NgxMaskModule.forRoot(),\n NgxCurrencyModule.forRoot(customCurrencyMaskConfig),\n SharedModule\n ],\n exports: [\n LocalTimePipe,\n GIPIComponents,\n ],\n providers: [\n NavService,\n SvgRegisterService,\n MessageService,\n ConfirmationService,\n DialogService,\n GIPI_CUSTOM_BREAKPOINTS_PROVIDER,\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }\n ]\n})\nexport class CoreModule {\n static setMessages(messages: AppMessages): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [\n { provide: APP_MESSAGES, useValue: !ObjectUtil.isNull(messages) ? messages : DEFAULT_MESSAGES }\n ]\n };\n }\n}\n","export enum LocalTimeEnum {\n FULL = 'FULL',\n SHORT = 'SHORT',\n}\n\nexport type LocalTimeType = 'FULL' | 'SHORT';\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ObjectUtil } from '../utils/object.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate, CanActivateChild {\n\n constructor(private router: Router, private authenticationService: AuthenticationService<BaseUser>) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n if (!ObjectUtil.isNull(this.authenticationService.tokenValueLocalStorage)) {\n return this.authenticationService.token.pipe(\n map(token => {\n if (this.authenticationService.isValidToken(token)) {\n return true;\n } else if (!ObjectUtil.isNull(token)) {\n this.authenticationService.removeToken();\n }\n this.router.navigate(['oauth/login'], { queryParams: { returnUrl: state.url } });\n return false;\n })\n );\n }\n this.router.navigate(['oauth/login'], { queryParams: { returnUrl: state.url } });\n return of(false);\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ObjectUtil } from '../utils/object.util';\nimport { MenuDTO } from './../models/dto/menu.dto';\nimport { ArrayUtil } from './../utils/array.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionGuard implements CanActivate, CanActivateChild {\n\n constructor(private router: Router, private authenticationService: AuthenticationService<BaseUser>) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n if (!ObjectUtil.isNull(this.authenticationService.tokenValueLocalStorage)) {\n return this.authenticationService.token.pipe(\n map(token => {\n if (this.authenticationService.isValidToken(token)\n && (!this.hasPermission(token.user.menuList, state.url) && !this.hasAuthority(token.user, route.data.authority))) {\n this.router.navigate(['errors/403']);\n return false;\n }\n return true;\n })\n );\n }\n this.router.navigate(['errors/403']);\n return of(false);\n }\n\n hasAuthority(user: any, permission: string): boolean {\n return !!user.authorities.find(authority => authority.authority.match(permission));\n }\n\n hasPermission(menuList: MenuDTO[], url: string): boolean {\n for (const menu of menuList) {\n if (url.split('/').pop() === menu.route) {\n return true;\n } else if (!ArrayUtil.isEmpty(menu.menuList)) {\n return this.hasPermission(menu.menuList, url);\n }\n }\n return false;\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BaseUser } from '../models/base-user.model';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { ObjectUtil } from '../utils/object.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PublicGuard implements CanActivate, CanActivateChild {\n\n constructor(private router: Router, private authenticationService: AuthenticationService<BaseUser>) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n if (!ObjectUtil.isNull(this.authenticationService.tokenValueLocalStorage)) {\n return this.authenticationService.token.pipe(\n map(token => {\n if (this.authenticationService.isValidToken(token)) {\n this.router.navigate(['dashboard']);\n return false;\n }\n return true;\n })\n );\n }\n this.router.navigate(['dashboard']);\n return of(false);\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","export abstract class AbstractModel {\n\n id: number | string;\n\n}\n","import {AbstractModel} from './abstract.model';\nimport {MenuDTO} from './dto/menu.dto';\nimport {Authority} from './authority.model';\n\nexport class BaseUser extends AbstractModel {\n\n name: string;\n\n username: string;\n\n password: string;\n\n lastAccess: Date;\n\n authorities: Authority[];\n\n menuList: MenuDTO[];\n\n constructor() {\n super();\n this.menuList = [];\n }\n\n}\n","import {AbstractDTO} from './abstract.dto';\n\nexport class ChartDTO extends AbstractDTO {\n\n label: string;\n\n value: string;\n\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef } from '@angular/core';\nimport { DialogPosition } from '@angular/material';\nimport { AbstractDTO } from './abstract.dto';\n\nexport class DialogDTO<D = any> extends AbstractDTO {\n\n componentOrTemplateRef: ComponentType<any> | TemplateRef<any>;\n\n /** Classe personalizada para o painel de sobreposição. */\n panelClass?: string | string[];\n\n /** Se o usuário pode usar escape ou clicar no plano de fundo para fechar o modal. */\n disableClose?: boolean;\n\n /** Largura do dialog.*/\n width?: string;\n\n /** Altura do dialog. */\n height?: string;\n\n /** Largura mínima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n minWidth?: number | string;\n\n /** Altura mínima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n minHeight?: number | string;\n\n /** Largura máxima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. O padrão é 80vw */\n maxWidth?: number | string;\n\n /** Altura máxima do dialog. Se um número for fornecido, serão assumidas unidades de pixels. */\n maxHeight?: number | string;\n\n /** Substituições de posição. */\n position?: DialogPosition;\n\n /** Dados sendo injetados no dialog */\n data?: D | null;\n\n /** Se a caixa de diálogo deve focar o primeiro elemento focável em aberto. */\n autoFocus?: boolean;\n\n /** Se a caixa de diálogo deve restaurar o foco para o elemento previamente focado, depois de fechado. */\n restoreFocus?: boolean;\n\n /**\n * Se o dialog deve fechar quando o usuário retrocede/avança no histórico.\n * Observe que isso geralmente não inclui clicar em links (a menos que o usuário esteja usando a `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean;\n\n}\n","import {AbstractDTO} from './abstract.dto';\nimport {SortDTO} from './sort.dto';\n\nexport class FilterDTO extends AbstractDTO {\n\n sorts: SortDTO[];\n\n pageNumber: number;\n\n pageSize: number;\n\n offset: number;\n\n}\n","import { RadioButtonEnum } from '../enums/radio-button.enum';\n\nexport class InputListboxDTO {\n\n radiobuttonSelected: RadioButtonEnum | string;\n\n entitiesSelected: any[];\n\n constructor(radiobuttonSelected: RadioButtonEnum | string = 'ALL', entitentitiesSelected: any[] = []) {\n this.radiobuttonSelected = radiobuttonSelected;\n this.entitiesSelected = entitentitiesSelected;\n }\n\n}\n","import { MenuType, MenuTypeEnum } from '../enums/menu-type.enum';\nimport { AbstractDTO } from './abstract.dto';\n\nexport class MenuDTO extends AbstractDTO {\n\n index?: number;\n\n name: string;\n\n icon?: string;\n\n svgIcon?: string;\n\n route?: string;\n\n module?: string;\n\n type: MenuTypeEnum | MenuType;\n\n menuList?: MenuDTO[];\n\n action?: Function;\n\n // @Transient\n expanded?: boolean;\n\n constructor() {\n super();\n this.menuList = [];\n this.expanded = false;\n }\n\n}\n\n\n","import { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { AbstractModel } from '../abstract.model';\nimport { AbstractDTO } from './abstract.dto';\n\nexport class TableColumnDTO extends AbstractDTO {\n\n name: string;\n\n property: string;\n\n value: any;\n\n sortable = false;\n\n hiddenSm = false;\n\n visible = true;\n\n width: Observable<number | string>;\n\n marginLeft: Observable<number | string>;\n\n marginRight: Observable<number | string>;\n\n align: string;\n\n template: TemplateRef<any>;\n\n templateHeader: TemplateRef<any>;\n\n sliceLength: number;\n\n action: (obj: AbstractModel) => void;\n\n constructor(\n name: string,\n property: string,\n value: any,\n sortable: boolean,\n hiddenSm: boolean,\n visible: boolean,\n width: Observable<number | string>,\n marginLeft: Observable<number | string>,\n marginRight: Observable<number | string>,\n align: string,\n template: TemplateRef<any>,\n templateHeader: TemplateRef<any>,\n sliceLength: number,\n action: (obj: AbstractModel) => void\n ) {\n super();\n this.name = name;\n this.property = property;\n this.value = value;\n this.sortable = sortable;\n this.hiddenSm = hiddenSm;\n this.visible = visible;\n this.width = width;\n this.marginLeft = marginLeft;\n this.marginRight = marginRight;\n this.align = align;\n this.template = template;\n this.templateHeader = templateHeader;\n this.sliceLength = sliceLength;\n this.action = action;\n }\n\n}\n","import {BaseUser} from '../base-user.model';\nimport {AbstractDTO} from './abstract.dto';\n\nexport class TokenDTO<U extends BaseUser> extends AbstractDTO {\n\n user: U;\n\n accessToken: string;\n\n refreshToken: string;\n\n expiration: Date;\n\n}\n","export enum CriteriaOperationEnum {\n\n EQUALITY = 'EQUALITY',\n NEGATION = 'NEGATION',\n GREATER_THAN = 'GREATER_THAN',\n GREATER_THAN_OR_EQUAL = 'GREATER_THAN_OR_EQUAL',\n LESS_THAN = 'LESS_THAN',\n LESS_THAN_OR_EQUAL = 'LESS_THAN_OR_EQUAL',\n LIKE = 'LIKE',\n STARTS_WITH = 'STARTS_WITH',\n ENDS_WITH = 'ENDS_WITH',\n CONTAINS = 'CONTAINS',\n IN = 'IN'\n\n}\n","export enum CriteriaSortDirectionEnum {\n\n ASC = 'ASC',\n DESC = 'DESC'\n\n}\n","export enum MenuTypeEnum {\n GROUP = 'GROUP',\n COLLAPSABLE = 'COLLAPSABLE',\n ITEM = 'ITEM'\n}\n\nexport type MenuType = 'GROUP' | 'COLLAPSABLE' | 'ITEM';\n","export enum RadioButtonEnum {\n\n START_AND_END = 'Inicial/Final',\n BY_SELECTION = 'Por seleção',\n TO_OMIT = 'Omitir',\n ALL = 'Todos'\n\n}\n","import {AbstractModel} from './abstract.model';\n\nexport class MultitenantModel extends AbstractModel {\n\n tenantId: number;\n\n}\n","import {AbstractModel} from './abstract.model';\n\nexport class Permission extends AbstractModel {\n\n menu: string;\n\n make = true;\n\n update = true;\n\n read = true;\n\n delete = true;\n\n}\n","import {AbstractModel} from './abstract.model';\nimport {Permission} from './permission.model';\n\nexport class Role extends AbstractModel {\n\n name: string;\n\n permissionList: Permission[];\n\n constructor() {\n super();\n this.permissionList = [];\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\n\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { PageDTO } from '../models/dto/page.dto';\nimport { ObjectUtil } from '../utils/object.util';\nimport { StringUtil } from '../utils/string.util';\nimport { AbstractService } from './abstract.service';\n\nexport abstract class AbstractFindService<T extends AbstractModel, F extends FilterDTO> extends AbstractService implements OnDestroy {\n\n constructor(\n protected path: string,\n protected http: HttpClient\n ) {\n super();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n protected url(path?: string): string {\n const url = `api/${this.path}`;\n return path ? url.concat(`/${path}`) : url;\n }\n\n getOne(id: number | string): Observable<T> {\n return this.http.get(this.url(`${id}`), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n find(filter?: F): Observable<PageDTO<any>> {\n return this.http.post(this.url('find-all'), filter, this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n findAll(): Observable<T[]> {\n return this.http.get(this.url(), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n findAllEnabled(page: number, size: number): Observable<PageDTO<T>> {\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n\n return this.http.get(this.url(`find-all-enabled?page=${page}&size=${size}`), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n /**\n * Pesquisa páginada por valor.\n * @param value valor para pesquisar\n * @param page página que ira consultar. default = 0;\n * @param size quantidade de registros a retornar. default = 10;\n * @param sort tipo de ordenação. default = null;\n * @returns Observable<PageDTO<T>>;\n */\n findByValue(value: string, page: number, size: number = 10, sort?: { property: string; direction: 'asc' | 'desc'; }): Observable<PageDTO<T>> {\n let lValue: string = value;\n if (value) {\n lValue = StringUtil.removeAccents(value).trim();\n } else {\n lValue = '';\n }\n if ((!page) || (page && (page < 0))) {\n page = 0;\n }\n if ((!size) || (size && (size <= 0))) {\n size = 10;\n }\n let lSort: string = '';\n if (!ObjectUtil.isNull(sort) && !StringUtil.isEmpty(sort.property)) {\n lSort = `&sort=${sort.property},${sort.direction}`;\n }\n\n return this.http.get(this.url(`find-by-value?page=${page}&size=${size}${lSort}&value=${lValue}`), this.options()).pipe(\n takeUntil(this.onDestroy),\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n}\n\n","import { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { AbstractModel } from '../models/abstract.model';\nimport { FilterDTO } from '../models/dto/filter.dto';\nimport { AbstractFindService } from './abstract-find.service';\n\nexport abstract class AbstractCrudService<T extends AbstractModel, F extends FilterDTO> extends AbstractFindService<T, F> {\n\n path: string;\n\n returnPath: string;\n\n constructor(\n path: string,\n http: HttpClient,\n ) {\n super(path, http);\n this.path = path;\n }\n\n save(entity: T): Observable<T> {\n this.validate(entity);\n return this.http.post(this.url(), entity, this.options()).pipe(\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n saveAll(entities: T[]): Observable<T[]> {\n entities.forEach(entity => this.validate(entity));\n return this.http.post(this.url('save-all'), entities, this.options()).pipe(\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n delete(id: number | string): Observable<T> {\n return this.http.delete(this.url(`${id}`)).pipe(\n map(() => null),\n catchError(this.handleError)\n );\n }\n\n deleteAll(entities: T[]): Observable<T[]> {\n return this.http.post(this.url('delete-all'), entities, this.options()).pipe(\n map(this.mapper),\n catchError(this.handleError)\n );\n }\n\n validate(entity: T): void { }\n\n}\n","// tslint:disable\ninterface String {\n numberFullName(this: string, isCurrency?: boolean): string;\n}\n\n// Função para converter número no formato string para número por extenso.\nString.prototype.numberFullName = function (this: String, isCurrency: boolean): string {\n var ex: string[][] = [\n ['zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove', 'dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove'],\n ['dez', 'vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta', 'oitenta', 'noventa'],\n ['cem', 'cento', 'duzentos', 'trezentos', 'quatrocentos', 'quinhentos', 'seiscentos', 'setecentos', 'oitocentos', 'novecentos'],\n ['mil', 'milhão', 'bilhão', 'trilhão', 'quadrilhão', 'quintilhão', 'sextilhão', 'setilhão', 'octilhão', 'nonilhão', 'decilhão', 'undecilhão', 'dodecilhão', 'tredecilhão', 'quatrodecilhão', 'quindecilhão', 'sedecilhão', 'septendecilhão', 'octencilhão', 'nonencilhão']\n ];\n\n let a;\n let v;\n let i;\n let n = this.replace(isCurrency ? /[^,\\d]/g : /\\D/g, '').split(',');\n let e = ' e ';\n let $ = 'real';\n let d = 'centavo';\n let sl;\n\n for (var f = n.length - 1, l, j = -1, r = [], s = [], t = ''; ++j <= f; s = []) {\n j && (n[j] = (Number('.' + n[j]) * 1).toFixed(2).slice(2));\n\n if (!(a = (v = n[j]).slice((l = v.length) % 3).match(/\\d{3}/g), v = l % 3 ? [v.slice(0, l % 3)] : [], v = a ? v.concat(a) : v).length) {\n continue;\n }\n\n for (a = -1, l = v.length; ++a < l; t = '') {\n if (!(i = v[a] * 1)) {\n continue;\n }\n\n i % 100 < 20\n && (t += ex[0][i % 100])\n || i % 100 + 1 && (t += ex[1][(i % 100 / 10 >> 0) - 1] + (i % 10 ? e + ex[0][i % 10] : ''));\n\n s.push((i < 100 ? t : !(i % 100) ? ex[2][i == 100 ? 0 : i / 100 >> 0] : (ex[2][i / 100 >> 0] + e + t)) +\n (Number(t = String(l - a - 2)) > -1 ? ' ' + (i > 1 && Number(t) > 0 ? ex[3][t].replace('ão', 'ões') : ex[3][t]) : ''));\n }\n\n a = ((sl = s.length) > 1 ? (a = s.pop(), s.join(' ') + e + a) : s.join('') || ((!j && (Number(n[j + 1]) * 1 > 0) || r.length) ? '' : ex[0][0]));\n\n a && r.push(a + (isCurrency ? (' ' + (v.join('') * 1 > 1 ? j ? d + 's' : (/0{6,}$/.test(n[0]) ? 'de ' : '') + $.replace('l', 'is') : j ? d : $)) : ''));\n }\n\n return r.join(e);\n}\n","import { formatCurrency, formatPercent } from '@angular/common';\nimport { ObjectUtil } from './object.util';\nimport { StringUtil } from './string.util';\n\nimport '../extensions/string.extension';\n\n/** @dynamic */\nexport class CurrencyUtil {\n\n public static transform(value: number, digitsInfo?: string, isPercent?: boolean): string {\n if (!ObjectUtil.isNull(value)) {\n return isPercent\n ? formatPercent(value, 'pt', digitsInfo)\n : formatCurrency(value, 'pt', 'R$', digitsInfo);\n }\n\n return StringUtil.EMPTY;\n }\n\n public static transformNumberFullName(value: number, isCurrency: boolean = true): string {\n const valueFormatted: string = this.transform(value, '1.2-2');\n const valueNotCurrency: string = valueFormatted.substring(2).trim();\n return valueNotCurrency.numberFullName(isCurrency);\n }\n\n}\n","import * as BrasilianUtil from '@brazilian-utils/brazilian-utils';\nimport { STATES_DATA } from '@brazilian-utils/brazilian-utils/dist/common/states';\nimport { StringUtil } from './string.util';\n\nexport type AcronymState = keyof typeof STATES_DATA;\n\n/** @dynamic */\nexport class DocumentUtil {\n\n public static clearFormat(value: string): string {\n if (StringUtil.isEmpty(value)) {\n return '';\n }\n return value.replace(/\\D/g, '');\n }\n\n public static isValidCpf(cpf: string): boolean {\n if (StringUtil.isEmpty(cpf)) {\n return false;\n }\n\n cpf = StringUtil.removeAccents(cpf);\n\n if (cpf.length !== 11\n || cpf === '00000000000'\n || cpf === '11111111111'\n || cpf === '22222222222'\n || cpf === '33333333333'\n || cpf === '44444444444'\n || cpf === '55555555555'\n || cpf === '66666666666'\n || cpf === '77777777777'\n || cpf === '88888888888'\n || cpf === '99999999999') {\n return false;\n }\n\n let add: number = 0;\n for (let i: number = 0; i < 9; i++) {\n add += +cpf.charAt(i) * (10 - i);\n }\n let rev: number = 11 - (add % 11);\n\n if (rev === 10 || rev === 11) {\n rev = 0;\n }\n\n if (rev !== +cpf.charAt(9)) {\n return false;\n }\n\n add = 0;\n for (let i: number = 0; i < 10; i++) {\n add += +cpf.charAt(i) * (11 - i);\n }\n rev = 11 - (add % 11);\n\n if (rev === 10 || rev === 11) {\n rev = 0;\n }\n\n if (rev !== +cpf.charAt(10)) {\n return false;\n }\n\n return true;\n }\n\n public static isValidCnpj(cnpj: string): boolean {\n if (StringUtil.isEmpty(cnpj)) {\n return false;\n }\n\n cnpj = StringUtil.removeAccents(cnpj);\n\n if (StringUtil.isEmpty(cnpj)\n || cnpj.length !== 14\n || cnpj === '00000000000000'\n || cnpj === '11111111111111'\n || cnpj === '22222222222222'\n || cnpj === '33333333333333'\n || cnpj === '44444444444444'\n || cnpj === '55555555555555'\n || cnpj === '66666666666666'\n || cnpj === '77777777777777'\n || cnpj === '88888888888888'\n || cnpj === '99999999999999') {\n return false;\n }\n\n let length: number = cnpj.length - 2;\n let numbers = cnpj.substring(0, length);\n const digits = cnpj.substring(length);\n let sum: number = 0;\n let pos: number = length - 7;\n\n for (let i: number = length; i >= 1; i--) {\n sum += +numbers.charAt(length - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n let resultado: number = sum % 11 < 2 ? 0 : 11 - sum % 11;\n if (resultado !== +digits.charAt(0)) {\n return false;\n }\n\n length = length + 1;\n numbers = cnpj.substring(0, length);\n sum = 0;\n pos = length - 7;\n for (let i: number = length; i >= 1; i--) {\n sum += +numbers.charAt(length - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n resultado = sum % 11 < 2 ? 0 : 11 - sum % 11;\n\n if (resultado !== +digits.charAt(1)) {\n return false;\n }\n\n return true;\n }\n\n public static isValidStateRegistration(acronymState: AcronymState, stateRegistration: string): boolean {\n if (StringUtil.isEmpty(acronymState) || StringUtil.isEmpty(stateRegistration)) {\n return false;\n } else if (stateRegistration.toUpperCase() === 'ISENTO') {\n return true;\n } else {\n if (acronymState === 'GO') {\n const digits: string = BrasilianUtil.onlyNumbers(stateRegistration);\n return this.calcDigit(digits);\n } else {\n return BrasilianUtil.isValidIE(acronymState, stateRegistration);\n }\n }\n }\n\n public static isValidCep(cep: string): boolean {\n if (StringUtil.isEmpty(cep)) {\n return false;\n }\n\n return BrasilianUtil.isValidCEP(cep);\n }\n\n private static calcDigit(ie: string): boolean {\n const length: number = ie.length;\n const position: number = length - 1;\n let weight: number = length;\n const body: string = ie.substring(0, position);\n // const bodyInt: number = parseInt(body, 10);\n let sum: number = 0;\n\n body.split('').forEach((digit) => {\n sum += parseInt(digit, 10) * weight;\n weight--;\n });\n\n const rest: number = sum % 11;\n let dig: number = 11 - rest;\n\n let fatorG: number = 0;\n if ((Number(ie) >= 101031050) && (Number(ie) <= 101199979)) {\n fatorG = 1;\n }\n\n if (dig === 10) {\n dig = fatorG;\n } else if (dig === 11) {\n dig = 0;\n }\n\n const digIe: number = parseInt(ie.charAt(position), 10);\n return dig === digIe;\n }\n\n}\n","/** @dynamic */\nexport class EmailUtil {\n\n public static isValid(value: string): boolean {\n const regex: RegExp = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n return regex.test(value)\n && (value.includes('org')\n || value.includes('.com')\n || value.includes('.br')\n || value.includes('.net')\n || value.includes('.pt')\n || value.includes('.io')\n || value.includes('.ru')\n || value.includes('.uk')\n || value.includes('.de')\n || value.includes('.tk')\n || value.includes('.info')\n || value.includes('.nl')\n || value.includes('.eu')\n || value.includes('.it')\n || value.includes('.au')\n || value.includes('.fr')\n || value.includes('.site'));\n }\n\n}\n","import * as libPhone from 'libphonenumber-js';\n\nimport { NumberUtil } from './number.util';\nimport { StringUtil } from './string.util';\n\n/** @dynamic */\nexport class PhoneUtil {\n\n public static removeCharacters(value: string): string {\n if (StringUtil.isEmpty(value)) {\n return '';\n }\n return value.replace(/\\D/g, '');\n }\n\n public static maskLib(phoneNumber: string, state?: libPhone.Examples, country: libPhone.CountryCode = 'BR'): string {\n let exampleNumber: libPhone.PhoneNumber | undefined;\n\n if (!StringUtil.isEmpty(phoneNumber)) {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n if (parsedNumber) {\n exampleNumber = parsedNumber;\n }\n } else {\n exampleNumber = libPhone.getExampleNumber(country, state);\n }\n\n if (exampleNumber) {\n const formattedNumber = exampleNumber.formatNational();\n return formattedNumber.replace(/\\d/g, '0');\n } else {\n throw new Error('Estado não suportado ou código de estado inválido.');\n }\n }\n\n public static formatLib(phoneNumber: string, country: libPhone.CountryCode = 'BR'): string {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n if (parsedNumber) {\n return parsedNumber.formatNational();\n } else {\n throw new Error('Número de telefone inválido.');\n }\n } catch (error) {\n throw new Error('Erro ao formatar o número de telefone: ' + error.message);\n }\n }\n\n public static format(number: string, mask?: string): string {\n let numberNotFormatted: string = NumberUtil.onlyNumbers(number);\n let phoneFormatted: string = '';\n\n if (\n (numberNotFormatted.length < 8) ||\n (numberNotFormatted.length > 12) ||\n (!this.isPossible(numberNotFormatted) && !this.isValid(numberNotFormatted))\n ) {\n return numberNotFormatted;\n }\n\n if (StringUtil.isEmpty(mask)) {\n mask = this.mask(numberNotFormatted);\n }\n\n for (let i: number = 0, j: number = 0; i < mask.length && j < numberNotFormatted.length; i++) {\n phoneFormatted += mask.charAt(i) === '0' ? numberNotFormatted.charAt(j++) : mask.charAt(i);\n }\n\n return phoneFormatted;\n }\n\n public static mask(phone: string): string {\n const specialPrefixes: string[] = ['0900', '0800', '0700', '0600', '0500', '0400', '0300', '0200', '0100'];\n let phoneAux: string = this.removeCharacters(phone.replace(/\\D/g, ''));\n\n if (\n (phoneAux.length < 8) ||\n (phoneAux.length > 12) ||\n (!this.isPossible(phoneAux) && !this.isValid(phoneAux))\n ) {\n return '0*';\n }\n\n const existInArray: boolean = specialPrefixes.some(prefix => phoneAux.startsWith(prefix));\n if (existInArray) {\n return '0000 000 0000'; // Para números especiais como 0800\n }\n\n switch (phoneAux.length) {\n case 8: return '0000-0000';\n case 9: return '0 0000-0000';\n case 10: return '(00) 0000-0000';\n case 11: return '(00) 0 0000-0000';\n case 12: return '(000) 0 0000-0000';\n default: return '0*';\n }\n }\n\n public static isPossible(phoneNumber: string, country: libPhone.CountryCode = 'BR'): boolean {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.isPossible() : false;\n } catch (error) {\n return false;\n }\n }\n\n public static isValid(phoneNumber: string, country: libPhone.CountryCode = 'BR'): boolean {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.isValid() : false;\n } catch (error) {\n return false;\n }\n }\n\n public static getType(phoneNumber: string, country: libPhone.CountryCode = 'BR'): libPhone.NumberType | null {\n try {\n const parsedNumber = libPhone.parsePhoneNumberFromString(phoneNumber, country);\n return parsedNumber ? parsedNumber.getType() : null;\n } catch (error) {\n return null;\n }\n }\n\n public static isEqual(phoneNumber1: string, phoneNumber2: string, country: libPhone.CountryCode = 'BR'): boolean {\n try {\n const parsedNumber1 = libPhone.parsePhoneNumberFromString(phoneNumber1, country);\n const parsedNumber2 = libPhone.parsePhoneNumberFromString(phoneNumber2, country);\n if (parsedNumber1 && parsedNumber2) {\n return parsedNumber1.isEqual(parsedNumber2);\n } else {\n return false;\n }\n } catch (error) {\n return false;\n }\n }\n\n}\n","import { TemplateRef } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AbstractModel } from '../models/abstract.model';\nimport { TableColumnDTO } from '../models/dto/table-column.dto';\nimport { BreakpointObserverService } from '../services/breakpoint-observer.service';\n\n/** @dynamic */\nexport class TableColumnBuilder {\n\n private name$: string;\n\n private property$: string;\n\n private value$: any;\n\n private sortable$ = false;\n\n private hiddenSm$ = false;\n\n private visible$ = true;\n\n private width$: Observable<number | string>;\n\n private marginLeft$: Observable<number | string>;\n\n private marginRight$: Observable<number | string>;\n\n private align$ = 'start center';\n\n private template$: TemplateRef<any>;\n\n private templateHeader$: TemplateRef<any>;\n\n private sliceLength$: number;\n\n private action$: (obj: AbstractModel) => void;\n\n private breakpointObserverService$: BreakpointObserverService;\n\n constructor(breakpointObserverService?: BreakpointObserverService) {\n this.breakpointObserverService$ = breakpointObserverService;\n }\n\n public static instance(breakpointObserverService?: BreakpointObserverService): TableColumnBuilder {\n return new TableColumnBuilder(breakpointObserverService);\n }\n\n public name(name: any): TableColumnBuilder {\n this.name$ = name;\n return this;\n }\n\n public property(property: any): TableColumnBuilder {\n this.property$ = property;\n return this;\n }\n\n public value(value: any): TableColumnBuilder {\n this.value$ = value;\n return this;\n }\n\n public sortable(sortable: boolean): TableColumnBuilder {\n this.sortable$ = sortable;\n return this;\n }\n\n public hiddenSm(hiddenSm: boolean): TableColumnBuilder {\n this.hiddenSm$ = hiddenSm;\n return this;\n }\n\n public visible(visible: boolean): TableColumnBuilder {\n this.visible$ = visible;\n return this;\n }\n\n public width(width: number | string): TableColumnBuilder {\n this.width$ = of(width);\n return this;\n }\n\n public marginLeft(marginLeft: number | string): TableColumnBuilder {\n this.marginLeft$ = of(marginLeft);\n return this;\n }\n\n public marginRight(marginRight: number | string): TableColumnBuilder {\n this.marginRight$ = of(marginRight);\n return this;\n }\n\n public align(align: string): TableColumnBuilder {\n this.align$ = align;\n return this;\n }\n\n public breakpointWidth(breakpointMap: Map<string, string | number>): TableColumnBuilder {\n this.width$ = this.breakpointObserverService$.size$.pipe(map(breakpoint => {\n if (breakpointMap.has(breakpoint)) {\n return breakpointMap.get(breakpoint);\n }\n return 'auto';\n }));\n return this;\n }\n\n public template(template: TemplateRef<any>): TableColumnBuilder {\n this.template$ = template;\n return this;\n }\n\n public templateHeader(templateHeader: TemplateRef<any>): TableColumnBuilder {\n this.templateHeader$ = templateHeader;\n return this;\n }\n\n public sliceLength(sliceLength: number): TableColumnBuilder {\n this.sliceLength$ = sliceLength;\n return this;\n }\n\n public action(action: (obj: AbstractModel) => void): TableColumnBuilder {\n this.action$ = action;\n return this;\n }\n\n public build(): TableColumnDTO {\n return new TableColumnDTO(\n this.name$,\n this.property$,\n this.value$,\n this.sortable$,\n this.hiddenSm$,\n this.visible$,\n this.width$,\n this.marginLeft$,\n this.marginRight$,\n this.align$,\n this.template$,\n this.templateHeader$,\n this.sliceLength$,\n this.action$\n );\n }\n\n}\n","/** @dynamic */\nexport class URLParamsUtil {\n\n /** @Internal */\n private static _queryParams: URLSearchParams = new URLSearchParams(window.location.href);\n\n public static get(param: string): any {\n return this._queryParams.get(param);\n }\n\n public static has(param: string): boolean {\n return this._queryParams.has(param);\n }\n\n}\n","import { ɵComponentDef as ComponentDef, ɵɵdirectiveInject as directiveInject } from '@angular/core';\nimport { ObjectUtil } from '../../utils/object.util';\n\nexport type GIPIKey = string | symbol;\n\nexport type ClassRef<T = any> = new (...args: any[]) => T;\n\nexport const ƟPROV: 'ɵprov' = 'ɵprov';\nexport const ƟFAC: 'ɵfac' = 'ɵfac';\nexport const ƟCMP: 'ɵcmp' = 'ɵcmp';\n\nexport function getReflectType<T = any>(target: Object, propertyKey: string | symbol): ClassRef<T> {\n if (!(Reflect as any).getMetadata) {\n throw new Error(`You forgot add \"import 'reflect-metadata';\" to polyfills.ts`);\n }\n return (Reflect as any).getMetadata('design:type', target, propertyKey);\n}\n\nexport function GIPIAutowired(): PropertyDecorator {\n return (target: Object, propertyKey: GIPIKey) => {\n const isJIT: boolean = !target.constructor[ƟCMP];\n const classRef: ClassRef = getReflectType(target, propertyKey);\n\n // const inject = () => {\n // const compDef: ComponentDef<any> = target.constructor[ƟCMP];\n // const compFactory: any = compDef.factory || target.constructor[ƟFAC];\n // compDef.factory = function (...args: any[]) {\n // const instance = compFactory(...args);\n // instance[propertyKey] = directiveInject(classRef);\n // return instance;\n // }\n // };\n\n const inject = () => {\n const compDef: ComponentDef<any> = target.constructor[ƟCMP];\n let compFactory: any = null;\n if (!ObjectUtil.isNull(compDef)) {\n compFactory = compDef.factory;\n } else {\n compFactory = target.constructor[ƟFAC];\n }\n\n compDef.factory = function (...args: any[]) {\n const instance = compFactory(...args);\n instance[propertyKey] = directiveInject(classRef);\n return instance;\n }\n };\n\n isJIT\n ? Promise.resolve().then(inject).catch(() => {\n throw new Error(`An error occurred while injecting the class: ${classRef}`)\n })\n : inject();\n };\n}\n","export enum GIPISortDirectionEnum {\n ASC = 'ASC',\n DESC = 'DESC'\n}\n\nexport type GIPISortDirection = 'ASC' | 'DESC';\n","import { GIPISortModel } from './sort.model';\n\nexport class GIPIAbstractFilterModel {\n\n sorts: GIPISortModel[];\n\n pageNumber: number;\n\n pageSize: number;\n\n offset: number;\n\n /** @Transient */\n originScreen: string;\n\n}\n","import { GIPIUuid } from '../types/uuid.type';\n\nexport abstract class GIPIAbstractModel {\n\n id: GIPIUuid;\n\n enabled: boolean;\n\n /** @Transient */\n selected: boolean;\n\n}\n","export class GIPIAppliedFilter<T = any> {\n\n private _description: string;\n\n private _key: T;\n\n constructor(description: string, key: T) {\n this.description = description;\n this.key = key;\n }\n\n public set description(description: string) {\n this._description = description;\n }\n public get description(): string {\n return this._description;\n }\n\n public set key(key: T) {\n this._key = key;\n }\n public get key(): T {\n return this._key;\n }\n\n}\n","import { GIPIUuid } from '../../types/uuid.type';\n\nexport abstract class GIPIAbstractDTO {\n\n id: GIPIUuid;\n\n enabled: boolean;\n\n /** @Transient */\n selected: boolean;\n\n}\n","export class GIPIPageEvent {\n\n /** The current page index. */\n private _pageIndex: number;\n\n /** The current page size */\n private _pageSize: number;\n\n /** The current total number of items being paged */\n private _length: number;\n\n constructor(\n pageIndex?: number,\n pageSize?: number,\n length?: number\n ) {\n if (pageIndex && pageIndex >= 0) {\n this.pageIndex = pageIndex;\n }\n if (pageSize && pageSize >= 0) {\n this.pageSize = pageSize;\n }\n if (length && length >= 0) {\n this.length = length;\n }\n }\n\n /** O índice da página atual. */\n public get pageIndex(): number {\n return this._pageIndex;\n }\n public set pageIndex(value: number) {\n this._pageIndex = value;\n }\n\n /** O tamanho da página atual */\n public get pageSize(): number {\n return this._pageSize;\n }\n public set pageSize(value: number) {\n this._pageSize = value;\n }\n\n /** O número total atual de itens sendo paginados */\n public get length(): number {\n return this._length;\n }\n public set length(value: number) {\n this._length = value;\n }\n\n}\n","import {ElementRef, Injectable, Injector, ViewContainerRef} from '@angular/core';\nimport {ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef, PositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentPortal, PortalInjector} from '@angular/cdk/portal';\n\nimport {PopoverContent, PopoverRef} from './popover-ref';\nimport {PopoverComponent} from './popover.component';\nimport {ObjectUtil} from '../../../core/utils/object.util';\n\nexport interface PopoverParams<T> {\n width?: string | number;\n height?: string | number;\n origin: ElementRef | HTMLElement;\n content: PopoverContent;\n data?: T;\n event?: MouseEvent;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PopoverService {\n\n\n constructor(private overlay: Overlay, private injector: Injector) {\n }\n\n open<T>({origin, content, data, width, height, event}: PopoverParams<T>): PopoverRef<T> {\n const overlayRef = this.overlay.create(this.getOverlayConfig({origin, width, height, event}));\n const popoverRef = new PopoverRef<T>(overlayRef, content, data);\n const injector = this.createInjector(popoverRef, this.injector);\n overlayRef.attach(new ComponentPortal(PopoverComponent, null, injector));\n\n return popoverRef;\n }\n\n private getOverlayConfig({origin, width, height, event}): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: true,\n width,\n height,\n backdropClass: 'popover-backdrop',\n positionStrategy: this.getOverlayPosition(origin, event),\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n }\n\n private getOverlayPosition(origin: ElementRef | HTMLElement, event?: MouseEvent): PositionStrategy {\n // @ts-ignore\n const offset = event.target.offsetTop - document.querySelector('.mat-sidenav-content').scrollTop;\n if (event) {\n return this.overlay.position()\n .global()\n .top(`${(offset + 50)}px`)\n .left(`${(event.clientX - 30)}px`);\n }\n return this.overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.getPositions())\n .withFlexibleDimensions(false)\n .withPush(false);\n }\n\n updatePosition(popoverRef: PopoverRef, event: MouseEvent): void {\n popoverRef.overlay.updatePositionStrategy(this.overlay.position()\n .global()\n .top(`${event.clientY}px`)\n .left(`${event.clientX}px`));\n }\n\n createInjector(popoverRef: PopoverRef, injector: Injector) {\n const tokens = new WeakMap([[PopoverRef, popoverRef]]);\n return new PortalInjector(injector, tokens);\n }\n\n private getPositions(): ConnectionPositionPair[] {\n return [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ];\n }\n\n}\n","import { SortDirection } from '../types/sort-direction.type';\nimport { TableColumnModel } from './table-column.model';\n\nexport interface SortedColumn {\n sortDirection: SortDirection;\n column: TableColumnModel\n};\n","import { TemplateRef } from '@angular/core';\n\nimport { PipeTransformModel } from './pipe-transform.model';\n\nexport class TableColumnModel {\n\n private _name: string;\n\n private _property: string;\n\n private _value: string | number | Date | ((obj: object) => string | number);\n\n private _sortable: boolean = false;\n\n private _visible: boolean = true;\n\n private _checkboxable: boolean = false;\n\n private _columnSpan: number;\n\n private _columnSpanXs: number;\n\n private _columnSpanSm: number;\n\n private _columnSpanMd: number;\n\n private _columnSpanLg: number;\n\n private _columnSpanXl: number;\n\n private _minWidth: number;\n\n private _maxWidth: number;\n\n private _paddingInline: number;\n\n private _align: 'left' | 'center' | 'right';\n\n private _templateCell: TemplateRef<any>;\n\n private _templateHeader: TemplateRef<any>;\n\n private _sliceLength: number;\n\n /**\n * Sort comparator\n */\n private _comparator: any;\n\n private _pipe: PipeTransformModel;\n\n private _action: (obj: any) => void;\n\n constructor(\n name: string,\n property: string,\n value: string | number | Date | ((obj: object) => string | number),\n sortable: boolean,\n visible: boolean,\n checkboxable: boolean,\n columnSpan: number,\n columnSpanXs: number,\n columnSpanSm: number,\n columnSpanMd: number,\n columnSpanLg: number,\n columnSpanXl: number,\n minWidth: number,\n maxWidth: number,\n paddingInline: number,\n align: 'left' | 'center' | 'right',\n templateCell: TemplateRef<any>,\n templateHeader: TemplateRef<any>,\n sliceLength: number,\n comparator: any,\n pipe: PipeTransformModel,\n action: (obj: any) => void,\n ) {\n this._name = name;\n this._property = property;\n this._value = value;\n this._sortable = sortable;\n this._visible = visible;\n this._checkboxable = checkboxable;\n this._columnSpan = columnSpan;\n this._columnSpanXs = columnSpanXs;\n this._columnSpanSm = columnSpanSm;\n this._columnSpanMd = columnSpanMd;\n this._columnSpanLg = columnSpanLg;\n this._columnSpanXl = columnSpanXl;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._paddingInline = paddingInline;\n this._align = align;\n this._templateCell = templateCell;\n this._templateHeader = templateHeader;\n this._sliceLength = sliceLength;\n this._comparator = comparator;\n this._pipe = pipe;\n this._action = action;\n }\n\n public get name(): string {\n return this._name;\n }\n public set name(value: string) {\n this._name = value;\n }\n\n public get property(): string {\n return this._property;\n }\n public set property(value: string) {\n this._property = value;\n }\n\n public get value(): string | number | Date | ((obj: object) => string | number) {\n return this._value;\n }\n public set value(value: string | number | Date | ((obj: object) => string | number)) {\n this._value = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get visible(): boolean {\n return this._visible;\n }\n public set visible(value: boolean) {\n this._visible = value;\n }\n\n public get checkboxable(): boolean {\n return this._checkboxable;\n }\n public set checkboxable(value: boolean) {\n this._checkboxable = value;\n }\n\n public get columnSpan(): number {\n return this._columnSpan;\n }\n public set columnSpan(value: number) {\n this._columnSpan = value;\n }\n\n public get columnSpanXs(): number {\n return this._columnSpanXs;\n }\n public set columnSpanXs(value: number) {\n this._columnSpanXs = value;\n }\n\n public get columnSpanSm(): number {\n return this._columnSpanSm;\n }\n public set columnSpanSm(value: number) {\n this._columnSpanSm = value;\n }\n\n public get columnSpanMd(): number {\n return this._columnSpanMd;\n }\n public set columnSpanMd(value: number) {\n this._columnSpanMd = value;\n }\n\n public get columnSpanLg(): number {\n return this._columnSpanLg;\n }\n public set columnSpanLg(value: number) {\n this._columnSpanLg = value;\n }\n\n public get columnSpanXl(): number {\n return this._columnSpanXl;\n }\n public set columnSpanXl(value: number) {\n this._columnSpanXl = value;\n }\n\n public get minWidth(): number {\n return this._minWidth;\n }\n public set minWidth(value: number) {\n this._minWidth = value;\n }\n\n public get maxWidth(): number {\n return this._maxWidth;\n }\n public set maxWidth(value: number) {\n this._maxWidth = value;\n }\n\n public get paddingInline(): number {\n return this._paddingInline;\n }\n public set paddingInline(value: number) {\n this._paddingInline = value;\n }\n\n public get align(): 'left' | 'center' | 'right' {\n return this._align;\n }\n public set align(value: 'left' | 'center' | 'right') {\n this._align = value;\n }\n\n public get templateCell(): TemplateRef<any> {\n return this._templateCell;\n }\n public set templateCell(value: TemplateRef<any>) {\n this._templateCell = value;\n }\n\n public get templateHeader(): TemplateRef<any> {\n return this._templateHeader;\n }\n public set templateHeader(value: TemplateRef<any>) {\n this._templateHeader = value;\n }\n\n public get sliceLength(): number {\n return this._sliceLength;\n }\n public set sliceLength(value: number) {\n this._sliceLength = value;\n }\n\n public get comparator(): any {\n return this._comparator;\n }\n public set comparator(value: any) {\n this._comparator = value;\n }\n\n public get pipe(): PipeTransformModel {\n return this._pipe;\n }\n public set pipe(value: PipeTransformModel) {\n this._pipe = value;\n }\n\n public get action(): (obj: any) => void {\n return this._action;\n }\n public set action(value: (obj: any) => void) {\n this._action = value;\n }\n\n}\n","import { TemplateRef } from '@angular/core';\n\nimport { PipeTransformModel } from './pipe-transform.model';\nimport { TableColumnModel } from './table-column.model';\n\nexport class TableColumnBuilderModel {\n\n private _name$: string;\n\n private _property$: string;\n\n private _value$: string | number | Date | ((obj: object) => string | number);\n\n private _sortable$: boolean = false;\n\n private _visible$: boolean = true;\n\n private _checkboxable$: boolean = false;\n\n private _columnSpan$: number;\n\n private _columnSpanXs$: number;\n\n private _columnSpanSm$: number;\n\n private _columnSpanMd$: number;\n\n private _columnSpanLg$: number;\n\n private _columnSpanXl$: number;\n\n private _minWidth$: number;\n\n private _maxWidth$: number;\n\n private _paddingInline$: number;\n\n private _align$: 'left' | 'center' | 'right' = 'left';\n\n private _templateCell$: TemplateRef<any>;\n\n private _templateHeader$: TemplateRef<any>;\n\n private _sliceLength$: number;\n\n private _comparator$: number;\n\n private _pipe$: PipeTransformModel;\n\n private _action$: (obj: any) => void;\n\n constructor() { }\n\n public static instance(): TableColumnBuilderModel {\n return new TableColumnBuilderModel();\n }\n\n public name(name: string): TableColumnBuilderModel {\n this._name$ = name;\n return this;\n }\n\n public property(property: string): TableColumnBuilderModel {\n this._property$ = property;\n return this;\n }\n\n public value(value: string | number | Date | ((obj: object) => string | number)): TableColumnBuilderModel {\n this._value$ = value;\n return this;\n }\n\n public sortable(sortable: boolean): TableColumnBuilderModel {\n this._sortable$ = sortable;\n return this;\n }\n\n public visible(visible: boolean): TableColumnBuilderModel {\n this._visible$ = visible;\n return this;\n }\n\n public checkboxable(checkboxable: boolean): TableColumnBuilderModel {\n this._checkboxable$ = checkboxable;\n return this;\n }\n\n public columnSpan(columnSpan: number): TableColumnBuilderModel {\n this._columnSpan$ = columnSpan;\n return this;\n }\n\n public columnSpanXs(columnSpanXs: number): TableColumnBuilderModel {\n this._columnSpanXs$ = columnSpanXs;\n return this;\n }\n\n public columnSpanSm(columnSpanSm: number): TableColumnBuilderModel {\n this._columnSpanSm$ = columnSpanSm;\n return this;\n }\n\n public columnSpanMd(columnSpanMd: number): TableColumnBuilderModel {\n this._columnSpanMd$ = columnSpanMd;\n return this;\n }\n\n public columnSpanLg(columnSpanLg: number): TableColumnBuilderModel {\n this._columnSpanLg$ = columnSpanLg;\n return this;\n }\n\n public columnSpanXl(columnSpanXl: number): TableColumnBuilderModel {\n this._columnSpanXl$ = columnSpanXl;\n return this;\n }\n\n public minWidth(minWidth: number): TableColumnBuilderModel {\n this._minWidth$ = minWidth;\n return this;\n }\n\n public maxWidth(maxWidth: number): TableColumnBuilderModel {\n this._maxWidth$ = maxWidth;\n return this;\n }\n\n public paddingInline(paddingInline: number): TableColumnBuilderModel {\n this._paddingInline$ = paddingInline;\n return this;\n }\n\n public align(align: 'left' | 'center' | 'right'): TableColumnBuilderModel {\n this._align$ = align;\n return this;\n }\n\n public templateCell(templateCell: TemplateRef<any>): TableColumnBuilderModel {\n this._templateCell$ = templateCell;\n return this;\n }\n\n public templateHeader(templateHeader: TemplateRef<any>): TableColumnBuilderModel {\n this._templateHeader$ = templateHeader;\n return this;\n }\n\n public sliceLength(sliceLength: number): TableColumnBuilderModel {\n this._sliceLength$ = sliceLength;\n return this;\n }\n\n public comparator(comparator: number): TableColumnBuilderModel {\n this._comparator$ = comparator;\n return this;\n }\n\n public pipe(pipe: PipeTransformModel): TableColumnBuilderModel {\n this._pipe$ = pipe;\n return this;\n }\n\n public action(action: (obj: any) => void): TableColumnBuilderModel {\n this._action$ = action;\n return this;\n }\n\n public build(): TableColumnModel {\n return new TableColumnModel(\n this._name$,\n this._property$,\n this._value$,\n this._sortable$,\n this._visible$,\n this._checkboxable$,\n this._columnSpan$,\n this._columnSpanXs$,\n this._columnSpanSm$,\n this._columnSpanMd$,\n this._columnSpanLg$,\n this._columnSpanXl$,\n this._minWidth$,\n this._maxWidth$,\n this._paddingInline$,\n this._align$,\n this._templateCell$,\n this._templateHeader$,\n this._sliceLength$,\n this._comparator$,\n this._pipe$,\n this._action$,\n );\n }\n\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { MatDateFormats } from './date-formats';\n\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {GIPINgConfig as ɵg} from './shared/api/gipi-ng-config';\nexport {ITSS_SELECT_SEARCH_DEFAULT_OPTIONS as ɵo,ItssSelectSearchOptions as ɵp} from './shared/components/select-entity-paged/shared/default-options';\nexport {TextareaComponent as ɵj} from './shared/components/textarea/textarea.component';\nexport {InputSelectInfiniteScrollDirective as ɵn} from './shared/directives/input-select-infinite-scroll.directive';\nexport {LowerCaseDirective as ɵl} from './shared/directives/lower-case.directive';\nexport {SpaceDropDirective as ɵm} from './shared/directives/space-drop.directive';\nexport {UpperCaseDirective as ɵk} from './shared/directives/upper-case.directive';\nexport {GIPIChipsComponent as ɵh} from './shared/gipi-components/chips/chips.component';\nexport {DatepickerComponent as ɵr} from './shared/gipi-components/datepicker/datepicker/datepicker.component';\nexport {MAT_DATE_RANGE_INPUT_PARENT as ɵa} from './shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts';\nexport {MAT_CALENDAR_RANGE_STRATEGY_PROVIDER as ɵc,MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY as ɵb} from './shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy';\nexport {MatDatepickerBase as ɵd} from './shared/gipi-components/datepicker/mat-datepicker/datepicker-base';\nexport {MAT_FORM_FIELD as ɵe} from './shared/gipi-components/datepicker/mat-datepicker/datepicker-input';\nexport {MatDatepickerInputBase as ɵf} from './shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base';\nexport {GIPIFileDragAndDropDirective as ɵi} from './shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive';\nexport {MaterialModule as ɵq} from './shared/material.module';"],"names":["ZIndexUtils","MatSelect","Platform","nextUniqueId","OPTION_HEIGHT_PX","MAT_DATE_FORMATS","yearsPerPage","MatDialog","MatFormField","observableOf","moment","matDatepickerAnimations","MatRippleModule","MatDialogModule","stringify","MatSnackBar","GIPIComponents","BrasilianUtil.onlyNumbers","BrasilianUtil.isValidIE","BrasilianUtil.isValidCEP","libPhone.parsePhoneNumberFromString","libPhone.getExampleNumber","directiveInject"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIa,YAAY,GAAG,IAAI,cAAc,CAAc,cAAc,CAAC,CAAC;AAE5E,MAAa,gBAAgB,GAAgB;IACzC,OAAO,EAAE,gCAAgC;IACzC,mBAAmB,EAAE,0CAA0C;IAC/D,mBAAmB,EAAE,yCAAyC;IAC9D,uBAAuB,EAAE,qDAAqD;IAC9E,sBAAsB,EAAE,IAAI;IAC5B,0BAA0B,EAAE,UAAU;IACtC,cAAc,EAAE,2DAA2D;CAC9E;;ACdD;;;;;;;AAQA,MAgBa,gBAAgB,GAAG,IAAI,cAAc,CAAiB,kBAAkB,CAAC;;ACuBtF,MAAM,OAAO,GAAG;IACZ,UAAU;IACV,oBAAoB;IACpB,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,qBAAqB;IACrB,cAAc;IACd,oBAAoB;IACpB,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,oBAAoB;IACpB,wBAAwB;IACxB,cAAc;IACd,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,YAAY;CACf,CAAC;AAUF,IAAa,cAAc,GAA3B,MAAa,cAAc;CAAI,CAAA;AAAlB,cAAc;IAR1B,QAAQ,CAAC;QACN,OAAO,EAAE;YACL,GAAG,OAAO;SACb;QACD,OAAO,EAAE;YACL,GAAG,OAAO;SACb;KACJ,CAAC;GACW,cAAc,CAAI;;IC3FlB,eAAe,GAA5B,MAAa,eAAe;IAA5B;QAgBa,UAAK,GAAW,SAAS,CAAC;QAc1B,YAAO,GAAY,KAAK,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,iBAAY,GAAW,EAAE,CAAC;;QAKlB,YAAO,GAA6B,IAAI,YAAY,CAAa,IAAI,CAAC,CAAC;KAc3F;IAZG,QAAQ;KACP;IAED,aAAa,CAAC,KAAiB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;CAEJ,CAAA;AAnD+C;IAA3C,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAa,WAAW;mDAAM;AAEzB;IAA/C,SAAS,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,iBAAiB;uDAAC;AAExB;IAAzD,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;oDAAC;AAEzE;IAAR,KAAK,EAAE;;8CAAe;AAEd;IAAR,KAAK,EAAE;;6CAAc;AAEb;IAAR,KAAK,EAAE;;kDAAmB;AAElB;IAAR,KAAK,EAAE;;gDAAiB;AAEhB;IAAR,KAAK,EAAE;;8CAA2B;AAE1B;IAAR,KAAK,EAAE;;6CAAuF;AAEtF;IAAR,KAAK,EAAE;8BAAO,OAAO;6CAAC;AAEd;IAAR,KAAK,EAAE;;8CAAe;AAEd;IAAR,KAAK,EAAE;;mDAAoB;AAEnB;IAAR,KAAK,EAAE;;iDAAmB;AAElB;IAAR,KAAK,EAAE;;gDAAiB;AAEhB;IAAR,KAAK,EAAE;;gDAA0B;AAEzB;IAAR,KAAK,EAAE;;iDAA2B;AAE1B;IAAR,KAAK,EAAE;;qDAA2B;AAE1B;IAAR,KAAK,EAAE;;0DAA2B;AAGlB;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;gDAAkD;AAvC/E,eAAe;IAL3B,SAAS,CAAC;QACP,QAAQ,EAAE,aAAa;QACvB,43JAAsC;;KAEzC,CAAC;GACW,eAAe,CAqD3B;;ICvDY,aAAa,GAA1B,MAAa,aAAa;IAA1B;QAQa,YAAO,GAAG,KAAK,CAAC;QAEhB,WAAM,GAAG,IAAI,CAAC;QAEd,WAAM,GAAG,IAAI,CAAC;KAK1B;IAHG,QAAQ;KACP;CAEJ,CAAA;AAfY;IAAR,KAAK,EAAE;;gDAAW;AAEV;IAAR,KAAK,EAAE;;mDAAc;AAEb;IAAR,KAAK,EAAE;;2CAAM;AAEL;IAAR,KAAK,EAAE;;8CAAiB;AAEhB;IAAR,KAAK,EAAE;;6CAAe;AAEd;IAAR,KAAK,EAAE;;6CAAe;AAZd,aAAa;IALzB,SAAS,CAAC;QACP,QAAQ,EAAE,WAAW;QACrB,wyBAAoC;;KAEvC,CAAC;GACW,aAAa,CAiBzB;;;ICTY,iBAAiB,yBAA9B,MAAa,iBAAiB;IAA9B;QAYc,wBAAmB,GAAG,IAAI,YAAY,EAAW,CAAC;QAElD,WAAM,GAAG,IAAI,YAAY,EAAO,CAAC;QAO3C,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAwB5B;IA7BG,QAAQ;KACP;IAMD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;CAEJ,CAAA;AA7CY;IAAR,KAAK,EAAE;;+CAAc;AAEb;IAAR,KAAK,EAAE;;gDAAe;AAEd;IAAR,KAAK,EAAE;;mDAAmB;AAElB;IAAR,KAAK,EAAE;;mDAAmB;AAElB;IAAR,KAAK,EAAE;;wDAAwB;AAEtB;IAAT,MAAM,EAAE;;8DAAmD;AAElD;IAAT,MAAM,EAAE;;iDAAkC;AAE3B;IAAf,KAAK,CAAC,OAAO,CAAC;;8CAAU;AAhBhB,iBAAiB;IAZ7B,SAAS,CAAC;QACP,QAAQ,EAAE,eAAe;QACzB,uWAAwC;QAExC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAiB,CAAC;gBAChD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;GACW,iBAAiB,CA+C7B;;ICvDY,aAAa,GAA1B,MAAa,aAAa;IAYxB,QAAQ;KACP;CAEF,CAAA;AAbU;IAAR,KAAK,EAAE;;4CAAe;AAEd;IAAR,KAAK,EAAE;;2CAAc;AAEb;IAAR,KAAK,EAAE;;8CAAiB;AAEhB;IAAR,KAAK,EAAE;;8CAAiB;AAEhB;IAAR,KAAK,EAAE;;+CAAkB;AAVf,aAAa;IALzB,SAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,gfAAoC;;KAErC,CAAC;GACW,aAAa,CAezB;;;ICNY,sBAAsB,8BAAnC,MAAa,sBAAsB;IAAnC;QAUa,YAAO,GAAW,EAAE,CAAC;QAQrB,cAAS,GAAG,GAAG,CAAC;QAEhB,SAAI,GAAG,MAAM,CAAC;QAEd,eAAU,GAAG,SAAS,CAAC;QAMvB,wBAAmB,GAAW,EAAE,CAAC;QAEjC,qBAAgB,GAAW,EAAE,CAAC;QAOvC,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAwB5B;IA7BG,QAAQ;KACP;IAMD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;CAEJ,CAAA;AA7D4D;IAAxD,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;2DAAC;AAEtC;IAA1C,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAY,WAAW;yDAAM;AAE9D;IAAR,KAAK,EAAE;;oDAAc;AAEb;IAAR,KAAK,EAAE;;qDAAe;AAEd;IAAR,KAAK,EAAE;;uDAAsB;AAErB;IAAR,KAAK,EAAE;;2DAAqB;AAEpB;IAAR,KAAK,EAAE;;wDAAmB;AAElB;IAAR,KAAK,EAAE;;wDAAmB;AAElB;IAAR,KAAK,EAAE;;yDAAiB;AAEhB;IAAR,KAAK,EAAE;;oDAAe;AAEd;IAAR,KAAK,EAAE;;0DAAwB;AAEhB;IAAf,KAAK,CAAC,OAAO,CAAC;;mDAAU;AAEhB;IAAR,KAAK,EAAE;;sDAAgB;AAEf;IAAR,KAAK,EAAE;;mEAAkC;AAEjC;IAAR,KAAK,EAAE;;gEAA+B;AAE9B;IAAR,KAAK,EAAE;;uDAAsC;AAhCrC,sBAAsB;IAZlC,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,itCAA8C;QAE9C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAsB,CAAC;gBACrD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;GACW,sBAAsB,CA+DlC;;AC7ED;AACA,MAAa,UAAU;IAIZ,OAAO,cAAc,CAAC,KAAa;QACtC,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;KACjE;IAEM,OAAO,aAAa,CAAC,KAAa;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACzC;IAEM,OAAO,OAAO,CAAC,KAAa;QAC/B,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KACzD;IAEM,OAAO,MAAM,CAAC,KAAa,EAAE,IAAY;QAC5C,IAAI,SAAS,GAAW,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACxC;QAED,MAAM,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAW,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhF,IAAI,YAAY,GAAW,CAAC,CAAC;QAC7B,SAAS,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC/B;iBAAM;gBACH,SAAS,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;aAC1C;SACJ;QAED,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YAC7B,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9D;QAED,OAAO,SAAS,CAAC;KACpB;IAEM,OAAO,oBAAoB,CAAC,IAAY,EAAE,GAAW;QACxD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;KACtF;;AA1Ca,gBAAK,GAAW,EAAE,CAAC;;ACDrC;AACA,MAAa,UAAU;IAEZ,OAAO,MAAM,CAAC,KAAa;QAC9B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;KAChD;IAEM,OAAO,UAAU,CAAC,KAAa;QAClC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;QAED,IAAI,EAAE,GAAoB,IAAI,CAAC;QAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACjC;QACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChC;IAEM,OAAO,QAAQ,CAAI,KAAQ;QAC9B,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;KACzD;IAEM,OAAO,KAAK,CAAC,KAAc;QAC9B,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;KACzD;IAEM,OAAO,KAAK,CAAC,KAAa;QAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,IAAI,MAAM,EAAE,CAAC;SACvB;QACD,yBAAY,KAAK,EAAG;KACvB;IAEM,OAAO,gBAAgB,CAAC,IAAS,EAAE,KAAU;QAChD,IAAI,IAAI,IAAI,KAAK,EAAE;YACf,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACxB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;aACtB;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;iBAAM;gBACH,MAAM,MAAM,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,KAAK,GAAQ,IAAI,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,GAAG,GAAW,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;oBAC/D,IAAI,KAAK,IAAI,IAAI,EAAE;wBACf,OAAO,IAAI,CAAC;qBACf;oBACD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5B;gBACD,OAAO,KAAK,CAAC;aAChB;SACJ;aAAM;YACH,OAAO,IAAI,CAAC;SACf;KACJ;IAEM,OAAO,UAAU,CAAC,GAAQ;QAC7B,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;KAC9D;IAEM,OAAO,MAAM,CAAC,IAAS,EAAE,IAAS,EAAE,KAAc;QACrD,IAAI,KAAK,EAAE;YACP,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;SACtF;aAAM;YACH,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACzC;KACJ;IAEM,OAAO,aAAa,CAAC,IAAS,EAAE,IAAS;QAC5C,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACf;QAED,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACtE,MAAM,IAAI,GAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAM,CAAC;YACX,IAAI,MAAW,CAAC;YAChB,IAAI,GAAQ,CAAC;YAEb,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBACrB,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;oBACxB,OAAO,KAAK,CAAC;iBAChB;gBACD,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;oBACzB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;wBACvC,OAAO,KAAK,CAAC;qBAChB;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;YAED,IAAI,IAAI,KAAK,IAAI,EAAE;gBACf,OAAO,KAAK,CAAC;aAChB;YAED,MAAM,KAAK,GAAY,IAAI,YAAY,IAAI,CAAC;YAC5C,MAAM,KAAK,GAAY,IAAI,YAAY,IAAI,CAAC;YAC5C,IAAI,KAAK,KAAK,KAAK,EAAE;gBACjB,OAAO,KAAK,CAAC;aAChB;YAED,IAAI,KAAK,IAAI,KAAK,EAAE;gBAChB,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;aAC5C;YAED,MAAM,OAAO,GAAY,IAAI,YAAY,MAAM,CAAC;YAChD,MAAM,OAAO,GAAY,IAAI,YAAY,MAAM,CAAC;YAChD,IAAI,OAAO,KAAK,OAAO,EAAE;gBACrB,OAAO,KAAK,CAAC;aAChB;YAED,IAAI,OAAO,IAAI,OAAO,EAAE;gBACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC9C;YAED,MAAM,IAAI,GAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAErB,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBACrC,OAAO,KAAK,CAAC;aAChB;YAED,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;gBACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;oBACtD,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;gBACzB,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC3C,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,OAAO,IAAI,CAAC;SACf;QAED,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;KACzC;IAEM,OAAO,aAAa,CAAC,GAAQ;QAChC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;YACxC,GAAG,GAAG,GAAG;iBACJ,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;iBACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;iBAChC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;iBACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;iBAChC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;iBAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;iBACvB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;SACpC;QAED,OAAO,GAAG,CAAC;KACd;IAEM,OAAO,KAAK,CAAC,IAAU,EAAE,IAAU;QACtC,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,EAAE;YACxC,OAAO,SAAS,CAAC;SACpB;aAAM,IAAI,CAAC,IAAI,IAAI,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,MAAM,IAAI,IAAI,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;YAC3G,wCAAa,IAAI,IAAI,EAAE,KAAO,IAAI,IAAI,EAAE,GAAI;SAC/C;aAAM,IAAI,CAAC,IAAI,IAAI,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,MAAM,IAAI,IAAI,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;YAC3G,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7C;QAED,OAAO,IAAI,IAAI,IAAI,CAAC;KACvB;;;;IAKM,OAAO,YAAY,CAAC,IAA0B,EAAE,IAA0B;QAC7E,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACf;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE;YACxE,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,KAAK,GAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;YAC/B,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,eAAe,GAAQ,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExE,KAAK,IAAI,GAAG,GAAW,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACjD,MAAM,GAAG,GAAW,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gBACvB,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aAChB;SACJ;QAED,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,gBAAgB,CAAC,GAAW,EAAE,QAAgB;QACxD,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACxD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC9D;CAEJ;;ACjOD;AACA,MAAa,QAAQ;IAEV,OAAO,OAAO,CAAC,EAAY;QAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YACxB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;SACvB;aAAM,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC/B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACrD;KACJ;CAEJ;;MCVqB,iBAAiB;IAKnC,YACc,cAA8B,EAC9B,MAAc,EACd,cAA8B;QAF9B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAgB;QANnC,YAAO,GAAY,KAAK,CAAC;QACxB,kBAAa,GAA0B,IAAI,YAAY,CAAU,IAAI,CAAC,CAAC;KAM5E;IAEL,QAAQ,MAAY;IAEpB,WAAW,MAAY;IAEvB,aAAa,CAAC,UAAkB;QAC5B,MAAM,KAAK,GAAuB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;KAC5F;IAES,WAAW,CAAC,KAAU;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACnC,KAAK,GAAG,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;SACnF;QACD,IAAI,KAAK,YAAY,KAAK,EAAE;YACxB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,KAAK,CAAC;KACf;IAES,iBAAiB,CAAC,OAAe;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;KACN;IAES,eAAe,CAAC,OAAe;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;KACN;IAES,iBAAiB,CAAC,OAAe;QACvC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;KACN;IAES,cAAc,CAAC,OAAe;QACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;SACf,CAAC,CAAC;KACN;IAED,QAAQ,CAAC,IAAS,EAAE,QAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACnC;KACJ;IAED,eAAe,CAAC,QAAa;QACzB,IAAI,CAAC,QAAQ,CACT,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACnG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CACvC,CAAC;KACL;IAED,YAAY,CAAC,IAAS,EAAE,QAAgB;QACpC,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAW,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE9E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC7C,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC3C,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACpC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACpC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC;QAC5B,iBAAiB,CAAC,MAAM,GAAG;YACvB,UAAU,CAAC;gBACP,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC1B,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC3C,EAAE,CAAC,CAAC,CAAC;SACT,CAAC;KACL;IAED,WAAW,CAAC,EAAmB;QAC3B,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC/B;CAEJ;AAnHY;IAAR,KAAK,EAAE;;kDAA0B;AACxB;IAAT,MAAM,EAAE;8BAAgB,YAAY;wDAA4C;;MCXxE,OAAO;CAMnB;;MCFqB,eAAe;IAIjC;QAFU,cAAS,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAExC;IAEjB,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B;IAES,OAAO,CAAC,MAAmB,EAAE,OAAqB;QACxD,OAAO;YACH,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;YAChD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;SAC/C,CAAC;KACL;IAES,YAAY;QAClB,OAAO,IAAI,WAAW,EAAE,CAAC;KAC5B;IAES,WAAW;QACjB,OAAO,IAAI,UAAU,EAAE,CAAC;KAC3B;IAES,MAAM,CAAC,OAAY;QACzB,OAAO,OAAO,CAAC;KAClB;IAES,WAAW,CAAC,KAAa;QAC/B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KAC5B;CAEJ;;MCtCqB,WAAW;CAChC;;MCCY,UAAW,SAAQ,WAAW;CAU1C;;ICFY,cAAc,GAA3B,MAAa,cAAc;IAEvB,YAA+C,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;KAAK;IAEvE,QAAQ,MAAY;CAEvB,CAAA;;YAJ2D,UAAU,uBAArD,MAAM,SAAC,kBAAkB;;AAF7B,cAAc;IAL1B,SAAS,CAAC;QACP,QAAQ,EAAE,SAAS;QACnB,4ZAAqC;;KAExC,CAAC;IAGe,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;qCAAiB,UAAU;GAFzD,cAAc,CAM1B;;ICNY,cAAc,GAA3B,MAAa,cAAe,SAAQ,eAAe;IAE/C,YAAsB,QAAqB;QACvC,KAAK,EAAE,CAAC;QADU,aAAQ,GAAR,QAAQ,CAAa;KAE1C;IAED,GAAG,CAAC,OAAmB;QACnB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE;YAC5C,gBAAgB,EAAE,KAAK;YACvB,kBAAkB,EAAE,QAAQ;YAC5B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;KACN;CAEJ,CAAA;;YAbmC,WAAW;;;AAFlC,cAAc;IAH1B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAGkC,WAAW;GAFlC,cAAc,CAe1B;;ICXY,kBAAkB,GAA/B,MAAa,kBAAmB,SAAQ,iBAAiB;IAgCrD,YACI,cAA8B,EAC9B,MAAc,EACd,cAA8B;QAE9B,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QA3BzC,YAAO,GAAW,EAAE,CAAC;QAQrB,eAAU,GAAG,SAAS,CAAC;QAEvB,YAAO,GAAG,KAAK,CAAC;QAIhB,gBAAW,GAAG,CAAC,CAAC;QAEf,kBAAa,GAAG,IAAI,YAAY,EAAW,CAAC;QAI5C,qBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;KAQrD;IAEO,kBAAkB,CAAC,IAAU;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7G,KAAK,CAAC,eAAe,CACjB,4CAA4C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,EAAE,CACzH,CAAC;YACF,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;KACf;IAEO,mBAAmB,CAAC,IAAU;QAClC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE;YACxC,KAAK,CAAC,eAAe,CACjB,gCAAgC,IAAI,CAAC,WAAW,MAAM,CACzD,CAAC;YACF,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;KACf;IAED,aAAa;;QAET,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QAC7C,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACjC,OAAO,CAAC,QAAQ,GAAG;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBAC7F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEzB,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,EAAE,CAAC;gBACzB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC;oBAC1B,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE;wBACvC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,WAA0B,CAAC,CAAC;wBACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACnC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;yBAChC;qBACJ;iBACJ,CAAC;gBAEF,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;gBAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC;SACJ,CAAC;QACF,OAAO,CAAC,KAAK,EAAE,CAAC;KACnB;IAED,eAAe;;;;;;;;;;;;;;;;;;;KAmBd;IAED,YAAY;QACR,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;CAEJ,CAAA;;YAnFuB,cAAc;YACtB,MAAM;YACE,cAAc;;AAjCuB;IAAxD,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;uDAAC;AAEvC;IAAzC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAY,UAAU;qDAAmB;AAEzE;IAAR,KAAK,EAAE;;gDAAc;AAEb;IAAR,KAAK,EAAE;;iDAAe;AAEd;IAAR,KAAK,EAAE;;mDAAsB;AAErB;IAAR,KAAK,EAAE;;uDAAqB;AAEpB;IAAR,KAAK,EAAE;;oDAAmB;AAElB;IAAR,KAAK,EAAE;;oDAAmB;AAElB;IAAR,KAAK,EAAE;;sDAAwB;AAEvB;IAAR,KAAK,EAAE;;mDAAiB;AAEhB;IAAR,KAAK,EAAE;;sDAAsB;AAErB;IAAR,KAAK,EAAE;;uDAAiB;AAEf;IAAT,MAAM,EAAE;;yDAA6C;AAE7C;IAAR,KAAK,EAAE;8BAAU,OAAO;mDAAC;AAEhB;IAAT,MAAM,EAAE;;4DAA6C;AA9B7C,kBAAkB;IAL9B,SAAS,CAAC;QACP,QAAQ,EAAE,iBAAiB;QAC3B,glEAA0C;;KAE7C,CAAC;qCAkCsB,cAAc;QACtB,MAAM;QACE,cAAc;GAnCzB,kBAAkB,CAoH9B;;;IC/GY,cAAc,sBAA3B,MAAa,cAAc;IA0EvB;QApEQ,kBAAa,GAA4B,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QAElE,eAAU,GAA4B,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QAM5D,YAAO,GAAW,EAAE,CAAC;QAErB,wBAAmB,GAAW,EAAE,CAAC;QAEjC,qBAAgB,GAAW,EAAE,CAAC;QAQ9B,aAAQ,GAAY,KAAK,CAAC;QAE1B,wBAAmB,GAAY,KAAK,CAAC;QAErC,cAAS,GAAW,GAAG,CAAC;QAExB,SAAI,GAAW,MAAM,CAAC;QAMtB,eAAU,GAAW,SAAS,CAAC;QAkB/B,UAAK,GAAY,KAAK,CAAC;QAEvB,YAAO,GAAY,KAAK,CAAC;QAEzB,0BAAqB,GAAY,IAAI,CAAC;QAEtC,cAAS,GAAY,KAAK,CAAC;QAE3B,cAAS,GAAY,KAAK,CAAC;QAI3B,cAAS,GAAY,KAAK,CAAC;QAE1B,UAAK,GAAwB,IAAI,YAAY,EAAE,CAAC;QAEhD,SAAI,GAAwB,IAAI,YAAY,EAAE,CAAC;QAgBzD,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAhBR;IAjCjB,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IACD,IAAI,KAAK,CAAC,GAAQ;QACd,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5D;aAAM;YACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5D;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAwBD,QAAQ;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,YAAY,CAAC,GAAG,CAAC,CACpB,CAAC,SAAS,CAAC,KAAK;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;SACN;KACJ;IAED,eAAe,MAAY;IAM3B,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;YACzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACnC;QACD,OAAO,KAAK,CAAC;KAChB;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;YACzB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;KAChB;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;YACzB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,CAAC,KAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;KACJ;IAED,MAAM,CAAC,KAAY;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAED,iBAAiB,CAAC,KAAoB;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;SACV;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAEtB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;YACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9B;KACJ;IAED,kBAAkB,CAAC,KAAa;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;SACV;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;CAEJ,CAAA;AA5J4D;IAAxD,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;mDAAC;AAEtC;IAA1C,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAY,WAAW;iDAAM;AAM9D;IAAR,KAAK,EAAE;;4CAAc;AAEb;IAAR,KAAK,EAAE;;6CAAe;AAEd;IAAR,KAAK,EAAE;;+CAAsB;AAErB;IAAR,KAAK,EAAE;;2DAAkC;AAEjC;IAAR,KAAK,EAAE;;wDAA+B;AAE9B;IAAR,KAAK,EAAE;;mDAAqB;AAEpB;IAAR,KAAK,EAAE;;gDAAmB;AAElB;IAAR,KAAK,EAAE;;gDAAmB;AAElB;IAAR,KAAK,EAAE;;gDAA2B;AAE1B;IAAR,KAAK,EAAE;;2DAAsC;AAErC;IAAR,KAAK,EAAE;;iDAAyB;AAExB;IAAR,KAAK,EAAE;;4CAAuB;AAEtB;IAAR,KAAK,EAAE;;2CAAK;AAEJ;IAAR,KAAK,EAAE;;2CAAK;AAEJ;IAAR,KAAK,EAAE;;kDAAgC;AAExB;IAAf,KAAK,CAAC,OAAO,CAAC;;2CAAU;AAchB;IAAR,KAAK,EAAE;;4CAAiC;AAEhC;IAAR,KAAK,EAAE;;6CAAwB;AAEvB;IAAR,KAAK,EAAE;;+CAA0B;AAEzB;IAAR,KAAK,EAAE;;6DAAuC;AAEtC;IAAR,KAAK,EAAE;;iDAA4B;AAE3B;IAAR,KAAK,EAAE;;iDAA4B;AAE3B;IAAR,KAAK,EAAE;;gDAAe;AAEd;IAAR,KAAK,EAAE;;iDAA4B;AAE1B;IAAT,MAAM,EAAE;8BAAQ,YAAY;6CAA6B;AAEhD;IAAT,MAAM,EAAE;8BAAO,YAAY;4CAA6B;AAxEhD,cAAc;IAZ1B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,u9FAAqC;QAErC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA6B,gBAAc,CAAC;gBACpE,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;;GACW,cAAc,CA8J1B;;IC1KY,uBAAuB,GAApC,MAAa,uBAAuB;IAIlC,iBAAiB;IAEjB,QAAQ;KACP;CAEF,CAAA;AAPU;IAAR,KAAK,EAAE;;wDAAiB;AAFd,uBAAuB;IALnC,SAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,2vMAA+C;;KAEhD,CAAC;;GACW,uBAAuB,CASnC;;ICTY,gBAAgB,GAA7B,MAAa,gBAAgB;IAE3B,QAAQ;KACP;CAEF,CAAA;AALY,gBAAgB;IAL5B,SAAS,CAAC;QACT,QAAQ,EAAE,cAAc;QACxB,yMAAuC;;KAExC,CAAC;GACW,gBAAgB,CAK5B;;ACZD,SAAS,WAAW;IAChB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,UAAU;QACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QACpG,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEnF,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEzC,OAAO,SAAS,CAAC;KACpB,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,MAAM;QACxB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;KAC3D,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACrB,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;KACxE,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,EAAE;QACjB,OAAO,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtD,CAAC;IAEF,OAAO;QACH,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU;YACrB,IAAI,EAAE,EAAE;gBACJ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;aAC7D;SACJ;QACD,KAAK,EAAE,CAAC,EAAE;YACN,IAAI,EAAE,EAAE;gBACJ,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;aACxB;SACJ;QACD,UAAU,EAAE,MAAM,gBAAgB,EAAE;KACvC,CAAC;CACL;AAED,oBAAe,WAAW,EAAE,CAAC;;IClChB,YAAY,GAAzB,MAAa,YAAY;IAAzB;QAEI,WAAM,GAAY,KAAK,CAAC;QAExB,mBAAc,GAAmB,EAAE,CAAC;QAE7B,gBAAW,GAAgB;YAC9B,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,YAAY;YACtB,EAAE,EAAE,WAAW;YACf,GAAG,EAAE,sBAAsB;YAC3B,EAAE,EAAE,WAAW;YACf,GAAG,EAAE,sBAAsB;YAC3B,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,cAAc;YACzB,UAAU,EAAE,mBAAmB;YAC/B,SAAS,EAAE,iBAAiB;YAC5B,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,yBAAyB;YACnC,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;YAC9G,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YAChE,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACvD,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;YACzI,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YACrG,UAAU,EAAE,YAAY;YACxB,cAAc,EAAE,CAAC;YACjB,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,qBAAqB;YACjC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,OAAO;YACf,cAAc,EAAE,kBAAkB;SACrC,CAAC;QAEF,WAAM,GAAuE;YACzE,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;SACb,CAAC;QAEM,sBAAiB,GAAiB,IAAI,OAAO,EAAO,CAAC;QAE7D,wBAAmB,GAAoB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAUhF;IARG,cAAc,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;KAChC;IAED,cAAc,CAAC,KAAkB;QAC7B,IAAI,CAAC,WAAW,mCAAQ,IAAI,CAAC,WAAW,GAAK,KAAK,CAAE,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACjD;CACJ,CAAA;;AAvEY,YAAY;IADxB,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;GACtB,YAAY,CAuExB;;ICxEY,kBAAkB,GAA/B,MAAa,kBAAkB;IAA/B;QAEY,gBAAW,GAAiB,IAAI,OAAO,EAAqC,CAAC;QAErF,oBAAe,GAAoB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAOtE;IALG,GAAG,CAAC,KAAU;QACV,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;KACJ;CACJ,CAAA;;AAXY,kBAAkB;IAD9B,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;GACtB,kBAAkB,CAW9B;;ACjBD;;;;;;;;;AASA,MAAa,UAAU;IAUZ,OAAO,QAAQ,CAAC,OAAY,EAAE,SAAiB;QAClD,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACpC;aAAM;YACH,OAAO,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;SACxC;KACJ;IAEM,OAAO,kBAAkB,CAAC,OAAY,EAAE,SAAiB;QAC5D,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,MAAM,GAAa,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC;SAEJ;aAAM;YACH,MAAM,MAAM,GAAa,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,OAAO,CAAC,SAAS,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACxC;SACJ;KACJ;IAEM,OAAO,WAAW,CAAC,OAAY,EAAE,SAAiB;QACrD,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACvC;aAAM;YACH,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;SAChI;KACJ;IAEM,OAAO,QAAQ,CAAC,OAAY,EAAE,SAAiB;QAClD,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAChD;aAAM;YACH,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAClF;KACJ;IAEM,OAAO,QAAQ,CAAC,OAAY;QAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,KAAK;YAC3E,OAAO,KAAK,KAAK,OAAO,CAAC;SAC5B,CAAC,CAAC;KACN;IAEM,OAAO,IAAI,CAAC,OAAY,EAAE,QAAgB;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzD;IAEM,OAAO,UAAU,CAAC,OAAY,EAAE,QAAgB;QACnD,IAAI,OAAO,EAAE;YACT,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,KAAK,CAAC,OAAY;QAC5B,MAAM,QAAQ,GAAQ,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QACpD,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;YAE9C,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;gBACxB,OAAO,GAAG,CAAC;aACd;;YAED,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE;gBAC3B,GAAG,EAAE,CAAC;aACT;SACJ;QACD,OAAO,CAAC,CAAC,CAAC;KACb;IAEM,OAAO,gBAAgB,CAAC,OAAY,EAAE,aAAqB;QAC9D,MAAM,QAAQ,GAAQ,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;QAC9E,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;YAE9C,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;gBACxB,OAAO,GAAG,CAAC;aACd;;YAED,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE;gBAC9F,GAAG,EAAE,CAAC;aACT;SACJ;QACD,OAAO,CAAC,CAAC,CAAC;KACb;IAEM,OAAO,gBAAgB,CAAC,OAAY,EAAE,MAAW;QACpD,MAAM,iBAAiB,GAAQ,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9J,MAAM,YAAY,GAAQ,MAAM,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAQ,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,GAAW,EAAE,IAAY,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,GAAG,iBAAiB,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;YAChF,GAAG,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YACzC,IAAI,YAAY,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;gBAC5B,GAAG,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC;aAC/B;SACJ;aAAM;YACH,GAAG,GAAG,YAAY,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;SACzC;QAED,IAAI,iBAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE;;YAE1C,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;SACjC;aAAM,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE;;YAEvE,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;SAC9E;aAAM;;YAEH,IAAI,GAAG,CAAC,CAAC;SACZ;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KACpC;IAEM,OAAO,gBAAgB,CAAC,OAAY,EAAE,MAAW,EAAE,eAAwB,IAAI;QAClF,MAAM,iBAAiB,GAAQ,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9J,MAAM,kBAAkB,GAAQ,iBAAiB,CAAC,MAAM,CAAC;QACzD,MAAM,iBAAiB,GAAQ,iBAAiB,CAAC,KAAK,CAAC;QACvD,MAAM,iBAAiB,GAAQ,MAAM,CAAC,YAAY,CAAC;QACnD,MAAM,gBAAgB,GAAQ,MAAM,CAAC,WAAW,CAAC;QACjD,MAAM,YAAY,GAAQ,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,eAAe,GAAW,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,gBAAgB,GAAW,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,GAAG,EAAE,IAAI,CAAC;QAEd,IAAI,YAAY,CAAC,GAAG,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC7E,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,eAAe,GAAG,kBAAkB,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YAEzC,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,GAAG,GAAG,eAAe,CAAC;aACzB;SACJ;aAAM;YACH,IAAI,YAAY,EAAE;gBACd,GAAG,GAAG,iBAAiB,GAAG,YAAY,CAAC,GAAG,GAAG,eAAe,CAAC;aAChE;YACD,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;SACzC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,iBAAiB,GAAG,QAAQ,CAAC,KAAK,EAAE;YACxD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;SACnG;aAAM;YACH,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,gBAAgB,CAAC;SAC/C;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KACpC;IAED,OAAO,UAAU,CAAC,OAAY,EAAE,UAAe,EAAE;QAC7C,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC/H;IAED,OAAO,oBAAoB,CAAC,OAAY;QACpC,MAAM,iBAAiB,GAAU,EAAE,CAAC;QAEpC,IAAI,OAAO,EAAE;YACT,MAAM,OAAO,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,aAAa,GAAG,eAAe,CAAC;YACtC,MAAM,aAAa,GAAG,CAAC,IAAS;gBAC5B,MAAM,gBAAgB,GAAwB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrF,OAAO,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;uBACjE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;uBAClE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;aAC7E,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,eAAe,GAAQ,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACxF,IAAI,eAAe,EAAE;oBACjB,MAAM,SAAS,GAAQ,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;wBAC9B,MAAM,EAAE,GAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;wBAClD,IAAI,EAAE,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;4BACzB,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBAC9B;qBACJ;iBACJ;gBAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;oBAChD,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAClC;aACJ;SACJ;QAED,OAAO,iBAAiB,CAAC;KAC5B;IAEM,OAAO,2BAA2B,CAAC,OAAY;QAClD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,MAAM,aAAa,GAAQ,OAAO,CAAC,YAAY,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO,aAAa,CAAC;KACxB;IAEM,OAAO,0BAA0B,CAAC,OAAY;QACjD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,MAAM,YAAY,GAAQ,OAAO,CAAC,WAAW,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO,YAAY,CAAC;KACvB;IAEM,OAAO,0BAA0B,CAAC,OAAY;QACjD,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO,UAAU,CAAC;KACrB;IAEM,OAAO,YAAY,CAAC,SAAc,EAAE,IAAS;QAChD,MAAM,cAAc,GAAW,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAW,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAW,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAW,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAQ,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAQ,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnD,MAAM,MAAM,GAAW,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC;QACzI,MAAM,MAAM,GAAQ,SAAS,CAAC,SAAS,CAAC;QACxC,MAAM,aAAa,GAAQ,SAAS,CAAC,YAAY,CAAC;QAClD,MAAM,UAAU,GAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,MAAM,GAAG,CAAC,EAAE;YACZ,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;SACzC;aAAM,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,aAAa,EAAE;YAC9C,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;SACtE;KACJ;IAEM,OAAO,MAAM,CAAC,OAAY,EAAE,QAAgB;QAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAE1B,IAAI,IAAI,GAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAW,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG;YACT,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,QAAQ,CAAC;YAC9F,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAEnB,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;;gBAEd,CAAC,MAAM,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aACzF;SACJ,CAAC;QAEF,IAAI,EAAE,CAAC;KACV;IAEM,OAAO,OAAO,CAAC,OAAY,EAAE,EAAO;QACvC,IAAI,OAAO,GAAW,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAW,QAAQ,GAAG,QAAQ,CAAC;QAExC,MAAM,MAAM,GAAG,WAAW,CAAC;YACvB,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;YAExB,IAAI,OAAO,IAAI,CAAC,EAAE;gBACd,OAAO,GAAG,CAAC,CAAC;gBACZ,aAAa,CAAC,MAAM,CAAC,CAAC;aACzB;YAED,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SACnC,EAAE,QAAQ,CAAC,CAAC;KAChB;IAEM,OAAO,kBAAkB;QAC5B,MAAM,GAAG,GAAgB,QAAQ,CAAC,eAAe,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;KACvE;IAEM,OAAO,mBAAmB;QAC7B,MAAM,GAAG,GAAgB,QAAQ,CAAC,eAAe,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;KACzE;IAEM,OAAO,OAAO,CAAC,OAAY,EAAE,QAAgB;QAChD,MAAM,CAAC,GAAY,OAAO,CAAC,SAAS,CAAC;QACrC,MAAM,CAAC,GAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC;YACtH,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACrE,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACpC;IAEM,OAAO,aAAa,CAAC,EAAO,EAAE,MAAY;QAC7C,IAAI,KAAK,GAAQ,EAAE,CAAC,WAAW,CAAC;QAEhC,IAAI,MAAM,EAAE;YACR,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACzE;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,oBAAoB,CAAC,EAAO;QACtC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KACzE;IAEM,OAAO,mBAAmB,CAAC,EAAO;QACrC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KACvE;IAEM,OAAO,UAAU,CAAC,EAAO;QAC5B,IAAI,KAAK,GAAQ,EAAE,CAAC,WAAW,CAAC;QAChC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,KAAK,CAAC,EAAO;QACvB,IAAI,KAAK,GAAQ,EAAE,CAAC,WAAW,CAAC;QAChC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,cAAc,CAAC,EAAO;QAChC,IAAI,MAAM,GAAQ,EAAE,CAAC,YAAY,CAAC;QAClC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,cAAc,CAAC,EAAO,EAAE,MAAY;QAC9C,IAAI,MAAM,GAAQ,EAAE,CAAC,YAAY,CAAC;QAElC,IAAI,MAAM,EAAE;YACR,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SAC1E;QAED,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,SAAS,CAAC,EAAO;QAC3B,IAAI,MAAM,GAAQ,EAAE,CAAC,YAAY,CAAC;QAClC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAElJ,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,QAAQ,CAAC,EAAO;QAC1B,IAAI,KAAK,GAAQ,EAAE,CAAC,WAAW,CAAC;QAChC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEjJ,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,WAAW;QAErB,MAAM,GAAG,GAAG,MAAM,CAAC;QACnB,MAAM,CAAC,GAAa,QAAQ,CAAC;QAC7B,MAAM,CAAC,GAAgB,CAAC,CAAC,eAAe,CAAC;QACzC,MAAM,CAAC,GAAoB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAW,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;QACnE,MAAM,CAAC,GAAW,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;QAEtE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAClC;IAEM,OAAO,SAAS,CAAC,EAAO;QAC3B,MAAM,IAAI,GAAQ,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAC7C,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YAC1G,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;SACjH,CAAC;KACL;IAEM,OAAO,kBAAkB,CAAC,OAAY,EAAE,kBAAuB;QAClE,MAAM,UAAU,GAAQ,OAAO,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SAC3D;QACD,OAAO,UAAU,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAC/D;IAEM,OAAO,YAAY;QACtB,OAAO,SAAS,CAAC,SAAS,CAAC;KAC9B;IAEM,OAAO,IAAI;QACd,MAAM,EAAE,GAAW,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAE9C,MAAM,IAAI,GAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,CAAC,EAAE;;YAEV,OAAO,IAAI,CAAC;SACf;QAED,MAAM,OAAO,GAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,OAAO,GAAG,CAAC,EAAE;;YAEb,MAAM,EAAE,GAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;SACf;QAED,MAAM,IAAI,GAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,CAAC,EAAE;;YAEV,OAAO,IAAI,CAAC;SACf;;QAGD,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,KAAK;QACf,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAC9E;IAEM,OAAO,SAAS;QACnB,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACjD;IAEM,OAAO,aAAa;QACvB,QAAQ,CAAC,cAAc,IAAI,MAAM,MAAM,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE;KACzE;IAEM,OAAO,WAAW,CAAC,OAAY,EAAE,MAAW;QAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/B;aAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE;YAC7C,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,SAAS,OAAO,EAAE,CAAC,CAAC;SACtE;KACJ;IAEM,OAAO,WAAW,CAAC,OAAY,EAAE,MAAW;QAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/B;aAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE;YAC7C,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,gBAAgB,MAAM,EAAE,CAAC,CAAC;SAC9E;KACJ;IAEM,OAAO,aAAa,CAAC,OAAgB;QACxC,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC3C;aAAM;YACH,OAAO,CAAC,MAAM,EAAE,CAAC;SACpB;KACJ;IAEM,OAAO,SAAS,CAAC,GAAQ;QAC5B,QACI,OAAO,WAAW,KAAK,QAAQ;cACzB,GAAG,YAAY,WAAW;cAC1B,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAChH;KACL;IAEM,OAAO,uBAAuB,CAAC,EAAgB;QAClD,IAAI,EAAE,EAAE;YACJ,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxD,QAAQ,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;SACrH;aAAM;YACH,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE;gBACxC,OAAO,IAAI,CAAC,wBAAwB,CAAC;aACxC;YAED,MAAM,SAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChE,SAAS,CAAC,SAAS,GAAG,qBAAqB,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErC,MAAM,cAAc,GAAW,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC;YAE/C,OAAO,cAAc,CAAC;SACzB;KACJ;IAEM,OAAO,wBAAwB;QAClC,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE;YACzC,OAAO,IAAI,CAAC,yBAAyB,CAAC;SACzC;QAED,MAAM,SAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChE,SAAS,CAAC,SAAS,GAAG,qBAAqB,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErC,MAAM,eAAe,GAAW,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAChF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC;QAEhD,OAAO,eAAe,CAAC;KAC1B;IAEM,OAAO,mBAAmB,CAAC,OAAY,EAAE,UAAkB,EAAE,IAAY;QAC3E,OAAe,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACrD;IAEM,OAAO,cAAc;QACxB,IAAI,MAAM,CAAC,YAAY,EAAE;YACrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;gBAC7B,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;aACjC;iBAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzJ,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;aAC3C;SACJ;aAAM,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;YAC7D,IAAI;gBACA,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;;aAEf;SACJ;KACJ;IAEM,OAAO,UAAU;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,MAAM,OAAO,GAAoC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAElB,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;aAC7C;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;aACjC;iBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;aACjC;SACJ;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAEM,OAAO,gBAAgB;QAC1B,MAAM,EAAE,GAAW,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,KAAK,GAA4B,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnE,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,oCAAoC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,EAAE,CAAC;QAEP,OAAO;YACH,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;SAC3B,CAAC;KACL;IAEM,OAAO,SAAS,CAAC,KAAU;QAC9B,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAClC;aAAM;YACH,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;SACtF;KACJ;IAEM,OAAO,QAAQ,CAAC,OAAoB;QACvC,OAAO,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;KACxC;IAEM,OAAO,oBAAoB,CAAC,OAAoB;QACnD,MAAM,iBAAiB,GAAU,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;;;;qIAImE,CAC5H,CAAC;QAEF,MAAM,wBAAwB,GAAU,EAAE,CAAC;QAC3C,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE;;YAE9C,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,OAAO,IAAI,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,UAAU,IAAI,QAAQ,EAAE;gBACnH,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACnD;SACJ;QACD,OAAO,wBAAwB,CAAC;KACnC;IAED,OAAO,cAAc;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;KACxB;;AAxmBa,iBAAM,GAAW,GAAG,CAAC;AAEpB,mCAAwB,GAAW,IAAI,CAAC;AAExC,oCAAyB,GAAW,IAAI,CAAC;;MCb/C,6BAA6B;IAQtC,YAAY,OAAY,EAAE,WAAgB,SAAS;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC5B;IAED,kBAAkB;QACd,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvE;KACJ;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1E;SACJ;KACJ;IAED,OAAO;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;CACJ;;ICeY,qBAAqB,GAAlC,MAAa,qBAAqB;IA4D9B,YACW,EAAc,EACd,QAAmB,EACnB,EAAqB,EACpB,IAAY,EACb,MAAoB,EACpB,cAAkC;QALlC,OAAE,GAAF,EAAE,CAAY;QACd,aAAQ,GAAR,QAAQ,CAAW;QACnB,OAAE,GAAF,EAAE,CAAmB;QACpB,SAAI,GAAJ,IAAI,CAAQ;QACb,WAAM,GAAN,MAAM,CAAc;QACpB,mBAAc,GAAd,cAAc,CAAoB;QAhEpC,gBAAW,GAAY,IAAI,CAAC;QAI5B,kBAAa,GAAW,EAAE,CAAC;QAM3B,aAAQ,GAAQ,MAAM,CAAC;QAEvB,eAAU,GAAY,IAAI,CAAC;QAI3B,eAAU,GAAW,CAAC,CAAC;QAEvB,gBAAW,GAAY,IAAI,CAAC;QAE5B,0BAAqB,GAAW,iCAAiC,CAAC;QAElE,0BAAqB,GAAW,YAAY,CAAC;QAE5C,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAE/C,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAQzD,mBAAc,GAAY,KAAK,CAAC;QAEhC,WAAM,GAAY,KAAK,CAAC;QAExB,iCAA4B,GAAY,KAAK,CAAC;QAE9C,cAAS,GAAY,KAAK,CAAC;KAyBtB;IAEL,QAAQ;KACP;IAED,kBAAkB;KACjB;IAED,yBAAyB;QACrB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,WAAW,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACxB,MAAM,aAAa,GAA2B,UAAU,CAAC,KAAK,EAAE,GAAG,YAAY,GAAG,OAAO,CAAC;gBAC1F,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,UAAU,CAAC;gBAEvF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC,KAAK;oBACnF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;wBAClI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;4BACV,IAAI,CAAC,IAAI,EAAE,CAAC;yBACf,CAAC,CAAC;qBACN;oBAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;iBAC1B,CAAC,CAAC;aACN,CAAC,CAAC;SACN;KACJ;IAED,2BAA2B;QACvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;KACJ;IAED,MAAM,CAAC,KAAU,EAAE,MAAY;QAC3B,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACnC,OAAO;SACV;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;gBACtC,IAAI,CAAC,eAAe,GAAG;oBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;iBACpE,CAAC;aACL;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC5B;KACJ;IAED,IAAI,CAAC,KAAU,EAAE,MAAY;QACzB,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACnC,OAAO;SACV;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;IAED,cAAc;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;IAED,gBAAgB,CAAC,KAAU,EAAE,MAAW;QACpC,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;KACjG;IAED,eAAe;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;gBAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC7C;iBAAM;gBACH,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACzD;SACJ;KACJ;IAED,aAAa;QACT,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrD;KACJ;IAED,KAAK;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjBA,aAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC5F;QAED,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,eAAe,GAA6B,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,YAAY,GAA6B,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjF,IAAI,SAAS,GAAW,CAAC,CAAC;QAE1B,IAAI,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE;YAC1C,SAAS,GAAG,YAAY,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;SACxD;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;QAEzE,IAAI,eAAe,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE;YACxC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;SAChE;KACJ;IAED,gBAAgB,CAAC,KAAqB;QAClC,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;YAED,IAAI,CAAC,oBAAoB,GAAG,CAAC;gBACzB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;oBACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;iBACzB;aACJ,CAAC;YAEF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACvG;QAED,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;KAC5C;IAED,cAAc,CAAC,KAAqB;QAChC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,MAAM,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,EAAE;oBACtB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;iBAC/B;gBAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;oBAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;iBAC1C;gBACD,MAAM;aACT;YACD,KAAK,OAAO,EAAE;gBACV,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjBA,aAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;oBAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;iBAC1C;gBAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM;aACT;SACJ;QAED,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;KAC7C;IAED,KAAK;QACD,MAAM,SAAS,GAAQ,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC5E,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACxB,UAAU,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;aAC1C,CAAC,CAAC;SACN;KACJ;IAED,IAAI;QACA,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACnC,OAAO;SACV;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,YAAY,CAAC,KAAU;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE;YACpD,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;KACJ;IAED,0BAA0B;QACtB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAClE;IAED,4BAA4B;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChE,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;aACJ,CAAC,CAAC;SACN;QAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAC7C;KACJ;IAED,kBAAkB;QACd,IAAI,CAAE,IAAI,CAAC,EAAc,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,WAAW;QACP,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACnCA,aAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IAAI,CAAE,IAAI,CAAC,EAAc,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;SAC1C;KACJ;CAEJ,CAAA;;YArRkB,UAAU;YACJ,SAAS;YACf,iBAAiB;YACd,MAAM;YACL,YAAY;YACJ,kBAAkB;;AAhEpC;IAAR,KAAK,EAAE;;0DAA6B;AAE5B;IAAR,KAAK,EAAE;;4DAAwB;AAEvB;IAAR,KAAK,EAAE;;4DAA4B;AAE3B;IAAR,KAAK,EAAE;;oDAAY;AAEX;IAAR,KAAK,EAAE;;yDAAoB;AAEnB;IAAR,KAAK,EAAE;;uDAAwB;AAEvB;IAAR,KAAK,EAAE;;yDAA4B;AAE3B;IAAR,KAAK,EAAE;;6DAAwB;AAEvB;IAAR,KAAK,EAAE;;yDAAwB;AAEvB;IAAR,KAAK,EAAE;;0DAA6B;AAE5B;IAAR,KAAK,EAAE;;oEAAmE;AAElE;IAAR,KAAK,EAAE;;oEAA8C;AAE5C;IAAT,MAAM,EAAE;8BAAS,YAAY;qDAA2B;AAE/C;IAAT,MAAM,EAAE;8BAAS,YAAY;qDAA2B;AAEN;IAAlD,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAoB,WAAW;gEAAM;AAErC;IAAjD,YAAY,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAmB,WAAW;+DAAM;AAhC5E,qBAAqB;IAzBjC,SAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,oxCAA6C;QAE7C,UAAU,EAAE;YACR,OAAO,CAAC,WAAW,EAAE;gBACjB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;oBAChB,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,CAAC;iBACb,CAAC,CAAC;gBACH,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;oBACjB,OAAO,EAAE,CAAC;iBACb,CAAC,CAAC;gBACH,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;oBAChB,SAAS,EAAE,eAAe;oBAC1B,OAAO,EAAE,CAAC;iBACb,CAAC,CAAC;gBACH,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;gBAC/D,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;aACnE,CAAC;SACL;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;;KACpC,CAAC;qCA8DiB,UAAU;QACJ,SAAS;QACf,iBAAiB;QACd,MAAM;QACL,YAAY;QACJ,kBAAkB;GAlEpC,qBAAqB,CAkVjC;;MCzXY,UAAU;IAIrB,YAAmB,OAAmB,EACnB,OAAuB,EACvB,IAAO;QAFP,YAAO,GAAP,OAAO,CAAY;QACnB,YAAO,GAAP,OAAO,CAAgB;QACvB,SAAI,GAAJ,IAAI,CAAG;QALlB,gBAAW,GAAG,IAAI,OAAO,EAAwB,CAAC;QAC1D,iBAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAK7C,OAAO,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;SACpC,CAAC,CAAC;KACJ;IAED,KAAK,CAAC,IAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC5B;IAEO,MAAM,CAAC,IAA+B,EAAE,IAAQ;QACtD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;CAEF;;IC9BY,gBAAgB,GAA7B,MAAa,gBAAgB;IAQ3B,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAN1C,iBAAY,GAAsC,WAAW,CAAC;KAO7D;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAEvC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,OAAO,YAAY,WAAW,EAAE;YACvC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBAClD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC3B,CAAC;SACH;KACF;CAEF,CAAA;;YAnBiC,UAAU;;AAR/B,gBAAgB;IAJ5B,SAAS,CAAC;QACT,2aAAuC;;KAExC,CAAC;qCASgC,UAAU;GAR/B,gBAAgB,CA2B5B;;;ICnBY,yBAAyB,iCAAtC,MAAa,yBAAyB;IAAtC;QAQa,aAAQ,GAAG,aAAa,CAAC;QAEzB,aAAQ,GAAG,EAAE,CAAC;QAWvB,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAwB5B;IAjCG,QAAQ;KACP;IAED,gBAAgB,CAAC,MAAW;QACxB,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxE;IAMD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;CAEJ,CAAA;AA7CY;IAAR,KAAK,EAAE;;wDAAe;AAEd;IAAR,KAAK,EAAE;;2DAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAmB;AAElB;IAAR,KAAK,EAAE;;2DAA0B;AAEzB;IAAR,KAAK,EAAE;;2DAAe;AAEP;IAAf,KAAK,CAAC,OAAO,CAAC;;sDAAU;AAZhB,yBAAyB;IAZrC,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,ifAAkD;QAElD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,2BAAyB,CAAC;gBACxD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;GACW,yBAAyB,CA+CrC;;MC9DY,mBAAmB;IAErB,OAAO,QAAQ,CAAC,aAAqB;QACxC,MAAM,SAAS,GAAU,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;;YAEhC,MAAM,EAAE,GAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnF,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtB;QACD,OAAO,GAAG,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;KACpD;CAEJ;;;ICSY,uBAAuB,+BAApC,MAAa,uBAAuB;IA0BhC,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAxBxD,aAAQ,GAAU,EAAE,CAAC;QAQF,eAAU,GAAY,KAAK,CAAC;QAE/B,YAAO,GAAY,KAAK,CAAC;QAY/B,oBAAe,GAAyB,IAAI,YAAY,EAAU,CAAC;QAsB7E,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAtBoC;IAE7D,QAAQ;QACJ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACnC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,UAAU,GAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChF,IAAI,CAAC,UAAU,EAAE;oBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpC;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC7B;QACD,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;IAMD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAE,KAAK,EAAkB;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;IAED,iBAAiB,CAAC,GAAW;QACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;KAC/F;IAED,KAAK,CAAC,GAAW;QACb,OAAO,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC5C;CAEJ,CAAA;;YA1D0C,iBAAiB;;AAtB/C;IAAR,KAAK,EAAE;;sDAAe;AAEd;IAAR,KAAK,EAAE;;yDAAmB;AAElB;IAAR,KAAK,EAAE;;yDAAmB;AAER;IAAlB,KAAK,CAAC,UAAU,CAAC;;2DAA6B;AAE/B;IAAf,KAAK,CAAC,OAAO,CAAC;;wDAA0B;AAEhC;IAAR,KAAK,EAAE;;qDAAM;AAEE;IAAf,KAAK,CAAC,OAAO,CAAC;;oDAAU;AAEhB;IAAR,KAAK,EAAE;;qDAAkC;AAEjC;IAAR,KAAK,EAAE;;6DAAwB;AAEvB;IAAR,KAAK,EAAE;;2DAAsB;AAEpB;IAAT,MAAM,EAAE;8BAAkB,YAAY;gEAAsC;AAxBpE,uBAAuB;IAdnC,SAAS,CAAC;QACP,QAAQ,EAAE,uBAAuB;QACjC,klDAAgD;QAEhD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAuB,CAAC;gBACtD,KAAK,EAAE,IAAI;aACd;SACJ;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;;KACpC,CAAC;qCA2ByC,iBAAiB;GA1B/C,uBAAuB,CAoFnC;;;ICpFY,qBAAqB,6BAAlC,MAAa,qBAAqB;IAsC9B,YAAmB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QA5B/B,aAAQ,GAAW,CAAC,CAAC;QAgBpB,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEtD,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAM3D,kBAAa,GAAa,SAAS,CAAC;QAEpC,mBAAc,GAAa,SAAS,CAAC;KAEQ;IAE7C,QAAQ,MAAY;IAEpB,gBAAgB,CAAC,MAAW;QACxB,OAAO,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;KACpI;IAED,cAAc,CAAC,MAAW;QACtB,OAAO,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3J;IAED,gBAAgB,CAAC,MAAW;QACxB,OAAO,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;KACrJ;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAED,WAAW,CAAC,KAAU,EAAE,MAAW,EAAE,KAAa;QAC9C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;YAChD,OAAO;SACV;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACzB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aAC7B;iBAAM;gBACH,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;aACrE;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;SACN;aAAM;YACH,MAAM,KAAK,GAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACf,aAAa,EAAE,KAAK;oBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;iBACpB,CAAC,CAAC;aACN;SACJ;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACpB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;KACN;IAED,MAAM;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,YAAY,CAAC,MAAW;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7G;IAED,UAAU,CAAC,MAAW;QAClB,IAAI,QAAQ,GAAY,KAAK,CAAC;QAC9B,MAAM,WAAW,GAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;oBAC1B,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACnD,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACT;iBACJ;aACJ;SACJ;aAAM;YACH,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACvF;QAED,OAAO,QAAQ,CAAC;KACnB;CAEJ,CAAA;;YArG0B,iBAAiB;;AApC/B;IAAR,KAAK,EAAE;;sDAAgB;AAEf;IAAR,KAAK,EAAE;;uDAAkB;AAEjB;IAAR,KAAK,EAAE;;0DAAqB;AAEpB;IAAR,KAAK,EAAE;;6DAAwB;AAEvB;IAAR,KAAK,EAAE;;uDAAsB;AAErB;IAAR,KAAK,EAAE;;uDAAmB;AAElB;IAAR,KAAK,EAAE;;oDAAe;AAEd;IAAR,KAAK,EAAE;;uDAAmB;AAElB;IAAR,KAAK,EAAE;;yDAAoB;AAEnB;IAAR,KAAK,EAAE;;6DAAwB;AAEvB;IAAR,KAAK,EAAE;;uDAAmB;AAElB;IAAR,KAAK,EAAE;;sDAAiB;AAEf;IAAT,MAAM,EAAE;8BAAgB,YAAY;4DAA2B;AAEtD;IAAT,MAAM,EAAE;8BAAW,YAAY;uDAA2B;AAEb;IAA7C,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;2DAAc;AA9BlD,qBAAqB;IAhBjC,SAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,0yDAA6C;QAE7C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAqB,CAAC;gBACpD,KAAK,EAAE,IAAI;aACd;SACJ;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;;KACJ,CAAC;qCAuCyB,iBAAiB;GAtC/B,qBAAqB,CA2IjC;;;ICzIY,0BAA0B,kCAAvC,MAAa,0BAA0B;IAuHnC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QArHzD,oBAAe,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAInD,iBAAY,GAAW,CAAC,CAAC;QAEzB,kBAAa,GAAmB,EAAE,CAAC;QAEnC,cAAS,GAAY,KAAK,CAAC;QAE3B,6BAAwB,GAAY,KAAK,CAAC;QAE1C,mCAA8B,GAAY,KAAK,CAAC;QAMxC,aAAQ,GAAQ,EAAE,CAAC;QAQlB,cAAS,GAAW,OAAO,CAAC;QAkB5B,aAAQ,GAAY,KAAK,CAAC;;QAM1B,oBAAe,GAAY,KAAK,CAAC;;QAGjC,cAAS,GAAY,KAAK,CAAC;QAE3B,iBAAY,GAAW,IAAI,CAAC;;QAG5B,iBAAY,GAAQ,EAAE,CAAC;QAEvB,eAAU,GAAW,SAAS,CAAC;QAI/B,aAAQ,GAAW,aAAa,CAAC;QAEjC,aAAQ,GAAW,IAAI,CAAC;QAExB,eAAU,GAAY,IAAI,CAAC;QAE3B,mBAAc,GAAY,IAAI,CAAC;QA8B9B,gBAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;QACzD,oBAAe,GAAoB,IAAI,YAAY,EAAK,CAAC;QACzD,iBAAY,GAAyB,IAAI,YAAY,EAAU,CAAC;QAChE,cAAS,GAAsB,IAAI,YAAY,EAAO,CAAC;QACvD,iBAAY,GAA0B,IAAI,YAAY,EAAW,CAAC;QAW5E,kBAAa,GAAuB,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAsC7F,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAtC+B;IAzCrD,IAAI,cAAc,CAAC,GAAQ;QAChC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC9B;IACD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAEQ,IAAI,KAAK,CAAC,GAAQ;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACjC;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAEQ,IAAI,OAAO,CAAC,GAAQ;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAQD,IAAI,oBAAoB;QACpB,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjC,OAAO,CAAC,CAAC;SACZ;;QAGD,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;KACpC;IAMD,QAAQ;;;;;QAKJ,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,eAAe,CAAC,YAAY;aAC5B,IAAI,CACD,GAAG,CAAC,CAAC,KAAa,KAAa,KAAK,CAAC,EACrC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,oBAAoB,EAAE,CACzB;aACA,SAAS,CAAC,CAAC,KAAa;YACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC9B,CAAC,CACT,CAAC;KACL;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE;YACrE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACjC;qBAAM;oBACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC7B;aACJ;SACJ;KACJ;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACxD;IAMD,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,SAAS,CAAC,EAAiB,EAAE,EAAiB;QAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACtC;IAED,gBAAgB,CAAC,MAAW;QACxB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAClC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAED,QAAQ,CAAC,MAAW,EAAE,QAAgB;QAClC,MAAM,UAAU,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,GAAQ,MAAM,CAAC;QAExB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,OAAO,KAAK,CAAC;aAChB;SACJ;KACJ;IAED,iBAAiB,CAAC,MAAS;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;IAED,cAAc,CAAC,KAAa;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aACpC;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAElB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACjC;KACJ;IAEK,iBAAiB,CAAC,gBAAyB,EAAE,WAAoB,IAAI;;YACvE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,OAAO;aACV;YACD,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO;aACV;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACrC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACxE,OAAO;aACV;YACD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,OAAO;aACV;YACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBAC3G,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACjD,OAAO;iBACV;aACJ;YAED,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;YAElD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,IAAI,UAAU,GAAW,CAAC,CAAC;YAC3B,IAAI,gBAAgB,EAAE;gBAClB,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;aACzE;iBAAM;gBACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACrB;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;iBAC9E,IAAI,CAAC,IAAI;gBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBAEjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACxE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;wBACvC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACvD,MAAM,KAAK,GAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACjH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBACtC;qBACJ;oBAED,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1D;gBAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAClD,MAAM,WAAW,GAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChF,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;wBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACjC;iBACJ;gBAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1B,CAAC;iBACD,OAAO,CAAC;gBACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1B,CAAC,CAAC;SACV;KAAA;IAED,oBAAoB,CAAC,SAAkB;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxE,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACtE;iBAAM;gBACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aACxE;YAED,IAAI,CAAC,iCAAiC,EAAE,CAAC;YAEzC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC1C;KACJ;IAED,iCAAiC;QAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACrD,MAAM,QAAQ,GAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChG,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,8BAA8B,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEjH,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;SACJ;KACJ;IAED,qBAAqB;QACjB,IAAI,UAAU,GAAY,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5C,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;SACxE;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACzD,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClD;QACD,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACjF;IAED,YAAY;QACR,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,YAAY;QACR,MAAM,MAAM,GAAQ,IAAI,CAAC,KAAK,CAAC;QAC/B,IAAI,MAAM,EAAE;YACR,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACtC;QACD,OAAO,KAAK,CAAC;KAChB;IAED,UAAU;QACN,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3B;KACJ;CAEJ,CAAA;;YAjO2C,iBAAiB;;AAjGd;IAA1C,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAoB,SAAS;6DAAC;AAEhB;IAAvD,SAAS,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAmC,wBAAwB;4EAAC;AAE1G;IAAR,KAAK,EAAE;;0EAAiC;AAEhC;IAAR,KAAK,EAAE;;6DAA6B;AAE5B;IAAR,KAAK,EAAE;;gEAAuB;AAEtB;IAAR,KAAK,EAAE;;sDAAY;AAEX;IAAR,KAAK,EAAE;;wDAAc;AAEb;IAAR,KAAK,EAAE;;yDAAe;AAEd;IAAR,KAAK,EAAE;;+DAAqB;AAEpB;IAAR,KAAK,EAAE;;4DAAmB;AAElB;IAAR,KAAK,EAAE;;4DAAmB;AAElB;IAAR,KAAK,EAAE;;iEAAwB;AAEvB;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;;8DAAoB;AACnB;IAAR,KAAK,EAAE;;iEAAuB;AAGtB;IAAR,KAAK,EAAE;;mEAAkC;AAGjC;IAAR,KAAK,EAAE;;6DAA4B;AAE3B;IAAR,KAAK,EAAE;;gEAA6B;AAG5B;IAAR,KAAK,EAAE;;gEAAwB;AAEvB;IAAR,KAAK,EAAE;;8DAAgC;AAE/B;IAAR,KAAK,EAAE;;oEAA0B;AAEzB;IAAR,KAAK,EAAE;;4DAAkC;AAEjC;IAAR,KAAK,EAAE;;4DAAyB;AAExB;IAAR,KAAK,EAAE;;8DAA4B;AAE3B;IAAR,KAAK,EAAE;;kEAAgC;AAE/B;IAAR,KAAK,EAAE;;8DAAgC;AAE/B;IAAR,KAAK,EAAE;;+DAAiG;AAEhG;IAAR,KAAK,EAAE;;;gEAEP;AAKQ;IAAR,KAAK,EAAE;;;uDAKP;AAKQ;IAAR,KAAK,EAAE;;;yDAEP;AAKS;IAAT,MAAM,EAAE;8BAAc,YAAY;+DAAgC;AACzD;IAAT,MAAM,EAAE;8BAAkB,YAAY;mEAA4B;AACzD;IAAT,MAAM,EAAE;8BAAe,YAAY;gEAAsC;AAChE;IAAT,MAAM,EAAE;8BAAY,YAAY;6DAAgC;AACvD;IAAT,MAAM,EAAE;8BAAe,YAAY;gEAAwC;AA1GnE,0BAA0B;IAZtC,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,mqKAAmD;QAEnD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAyC,4BAA0B,CAAC;gBAC5F,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;qCAwH0C,iBAAiB;GAvHhD,0BAA0B,CAwVtC;;ICtWY,wBAAwB,GAArC,MAAa,wBAAwB;IAgBjC,YAC8B,SAAoB,EACvC,iBAAoC,EACnC,cAA6B,EACC,YAAuB,IAAI,EACxB,eAA6B,IAAI;QAJhD,cAAS,GAAT,SAAS,CAAW;QACvC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACnC,mBAAc,GAAd,cAAc,CAAe;QACC,cAAS,GAAT,SAAS,CAAkB;QACxB,iBAAY,GAAZ,YAAY,CAAqB;;QAlBrE,UAAK,GAAW,yBAAyB,CAAC;;QAG1C,YAAO,GAAW,YAAY,CAAC;;QAM/B,cAAS,GAAW,6BAA6B,CAAC;QAE1C,YAAO,GAA6B,IAAI,YAAY,CAAa,IAAI,CAAC,CAAC;KAQnF;IAEL,QAAQ,MAAY;IAEpB,aAAa,CAAC,KAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;CAEJ,CAAA;;YAd4CC,WAAS,uBAA7C,MAAM,SAACA,WAAS;YACS,iBAAiB;YACnB,aAAa;YACY,SAAS,uBAAzD,QAAQ,YAAI,MAAM,SAAC,SAAS;YAC0B,YAAY,uBAAlE,QAAQ,YAAI,MAAM,SAAC,YAAY;;AAlB3B;IAAR,KAAK,EAAE;;uDAA2C;AAG1C;IAAR,KAAK,EAAE;;yDAAgC;AAG/B;IAAR,KAAK,EAAE;;4DAAqB;AAGpB;IAAR,KAAK,EAAE;;2DAAmD;AAE1C;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;yDAAkD;AAd/E,wBAAwB;IALpC,SAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,4LAAiD;;KAEpD,CAAC;IAkBO,WAAA,MAAM,CAACA,WAAS,CAAC,CAAA;IAGjB,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;IAC7B,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;qCAJIA,WAAS;QACpB,iBAAiB;QACnB,aAAa;QACY,SAAS;QACH,YAAY;GArB9D,wBAAwB,CA+BpC;;IC/BY,8BAA8B,GAA3C,MAAa,8BAA8B;IAUvC,YAC8B,SAAoB,EACvC,iBAAoC,EACnC,cAA6B,EACC,YAAuB,IAAI,EACxB,eAA6B,IAAI;QAJhD,cAAS,GAAT,SAAS,CAAW;QACvC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACnC,mBAAc,GAAd,cAAc,CAAe;QACC,cAAS,GAAT,SAAS,CAAkB;QACxB,iBAAY,GAAZ,YAAY,CAAqB;;QAZrE,UAAK,GAAW,cAAc,CAAC;;QAG/B,cAAS,GAAW,mCAAmC,CAAC;QAEhD,YAAO,GAA6B,IAAI,YAAY,CAAa,IAAI,CAAC,CAAC;KAQnF;IAEL,QAAQ,MAAY;IAEpB,aAAa,CAAC,KAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;CAEJ,CAAA;;YAd4CA,WAAS,uBAA7C,MAAM,SAACA,WAAS;YACS,iBAAiB;YACnB,aAAa;YACY,SAAS,uBAAzD,QAAQ,YAAI,MAAM,SAAC,SAAS;YAC0B,YAAY,uBAAlE,QAAQ,YAAI,MAAM,SAAC,YAAY;;AAZ3B;IAAR,KAAK,EAAE;;6DAAgC;AAG/B;IAAR,KAAK,EAAE;;iEAAyD;AAEhD;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;+DAAkD;AAR/E,8BAA8B;IAL1C,SAAS,CAAC;QACP,QAAQ,EAAE,+BAA+B;QACzC,oTAAwD;;KAE3D,CAAC;IAYO,WAAA,MAAM,CAACA,WAAS,CAAC,CAAA;IAGjB,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;IAC7B,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;qCAJIA,WAAS;QACpB,iBAAiB;QACnB,aAAa;QACY,SAAS;QACH,YAAY;GAf9D,8BAA8B,CAyB1C;;AChCD;;;;;;;;;AAYA,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;CAAI,CAAA;AAAjC,6BAA6B;IAHzC,SAAS,CAAC;QACP,QAAQ,EAAE,4BAA4B;KACzC,CAAC;GACW,6BAA6B,CAAI;;ACZ9C;;;;;;;AAUA,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;CAAI,CAAA;AAA9B,0BAA0B;IAHtC,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;KACtC,CAAC;GACW,0BAA0B,CAAI;;ACT3C;AACA,AAAO,MAAM,0BAA0B,GAAG;IACtC,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,qBAAqB;IACrB,uCAAuC;IACvC,4BAA4B;IAC5B,uBAAuB;IACvB,qBAAqB;IACrB,kBAAkB;IAClB,8BAA8B;IAC9B,WAAW;CACL,CAAC;;;;;;;;;;;;;;;;;;AAqBX,MAAa,kCAAkC,GAAG,IAAI,cAAc,CAA0B,oCAAoC,CAAC;;;ACzBnI;;;;AAiBA,IAAa,qBAAqB,6BAAlC,MAAa,qBAAqB;IAsB9B,YAC8B,SAAoB,EACvC,iBAAoC,EACnC,cAA6B,EACC,YAAuB,IAAI,EACxB,eAA6B,IAAI,EAClB,cAAwC;QALtE,cAAS,GAAT,SAAS,CAAW;QACvC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACnC,mBAAc,GAAd,cAAc,CAAe;QACC,cAAS,GAAT,SAAS,CAAkB;QACxB,iBAAY,GAAZ,YAAY,CAAqB;;QAOrE,qBAAgB,GAAW,cAAc,CAAC;;QAG1C,SAAI,GAAW,MAAM,CAAC;;QAGtB,cAAS,GAAW,OAAO,CAAC;;QAM5B,wBAAmB,GAAW,6BAA6B,CAAC;;;;;QAM5D,qBAAgB,GAAY,IAAI,CAAC;;QAGjC,cAAS,GAAY,KAAK,CAAC;;QAG3B,wBAAmB,GAAY,KAAK,CAAC;;QAGrC,+BAA0B,GAAY,KAAK,CAAC;;;;;QAM5C,iCAA4B,GAAY,KAAK,CAAC;;QAG9C,0CAAqC,GAAY,KAAK,CAAC;;QAGvD,cAAS,GAAW,mBAAmB,CAAC;;QAGxC,0BAAqB,GAAY,KAAK,CAAC;;QAGxC,8BAAyB,GAAY,KAAK,CAAC;;QAU3C,oCAA+B,GAAY,KAAK,CAAC;;QAUhD,oCAA+B,GAAW,EAAE,CAAC;;QAG7C,qCAAgC,GAA8D,OAAO,CAAC;;QAGtG,0BAAqB,GAAY,KAAK,CAAC;;;;;QAMvC,sCAAiC,GAAY,KAAK,CAAC;;QAGlD,cAAS,GAA0B,IAAI,YAAY,EAAW,CAAC;QAC/D,2BAAsB,GAA0B,IAAI,YAAY,EAAW,CAAC;QAc/E,cAAS,GAA0C,IAAI,eAAe,CAAuB,IAAI,CAAC,CAAC;QAElG,iBAAY,GAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAC/D,SAAS,CAAC,CAAC,QAA8B,KAAsB,QAAQ;cACjE,QAAQ,CAAC,OAAO,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,OAAY,KAAU,OAAO,CAAC,OAAO,EAAE,CAAC,EAC7C,SAAS,CAAc,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAE;cAC9C,EAAE,CAAC,IAAI,CAAC,CACb,CACJ,CAAC;QAEM,mBAAc,GAAuB,IAAI,CAAC,YAAY,CAAC,IAAI,CAC/D,GAAG,CAAC,CAAC,OAAoB,KAAa,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CACtE,CAAC;QAKK,iBAAY,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;;QAGhD,yBAAoB,GAAwB,aAAa,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,YAAY;YAC9B,IAAI,CAAC,cAAc;SACtB,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAgB,KAAc,IAAI,CAAC,mBAAmB,IAAI,KAAK;eAClF,aAAa,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAC1D,CAAC;;QAGM,eAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;QA4JxD,cAAS,GAAa,CAAC,CAAM,QAAc,CAAC;QA7RxC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;KAC5C;;IA5BD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;;IAGD,IAAW,QAAQ,CAAC,QAA8B;QAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjC;IACD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KACpC;;;IAKD,IAAI,iBAAiB;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KAC3B;IA4DQ,IAAI,wBAAwB,CAAC,KAAc;QAChD,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IACD,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;IAIQ,IAAI,8BAA8B,CAAC,KAAc;QACtD,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3C;IACD,IAAI,8BAA8B;QAC9B,OAAO,IAAI,CAAC,+BAA+B,CAAC;KAC/C;IAoEO,mBAAmB,CAAC,cAAuC;QAC/D,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;SACV;QAED,KAAK,MAAM,GAAG,IAAI,0BAA0B,EAAE;YAC1C,IAAI,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;aAC5C;SACJ;KACJ;IAED,QAAQ;;QAEJ,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACxE;aAAM;YACH,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;;QAGD,IAAI,CAAC,SAAS,CAAC,YAAY;aACtB,IAAI,CACD,KAAK,CAAC,CAAC,CAAC,EACR,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;aACA,SAAS,CAAC,CAAC,MAAe;YACvB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;;gBAGxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjB;aACJ;iBAAM;;gBAEH,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjB;aACJ;SACJ,CAAC,CAAC;;QAGP,IAAI,CAAC,SAAS,CAAC,YAAY;aACtB,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;;;;;YAQvC,IAAI,mBAAmB,GAAc,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAE5F,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;iBACvB,IAAI,CACD,GAAG,CAAC;;gBAEA,UAAU,CAAC;;oBAEP,MAAM,OAAO,GAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;;oBAGrD,MAAM,kBAAkB,GAAc,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;oBAE7E,MAAM,UAAU,GAA0C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;oBACrF,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;;;wBAKxC,MAAM,oBAAoB,GAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;;;wBAI3G,IAAI,oBAAoB;+BACjB,CAAC,UAAU,CAAC,UAAU;+BACtB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAiB,KAAc,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;4BAC7G,UAAU,CAAC,kBAAkB,EAAE,CAAC;yBACnC;;wBAGD,UAAU,CAAC;4BACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;yBAC3B,CAAC,CAAC;qBACN;;oBAGD,mBAAmB,GAAG,kBAAkB,CAAC;iBAC5C,CAAC,CAAC;aACN,CAAC,CACL,CAAC;SACT,CAAC,CACL;aACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,EAAE,CAAC;;;QAIjB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,kBAA2B;;YAEpC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,kBAAkB,EAAE;oBACpB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;iBACxF;qBAAM;oBACH,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;iBAC3F;aACJ;SACJ,CAAC,CAAC;;;QAIH,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;aACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC;YACP,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAC3B;SACJ,CAAC,CAAC;QAEP,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC;;YAER,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;SACzC,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC/B;aAAM;YACH,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAID,2BAA2B;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,CAAC;KAChE;;;;;;IAOD,cAAc,CAAC,KAAoB;;QAE/B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;aACnC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;aACzC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;aAC/C,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;gBACrB,IAAI,CAAC,4BAA4B,KAAK,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,EAC7F;YACE,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;;YAEjE,UAAU,CAAC,MAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SACzC;;QAGD,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACpF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;;;;;IAMD,YAAY,CAAC,KAAoB;QAC7B,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;YAC5D,MAAM,sBAAsB,GAAW,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC;YACjF,MAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAe,KAAc,IAAI,CAAC,EAAE,KAAK,sBAAsB,CAAC,CAAC;YAC1H,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;gBACzE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBAC5D,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAC;aACtG;SACJ;KACJ;IAED,UAAU,CAAC,KAAa;QACpB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;IAED,MAAM;QACF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAED,gBAAgB,CAAC,EAA2B;QACxC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,KAAU,KAAc,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,EACvE,GAAG,CAAC,MAAW,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,EACxD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KACnB;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;;;;IAKM,MAAM;QACT,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAClD,OAAO;SACV;;;QAGD,MAAM,KAAK,GAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;QACtD,MAAM,SAAS,GAAQ,KAAK,CAAC,SAAS,CAAC;;QAGvC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE7C,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;KAC/B;;;;;IAMM,MAAM,CAAC,KAAe;QACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ;;;;;IAMO,oBAAoB;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;;gBAGzB,OAAO,CAAC,KAAK,CAAC,2GAA2G,CAAC,CAAC;aAC9H;YACD,OAAO;SACV;;;;QAID,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;QAE7D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY;aAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,CAAC,MAAW;YACnB,IAAI,qBAAqB,GAAY,KAAK,CAAC;YAE3C,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,iCAAiC,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;uBACnG,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;oBAE9E,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBACnC,MAAM,GAAG,EAAE,CAAC;qBACf;oBAED,MAAM,YAAY,GAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAiB,KAAU,MAAM,CAAC,KAAK,CAAC,CAAC;oBAEjG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,aAAkB;wBACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,KAAc,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;+BAC5E,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAM,KAAc,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE;;;4BAG1F,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;4BAC3B,qBAAqB,GAAG,IAAI,CAAC;yBAChC;qBACJ,CAAC,CAAC;iBACN;aACJ;YACD,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;YAErC,IAAI,qBAAqB,EAAE;gBACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACpC;SACJ,CAAC,CAAC;KACV;;;;;IAMM,gBAAgB;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YAClE,OAAO;SACV;QACD,IAAI,OAAO,GAAgB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;QAChE,IAAI,YAAyB,CAAC;QAC9B,OAAO,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE;YACpC,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAChD,YAAY,GAAG,OAAO,CAAC;gBACvB,MAAM;aACT;SACJ;QACD,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;SACtF;KACJ;;;;IAKO,sBAAsB;QAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,CAAC,CAAC;SACZ;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;KACJ;IAEO,wBAAwB;QAC5B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;KACjF;CAGJ,CAAA;;YAve4CA,WAAS,uBAA7C,MAAM,SAACA,WAAS;YACS,iBAAiB;YACnB,aAAa;YACY,SAAS,uBAAzD,QAAQ,YAAI,MAAM,SAAC,SAAS;YAC0B,YAAY,uBAAlE,QAAQ,YAAI,MAAM,SAAC,YAAY;4CAC/B,QAAQ,YAAI,MAAM,SAAC,kCAAkC;;AAV1D;IADC,WAAW,CAAC,2CAA2C,CAAC;;;8DAGxD;AAcQ;IAAR,KAAK,EAAE;;+DAA2C;AAG1C;IAAR,KAAK,EAAE;;mDAAuB;AAGtB;IAAR,KAAK,EAAE;;wDAA6B;AAG5B;IAAR,KAAK,EAAE;;2DAAuB;AAGtB;IAAR,KAAK,EAAE;;kEAA6D;AAM5D;IAAR,KAAK,EAAE;;+DAAkC;AAGjC;IAAR,KAAK,EAAE;;wDAA4B;AAG3B;IAAR,KAAK,EAAE;;kEAAsC;AAGrC;IAAR,KAAK,EAAE;;yEAA6C;AAM5C;IAAR,KAAK,EAAE;;2EAA+C;AAG9C;IAAR,KAAK,EAAE;;oFAAwD;AAGvD;IAAR,KAAK,EAAE;;wDAAyC;AAGxC;IAAR,KAAK,EAAE;;oEAAwC;AAIvC;IAAR,KAAK,EAAE;;;qEAGP;AAOQ;IAAR,KAAK,EAAE;;;2EAGP;AAMQ;IAAR,KAAK,EAAE;;8EAA8C;AAG7C;IAAR,KAAK,EAAE;;+EAAuG;AAGtG;IAAR,KAAK,EAAE;;oEAAwC;AAMvC;IAAR,KAAK,EAAE;;gFAAoD;AAGlD;IAAT,MAAM,EAAE;8BAAY,YAAY;wDAAwC;AAC/D;IAAT,MAAM,EAAE;8BAAyB,YAAY;qEAAwC;AAGlB;IAAnE,SAAS,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAoB,UAAU;gEAAC;AAG9B;IAAnE,SAAS,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAoB,UAAU;gEAAC;AAGrC;IAA5D,YAAY,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAY,0BAA0B;wDAAC;AAGnC;IAA/D,YAAY,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,6BAA6B;6DAAC;AA/HrG,qBAAqB;IAbjC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,6zFAA6C;QAE7C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAoC,uBAAqB,CAAC;gBAClF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;IAwBO,WAAA,MAAM,CAACA,WAAS,CAAC,CAAA;IAGjB,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;IAC7B,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;IAChC,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,kCAAkC,CAAC,CAAA;qCALlBA,WAAS;QACpB,iBAAiB;QACnB,aAAa;QACY,SAAS;QACH,YAAY;GA3B9D,qBAAqB,CA8fjC;;AC1hBD;AACA,MAAa,SAAS;IAEX,OAAO,OAAO,CAAC,KAAe;QACjC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KACzD;IAEM,OAAO,KAAK,CAAC,KAAe;QAC/B,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,IAAI,KAAK,EAAE,CAAC;SACtB;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;KACrB;;;;;;IAOM,OAAO,WAAW,CAAC,YAAoD;QAC1E,MAAM,kBAAkB,GAAG,UAAU,MAAW,EAAE,QAAgB;YAC9D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAChC,MAAM,UAAU,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjD,IAAI,KAAK,GAAQ,MAAM,CAAC;gBAExB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBACtC,OAAO,KAAK,CAAC;qBAChB;iBACJ;aACJ;YACD,OAAO,EAAE,CAAC;SACb,CAAA;QAED,MAAM,MAAM,GAAG,UAAU,QAAgD,EAAE,CAAM,EAAE,CAAM;YACrF,MAAM,SAAS,GAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACnF,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,UAAU,GAAW,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACpB,UAAU,GAAG,CAAC,CAAC,CAAC;iBACnB;gBAED,IAAI,MAAM,GAAQ,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9D,IAAI,MAAM,GAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAgG,OAAO,MAAM,CAAC;gBACzH,MAAM,KAAK,GAAgG,OAAO,MAAM,CAAC;gBAEzH,IAAI,aAAa,GAAW,CAAC,CAAC;gBAC9B,IAAI,KAAK,KAAK,KAAK,EAAE;oBACjB,QAAQ,KAAK;wBACT,KAAK,QAAQ,EAAE;4BACX,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;4BAC7C,MAAM;yBACT;wBACD,KAAK,QAAQ,EAAE;4BACX,aAAa,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4BACrE,MAAM;yBACT;wBACD,KAAK,SAAS,EAAE;4BACZ,aAAa,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4BACtE,MAAM;yBACT;wBACD,KAAK,QAAQ,EAAE;4BACX,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gCACxD,aAAa,GAAG,CAAC,CAAC;6BACrB;iCAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gCAClC,aAAa,GAAG,CAAC,CAAC,CAAC;6BACtB;iCAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gCAClC,aAAa,GAAG,CAAC,CAAC;6BACrB;iCAAM;gCACH,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;gCAC3B,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;gCAC3B,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;6BAChD;4BACD,MAAM;yBACT;wBACD,SAAS;;;4BAGL,aAAa,GAAG,CAAC,CAAC;yBACrB;qBACJ;iBACJ;qBAAM;oBACH,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBACxD,aAAa,GAAG,CAAC,CAAC;qBACrB;yBAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBAClC,aAAa,GAAG,CAAC,CAAC;qBACrB;yBAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBAClC,aAAa,GAAG,CAAC,CAAC,CAAC;qBACtB;yBAAM;wBACH,MAAM,SAAS,GAAW,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;wBAChE,MAAM,SAAS,GAAW,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;wBAChE,aAAa,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;qBACpF;oBACD,IAAI,aAAa,KAAK,CAAC,EAAE;wBACrB,OAAO,aAAa,CAAC;qBACxB;iBACJ;gBACD,IAAI,aAAa,KAAK,CAAC,EAAE;oBACrB,OAAO,aAAa,GAAG,UAAU,CAAC;iBACrC;aACJ;YACD,OAAO,CAAC,CAAC;SAEZ,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KAC1C;CAEJ;;ICnGY,qBAAqB,GAAlC,MAAa,qBAAqB;IA8D9B,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QA5DzD,qBAAgB,GAAU,EAAE,CAAC;QAE7B,wBAAmB,GAAW,IAAI,CAAC;QAEnC,gBAAW,GAAY,KAAK,CAAC;QAE7B,6BAAwB,GAAY,KAAK,CAAC;QAkBjC,aAAQ,GAAY,KAAK,CAAC;QAE1B,uBAAkB,GAAY,KAAK,CAAC;QAEpC,YAAO,GAAY,KAAK,CAAC;QAEzB,cAAS,GAAY,KAAK,CAAC;QAE3B,cAAS,GAAY,KAAK,CAAC;QAE3B,aAAQ,GAAW,aAAa,CAAC;QAUjC,iBAAY,GAAQ,EAAE,CAAC;QAEvB,aAAQ,GAAQ,EAAE,CAAC;QAWlB,gBAAW,GAAoB,IAAI,YAAY,EAAK,CAAC;QACrD,oBAAe,GAAoB,IAAI,YAAY,EAAK,CAAC;QA+EnE,cAAS,GAAG,CAAC,EAAiB,EAAE,EAAiB;YAC7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACtC,CAAA;KA/E6D;IAXrD,IAAI,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC3C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAOD,QAAQ,MAAY;IAEpB,qBAAqB;QACjB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YACjE,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACvE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;KACJ;IAED,cAAc;QACV,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnG,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;aACvB;SACJ;KACJ;IAED,gBAAgB,CAAC,MAAS;QACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAClC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAED,QAAQ,CAAC,MAAW,EAAE,QAAgB;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,MAAM,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;oBACvC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBACnC;gBACD,OAAO,KAAK,CAAC;aAChB;SACJ;KACJ;IAED,QAAQ,CAAC,WAAmB;QACxB,IACI,CAAC,WAAW,KAAK,IAAI,CAAC,mBAAmB;aACxC,IAAI,CAAC,YAAY,EAAE,KAAK,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC9E;YACE,OAAO;SACV;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACnF;QAED,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;QAEvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;aAChC,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KAChK;IAED,YAAY;QACR,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;IAED,iBAAiB,CAAC,MAAS;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;IAMD,WAAW;QACP,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;SACzC;KACJ;IAED,SAAS;QACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChF,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzD,MAAM,MAAM,GAAc,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;qBACnB;iBACJ;aACJ;iBAAM;gBACH,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzD,MAAM,MAAM,GAAc,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;wBAC5B,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;iBACJ;aACJ;YAED,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;IAED,gCAAgC;QAC5B,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5D,MAAM,QAAQ,GAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACtG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;IAED,YAAY;QACR,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,eAAe;QACX,OAAO,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzM;IAED,QAAQ,CAAC,MAAW;QAChB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;KACtG;CACJ,CAAA;;YAnJ2C,iBAAiB;;AApDC;IAAzD,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;0DAAC;AAE1C;IAAvC,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiBA,WAAS;qDAAC;AAER;IAAzD,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAS,UAAU;qDAAC;AAEpE;IAAR,KAAK,EAAE;;mDAAc;AAEb;IAAR,KAAK,EAAE;;oDAAe;AAEd;IAAR,KAAK,EAAE;;0DAAqB;AAEpB;IAAR,KAAK,EAAE;;uDAAmB;AAElB;IAAR,KAAK,EAAE;;uDAAmB;AAElB;IAAR,KAAK,EAAE;;uDAA2B;AAE1B;IAAR,KAAK,EAAE;;iEAAqC;AAEpC;IAAR,KAAK,EAAE;;sDAA0B;AAEzB;IAAR,KAAK,EAAE;;wDAA4B;AAE3B;IAAR,KAAK,EAAE;;wDAA4B;AAE3B;IAAR,KAAK,EAAE;;uDAAkC;AAEjC;IAAR,KAAK,EAAE;;yDAA+B;AAE9B;IAAR,KAAK,EAAE;;2DAAc;AAEb;IAAR,KAAK,EAAE;;kDAA6D;AAE5D;IAAR,KAAK,EAAE;;wDAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAwB;AAEvB;IAAR,KAAK,EAAE;;uDAAoB;AAGnB;IAAR,KAAK,EAAE;;;kDAGP;AAKS;IAAT,MAAM,EAAE;8BAAc,YAAY;0DAA4B;AACrD;IAAT,MAAM,EAAE;8BAAkB,YAAY;8DAA4B;AA5D1D,qBAAqB;IALjC,SAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,6rJAA6C;;KAEhD,CAAC;qCA+D0C,iBAAiB;GA9DhD,qBAAqB,CAiNjC;;;IC7MY,mBAAmB,2BAAhC,MAAa,mBAAmB;IAAhC;QAca,aAAQ,GAAG,KAAK,CAAC;QAIhB,oBAAe,GAAG,IAAI,YAAY,EAAO,CAAC;QAI3C,YAAO,GAAG,KAAK,CAAC;QAQzB,aAAQ,GAAU,EAAE,CAAC;QAYrB,aAAQ,GAAQ;SACf,CAAA;QAED,YAAO,GAAQ;SACd,CAAA;KA4BJ;IA1CG,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACjC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;IAED,iBAAiB,CAAC,MAAW;QACzB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;IAQD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,QAAQ,CAAC,GAAW;QAChB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;KACnG;CAEJ,CAAA;AAxE6D;IAAzD,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;wDAAC;AAEzE;IAAR,KAAK,EAAE;;iDAAc;AAEb;IAAR,KAAK,EAAE;;kDAAe;AAEd;IAAR,KAAK,EAAE;;wDAAqB;AAEpB;IAAR,KAAK,EAAE;;qDAAmB;AAElB;IAAR,KAAK,EAAE;;qDAAmB;AAElB;IAAR,KAAK,EAAE;;qDAAkB;AAEjB;IAAR,KAAK,EAAE;;iDAAM;AAEJ;IAAT,MAAM,EAAE;;4DAA2C;AAEpC;IAAf,KAAK,CAAC,OAAO,CAAC;;gDAAU;AAEhB;IAAR,KAAK,EAAE;;oDAAiB;AAEhB;IAAR,KAAK,EAAE;;iDAAkC;AAEjC;IAAR,KAAK,EAAE;;yDAAwB;AAEvB;IAAR,KAAK,EAAE;;sDAAmB;AA5BlB,mBAAmB;IAZ/B,SAAS,CAAC;QACP,QAAQ,EAAE,kBAAkB;QAC5B,w7CAA2C;QAE3C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAmB,CAAC;gBAClD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;GACW,mBAAmB,CA0E/B;;;ICzEY,0BAA0B,kCAAvC,MAAa,0BAA0B;IAkBnC,YAAoB,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;QARhC,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,eAAU,GAAS,IAAI,IAAI,EAAE,CAAC;QAE7B,eAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAEtB;IAE9C,QAAQ;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnD;IAED,iBAAiB;QACb,UAAU,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB,CAAC,CAAC;KACN;IAED,kBAAkB;QACd,UAAU,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB,CAAC,CAAC;KACN;IAED,cAAc;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7C;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;KACpF;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;KACvD;CAEJ,CAAA;;YAhCgC,YAAY;;AAd6B;IAArE,SAAS,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;+DAAC;AAErF;IAAR,KAAK,EAAE;;wDAAc;AAEb;IAAR,KAAK,EAAE;;yDAAe;AAEd;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;8BAAa,IAAI;8DAAc;AAE7B;IAAT,MAAM,EAAE;8BAAa,YAAY;8DAAkC;AAhB3D,0BAA0B;IAbtC,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,ksFAAmD;QAEnD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA0B,CAAC;gBACzD,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;;KACpC,CAAC;qCAmB+B,YAAY;GAlBhC,0BAA0B,CAkDtC;;;ICrDY,oBAAoB,4BAAjC,MAAa,oBAAoB;IAAjC;QAMa,UAAK,GAAG,SAAS,CAAC;QAQjB,WAAM,GAAG,IAAI,YAAY,EAAO,CAAC;QAK3C,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAwB5B;IA7BG,QAAQ;KACP;IAMD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;CAEJ,CAAA;AA3CY;IAAR,KAAK,EAAE;;kDAAc;AAEb;IAAR,KAAK,EAAE;;mDAAe;AAEd;IAAR,KAAK,EAAE;;mDAAmB;AAElB;IAAR,KAAK,EAAE;;sDAAmB;AAElB;IAAR,KAAK,EAAE;;sDAAmB;AAEX;IAAf,KAAK,CAAC,OAAO,CAAC;;iDAAU;AAEf;IAAT,MAAM,EAAE;;oDAAkC;AAdlC,oBAAoB;IAZhC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,iXAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAoB,CAAC;gBACnD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;GACW,oBAAoB,CA6ChC;;;IChDY,gBAAgB,wBAA7B,MAAa,gBAAiB,SAAQ,UAAU;IAAhD;;QAEa,mBAAc,GAAG,KAAK,CAAC;KASnC;IAPG,QAAQ;KACP;IAED,OAAO,CAAC,KAAa;QACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;CAEJ,CAAA;AATY;IAAR,KAAK,EAAE;;wDAAwB;AAFvB,gBAAgB;IAT5B,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,6xCAAuC;QAEvC,SAAS,EAAE,CAAC;gBACR,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,kBAAgB;aAChC,CAAC;;KACL,CAAC;GACW,gBAAgB,CAW5B;;IChBY,YAAY,GAAzB,MAAa,YAAY;IAAzB;QAMW,WAAM,GAAG,KAAK,CAAC;QAIf,cAAS,GAAG,KAAK,CAAC;QAElB,aAAQ,GAAG,KAAK,CAAC;QAMhB,oBAAe,GAAG,IAAI,YAAY,EAAO,CAAC;KAOrD;IAHC,QAAQ;KACP;CAEF,CAAA;AAvBU;IAAR,KAAK,EAAE;;2CAAe;AAEd;IAAR,KAAK,EAAE;;2CAAe;AAEd;IAAR,KAAK,EAAE;;4CAAgB;AAEf;IAAR,KAAK,EAAE;8BAAW,WAAW;8CAAM;AAE3B;IAAR,KAAK,EAAE;;+CAAmB;AAElB;IAAR,KAAK,EAAE;;8CAAkB;AAEjB;IAAR,KAAK,EAAE;;0CAAW;AAEV;IAAR,KAAK,EAAE;;0CAAc;AAEZ;IAAT,MAAM,EAAE;;qDAA2C;AAlBzC,YAAY;IALxB,SAAS,CAAC;QACT,QAAQ,EAAE,UAAU;QACpB,6PAAmC;;KAEpC,CAAC;GACW,YAAY,CAyBxB;;IC3BY,mBAAmB,GAAhC,MAAa,mBAAmB;IAE9B,YAAmB,aAA+B;QAA/B,kBAAa,GAAb,aAAa,CAAkB;KACjD;CAEF,CAAA;;YAHmC,gBAAgB;;AAFvC,mBAAmB;IAH/B,SAAS,CAAC;QACT,QAAQ,EAAE,cAAc;KACzB,CAAC;qCAGkC,gBAAgB;GAFvC,mBAAmB,CAK/B;;MCNY,MAAO,SAAQ,WAAW;IAAvC;;QAIE,WAAM,GAAG,KAAK,CAAC;QAIf,cAAS,GAAG,KAAK,CAAC;QAElB,aAAQ,GAAG,KAAK,CAAC;KAQlB;CAAA;;ICZY,iBAAiB,GAA9B,MAAa,iBAAiB;IAQ1B,YAAoB,yBAAmD;QAAnD,8BAAyB,GAAzB,yBAAyB,CAA0B;QANvE,gBAAW,GAAmB,EAAE,CAAC;KAOhC;IAED,QAAQ;KACP;IAED,kBAAkB;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;KACJ;IAED,OAAO,CAAC,KAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,MAA2B;QACnG,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7B;IAED,QAAQ,CAAC,IAAc;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;IAED,eAAe,CAAC,KAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,MAA2B;QAC3G,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAC9F,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAEhG,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAEzB,OAAO,YAAY,CAAC,QAAQ,CAAC;KAChC;IAED,SAAS,CAAC,GAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QAClB,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,MAAM,EAAE;YACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxB;KACJ;IAED,QAAQ,CAAC,GAAiB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAElC,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;QAClE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;KACJ;IAED,cAAc;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC;KACJ;IAED,YAAY;QACR,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3C;KACJ;IAED,OAAO;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,IAAI,OAAO,IAAI,IAAI,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;SAClC;KACJ;IAED,WAAW;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,WAAW,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YAClD,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;YAC1B,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;SACtC;KACJ;CAEJ,CAAA;;YAxGkD,wBAAwB;;AAJxC;IAA9B,eAAe,CAAC,YAAY,CAAC;8BAAO,SAAS;+CAAe;AAEZ;IAAhD,SAAS,CAAC,mBAAmB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC;8BAAwB,mBAAmB;gEAAC;AANnF,iBAAiB;IAL7B,SAAS,CAAC;QACP,QAAQ,EAAE,gBAAgB;QAC1B,0yBAAyC;;KAE5C,CAAC;qCASiD,wBAAwB;GAR9D,iBAAiB,CAgH7B;;AC1HD;;;AAGA,SAAgB,QAAQ,CAAC,IAAS,EAAE,IAAY,EAAE,OAAa;IAC3D,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACxB,IAAI,OAAY,CAAC;IACjB,IAAI,IAAS,CAAC;IACd,IAAI,MAAW,CAAC;IAChB,IAAI,OAAO,GAAQ,IAAI,CAAC;IACxB,IAAI,QAAQ,GAAW,CAAC,CAAC;IAEzB,SAAS,KAAK;QACV,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACtC;IAED,OAAO;QACH,MAAM,GAAG,GAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;YACxC,QAAQ,GAAG,GAAG,CAAC;SAClB;QAED,MAAM,SAAS,GAAW,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC;QAClD,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,GAAG,SAAS,CAAC;QAEjB,IAAI,SAAS,IAAI,CAAC,EAAE;YAChB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,GAAG,GAAG,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACtC;aAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC/C,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SAC1C;QAED,OAAO,MAAM,CAAC;KACjB,CAAC;CACL;;;;;;;;;AAUD,SAAgB,YAAY,CAAC,QAAgB,EAAE,OAAa;IACxD,OAAO,SAAS,cAAc,CAAC,MAAW,EAAE,GAAgB,EAAE,UAA8B;QACxF,OAAO;YACH,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,GAAG,EAAE,SAAS,MAAM;gBAChB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;oBAC7B,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;iBACvD,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;aACpB;SACJ,CAAC;KACL,CAAC;CACL;;AC7DD,IAAK,eAGJ;AAHD,WAAK,eAAe;IAChB,4BAAS,CAAA;IACT,gCAAa,CAAA;CAChB,EAHI,eAAe,KAAf,eAAe,QAGnB;AAED,IAAK,cAGJ;AAHD,WAAK,cAAc;IACf,iCAAe,CAAA;IACf,0CAAwB,CAAA;CAC3B,EAHI,cAAc,KAAd,cAAc,QAGlB;AAOD,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAoB/B,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;QAdpC,cAAS,GAAW,CAAC,CAAC;QAEpB,SAAI,GAAY,IAAI,CAAC;QAErB,gBAAW,GAAW,GAAG,CAAC;QAE1B,iBAAY,GAAW,IAAI,CAAC;QAE3B,aAAQ,GAA0B,IAAI,YAAY,EAAW,CAAC;QAOpE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,eAA0B,CAAC;KACtD;IAED,QAAQ;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,WAAW;QACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACrF;IAED,WAAW;QACP,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,EAAE;YAC7F,OAAO,cAAc,CAAC,MAAM,CAAC;SAChC;aAAM;YACH,OAAO,cAAc,CAAC,IAAI,CAAC;SAC9B;KACJ;IAED,OAAO,CAAC,IAAY,EAAE,KAAa,IAAI,CAAC,YAAY;QAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;KACvC;IAED,kBAAkB,CAAC,EAAU;QACzB,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE;YACtB,OAAO,eAAe,CAAC,IAAI,CAAC;SAC/B;aAAM;YACH,OAAO,eAAe,CAAC,EAAE,CAAC;SAC7B;KACJ;IAED,SAAS,CAAC,OAAgB;QACtB,MAAM,QAAQ,GAAY,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAChN,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,OAAO,QAAQ,CAAC;KACnB;IAED,YAAY;QACR,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,IAAI,EAAE;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;SACrD;aAAM;YACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACpD;KACJ;CAEJ,CAAA;;YArDoC,UAAU;;AAZlC;IAAR,KAAK,EAAE;;oDAAsB;AAErB;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAA6B;AAE3B;IAAT,MAAM,EAAE;8BAAW,YAAY;wDAAwC;AAErC;IAAlC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC;8BAAU,QAAQ;uDAAC;AAEhB;IAApC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;8BAAgB,QAAQ;6DAAC;AAlBpD,sBAAsB;IALlC,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,sCAA8C;;KAEjD,CAAC;qCAqBmC,UAAU;GApBlC,sBAAsB,CAyElC;;MC1FY,mBAAoB,SAAQ,WAAW;IAQhD,YAAY,UAAgB,EAAE,aAAqB,EAAE,UAAmB;QACpE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAChC;CAEJ;;ICOY,cAAc,GAA3B,MAAa,cAAc;IAwHvB;QAtHQ,sBAAiB,GAAU,EAAE,CAAC;QAE/B,sBAAiB,GAAW,GAAG,CAAC;QAChC,oBAAe,GAAQ,IAAI,CAAC;QAG5B,sBAAiB,GAAU,EAAE,CAAC;QAmB5B,WAAM,GAAY,KAAK,CAAC;QAExB,YAAO,GAAqB,EAAE,CAAC;QAW/B,cAAS,GAAY,KAAK,CAAC;QAE3B,sBAAiB,GAAY,IAAI,CAAC;QAElC,uBAAkB,GAAW,CAAC,CAAC;QAE/B,oBAAe,GAAW,CAAC,CAAC;QAE5B,sBAAiB,GAAW,EAAE,CAAC;QAE/B,6BAAwB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAElD,wBAAmB,GAAY,KAAK,CAAC;QAErC,YAAO,GAAY,KAAK,CAAC;QAEzB,eAAU,GAAY,KAAK,CAAC;QAE5B,eAAU,GAAY,IAAI,CAAC;QAM3B,iBAAY,GAAY,KAAK,CAAC;QAI9B,sBAAiB,GAAY,KAAK,CAAC;QAEnC,uBAAkB,GAAY,KAAK,CAAC;QAIpC,mBAAc,GAAY,KAAK,CAAC;QAEhC,gBAAW,GAAW,IAAI,CAAC;QAE3B,iBAAY,GAAW,IAAI,CAAC;QAI5B,gBAAW,GAAY,KAAK,CAAC;QAEN,8BAAyB,GAAY,KAAK,CAAC;QAElE,qBAAgB,GAAY,KAAK,CAAC;QAElC,4BAAuB,GAAY,KAAK,CAAC;QAEzC,cAAS,GAAY,KAAK,CAAC;QAC3B,eAAU,GAAW,EAAE,CAAC;QACxB,kBAAa,GAAkB,KAAK,CAAC;QAEpC,sBAAiB,GAAoB,IAAI,YAAY,CAAI,IAAI,CAAC,CAAC;QAC/D,eAAU,GAAsB,IAAI,YAAY,CAAM,IAAI,CAAC,CAAC;QAC5D,SAAI,GAAoC,IAAI,YAAY,EAAE,CAAC;QAC3D,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;KAuB1C;IAxFR,IAAI,IAAI;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,IAAI,CAAC,IAAS;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACzC;IA6DD,IAAW,cAAc;QACrB,IAAI,eAAuB,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC3C,eAAe,GAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAA6B,CAAC,YAAY,CAAC;SAClG;QAED,IAAI,kBAA0B,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACjH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;YAClC,kBAAkB,GAAI,YAAY,CAAC,UAAU,CAAC,aAA6B,CAAC,YAAY,CAAC;SAC5F;QAED,MAAM,gBAAgB,GAAW,eAAe,IAAI,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAW,kBAAkB,IAAI,EAAE,CAAC;QAE5D,MAAM,QAAQ,GAAW,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAChH,MAAM,SAAS,GAAY,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAE9E,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,IAAI,gBAAgB,GAAG,kBAAkB,KAAK,GAAG,MAAM,CAAC,CAAC;KACpG;IAID,QAAQ,MAAY;IAEpB,eAAe;QACX,UAAU,CAAC;YACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACtC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;gBAErC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;oBACnE,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;iBAC1D;aACJ;YAED,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;gBACnE,IAAI,CAAC,MAAM,CAAC;oBACR,QAAQ,EAAE,IAAI,CAAC,iBAAiB;oBAChC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;oBACvD,SAAS,EAAE,CAAC;oBACZ,MAAM,EAAE,CAAC;oBACT,iBAAiB,EAAE,CAAC;iBACvB,CAAC,CAAC;aACN;YAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAErB,MAAM,OAAO,GAAgB,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC7B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;iBACvC;aACJ;SACJ,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAsB;QAC9B,UAAU,CAAC;YACP,IAAI,OAAO,CAAC,IAAI,EAAE;gBACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC5B;SACJ,CAAC,CAAC;KACN;IAEO,iBAAiB;QACrB,IAAI,OAAO,GAAa,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACtC,OAAO,GAAG,CAAC,gBAAgB,EAAE,GAAG,OAAO,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,eAAe,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QAEjC,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,OAAO,GAAQ,EAAE,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACtC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACpD;aACJ;YAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9B;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBACpF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;aAChE;iBAAM;gBACH,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;aACnC;YAED,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBACpF,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClE;iBAAM;gBACH,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;aACrC;SACJ;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3C,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;SAC1D;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACzI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/D;KACJ;IAED,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE;YACzG,IAAI,CAAC,iBAAiB,GAAG,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;SACtE;KACJ;IAED,MAAM,CAAC,SAA4B;QAC/B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC5C,SAAS,CAAC,wBAAwB,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,wBAAwB,CAAC;QAChK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,UAAU,CAAC,OAAY;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACvF;IAED,cAAc,CAAC,OAAY;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/D;QAED,MAAM,mBAAmB,GAAU,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3E,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;KACjE;IAED,WAAW,CAAC,OAAY;QACpB,MAAM,gBAAgB,GAAY,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/G,IAAI,CAAC,gBAAgB,EAAE;YACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxC;KACJ;IAED,qBAAqB,CAAC,OAAY;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACxC;IAED,QAAQ,CAAC,IAAU;QACf,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,MAAM,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,iBAAiB;YAChC,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC;YACT,iBAAiB,EAAE,CAAC;YACpB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;KACN;IAED,WAAW,CAAC,KAAiB,EAAE,IAAS;QACpC,MAAM,OAAO,GAAgB,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YAEpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACf,MAAM,cAAc,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBACvD,MAAM,UAAU,GAAI,KAAK,CAAC,aAA6B,CAAC,qBAAqB,EAAE,CAAC;gBAChF,MAAM,KAAK,GAAI,KAAK,CAAC,aAAqC,CAAC,QAAQ,CAAC;gBAEpE,IAAI,cAAc,IAAI,UAAU,EAAE;oBAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;oBACrC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;oBAEpE,IAAI,aAAa,GAAW,CAAC,CAAC;oBAC9B,IAAI,WAAW,GAAW,CAAC,CAAC;oBAE5B,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE;wBACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;4BAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;yBACvD;wBACD,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;qBAC1E;yBAAM;wBACH,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;qBACnC;oBAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE;wBAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;4BAC1B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;yBACrD;wBACD,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC;qBAC7F;yBAAM;wBACH,WAAW,GAAG,UAAU,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;qBACzD;oBAED,UAAU,CAAC;wBACP,IAAI,KAAK,CAAC,OAAO,GAAG,aAAa,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,GAAG,WAAW,EAAE;4BACnE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC;yBAClD;6BAAM,IAAI,KAAK,CAAC,OAAO,IAAI,aAAa,EAAE;4BACvC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,aAAa,IAAI,CAAC;yBAC7C;6BAAM,IAAI,KAAK,CAAC,OAAO,IAAI,WAAW,EAAE;4BACrC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,WAAW,IAAI,CAAC;yBAC3C;qBACJ,CAAC,CAAC;iBACN;aACJ;SACJ;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC/B;IAED,YAAY,CAAC,IAAY;QACrB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACnE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;oBACxF,MAAM,OAAO,GAAgB,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;oBACtE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;wBAC7B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;qBACvC;iBACJ;gBACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;aAC/B;SACJ,CAAC,CAAC;KACN;IAED,sBAAsB;QAClB,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,CAAC,IAAS,EAAE,YAAoB;YACnE,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;gBACxC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;aAC3C;YACD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;SAC7B,CAAC;KACL;;IAGD,sBAAsB,CAAC,IAAW;QAC9B,MAAM,MAAM,GAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG;YACtC,MAAM,UAAU,GAAW,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACpB,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;aAC1B;YACD,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;SAChB,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU;YACrC,OAAO,IAAI,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;SAC7F,CAAC,CAAC;KACN;IAED,eAAe,CAAC,GAA4B;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBACzC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;aACnC;YACD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,KAAK,CAAC;KAChB;IAED,WAAW,CAAC,GAA4B;QACpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9G,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAC1D;KACJ;;IAGD,OAAO;QACH,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;KACrF;IAED,YAAY,CAAC,QAAiB;QAC1B,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC;gBACR,QAAQ,EAAE,IAAI,CAAC,iBAAiB;gBAChC,SAAS,EAAE,IAAI,CAAC,kBAAkB;gBAClC,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;aAC7C,CAAC,CAAC;YAEH,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;SAChC;KACJ;CAEJ,CAAA;AAtYyC;IAArC,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAU,OAAO;+CAAC;AACZ;IAA1C,SAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAe,YAAY;oDAAC;AACnB;IAAlD,SAAS,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAuB,YAAY;4DAAC;AACpC;IAAjD,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAsB,YAAY;2DAAC;AAEvC;IAA5C,SAAS,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAA2B,WAAW;wDAAkB;AAClD;IAAjD,SAAS,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAsC,WAAW;mEAAM;AACvD;IAAhD,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAqC,WAAW;kEAAM;AAE1D;IAA3C,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAa,WAAW;kDAAM;AACtB;IAAlD,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAoB,WAAW;yDAAM;AAC5C;IAA1C,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAY,WAAW;iDAAM;AAC1B;IAA5C,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAc,WAAW;mDAAM;AAC3B;IAA/C,YAAY,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,WAAW;sDAAM;AACjC;IAA/C,YAAY,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,WAAW;sDAAM;AAExE;IAAR,KAAK,EAAE;;8CAAyB;AAExB;IAAR,KAAK,EAAE;;+CAAgC;AAG/B;IAAR,KAAK,EAAE;;;0CAEP;AAMQ;IAAR,KAAK,EAAE;;iDAA4B;AAE3B;IAAR,KAAK,EAAE;;yDAAmC;AAElC;IAAR,KAAK,EAAE;;0DAAgC;AAE/B;IAAR,KAAK,EAAE;;uDAA6B;AAE5B;IAAR,KAAK,EAAE;;yDAAgC;AAE/B;IAAR,KAAK,EAAE;;gEAAmD;AAElD;IAAR,KAAK,EAAE;;2DAAsC;AAErC;IAAR,KAAK,EAAE;;+CAA0B;AAEzB;IAAR,KAAK,EAAE;;kDAA6B;AAE5B;IAAR,KAAK,EAAE;;kDAA4B;AAE3B;IAAR,KAAK,EAAE;;qDAAuB;AAEtB;IAAR,KAAK,EAAE;;mDAAqB;AAEpB;IAAR,KAAK,EAAE;;oDAA+B;AAE9B;IAAR,KAAK,EAAE;;qDAAuB;AAEtB;IAAR,KAAK,EAAE;;yDAAoC;AAEnC;IAAR,KAAK,EAAE;;0DAAqC;AAEpC;IAAR,KAAK,EAAE;;sDAA2D;AAE1D;IAAR,KAAK,EAAE;;sDAAiC;AAEhC;IAAR,KAAK,EAAE;;mDAA4B;AAE3B;IAAR,KAAK,EAAE;;oDAA6B;AAE5B;IAAR,KAAK,EAAE;;oDAAsB;AAErB;IAAR,KAAK,EAAE;;mDAA8B;AAEN;IAA/B,KAAK,CAAC,uBAAuB,CAAC;;iEAA4C;AAElE;IAAR,KAAK,EAAE;;wDAAmC;AAElC;IAAR,KAAK,EAAE;;+DAA0C;AAEzC;IAAR,KAAK,EAAE;;iDAA4B;AAC3B;IAAR,KAAK,EAAE;;kDAAyB;AACxB;IAAR,KAAK,EAAE;;qDAAsC;AAEpC;IAAT,MAAM,EAAE;8BAAoB,YAAY;yDAAgC;AAC/D;IAAT,MAAM,EAAE;8BAAa,YAAY;kDAAoC;AAC5D;IAAT,MAAM,EAAE;8BAAO,YAAY;4CAAyC;AAC3D;IAAT,MAAM,EAAE;8BAAW,YAAY;gDAA2B;AAjGlD,cAAc;IAZ1B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,6gkBAAqC;QAErC,UAAU,EAAE;YACR,OAAO,CAAC,cAAc,EAAE;gBACpB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzC,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aACxF,CAAC;SACL;;KACJ,CAAC;;GACW,cAAc,CAiZ1B;;;ICzZY,iBAAiB,yBAA9B,MAAa,iBAAiB;IAsE1B;QAxDS,cAAS,GAAG,GAAG,CAAC;QAEhB,SAAI,GAAG,CAAC,CAAC;QAET,eAAU,GAAG,SAAS,CAAC;QAYvB,cAAS,GAAG,KAAK,CAAC;QAElB,yBAAoB,GAAG,EAAE,CAAC;QAE3B,eAAU,GAAW,MAAM,CAAC;QAY5B,YAAO,GAAW,MAAM,CAAC;QAYzB,eAAU,GAAW,MAAM,CAAC;QAgBpC,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KANR;IAjDjB,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IACD,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAOQ,IAAI,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACvC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAChD;KACJ;IAGQ,IAAI,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,MAAM,CAAC,KAAa;QACpB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;SACzB;aAAM;YACH,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAC7C;KACJ;IAGQ,IAAI,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACvC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAChD;KACJ;IAID,QAAQ,MAAY;IAMpB,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC3C;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;YACzB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;KAChB;CAEJ,CAAA;AA/F4D;IAAxD,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;sDAAC;AAExE;IAAR,KAAK,EAAE;;+CAAc;AAEb;IAAR,KAAK,EAAE;;gDAAe;AAEd;IAAR,KAAK,EAAE;;sDAAqB;AAEpB;IAAR,KAAK,EAAE;;mDAAmB;AAElB;IAAR,KAAK,EAAE;;mDAAmB;AAElB;IAAR,KAAK,EAAE;;oDAAiB;AAEhB;IAAR,KAAK,EAAE;;+CAAU;AAET;IAAR,KAAK,EAAE;;qDAAwB;AAEhB;IAAf,KAAK,CAAC,OAAO,CAAC;;8CAAU;AAUhB;IAAR,KAAK,EAAE;;oDAAmB;AAElB;IAAR,KAAK,EAAE;;+DAA2B;AAG1B;IAAR,KAAK,EAAE;;;kDAEP;AAUQ;IAAR,KAAK,EAAE;;;+CAEP;AAUQ;IAAR,KAAK,EAAE;;;kDAEP;AA7DQ,iBAAiB;IAZ7B,SAAS,CAAC;QACP,QAAQ,EAAE,eAAe;QACzB,s9BAAwC;QAExC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAiB,CAAC;gBAChD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;;GACW,iBAAiB,CAiG7B;;IC3GY,YAAY,GAAzB,MAAa,YAAY;IAMrB,YAAmB,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;KAAK;IAElD,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;CACJ,CAAA;;YALgC,WAAW;;AAJ/B;IAAR,KAAK,EAAE;;0CAAc;AAEF;IAAnB,KAAK,CAAC,WAAW,CAAC;;0CAAc;AAJxB,YAAY;IAJxB,SAAS,CAAC;QACP,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,EAAE;KACX,CAAC;qCAO+B,WAAW;GAN/B,YAAY,CAWxB;;ACZD;AACA,MAAM,qBAAqB,GAAG,CAAC,CAAC;;;;;AAShC,IAAa,kCAAkC,GAA/C,MAAa,kCAAkC;IA6B3C,YACY,SAAoB,EACpB,MAAc;QADd,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAQ;;;;;;;QAvBjB,cAAS,GAAW,KAAK,CAAC;;QAG1B,iBAAY,GAAW,GAAG,CAAC;;QAM1B,mBAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAIhE,WAAM,GAAW,CAAC,CAAC;QAEnB,WAAM,GAAW,CAAC,CAAC;QAEnB,wBAAmB,GAAW,qBAAqB,CAAC;QAEpD,gBAAW,GAAqB,IAAI,OAAO,EAAW,CAAC;KAK1D;IAEL,QAAQ;QACJ,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,eAAe;QACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAC5B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC9B,CAAC,SAAS,CAAC,CAAC,MAAe;YACxB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;gBACjD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACxD,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;SACJ,CAAC,CAAC;KACN;IAED,WAAW;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAED,iBAAiB;QACb,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;SAEpD;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACnB;KACJ;IAED,sBAAsB;QAClB,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CACjC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAC3B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,GAAG,CAAC,CAAC,KAAY;YACb,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACjC,CAAC,CACL,CAAC,SAAS,EAAE,CAAC;KACjB;IAED,iBAAiB,CAAC,KAAU;QACxB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,OAAO;aACV;YACD,MAAM,sBAAsB,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YACrE,MAAM,sBAAsB,GAAW,IAAI,CAAC,mBAAmB,GAAG,sBAAsB,CAAC;YACzF,MAAM,SAAS,GAAW,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,sBAAsB,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;YAEnG,MAAM,gBAAgB,GAAW,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;YAEnF,IAAI,CAAC,gBAAgB,GAAG,SAAS,KAAK,sBAAsB,EAAE;gBAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAY,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;aAC3D;SACJ,CAAC,CAAC;KACN;IAED,qBAAqB;QACjB,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;KACrF;CAEJ,CAAA;;YAnE0B,SAAS;YACZ,MAAM;;AAvBjB;IAAR,KAAK,EAAE;;qEAA2B;AAG1B;IAAR,KAAK,EAAE;;wEAA4B;AAG3B;IAAR,KAAK,EAAE;;oEAAoB;AAGlB;IAAT,MAAM,EAAE;8BAAiB,YAAY;0EAAkC;AAjB/D,kCAAkC;IAH9C,SAAS,CAAC;QACP,QAAQ,EAAE,sBAAsB;KACnC,CAAC;qCA+ByB,SAAS;QACZ,MAAM;GA/BjB,kCAAkC,CAiG9C;;IC1GY,kBAAkB,GAA/B,MAAa,kBAAkB;IAI7B,YAAmB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAF9B,qBAAgB,GAAG,KAAK,CAAC;KAGjC;IAGD,aAAa,CAAC,KAAK;QACjB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;IAGD,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACxC;IAED,aAAa,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9D;KACF;CAEF,CAAA;;YAnB+B,SAAS;;AAF9B;IAAR,KAAK,EAAE;;4DAA0B;AAMlC;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uDAGzC;AAGD;IADC,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;iDAGnC;AAfU,kBAAkB;IAH9B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;KACxB,CAAC;qCAK8B,SAAS;GAJ5B,kBAAkB,CAuB9B;;ICvBY,kBAAkB,GAA/B,MAAa,kBAAkB;IAE7B,YAAmB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;KACtC;IAGD,aAAa,CAAC,KAAK;QACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAClC;IAGD,gBAAgB,CAAC,KAAK;QACpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC9C;IAGD,aAAa,CAAC,KAAK,EAAE,SAAS;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACnC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,GAAG,EAAE,CAAC;SACb;aAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;SAC/C;aAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;SAC3D;aAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE;YAC9B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;SACvE;aAAM;YACL,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;SACvE;QACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACjD;CACF,CAAA;;YAjC+B,SAAS;;AAIvC;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uDAGzC;AAGD;IADC,YAAY,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;0DAG7C;AAbU,kBAAkB;IAH9B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;KACxB,CAAC;qCAG8B,SAAS;GAF5B,kBAAkB,CAmC9B;;ICnCY,kBAAkB,GAA/B,MAAa,kBAAkB;IAI3B,YAAmB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAF9B,cAAS,GAAG,KAAK,CAAC;KAG1B;IAGD,aAAa,CAAC,KAAK;QACf,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC7B;IAGD,OAAO,CAAC,KAAK;QACT,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,aAAa,CAAC,KAAK;QACf,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;SACrE;KACJ;CAEJ,CAAA;;YAnBiC,SAAS;;AAF9B;IAAR,KAAK,EAAE;;qDAAmB;AAM3B;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uDAGzC;AAGD;IADC,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;iDAGnC;AAfQ,kBAAkB;IAH9B,SAAS,CAAC;QACP,QAAQ,EAAE,aAAa;KAC1B,CAAC;qCAKgC,SAAS;GAJ9B,kBAAkB,CAuB9B;;ICvBY,kBAAkB,GAA/B,MAAa,kBAAkB;IAI7B,YAAmB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAF9B,qBAAgB,GAAG,KAAK,CAAC;KAGjC;IAGD,aAAa,CAAC,KAAK;QACjB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;IAGD,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACxC;IAED,aAAa,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9D;KACF;CAEF,CAAA;;YAnB+B,SAAS;;AAF9B;IAAR,KAAK,EAAE;;4DAA0B;AAMlC;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;uDAGzC;AAGD;IADC,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;iDAGnC;AAfU,kBAAkB;IAH9B,SAAS,CAAC;QACT,QAAQ,EAAE,aAAa;KACxB,CAAC;qCAK8B,SAAS;GAJ5B,kBAAkB,CAuB9B;;MC3BY,gBAAgB,GAAiB;IAC1C;QACI,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,uDAAuD;QACnE,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,yDAAyD;QACrE,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,0DAA0D;QACtE,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,2DAA2D;QACvE,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,2DAA2D;QACvE,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,kCAAkC;QAC9C,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,kCAAkC;QAC9C,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,mCAAmC;KAClD;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,IAAI;KACjB,EAAE;QACC,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,IAAI;KACjB;IACD;QACI,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,IAAI;KACjB;CACJ,CAAC;AAEF,MAAa,gCAAgC,GAAG;IAC5C,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,gBAAgB;IAC1B,KAAK,EAAE,IAAI;CACd;;IClFY,4BAA4B,GAAzC,MAAa,4BAA4B;IAWrC;QATU,sBAAiB,GAAyB,IAAI,YAAY,EAAE,CAAC;QAE9D,aAAQ,GAAY,KAAK,CAAC;QAEF,eAAU,GAAW,aAAa,CAAC;QACvC,gBAAW,GAAW,YAAY,CAAC;QAC7B,gBAAW,GAAW,SAAS,CAAC;QAC/B,iBAAY,GAAW,KAAK,CAAC;KAEhD;IAE4B,UAAU,CAAC,GAAG;QACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,eAAe,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAClC;KACJ;IAE6C,WAAW,CAAC,GAAG;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,eAAe,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;SACnC;KACJ;IAEwC,MAAM,CAAC,GAAG;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,eAAe,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;YACrC,MAAM,WAAW,GAAgB,KAAK,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5C;KACJ;CAEJ,CAAA;AA5Ca;IAAT,MAAM,EAAE;8BAAoB,YAAY;uEAA8B;AAE9D;IAAR,KAAK,EAAE;;8DAA2B;AAEF;IAAhC,WAAW,CAAC,kBAAkB,CAAC;;gEAAoC;AACvC;IAA5B,WAAW,CAAC,cAAc,CAAC;;iEAAoC;AAC7B;IAAlC,WAAW,CAAC,oBAAoB,CAAC;;iEAAiC;AAC/B;IAAnC,WAAW,CAAC,qBAAqB,CAAC;;kEAA8B;AAI3B;IAArC,YAAY,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;8DAQpC;AAEsC;IAAtC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;+DAQrC;AAEiC;IAAjC,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;0DAWhC;AA5CQ,4BAA4B;IAHxC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;KAChC,CAAC;;GACW,4BAA4B,CA8CxC;;AC9CD;AACA,MAAM,qBAAqB,GAAG,EAAE,CAAC;;;;;AASjC,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAkBpC,YACY,yBAAmD,EACnD,OAAe;QADf,8BAAyB,GAAzB,yBAAyB,CAA0B;QACnD,YAAO,GAAP,OAAO,CAAQ;QAhBnB,WAAM,GAAW,CAAC,CAAC;QAEnB,WAAM,GAAW,CAAC,CAAC;QAEnB,gBAAW,GAAqB,IAAI,OAAO,EAAW,CAAC;QAEtD,2BAAsB,GAAW,KAAK,CAAC;QACvC,2BAAsB,GAAW,GAAG,CAAC;QACrC,2BAAsB,GAAY,KAAK,CAAC;QAExC,+BAA0B,GAAW,qBAAqB,CAAC;QAE1D,aAAQ,GAAgC,IAAI,YAAY,EAAiB,CAAC;KAK/E;IAEL,QAAQ;QACJ,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC;YAC3E,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAED,iBAAiB;QACb,IAAI,OAAO,IAAI,CAAC,sBAAsB,KAAK,QAAQ,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACtG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,CAAC;SACjE;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACnB;KACJ;IAED,sBAAsB;QAClB,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAA;QAE9C,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CACjC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAC3B,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,EACzC,GAAG,CAAC,CAAC,KAAY,KAAW,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAC7D,CAAC,SAAS,EAAE,CAAC;KACjB;IAED,iBAAiB,CAAC,KAAU;QACxB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC3B,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC7B,OAAO;aACV;YACD,MAAM,sBAAsB,GAAW,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,CAAC;YACtF,MAAM,sBAAsB,GAAW,IAAI,CAAC,0BAA0B,GAAG,sBAAsB,CAAC;YAChG,MAAM,SAAS,GAAW,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,sBAAsB,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;YACnG,MAAM,gBAAgB,GAAW,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;YAEnF,IAAI,CAAC,gBAAgB,GAAG,SAAS,KAAK,sBAAsB,EAAE;gBAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;aACtD;SACJ,CAAC,CAAC;KACN;CAEJ,CAAA;;YAxD0C,wBAAwB;YAC1C,MAAM;;AAVlB;IAAR,KAAK,EAAE;;2EAAwC;AACvC;IAAR,KAAK,EAAE;;2EAAsC;AACrC;IAAR,KAAK,EAAE;;2EAAyC;AACxC;IAAR,KAAK,EAAE;;2EAAkC;AACjC;IAAR,KAAK,EAAE;;+EAA4D;AAE1D;IAAT,MAAM,EAAE;8BAAW,YAAY;6DAAoD;AAhB3E,2BAA2B;IAHvC,SAAS,CAAC;QACP,QAAQ,EAAE,sBAAsB;KACnC,CAAC;qCAoByC,wBAAwB;QAC1C,MAAM;GApBlB,2BAA2B,CA2EvC;;ACtFD,MAAM,IAAI,GAAe,SAAe,CAAC;;AAKzC,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAgB1B,YACY,MAAc,EACd,gBAAkC;QADlC,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;QAhB7B,kBAAa,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAE5D,cAAS,GAAW,CAAC,CAAC;QAItB,kBAAa,GAAe,IAAI,CAAC;QAEjC,YAAO,GAAe;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC7B,CAAC,CAAC;SACN,CAAA;QAMG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACpE;IAED,WAAW;;;QAGP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;IAED,SAAS;QACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAC1B,SAAS,CAAC,EAAE,CAAC,EACb,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAC5C,CAAC;KACL;IAED,WAAW;QACP,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,gBAAgB;QACpB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/E,CAAC,CAAC;SACN;QAED,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;KACvB;IAEO,kBAAkB;QACtB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAEpB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;KACJ;CACJ,CAAA;;YA3CuB,MAAM;YACI,gBAAgB;;;AAlBrC,iBAAiB;IAH7B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAkBsB,MAAM;QACI,gBAAgB;GAlBrC,iBAAiB,CA4D7B;;IC9DW,cAMX;AAND,WAAY,cAAc;IACtB,2BAAS,CAAA;IACT,2BAAS,CAAA;IACT,2BAAS,CAAA;IACT,2BAAS,CAAA;IACT,2BAAS,CAAA;CACZ,EANW,cAAc,KAAd,cAAc,QAMzB;AAMD,MAAa,iBAAiB,GAAkB;IAC5C,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,qBAAqB;CAC5B,CAAC;AAEF,MAAa,kBAAkB,GAAkB;IAC7C,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,oBAAoB;IACxB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,qBAAqB;CAC5B,CAAC;AAKF,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAI9B,YACY,aAAgC,EAChC,YAA0B;QAD1B,kBAAa,GAAb,aAAa,CAAmB;QAChC,iBAAY,GAAZ,YAAY,CAAc;QAJ9B,aAAQ,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAMlD,IAAI,CAAC,aAAa;aACb,SAAS,EAAE;aACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,WAAW;QACP,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;IAID,SAAS,CAAC,aAA4B,EAAE,OAAc;QAClD,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CACtC,GAAG,CAAC,GAAG,CAAC,EACR,SAAS,CAAC,GAAG,EAAE,CAAC,EAChB,oBAAoB,CAChB,CAAC,CAAyC,EAAE,CAAyC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1G,EACD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACjB,CAAC;SACL;aAAM;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;SAClG;KACJ;IAIO,UAAU,CACd,aAA4B,EAC5B,OAAc;QAEd,IAAI,EAAE,GAAmB,cAAc,CAAC,EAAE,CAAC;QAE3C,MAAM,oBAAoB,GAAkC,EAAE,CAAC;QAE/D,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU;YACrC,MAAM,MAAM,GAAG,UAA4B,CAAC;YAC5C,MAAM,OAAO,GAAY,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAEzF,oBAAoB,CAAC,UAA4B,CAAC,GAAG,OAAO,CAAC;YAE7D,IAAI,OAAO,EAAE;gBACT,EAAE,GAAG,MAAM,CAAC;aACf;SACJ,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,EAAE,EAAE,oBAA4C,CAAC,CAAC;SAC7D;aAAM;YACH,OAAO,EAAE,CAAC;SACb;KACJ;CACJ,CAAA;;YA3D8B,iBAAiB;YAClB,YAAY;;;AAN7B,qBAAqB;IAHjC,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAM6B,iBAAiB;QAClB,YAAY;GAN7B,qBAAqB,CAgEjC;;IC1EY,gBAAgB,GAA7B,MAAa,gBAAgB;IAYzB,YACW,UAAsB,EACtB,QAAmB,EACnB,YAA0B,EAC1B,MAAc,EACd,QAAkB,EACjB,kBAAyC;QAL1C,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAW;QACnB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAU;QACjB,uBAAkB,GAAlB,kBAAkB,CAAuB;QAhBpC,cAAS,GAAqB,IAAI,OAAO,EAAE,CAAC;QAEpD,eAAU,GAAoC,IAAI,aAAa,CAAiC,CAAC,CAAC,CAAC;QAEnG,cAAS,GAAqB,IAAI,CAAC;QAEnC,gBAAW,GAAuB,IAAI,CAAC;QAEvC,YAAO,GAAiH,IAAI,CAAC;KASjI;IAEL,QAAQ;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;IAED,eAAe;QACX,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,kBAAkB;iBAClB,SAAS,CAAC,iBAAiB,CAAC;iBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC/B,SAAS,CAAC;gBACP,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB,CAAC,CAAC;SACV;KACJ;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B;IAEO,YAAY;QAChB,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,aAAa,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;YAChD,aAAa,GAAG,CAAC,CAAC;SACrB;QACD,IAAI,WAAW,KAAK,IAAI,EAAE;YACtB,WAAW,GAAG,CAAC,CAAC;SACnB;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;QAEnD,MAAM,aAAa,GAAe,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChE,IAAI,aAAa,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;YAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,WAAW,MAAM,aAAa,IAAI,CAAC,CAAC;SACvF;KACJ;IAEO,OAAO;QACX,MAAM,OAAO,GAAmC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAA0C,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACrE,MAAM,aAAa,GAAU,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEpE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK;YAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;gBACrC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBAEtB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,MAAc;oBAC9C,MAAM,EAAE,GAAG,MAA2B,CAAC;oBACvC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;wBACtE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,EAAE,CAAW,CAAC;qBACrC;iBACJ,CAAC,CAAC;aACN;iBAAM;gBACH,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;aACtC;SACJ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;KAClB;CAEJ,CAAA;;YAzE0B,UAAU;YACZ,SAAS;YACL,YAAY;YAClB,MAAM;YACJC,UAAQ;YACG,qBAAqB;;AAZ5C;IAAR,KAAK,EAAE;;mDAAoC;AAEnC;IAAR,KAAK,EAAE;;qDAAwC;AAEvC;IAAR,KAAK,EAAE;;iDAA8H;AAV7H,gBAAgB;IAhB5B,SAAS,CAAC;QACP,QAAQ,EAAE,6BAA6B;QACvC,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE;YACF,KAAK,EAAE,UAAU;YACjB,sBAAsB,EAAE,qBAAqB;YAC7C,yBAAyB,EAAE,wBAAwB;YACnD,yBAAyB,EAAE,wBAAwB;YACnD,wBAAwB,EAAE,yBAAyB;YACnD,sBAAsB,EAAE,uBAAuB;YAC/C,yBAAyB,EAAE,0BAA0B;YACrD,+BAA+B,EAAE,gCAAgC;YACjE,gCAAgC,EAAE,iCAAiC;YACnE,+BAA+B,EAAE,gCAAgC;SACpE;KACJ,CAAC;qCAcyB,UAAU;QACZ,SAAS;QACL,YAAY;QAClB,MAAM;QACJA,UAAQ;QACG,qBAAqB;GAlB5C,gBAAgB,CAsF5B;;IC3FY,gBAAgB,GAA7B,MAAa,gBAAgB;IAgCzB,YACY,UAAsB,EACH,gBAAkC,EACtD,QAAmB;QAFlB,eAAU,GAAV,UAAU,CAAY;QACH,qBAAgB,GAAhB,gBAAgB,CAAkB;QACtD,aAAQ,GAAR,QAAQ,CAAW;QAjCtB,cAAS,GAA+B,EAAE,CAAC;QAE3C,cAAS,GAAqB,IAAI,OAAO,EAAE,CAAC;QAEpD,kBAAa,GAAkB,IAAI,CAAC;QAE3B,aAAQ,GAA2B,IAAI,CAAC;QAExC,aAAQ,GAA2B,IAAI,CAAC;QAExC,cAAS,GAA2B,IAAI,CAAC;QAEzC,eAAU,GAA2B,IAAI,CAAC;QAE1C,aAAQ,GAA2B,IAAI,CAAC;QAExC,aAAQ,GAA2B,IAAI,CAAC;QAExC,WAAM,GAA8C,IAAI,CAAC;QAEzD,WAAM,GAA8C,IAAI,CAAC;QAEzD,WAAM,GAA8C,IAAI,CAAC;QAEzD,WAAM,GAA8C,IAAI,CAAC;QAEzD,WAAM,GAA8C,IAAI,CAAC;QAEzD,YAAO,GAA8C,IAAI,CAAC;KAM9D;IAEL,QAAQ;QACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;KACJ;IAED,eAAe,MAAY;IAE3B,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC7B;IAEO,gBAAgB;QACpB,MAAM,YAAY,mBACd,CAAC,UAAU,GAAG,IAAI,EAClB,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EACjE,CAAC,kBAAkB,IAAI,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EACzE,CAAC,mBAAmB,IAAI,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAC5E,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtE,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IACnE,IAAI,CAAC,cAAc,EAAE,CAC3B,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;aAC/D;SACJ;QAED,IAAI,CAAC,SAAS,qBAAQ,YAAY,CAAE,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;aAC5D;SACJ;KACJ;IAEO,iBAAiB;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvD;IAEO,UAAU,CAAC,IAA4B;QAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC;SACjC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACjC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACzC,OAAO,OAAO,IAAI,EAAE,CAAC;aACxB;SACJ;QACD,OAAO,IAAI,CAAC;KACf;IAEO,cAAc;QAClB,MAAM,mBAAmB,GAAkC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzH,MAAM,YAAY,GAAuB,EAAE,CAAC;QAE5C,mBAAmB,CAAC,OAAO,CAAC,IAAI;YAC5B,MAAM,QAAQ,GAAW,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAEhE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;gBACjC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;oBAClE,YAAY,CAAC,YAAY,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;iBAC7D;qBAAM;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAqB,CAAC;oBAChD,MAAM,WAAW,GAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAE/F,WAAW,CAAC,OAAO,CAAC,MAAM;wBACtB,MAAM,WAAW,GAAW,MAAM,KAAK,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,GAAG,CAAC;wBACpE,YAAY,CAAC,YAAY,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;qBAC7H,CAAC,CAAC;iBACN;aACJ;SACJ,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;KACvB;CAEJ,CAAA;;YA1F2B,UAAU;YACe,gBAAgB,uBAA5D,QAAQ,YAAI,IAAI;YACA,SAAS;;AA3BrB;IAAR,KAAK,EAAE;;kDAAyC;AAExC;IAAR,KAAK,EAAE;;kDAAyC;AAExC;IAAR,KAAK,EAAE;;mDAA0C;AAEzC;IAAR,KAAK,EAAE;;oDAA2C;AAE1C;IAAR,KAAK,EAAE;;kDAAyC;AAExC;IAAR,KAAK,EAAE;;kDAAyC;AAExC;IAAR,KAAK,EAAE;;gDAA0D;AAEzD;IAAR,KAAK,EAAE;;gDAA0D;AAEzD;IAAR,KAAK,EAAE;;gDAA0D;AAEzD;IAAR,KAAK,EAAE;;gDAA0D;AAEzD;IAAR,KAAK,EAAE;;gDAA0D;AAEzD;IAAR,KAAK,EAAE;;iDAA2D;AA9B1D,gBAAgB;IAR5B,SAAS,CAAC;QACP,QAAQ,EAAE,6BAA6B;QACvC,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE;YACF,OAAO,EAAE,UAAU;YACnB,cAAc,EAAE,eAAe;SAClC;KACJ,CAAC;IAmCO,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,IAAI,EAAE,CAAA;qCADC,UAAU;QACe,gBAAgB;QAC5C,SAAS;GAnCrB,gBAAgB,CA2H5B;;MC/IY,qBAAqB;IAO9B;QALQ,eAAU,GAAyC,EAAE,CAAC;QACtD,gBAAW,GAAG,uBAAuB,CAAC;QAEvC,WAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;KAEhD;IAEV,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;;;;;IAOM,QAAQ,CAAC,QAA4B;QACxC,IAAI,QAAQ,CAAC,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;SAClC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;YACxC,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SACxC;KACJ;;;;;IAMO,cAAc,CAAC,QAA4B;QAC/C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YAC3C,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;gBACvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO,GAAG,IAAI,CAAC;aAClB;SACJ;QACD,OAAO,OAAO,CAAC;KAClB;;;;IAKM,cAAc,CAAC,EAAU;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;SAC1C;QACD,OAAO,CAAC,CAAC;KACZ;;;;IAKM,cAAc,CAAC,EAAU,EAAE,IAAY;QAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YAErE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE;gBAC9B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB;SACJ;KACJ;;;;IAKM,aAAa,CAAC,EAAU,EAAE,UAAkB;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACxB;KACJ;;;;IAKM,eAAe,CAAC,EAAU,EAAE,YAAoB;QACnD,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACxB;KACJ;;;;;IAMM,WAAW,CAAC,KAAa,IAAI,CAAC,WAAW;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1C;QACD,OAAO,EAAwB,CAAC;KACnC;;;;IAKO,KAAK,CAAC,GAAQ;QAClB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;YACf,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACvB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aACtB;SACJ;QACD,OAAO,MAAM,CAAC;KACjB;CAEJ;;AC3GD;;;;;AASA,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAaxC,YACY,QAA+B,EAC/B,kBAAqC;QADrC,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAmB;QAXjD,UAAK,GAAW,EAAE,CAAC;QAIV,YAAO,GAAW,CAAC,CAAC;QAEnB,eAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;QAC9D,yBAAoB,GAAyB,IAAI,YAAY,EAAU,CAAC;QAM9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC9C,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;aAC3C;SACJ,CAAC,CAAC;KACN;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;SACvC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,WAAW,CAAC,OAAY;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;KAChC;;;;IAKD,QAAQ;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;KAC1C;;;;IAKD,IAAI;QACA,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;KAC1C;;;;IAKD,WAAW;QACP,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAClC;;;;IAKD,UAAU;QACN,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;KACnD;;;;IAKD,UAAU,CAAC,IAAY;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;;;;IAKD,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChD;;;;IAKD,WAAW;QACP,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;;;YAGrB,OAAO,CAAC,CAAC;SACZ;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;KACzD;;;;IAKD,aAAa;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;KACxD;;;;IAKO,YAAY;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;YAC/C,OAAO,CAAC,IAAI,CAAC,mDAAmD,IAAI,CAAC,EAAE,2DAA2D,CAAC,CAAC;SACvI;KACJ;;;;;;IAOO,eAAe;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,oBAAoB,KAAK,IAAI,CAAC,WAAW,EAAE;YAC3C,UAAU,CAAC;gBACP,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACzG,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACzG;KACJ;;;;;IAMO,oBAAoB,CAAC,QAA4B;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,UAAU,GAAG,QAAQ,CAAC,WAAW,IAAI,CAAC,GAAG,UAAU,EAAE;YACrD,OAAO,UAAU,CAAC;SACrB;aAAM,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;YACjC,OAAO,CAAC,CAAC;SACZ;QAED,OAAO,QAAQ,CAAC,WAAW,CAAC;KAC/B;;;;IAKO,eAAe,CAAC,WAAmB,EAAE,YAAoB,EAAE,UAAkB,EAAE,eAAuB;;QAE1G,eAAe,GAAG,CAAC,eAAe,CAAC;QACnC,IAAI,KAAK,GAAG,EAAE,CAAC;;;QAIf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,WAAW,IAAI,OAAO,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC;QAEpC,IAAI,cAAc,GAAG,eAAe,GAAG,UAAU,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,eAAe,EAAE;YAC5C,IAAI,KAAa,CAAC;YAClB,IAAI,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;YACvF,IAAI,qBAAqB,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;YAC7D,IAAI,qBAAqB,IAAI,CAAC,KAAK,eAAe,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;YACjF,IAAI,cAAc,KAAK,qBAAqB,IAAI,qBAAqB,CAAC,EAAE;gBACpE,KAAK,GAAG,KAAK,CAAC;aACjB;iBAAM;gBACH,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;aAC9B;YACD,KAAK,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,UAAU;aACpB,CAAC,CAAC;YACH,CAAC,EAAE,CAAC;SACP;QACD,OAAO,KAAK,CAAC;KAChB;;;;;IAMO,mBAAmB,CAAC,CAAS,EAAE,WAAmB,EAAE,eAAuB,EAAE,UAAkB;QACnG,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,eAAe,EAAE;YACvB,OAAO,UAAU,CAAC;SACrB;aAAM,IAAI,CAAC,KAAK,CAAC,EAAE;YAChB,OAAO,CAAC,CAAC;SACZ;aAAM,IAAI,eAAe,GAAG,UAAU,EAAE;YACrC,IAAI,UAAU,GAAG,OAAO,GAAG,WAAW,EAAE;gBACpC,OAAO,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;aAC3C;iBAAM,IAAI,OAAO,GAAG,WAAW,EAAE;gBAC9B,OAAO,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;aACpC;iBAAM;gBACH,OAAO,CAAC,CAAC;aACZ;SACJ;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;KACJ;CAEJ,CAAA;;YArMyB,qBAAqB;YACX,iBAAiB;;AATxC;IAAR,KAAK,EAAE;;2DAAY;AAEX;IAAR,KAAK,EAAE;;gEAAqB;AAEnB;IAAT,MAAM,EAAE;8BAAa,YAAY;mEAAsC;AAC9D;IAAT,MAAM,EAAE;8BAAuB,YAAY;6EAAsC;AAXzE,+BAA+B;IAJ3C,SAAS,CAAC;QACP,QAAQ,EAAE,2CAA2C;QACrD,QAAQ,EAAE,eAAe;KAC5B,CAAC;qCAewB,qBAAqB;QACX,iBAAiB;GAfxC,+BAA+B,CAmN3C;;IC9NY,qBAAqB,GAAlC,MAAa,qBAAqB;IAM9B,YAAmB,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;KAAK;IAElD,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;CAEJ,CAAA;;YANgC,WAAW;;AAJ/B;IAAR,KAAK,EAAE;;mDAAc;AAEE;IAAvB,KAAK,CAAC,eAAe,CAAC;;mDAAc;AAJ5B,qBAAqB;IAPjC,SAAS,CAAC;QACP,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,cAAc;QACxB,IAAI,EAAE;YACF,OAAO,EAAE,eAAe;SAC3B;KACJ,CAAC;qCAO+B,WAAW;GAN/B,qBAAqB,CAYjC;;ACjBD,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAuB7C,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAKzB,YAAoB,QAA+B;QAA/B,aAAQ,GAAR,QAAQ,CAAuB;;QAF3C,WAAM,GAAgC,EAAE,CAAC;KAEO;IAEjD,SAAS,CAA6B,UAAa,EAAE,IAAsB;;;;;QAM9E,IAAI,EAAE,UAAU,YAAY,KAAK,CAAC,EAAE;YAChC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,CAAC;aACtC;iBAAM;gBACH,OAAO,UAAU,CAAC;aACrB;SACJ;QAED,IAAI,cAAc,GAAY,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;QACvF,IAAI,QAAQ,GAAuB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,EAAE,GAAW,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,KAAa,CAAC;QAClB,IAAI,GAAW,CAAC;QAChB,IAAI,OAAO,GAAW,QAAQ,CAAC,YAAY,CAAC;QAE5C,IAAI,UAAU,GAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,IAAI,UAAU,YAAY,KAAK,EAAE;YAChD,OAAO,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC;YACnC,KAAK,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC;YAC7C,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;YAEtB,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACpE,IAAI,WAAW,EAAE;gBACb,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAU,CAAC;aACrC;iBAAM;gBACH,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,OAAO,KAAU,CAAC;aACrB;SACJ;aAAM;YACH,IAAI,UAAU,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACjC;;;YAID,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAEvD,OAAO,UAAU,CAAC;SACrB;KACJ;;;;IAKO,cAAc,CAAC,UAA0B,EAAE,MAAwB;QACvE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO;YACH,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC7D,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;YACvC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;YACrC,UAAU,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM;SACtD,CAAC;KACL;;;;IAKO,WAAW,CAAC,MAAwB;QACxC,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,gFAAgF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzH;KACJ;;;;;;;IAQO,SAAS,CAAC,EAAU,EAAE,UAA0B,EAAE,KAAqB,EAAE,KAAa,EAAE,GAAW;QACvG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;YACd,UAAU;YACV,IAAI,EAAE,UAAU,CAAC,MAAM;YACvB,KAAK;YACL,KAAK;YACL,GAAG;SACN,CAAC;KACL;;;;IAKO,gBAAgB,CAAC,EAAU,EAAE,UAA0B,EAAE,KAAa,EAAE,GAAW;QACvF,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,mBAAmB,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM;YACtD,KAAK,CAAC,KAAK,KAAK,KAAK;YACrB,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;QAEtB,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,KAAK,CAAC;SAChB;QAED,OAAQ,KAAK,CAAC,KAAoB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,OAAO,KAAK,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;KACvG;CACJ,CAAA;;YAjHiC,qBAAqB;;AAL1C,gBAAgB;IAJ5B,IAAI,CAAC;QACF,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,KAAK;KACd,CAAC;qCAMgC,qBAAqB;GAL1C,gBAAgB,CAsH5B;;;IC7HY,sBAAsB,8BAAnC,MAAa,sBAAsB;IAE/B,iBAAiB;IAEjB,QAAQ,MAAY;CAEvB,CAAA;AANY,sBAAsB;IAjBlC,SAAS,CAAC;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,eAAe;QACzB,wCAA0C;QAE1C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAqC,wBAAsB,CAAC;gBACpF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,iBAAiB;SAC7B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,sBAAsB,CAMlC;;;ICLY,yBAAyB,iCAAtC,MAAa,yBAAyB;IAuDlC;QA9BS,kBAAa,GAAqB,QAAQ,CAAC;QAE3C,QAAG,GAAoB,EAAE,CAAC;QAE1B,eAAU,GAAuE,SAAS,CAAC;QAE3F,mBAAc,GAA2H,YAAY,CAAC;QAEtJ,YAAO,GAAoB,EAAE,CAAC;QAE9B,WAAM,GAAY,KAAK,CAAC;QAExB,YAAO,GAAY,KAAK,CAAC;KAkBjB;IAhDjB,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;KACvC;IAIQ,IAAI,EAAE,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACvB;KACJ;IAEQ,IAAI,IAAI,CAAC,KAAa;QAC3B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACzB;KACJ;IAgBD,IAAI,UAAU;QACV,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjE,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;QAED,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KAC9B;IAED,IAAI,MAAM;QACN,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACzD,OAAO,IAAI,CAAC,GAAG,CAAC;SACnB;QAED,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;KAC1B;IAID,QAAQ,MAAY;CAEvB,CAAA;AAzD2B;IAAvB,WAAW,CAAC,SAAS,CAAC;;yDAAgB;AAEb;IAAzB,WAAW,CAAC,WAAW,CAAC;;2DAAkB;AAG3C;IADC,WAAW,CAAC,cAAc,CAAC;;;2DAG3B;AAEwC;IAAxC,eAAe,CAAC,sBAAsB,CAAC;8BAAyB,sBAAsB;yEAAC;AAE/E;IAAR,KAAK,EAAE;;;mDAIP;AAEQ;IAAR,KAAK,EAAE;;;qDAIP;AAEQ;IAAR,KAAK,EAAE;;gEAA4C;AAE3C;IAAR,KAAK,EAAE;;sDAA2B;AAE1B;IAAR,KAAK,EAAE;;6DAA4F;AAE3F;IAAR,KAAK,EAAE;;iEAAuJ;AAEtJ;IAAR,KAAK,EAAE;;0DAA+B;AAE9B;IAAR,KAAK,EAAE;;yDAAyB;AAExB;IAAR,KAAK,EAAE;;0DAA0B;AArCzB,yBAAyB;IAjBrC,SAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,yhBAA6C;QAE7C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAwC,2BAAyB,CAAC;gBAC1F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,oBAAoB;SAChC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,yBAAyB,CA2DrC;;;IC7DY,kBAAkB,0BAA/B,MAAa,kBAAkB;IAQ3B;QAJS,UAAK,GAAG,SAAS,CAAC;QAElB,cAAS,GAAG,SAAS,CAAC;KAEd;IAEjB,QAAQ,MAAY;CAEvB,CAAA;AAVY;IAAR,KAAK,EAAE;;iDAAe;AAEd;IAAR,KAAK,EAAE;;iDAAmB;AAElB;IAAR,KAAK,EAAE;;qDAAuB;AANtB,kBAAkB;IAhB9B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,sJAAqC;QAErC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAkB,CAAC;gBACjD,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,YAAY;SACxB;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,kBAAkB,CAY9B;;AC/BD;;;;;;;;;AAWA,MAAa,cAAc;IAUhB,OAAO,QAAQ,CAAC,OAAY,EAAE,SAAiB;QAClD,IAAI,OAAO,IAAI,SAAS,EAAE;YACtB,IAAI,OAAO,CAAC,SAAS,EAAE;gBAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAAE;iBAAM;gBAAE,OAAO,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;aAAE;SAC9G;KACJ;IAEM,OAAO,kBAAkB,CAAC,OAAY,EAAE,SAAiB;QAC5D,IAAI,OAAO,IAAI,SAAS,EAAE;YACtB,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,MAAM,MAAM,GAAa,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrD,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpC;aACJ;iBAAM;gBACH,MAAM,MAAM,GAAa,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9C,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,OAAO,CAAC,SAAS,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBACxC;aACJ;SACJ;KACJ;IAEM,OAAO,WAAW,CAAC,OAAY,EAAE,SAAiB;QACrD,IAAI,OAAO,IAAI,SAAS,EAAE;YACtB,IAAI,OAAO,CAAC,SAAS,EAAE;gBAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAAE;iBAAM;gBAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;aAAE;SACzM;KACJ;IAEM,OAAO,QAAQ,CAAC,OAAY,EAAE,SAAiB;QAClD,IAAI,OAAO,IAAI,SAAS,EAAE;YACtB,IAAI,OAAO,CAAC,SAAS,EAAE;gBAAE,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aAAE;iBAAM;gBAAE,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aAAE;SACpK;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,QAAQ,CAAC,OAAY;QAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,KAAK;YAC3E,OAAO,KAAK,KAAK,OAAO,CAAC;SAC5B,CAAC,CAAC;KACN;IAEM,OAAO,IAAI,CAAC,OAAY,EAAE,QAAgB;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzD;IAEM,OAAO,UAAU,CAAC,OAAY,EAAE,QAAgB;QACnD,IAAI,OAAO,EAAE;YACT,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,KAAK,CAAC,OAAY;QAC5B,MAAM,QAAQ,GAAQ,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QACpD,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;gBAAE,OAAO,GAAG,CAAC;aAAE;YAC3C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE;gBAAE,GAAG,EAAE,CAAC;aAAE;SAC5C;QACD,OAAO,CAAC,CAAC,CAAC;KACb;IAEM,OAAO,gBAAgB,CAAC,OAAY,EAAE,aAAqB;QAC9D,MAAM,QAAQ,GAAQ,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;QAC9E,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;gBAAE,OAAO,GAAG,CAAC;aAAE;YAC3C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE;gBAAE,GAAG,EAAE,CAAC;aAAE;SAC/G;QACD,OAAO,CAAC,CAAC,CAAC;KACb;IAEM,OAAO,aAAa,CAAC,OAAY,EAAE,MAAW,EAAE,WAAgB,MAAM;QACzE,IAAI,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,MAAM,EAAE;YAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACrC;KACJ;IAEM,OAAO,YAAY,CAAC,OAAY,EAAE,MAAW,EAAE,WAAgB,MAAM,EAAE,oBAA6B,IAAI;QAC3G,IAAI,OAAO,IAAI,MAAM,EAAE;YACnB,iBAAiB,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAExH,IAAI,QAAQ,KAAK,MAAM,EAAE;gBACrB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAC1C;iBAAM;gBACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAC1C;SACJ;KACJ;IAEM,OAAO,gBAAgB,CAAC,OAAY,EAAE,MAAW;QACpD,MAAM,yBAAyB,GAAqB,CAAC,EAAO;YACxD,IAAI,CAAC,EAAE,EAAE;gBACL,OAAO;aACV;YACD,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,UAAU;kBAClE,EAAE;kBACF,yBAAyB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;SACrD,CAAC;QAEF,MAAM,iBAAiB,GAAQ,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9J,MAAM,YAAY,GAAQ,MAAM,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAQ,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,eAAe,GAAW,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,gBAAgB,GAAW,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAuC,IAAI,CAAC,WAAW,EAAE,CAAC;QACxE,MAAM,eAAe,GAAQ,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,qBAAqB,GAAQ,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,qBAAqB,OAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,gBAAgB,EAAE,CAAC;QAE1I,IAAI,GAAW,EAAE,IAAY,CAAC;QAE9B,IAAI,YAAY,CAAC,GAAG,GAAG,YAAY,GAAG,iBAAiB,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC9E,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,qBAAqB,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YACzC,IAAI,YAAY,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;gBAC5B,GAAG,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC;aAC/B;SACJ;aAAM;YACH,GAAG,GAAG,YAAY,GAAG,YAAY,CAAC,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC;YAClE,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;SACzC;QAED,IAAI,iBAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE;;YAE1C,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;SAChE;aAAM,IAAI,YAAY,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE;;YAElG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;SAC3G;aAAM;;YAEH,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;SACzD;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KACpC;IAEM,OAAO,gBAAgB,CAAC,OAAY,EAAE,MAAW;QACpD,MAAM,iBAAiB,GAAQ,OAAO,CAAC,YAAY,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9J,MAAM,kBAAkB,GAAQ,iBAAiB,CAAC,MAAM,CAAC;QACzD,MAAM,iBAAiB,GAAQ,iBAAiB,CAAC,KAAK,CAAC;QACvD,MAAM,iBAAiB,GAAQ,MAAM,CAAC,YAAY,CAAC;QACnD,MAAM,gBAAgB,GAAQ,MAAM,CAAC,WAAW,CAAC;QACjD,MAAM,YAAY,GAAQ,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,eAAe,GAAW,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,gBAAgB,GAAW,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,GAAW,EAAE,IAAY,CAAC;QAE9B,IAAI,YAAY,CAAC,GAAG,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC7E,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,eAAe,GAAG,kBAAkB,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YAEzC,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,GAAG,GAAG,eAAe,CAAC;aACzB;SACJ;aAAM;YACH,GAAG,GAAG,iBAAiB,GAAG,YAAY,CAAC,GAAG,GAAG,eAAe,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;SACzC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,iBAAiB,GAAG,QAAQ,CAAC,KAAK,EAAE;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;SAAE;aAAM;YAAE,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,gBAAgB,CAAC;SAAE;QAEtN,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KACpC;IAED,OAAO,UAAU,CAAC,OAAY,EAAE,UAAe,EAAE;QAC7C,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI;cAChC,OAAO;cACP,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACnF;IAED,OAAO,oBAAoB,CAAC,OAAY;QACpC,MAAM,iBAAiB,GAAU,EAAE,CAAC;QAEpC,IAAI,OAAO,EAAE;YACT,MAAM,OAAO,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,aAAa,GAAG,eAAe,CAAC;YAEtC,MAAM,aAAa,GAA2B,CAAC,IAAS;gBACpD,MAAM,gBAAgB,GAAwB,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrF,OAAO,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;aACxN,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,eAAe,GAAQ,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACxF,IAAI,eAAe,EAAE;oBACjB,MAAM,SAAS,GAAQ,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;wBAC9B,MAAM,EAAE,GAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;wBAClD,IAAI,EAAE,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;4BACzB,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBAC9B;qBACJ;iBACJ;gBAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;oBAChD,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAClC;aACJ;SACJ;QAED,OAAO,iBAAiB,CAAC;KAC5B;IAEM,OAAO,2BAA2B,CAAC,OAAY;QAClD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,MAAM,aAAa,GAAQ,OAAO,CAAC,YAAY,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO,aAAa,CAAC;KACxB;IAEM,OAAO,0BAA0B,CAAC,OAAY;QACjD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,MAAM,YAAY,GAAQ,OAAO,CAAC,WAAW,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO,YAAY,CAAC;KACvB;IAEM,OAAO,0BAA0B,CAAC,OAAY;QACjD,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO,UAAU,CAAC;KACrB;IAEM,OAAO,YAAY,CAAC,SAAc,EAAE,IAAS;QAChD,MAAM,cAAc,GAAW,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAW,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAW,gBAAgB,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAW,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAQ,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAQ,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnD,MAAM,MAAM,GAAW,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC;QACvI,MAAM,MAAM,GAAQ,SAAS,CAAC,SAAS,CAAC;QACxC,MAAM,aAAa,GAAQ,SAAS,CAAC,YAAY,CAAC;QAClD,MAAM,UAAU,GAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,MAAM,GAAG,CAAC,EAAE;YACZ,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;SACzC;aAAM,IAAI,MAAM,GAAG,UAAU,GAAG,aAAa,EAAE;YAC5C,SAAS,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;SACtE;KACJ;IAEM,OAAO,MAAM,CAAC,OAAY,EAAE,QAAgB;QAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAE1B,IAAI,IAAI,GAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAW,CAAC,CAAC;QACxB,MAAM,IAAI,GAAe;YACrB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,QAAQ,CAAC;YAC9F,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;gBACd,CAAC,MAAM,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aACzF;SACJ,CAAC;QAEF,IAAI,EAAE,CAAC;KACV;IAEM,OAAO,OAAO,CAAC,OAAY,EAAE,EAAU;QAC1C,IAAI,OAAO,GAAW,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAW,QAAQ,GAAG,QAAQ,CAAC;QAExC,MAAM,MAAM,GAAG,WAAW,CAAC;YACvB,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;YAExB,IAAI,OAAO,IAAI,CAAC,EAAE;gBACd,OAAO,GAAG,CAAC,CAAC;gBACZ,aAAa,CAAC,MAAM,CAAC,CAAC;aACzB;YAED,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SACnC,EAAE,QAAQ,CAAC,CAAC;KAChB;IAEM,OAAO,kBAAkB;QAC5B,MAAM,GAAG,GAAgB,QAAQ,CAAC,eAAe,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;KACvE;IAEM,OAAO,mBAAmB;QAC7B,MAAM,GAAG,GAAgB,QAAQ,CAAC,eAAe,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;KACzE;IAEM,OAAO,OAAO,CAAC,OAAY,EAAE,QAAgB;QAChD,MAAM,CAAC,GAAY,OAAO,CAAC,SAAS,CAAC;QACrC,MAAM,CAAC,GACH,CAAC,CAAC,SAAS,CAAC;YACZ,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,oBAAoB,CAAC;YACvB,CAAC,CAAC,mBAAmB,CAAC;YACtB,UAAU,CAAM;gBACZ,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACrE,CAAC;QACN,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACpC;IAEM,OAAO,aAAa,CAAC,EAAO,EAAE,MAAY;QAC7C,IAAI,KAAK,GAAW,EAAE,CAAC,WAAW,CAAC;QACnC,IAAI,MAAM,EAAE;YACR,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACzE;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,oBAAoB,CAAC,EAAO;QACtC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KACzE;IAEM,OAAO,mBAAmB,CAAC,EAAO;QACrC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KACvE;IAEM,OAAO,UAAU,CAAC,EAAO;QAC5B,IAAI,KAAK,GAAW,EAAE,CAAC,WAAW,CAAC;QACnC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,KAAK,CAAC,EAAO;QACvB,IAAI,KAAK,GAAW,EAAE,CAAC,WAAW,CAAC;QACnC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,cAAc,CAAC,EAAO;QAChC,IAAI,MAAM,GAAW,EAAE,CAAC,YAAY,CAAC;QACrC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,cAAc,CAAC,EAAO,EAAE,MAAY;QAC9C,IAAI,MAAM,GAAW,EAAE,CAAC,YAAY,CAAC;QAErC,IAAI,MAAM,EAAE;YACR,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SAC1E;QAED,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,SAAS,CAAC,EAAO;QAC3B,IAAI,MAAM,GAAW,EAAE,CAAC,YAAY,CAAC;QACrC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAElJ,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,QAAQ,CAAC,EAAO;QAC1B,IAAI,KAAK,GAAW,EAAE,CAAC,WAAW,CAAC;QACnC,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExD,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEjJ,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,WAAW;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC;QACnB,MAAM,CAAC,GAAa,QAAQ,CAAC;QAC7B,MAAM,CAAC,GAAgB,CAAC,CAAC,eAAe,CAAC;QACzC,MAAM,CAAC,GAAoB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAW,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;QACnE,MAAM,CAAC,GAAW,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;QAEtE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAClC;IAEM,OAAO,SAAS,CAAC,EAAO;QAC3B,MAAM,IAAI,GAAQ,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAE7C,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YAC1G,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;SACjH,CAAC;KACL;IAEM,OAAO,kBAAkB,CAAC,OAAY,EAAE,kBAAuB;QAClE,MAAM,UAAU,GAAQ,OAAO,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC5C;QACD,OAAO,UAAU,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAC/D;IAEM,OAAO,YAAY;QACtB,OAAO,SAAS,CAAC,SAAS,CAAC;KAC9B;IAEM,OAAO,IAAI;QACd,MAAM,EAAE,GAAW,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAE9C,MAAM,IAAI,GAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,CAAC,EAAE;;YAEV,OAAO,IAAI,CAAC;SACf;QAED,MAAM,OAAO,GAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,OAAO,GAAG,CAAC,EAAE;;YAEb,MAAM,EAAE,GAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;SACf;QAED,MAAM,IAAI,GAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,CAAC,EAAE;;YAEV,OAAO,IAAI,CAAC;SACf;;QAGD,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,KAAK;QACf,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAC9E;IAEM,OAAO,SAAS;QACnB,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACjD;IAEM,OAAO,aAAa;QACvB,OAAO,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;KACnE;IAEM,OAAO,WAAW,CAAC,OAAY,EAAE,MAAW;QAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/B;aAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE;YAC7C,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;SACjE;KACJ;IAEM,OAAO,WAAW,CAAC,OAAY,EAAE,MAAW;QAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/B;aAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE;YAC7C,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAChD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;SACnE;KACJ;IAEM,OAAO,aAAa,CAAC,OAAgB;QACxC,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC3C;aAAM;YACH,OAAO,CAAC,MAAM,EAAE,CAAC;SACpB;KACJ;IAEM,OAAO,SAAS,CAAC,GAAQ;QAC5B,OAAO,CAAC,OAAO,WAAW,KAAK,QAAQ;eAChC,GAAG,YAAY,WAAW;cAC3B,CAAC,GAAG,MAAM,OAAO,GAAG,KAAK,QAAQ,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;KAC5H;IAEM,OAAO,uBAAuB,CAAC,EAAgB;QAClD,IAAI,EAAE,EAAE;YACJ,MAAM,KAAK,GAAwB,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnH;aAAM;YACH,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI,EAAE;gBACxC,OAAO,IAAI,CAAC,wBAAwB,CAAC;aACxC;YAED,MAAM,SAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChE,SAAS,CAAC,SAAS,GAAG,qBAAqB,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErC,MAAM,cAAc,GAAW,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC;YAE/C,OAAO,cAAc,CAAC;SACzB;KACJ;IAEM,OAAO,wBAAwB;QAClC,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE;YACzC,OAAO,IAAI,CAAC,yBAAyB,CAAC;SACzC;QAED,MAAM,SAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChE,SAAS,CAAC,SAAS,GAAG,qBAAqB,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErC,MAAM,eAAe,GAAW,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAChF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC;QAEhD,OAAO,eAAe,CAAC;KAC1B;IAEM,OAAO,mBAAmB,CAAC,OAAY,EAAE,UAAkB,EAAE,IAAY;QAC3E,OAAe,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACrD;IAEM,OAAO,cAAc;QACxB,IAAI,MAAM,CAAC,YAAY,EAAE;YACrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;gBAC7B,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;aACjC;iBAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzJ,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;aAC3C;SACJ;aAAM,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;YAC7D,IAAI;gBACA,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;;aAEf;SACJ;KACJ;IAEM,OAAO,UAAU;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,MAAM,OAAO,GAA0C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/E,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAElB,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;aAC7C;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;aACjC;iBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;aACjC;SACJ;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAEM,OAAO,gBAAgB;QAC1B,MAAM,EAAE,GAAW,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,KAAK,GAAyB,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,oCAAoC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE5Q,OAAO;YACH,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;SAC3B,CAAC;KACL;IAEM,OAAO,SAAS,CAAC,KAAU;QAC9B,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAClC;aAAM;YACH,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;SACtF;KACJ;IAEM,OAAO,QAAQ,CAAC,OAAoB;QACvC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;KACpD;IAEM,OAAO,SAAS,CAAC,OAAoB;QACxC,OAAO,OAAO,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;KAClD;IAEM,OAAO,OAAO,CAAC,OAAoB;QACtC,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;KACvG;IAEM,OAAO,KAAK,CAAC,OAAoB,EAAE,OAAsB;QAC5D,OAAO,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC3E;IAEM,OAAO,oBAAoB,CAAC,OAAoB;QACnD,MAAM,iBAAiB,GAAU,cAAc,CAAC,IAAI,CAChD,OAAO,EACP;;;;;;iHAMqG,CACxG,CAAC;QAEF,MAAM,wBAAwB,GAAU,EAAE,CAAC;QAC3C,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE;YAC9C,IAAI,CAAC,EAAE,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE;gBAAE,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAAE;SAC1K;QACD,OAAO,wBAAwB,CAAC;KACnC;IAEM,OAAO,uBAAuB,CAAC,OAAoB,EAAE,OAAO,GAAG,KAAK;QACvE,MAAM,iBAAiB,GAAU,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,MAAM,YAAY,GAAW,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAEzG,IAAI,OAAO,EAAE;gBACT,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;oBAC1C,KAAK,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;iBACxC;qBAAM;oBACH,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;iBAC5B;aACJ;iBAAM,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5E,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;aAC5B;SACJ;QAED,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,OAAO,cAAc;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;KACxB;IAEM,OAAO,YAAY;QACtB,IAAI,MAAM,CAAC,YAAY,EAAE;YACrB,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC3C;aAAM,IAAI,QAAQ,CAAC,YAAY,EAAE;YAC9B,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC7C;aAAM,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC9B,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;SACnD;QAED,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,gBAAgB,CAAC,MAAW,EAAE,EAAgB;QACxD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC;SACf;QAED,QAAQ,MAAM;YACV,KAAK,UAAU,EAAE;gBACb,OAAO,QAAQ,CAAC;aACnB;YAAC,KAAK,QAAQ,EAAE;gBACb,OAAO,MAAM,CAAC;aACjB;YAAC,KAAK,OAAO,EAAE;gBACZ,OAAO,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,kBAAkB,CAAC;aACjC;YAAC,KAAK,OAAO,EAAE;gBACZ,OAAO,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,sBAAsB,CAAC;aACrC;YAAC,KAAK,SAAS,EAAE;gBACd,OAAO,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC;aAC5B;YAAC,KAAK,cAAc,EAAE;gBACnB,OAAO,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,aAAa,CAAC;aAC1C;YAAC,SAAS;gBACP,MAAM,IAAI,GAAgG,OAAO,MAAM,CAAC;gBAExH,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACnB,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;iBACzC;qBAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;oBACpE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;iBAChF;gBAED,MAAM,UAAU,GAA0B,CAAC,GAAQ,KAAc,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrH,MAAM,OAAO,GAAQ,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;gBAE5D,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;aACxF;SACJ;KACJ;;AA/rBa,qBAAM,GAAW,IAAI,CAAC;AAErB,uCAAwB,GAAW,IAAI,CAAC;AAExC,wCAAyB,GAAW,IAAI,CAAC;;ACjB5D;;;AAGA,SAAgB,wBAAwB;IACpC,MAAM,KAAK,CAAC;;;;uDAIuC,CAAC,CAAC;CACxD;;;;;AAMD,SAAgB,4BAA4B;IACxC,MAAM,KAAK,CAAC;2FAC2E,CAAC,CAAC;CAC5F;;;;;AAMD,SAAgB,4BAA4B;IACxC,MAAM,KAAK,CAAC;0FAC0E,CAAC,CAAC;CAC3F;;ACZD;;;;AASA,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IA0E3B,YACY,QAAiB,EAClB,WAAuB,EACtB,iBAAmC,EACvB,IAAoB,EAChC,kBAAqC;QAJrC,aAAQ,GAAR,QAAQ,CAAS;QAClB,gBAAW,GAAX,WAAW,CAAY;QACtB,sBAAiB,GAAjB,iBAAiB,CAAkB;QACvB,SAAI,GAAJ,IAAI,CAAgB;QAChC,uBAAkB,GAAlB,kBAAkB,CAAmB;QA7Ed,iBAAY,GAAY,IAAI,CAAC;QAEhE,kBAAa,GAAkB,IAAI,OAAO,EAAQ,CAAC;QACnD,kBAAa,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAG3C,gBAAW,GAAsB,IAAI,CAAC;QACtC,iBAAY,GAAY,KAAK,CAAC;QAC9B,UAAK,GAAY,KAAK,CAAC;;;QASvB,mBAAc,GAAY,KAAK,CAAC;QAEhC,eAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;;QA6ClB,yBAAoB,GAAY,IAAI,CAAC;;QAGjE,WAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAGtD,WAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAQ3D;IAEL,eAAe;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KAC3D;IAED,WAAW;QACP,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEO,iBAAiB;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;YAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACjD;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;YAC/D,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;SACrD;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SACnD;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SACnD;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACjD;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACjD;QAED,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;KACnC;;IAGD,IAAI,WAAW,KAAc,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;IAGxD,OAAO,CAAC,KAAiB;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE;YACvC,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;IAGD,YAAY,CAAC,KAAiB;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE;YACvC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;gBAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC/B;KACJ;IAGD,YAAY,CAAC,KAAiB;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE;YACvC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;aAC/B;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,UAAU,CAAC;oBACP,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;wBAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;qBACvB;iBACJ,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC/B;iBAAM;gBACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACrB;SACJ;KACJ;;IAGD,aAAa;QACT,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KACvE;;IAGD,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBAClG,MAAM,KAAK,GAAW,cAAc,CAAC,QAAQ,CAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAA6B,CAAC,CAAC;gBAC7G,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,MAAM,CAAC,EAAE;oBACzF,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;iBAC5C;aACJ;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;;IAGD,YAAY;QACR,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;;IAGD,cAAc;QACV,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC9B;;IAGD,KAAK;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC1C;;IAGD,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;KACjE;;;;;;;IAQO,oBAAoB;QACxB,IAAI,IAAI,CAAC,WAAW,EAAE;;YAElB,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAE;gBACrE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;qBAC3B,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;qBACA,SAAS,CAAC;oBACP,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;iBAClC,CAAC,CAAC;aACV;SACJ;KACJ;IAEO,uBAAuB;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;iBACzB,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;iBACA,SAAS,CAAC;gBACP,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC5B,CAAC,CAAC;SACV;KACJ;;;;;IAMO,YAAY;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;;;;;IAMO,aAAa;QACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC;;;QAIzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;;IAGO,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;KACJ;;IAGO,iBAAiB;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;KACJ;;;;;IAMO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,wBAAwB,EAAE,CAAC;SAC9B;KACJ;;;;;IAMO,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,gBAAqD,CAAC,CAAC;YACzF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACnD;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;;;;IAMO,iBAAiB;QACrB,MAAM,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;QACzC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;;QAGpD,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YAC/B,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;YAChC,YAAY,CAAC,aAAa,GAAG,kCAAkC,CAAC;SACnE;QAED,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QAClC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE1F,OAAO,YAAY,CAAC;KACvB;;;;IAKO,yBAAyB,CAAC,QAA+B;QAC7D,QAAQ,QAAQ;YACZ,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YACjD,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAClD,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAClD,KAAK,YAAY,CAAC;YAClB;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;SAC1D;KACJ;;;;;;IAOO,qBAAqB,CAAC,QAA2C;QACrE,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM;YAClE,MAAM,SAAS,GAAqB,MAAM,CAAC,cAAc,CAAC,QAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;YACpG,IAAI,SAAS,GAAqB,MAAM,CAAC,cAAc,CAAC,QAAQ,KAAK,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;YAE/F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;gBAC9B,SAAS,GAAG,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;aACzD;;YAGD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAEhC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;aACzD,CAAC,CAAC;SACN,CAAC,CAAC;KACN;;;;;;IAOO,YAAY;QAChB,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,GAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE9E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;;;QAK/E,IAAI,OAAO,GAAqB,QAAQ,CAAC;QACzC,IAAI,eAAe,GAAqB,gBAAgB,CAAC;QAEzD,MAAM,QAAQ,GAAoB,OAAO,CAAC;QAC1C,MAAM,gBAAgB,GAAoB,eAAe,CAAC;;QAG1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC9B,OAAO,GAAG,QAAQ,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;YAChD,eAAe,GAAG,gBAAgB,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;SACnE;QAED,IAAI,OAAO,GAAW,CAAC,CAAC;QACxB,IAAI,OAAO,GAAW,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE;YAC1E,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAChD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE;YAC1E,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAChD;;;;;;QAOD,IAAI,OAAO,GAAoB,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,WAAW,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;aAC1B,mBAAmB,CAAC,OAAO,CAAC;aAC5B,kBAAkB,CAAC,IAAI,CAAC;aACxB,aAAa,CAAC;YACX;gBACI,OAAO;gBACP,OAAO;gBACP,QAAQ;gBACR,QAAQ;gBACR,OAAO;aACV;YACD;gBACI,OAAO,EAAE,eAAe;gBACxB,OAAO;gBACP,QAAQ,EAAE,gBAAgB;gBAC1B,QAAQ;gBACR,OAAO;aACV;YACD;gBACI,OAAO;gBACP,OAAO,EAAE,eAAe;gBACxB,QAAQ;gBACR,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,CAAC,OAAO;aACpB;YACD;gBACI,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,gBAAgB;gBAC1B,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO,EAAE,CAAC,OAAO;aACpB;SACJ,CAAC;aACD,kBAAkB,CAAC,OAAO,CAAC;aAC3B,kBAAkB,CAAC,OAAO,CAAC,CAAC;KACpC;IAEO,qBAAqB;QACzB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;SAC/C;KACJ;IAEsC,gBAAgB,CAAC,KAAiB;QACrE,IAAI,KAAK,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE;YAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;KACJ;CACJ,CAAA;;YApbyB,OAAO;YACL,UAAU;YACH,gBAAgB;YACjB,cAAc,uBAAvC,QAAQ;YACmB,iBAAiB;;AA7Ed;IAAlC,WAAW,CAAC,oBAAoB,CAAC;;wDAA8B;AAsBpC;IAA3B,KAAK,CAAC,mBAAmB,CAAC;;mDAAuB;AAGxB;IAAzB,KAAK,CAAC,iBAAiB,CAAC;;yDAAuB;AAGrB;IAA1B,KAAK,CAAC,kBAAkB,CAAC;;qDAA6B;AAG5B;IAA1B,KAAK,CAAC,kBAAkB,CAAC;;qDAA6B;AAG5B;IAA1B,KAAK,CAAC,kBAAkB,CAAC;;wDAAmC;AAGjC;IAA3B,KAAK,CAAC,mBAAmB,CAAC;;sDAAoB;AAGnB;IAA3B,KAAK,CAAC,mBAAmB,CAAC;;sDAAoB;AAGf;IAA/B,KAAK,CAAC,uBAAuB,CAAC;;0DAAyB;AAG/B;IAAxB,KAAK,CAAC,gBAAgB,CAAC;;yDAAuB;AAGtB;IAAxB,KAAK,CAAC,gBAAgB,CAAC;;yDAAuB;AAGjB;IAA7B,KAAK,CAAC,qBAAqB,CAAC;;wDAAsB;AAGvB;IAA3B,KAAK,CAAC,mBAAmB,CAAC;;sDAAoB;AAGnB;IAA3B,KAAK,CAAC,mBAAmB,CAAC;;sDAAoB;AAGjB;IAA7B,KAAK,CAAC,qBAAqB,CAAC;;wDAAuB;AAGd;IAArC,KAAK,CAAC,6BAA6B,CAAC;;gEAAsC;AAGjE;IAAT,MAAM,EAAE;8BAAS,YAAY;kDAAkC;AAGtD;IAAT,MAAM,EAAE;8BAAS,YAAY;kDAAkC;AA4EhE;IADC,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCACnB,UAAU;;iDAIxB;AAGD;IADC,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCACnB,UAAU;;sDAO7B;AAGD;IADC,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCACnB,UAAU;;sDAgB7B;AAqUsC;IAAtC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCAAyB,UAAU;;0DAIxE;AA9fQ,kBAAkB;IAJ9B,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;IA+EO,WAAA,QAAQ,EAAE,CAAA;qCAHO,OAAO;QACL,UAAU;QACH,gBAAgB;QACjB,cAAc;QACZ,iBAAiB;GA/ExC,kBAAkB,CA+f9B;;;IC/fY,mBAAmB,2BAAhC,MAAa,mBAAmB;IA8D5B,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;QA5DlC,oBAAe,GAAY,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACnE,wBAAmB,GAAY,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAC5E,sBAAiB,GAAY,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACvE,0BAAqB,GAAY,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;QAChF,qBAAgB,GAAY,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACrE,yBAAoB,GAAY,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;QAC9E,iBAAY,GAAY,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC7D,iBAAY,GAAY,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC7D,mBAAc,GAAY,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE1E,oBAAe,GAAY,KAAK,CAAC;QAQxB,SAAI,GAAkC,QAAQ,CAAC;QAE/C,cAAS,GAAW,EAAE,CAAC;QAEvB,UAAK,GAAW,EAAE,CAAC;QAEnB,UAAK,GAAW,EAAE,CAAC;QASnB,SAAI,GAAW,IAAI,CAAC;QAEpB,YAAO,GAAW,IAAI,CAAC;QAEvB,YAAO,GAAuB,MAAM,CAAC;QAErC,aAAQ,GAAY,KAAK,CAAC;QAE1B,YAAO,GAAY,KAAK,CAAC;QAEzB,iBAAY,GAAY,KAAK,CAAC;QAE9B,YAAO,GAAW,EAAE,CAAC;QAErB,YAAO,GAAY,KAAK,CAAC;QAEzB,YAAO,GAAY,KAAK,CAAC;QAEf,eAAU,GAAY,KAAK,CAAC;QAErC,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC7D,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC7D,mBAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;QACvD,YAAO,GAA6B,IAAI,YAAY,CAAa,IAAI,CAAC,CAAC;QACvE,YAAO,GAA6B,IAAI,YAAY,CAAa,IAAI,CAAC,CAAC;QACxE,WAAM,GAA6B,IAAI,YAAY,CAAa,IAAI,CAAC,CAAC;KAEtC;IAEhD,QAAQ,MAAY;IAEpB,WAAW;QACP,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;SACxC;KACJ;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;KACzC;IAEO,kBAAkB,CAAC,GAAG,UAAoB;QAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;KACtF;IAED,aAAa;QACT,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;SAChD;KACJ;IAED,WAAW;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrC;KACJ;IAED,YAAY;QACR,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;KACJ;IAED,WAAW,CAAC,KAAiB;QACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAED,WAAW,CAAC,KAAiB;QACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAED,UAAU,CAAC,KAAiB;QACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAGD,QAAQ,CAAC,KAAc;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YACnC,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;CAEJ,CAAA;;YAhFoC,UAAU;;AAhDO;IAAjD,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,kBAAkB;2DAAC;AAE5E;IAAR,KAAK,EAAE;;+CAAY;AAEX;IAAR,KAAK,EAAE;;iDAAc;AAEb;IAAR,KAAK,EAAE;;iDAAgD;AAE/C;IAAR,KAAK,EAAE;;sDAAwB;AAEvB;IAAR,KAAK,EAAE;;kDAAoB;AAEnB;IAAR,KAAK,EAAE;;kDAAoB;AAEnB;IAAR,KAAK,EAAE;;wDAAqB;AAEpB;IAAR,KAAK,EAAE;;0DAAgC;AAE/B;IAAR,KAAK,EAAE;;sDAA4B;AAC3B;IAAR,KAAK,EAAE;;uDAA6B;AAE5B;IAAR,KAAK,EAAE;;iDAAqB;AAEpB;IAAR,KAAK,EAAE;;oDAAwB;AAEvB;IAAR,KAAK,EAAE;;oDAAsC;AAErC;IAAR,KAAK,EAAE;;qDAA2B;AAE1B;IAAR,KAAK,EAAE;;oDAA0B;AAEzB;IAAR,KAAK,EAAE;;yDAA+B;AAE9B;IAAR,KAAK,EAAE;;oDAAsB;AAErB;IAAR,KAAK,EAAE;;oDAA0B;AAEzB;IAAR,KAAK,EAAE;;oDAA0B;AAEf;IAAlB,KAAK,CAAC,UAAU,CAAC;;uDAA6B;AAErC;IAAT,MAAM,EAAE;8BAAgB,YAAY;0DAAkC;AAC7D;IAAT,MAAM,EAAE;8BAAgB,YAAY;0DAAkC;AAC7D;IAAT,MAAM,EAAE;8BAAiB,YAAY;2DAAkC;AACvD;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;oDAAkD;AACvE;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;oDAAkD;AACxE;IAAf,MAAM,CAAC,MAAM,CAAC;8BAAS,YAAY;mDAAkD;AA2EtF;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCAC1B,OAAO;;mDAKtB;AA5IQ,mBAAmB;IAjB/B,SAAS,CAAC;QACP,QAAQ,EAAE;oHACsG;QAChH,QAAQ,EAAE,YAAY;QACtB,ygGAAsC;QAEtC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAkC,qBAAmB,CAAC;gBAC9E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,aAAa;SACzB;;KACJ,CAAC;qCA+DmC,UAAU;GA9DlC,mBAAmB,CA8I/B;;;MCnKY,YAAY;CAGxB;AAED,IAAI,YAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,kBAAkB,0BAA/B,MAAa,kBAAkB;IAsC3B,YACY,kBAAqC,EACtC,UAAsB;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACtC,eAAU,GAAV,UAAU,CAAY;QAtCzB,UAAK,GAAW,cAAc,YAAY,EAAE,EAAE,CAAC;QAE9C,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,UAAK,GAAW,cAAc,CAAC;QAE/B,mBAAc,GAAW,QAAQ,CAAC;QAIlC,aAAQ,GAAY,KAAK,CAAC;QAE1B,qBAAgB,GAAY,KAAK,CAAC;QAElC,kBAAa,GAAY,KAAK,CAAC;QAE/B,aAAQ,GAAW,aAAa,CAAC;QAahC,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,iBAAY,GAAkC,IAAI,YAAY,EAAmB,CAAC;QAClF,oBAAe,GAAuB,IAAI,YAAY,EAAQ,CAAC;QASzE,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAN1B;IAlBI,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAYD,QAAQ,MAAM;IAMd,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,gBAAgB,CAAE,KAAc;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,UAAU,CAAC,IAAO,EAAE,KAAa;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACxD;KACJ;IAEM,cAAc;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;SAC/B;KACJ;CAEJ,CAAA;;YA3CmC,iBAAiB;YAC1B,UAAU;;AApCxB;IAAR,KAAK,EAAE;;8CAAkC;AAEjC;IAAR,KAAK,EAAE;;gDAA2B;AAE1B;IAAR,KAAK,EAAE;;iDAAgC;AAE/B;IAAR,KAAK,EAAE;;0DAAmC;AAElC;IAAR,KAAK,EAAE;;qDAAmB;AAElB;IAAR,KAAK,EAAE;;oDAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAAmC;AAElC;IAAR,KAAK,EAAE;;yDAAgC;AAE/B;IAAR,KAAK,EAAE;;oDAAkC;AAGjC;IAAR,KAAK,EAAE;;;+CAKP;AAKS;IAAT,MAAM,EAAE;8BAAU,YAAY;mDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAU,YAAY;mDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAe,YAAY;wDAAwD;AAClF;IAAT,MAAM,EAAE;8BAAkB,YAAY;2DAAkC;AApChE,kBAAkB;IAjB9B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,WAAW;QACrB,mtEAAqC;QAErC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAiC,oBAAkB,CAAC;gBAC5E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,YAAY;SACxB;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAwCkC,iBAAiB;QAC1B,UAAU;GAxCxB,kBAAkB,CAkF9B;;MC3GY,eAAgB,SAAQ,WAAW;IAAhD;;QAQI,oBAAe,GAAa,KAAK,CAAC;KAQrC;CAAA;;;ICMY,+BAA+B,uCAA5C,MAAa,+BAA+B;IAExC,YACW,SAAwD,EAC/B,YAA6B,EAChC,QAAqB;QAF3C,cAAS,GAAT,SAAS,CAA+C;QAC/B,iBAAY,GAAZ,YAAY,CAAiB;QAChC,aAAQ,GAAR,QAAQ,CAAa;KACjD;IAEL,QAAQ,MAAY;CAEvB,CAAA;;YAPyB,YAAY;YACgB,eAAe,uBAA5D,MAAM,SAAC,eAAe;4CACtB,MAAM,SAAC,YAAY;;AALf,+BAA+B;IAhB3C,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,QAAQ,EAAE,wBAAwB;QAClC,wqDAAmD;QAEnD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA8C,iCAA+B,CAAC;gBACtG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,0BAA0B;SACtC;;KACJ,CAAC;IAKO,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;qCAFH,YAAY;QACgB,eAAe;GAJxD,+BAA+B,CAU3C;;;AC9BD,IAAIC,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,yBAAyB,iCAAtC,MAAa,yBAAyB;IAqClC,YACY,kBAAqC,EACtC,UAAsB;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACtC,eAAU,GAAV,UAAU,CAAY;QArCzB,UAAK,GAAW,sBAAsBA,cAAY,EAAE,EAAE,CAAC;QAItD,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,UAAK,GAAW,EAAE,CAAC;QAEnB,cAAS,GAAW,EAAE,CAAC;QAEvB,gBAAW,GAAW,EAAE,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,gBAAW,GAAY,IAAI,CAAC;QAE7B,aAAQ,GAAW,CAAC,CAAC;QAQnB,cAAS,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAC3E,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC7D,mBAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAKnE;IAjBI,IAAI,OAAO,CAAC,KAAa;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAcD,QAAQ,MAAM;IAEd,WAAW;QACP,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;SACxC;KACJ;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAEM,aAAa;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;SACvC;KACJ;IAEM,WAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrC;KACJ;IAEM,YAAY;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;KACJ;IAGD,QAAQ,CAAC,KAAc;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;KACJ;CAEJ,CAAA;;YAlEmC,iBAAiB;YAC1B,UAAU;;AAnCiB;IAAjD,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,kBAAkB;iEAAC;AAE5E;IAAR,KAAK,EAAE;;qDAAkC;AAEjC;IAAR,KAAK,EAAE;;uDAA2B;AAE1B;IAAR,KAAK,EAAE;;wDAAoB;AAEnB;IAAR,KAAK,EAAE;;4DAAwB;AAEvB;IAAR,KAAK,EAAE;;8DAA0B;AAEzB;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;8DAA6B;AAG5B;IAAR,KAAK,EAAE;;;wDAEP;AAKS;IAAT,MAAM,EAAE;8BAAY,YAAY;4DAAoD;AAC3E;IAAT,MAAM,EAAE;8BAAU,YAAY;0DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;yDAAoC;AACxD;IAAT,MAAM,EAAE;8BAAU,YAAY;0DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAgB,YAAY;gEAAkC;AAC7D;IAAT,MAAM,EAAE;8BAAiB,YAAY;iEAAkC;AA+DxE;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCAC1B,OAAO;;yDAItB;AAtGQ,yBAAyB;IAjBrC,SAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,k5DAA6C;QAE7C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAwC,2BAAyB,CAAC;gBAC1F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,oBAAoB;SAChC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAuCkC,iBAAiB;QAC1B,UAAU;GAvCxB,yBAAyB,CAwGrC;;;IC3GY,2BAA2B,mCAAxC,MAAa,2BAA2B;IAkBpC,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAVxC,eAAU,GAAY,KAAK,CAAC;QAE5B,kBAAa,GAAY,KAAK,CAAC;QAE/B,aAAQ,GAAY,KAAK,CAAC;QAEzB,aAAQ,GAA0B,IAAI,YAAY,EAAW,CAAC;KAKnE;IAEL,QAAQ;QACJ,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;SACxC;KACJ;IAED,YAAY,CAAC,KAAc;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;CAEJ,CAAA;;YAd0B,UAAU;YACD,iBAAiB;;AAlBxC;IAAR,KAAK,EAAE;;yDAAc;AAEb;IAAR,KAAK,EAAE;;4DAAiB;AAEhB;IAAR,KAAK,EAAE;;6DAA2B;AAE1B;IAAR,KAAK,EAAE;;+DAAoB;AAEnB;IAAR,KAAK,EAAE;;+DAA6B;AAE5B;IAAR,KAAK,EAAE;;kEAAgC;AAE/B;IAAR,KAAK,EAAE;;6DAA2B;AAEzB;IAAT,MAAM,EAAE;8BAAW,YAAY;6DAAwC;AAhB/D,2BAA2B;IAjBvC,SAAS,CAAC;QACP,QAAQ,EAAE,sBAAsB;QAChC,QAAQ,EAAE,oBAAoB;QAC9B,2qCAA+C;QAE/C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA0C,6BAA2B,CAAC;gBAC9F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,sBAAsB;SAClC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAoByB,UAAU;QACD,iBAAiB;GApBxC,2BAA2B,CAiCvC;;IC1CY,mBAAmB,GAAhC,MAAa,mBAAoB,SAAQ,eAAe;IAEpD,YAAmB,MAAiB;QAChC,KAAK,EAAE,CAAC;QADO,WAAM,GAAN,MAAM,CAAW;KAEnC;IAEK,OAAO,CAAC,YAA6B;;YACvC,IAAI,MAAM,GAAY,KAAK,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;YAC3C,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;YACjC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;YAC9B,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC;YACjC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC9B,CAAC,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,QAAQ,GAAG,KAAK,EAAE;YAE/F,MAAM,IAAI,CAAC,MAAM;iBACZ,IAAI,CAAC,+BAA+B,EAAE,YAAY,CAAC;iBACnD,WAAW,EAAE;iBACb,IAAI,CACD,GAAG,CAAC,CAAC,QAAiB;gBAClB,IAAI,QAAQ,EAAE;oBACV,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,MAAM,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE;wBACvE,YAAY,CAAC,MAAM,EAAE,CAAC;qBACzB;iBACJ;qBAAM;oBACH,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,MAAM,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE;wBACvE,YAAY,CAAC,MAAM,EAAE,CAAC;qBACzB;iBACJ;gBACD,MAAM,GAAG,QAAQ,CAAC;aACrB,CAAC,CACL;iBACA,SAAS,EAAE,CAAC;YAEjB,OAAO,MAAM,CAAC;SACjB;KAAA;CAEJ,CAAA;;YAnC8B,SAAS;;;AAF3B,mBAAmB;IAH/B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAG6B,SAAS;GAF3B,mBAAmB,CAqC/B;;;ICvBY,4BAA4B,oCAAzC,MAAa,4BAA4B;IAwCrC,YACY,eAA+B,EAC/B,oBAAyC;QADzC,oBAAe,GAAf,eAAe,CAAgB;QAC/B,yBAAoB,GAApB,oBAAoB,CAAqB;QAtC5C,UAAK,GAAU,EAAE,CAAC;QAgBlB,aAAQ,GAAW,CAAC,CAAC;QAErB,iBAAY,GAAW,CAAC,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAM1B,mBAAc,GAAY,KAAK,CAAC;QAEhC,mBAAc,GAAW,EAAE,CAAC;QAE5B,oBAAe,GAAY,KAAK,CAAC;QAEjC,kBAAa,GAAY,KAAK,CAAC;QAE9B,eAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;QASlE,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAN1B;IAEL,QAAQ,MAAY;IAMpB,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,YAAY,CAAC,SAAiB;QAC1B,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACpH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;KAC7C;IAED,YAAY,CAAC,IAAU;QACnB,IAAI,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;KAC7C;IAED,gBAAgB,CAAC,cAAuB;QACpC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpC;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;KACjG;IAED,2BAA2B,CAAC,IAAU,EAAE,KAAa;QACjD,IAAI;YACA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBAC9B,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,sCAAsC,IAAI,CAAC,IAAI,YAAY;gBACpE,MAAM,EAAE;oBACJ,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;iBACrB;gBACD,MAAM,EAAE,SAAS;aACpB,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAC3B;KACJ;IAEO,mBAAmB,CAAC,SAAiB;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,eAAe,CAAC,sDAAsD,CAAC,CAAC;YAC7E,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;KACf;IAEO,iBAAiB,CAAC,SAAiB;QACvC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAY,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,eAAe,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7H,IAAI,eAAe,EAAE;gBACjB,IAAI,CAAC,eAAe,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC;gBACzE,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;aACT;SACJ;QAED,OAAO,KAAK,CAAC;KAChB;IAEO,sBAAsB,CAAC,SAAiB;;QAE5C,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC;SACf;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE1H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;YAGlF,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;;YAG1D,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1C,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAClF;;YAGD,IAAI,CAAC,OAAO,EAAE;gBACV,IAAI,CAAC,eAAe,CAAC,yCAAyC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChG,OAAO,KAAK,CAAC;aAChB;SACJ;QAED,OAAO,IAAI,CAAC;KACf;IAEO,iBAAiB,CAAC,OAAe;QACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;YACrB,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;KACN;IAEO,eAAe,CAAC,OAAe;QACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;YACrB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;KACN;CAEJ,CAAA;;YA/IgC,cAAc;YACT,mBAAmB;;AAxCQ;IAA5D,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAc,UAAU;iEAAC;AAE5E;IAAR,KAAK,EAAE;;2DAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAe;AAEd;IAAR,KAAK,EAAE;;0DAAc;AAEb;IAAR,KAAK,EAAE;;8DAAkB;AAEjB;IAAR,KAAK,EAAE;;oEAAwB;AAEvB;IAAR,KAAK,EAAE;;6DAAiB;AAEhB;IAAR,KAAK,EAAE;;iEAAqB;AAEpB;IAAR,KAAK,EAAE;;uEAA2B;AAE1B;IAAR,KAAK,EAAE;;8DAAsB;AAErB;IAAR,KAAK,EAAE;;kEAA0B;AAEzB;IAAR,KAAK,EAAE;;8DAA2B;AAE1B;IAAR,KAAK,EAAE;;8DAAmB;AAElB;IAAR,KAAK,EAAE;;oEAA0B;AAEzB;IAAR,KAAK,EAAE;;oEAAiC;AAEhC;IAAR,KAAK,EAAE;;oEAA6B;AAE5B;IAAR,KAAK,EAAE;;qEAAkC;AAEjC;IAAR,KAAK,EAAE;;mEAAgC;AAE9B;IAAT,MAAM,EAAE;8BAAa,YAAY;gEAAgC;AAtCzD,4BAA4B;IAjBxC,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,qBAAqB;QAC/B,26GAAkD;QAElD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA2C,8BAA4B,CAAC;gBAChG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,yBAAyB;SACrC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCA0C+B,cAAc;QACT,mBAAmB;GA1C5C,4BAA4B,CAwLxC;;;IC9LY,mBAAmB,2BAAhC,MAAa,mBAAmB;IAE5B,iBAAiB;IAEjB,QAAQ,MAAY;CAEvB,CAAA;AANY,mBAAmB;IAhB/B,SAAS,CAAC;QACP,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,YAAY;QACtB,gEAAsC;QAEtC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAkC,qBAAmB,CAAC;gBAC9E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,aAAa;SACzB;;KACJ,CAAC;;GACW,mBAAmB,CAM/B;;;ACnBD,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,sBAAsB,8BAAnC,MAAa,sBAAsB;IA6E/B,YACY,kBAAqC,EACtC,UAAsB;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACtC,eAAU,GAAV,UAAU,CAAY;QA7EzB,UAAK,GAAW,mBAAmBA,cAAY,EAAE,EAAE,CAAC;QAEnD,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,UAAK,GAAW,EAAE,CAAC;QAEnB,cAAS,GAAW,EAAE,CAAC;QAEvB,gBAAW,GAAW,EAAE,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,cAAS,GAAY,KAAK,CAAC;QAE3B,eAAU,GAAY,KAAK,CAAC;QAE5B,gBAAW,GAAY,KAAK,CAAC;QAE7B,SAAI,GAAgG,MAAM,CAAC;QAiC5G,aAAQ,GAAW,CAAC,CAAC;QAUnB,cAAS,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAC3E,mBAAc,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAChF,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,aAAQ,GAAwB,IAAI,YAAY,EAAS,CAAC;QASpE,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAN1B;IAvCI,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGQ,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGQ,IAAI,OAAO,CAAC,KAAa;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAiBD,QAAQ,MAAM;IAMd,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,gBAAgB,CAAE,KAAc;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;IAEM,kBAAkB,CAAC,KAAY;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;aACnB;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAED,mBAAmB,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;KACJ;;;;IAKM,KAAK;QACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACvC;KACJ;CAEJ,CAAA;;YAhFmC,iBAAiB;YAC1B,UAAU;;AA3ExB;IAAR,KAAK,EAAE;;kDAAkC;AAEjC;IAAR,KAAK,EAAE;;oDAA2B;AAE1B;IAAR,KAAK,EAAE;;qDAAoB;AAEnB;IAAR,KAAK,EAAE;;yDAAwB;AAEvB;IAAR,KAAK,EAAE;;2DAA0B;AAEzB;IAAR,KAAK,EAAE;;wDAA2B;AAE1B;IAAR,KAAK,EAAE;;wDAA2B;AAE1B;IAAR,KAAK,EAAE;;wDAA2B;AAE1B;IAAR,KAAK,EAAE;;yDAA4B;AAE3B;IAAR,KAAK,EAAE;;0DAA6B;AAE5B;IAAR,KAAK,EAAE;;2DAA8B;AAE7B;IAAR,KAAK,EAAE;;oDAA4G;AAE3G;IAAR,KAAK,EAAE;;mDAAa;AAEZ;IAAR,KAAK,EAAE;;mDAAa;AAEZ;IAAR,KAAK,EAAE;;yDAAmB;AAElB;IAAR,KAAK,EAAE;;oDAAiC;AAEhC;IAAR,KAAK,EAAE;;uDAAiB;AAEhB;IAAR,KAAK,EAAE;;+DAA8C;AAG7C;IAAR,KAAK,EAAE;;;mDAKP;AAMQ;IAAR,KAAK,EAAE;;;mDAEP;AAMQ;IAAR,KAAK,EAAE;;;qDAEP;AAK0D;IAA1D,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAW,UAAU;wDAAC;AAEtE;IAAT,MAAM,EAAE;8BAAY,YAAY;yDAAoD;AAC3E;IAAT,MAAM,EAAE;8BAAiB,YAAY;8DAAoD;AAChF;IAAT,MAAM,EAAE;8BAAU,YAAY;uDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;sDAAoC;AACxD;IAAT,MAAM,EAAE;8BAAU,YAAY;uDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAU,YAAY;uDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAW,YAAY;wDAAoC;AA3E3D,sBAAsB;IAjBlC,SAAS,CAAC;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,eAAe;QACzB,w5HAA0C;QAE1C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAqC,wBAAsB,CAAC;gBACpF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,iBAAiB;SAC7B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCA+EkC,iBAAiB;QAC1B,UAAU;GA/ExB,sBAAsB,CA8JlC;;;ACpLD,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,uBAAuB,+BAApC,MAAa,uBAAuB;IAgBhC,YACY,kBAAqC,EACtC,UAAsB;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACtC,eAAU,GAAV,UAAU,CAAY;QAhBzB,UAAK,GAAW,mBAAmBA,cAAY,EAAE,EAAE,CAAC;QAEnD,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE3B,aAAQ,GAAW,EAAE,CAAC;KAWzB;IAVI,IAAI,OAAO,CAAC,KAAa;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAOD,QAAQ,MAAM;CAEjB,CAAA;;YANmC,iBAAiB;YAC1B,UAAU;;AAdxB;IAAR,KAAK,EAAE;;mDAAkC;AAEjC;IAAR,KAAK,EAAE;;qDAA2B;AAG1B;IAAR,KAAK,EAAE;;;sDAEP;AAXQ,uBAAuB;IAjBnC,SAAS,CAAC;QACP,QAAQ,EAAE,kBAAkB;QAC5B,QAAQ,EAAE,gBAAgB;QAC1B,sNAA2C;QAE3C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAsC,yBAAuB,CAAC;gBACtF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,kBAAkB;SAC9B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAkBkC,iBAAiB;QAC1B,UAAU;GAlBxB,uBAAuB,CAuBnC;;;ACzCD,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,0BAA0B,kCAAvC,MAAa,0BAA0B;IAiCnC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QA/BjD,UAAK,GAAW,uBAAuBA,cAAY,EAAE,EAAE,CAAC;QAEvD,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAI1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,kBAAa,GAAY,KAAK,CAAC;QAE/B,kBAAa,GAAuB,OAAO,CAAC;QAgB3C,WAAM,GAAoC,IAAI,YAAY,EAAqB,CAAC;QAChF,wBAAmB,GAA0B,IAAI,YAAY,EAAW,CAAC;QAMnF,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KANqC;IAZrD,IAAI,KAAK,CAAC,GAAQ;QACvB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAOD,QAAQ,MAAY;IAMpB,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;CAEJ,CAAA;;YAzB2C,iBAAiB;;AA7BhD;IAAR,KAAK,EAAE;;sDAAkC;AAEjC;IAAR,KAAK,EAAE;;wDAA2B;AAE1B;IAAR,KAAK,EAAE;;yDAAe;AAEd;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;;iEAAgC;AAE/B;IAAR,KAAK,EAAE;;iEAA6C;AAE5C;IAAR,KAAK,EAAE;;4DAAmB;AAElB;IAAR,KAAK,EAAE;;iEAAwB;AAGvB;IAAR,KAAK,EAAE;;;uDAIP;AAKS;IAAT,MAAM,EAAE;8BAAS,YAAY;0DAA4D;AAChF;IAAT,MAAM,EAAE;8BAAsB,YAAY;uEAAwC;AA/B1E,0BAA0B;IAjBtC,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,mBAAmB;QAC7B,8eAA8C;QAE9C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAyC,4BAA0B,CAAC;gBAC5F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,qBAAqB;SACjC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAkC0C,iBAAiB;GAjChD,0BAA0B,CA0DtC;;;AC3ED,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,0BAA0B,kCAAvC,MAAa,0BAA0B;IAuDnC,YACY,kBAAqC,EACtC,UAAsB;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACtC,eAAU,GAAV,UAAU,CAAY;QAvDzB,UAAK,GAAW,uBAAuBA,cAAY,EAAE,EAAE,CAAC;QAEvD,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,gBAAW,GAAW,EAAE,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QA+BzB,cAAS,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAC3E,mBAAc,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAChF,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QASnE,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAN1B;IA7BI,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGQ,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAeD,QAAQ,MAAM;IAMd,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,gBAAgB,CAAE,KAAc;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;;;;IAKM,KAAK;QACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC3C,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC/C;KACJ;CAEJ,CAAA;;YAjEmC,iBAAiB;YAC1B,UAAU;;AArDxB;IAAR,KAAK,EAAE;;sDAAkC;AAEjC;IAAR,KAAK,EAAE;;wDAA2B;AAE1B;IAAR,KAAK,EAAE;;yDAAe;AAEd;IAAR,KAAK,EAAE;;6DAAmB;AAElB;IAAR,KAAK,EAAE;;+DAA0B;AAEzB;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAA2B;AAE1B;IAAR,KAAK,EAAE;;uDAAa;AAEZ;IAAR,KAAK,EAAE;;uDAAa;AAEZ;IAAR,KAAK,EAAE;;6DAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAsC;AAGrC;IAAR,KAAK,EAAE;;;uDAKP;AAMQ;IAAR,KAAK,EAAE;;;uDAEP;AAKkE;IAAlE,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BAAmB,UAAU;oEAAC;AAEtF;IAAT,MAAM,EAAE;8BAAY,YAAY;6DAAoD;AAC3E;IAAT,MAAM,EAAE;8BAAiB,YAAY;kEAAoD;AAChF;IAAT,MAAM,EAAE;8BAAU,YAAY;2DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;0DAAoC;AACxD;IAAT,MAAM,EAAE;8BAAU,YAAY;2DAAoC;AArD1D,0BAA0B;IAjBtC,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,mBAAmB;QAC7B,osCAA8C;QAE9C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAyC,4BAA0B,CAAC;gBAC5F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,qBAAqB;SACjC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAyDkC,iBAAiB;QAC1B,UAAU;GAzDxB,0BAA0B,CAyHtC;;;AC5ID,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,6BAA6B,qCAA1C,MAAa,6BAA6B;IA+GtC,YACY,kBAAqC,EACrC,OAAqB;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,YAAO,GAAP,OAAO,CAAc;QA/GzB,UAAK,GAAW,0BAA0BA,cAAY,EAAE,EAAE,CAAC;QAY3D,gBAAW,GAAa,EAAE,CAAC;QAQnC,SAAI,GAAS,IAAI,IAAI,EAAE,CAAC;QACxB,kBAAa,GAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7C,iBAAY,GAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE/C,oBAAe,GAAY,KAAK,CAAC;QAEjC,gBAAW,GAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAErD,eAAU,GAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAE5G,yBAAoB,GAAqB,OAAO,CAAC;QAIxC,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,cAAS,GAAW,EAAE,CAAC;QAEvB,UAAK,GAAW,EAAE,CAAC;QAEnB,gBAAW,GAAW,EAAE,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,YAAO,GAAY,KAAK,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAE1B,gBAAW,GAAY,IAAI,CAAC;QAM7B,kBAAa,GAAqB,OAAO,CAAC;QA0CxC,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,kBAAa,GAAyB,IAAI,YAAY,EAAU,CAAC;QACjE,iBAAY,GAAyB,IAAI,YAAY,EAAU,CAAC;QAChE,cAAS,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAC3E,mBAAc,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAChF,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QAanE,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KARpB;IA7GL,IAAI,WAAW,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,IAAI,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC7B;KACJ;IACD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAGD,IAAI,UAAU,CAAC,KAAe;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IACD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAuCQ,IAAI,YAAY,CAAC,KAAuB;QAC7C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,KAAK,KAAK,OAAO,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC5C;iBAAM,IAAI,KAAK,KAAK,MAAM,EAAE;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC1C;KACJ;IACD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAGQ,IAAI,KAAK,CAAC,KAAW;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;gBAC/B,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;aAClG;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;gBACrC,IAAI,CAAC,eAAe,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;aACxD;SACJ;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAkBD,QAAQ;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAMD,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEO,cAAc;QAClB,MAAM,eAAe,GAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACtF;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,EAAE;YACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;aACxC;SACJ;aAAM;YACH,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC3B;SACJ;KACJ;IAEM,mBAAmB,CAAC,WAA8B;QACrD,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;SAC3C;aAAM;YACH,IAAI,IAAI,CAAC,oBAAoB,KAAK,OAAO,EAAE;gBACvC,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;aACtC;SACJ;QACD,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAEM,SAAS;QACZ,IAAI,IAAI,CAAC,oBAAoB,KAAK,OAAO,EAAE;YACvC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;SACrD;aAAM,IAAI,IAAI,CAAC,oBAAoB,KAAK,MAAM,EAAE;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAEM,SAAS;QACZ,IAAI,IAAI,CAAC,oBAAoB,KAAK,OAAO,EAAE;YACvC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;aAAM,IAAI,IAAI,CAAC,oBAAoB,KAAK,MAAM,EAAE;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;;;;;IAMM,YAAY,CAAC,KAAa;QAC7B,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;;;;;IAMM,WAAW,CAAC,IAAY;QAC3B,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YAC/B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SACrC;aAAM,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;YACrC,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;;;;;;IAOO,mBAAmB,CAAC,KAAa,EAAE,IAAY;QACnD,IAAI,QAAQ,GAAW,KAAK,CAAC;QAC7B,IAAI,OAAO,GAAW,IAAI,CAAC;QAE3B,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACxH,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;aACxC;SACJ;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACxH,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;aACxC;SACJ;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAEM,eAAe,CAAC,KAAa;QAChC,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC;SAC1C;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,eAAe,CAAC,KAAa;QAChC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC1F,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvG;QACD,OAAO,KAAK,CAAC;KAChB;IAEM,cAAc,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;SAC5C;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,cAAc,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;oBAC5F,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;SACzG;QACD,OAAO,KAAK,CAAC;KAChB;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;KACJ;IAEM,YAAY,CAAC,KAAoB;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;gBAC/E,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;YACpC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEM,uBAAuB;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEO,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;KACJ;IAEO,YAAY;QAChB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,aAAa;QAChB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;iBAAM;gBACH,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;SACJ;KACJ;CAEJ,CAAA;;YA1OmC,iBAAiB;YAC5B,YAAY;;AA7ExB;IAAR,KAAK,EAAE;;yDAAkC;AAEjC;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;gEAAwB;AAEvB;IAAR,KAAK,EAAE;;4DAAoB;AAEnB;IAAR,KAAK,EAAE;;kEAA0B;AAEzB;IAAR,KAAK,EAAE;;+DAA2B;AAE1B;IAAR,KAAK,EAAE;;8DAA0B;AAEzB;IAAR,KAAK,EAAE;;+DAA2B;AAE1B;IAAR,KAAK,EAAE;;kEAA6B;AAE5B;IAAR,KAAK,EAAE;8BAAU,IAAI;8DAAC;AAEd;IAAR,KAAK,EAAE;8BAAU,IAAI;8DAAC;AAGd;IAAR,KAAK,EAAE;;;iEAaP;AAMQ;IAAR,KAAK,EAAE;8BAAkB,IAAI;qCAAJ,IAAI;0DAiB7B;AAKS;IAAT,MAAM,EAAE;8BAAU,YAAY;8DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAgB,YAAY;oEAAsC;AACjE;IAAT,MAAM,EAAE;8BAAe,YAAY;mEAAsC;AAChE;IAAT,MAAM,EAAE;8BAAY,YAAY;gEAAoD;AAC3E;IAAT,MAAM,EAAE;8BAAiB,YAAY;qEAAoD;AAChF;IAAT,MAAM,EAAE;8BAAU,YAAY;8DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;6DAAoC;AACxD;IAAT,MAAM,EAAE;8BAAU,YAAY;8DAAoC;AAEM;IAAxE,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;8BAAsB,gBAAgB;0EAAC;AA7GtG,6BAA6B;IAjBzC,SAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,sBAAsB;QAChC,ghIAAiD;QAEjD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA4C,+BAA6B,CAAC;gBAClG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,wBAAwB;SACpC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAiHkC,iBAAiB;QAC5B,YAAY;GAjHxB,6BAA6B,CA0VzC;;;AC5WD,IAAIA,cAAY,GAAG,CAAC,CAAC;;AAGrB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAmB5B,IAAa,4BAA4B,oCAAzC,MAAa,4BAA4B;IA6GrC,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QA7GzC,UAAK,GAAW,0BAA0BA,cAAY,EAAE,EAAE,CAAC;QAEnE,cAAS,GAAU,EAAE,CAAC;QAEtB,4BAAuB,GAAW,CAAC,CAAC;QAEpC,wBAAmB,GAAQ,IAAI,CAAC;QAMvB,OAAE,GAAW,IAAI,CAAC,KAAK,CAAC;QAExB,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,gBAAW,GAAW,YAAY,CAAC;QAIpC,cAAS,GAAY,KAAK,CAAC;QAQ3B,aAAQ,GAAY,KAAK,CAAC;QAQ1B,cAAS,GAAY,KAAK,CAAC;QAQ3B,iBAAY,GAAY,IAAI,CAAC;QAQ7B,kBAAa,GAAY,IAAI,CAAC;QA0B5B,oBAAe,GAAyB,IAAI,YAAY,EAAU,CAAC;QACnE,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,mBAAc,GAA0B,IAAI,YAAY,EAAW,CAAC;QAoD9E,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KA7BpB;IArFI,IAAI,QAAQ,CAAC,KAAU;QAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IACD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAGQ,IAAI,OAAO,CAAC,KAAU;QAC3B,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAChD;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAGQ,IAAI,QAAQ,CAAC,KAAU;QAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IACD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAGQ,IAAI,WAAW,CAAC,KAAU;QAC/B,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACpD;IACD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAGQ,IAAI,YAAY,CAAC,KAAU;QAChC,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrD;IACD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAWe,IAAI,KAAK,CAAC,KAAU;QAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAOD,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,QAAQ,EAAE;gBACV,OAAO,QAAQ,CAAC,KAAK,CAAC;aACzB;SACJ;QAED,OAAO,EAAE,CAAC;KACb;IAED,IAAI,oBAAoB;QACpB,IAAI,MAAM,GAAW,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACzC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;SACvD;QAED,OAAO,MAAM,CAAC;KACjB;IAOD,QAAQ;QACJ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACnC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,UAAU,GAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChF,IAAI,CAAC,UAAU,EAAE;oBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrC;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;QAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;SACxC;KACJ;IAMD,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,iBAAiB,CAAC,GAAW;QACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;KAC/F;IAEM,WAAW;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrC;KACJ;IAEM,YAAY;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC7E,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;aACpC;YAED,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,OAAO;SACV;QAED,IACI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,KAAK,IAAI,CAAC,YAAY;aAC5D,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC;aACvF,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EACtC;YACE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;SACJ;KACJ;IAEM,yBAAyB,CAAC,GAAW;QACxC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAGD,cAAc,CAAC,KAAc;QACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;YAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;YACxC,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;CAEJ,CAAA;;YA3H0B,UAAU;YACD,iBAAiB;;AArGkC;IAAlF,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAsB,sBAAsB;yEAAC;AAE7E;IAAjD,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,kBAAkB;oEAAC;AAE5E;IAAR,KAAK,EAAE;;wDAAyB;AAExB;IAAR,KAAK,EAAE;;0DAA2B;AAE1B;IAAR,KAAK,EAAE;;+DAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAe;AAEd;IAAR,KAAK,EAAE;;iEAAoC;AAEnC;IAAR,KAAK,EAAE;;8DAAmB;AAGlB;IAAR,KAAK,EAAE;;;4DAEP;AAMQ;IAAR,KAAK,EAAE;;;2DAEP;AAMQ;IAAR,KAAK,EAAE;;;4DAEP;AAMQ;IAAR,KAAK,EAAE;;;+DAEP;AAMQ;IAAR,KAAK,EAAE;;;gEAEP;AAKQ;IAAR,KAAK,EAAE;;0DAAW;AAEV;IAAR,KAAK,EAAE;;0DAAkC;AAEjC;IAAR,KAAK,EAAE;;kEAAwB;AAEvB;IAAR,KAAK,EAAE;;gEAAsB;AAGd;IAAf,KAAK,CAAC,OAAO,CAAC;;;yDAId;AAKS;IAAT,MAAM,EAAE;8BAAkB,YAAY;qEAAsC;AACnE;IAAT,MAAM,EAAE;8BAAU,YAAY;6DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;4DAAoC;AACxD;IAAT,MAAM,EAAE;8BAAiB,YAAY;oEAAwC;AA0I9E;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCACpB,OAAO;;kEAM5B;AAvOQ,4BAA4B;IAjBxC,SAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,qBAAqB;QAC/B,m2HAAiD;QAEjD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA2C,8BAA4B,CAAC;gBAChG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,wBAAwB;SACpC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCA+GyB,UAAU;QACD,iBAAiB;GA/GxC,4BAA4B,CAyOxC;;MCtQY,iCAAiC;IAQ1C,YAAY,OAAY,EAAE,WAAgB,SAAe;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC5B;IAED,kBAAkB;QACd,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvE;KACJ;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1E;SACJ;KACJ;IAED,OAAO;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;CACJ;;;ACtBD,MAAM,2BAA2B,GAA+B,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AACpK,MAAM,2BAA2B,GAA+B,SAAS,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;;AA2BpK,IAAa,oBAAoB,4BAAjC,MAAa,oBAAoB;IA4N7B,YAC8B,SAAmB,EACrC,OAAqB,EACrB,KAAa,EACd,UAAsB,EACtB,QAAmB,EACnB,cAAkC;QALf,cAAS,GAAT,SAAS,CAAU;QACrC,YAAO,GAAP,OAAO,CAAc;QACrB,UAAK,GAAL,KAAK,CAAQ;QACd,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAW;QACnB,mBAAc,GAAd,cAAc,CAAoB;QA9N7C,iBAAY,GAAY,KAAK,CAAC;QAE9B,qBAAgB,GAAY,KAAK,CAAC;QAElC,4BAAuB,GAAY,KAAK,CAAC;QAUlC,qBAAgB,GAAQ;YAC3B,OAAO,EAAE,aAAa;YACtB,MAAM,EAAE,YAAY;YACpB,GAAG,EAAE,8BAA8B;YACnC,WAAW,EAAE,8BAA8B;YAC3C,SAAS,EAAE,8BAA8B;YACzC,MAAM,EAAE,6BAA6B;YACrC,cAAc,EAAE,6BAA6B;YAC7C,YAAY,EAAE,6BAA6B;YAC3C,IAAI,EAAE,8BAA8B;YACpC,YAAY,EAAE,8BAA8B;YAC5C,UAAU,EAAE,8BAA8B;YAC1C,KAAK,EAAE,6BAA6B;YACpC,aAAa,EAAE,6BAA6B;YAC5C,WAAW,EAAE,6BAA6B;SAC7C,CAAC;QAIM,aAAQ,GAAY,KAAK,CAAC;QAyIxB,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;QACtD,iBAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;QACrD,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAC/C,iBAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;QACrD,WAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;QAC/C,qBAAgB,GAAsB,IAAI,YAAY,EAAE,CAAC;QACzD,oBAAe,GAAsB,IAAI,YAAY,EAAE,CAAC;QAgD9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;KAC7C;IA/LQ,IAAI,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;KACJ;IAGQ,IAAI,IAAI;;QACb,OAAO,IAAI,CAAC,KAAK,WAAI,IAAI,CAAC,cAAc,0CAAE,IAAI,CAAA,CAAC;KAClD;IACD,IAAI,IAAI,CAAC,KAA+B;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAGQ,IAAI,KAAK;;QACd,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,SAAG,IAAI,CAAC,wBAAwB,0CAAE,KAAK,SAAG,IAAI,CAAC,cAAc,0CAAE,KAAK,CAAC,CAAC;KACxH;IACD,IAAI,KAAK,CAAC,KAAU;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAGQ,IAAI,UAAU;;QACnB,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,SAAG,IAAI,CAAC,wBAAwB,0CAAE,UAAU,SAAG,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAC,CAAC;KACvI;IACD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAGQ,IAAI,YAAY;;QACrB,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,SAAG,IAAI,CAAC,wBAAwB,0CAAE,YAAY,SAAG,IAAI,CAAC,cAAc,0CAAE,YAAY,CAAC,CAAC;KAC7I;IACD,IAAI,YAAY,CAAC,KAAU;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAGQ,IAAI,iBAAiB;;QAC1B,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,SAAG,IAAI,CAAC,wBAAwB,0CAAE,iBAAiB,SAAG,IAAI,CAAC,cAAc,0CAAE,iBAAiB,CAAC,CAAC;KAC5J;IACD,IAAI,iBAAiB,CAAC,KAAa;QAC/B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;IAGQ,IAAI,MAAM;;QACf,MAAM,KAAK,GAAQ,IAAI,CAAC,OAAO,WAAI,IAAI,CAAC,cAAc,0CAAE,MAAM,CAAA,CAAC;QAC/D,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,CAAC;KAClD;IACD,IAAI,MAAM,CAAC,KAAU;QACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IAGQ,IAAI,QAAQ;;QACjB,OAAO,IAAI,CAAC,SAAS,WAAI,IAAI,CAAC,cAAc,0CAAE,QAAQ,CAAA,CAAC;KAC1D;IACD,IAAI,QAAQ,CAAC,KAAU;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAGQ,IAAI,UAAU;;QACnB,MAAM,KAAK,GAAY,IAAI,CAAC,WAAW,WAAI,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAA,CAAC;QAC3E,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC;KAC/C;IACD,IAAI,UAAU,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAGQ,IAAI,UAAU;;QACnB,MAAM,KAAK,GAAW,IAAI,CAAC,WAAW,WAAI,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAA,CAAC;QAC1E,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC;KAC5C;IACD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAGQ,IAAI,qBAAqB;;QAC9B,MAAM,KAAK,GAAW,IAAI,CAAC,sBAAsB,WAAI,IAAI,CAAC,cAAc,0CAAE,qBAAqB,CAAA,CAAC;QAChG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,iCAAiC,GAAG,KAAK,CAAC;KAC5E;IACD,IAAI,qBAAqB,CAAC,KAAa;QACnC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACvC;IAGQ,IAAI,qBAAqB;;QAC9B,MAAM,KAAK,GAAW,IAAI,CAAC,sBAAsB,WAAI,IAAI,CAAC,cAAc,0CAAE,qBAAqB,CAAA,CAAC;QAChG,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,GAAG,KAAK,CAAC;KACvD;IACD,IAAI,qBAAqB,CAAC,KAAa;QACnC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACvC;IAGQ,IAAI,QAAQ;;QACjB,OAAO,IAAI,CAAC,SAAS,WAAI,IAAI,CAAC,cAAc,0CAAE,QAAQ,CAAA,CAAC;KAC1D;IACD,IAAI,QAAQ,CAAC,KAAU;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAGQ,IAAI,UAAU;;QACnB,OAAO,IAAI,CAAC,WAAW,WAAI,IAAI,CAAC,cAAc,0CAAE,UAAU,CAAA,CAAC;KAC9D;IACD,IAAI,UAAU,CAAC,GAAyC;QACpD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;KAC1B;IAGQ,IAAI,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,GAA+B;QACvC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;IAGQ,IAAI,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAI,aAAa,CAAC,GAAkB;QAChC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;KAC7B;IAgBD,IAAI,KAAK;;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,KAAK,IAAI,CAAC,wBAAwB,WAAI,IAAI,CAAC,OAAO,0CAAE,UAAU,CAAC,OAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,0CAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAK,eAAe,IAAI,CAAC,wBAAwB,CAAC,UAAU,GAAG,EAAE,OAAO,CAAA,CAAC,CAAC;KACjO;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;KAC1D;IAED,IAAI,cAAc;;QACd,6CAAY,IAAI,CAAC,OAAO,0CAAE,cAAc,GAAK,IAAI,CAAC,OAAO,EAAG;KAC/D;IAED,IAAI,wBAAwB;;QACxB,6CAAY,IAAI,CAAC,cAAc,0CAAE,UAAU,GAAK,IAAI,CAAC,UAAU,EAAG;KACrE;IAED,IAAI,0BAA0B;;QAC1B,OAAO,OAAA,IAAI,CAAC,wBAAwB,0CAAE,SAAS,KAAI,QAAQ,CAAC;KAC/D;IAED,IAAI,SAAS;;QACT,aAAO,IAAI,CAAC,gBAAgB,0CAAE,aAAa,CAAC;KAC/C;IAED,IAAI,SAAS;;QACT,aAAO,IAAI,CAAC,gBAAgB,0CAAE,aAAa,CAAC;KAC/C;IAED,IAAI,QAAQ;;QACR,OAAO,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,QAAE,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,CAAC;KACvF;IAaD,QAAQ,MAAY;IAEpB,kBAAkB;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;gBACvB,QAAQ,IAAI,CAAC,OAAO,EAAE;oBAClB,KAAK,SAAS,EAAE;wBACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;wBACrC,MAAM;qBACT;oBAAC,SAAS;wBACP,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;wBACrC,MAAM;qBACT;iBACJ;aACJ,CAAC,CAAC;SACN;KACJ;IAED,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3EH,aAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,IAAI,CAAC,OAAqB,EAAE,UAAmB,KAAK;;QAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnH,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,OAAC,IAAI,CAAC,SAAS,0CAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;KAClF;IAED,IAAI,CAAC,OAAqB,EAAE,UAAmB,KAAK;;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;SACV;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACnH,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,WAAW,OAAC,IAAI,CAAC,SAAS,0CAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;SACrF;KACJ;IAED,YAAY;QACR,CAAC,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5F;IAED,eAAe,CAAC,OAAgB;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAChC;IAED,qBAAqB,CAAC,KAAiB;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACpB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;KACvC;IAED,8BAA8B,CAAC,KAAqB;;QAChD,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,SAAS,EAAE;gBACZ,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAE9G,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjBA,aAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,UAAG,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAC,CAAC,CAAC;iBAC/G;gBAED,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5H,IAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,MAAM;aACT;YAAC,KAAK,MAAM,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9G,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;gBACjF,MAAM;aACT;SACJ;QAED,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;KAChD;IAED,6BAA6B,CAAC,KAAqB;QAC/C,MAAM,SAAS,GAAQ,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QACrE,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,SAAS,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;aACT;YAAC,KAAK,MAAM,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3EA,aAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC7B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,MAAM;aACT;SACJ;QAED,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KAC/C;IAED,YAAY,CAAC,IAAY,EAAE,MAAW;;QACjC,IAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,IAAK,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,IAAK,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QACnF,OAAA,IAAI,CAAC,OAAO,0CAAE,cAAc,KAAI,CAAC,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAsB,EAAC,IAAI,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAsB,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;KACtI;IAED,aAAa;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACvC;IAED,eAAe;QACX,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,iCAAiC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAU;gBACjF,MAAM,KAAK,GAAQ,IAAI,CAAC,QAAQ;sBAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;sBAC7E,IAAI,CAAC;gBAEX,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aACnC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAC7C;KACJ;IAED,yBAAyB;QACrB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;gBAC5E,MAAM,eAAe,GAAQ,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC3J,MAAM,iBAAiB,GAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC;gBACrF,MAAM,gBAAgB,GAAY,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,iBAAiB,CAAC;gBAE1G,MAAM,KAAK,GAAQ,IAAI,CAAC,QAAQ;sBAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;sBAC/G,gBAAgB,CAAC;gBAEvB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;aAChE,CAAC,CAAC;SACN;KACJ;IAED,2BAA2B;QACvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACrC;KACJ;IAED,0BAA0B;QACtB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK;gBAC5E,MAAM,KAAK,GAAQ,IAAI,CAAC,QAAQ;sBAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,CAAC;sBACxG,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;gBAEtC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aACnC,CAAC,CAAC;SACN;KACJ;IAED,4BAA4B;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACtC;KACJ;IAED,4BAA4B;QACxB,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,OAAO;SACV;QAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACzB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK;gBAChF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE;oBAC3D,OAAO;iBACV;gBAED,MAAM,KAAK,GAAQ,IAAI,CAAC,QAAQ;sBAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,CAAC;sBACzG,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;gBAEtC,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;wBACX,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN,CAAC,CAAC;KACN;IAED,8BAA8B;QAC1B,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACxC;KACJ;CAEJ,CAAA;;YAlP4C,QAAQ,uBAA5C,MAAM,SAAC,QAAQ;YACC,YAAY;YACd,MAAM;YACF,UAAU;YACZ,SAAS;YACH,kBAAkB;;AA5LpC;IAAR,KAAK,EAAE;;;mDAEP;AAUQ;IAAR,KAAK,EAAE;;;gDAEP;AAMQ;IAAR,KAAK,EAAE;;;iDAEP;AAMQ;IAAR,KAAK,EAAE;;;sDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;;;6DAEP;AAMQ;IAAR,KAAK,EAAE;;;kDAGP;AAMQ;IAAR,KAAK,EAAE;;;oDAEP;AAMQ;IAAR,KAAK,EAAE;;;sDAGP;AAMQ;IAAR,KAAK,EAAE;;;sDAGP;AAMQ;IAAR,KAAK,EAAE;;;iEAGP;AAMQ;IAAR,KAAK,EAAE;;;iEAGP;AAMQ;IAAR,KAAK,EAAE;;;oDAEP;AAMQ;IAAR,KAAK,EAAE;;;sDAEP;AAMQ;IAAR,KAAK,EAAE;;;mDAEP;AAMQ;IAAR,KAAK,EAAE;;;yDAEP;AAKS;IAAT,MAAM,EAAE;8BAAgB,YAAY;2DAA2B;AACtD;IAAT,MAAM,EAAE;8BAAe,YAAY;0DAA2B;AACrD;IAAT,MAAM,EAAE;8BAAS,YAAY;oDAA2B;AAC/C;IAAT,MAAM,EAAE;8BAAe,YAAY;0DAA2B;AACrD;IAAT,MAAM,EAAE;8BAAS,YAAY;oDAA2B;AAC/C;IAAT,MAAM,EAAE;8BAAmB,YAAY;8DAA2B;AACzD;IAAT,MAAM,EAAE;8BAAkB,YAAY;6DAA2B;AAE1B;IAAvC,eAAe,CAAC,qBAAqB,CAAC;8BAAY,SAAS;uDAAkB;AAErC;IAAxC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAmB,UAAU;8DAAa;AAEzC;IAAxC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAmB,UAAU;8DAAa;AA1LzE,oBAAoB;IAxBhC,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,aAAa;QACvB,6uEAAuC;QAEvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,UAAU,EAAE;YACR,OAAO,CAAC,yBAAyB,EAAE;gBAC/B,UAAU,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBACjE,UAAU,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC;aACpE,CAAC;SACL;QACD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAmC,sBAAoB,CAAC;gBAChF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;;KACJ,CAAC;IA8NO,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;qCAAoB,QAAQ;QAC5B,YAAY;QACd,MAAM;QACF,UAAU;QACZ,SAAS;QACH,kBAAkB;GAlOpC,oBAAoB,CA+chC;;;ACxeD;AACA,MAAMI,kBAAgB,GAAG,EAAE,CAAC;AAE5B,IAAID,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,wBAAwB,gCAArC,MAAa,wBAAwB;IAgLjC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QA9KjD,UAAK,GAAW,qBAAqBA,cAAY,EAAE,EAAE,CAAC;QAMtD,eAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAExD,4BAAuB,GAAW,CAAC,CAAC;QAIpC,oBAAe,GAAY,KAAK,CAAC;QAEjC,uBAAkB,GAAgB,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAElF,oBAAe,GAAW,EAAE,CAAC;QAE7B,4BAAuB,GAAW,CAAC,CAAC;QAEpC,6BAAwB,GAAY,KAAK,CAAC;QAC1C,mCAA8B,GAAY,KAAK,CAAC;QAEhD,cAAS,GAAW,CAAC,CAAC;QAWb,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,gBAAW,GAAW,YAAY,CAAC;QAEnC,mBAAc,GAAW,kBAAkB,CAAC;QAE5C,aAAQ,GAAY,KAAK,CAAC;;QAG1B,cAAS,GAAY,KAAK,CAAC;QAE3B,gBAAW,GAAY,IAAI,CAAC;QAE5B,iBAAY,GAAY,IAAI,CAAC;QAE7B,kBAAa,GAAY,KAAK,CAAC;QAE/B,eAAU,GAAY,KAAK,CAAC;QAE5B,mBAAc,GAAY,IAAI,CAAC;QAE/B,eAAU,GAAY,KAAK,CAAC;QAE5B,aAAQ,GAAY,KAAK,CAAC;QAY1B,aAAQ,GAAW,CAAC,CAAC;;;QAIrB,+BAA0B,GAAY,IAAI,CAAC;;QAG5C,cAAS,GAAY,KAAK,CAAC;QAS3B,aAAQ,GAAY,KAAK,CAAC;QA0DxB,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,mBAAc,GAA0B,IAAI,YAAY,EAAW,CAAC;QACpE,mBAAc,GAA0B,IAAI,YAAY,EAAW,CAAC;QACpE,mBAAc,GAAyB,IAAI,YAAY,EAAU,CAAC;QAClE,gBAAW,GAA+B,IAAI,YAAY,EAAgB,CAAC;QAuCrF,kBAAa,GAAuB,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QAEvH,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAxB+B;IA3FrD,IAAI,QAAQ,CAAC,KAAc;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;IACD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAGQ,IAAI,OAAO,CAAC,KAAc;QAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAGQ,IAAI,cAAc,CAAC,GAAQ;QAChC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC9B;IACD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAGQ,IAAI,KAAK,CAAC,KAAc;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACrG,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,MAAM,CAAC;aAC/C;iBAAM;gBACH,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;aACpC;SAEJ;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;gBAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;aACpC;SACJ;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGQ,IAAI,OAAO,CAAC,GAAQ;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAUD,IAAI,oBAAoB;QACpB,IAAI,MAAM,GAAW,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACrC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAGC,kBAAgB,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAGA,kBAAgB,GAAG,CAAC,CAAC,CAAC;SACtH;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACxC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;SACrC;QAED,OAAO,MAAM,CAAC;KACjB;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;KACxC;IAID,QAAQ;QACJ,IAAI,CAAC,kBAAkB,CAAC,YAAY;aAC/B,IAAI,CACD,GAAG,CAAC,CAAC,KAAa,KAAa,KAAK,CAAC,EACrC,YAAY,CAAC,IAAI,CAAC,EAClB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;aACA,SAAS,CAAC,CAAC,KAAa,KAAW,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnE,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnC;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAQD,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,SAAS,CAAC,EAAK,EAAE,EAAK;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC9E;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACzC,OAAO,MAAM,KAAK,MAAM,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC9D;IAEM,gBAAgB,CAAC,MAAS;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAClC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChD;SACJ;QACD,OAAO,EAAE,CAAC;KACb;IAEO,SAAS,CAAC,MAAS,EAAE,QAAgB;QACzC,MAAM,UAAU,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,GAAQ,MAAM,CAAC;QAExB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,OAAO,KAAK,CAAC;aAChB;SACJ;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAEM,YAAY;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;aAChC;SACJ;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,cAAc,CAAC,KAAU;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,OAAO;SACV;QAED,IACI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,KAAK,IAAI,CAAC,YAAY;aAC5D,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC;aACvF,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EACtC;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;SACJ;KACJ;IAEM,mBAAmB,CAAC,KAAY;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,OAAO;SACV;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACnB;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,KAAK,CAAC,wBAAwB,EAAE,CAAC;KACpC;IAEM,WAAW;QACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/C,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;YAExC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;aACnB;SACJ;KACJ;IAEM,WAAW;QACd,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,aAAa;QAChB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;iBAAM;gBACH,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SACJ;KACJ;;IAGK,QAAQ;;YACV,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,OAAO;aACV;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACrC,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,OAAO;aACV;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAChG,OAAO;aACV;YAED,MAAM,UAAU,GAAW,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;;;YAIhG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;aACpB;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBACzB,OAAO;aACV;YACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAE/B,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS;gBACjG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;gBAE7C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACf,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;iBACrB;;gBAGD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;;gBAGrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;;gBAGlC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;;gBAG3D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBAEvB,IAAI,IAAI,CAAC,wBAAwB,EAAE;oBAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;iBACpC;qBAAM;oBACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACnC;;gBAID,IAAI,CAAC,SAAS,EAAE,CAAC;aACpB,EAAE,KAAK;gBACJ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1F,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC3E,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;aACrD;YAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KAAA;;IAGM,yBAAyB,CAAC,MAAS;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;aACnB;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC3B,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpF,IAAI,WAAW,IAAI,CAAC,EAAE;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC1B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;iBAC5B;qBAAM;oBACH,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACxC;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC5B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;aACvB;SACJ;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAEM,wBAAwB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;YACrC,IACI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,CAAC,IAAI,CAAC,KAAK;iBACV,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClC,CAAC,IAAI,CAAC,OAAO;iBACZ,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EACxC;gBACE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBACtC,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;aAC/C;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC3B,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;oBACnK,IAAI,CAAC,8BAA8B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;iBAC7G;qBAAM;oBACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClK,IAAI,CAAC,8BAA8B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAC3I;aACJ;YAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;IAEM,uBAAuB,CAAC,MAAS;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAChE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACvE;KACJ;IAEM,wBAAwB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;QAED,IAAI,CAAC,wBAAwB,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;QAC/D,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACpC;IAEM,yBAAyB;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;aAClC;iBAAM;gBACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;aACnB;YAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;KACJ;IAEM,iBAAiB;QACpB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACtC,MAAM,SAAS,GAAiB;gBAC5B,MAAM,EAAE,IAAI,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK;aACrB,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACpC;KACJ;;IAGO,mBAAmB;QACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;SACrC;aAAM;YACH,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;SACpC;KACJ;IAEO,aAAa,CAAC,KAAa;QAC/B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YAEjB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;;;;IAKM,uBAAuB;QAC1B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC7E,OAAO;SACV;;QAED,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;KAC3C;;;;;IAMM,uBAAuB,CAAC,KAAe;QAC1C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;KACJ;;;;;;IAOM,oBAAoB,CAAC,KAAoB;;QAE5C,IACI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;aACnC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;aACzC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;aAC/C,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,EAC3B;YACE,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;;YAEvD,UAAU,CAAC,MAAY,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;SAC1D;;QAGD,IAAI,IAAI,CAAC,0BAA0B,KAAK,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;YAChG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACnC,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;CAEJ,CAAA;;YA/Z2C,iBAAiB;;AApJgC;IAAxF,SAAS,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAA6B,sBAAsB;4EAAC;AAE7D;IAA9E,SAAS,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAkB,sBAAsB;iEAAC;AAE5C;IAA1E,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAgB,oBAAoB;+DAAC;AAEvD;IAAvD,SAAS,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAmC,wBAAwB;0EAAC;AAE1G;IAAR,KAAK,EAAE;;oDAAkC;AAEjC;IAAR,KAAK,EAAE;;sDAA2B;AAE1B;IAAR,KAAK,EAAE;;2DAAmB;AAElB;IAAR,KAAK,EAAE;;uDAAe;AAEd;IAAR,KAAK,EAAE;;6DAAoC;AAEnC;IAAR,KAAK,EAAE;;gEAA6C;AAE5C;IAAR,KAAK,EAAE;;0DAA2B;AAG1B;IAAR,KAAK,EAAE;;2DAA4B;AAE3B;IAAR,KAAK,EAAE;;6DAA6B;AAE5B;IAAR,KAAK,EAAE;;8DAA8B;AAE7B;IAAR,KAAK,EAAE;;+DAAgC;AAE/B;IAAR,KAAK,EAAE;;4DAA6B;AAE5B;IAAR,KAAK,EAAE;;gEAAgC;AAE/B;IAAR,KAAK,EAAE;;4DAA6B;AAE5B;IAAR,KAAK,EAAE;;0DAA2B;AAE1B;IAAR,KAAK,EAAE;;0DAAkB;AAEjB;IAAR,KAAK,EAAE;;yDAAiB;AAEhB;IAAR,KAAK,EAAE;;0DAAe;AAEd;IAAR,KAAK,EAAE;;4DAAgC;AAE/B;IAAR,KAAK,EAAE;;6DAAkG;AAEjG;IAAR,KAAK,EAAE;;0DAAsB;AAIrB;IAAR,KAAK,EAAE;;4EAA4C;AAI3C;IAAR,KAAK,EAAE;;;wDAGP;AAMQ;IAAR,KAAK,EAAE;;;uDAGP;AAMQ;IAAR,KAAK,EAAE;;;8DAEP;AAMQ;IAAR,KAAK,EAAE;;;qDA2BP;AAMQ;IAAR,KAAK,EAAE;;;uDAEP;AAKS;IAAT,MAAM,EAAE;8BAAU,YAAY;yDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;wDAAoC;AACxD;IAAT,MAAM,EAAE;8BAAU,YAAY;yDAAoC;AACzD;IAAT,MAAM,EAAE;8BAAiB,YAAY;gEAAwC;AACpE;IAAT,MAAM,EAAE;8BAAiB,YAAY;gEAAwC;AACpE;IAAT,MAAM,EAAE;8BAAiB,YAAY;gEAAsC;AAClE;IAAT,MAAM,EAAE;8BAAc,YAAY;6DAAkD;AA7J5E,wBAAwB;IAjBpC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,8rKAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAiL0C,iBAAiB;GAhLhD,wBAAwB,CA+kBpC;;;ACnmBD,IAAID,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,+BAA+B,uCAA5C,MAAa,+BAA+B;IAmGxC,YACY,kBAAqC,EACrC,WAAuB,EACvB,SAAoB;QAFpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,gBAAW,GAAX,WAAW,CAAY;QACvB,cAAS,GAAT,SAAS,CAAW;QApGxB,UAAK,GAAW,6BAA6BA,cAAY,EAAE,EAAE,CAAC;QAEtE,8BAAyB,GAAY,KAAK,CAAC;QAE3C,oBAAe,GAAY,KAAK,CAAC;QAEjC,wBAAmB,GAAY,KAAK,CAAC;QAErC,gBAAW,GAAe,KAAK,CAAC;QAQvB,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,gBAAW,GAAW,YAAY,CAAC;QAEnC,wBAAmB,GAAW,qBAAqB,CAAC;QAEpD,sBAAiB,GAAW,YAAY,CAAC;QAEzC,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,YAAO,GAAY,KAAK,CAAC;QAMzB,mBAAc,GAAY,KAAK,CAAC;QAEhC,gBAAW,GAAY,IAAI,CAAC;QAE5B,iBAAY,GAAY,IAAI,CAAC;QAE7B,eAAU,GAAY,IAAI,CAAC;QAgC1B,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,mBAAc,GAA0B,IAAI,YAAY,EAAW,CAAC;QACpE,mBAAc,GAAsB,IAAI,YAAY,EAAO,CAAC;QAC5D,YAAO,GAAiC,IAAI,YAAY,EAAkB,CAAC;QAsBrF,kBAAa,GAAuB,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QAE3F,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;QAoI/B,kBAAa,GAAG;YACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC,CAAA;KA9II;IA5CI,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;SAC5C;KACJ;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGQ,IAAI,OAAO,CAAC,GAAQ;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IASD,IAAI,UAAU;QACV,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YAC5B,OAAO,8BAA8B,CAAC;SACzC;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACnC;QAED,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACxE;IAQD,QAAQ,MAAM;IAQd,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,gBAAgB,CAAC,MAAS;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAClC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChD;SACJ;QACD,OAAO,EAAE,CAAC;KACb;IAEO,SAAS,CAAC,MAAS,EAAE,QAAgB;QACzC,MAAM,UAAU,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,GAAQ,MAAM,CAAC;QAExB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,OAAO,KAAK,CAAC;aAChB;SACJ;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;IAEM,YAAY;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;aACvC;SACJ;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,OAAO;SACV;QAED,IACI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,KAAK,IAAI,CAAC,YAAY;aAC5D,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC;aACvF,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EACtC;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SACJ;KACJ;IAEM,WAAW;QACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/C,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;IAEM,WAAW;QACd,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,aAAa;QAChB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;iBAAM;gBACH,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SACJ;KACJ;IAEM,oBAAoB,CAAC,QAAiB;QACzC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QAEpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,mBAAmB,CAAC,MAAW,EAAE,iBAA0B;QACvD,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE;YAC9D,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;SAC9D;KACJ;IAGD,aAAa,CAAC,KAAc;QACxB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;;IAOD,uBAAuB,CAAC,MAAS,EAAE,WAAwC;QACvE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAW,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;QAC1D,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAEzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC5B,WAAW,CAAC,wBAAwB,EAAE,CAAC;aAC1C;iBAAM;gBACH,WAAW,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBAC7C,WAAW,CAAC,8BAA8B,GAAG,KAAK,CAAC;aACtD;YAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;IAED,kBAAkB,CAAC,WAA2B,EAAE,OAAgB;QAC5D,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,KAAK,cAAc,CAAC,EAAE;YACnF,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;SACrC;aAAM;YACH,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBACnE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;aACrC;iBAAM;gBACH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;aACxC;SACJ;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,kBAAkB,CAAC,UAAsB,EAAE,OAAgB;QACvD,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE;YACjC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;SACrC;aAAM;YACH,IAAI,CAAC,UAAU,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;aACrC;iBAAM;gBACH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;aACjC;SACJ;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,YAAY,CAAC,WAAyC;QAClD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACtC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;SAClC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;YACjC,WAAW,CAAC,wBAAwB,GAAG,KAAK,CAAC;YAC7C,WAAW,CAAC,8BAA8B,GAAG,KAAK,CAAC;SACtD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,cAAc,GAAG,KAAK,CAAC;QAEhE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,YAAY;QACR,MAAM,WAAW,GAAmB;YAChC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,KAAK;SACrB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;KAEtB;CAEJ,CAAA;;YA3OmC,iBAAiB;YACxB,UAAU;YACZ,SAAS;;AA1FsD;IAArF,SAAS,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAyB,sBAAsB;+EAAC;AAEnD;IAAjF,SAAS,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAuB,oBAAoB;6EAAC;AAEhD;IAA5E,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAc,wBAAwB;oEAAI;AAE7G;IAAR,KAAK,EAAE;;2DAAkC;AAEjC;IAAR,KAAK,EAAE;;6DAA2B;AAE1B;IAAR,KAAK,EAAE;;kEAAmB;AAElB;IAAR,KAAK,EAAE;;8DAAe;AAEd;IAAR,KAAK,EAAE;;oEAAoC;AAEnC;IAAR,KAAK,EAAE;;4EAAqD;AAEpD;IAAR,KAAK,EAAE;;0EAA0C;AAEzC;IAAR,KAAK,EAAE;;iEAA2B;AAE1B;IAAR,KAAK,EAAE;;iEAA2B;AAE1B;IAAR,KAAK,EAAE;;gEAA0B;AAEzB;IAAR,KAAK,EAAE;;iEAAmB;AAElB;IAAR,KAAK,EAAE;;iEAAmB;AAElB;IAAR,KAAK,EAAE;;uEAAiC;AAEhC;IAAR,KAAK,EAAE;;oEAA6B;AAE5B;IAAR,KAAK,EAAE;;qEAA8B;AAE7B;IAAR,KAAK,EAAE;;mEAA4B;AAE3B;IAAR,KAAK,EAAE;;iEAAkB;AAEjB;IAAR,KAAK,EAAE;;gEAAiB;AAEhB;IAAR,KAAK,EAAE;;mEAAgC;AAE/B;IAAR,KAAK,EAAE;;oEAAiG;AAGhG;IAAR,KAAK,EAAE;;;4DAQP;AAMQ;IAAR,KAAK,EAAE;;;8DAEP;AAKS;IAAT,MAAM,EAAE;8BAAU,YAAY;gEAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;+DAAoC;AACxD;IAAT,MAAM,EAAE;8BAAU,YAAY;gEAAoC;AACzD;IAAT,MAAM,EAAE;8BAAiB,YAAY;uEAAwC;AACpE;IAAT,MAAM,EAAE;8BAAiB,YAAY;uEAAgC;AAC5D;IAAT,MAAM,EAAE;8BAAU,YAAY;gEAAsD;AAuJrF;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCACrB,OAAO;;oEAK3B;AAjPQ,+BAA+B;IAjB3C,SAAS,CAAC;QACP,QAAQ,EAAE,2BAA2B;QACrC,QAAQ,EAAE,wBAAwB;QAClC,izPAAoD;QAEpD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA8C,iCAA+B,CAAC;gBACtG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,2BAA2B;SACvC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAqGkC,iBAAiB;QACxB,UAAU;QACZ,SAAS;GAtGvB,+BAA+B,CA+U3C;;;IC3VY,wBAAwB,gCAArC,MAAa,wBAAwB;IAqFjC,YAC8B,SAAoB,EACvC,iBAAoC,EACnC,cAA6B,EACC,YAAuB,IAAI,EACxB,eAA6B,IAAI;QAJhD,cAAS,GAAT,SAAS,CAAW;QACvC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACnC,mBAAc,GAAd,cAAc,CAAe;QACC,cAAS,GAAT,SAAS,CAAkB;QACxB,iBAAY,GAAZ,YAAY,CAAqB;;QAhFvE,cAAS,GAA0C,IAAI,eAAe,CAAuB,IAAI,CAAC,CAAC;QAQlG,iBAAY,GAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAC/D,SAAS,CAAC,CAAC,QAA8B,KAAsB,QAAQ;cACjE,QAAQ,CAAC,OAAO,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,OAAY,KAAU,OAAO,CAAC,OAAO,EAAE,CAAC,EAC7C,SAAS,CAAc,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAE;cAC9C,EAAE,CAAC,IAAI,CAAC,CACb,CACJ,CAAC;QAEM,mBAAc,GAAuB,IAAI,CAAC,YAAY,CAAC,IAAI,CAC/D,GAAG,CAAC,CAAC,OAAoB,KAAa,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CACtE,CAAC;QAEK,iBAAY,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;;QAGhD,yBAAoB,GAAwB,aAAa,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,YAAY;YAC9B,IAAI,CAAC,cAAc;SACtB,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAgB,KAAc,KAAK,IAAI,aAAa,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC,CACpH,CAAC;;QAGM,eAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAK/C,qBAAgB,GAAW,WAAW,CAAC;QAEvC,qBAAgB,GAAY,IAAI,CAAC;;QAGjC,cAAS,GAAY,KAAK,CAAC;;QAG3B,wBAAmB,GAAY,KAAK,CAAC;;QAGrC,+BAA0B,GAAY,KAAK,CAAC;;;;;QAM5C,iCAA4B,GAAY,KAAK,CAAC;;QAG9C,0CAAqC,GAAY,KAAK,CAAC;;QAGvD,0BAAqB,GAAY,KAAK,CAAC;QAgKhD,cAAS,GAAa,CAAC,CAAM,QAAc,CAAC;KA3IvC;;IAxFL,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;IAMD,IAAW,QAAQ,CAAC,QAA8B;QAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjC;IACD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KACpC;;;IAiED,IAAI,iBAAiB;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KAC3B;IAUD,QAAQ;;QAEJ,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACxE;aAAM;YACH,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;SAC9F;;QAGD,IAAI,CAAC,SAAS,CAAC,YAAY;aACtB,IAAI,CACD,KAAK,CAAC,CAAC,CAAC,EACR,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;aACA,SAAS,CAAC,CAAC,MAAe;YACvB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;;gBAGxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjB;aACJ;iBAAM;;gBAEH,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjB;aACJ;SACJ,CAAC,CAAC;;QAGP,IAAI,CAAC,SAAS,CAAC,YAAY;aACtB,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;;;;;YAQvC,IAAI,mBAAmB,GAAc,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAE5F,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;iBACvB,IAAI,CACD,GAAG,CAAC;;gBAEA,UAAU,CAAC;;oBAEP,MAAM,OAAO,GAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;;oBAGrD,MAAM,kBAAkB,GAAc,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;oBAE7E,MAAM,UAAU,GAA0C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;oBACrF,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;;;wBAKxC,MAAM,oBAAoB,GAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;;;wBAI3G,IAAI,oBAAoB;+BACjB,CAAC,UAAU,CAAC,UAAU;+BACtB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAiB,KAAc,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;4BAC7G,UAAU,CAAC,kBAAkB,EAAE,CAAC;yBACnC;;wBAGD,UAAU,CAAC;4BACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;yBAC3B,CAAC,CAAC;qBACN;;oBAGD,mBAAmB,GAAG,kBAAkB,CAAC;iBAC5C,CAAC,CAAC;aACN,CAAC,CACL,CAAC;SACT,CAAC,CACL;aACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,EAAE,CAAC;;;QAIjB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,kBAA2B;;YAEpC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,kBAAkB,EAAE;oBACpB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;iBACxF;qBAAM;oBACH,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;iBAC3F;aACJ;SACJ,CAAC,CAAC;;;QAIH,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;aACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC;YACP,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAC3B;SACJ,CAAC,CAAC;QAEP,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC;;YAER,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;SACzC,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC/B;aAAM;YACH,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAID,gBAAgB,CAAC,EAA2B;QACxC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,KAAU,KAAc,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,EACvE,GAAG,CAAC,MAAW,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,EACxD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KACnB;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,UAAU,CAAC,KAAa;QACpB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;;;;;;IAOD,cAAc,CAAC,KAAoB;;QAE/B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;aACnC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;aACzC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;aAC/C,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;gBACrB,IAAI,CAAC,4BAA4B,KAAK,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,EAC7F;YACE,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;;YAEjE,UAAU,CAAC,MAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SACzC;;QAGD,IAAI,IAAI,CAAC,0BAA0B,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACpF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;;;;;IAMD,YAAY,CAAC,KAAoB;QAC7B,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;YAC5D,MAAM,sBAAsB,GAAW,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC;YACjF,MAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAe,KAAc,IAAI,CAAC,EAAE,KAAK,sBAAsB,CAAC,CAAC;YAC1H,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;gBACzE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBAC5D,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAC;aACtG;SACJ;KACJ;IAED,MAAM;QACF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;;;;IAKM,MAAM;QACT,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAClD,OAAO;SACV;;;QAGD,MAAM,KAAK,GAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;QACtD,MAAM,SAAS,GAAQ,KAAK,CAAC,SAAS,CAAC;;QAGvC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE7C,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;KAC/B;;;;;IAMM,MAAM,CAAC,KAAe;QACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ;;;;;IAMM,gBAAgB;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YAClE,OAAO;SACV;QACD,IAAI,OAAO,GAAgB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;QAChE,IAAI,YAAyB,CAAC;QAC9B,OAAO,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE;YACpC,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAChD,YAAY,GAAG,OAAO,CAAC;gBACvB,MAAM;aACT;SACJ;QACD,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;SACtF;KACJ;;;;IAKO,sBAAsB;QAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,CAAC,CAAC;SACZ;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;KACJ;IAEO,wBAAwB;QAC5B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;KACjF;CAEJ,CAAA;;YA1R4CF,WAAS,uBAA7C,MAAM,SAACA,WAAS;YACS,iBAAiB;YACnB,aAAa;YACY,SAAS,uBAAzD,QAAQ,YAAI,MAAM,SAAC,SAAS;YAC0B,YAAY,uBAAlE,QAAQ,YAAI,MAAM,SAAC,YAAY;;AA3C3B;IAAR,KAAK,EAAE;;kEAAwC;AAEvC;IAAR,KAAK,EAAE;;kEAAkC;AAGjC;IAAR,KAAK,EAAE;;2DAA4B;AAG3B;IAAR,KAAK,EAAE;;qEAAsC;AAGrC;IAAR,KAAK,EAAE;;4EAA6C;AAM5C;IAAR,KAAK,EAAE;;8EAA+C;AAG9C;IAAR,KAAK,EAAE;;uFAAwD;AAGvD;IAAR,KAAK,EAAE;;uEAAwC;AAGoB;IAAnE,SAAS,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAoB,UAAU;mEAAC;AAG9B;IAAnE,SAAS,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAoB,UAAU;mEAAC;AAKlG;IADC,WAAW,CAAC,2CAA2C,CAAC;;;iEAGxD;AAnFQ,wBAAwB;IAjBpC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,khDAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;IAuFO,WAAA,MAAM,CAACA,WAAS,CAAC,CAAA;IAGjB,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;IAC7B,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;qCAJIA,WAAS;QACpB,iBAAiB;QACnB,aAAa;QACY,SAAS;QACH,YAAY;GA1F9D,wBAAwB,CAgXpC;;;ACjYD,IAAIE,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,6BAA6B,qCAA1C,MAAa,6BAA6B;IAkGtC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAhGjD,UAAK,GAAW,2BAA2BA,cAAY,EAAE,EAAE,CAAC;QAEpE,oBAAe,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAInD,iBAAY,GAAW,CAAC,CAAC;QAEzB,kBAAa,GAAmB,EAAE,CAAC;QAEnC,cAAS,GAAY,KAAK,CAAC;QAMlB,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,gBAAW,GAAW,YAAY,CAAC;;QAOnC,oBAAe,GAAY,KAAK,CAAC;;QAGjC,cAAS,GAAY,KAAK,CAAC;QAE3B,iBAAY,GAAW,IAAI,CAAC;;QAG5B,iBAAY,GAAQ,EAAE,CAAC;QAIvB,aAAQ,GAAW,IAAI,CAAC;QAExB,mBAAc,GAAY,IAAI,CAAC;QAE/B,aAAQ,GAAW,aAAa,CAAC;QA2BlC,aAAQ,GAAQ,EAAE,CAAC;QAQjB,gBAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;QACzD,oBAAe,GAAsB,IAAI,YAAY,EAAO,CAAC;QAC7D,iBAAY,GAAyB,IAAI,YAAY,EAAU,CAAC;QAChE,iBAAY,GAA0B,IAAI,YAAY,EAAW,CAAC;QA2C5E,kBAAa,GAAuB,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAEpG,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KApC+B;IA1CrD,IAAI,cAAc,CAAC,GAAQ;QAChC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC9B;IACD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAGQ,IAAI,KAAK,CAAC,KAAQ;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGQ,IAAI,OAAO,CAAC,GAAQ;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAOD,IAAI,oBAAoB;QACpB,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjC,OAAO,CAAC,CAAC;SACZ;;QAGD,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;KACpC;;IAID,QAAQ;;;;;QAKJ,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,eAAe,CAAC,YAAY;aAC5B,IAAI,CACD,GAAG,CAAC,CAAC,KAAa,KAAa,KAAK,CAAC,EACrC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,oBAAoB,EAAE,CACzB;aACA,SAAS,CAAC,CAAC,KAAa;YACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC9B,CAAC,CACT,CAAC;KACL;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE;YACrE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjC;SACJ;KACJ;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACxD;IAQD,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,GAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,SAAS,CAAC,EAAiB,EAAE,EAAiB;QAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACtC;IAED,gBAAgB,CAAC,MAAW;QACxB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAClC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAED,QAAQ,CAAC,MAAW,EAAE,QAAgB;QAClC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,EAAE,CAAC;SACb;QAED,MAAM,UAAU,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,GAAQ,MAAM,CAAC;QAExB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,OAAO,KAAK,CAAC;aAChB;SACJ;KACJ;IAED,iBAAiB,CAAC,MAAS;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;IAED,cAAc,CAAC,KAAa;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAElB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACjC;KACJ;IAEK,iBAAiB,CAAC,gBAAyB,EAAE,WAAoB,IAAI;;YACvE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,OAAO;aACV;YACD,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO;aACV;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBACrC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACxE,OAAO;aACV;YACD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,OAAO;aACV;YACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACnE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACjD,OAAO;iBACV;aACJ;YAED,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;YAElD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,IAAI,UAAU,GAAW,CAAC,CAAC;YAC3B,IAAI,gBAAgB,EAAE;gBAClB,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;aACzE;iBAAM;gBACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACrB;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;iBAC9E,IAAI,CAAC,IAAI;gBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBAEjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACxE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;wBACvC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACvD,MAAM,KAAK,GAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACjH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBACtC;qBACJ;oBAED,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1D;gBAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAChC,MAAM,WAAW,GAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChF,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;wBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACjC;iBACJ;gBAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1B,CAAC;iBACD,OAAO,CAAC;gBACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1B,CAAC,CAAC;YAEP,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KAAA;IAED,qBAAqB;QACjB,IAAI,UAAU,GAAY,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClD;QACD,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACjF;IAED,YAAY;QACR,MAAM,MAAM,GAAQ,IAAI,CAAC,KAAK,CAAC;QAC/B,IAAI,MAAM,EAAE;YACR,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;SACrC;QACD,OAAO,KAAK,CAAC;KAChB;IAED,YAAY;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;CAEJ,CAAA;;YA7L2C,iBAAiB;;AApFd;IAA1C,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAoB,SAAS;gEAAC;AAEhB;IAAvD,SAAS,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAmC,wBAAwB;+EAAC;AAE1G;IAAR,KAAK,EAAE;;yDAAkC;AAEjC;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAAe;AAEd;IAAR,KAAK,EAAE;;gEAAmB;AAElB;IAAR,KAAK,EAAE;;kEAAoC;AAEnC;IAAR,KAAK,EAAE;;+DAAmB;AAElB;IAAR,KAAK,EAAE;;+DAAmB;AAGlB;IAAR,KAAK,EAAE;;sEAAkC;AAGjC;IAAR,KAAK,EAAE;;gEAA4B;AAE3B;IAAR,KAAK,EAAE;;mEAA6B;AAG5B;IAAR,KAAK,EAAE;;mEAAwB;AAEvB;IAAR,KAAK,EAAE;;uEAA0B;AAEzB;IAAR,KAAK,EAAE;;+DAAyB;AAExB;IAAR,KAAK,EAAE;;qEAAgC;AAE/B;IAAR,KAAK,EAAE;;+DAAkC;AAEjC;IAAR,KAAK,EAAE;;iEAAgC;AAE/B;IAAR,KAAK,EAAE;;kEAAiG;AAGhG;IAAR,KAAK,EAAE;;;mEAEP;AAMQ;IAAR,KAAK,EAAE;;;0DAOP;AAMQ;IAAR,KAAK,EAAE;;;4DAEP;AAKS;IAAT,MAAM,EAAE;8BAAc,YAAY;kEAAgC;AACzD;IAAT,MAAM,EAAE;8BAAkB,YAAY;sEAAgC;AAC7D;IAAT,MAAM,EAAE;8BAAe,YAAY;mEAAsC;AAChE;IAAT,MAAM,EAAE;8BAAe,YAAY;mEAAwC;AAvFnE,6BAA6B;IAjBzC,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,sBAAsB;QAChC,2mGAAkD;QAElD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA4C,+BAA6B,CAAC;gBAClG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,yBAAyB;SACrC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAmG0C,iBAAiB;GAlGhD,6BAA6B,CA+RzC;;;AClTD,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,6BAA6B,qCAA1C,MAAa,6BAA6B;IAkEtC,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAlEzC,UAAK,GAAW,2BAA2BA,cAAY,EAAE,EAAE,CAAC;QAEpE,cAAS,GAAU,EAAE,CAAC;QAMb,OAAE,GAAW,IAAI,CAAC,KAAK,CAAC;QAExB,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,gBAAW,GAAW,YAAY,CAAC;QAInC,aAAQ,GAAY,KAAK,CAAC;QAE1B,YAAO,GAAY,KAAK,CAAC;QAEzB,gBAAW,GAAY,IAAI,CAAC;QAE5B,iBAAY,GAAY,IAAI,CAAC;QAE7B,gBAAW,GAAY,IAAI,CAAC;QAoB3B,oBAAe,GAAyB,IAAI,YAAY,EAAU,CAAC;QACnE,YAAO,GAAwB,IAAI,YAAY,EAAS,CAAC;QACzD,WAAM,GAAwB,IAAI,YAAY,EAAS,CAAC;QACxD,mBAAc,GAA0B,IAAI,YAAY,EAAW,CAAC;QA2C9E,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KA7BpB;IA5BW,IAAI,KAAK,CAAC,KAAU;QAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAOD,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,QAAQ,EAAE;gBACV,OAAO,QAAQ,CAAC,KAAK,CAAC;aACzB;SACJ;QAED,OAAO,EAAE,CAAC;KACb;IAOD,QAAQ;QACJ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACnC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,UAAU,GAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChF,IAAI,CAAC,UAAU,EAAE;oBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrC;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;QAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;SACxC;KACJ;IAMD,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAE,KAAK,EAAkB;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;KACJ;IAED,iBAAiB,CAAC,GAAW;QACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;KAC/F;IAEM,WAAW;QACd,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrC;KACJ;IAEM,YAAY;QACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;SACtC;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAEM,YAAY,CAAC,KAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC7E,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;aACrC;YAED,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAEM,WAAW,CAAC,KAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;IAEM,cAAc,CAAC,KAAoB;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,OAAO;SACV;QAED,IACI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,KAAK,IAAI,CAAC,YAAY;aAC5D,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,CAAC;aACvF,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EACtC;YACE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;SACJ;KACJ;IAGD,cAAc,CAAC,KAAc;QACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;YAC5E,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;CAEJ,CAAA;;YA/H0B,UAAU;YACD,iBAAiB;;AA9DmC;IAAnF,SAAS,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAuB,sBAAsB;2EAAC;AAE/E;IAAjD,SAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAiB,kBAAkB;qEAAC;AAE5E;IAAR,KAAK,EAAE;;yDAAyB;AAExB;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;gEAAmB;AAElB;IAAR,KAAK,EAAE;;4DAAe;AAEd;IAAR,KAAK,EAAE;;kEAAoC;AAEnC;IAAR,KAAK,EAAE;;+DAAmB;AAElB;IAAR,KAAK,EAAE;;+DAA2B;AAE1B;IAAR,KAAK,EAAE;;8DAA0B;AAEzB;IAAR,KAAK,EAAE;;kEAA6B;AAE5B;IAAR,KAAK,EAAE;;mEAA8B;AAE7B;IAAR,KAAK,EAAE;;kEAA6B;AAE5B;IAAR,KAAK,EAAE;;2DAAW;AAEV;IAAR,KAAK,EAAE;;2DAAkC;AAEjC;IAAR,KAAK,EAAE;;mEAAwB;AAEvB;IAAR,KAAK,EAAE;;iEAAsB;AAGd;IAAf,KAAK,CAAC,OAAO,CAAC;;;0DAId;AAKS;IAAT,MAAM,EAAE;8BAAkB,YAAY;sEAAsC;AACnE;IAAT,MAAM,EAAE;8BAAU,YAAY;8DAAoC;AACzD;IAAT,MAAM,EAAE;8BAAS,YAAY;6DAAoC;AACxD;IAAT,MAAM,EAAE;8BAAiB,YAAY;qEAAwC;AAqI9E;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCACpB,OAAO;;mEAM5B;AAhMQ,6BAA6B;IAjBzC,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,sBAAsB;QAChC,qsFAAkD;QAElD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA4C,+BAA6B,CAAC;gBAClG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,yBAAyB;SACrC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAoEyB,UAAU;QACD,iBAAiB;GApExC,6BAA6B,CAkMzC;;;IC1MY,yBAAyB,iCAAtC,MAAa,yBAAyB;IA8BlC;QApBS,kBAAa,GAAoB,CAAC,CAAC;QAEnC,cAAS,GAAoB,EAAE,CAAC;QAChC,eAAU,GAAoB,EAAE,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC;QAEpB,YAAO,GAAW,IAAI,CAAC;QAQtB,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QACtD,YAAO,GAA6B,IAAI,YAAY,EAAc,CAAC;QACnE,YAAO,GAA6B,IAAI,YAAY,EAAc,CAAC;QACpE,WAAM,GAA6B,IAAI,YAAY,EAAc,CAAC;KAEjE;IAEjB,QAAQ,MAAY;CAEvB,CAAA;AAhCY;IAAR,KAAK,EAAE;;qDAAY;AAEX;IAAR,KAAK,EAAE;;uDAAc;AAEb;IAAR,KAAK,EAAE;;4DAAmB;AAElB;IAAR,KAAK,EAAE;;wDAAe;AAEd;IAAR,KAAK,EAAE;;gEAAoC;AAEnC;IAAR,KAAK,EAAE;;4DAAiC;AAChC;IAAR,KAAK,EAAE;;6DAAkC;AAEjC;IAAR,KAAK,EAAE;;uDAAqB;AAEpB;IAAR,KAAK,EAAE;;0DAAwB;AAEvB;IAAR,KAAK,EAAE;;2DAAkB;AAEjB;IAAR,KAAK,EAAE;;0DAAiB;AAEhB;IAAR,KAAK,EAAE;;0DAAiB;AAEf;IAAT,MAAM,EAAE;8BAAgB,YAAY;gEAAkC;AACtD;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;0DAA8C;AACnE;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;0DAA8C;AACpE;IAAf,MAAM,CAAC,MAAM,CAAC;8BAAS,YAAY;yDAA8C;AA5BzE,yBAAyB;IAjBrC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,kBAAkB;QAC5B,giCAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAwC,2BAAyB,CAAC;gBAC1F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,yBAAyB,CAkCrC;;;IClCY,sBAAsB,8BAAnC,MAAa,sBAAsB;IAgC/B;QAtBS,kBAAa,GAAoB,CAAC,CAAC;QAEnC,cAAS,GAAoB,EAAE,CAAC;QAChC,eAAU,GAAoB,EAAE,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC;QAEpB,YAAO,GAAW,IAAI,CAAC;QAQvB,iBAAY,GAAY,KAAK,CAAC;QAE7B,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QACtD,YAAO,GAA6B,IAAI,YAAY,EAAc,CAAC;QACnE,YAAO,GAA6B,IAAI,YAAY,EAAc,CAAC;QACpE,WAAM,GAA6B,IAAI,YAAY,EAAc,CAAC;KAEjE;IAEjB,QAAQ,MAAY;CAEvB,CAAA;AAlCY;IAAR,KAAK,EAAE;;kDAAY;AAEX;IAAR,KAAK,EAAE;;oDAAc;AAEb;IAAR,KAAK,EAAE;;yDAAmB;AAElB;IAAR,KAAK,EAAE;;qDAAe;AAEd;IAAR,KAAK,EAAE;;6DAAoC;AAEnC;IAAR,KAAK,EAAE;;yDAAiC;AAChC;IAAR,KAAK,EAAE;;0DAAkC;AAEjC;IAAR,KAAK,EAAE;;oDAAqB;AAEpB;IAAR,KAAK,EAAE;;uDAAwB;AAEvB;IAAR,KAAK,EAAE;;wDAAkB;AAEjB;IAAR,KAAK,EAAE;;uDAAiB;AAEhB;IAAR,KAAK,EAAE;;uDAAiB;AAEhB;IAAR,KAAK,EAAE;;4DAA+B;AAE7B;IAAT,MAAM,EAAE;8BAAgB,YAAY;6DAAkC;AACtD;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;uDAA8C;AACnE;IAAhB,MAAM,CAAC,OAAO,CAAC;8BAAU,YAAY;uDAA8C;AACpE;IAAf,MAAM,CAAC,MAAM,CAAC;8BAAS,YAAY;sDAA8C;AA9BzE,sBAAsB;IAjBlC,SAAS,CAAC;QACP,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,eAAe;QACzB,+uBAAyC;QAEzC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAqC,wBAAsB,CAAC;gBACpF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,gBAAgB;SAC5B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,sBAAsB,CAoClC;;ACtDD;AACA,MAAa,YAAY;IAEd,OAAO,OAAO,CAAC,QAAgB;QAClC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC;SAChB;QAED,QACI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC7B,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAC9B;KACL;IAEM,OAAO,gBAAgB,CAAC,QAAgB;QAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;KACxE;IAEM,OAAO,gBAAgB,CAAC,QAAgB;QAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KACzE;IAEM,OAAO,YAAY,CAAC,QAAgB;QACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;KAChF;IAEM,OAAO,YAAY,CAAC,QAAgB;QACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;KAChF;IAEM,OAAO,SAAS,CAAC,QAAgB;QACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAChE;IAEM,OAAO,cAAc,CAAC,QAAgB;QACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC1F;IAEM,OAAO,YAAY,CAAC,QAAgB;QACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC/D;CAEJ;;;AC1CD,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,iCAAiC,yCAA9C,MAAa,iCAAiC;IAqE1C,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAnEjD,UAAK,GAAW,8BAA8BA,cAAY,EAAE,EAAE,CAAC;QAE9D,OAAE,GAAoB,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE3B,cAAS,GAAW,EAAE,CAAC;QAyDrB,YAAO,GAA0B,IAAI,YAAY,EAAW,CAAC;QAMvE,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KAN+B;IA1DrD,IAAI,QAAQ,CAAC,KAAa;QAC/B,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,SAAS;;gBAEd,CAAC,IAAI,CAAC,YAAY,CACrB,CAAC;SACL;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IACD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,gBAAgB;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC9F;IAED,IAAI,gBAAgB;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC9F;IAED,IAAI,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC1F;IAED,IAAI,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC1F;IAED,IAAI,SAAS;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KACvF;;;;IAMD,IAAI,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC1F;IAMD,QAAQ,MAAM;IAMd,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,gBAAgB,CAAE,KAAc;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;CAEJ,CAAA;;YAzB2C,iBAAiB;;AAjEhD;IAAR,KAAK,EAAE;;6DAAkC;AAEjC;IAAR,KAAK,EAAE;;+DAA2B;AAE1B;IAAR,KAAK,EAAE;;mEAA2B;AAG1B;IAAR,KAAK,EAAE;;;iEAuBP;AAiCS;IAAT,MAAM,EAAE;8BAAU,YAAY;kEAAwC;AAnE9D,iCAAiC;IAjB7C,SAAS,CAAC;QACP,QAAQ,EAAE,4BAA4B;QACtC,QAAQ,EAAE,0BAA0B;QACpC,miCAAqD;QAErD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAgD,mCAAiC,CAAC;gBAC1G,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,4BAA4B;SACxC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAsE0C,iBAAiB;GArEhD,iCAAiC,CA8F7C;;ACtHD;;;;;;;;;;;AAaA,MAAa,gBAAgB,GAA6B,OAAO,CAAC,kBAAkB,EAAE;IAClF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,UAAU;KACxB,CAAC,CAAC;IACH,UAAU,CAAC,WAAW,EAAE;QACpB,KAAK,CAAC;YACF,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,UAAU;SACxB,CAAC;QACF,OAAO,CAAC,wCAAwC,CAAC;KACpD,CAAC;IACF,UAAU,CAAC,WAAW,EAAE;QACpB,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC;CACL,CAAC;;;ICCW,oBAAoB,4BAAjC,MAAa,oBAAoB;IA+O7B,YAAoB,WAAuB,EAAS,IAAY;QAA5C,gBAAW,GAAX,WAAW,CAAY;QAAS,SAAI,GAAJ,IAAI,CAAQ;QA7OtC,SAAI,GAAW,QAAQ,CAAC;QAE1C,kBAAa,GAAW,MAAM,CAAC;QAC/B,eAAU,GAAqB,OAAO,CAAC;QACvC,eAAU,GAAqB,OAAO,CAAC;QACvC,kBAAa,GAAwB,OAAO,CAAC;QAC7C,oBAAe,GAA0B,YAAY,CAAC;QACtD,gBAAW,GAAW,GAAG,CAAC;QAC1B,gBAAW,GAAW,GAAG,CAAC;QAC1B,oBAAe,GAAY,IAAI,CAAC;QAChC,sBAAiB,GAAY,KAAK,CAAC;QACnC,mBAAc,GAAW,CAAC,CAAC;QAC3B,mBAAc,GAAW,CAAC,CAAC;QAC3B,kBAAa,GAAW,EAAE,CAAC;QAC3B,gBAAW,GAAW,CAAC,CAAC;QACxB,gBAAW,GAAW,qBAAqB,CAAC;QAC5C,kBAAa,GAAY,IAAI,CAAC;QAC9B,sBAAiB,GAAY,IAAI,CAAC;QAClC,iCAA4B,GAAY,IAAI,CAAC;;QAGrD,eAAU,GAA+B,EAAE,CAAC;;QAGrC,yBAAoB,GAAY,KAAK,CAAC;;QAGtC,kBAAa,GAAY,KAAK,CAAC;;QAYtC,4BAAuB,GAAiC,IAAI,YAAY,EAAkB,CAAC;;QAkMjF,UAAK,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAK3D,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;IApMD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAI,YAAY,CAAC,KAAa;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;;IAID,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAuB;QACjC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,EAAE;YACzC,4BAA4B,EAAE,CAAC;SAClC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;IAID,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAuB;QACjC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE;YACxC,4BAA4B,EAAE,CAAC;SAClC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;IAID,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAI,YAAY,CAAC,KAA0B;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;;IAID,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IACD,IAAI,cAAc,CAAC,KAA4B;QAC3C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;;IAID,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;;IAID,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;;IAID,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IACD,IAAI,cAAc,CAAC,KAAc;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;;IAID,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAI,aAAa,CAAC,KAAa;QAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;;IAID,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAI,aAAa,CAAC,KAAa;QAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;;IAID,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAI,YAAY,CAAC,KAAa;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;;IAID,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;;IAID,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;;;;;IAOD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAI,YAAY,CAAC,KAAc;QAC3B,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrD;;;;;IAOD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IACD,IAAI,gBAAgB,CAAC,KAAc;QAC/B,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACzD;;;;;IAOD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IACD,IAAI,gBAAgB,CAAC,KAAc;QAC/B,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACzD;;;;;IAOD,IAAI,2BAA2B;QAC3B,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;IACD,IAAI,2BAA2B,CAAC,KAAc;QAC1C,IAAI,CAAC,4BAA4B,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACpE;;;;;;IAQD,IAAI,UAAU,CAAC,OAAe;QAC1B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,SAAiB;gBACpE,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;gBACtB,OAAO,GAAG,CAAC;aACd,EAAE,EAAE,CAAC,CAAC;YAEP,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;IAWD,QAAQ,MAAY;IAEpB,WAAW;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KACzB;;IAGD,cAAc,CAAC,KAAoB;QAC/B,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,MAAM,EAAE;gBACT,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;aACV;SACJ;KACJ;;IAGD,eAAe;QACX,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;;IAGD,OAAO;QACH,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;;IAGD,WAAW;QACP,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;KACJ;;IAGD,YAAY;QACR,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;;;;IAKD,gBAAgB;;;QAIZ,IAAI,CAAC,kBAAkB,GAAG;YACtB,OAAO,EAAE,IAAI,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG,EAAE;YACxF,MAAM,EAAE,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG,EAAE;YACtF,YAAY,EAAE,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,uBAAuB;YACpH,cAAc,EAAE,WAAW,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,sBAAsB;YACtI,eAAe,EAAE,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,sBAAsB;YACxI,aAAa,EAAE,WAAW,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,sBAAsB;SACxI,CAAC;;QAGF,IAAI,CAAC,oBAAoB,GAAG;YACxB,aAAa,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;YAC5E,gBAAgB,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI;YACjF,YAAY,EAAE,IAAI,CAAC,cAAc,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;SAC3J,CAAC;KACL;;;;;IAMD,kBAAkB,CAAC,OAAyB,IAAI,CAAC,SAAS,EAAE,OAAyB,IAAI,CAAC,SAAS;QAC/F,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC;KACvD;CAEJ,CAAA;;YAnFoC,UAAU;YAAe,MAAM;;AA7OtC;IAAzB,WAAW,CAAC,WAAW,CAAC;;kDAAyB;AA2ClD;IADC,KAAK,EAAE;;;wDAGP;AAOD;IADC,KAAK,CAAC,kBAAkB,CAAC;;;qDAGzB;AAWD;IADC,KAAK,CAAC,kBAAkB,CAAC;;;qDAGzB;AAWD;IADC,KAAK,CAAC,kBAAkB,CAAC;;;wDAGzB;AAOD;IADC,KAAK,CAAC,uBAAuB,CAAC;;;0DAG9B;AAOD;IADC,KAAK,CAAC,mBAAmB,CAAC;;;sDAG1B;AAOD;IADC,KAAK,CAAC,mBAAmB,CAAC;;;sDAG1B;AAOD;IADC,KAAK,CAAC,uBAAuB,CAAC;;;0DAG9B;AAOD;IADC,KAAK,CAAC,gBAAgB,CAAC;;;yDAGvB;AAOD;IADC,KAAK,CAAC,gBAAgB,CAAC;;;yDAGvB;AAOD;IADC,KAAK,CAAC,qBAAqB,CAAC;;;wDAG5B;AAOD;IADC,KAAK,CAAC,mBAAmB,CAAC;;;sDAG1B;AAOD;IADC,KAAK,CAAC,mBAAmB,CAAC;;;sDAG1B;AAUD;IADC,KAAK,CAAC,qBAAqB,CAAC;;;wDAG5B;AAUD;IADC,KAAK,CAAC,yBAAyB,CAAC;;;4DAGhC;AAUD;IADC,KAAK,CAAC,kBAAkB,CAAC;;;4DAGzB;AAUD;IADC,KAAK,CAAC,6BAA6B,CAAC;;;uEAGpC;AAWD;IADC,KAAK,CAAC,OAAO,CAAC;;;sDAWd;AAGS;IAAT,MAAM,EAAE;8BAAQ,YAAY;mDAAkC;AAEpB;IAA1C,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAc,WAAW;yDAAM;AA7OhE,oBAAoB;IArBhC,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,aAAa;QACvB,u8BAAuC;QAEvC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAmC,sBAAoB,CAAC;gBAChF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,UAAU,EAAE;YACR,gBAAgB;SACnB;;KACJ,CAAC;qCAgPmC,UAAU,EAAe,MAAM;GA/OvD,oBAAoB,CAkUhC;;IC3VY,iBAAiB,GAA9B,MAAa,iBAAiB;IAC1B,YAAmB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;KAAK;CAClD,CAAA;;YADmC,UAAU;;AADjC,iBAAiB;IAJ7B,SAAS,CAAC;QACP,QAAQ,EAAE,iCAAiC;QAC3C,QAAQ,EAAE,eAAe;KAC5B,CAAC;qCAEkC,UAAU;GADjC,iBAAiB,CAE7B;;;ACFD,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,uBAAuB,+BAApC,MAAa,uBAAuB;IA0ChC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAxCjD,UAAK,GAAW,oBAAoBA,cAAY,EAAE,EAAE,CAAC;QAE7D,cAAS,GAAU,EAAE,CAAC;QAEb,OAAE,GAAW,IAAI,CAAC,KAAK,CAAC;QAExB,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAM1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,cAAS,GAAqB,KAAK,CAAC;QAoBnC,oBAAe,GAAyB,IAAI,YAAY,EAAU,CAAC;QAuB7E,aAAQ,GAAQ,SAAS,CAAC;QAE1B,YAAO,GAAQ,SAAS,CAAC;KAvBqC;IAX9D,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IACD,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAMD,QAAQ;QACJ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACnC,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,UAAU,GAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChF,IAAI,CAAC,UAAU,EAAE;oBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;iBACrC;aACJ;SACJ;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;QAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAMD,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAE,KAAK,EAAkB;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;IAED,iBAAiB,CAAC,GAAW;QACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;KAC/F;CAEJ,CAAA;;YA7C2C,iBAAiB;;AApChD;IAAR,KAAK,EAAE;;mDAAyB;AAExB;IAAR,KAAK,EAAE;;qDAA2B;AAE1B;IAAR,KAAK,EAAE;;0DAAmB;AAElB;IAAR,KAAK,EAAE;;sDAAe;AAEd;IAAR,KAAK,EAAE;;yDAA2B;AAE1B;IAAR,KAAK,EAAE;;yDAA2B;AAE1B;IAAR,KAAK,EAAE;;yDAA2B;AAE1B;IAAR,KAAK,EAAE;;0DAAqC;AAEpC;IAAR,KAAK,EAAE;;qDAAW;AAEV;IAAR,KAAK,EAAE;;qDAAkC;AAEjC;IAAR,KAAK,EAAE;;6DAAwB;AAEvB;IAAR,KAAK,EAAE;;2DAAsB;AAEd;IAAf,KAAK,CAAC,OAAO,CAAC;;oDAAU;AAUf;IAAT,MAAM,EAAE;8BAAkB,YAAY;gEAAsC;AAxCpE,uBAAuB;IAjBnC,SAAS,CAAC;QACP,QAAQ,EAAE,kBAAkB;QAC5B,QAAQ,EAAE,gBAAgB;QAC1B,02DAA2C;QAE3C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAsC,yBAAuB,CAAC;gBACtF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,kBAAkB;SAC9B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCA2C0C,iBAAiB;GA1ChD,uBAAuB,CAuFnC;;;IC1FY,yBAAyB,iCAAtC,MAAa,yBAAyB;IAqClC,YACY,WAAuB,EACvB,kBAAqC;QADrC,gBAAW,GAAX,WAAW,CAAY;QACvB,uBAAkB,GAAlB,kBAAkB,CAAmB;QArCxC,oBAAe,GAAY,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACnE,sBAAiB,GAAY,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QAUvE,aAAQ,GAAY,KAAK,CAAC;QAU1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAEzB,kBAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;QAEtD,aAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;QAI3D,kBAAa,GAAa,SAAS,CAAC;QAEpC,mBAAc,GAAa,SAAS,CAAC;KAKhC;IAEL,QAAQ,MAAY;IAEpB,UAAU,CAAC,GAAQ;QACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC5B;IAED,gBAAgB,CAAE,UAAmB;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,cAAc,CAAC,MAAW;QACtB,OAAO,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;KACvI;IAED,cAAc,CAAC,MAAW;QACtB,OAAO,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;KAC5J;IAED,gBAAgB,CAAC,MAAW;QACxB,OAAO,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;KACnJ;IAED,WAAW,CAAC,KAAU,EAAE,MAAW,EAAE,KAAa;QAC9C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;YAChD,OAAO;SACV;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aAAE;iBAAM;gBAAE,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;aAAE;YAEvI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;SACN;aAAM;YACH,MAAM,KAAK,GAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACf,aAAa,EAAE,KAAK;oBACpB,KAAK,EAAE,IAAI,CAAC,KAAK;iBACpB,CAAC,CAAC;aACN;SACJ;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACpB,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;KACN;IAED,UAAU,CAAC,MAAW;QAClB,IAAI,QAAQ,GAAY,KAAK,CAAC;QAC9B,MAAM,WAAW,GAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACzC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;oBAC1B,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACnD,QAAQ,GAAG,IAAI,CAAC;wBAChB,MAAM;qBACT;iBACJ;aACJ;SACJ;aAAM;YACH,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACvF;QAED,OAAO,QAAQ,CAAC;KACnB;IAED,YAAY,CAAC,MAAW;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7G;IAED,MAAM;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEO,eAAe;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;KACzC;IAEO,kBAAkB,CAAC,GAAG,UAAoB;QAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;KACvF;CAEJ,CAAA;;YA3G4B,UAAU;YACH,iBAAiB;;AAlCxC;IAAR,KAAK,EAAE;;qDAAqB;AAEpB;IAAR,KAAK,EAAE;;6DAAoB;AAEnB;IAAR,KAAK,EAAE;;0DAAiB;AAEhB;IAAR,KAAK,EAAE;;wDAAe;AAEd;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;0DAAgB;AAEf;IAAR,KAAK,EAAE;;8DAAqB;AAEpB;IAAR,KAAK,EAAE;;8DAAqB;AAEpB;IAAR,KAAK,EAAE;;iEAAwB;AAEvB;IAAR,KAAK,EAAE;;2DAA2B;AAE1B;IAAR,KAAK,EAAE;;2DAA2B;AAEzB;IAAT,MAAM,EAAE;8BAAgB,YAAY;gEAA2B;AAEtD;IAAT,MAAM,EAAE;8BAAW,YAAY;2DAA2B;AA7BlD,yBAAyB;IAjBrC,SAAS,CAAC;QACP,QAAQ,EAAE,sEAAsE;QAChF,QAAQ,EAAE,kBAAkB;QAC5B,6pCAA6C;QAE7C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAwC,2BAAyB,CAAC;gBAC1F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,oBAAoB;SAChC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAuC2B,UAAU;QACH,iBAAiB;GAvCxC,yBAAyB,CAiJrC;;;IC/IY,mBAAmB,2BAAhC,MAAa,mBAAmB;IAiE5B;QA/DA,oBAAe,GAAY,KAAK,CAAC;QAcxB,aAAQ,GAAY,KAAK,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAY1B,aAAQ,GAAW,aAAa,CAAC;QAIjC,YAAO,GAAQ,EAAE,CAAC;QAElB,aAAQ,GAAW,IAAI,CAAC;QAYvB,YAAO,GAA6B,IAAI,YAAY,EAAc,CAAC;QACnE,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC7D,kBAAa,GAAoB,IAAI,YAAY,EAAK,CAAC;QACvD,sBAAiB,GAAoB,IAAI,YAAY,EAAK,CAAC;QAYrE,kBAAa,GAAuB,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QAM7F,aAAQ,GAAQ,SAAe,CAAC;QAEhC,YAAO,GAAQ,SAAe,CAAC;KANd;IA3BR,IAAI,KAAK,CAAC,KAAU;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAClC;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAOD,IAAI,kBAAkB;QAClB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxE,OAAO,IAAI,CAAC,WAAW,CAAC;SAC3B;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5C;QAED,OAAO,EAAE,CAAC;KACb;IAMD,QAAQ,MAAY;IAMpB,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACrB;IAED,aAAa;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;KAChD;IAED,gBAAgB,CAAC,MAAS;QACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAClC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChD;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAEO,SAAS,CAAC,MAAS,EAAE,QAAgB;QACzC,MAAM,UAAU,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,GAAQ,MAAM,CAAC;QAExB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,OAAO,KAAK,CAAC;aAChB;SACJ;KACJ;IAED,cAAc,CAAC,MAAS;QACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;aACtE;iBAAM;gBACH,QAAQ,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;aACxC;SACJ;QACD,OAAO,KAAK,CAAC;KAChB;IAED,aAAa,CAAC,MAAS;QACnB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvC;CAEJ,CAAA;AA7HY;IAAR,KAAK,EAAE;;+CAAY;AAEX;IAAR,KAAK,EAAE;;iDAAc;AAEb;IAAR,KAAK,EAAE;;sDAAmB;AAElB;IAAR,KAAK,EAAE;;kDAAe;AAEd;IAAR,KAAK,EAAE;;wDAAqB;AAEpB;IAAR,KAAK,EAAE;;qDAA2B;AAE1B;IAAR,KAAK,EAAE;;qDAA2B;AAE1B;IAAR,KAAK,EAAE;;uDAAoB;AACnB;IAAR,KAAK,EAAE;;4DAAkC;AACjC;IAAR,KAAK,EAAE;;6DAAmC;AAClC;IAAR,KAAK,EAAE;;0DAAuB;AAEtB;IAAR,KAAK,EAAE;;uDAAoB;AACnB;IAAR,KAAK,EAAE;;4DAAkC;AACjC;IAAR,KAAK,EAAE;;6DAAmC;AAClC;IAAR,KAAK,EAAE;;0DAAuB;AAEtB;IAAR,KAAK,EAAE;;qDAAkC;AAEjC;IAAR,KAAK,EAAE;;uDAAgC;AAE/B;IAAR,KAAK,EAAE;;oDAAmB;AAElB;IAAR,KAAK,EAAE;;qDAAyB;AAExB;IAAR,KAAK,EAAE;;;gDAKP;AAKS;IAAT,MAAM,EAAE;8BAAU,YAAY;oDAA8C;AACnE;IAAT,MAAM,EAAE;8BAAgB,YAAY;0DAAkC;AAC7D;IAAT,MAAM,EAAE;8BAAgB,YAAY;0DAA4B;AACvD;IAAT,MAAM,EAAE;8BAAoB,YAAY;8DAA4B;AAnD5D,mBAAmB;IAlB/B,SAAS,CAAC;QACP,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,YAAY;QACtB,2uDAAsC;QAEtC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAkC,qBAAmB,CAAC;gBAC9E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,aAAa;SACzB;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;;KACxC,CAAC;;GACW,mBAAmB,CAmI/B;;MCrJY,WAAW,GAAa;IACjC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACP,CAAC;AAEF,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC;IACvC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACvC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACvC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC;IACtC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC;IACtC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;CACvC,CAAC,CAAC;AAKH,IAAa,yBAAyB,GAAtC,MAAa,yBAA0B,SAAQ,eAAe;IAI1D;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC1C,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAChC,GAAG,CAAC,CAAC,KAAY,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,EAC5C,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACjB,CAAC;KACL;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAEO,cAAc;QAClB,MAAM,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;QAChI,OAAO,OAAO,CAAC;KAClB;CACJ,CAAA;;AAtBY,yBAAyB;IAHrC,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;;GACW,yBAAyB,CAsBrC;;ICrCY,UAAU,GAAvB,MAAa,UAAW,SAAQ,eAAe;IAU3C,YAAoB,MAAc;QAC9B,KAAK,EAAE,CAAC;QADQ,WAAM,GAAN,MAAM,CAAQ;QAN3B,cAAS,GAAc,EAAE,CAAC;QAE1B,aAAQ,GAAY,KAAK,CAAC;QAE1B,eAAU,GAA4B,IAAI,eAAe,CAAS,SAAS,CAAC,CAAC;QAIhF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAoB;YAC9C,IAAI,KAAK,YAAY,aAAa,EAAE;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnC;SACJ,CAAC,CAAC;KACN;IAEM,KAAK;QACR,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAEM,IAAI;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAEM,MAAM;QACT,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAEO,gBAAgB;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;KACnD;CAEJ,CAAA;;YA5B+B,MAAM;;;AAVzB,UAAU;IAHtB,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAW8B,MAAM;GAVzB,UAAU,CAsCtB;;;ICvBY,6BAA6B,qCAA1C,MAAa,6BAA6B;IAEtC,YACY,WAAuB,EACvB,0BAAqD;QADrD,gBAAW,GAAX,WAAW,CAAY;QACvB,+BAA0B,GAA1B,0BAA0B,CAA2B;KAC5D;IAEL,QAAQ,MAAY;IAEpB,kBAAkB;QACd,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa;YACtC,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aAC3B;SACJ,CAAC,CAAC;KACN;IAED,IAAI,QAAQ;QACR,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,IAAI,aAAa;;;;QAIb,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAC7C,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,CACrE,CAAC;KACL;IAED,eAAe;QACX,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa;gBACtC,IAAI,CAAC,aAAa,EAAE;oBAChB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;iBAC5B;aACJ,CAAC,CAAC;SACN;KACJ;IAGD,QAAQ,CAAC,KAAc;QACnB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa;YACtC,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aAC3B;iBAAM;gBACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC5B;SACJ,CAAC,CAAC;KACN;CAEJ,CAAA;;YAhD4B,UAAU;YACK,yBAAyB;;AAqCjE;IADC,YAAY,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;;qCAC1B,OAAO;;6DAQtB;AAjDQ,6BAA6B;IAjBzC,SAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,sBAAsB;QAChC,ydAAyC;QAEzC,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA4C,+BAA6B,CAAC;gBAClG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,wBAAwB;SACpC;;KACJ,CAAC;qCAI2B,UAAU;QACK,yBAAyB;GAJxD,6BAA6B,CAmDzC;;;ICrCY,oBAAoB,4BAAjC,MAAa,oBAAoB;IAuB7B,YACY,WAAuB,EACvB,0BAAqD,EACrD,OAAe;QAFf,gBAAW,GAAX,WAAW,CAAY;QACvB,+BAA0B,GAA1B,0BAA0B,CAA2B;QACrD,YAAO,GAAP,OAAO,CAAQ;QAtBpB,qCAAgC,GAAY,IAAI,CAAC;QACjD,qCAAgC,GAAY,IAAI,CAAC;QAEjD,gBAAW,GAAY,KAAK,CAAC;QAE3B,cAAS,GAAc,EAAE,CAAC;QAE1B,gBAAW,GAAW,cAAc,CAAC;QAQrC,sBAAiB,GAAY,KAAK,CAAC;QAElC,oBAAe,GAAiC,IAAI,YAAY,EAAkB,CAAC;KAMxF;IAEL,QAAQ,MAAY;IAEpB,eAAe;QACX,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;KAC/C;IAED,IAAW,QAAQ;QACf,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAC7C,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,CACrE,CAAC;KACL;IAED,IAAW,qBAAqB;QAC5B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YACtH,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;SACvB;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YAC9H,OAAO,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;SACzD;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YAC/H,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,MAAM,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC9G;KACJ;IAED,IAAW,4BAA4B;QACnC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YACtH,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7B;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YAC9H,OAAO,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;SAC7D;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YAC/H,OAAO,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;SAC7D;KACJ;IAEM,aAAa;QAChB,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;KAC7B;IAEM,yBAAyB,CAAC,IAAa;QAC1C,UAAU,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aAC3B;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;;;;gBAMrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;oBAC/F,IAAI,CAAC,gCAAgC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAClE;qBAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;oBACtG,IAAI,CAAC,gCAAgC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAClE;aACJ;SACJ,CAAC,CAAC;KACN;IAEM,sBAAsB,CAAC,QAAmB;QAC7C,UAAU,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAE7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;oBAC1C,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;iBACrD;aACJ;SACJ,CAAC,CAAC;KACN;IAEM,uBAAuB;QAC1B,UAAU,CAAC;YACP,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;gBAC3D,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;aAChD;iBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;gBAClE,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;aAChD;iBAAM;gBACH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/C;SACJ,CAAC,CAAC;KACN;IAEM,YAAY,CAAC,IAAa;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClD;IAEM,uBAAuB,CAAC,IAAa;QACxC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,YAAY,GAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpE,IAAI,QAAQ,GAAc,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YACvH,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;SAC9E;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE;YAClE,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;SAC9E;QAED,MAAM,eAAe,GAAY,QAAQ;aACpC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;aAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpG,IAAI,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;YACrG,MAAM,cAAc,GAAY,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACzG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBACnF,MAAM,cAAc,GAAY,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;aAC7C;iBAAM;gBACH,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;aAC7C;SACJ;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,kBAAkB,CAAC,OAAgB,IAAI,EAAE,WAAoB,IAAI;QACpE,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;YAC7C,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;YAE7C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE5C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa;gBACtC,IAAI,CAAC,aAAa,EAAE;oBAChB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;iBAC5B;aACJ,CAAC,CAAC;SACN;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAEM,WAAW,CAAC,IAAY;QAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;KACnE;IAEM,YAAY;QACf,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ;YACnC,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;SACJ,CAAC,CAAC;KACN;IAEM,YAAY;QACf,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ;YACnC,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;SACJ,CAAC,CAAA;KACL;CAEJ,CAAA;;YA1K4B,UAAU;YACK,yBAAyB;YAC5C,MAAM;;AAxBc;IAAxC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAU,UAAU;qDAAC;AAOpD;IAAR,KAAK,EAAE;;uDAA2B;AAE1B;IAAR,KAAK,EAAE;;yDAAsC;AAErC;IAAR,KAAK,EAAE;;+DAA2B;AAE1B;IAAR,KAAK,EAAE;;kEAA8B;AAE7B;IAAR,KAAK,EAAE;;gEAA4B;AAE3B;IAAR,KAAK,EAAE;;+DAAoC;AAElC;IAAT,MAAM,EAAE;8BAAkB,YAAY;6DAAsD;AArBpF,oBAAoB;IAxBhC,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,aAAa;QACvB,w9HAAuC;QAEvC,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAmC,sBAAoB,CAAC;gBAChF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;QACD,UAAU,EAAE;YACR,OAAO,CAAC,iBAAiB,EAAE;gBACvB,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;gBACrD,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACvD,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,mCAAmC,CAAC,CAAC;aACrF,CAAC;SACL;;KACJ,CAAC;qCAyB2B,UAAU;QACK,yBAAyB;QAC5C,MAAM;GA1BlB,oBAAoB,CAkMhC;;;ICvNY,oBAAoB,4BAAjC,MAAa,oBAAqB,SAAQ,UAAU;IAMhD,QAAQ,MAAY;IAEpB,OAAO,CAAC,KAAa;QACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;CAEJ,CAAA;AAVY;IAAR,KAAK,EAAE;;gDAAY;AAEX;IAAR,KAAK,EAAE;;kDAAc;AAJb,oBAAoB;IAfhC,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,aAAa;QACvB,ggCAAuC;QAEvC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,UAAU;gBACnB,WAAW,EAAE,sBAAoB;aACpC;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;;KACJ,CAAC;GACW,oBAAoB,CAYhC;;;ICGY,sBAAsB,8BAAnC,MAAa,sBAAsB;IAsC/B,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAlCzD,kBAAa,GAAQ,EAAE,CAAC;QAEf,YAAO,GAAY,KAAK,CAAC;QAEzB,kBAAa,GAAY,KAAK,CAAC;QAE/B,aAAQ,GAAY,KAAK,CAAC;QAE1B,eAAU,GAAY,KAAK,CAAC;QAE5B,eAAU,GAAY,KAAK,CAAC;QAE5B,qBAAgB,GAAY,KAAK,CAAC;QAMlC,YAAO,GAAuB,EAAE,CAAC;QAEjC,YAAO,GAAW,IAAI,CAAC;QAWtB,uBAAkB,GAAsB,IAAI,YAAY,EAAE,CAAC;QAC3D,0BAAqB,GAAmD,IAAI,YAAY,EAAE,CAAC;KAEvC;IAVrD,IAAI,IAAI,CAAC,GAAQ;QACtB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;KACpB;IACD,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAOD,QAAQ,MAAM;IAEP,gBAAgB,CAAC,KAAa,EAAE,MAAwB;QAC3D,OAAO,MAAM,CAAC,QAAQ,CAAC;KAC1B;IAEM,aAAa,CAAC,KAAa,EAAE,GAAM;QACtC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B;IAEM,mBAAmB,CAAC,GAAM;QAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAClE,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACnC;IAEM,gBAAgB,CAAC,KAAa;QACjC,OAAO,OAAO,KAAK,EAAE,CAAC;KACzB;IAEM,iBAAiB,CAAC,GAAM;QAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SACvD;aAAM;YACH,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;KACJ;IAEM,cAAc,CAAC,GAAW,EAAE,MAAwB;QACvD,IAAI,KAAK,GAAW,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7B,KAAK,GAAG,EAAE,CAAC;SACd;aAAM;YACH,IAAI,GAAG,GAAQ,MAAM,CAAC,KAAK,CAAC;YAC5B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE;gBACpC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC3B;YACD,MAAM,QAAQ,GAAuB,MAAM,CAAC,IAAI,CAAC;YACjD,IAAI,QAAQ,EAAE;gBACV,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aACnC;iBAAM,IAAI,KAAK,KAAK,SAAS,EAAE;gBAC5B,KAAK,GAAG,GAAG,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;KAChB;IAEM,cAAc,CAAC,GAAM;QACxB,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACvC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC3C;IAEM,mBAAmB,CAAC,GAAM;QAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO;SACV;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACxC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;iBAC3D;qBAAM;oBACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;iBAChE;aACJ;iBAAM;gBACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACJ;aAAM;YACH,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,KAAK,GAAW,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACvC;iBAAM;gBACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACJ;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAEM,WAAW,CAAC,GAAM,EAAE,MAAwB;QAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACtB;KACJ;CAEJ,CAAA;;YAhG2C,iBAAiB;;AAhChD;IAAR,KAAK,EAAE;;uDAA0B;AAEzB;IAAR,KAAK,EAAE;;6DAAgC;AAE/B;IAAR,KAAK,EAAE;;wDAA2B;AAE1B;IAAR,KAAK,EAAE;;0DAA6B;AAE5B;IAAR,KAAK,EAAE;;0DAA6B;AAE5B;IAAR,KAAK,EAAE;;gEAAmC;AAElC;IAAR,KAAK,EAAE;;+DAAsC;AAErC;IAAR,KAAK,EAAE;;8DAAqC;AAEpC;IAAR,KAAK,EAAE;;uDAAkC;AAEjC;IAAR,KAAK,EAAE;;uDAAwB;AAEvB;IAAR,KAAK,EAAE;8BAAe,WAAW;4DAAM;AAE/B;IAAR,KAAK,EAAE;;;kDAEP;AAKS;IAAT,MAAM,EAAE;8BAAqB,YAAY;kEAA2B;AAC3D;IAAT,MAAM,EAAE;8BAAwB,YAAY;qEAAwD;AApC5F,sBAAsB;IAxBlC,SAAS,CAAC;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,eAAe;QACzB,45EAA0C;QAE1C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAqC,wBAAsB,CAAC;gBACpF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,iBAAiB;SAC7B;QACD,UAAU,EAAE;YACR,OAAO,CAAC,cAAc,EAAE;gBACpB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7E,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzC,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aACxF,CAAC;SACL;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAuC0C,iBAAiB;GAtChD,sBAAsB,CAsIlC;;;ICnJY,wBAAwB,gCAArC,MAAa,wBAAwB;IAEjC,iBAAiB;IAEjB,QAAQ,MAAM;CAEjB,CAAA;AANY,wBAAwB;IAjBpC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,8CAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,wBAAwB,CAMpC;;MCxBY,SAAS;IAMlB,YACI,QAAgB,EAChB,SAAwB;QAExB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAW,SAAS,CAAC,KAAoB;QACrC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;CAEJ;;;ICLY,wBAAwB,gCAArC,MAAa,wBAAwB;IAqBjC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAnBzD,kBAAa,GAAiE,IAAI,CAAC;QAE1E,YAAO,GAAuB,EAAE,CAAC;QAEjC,YAAO,GAAY,KAAK,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QAG1B,cAAS,GAAmB,KAAK,CAAC;QAClC,qBAAgB,GAAY,IAAI,CAAC;QACjC,eAAU,GAAY,KAAK,CAAC;QAE5B,sBAAiB,GAAW,mBAAmB,CAAC;QAChD,uBAAkB,GAAW,qBAAqB,CAAC;QACnD,kBAAa,GAAW,aAAa,CAAC;QAErC,eAAU,GAA4B,IAAI,YAAY,EAAa,CAAC;KAEhB;IAE9D,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACpG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;gBAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;aAChG;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;aACrF;SACJ;KACJ;IAEM,gBAAgB,CAAC,KAAa,EAAE,MAAwB;QAC3D,OAAO,MAAM,CAAC,QAAQ,CAAC;KAC1B;IAEM,YAAY,CAAC,MAAwB;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACrC,OAAO;SACV;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACvC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEO,qBAAqB,CAAC,MAAwB;QAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAClB,OAAO,EAAE,CAAC;SACb;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,KAAK,EAAE;gBAC5C,OAAO,MAAM,CAAC;aACjB;iBAAM;gBACH,OAAO,KAAK,CAAC;aAChB;SACJ;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;gBACnC,OAAO,KAAK,CAAC;aAChB;iBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,KAAK,EAAE;gBACnD,OAAO,MAAM,CAAC;aACjB;iBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,MAAM,EAAE;gBACpD,OAAO,EAAE,CAAC;aACb;SACJ;QAED,OAAO,EAAE,CAAC;KACb;IAEM,eAAe,CAAC,MAAwB;QAC3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACzF,MAAM,MAAM,GAAY,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC;SACjB;QAED,OAAO,KAAK,CAAC;KAChB;CAEJ,CAAA;;YArE2C,iBAAiB;;AAjBhD;IAAR,KAAK,EAAE;;yDAAkC;AAEjC;IAAR,KAAK,EAAE;;yDAA0B;AAEzB;IAAR,KAAK,EAAE;;0DAA2B;AAE1B;IAAR,KAAK,EAAE;;4DAAoB;AACnB;IAAR,KAAK,EAAE;;2DAAmC;AAClC;IAAR,KAAK,EAAE;;kEAAkC;AACjC;IAAR,KAAK,EAAE;;4DAA6B;AAE5B;IAAR,KAAK,EAAE;;mEAAiD;AAChD;IAAR,KAAK,EAAE;;oEAAoD;AACnD;IAAR,KAAK,EAAE;;+DAAuC;AAErC;IAAT,MAAM,EAAE;8BAAa,YAAY;4DAA4C;AAnBrE,wBAAwB;IAjBpC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,u/CAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAsB0C,iBAAiB;GArBhD,wBAAwB,CA0FpC;;;IC/FY,4BAA4B,oCAAzC,MAAa,4BAA4B;IAqCrC;QAjCS,YAAO,GAAW,CAAC,CAAC;QAErB,oBAAe,GAAY,IAAI,CAAC;QAQhC,cAAS,GAAY,KAAK,CAAC;QAQ3B,gBAAW,GAAY,KAAK,CAAC;QAQ5B,oBAAe,GAAW,QAAQ,CAAC;QAEnC,gBAAW,GAAW,SAAS,CAAC;QAE/B,eAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;QAC9D,yBAAoB,GAAyB,IAAI,YAAY,EAAU,CAAC;KAEjE;IA9BR,IAAI,cAAc,CAAC,KAAc;QACtC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;KACjD;IACD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAGQ,IAAI,QAAQ,CAAC,KAAc;QAChC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;KAC3C;IACD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAGQ,IAAI,UAAU,CAAC,KAAc;QAClC,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;KAC7C;IACD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAWD,QAAQ,MAAY;IAEpB,YAAY,CAAC,KAAa;QACtB,OAAO,KAAK,CAAC;KAChB;CAEJ,CAAA;AA3CY;IAAR,KAAK,EAAE;;wDAAY;AAEX;IAAR,KAAK,EAAE;;6DAAqB;AAGpB;IAAR,KAAK,EAAE;;;kEAEP;AAMQ;IAAR,KAAK,EAAE;;;4DAEP;AAMQ;IAAR,KAAK,EAAE;;;8DAEP;AAKQ;IAAR,KAAK,EAAE;;qEAAoC;AAEnC;IAAR,KAAK,EAAE;;iEAAiC;AAE/B;IAAT,MAAM,EAAE;8BAAa,YAAY;gEAAsC;AAC9D;IAAT,MAAM,EAAE;8BAAuB,YAAY;0EAAsC;AAnCzE,4BAA4B;IAjBxC,SAAS,CAAC;QACP,QAAQ,EAAE,uBAAuB;QACjC,QAAQ,EAAE,qBAAqB;QAC/B,w8EAAgD;QAEhD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA2C,8BAA4B,CAAC;gBAChG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,uBAAuB;SACnC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,4BAA4B,CA6CxC;AAED,SAAS,eAAe,CAAC,KAAuB;IAC5C,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC;CACvC;;;ICjDY,6BAA6B,qCAA1C,MAAa,6BAA6B;IAEtC,iBAAiB;IAEjB,QAAQ,MAAM;CAEjB,CAAA;AANY,6BAA6B;IAjBzC,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,sBAAsB;QAChC,8KAAkD;QAElD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAA4C,+BAA6B,CAAC;gBAClG,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,yBAAyB;SACrC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,6BAA6B,CAMzC;;;ICHY,kBAAkB,0BAA/B,MAAa,kBAAkB;;IAyC3B;QAvCS,YAAO,GAAuB,EAAE,CAAC;QACjC,YAAO,GAAY,KAAK,CAAC;QACzB,aAAQ,GAAY,KAAK,CAAC;QAI1B,cAAS,GAAmB,KAAK,CAAC;QAClC,qBAAgB,GAAY,IAAI,CAAC;QACjC,eAAU,GAAY,KAAK,CAAC;QAE5B,sBAAiB,GAAW,mBAAmB,CAAC;QAChD,uBAAkB,GAAW,qBAAqB,CAAC;QACnD,kBAAa,GAAW,aAAa,CAAC;QAErC,eAAU,GAA4B,IAAI,YAAY,EAAa,CAAC;;;QAIrE,kBAAa,GAAY,KAAK,CAAC;QAC/B,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAC5B,qBAAgB,GAAY,KAAK,CAAC;QAGlC,YAAO,GAAW,IAAI,CAAC;QAItB,uBAAkB,GAAsB,IAAI,YAAY,EAAE,CAAC;QAC3D,0BAAqB,GAAmD,IAAI,YAAY,EAAE,CAAC;QAK5F,oBAAe,GAAY,IAAI,CAAC;QAChC,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;KAGpB;IAEjB,QAAQ,MAAM;IAEd,WAAW,MAAY;CAE1B,CAAA;AA7CY;IAAR,KAAK,EAAE;;mDAAkC;AACjC;IAAR,KAAK,EAAE;;mDAA0B;AACzB;IAAR,KAAK,EAAE;;oDAA2B;AAG1B;IAAR,KAAK,EAAE;;sDAAoB;AACnB;IAAR,KAAK,EAAE;;qDAAmC;AAClC;IAAR,KAAK,EAAE;;4DAAkC;AACjC;IAAR,KAAK,EAAE;;sDAA6B;AAE5B;IAAR,KAAK,EAAE;;6DAAiD;AAChD;IAAR,KAAK,EAAE;;8DAAoD;AACnD;IAAR,KAAK,EAAE;;yDAAuC;AAErC;IAAT,MAAM,EAAE;8BAAa,YAAY;sDAA4C;AAIrE;IAAR,KAAK,EAAE;;yDAAgC;AAC/B;IAAR,KAAK,EAAE;;sDAA6B;AAC5B;IAAR,KAAK,EAAE;;sDAA6B;AAC5B;IAAR,KAAK,EAAE;;4DAAmC;AAClC;IAAR,KAAK,EAAE;;2DAAsC;AACrC;IAAR,KAAK,EAAE;;0DAAqC;AACpC;IAAR,KAAK,EAAE;;mDAAwB;AACc;IAA7C,YAAY,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAe,WAAW;wDAAM;AACpE;IAAR,KAAK,EAAE;;gDAAW;AAET;IAAT,MAAM,EAAE;8BAAqB,YAAY;8DAA2B;AAC3D;IAAT,MAAM,EAAE;8BAAwB,YAAY;iEAAwD;AAI5F;IAAR,KAAK,EAAE;;8CAAqB;AACpB;IAAR,KAAK,EAAE;;2DAAiC;AAChC;IAAR,KAAK,EAAE;;sDAA6B;AAC5B;IAAR,KAAK,EAAE;;sDAA6B;AAtC5B,kBAAkB;IAjB9B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,WAAW;QACrB,29CAAqC;QAErC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAiC,oBAAkB,CAAC;gBAC5E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,YAAY;SACxB;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,kBAAkB,CA+C9B;;;ICnDY,oBAAoB,4BAAjC,MAAa,oBAAoB;IAc7B,iBAAiB;IAEjB,QAAQ,MAAY;CAEvB,CAAA;AAhBY;IAAR,KAAK,EAAE;;gDAAY;AAEX;IAAR,KAAK,EAAE;;kDAAc;AAEb;IAAR,KAAK,EAAE;;uDAAmB;AAElB;IAAR,KAAK,EAAE;;mDAAe;AAEd;IAAR,KAAK,EAAE;;mDAAe;AAEd;IAAR,KAAK,EAAE;;mDAAe;AAZd,oBAAoB;IAhBhC,SAAS,CAAC;QACP,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,aAAa;QACvB,oOAAuC;QAEvC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAmC,sBAAoB,CAAC;gBAChF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;;KACJ,CAAC;;GACW,oBAAoB,CAkBhC;;;IChBY,mBAAmB,2BAAhC,MAAa,mBAAmB;IAE5B,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;KAAK;IAEhD,QAAQ,MAAY;IAEpB,MAAM;QACF,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;KAC7B;CAEJ,CAAA;;YARoC,UAAU;;AAFlC,mBAAmB;IAhB/B,SAAS,CAAC;QACP,QAAQ,EAAE,8BAA8B;QACxC,QAAQ,EAAE,YAAY;QACtB,wCAAuC;QAEvC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAkC,qBAAmB,CAAC;gBAC9E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;;KACJ,CAAC;qCAGmC,UAAU;GAFlC,mBAAmB,CAU/B;;AC3BD;AACA,MAAa,UAAU;IAEZ,OAAO,UAAU,CAAC,KAAa;QAClC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;KACjD;IAEM,OAAO,UAAU,CAAC,KAAa;QAClC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;KACjD;IAEM,OAAO,MAAM,CAAC,KAAa,EAAE,UAAmB,EAAE,IAA2B;QAChF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,EAAE;YAC3D,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;aAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE;YACxD,OAAO,aAAa,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;SACvD;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAEM,OAAO,WAAW,CAAC,KAAsB;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KAC9C;IAEM,OAAO,QAAQ,CAAC,KAAU;QAC7B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;KAC9F;CAEJ;;AC7BD,MAAM,MAAM,GAAG,OAAO,CAAC;AAEvB,AAKA;AACA,MAAa,QAAQ;IAMjB,iBAAiB;IAEV,OAAO,MAAM,CAAC,KAAW,EAAE,MAAc;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;SAC1C;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAEM,OAAO,OAAO,CAAC,KAAW;QAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,KAAK,CAAC;SAChB;QACD,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;KACxG;;IAGM,OAAO,OAAO,CAAC,OAA6B,EAAE,KAA2B,EAAE,cAAyC,MAAM;QAC7H,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;SACvF;QACD,OAAO,KAAK,CAAC;KAChB;;IAGM,OAAO,aAAa,CAAC,OAA6B,EAAE,KAA2B,EAAE,cAAyC,MAAM;QACnI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SAC1D;QACD,OAAO,KAAK,CAAC;KAChB;;IAGM,OAAO,UAAU,CAAC,OAA6B,EAAE,KAA2B,EAAE,cAAyC,MAAM;QAChI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SAC3D;QACD,OAAO,KAAK,CAAC;KAChB;;IAGM,OAAO,iBAAiB,CAAC,OAA6B,EAAE,KAA2B,EAAE,cAAyC,MAAM;QACvI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;KACpG;;IAGM,OAAO,oBAAoB,CAAC,OAA6B,EAAE,KAA2B,EAAE,cAAyC,MAAM;QAC1I,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;KACvG;;IAGM,OAAO,SAAS,CAAC,IAA0B,EAAE,OAA6B,EAAE,KAA2B,EAAE,cAAyC,MAAM;QAC3J,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;KACpH;IAEM,OAAO,gBAAgB,CAAC,OAAa,EAAE,KAAW,EAAE,IAA0E;QACjI,MAAM,YAAY,GAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAW,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAClH,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,QAAQ,IAAI;YACR,KAAK,cAAc,EAAE;gBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;gBAAC,MAAM;aAAE;YAClF,KAAK,SAAS,EAAE;gBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;gBAAC,MAAM;aAAE;YACxE,KAAK,SAAS,EAAE;gBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;gBAAC,MAAM;aAAE;YACxE,KAAK,OAAO,EAAE;gBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAC,MAAM;aAAE;YACpE,KAAK,MAAM,EAAE;gBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM;aAAE;YAClE,KAAK,QAAQ,EAAE;gBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAAC,MAAM;aAAE;SACzE;QACD,QAAQ,CAAC,OAAO,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE;KACzD;IAEM,OAAO,YAAY,CAAC,IAAU;QACjC,QAAQ,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACrB,KAAK,CAAC;gBACF,OAAO,QAAQ,CAAC;YACpB,KAAK,CAAC;gBACF,OAAO,QAAQ,CAAC;YACpB,KAAK,CAAC;gBACF,OAAO,SAAS,CAAC;YACrB,KAAK,CAAC;gBACF,OAAO,WAAW,CAAC;YACvB,KAAK,CAAC;gBACF,OAAO,UAAU,CAAC;YACtB,KAAK,CAAC;gBACF,OAAO,QAAQ,CAAC;YACpB,KAAK,CAAC;gBACF,OAAO,UAAU,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,iBAAiB,CAAC,KAAa,EAAE,OAAe;QAC1D,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE;YAC5D,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACjC;IAEM,OAAO,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,QAAiB,KAAK;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElF,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,KAAK,EAAE;YACP,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EACnB,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAC1C,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAChD,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IACxC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAC1C,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,IAChD,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5D;QACD,OAAO,IAAI,IAAI,CACX,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,GAAG;aACrD,UAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;aACrD,QAAQ,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;aACjD,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;aACnD,YAAY,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;aACzD,YAAY,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;KACvE;IAEM,OAAO,uBAAuB,CAAC,IAAU,EAAE,IAAY;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;QAC5E,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/B;IAEM,OAAO,qBAAqB,CAAC,IAAY;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAClD;IAEM,OAAO,eAAe,CAAC,KAAc;QACxC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SAClE;aAAM;YACH,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SACxD;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC5B;;IAGM,OAAO,YAAY,CAAC,IAAU;QACjC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,IAAI,GAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE;YAC9G,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,YAAY,CAAC,OAAa,EAAE,KAAW;QACjD,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACpH,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE;YAChD,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,kBAAkB,CAAC,OAAa,EAAE,KAAW;QACvD,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACpH,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE;YACpD,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE;YAClG,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,eAAe,CAAC,OAAa,EAAE,KAAW;QACpD,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACpH,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE;YACpD,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE;YAC9F,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB;IAEM,OAAO,sBAAsB,CAAC,OAAa,EAAE,KAAW;QAC3D,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACpF;IAEM,OAAO,yBAAyB,CAAC,OAAa,EAAE,KAAW;QAC9D,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACvF;IAEM,OAAO,cAAc,CAAC,IAAU,EAAE,OAAa,EAAE,KAAW;QAC/D,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACpG;IAEM,OAAO,sBAAsB,CAAC,IAAY,EAAE,OAAiC,MAAM;QACtF,MAAM,MAAM,GAAiB,IAAI,YAAY,EAAE,CAAC;QAChD,QAAQ,IAAI;YACR,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxD,KAAK,OAAO,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5D,KAAK,MAAM,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACzD;KACJ;IAEM,OAAO,uBAAuB,CAAC,KAAa,EAAE,OAAyB,MAAM;QAChF,MAAM,MAAM,GAAiB,IAAI,YAAY,EAAE,CAAC;QAChD,QAAQ,IAAI;YACR,KAAK,OAAO,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/D,KAAK,MAAM,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC5D;KACJ;IAEM,OAAO,MAAM,CAAC,KAAU;QAC3B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC;KACpE;IAEM,OAAO,OAAO,CAAC,KAAU;QAC5B,QACI,CAAC,KAAK,KAAK,IAAI;aACd,KAAK,KAAK,SAAS,CAAC;aACpB,KAAK,KAAK,EAAE,CAAC;aACb,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;aAC7C,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAC3F;KACL;IAEM,OAAO,UAAU,CAAC,KAAU;QAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/B;;AArQa,oBAAW,GAAG,YAAY,CAAC;AAE3B,yBAAgB,GAAG,kBAAkB,CAAC;;;ICM3C,wBAAwB,gCAArC,MAAa,wBAAwB;IAqCjC;QAnCA,oBAAe,GAAY,KAAK,CAAC;QAwBd,UAAK,GAA6B,IAAI,YAAY,EAAc,CAAC;QAC3D,gBAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC7D,cAAS,GAA6B,IAAI,YAAY,EAAc,CAAC;QACrE,cAAS,GAA6B,IAAI,YAAY,EAAc,CAAC;KAQ3E;IANjB,IAAI,cAAc;QACd,MAAM,IAAI,GAAW,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAW,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,iBAAiB,IAAI,OAAO,KAAK,EAAE,CAAC;KAC9C;IAID,QAAQ,MAAY;IAEpB,aAAa;QACT,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;KAChD;CAEJ,CAAA;AAzCY;IAAR,KAAK,EAAE;;oDAAY;AAEX;IAAR,KAAK,EAAE;;sDAAc;AAEb;IAAR,KAAK,EAAE;;2DAAmB;AAElB;IAAR,KAAK,EAAE;;wDAAgB;AAEf;IAAR,KAAK,EAAE;;sDAAc;AAEb;IAAR,KAAK,EAAE;;0DAAkB;AAEjB;IAAR,KAAK,EAAE;;uDAAe;AAEd;IAAR,KAAK,EAAE;8BAAa,IAAI;4DAAC;AAEjB;IAAR,KAAK,EAAE;;0DAAkB;AACjB;IAAR,KAAK,EAAE;;6DAAqB;AAEpB;IAAR,KAAK,EAAE;;0DAAkB;AACjB;IAAR,KAAK,EAAE;;6DAAqB;AAEV;IAAlB,MAAM,CAAC,SAAS,CAAC;8BAAQ,YAAY;uDAA8C;AAC3D;IAAxB,MAAM,CAAC,eAAe,CAAC;8BAAc,YAAY;6DAAkC;AAC7D;IAAtB,MAAM,CAAC,aAAa,CAAC;8BAAY,YAAY;2DAA8C;AACrE;IAAtB,MAAM,CAAC,aAAa,CAAC;8BAAY,YAAY;2DAA8C;AA7BnF,wBAAwB;IAjBpC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,y2EAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;;GACW,wBAAwB,CA6CpC;;AClED;;;;;;;AAQA,AAGA;AACA,MAAa,eAAe,GAAG,IAAI,cAAc,CAAS,iBAAiB,EAAE;IACzE,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,uBAAuB;CACnC,CAAC,CAAC;;AAGH,SAAgB,uBAAuB;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;CAC5B;;;;;;;AAQD,MAAa,wBAAwB,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;;AAG7F,MAAsB,WAAW;IAAjC;QAGc,mBAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAGtC,kBAAa,GAAqB,IAAI,CAAC,cAAc,CAAC;KA+PlE;;;;;;;IAjFG,kBAAkB,CAAC,GAAY;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAQ,CAAC,GAAG,GAAQ,GAAG,IAAI,CAAC;KAC/E;;;;;;;;;;;;;IAcD,WAAW,CAAC,KAAU;QAClB,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpE,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;;;;;IAMD,SAAS,CAAC,MAAW;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;;;;;;;;IASD,WAAW,CAAC,KAAQ,EAAE,MAAS;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAClD;;;;;;;;IASD,QAAQ,CAAC,KAAe,EAAE,MAAgB;QACtC,IAAI,KAAK,IAAI,MAAM,EAAE;YACjB,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,UAAU,IAAI,WAAW,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC3C;YACD,OAAO,UAAU,IAAI,WAAW,CAAC;SACpC;QACD,OAAO,KAAK,IAAI,MAAM,CAAC;KAC1B;;;;;;;;;IAUD,SAAS,CAAC,IAAO,EAAE,GAAc,EAAE,GAAc;QAC7C,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;YACxC,OAAO,GAAG,CAAC;SACd;QACD,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;YACxC,OAAO,GAAG,CAAC;SACd;QACD,OAAO,IAAI,CAAC;KACf;CACJ;;ACpSD;;;;;;;AAYA;AACA,MAAa,SAAS;IAQlB;;IAEa,KAAe;;IAEf,GAAa;QAFb,UAAK,GAAL,KAAK,CAAU;QAEf,QAAG,GAAH,GAAG,CAAU;KACrB;CACR;;AAkBD,MAAsB,qBAAqB;IAOvC;;IAEa,SAAY,EACX,QAAwB;QADzB,cAAS,GAAT,SAAS,CAAG;QACX,aAAQ,GAAR,QAAQ,CAAgB;QAR9B,sBAAiB,GAAG,IAAI,OAAO,EAA+B,CAAC;;QAGvE,qBAAgB,GAA4C,IAAI,CAAC,iBAAiB,CAAC;QAO/E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;;;;;;IAOD,eAAe,CAAC,KAAQ,EAAE,MAAe;QACpC,IAAyB,CAAC,SAAS,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;KAC7D;IAED,WAAW;QACP,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KACrC;IAES,oBAAoB,CAAC,IAAO;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5E;CAUJ;;AAID,IAAa,2BAA2B,GAAxC,MAAa,2BAA+B,SAAQ,qBAAkC;IAClF,YAAY,OAAuB;QAC/B,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACxB;;;;;IAMD,GAAG,CAAC,IAAc;QACd,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACrC;;IAGD,OAAO;QACH,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC9E;;;;;IAMD,UAAU;QACN,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;KACjC;CACJ,CAAA;;YAxBwB,WAAW;;AADvB,2BAA2B;IADvC,UAAU,EAAE;qCAEY,WAAW;GADvB,2BAA2B,CAyBvC;AAED;AAEA,IAAa,0BAA0B,GAAvC,MAAa,0BAA8B,SAAQ,qBAAsC;IAErF,YAAY,OAAuB;QAC/B,KAAK,CAAC,IAAI,SAAS,CAAI,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;KAChD;;;;;;IAOD,GAAG,CAAC,IAAc;QACd,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEpC,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,GAAG,GAAG,IAAI,CAAC;SACd;aAAM;YACH,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,GAAG,IAAI,CAAC;SACd;QAED,KAAK,CAAC,eAAe,CAAC,IAAI,SAAS,CAAI,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;KAC7D;;IAGD,OAAO;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;;QAGtC,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;YAC9B,OAAO,IAAI,CAAC;SACf;;QAGD,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE;YAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;gBACrE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SAClD;;QAGD,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;aACpD,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;KACvD;;;;;IAMD,UAAU;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC;KACrE;CACJ,CAAA;;YAnDwB,WAAW;;AAFvB,0BAA0B;IADtC,UAAU,EAAE;qCAGY,WAAW;GAFvB,0BAA0B,CAqDtC;AAED;AACA,SAAgB,uCAAuC,CAAC,MAA4C,EAAE,OAA6B;IAC/H,OAAO,MAAM,IAAI,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;CAC7D;;AAGD,MAAa,wCAAwC,GAAoB;IACrE,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,qBAAqB,CAAC,EAAE,WAAW,CAAC;IAC5E,UAAU,EAAE,uCAAuC;CACtD,CAAC;;AAIF,SAAgB,sCAAsC,CAAC,MAA4C,EAAE,OAA6B;IAC9H,OAAO,MAAM,IAAI,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;CAC5D;;AAGD,MAAa,uCAAuC,GAAoB;IACpE,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,qBAAqB,CAAC,EAAE,WAAW,CAAC;IAC5E,UAAU,EAAE,sCAAsC;CACrD;;ACrMD;;;;;;;;AASA,SAAgB,0BAA0B,CAAC,QAAgB;IACvD,OAAO,KAAK,CACR,wCAAwC,QAAQ,yCAAyC;QACzF,2FAA2F;QAC3F,wBAAwB,CAC3B,CAAC;CACL;;ACHD;AAEA,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAA9B;;;;;QAKa,YAAO,GAAkB,IAAI,OAAO,EAAQ,CAAC;;QAGtD,kBAAa,GAAW,UAAU,CAAC;;QAGnC,sBAAiB,GAAW,eAAe,CAAC;;QAG5C,mBAAc,GAAW,gBAAgB,CAAC;;QAG1C,mBAAc,GAAW,YAAY,CAAC;;QAGtC,kBAAa,GAAW,eAAe,CAAC;;QAGxC,kBAAa,GAAW,WAAW,CAAC;;QAGpC,uBAAkB,GAAW,mBAAmB,CAAC;;QAGjD,uBAAkB,GAAW,eAAe,CAAC;;QAG7C,2BAAsB,GAAW,aAAa,CAAC;;QAG/C,+BAA0B,GAAW,uBAAuB,CAAC;KAMhE;;IAHG,eAAe,CAAC,KAAa,EAAE,GAAW;QACtC,OAAO,GAAG,KAAK,WAAW,GAAG,EAAE,CAAC;KACnC;CACJ,CAAA;;AAzCY,iBAAiB;IAD7B,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;GACtB,iBAAiB,CAyC7B;;ACvDD;;;;;;;AAkBA;;;;AAIA,MAAa,eAAe;IACxB,YACW,KAAa,EACb,YAAoB,EACpB,SAAiB,EACjB,OAAgB,EAChB,aAAwC,EAAE,EAC1C,eAAe,KAAK,EACpB,QAAY;QANZ,UAAK,GAAL,KAAK,CAAQ;QACb,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAS;QAChB,eAAU,GAAV,UAAU,CAAgC;QAC1C,iBAAY,GAAZ,YAAY,CAAQ;QACpB,aAAQ,GAAR,QAAQ,CAAI;KAClB;CACR;;;;;AAyBD,IAAa,eAAe,GAA5B,MAAa,eAAe;IAoExB,YAAoB,WAAoC,EAAU,OAAe;QAA7D,gBAAW,GAAX,WAAW,CAAyB;QAAU,YAAO,GAAP,OAAO,CAAQ;;QA1CxE,YAAO,GAAW,CAAC,CAAC;;QAGpB,eAAU,GAAW,CAAC,CAAC;;QAGvB,YAAO,GAAY,KAAK,CAAC;;;;;QAMzB,oBAAe,GAAW,CAAC,CAAC;;QAS5B,iBAAY,GAAkB,IAAI,CAAC;;QAGnC,eAAU,GAAkB,IAAI,CAAC;;QAGvB,wBAAmB,GAClC,IAAI,YAAY,EAAgC,CAAC;;QAG3C,kBAAa,GAAG,IAAI,YAAY,EAAgD,CAAC;;;;;QAyLnF,kBAAa,GAAG,CAAC,KAAY;YACjC,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC/C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,OAAO;aACV;;YAGD,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;gBAEnE,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;iBACjG;aACJ;SACJ,CAAA;;;;;QAMO,kBAAa,GAAG,CAAC,KAAY;;YAEjC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;;;;gBAI1C,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;oBAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC3E;aACJ;SACJ,CAAA;QA3MG,OAAO,CAAC,iBAAiB,CAAC;YACtB,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC;YAC1C,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;SAC9D,CAAC,CAAC;KACN;;IAGD,YAAY,CAAC,IAAqB,EAAE,KAAiB;QACjD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SAC/D;KACJ;;IAGD,WAAW,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;KAC/D;IAED,WAAW,CAAC,OAAsB;QAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,aAAa,EAAE;YAClC,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/F;QAED,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACnE,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC;SACjE;QAED,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,CAAC;SACzC;KACJ;IAED,WAAW;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC/C,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KACjE;;IAGD,aAAa,CAAC,QAAgB,EAAE,QAAgB;QAC5C,IAAI,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;;QAGpD,IAAI,QAAQ,EAAE;YACV,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC;SACtC;QAED,OAAO,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;KACxC;;IAGD,gBAAgB,CAAC,WAAW,GAAG,IAAI;QAC/B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1C,MAAM,UAAU,GACZ,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;gBAE9E,IAAI,UAAU,EAAE;oBACZ,IAAI,CAAC,WAAW,EAAE;wBACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;qBAC9B;oBAED,UAAU,CAAC,KAAK,EAAE,CAAC;iBACtB;aACJ,CAAC,CAAC;SACN,CAAC,CAAC;KACN;;IAGD,aAAa,CAAC,KAAa;QACvB,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACzD;;IAGD,WAAW,CAAC,KAAa;QACrB,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvD;;IAGD,UAAU,CAAC,KAAa;QACpB,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACzE;;IAGD,kBAAkB,CAAC,KAAa;QAC5B,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KACnE;;IAGD,wBAAwB,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;QACtE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACzF,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,YAAY,GAAgC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAElF,IAAI,CAAC,YAAY,EAAE;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC5C,YAAY,GAAG,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACrE;QAED,OAAO,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;KACvE;;IAGD,sBAAsB,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;QACpE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACrF,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,QAAQ,GAAgC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxC,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SACpC;QAED,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KACjE;;IAGD,gBAAgB,CAAC,KAAa;QAC1B,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KACjE;;IAGD,oBAAoB,CAAC,KAAa;QAC9B,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACnF;;;;;;;;;;;IAYD,sBAAsB,CAAC,KAAa;;;QAGhC,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;KACxF;;IAGD,eAAe,CAAC,KAAa;QACzB,OAAO,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7D;;IAGD,aAAa,CAAC,KAAa;QACvB,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3D;;IAGD,YAAY,CAAC,KAAa;QACtB,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7E;;IAuCO,mBAAmB,CAAC,OAAoB;QAC5C,IAAI,IAA6B,CAAC;QAElC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;YACtB,IAAI,GAAG,OAAO,CAAC;SAClB;aAAM,IAAI,WAAW,CAAC,OAAO,CAAC,UAAW,CAAC,EAAE;YACzC,IAAI,GAAG,OAAO,CAAC,UAAyB,CAAC;SAC5C;QAED,IAAI,IAAI,EAAE;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAE9C,IAAI,GAAG,IAAI,GAAG,EAAE;gBACZ,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aAClD;SACJ;QAED,OAAO,IAAI,CAAC;KACf;CAEJ,CAAA;;YApOoC,UAAU;YAAgC,MAAM;;AA5DxE;IAAR,KAAK,EAAE;;8CAAe;AAGd;IAAR,KAAK,EAAE;;6CAA2B;AAG1B;IAAR,KAAK,EAAE;;mDAAoB;AAGnB;IAAR,KAAK,EAAE;;mDAAoB;AAGnB;IAAR,KAAK,EAAE;;iDAAkB;AAGjB;IAAR,KAAK,EAAE;;8DAA+B;AAG9B;IAAR,KAAK,EAAE;;gDAAqB;AAGpB;IAAR,KAAK,EAAE;;mDAAwB;AAGvB;IAAR,KAAK,EAAE;;gDAA0B;AAMzB;IAAR,KAAK,EAAE;;wDAA6B;AAG5B;IAAR,KAAK,EAAE;;wDAAgC;AAG/B;IAAR,KAAK,EAAE;;sDAA8B;AAG7B;IAAR,KAAK,EAAE;;qDAAoC;AAGnC;IAAR,KAAK,EAAE;;mDAAkC;AAGhC;IAAT,MAAM,EAAE;8BAA+B,YAAY;4DACC;AAG3C;IAAT,MAAM,EAAE;;sDAAkF;AAzDlF,eAAe;IAb3B,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,+kHAAiC;QAEjC,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,MAAM;YACd,eAAe,EAAE,MAAM;SAC1B;QACD,QAAQ,EAAE,qBAAqB;QAC/B,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAqEmC,UAAU,EAAgC,MAAM;GApExE,eAAe,CAwS3B;AAED;AACA,SAAS,WAAW,CAAC,IAAU;IAC3B,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;CACjC;;AAGD,SAAS,OAAO,CAAC,KAAa,EAAE,KAAoB,EAAE,GAAkB;IACpE,OAAO,GAAG,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,CAAC;CAC1E;;AAGD,SAAS,KAAK,CAAC,KAAa,EAAE,KAAoB,EAAE,GAAkB;IAClE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;CAC7E;;AAGD,SAAS,SAAS,CAAC,KAAa,EAAE,KAAoB,EAAE,GAAkB,EAAE,YAAqB;IAC7F,OAAO,YAAY,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;CAC5G;;ACrXD;;;;;;;AAYA;AACA,MAAa,iCAAiC,GAAG,IAAI,cAAc,CAAqC,mCAAmC,CAAC,CAAC;;AA4B7I,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAExC,YAAoB,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;KAAK;IAErD,iBAAiB,CAAC,IAAO,EAAE,YAA0B;QACjD,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAElC,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YAC/E,GAAG,GAAG,IAAI,CAAC;SACd;aAAM;YACH,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,GAAG,IAAI,CAAC;SACd;QAED,OAAO,IAAI,SAAS,CAAI,KAAK,EAAE,GAAG,CAAC,CAAC;KACvC;IAED,aAAa,CAAC,UAAoB,EAAE,YAA0B;QAC1D,IAAI,KAAK,GAAa,IAAI,CAAC;QAC3B,IAAI,GAAG,GAAa,IAAI,CAAC;QAEzB,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,EAAE;YACvD,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3B,GAAG,GAAG,UAAU,CAAC;SACpB;QAED,OAAO,IAAI,SAAS,CAAI,KAAK,EAAE,GAAG,CAAC,CAAC;KACvC;CACJ,CAAA;;YA5BqC,WAAW;;AAFpC,+BAA+B;IAD3C,UAAU,EAAE;qCAGyB,WAAW;GAFpC,+BAA+B,CA8B3C;AAGD;AACA,SAAgB,4CAA4C,CAAC,MAA8C,EAAE,OAA6B;IACtI,OAAO,MAAM,IAAI,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;CACjE;;AAGD,MAAa,oCAAoC,GAAoB;IACjE,OAAO,EAAE,iCAAiC;IAC1C,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,iCAAiC,CAAC,EAAE,WAAW,CAAC;IACxF,UAAU,EAAE,4CAA4C;CAC3D;;ACpFD;;;;;;;AAoBA,MAAM,aAAa,GAAG,CAAC,CAAC;;;;;AAaxB,IAAa,YAAY,GAAzB,MAAa,YAAY;IA6GrB,YACY,kBAAqC,EACC,YAA4B,EACvD,YAA4B,EAC3B,IAAqB,EAEjC,cAAiD;QALjD,uBAAkB,GAAlB,kBAAkB,CAAmB;QACC,iBAAY,GAAZ,YAAY,CAAgB;QACvD,iBAAY,GAAZ,YAAY,CAAgB;QAC3B,SAAI,GAAJ,IAAI,CAAiB;QAEjC,mBAAc,GAAd,cAAc,CAAmC;QAlHrD,0BAAqB,GAAG,YAAY,CAAC,KAAK,CAAC;;QA4DhC,mBAAc,GAA2B,IAAI,YAAY,EAAY,CAAC;;QAGtE,mBAAc,GAC7B,IAAI,YAAY,EAAkC,CAAC;;QAGpC,qBAAgB,GAAoB,IAAI,YAAY,EAAK,CAAC;QAiDzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAChD;;;;IAtHD,IAAI,UAAU,KAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;IAChD,IAAI,UAAU,CAAC,KAAQ;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1H,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;;IAKD,IAAI,QAAQ,KAA8B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAClE,IAAI,QAAQ,CAAC,KAA8B;QACvC,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/F;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACnC;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;IAkFD,kBAAkB;QACd,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;aACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACrB,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACtC;IAED,WAAW,CAAC,OAAsB;QAC9B,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAEhF,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;KAC5C;;IAGD,aAAa,CAAC,KAAmC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,cAA6B,CAAC;QAClC,IAAI,YAA2B,CAAC;QAEhC,IAAI,IAAI,CAAC,SAAS,YAAY,SAAS,EAAE;YACrC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnE,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAClE;aAAM;YACH,cAAc,GAAG,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/E;QAED,IAAI,cAAc,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;YAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1C;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;KACzE;;IAGD,0BAA0B,CAAC,KAAoB;;;;QAK3C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE5B,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,UAAU;gBACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtF,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtF,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACzE,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAChE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrD,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAC/D,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;oBAClD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM;oBAC1B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM;oBAC1B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBACvD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC7D,MAAM;YACV,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACN,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACvD,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;;oBAElF,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;gBACD,OAAO;YACX,KAAK,MAAM;;gBAEP,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;oBAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACjD,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;iBAC3B;gBACD,OAAO;YACX;;gBAEI,OAAO;SACd;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAExB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;;IAGD,KAAK;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAE7H,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5I,IAAI,CAAC,gBAAgB,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,aAAa,CAAC;QAE/I,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;IAGD,gBAAgB,CAAC,WAAqB;QAClC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;KACvD;;IAGD,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAmD;QACnF,IAAI,IAAI,CAAC,cAAc,EAAE;;;YAGrB,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,QAAS,GAAG,IAAI,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,QAAwB,EAAE,KAAK,CAAC,CAAC;YACpG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;;;;;YAM/D,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;KACJ;;IAGO,aAAa;QACjB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;;QAGjE,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;KAC7F;;IAGO,gBAAgB;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YACxE,IAAI,IAAI,IAAI,aAAa,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,GAAG,CAAC,CAAC;aACZ;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1I,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;YAE/E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,eAAe,CAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAE,EAAE,IAAI,CAAC,CAAC,CAAC;SAClK;KACJ;;IAGO,iBAAiB,CAAC,IAAO;QAC7B,OAAO,CAAC,CAAC,IAAI;aACR,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACxE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACxE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;KACnD;;;;;IAMO,sBAAsB,CAAC,IAAc;QACzC,OAAO,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9C;;IAGO,oBAAoB,CAAC,EAAY,EAAE,EAAY;QACnD,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KACvE;;IAGO,oBAAoB,CAAC,IAAc;QACvC,IAAI,IAAI,EAAE;;;YAGN,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/C;QAED,OAAO,IAAI,CAAC;KACf;;IAGO,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;KACjD;;IAGO,UAAU,CAAC,aAAsC;QACrD,IAAI,aAAa,YAAY,SAAS,EAAE;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC7E,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACzB;QAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC5E;CACJ,CAAA;;YAhQmC,iBAAiB;4CAC5C,QAAQ,YAAI,MAAM,SAACE,kBAAgB;YACH,WAAW,uBAA3C,QAAQ;YACkB,cAAc,uBAAxC,QAAQ;4CACR,MAAM,SAAC,iCAAiC,cAAG,QAAQ;;AA3GxD;IADC,KAAK,EAAE;;;8CACwC;AAahD;IADC,KAAK,EAAE;;;4CAC0D;AAclE;IADC,KAAK,EAAE;;;2CACyC;AAQjD;IADC,KAAK,EAAE;;;2CACyC;AAOxC;IAAR,KAAK,EAAE;;gDAAkC;AAGjC;IAAR,KAAK,EAAE;;+CAA4C;AAG3C;IAAR,KAAK,EAAE;;qDAA2B;AAG1B;IAAR,KAAK,EAAE;;mDAAyB;AAGvB;IAAT,MAAM,EAAE;8BAA0B,YAAY;oDAA0C;AAG/E;IAAT,MAAM,EAAE;8BAA0B,YAAY;oDACQ;AAG7C;IAAT,MAAM,EAAE;8BAA4B,YAAY;sDAA4B;AAG/B;IAA7C,SAAS,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAmB,eAAe;sDAAC;AAvEvE,YAAY;IAPxB,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,4wCAA8B;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;KAClD,CAAC;IAgHO,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAACA,kBAAgB,CAAC,CAAA;IACpC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,MAAM,CAAC,iCAAiC,CAAC,CAAA,EAAE,WAAA,QAAQ,EAAE,CAAA;qCAJ1B,iBAAiB,UAEZ,WAAW;QACjB,cAAc;GAjHpC,YAAY,CA8WxB;;AC/YD;;;;;;;MAkBaC,cAAY,GAAG,EAAE,CAAC;AAE/B,MAAa,WAAW,GAAG,CAAC,CAAC;;;;;AAa7B,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IA+EzB,YACY,kBAAqC,EAC1B,YAA4B,EAC3B,IAAqB;QAFjC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAC1B,iBAAY,GAAZ,YAAY,CAAgB;QAC3B,SAAI,GAAJ,IAAI,CAAiB;QAjFrC,0BAAqB,GAAG,YAAY,CAAC,KAAK,CAAC;;QA0DhC,mBAAc,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAGxD,iBAAY,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAGtD,qBAAgB,GAAoB,IAAI,YAAY,EAAK,CAAC;QAmBzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAChD;;IApFD,IAAI,UAAU,KAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;IAChD,IAAI,UAAU,CAAC,KAAQ;QACnB,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,SAAS,GACX,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAChC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CACvC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtF,IAAI,CAAC,mBAAmB,CACpB,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACjF,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;;IAKD,IAAI,QAAQ,KAA8B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAClE,IAAI,QAAQ,CAAC,KAA8B;QACvC,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/F;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAChC;;IAMD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;IA0CD,kBAAkB;QACd,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;aACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACrB,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACtC;IAED,WAAW;QACP,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;KAC5C;;IAGD,KAAK;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;;QAQvE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,UAAU,GAAG,eAAe,CAC9C,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAa,EAAE,EAAE,CAAC,GAAGA,cAAY,EAAE,CAAC,EAAE,EAAE;YACvD,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,MAAM,IAAI,WAAW,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjE,GAAG,GAAG,EAAE,CAAC;aACZ;SACJ;QACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;IAGD,aAAa,CAAC,KAAmC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,WAAW,GACX,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KAC3E;;IAGD,0BAA0B,CAAC,KAAoB;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE5B,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,UAAU;gBACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvF,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvF,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;gBACrF,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACpF,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EACjE,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtF,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EACjEA,cAAY,GAAG,eAAe,CAC1B,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7E,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,UAAU;oBACX,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAC9B,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAACA,cAAY,GAAG,EAAE,GAAG,CAACA,cAAY,CAAC,CAAC;gBAC7E,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,UAAU;oBACX,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAC9B,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAGA,cAAY,GAAG,EAAE,GAAGA,cAAY,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACN,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClF,MAAM;YACV;;gBAEI,OAAO;SACd;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAExB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,cAAc;QACV,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1F;;IAGD,gBAAgB;QACZ,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;KAC5C;;IAGO,kBAAkB,CAAC,IAAY;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC;QAEpF,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;KACnG;;IAGO,iBAAiB,CAAC,IAAY;;QAElC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;aAClC,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/D,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;YAClE,OAAO,KAAK,CAAC;SAChB;;QAGD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;QAG7D,KAAK,IAAI,IAAI,GAAG,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAChE,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;KAChB;;IAGO,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;KACjD;;IAGO,gBAAgB,CAAC,KAA8B;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC;YAE9C,IAAI,YAAY,EAAE;gBACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;aAChE;SACJ;aAAM,IAAI,KAAK,EAAE;YACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACzD;KACJ;CACJ,CAAA;;YA/KmC,iBAAiB;YACZ,WAAW,uBAA3C,QAAQ;YACkB,cAAc,uBAAxC,QAAQ;;AA7Eb;IADC,KAAK,EAAE;;;kDACwC;AAkBhD;IADC,KAAK,EAAE;;;gDAC0D;AAelE;IADC,KAAK,EAAE;;;+CACyC;AAQjD;IADC,KAAK,EAAE;;;+CACyC;AAOxC;IAAR,KAAK,EAAE;;oDAAkC;AAGjC;IAAR,KAAK,EAAE;;mDAA4C;AAG1C;IAAT,MAAM,EAAE;8BAA0B,YAAY;wDAA4B;AAGjE;IAAT,MAAM,EAAE;8BAAwB,YAAY;sDAA4B;AAG/D;IAAT,MAAM,EAAE;8BAA4B,YAAY;0DAA4B;AAG/B;IAA7C,SAAS,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAmB,eAAe;0DAAC;AApEvE,gBAAgB;IAP5B,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,6tBAAmC;QACnC,QAAQ,EAAE,sBAAsB;QAChC,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;KAClD,CAAC;IAkFO,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;qCAFiB,iBAAiB;QACZ,WAAW;QACjB,cAAc;GAlFpC,gBAAgB,CA+P5B;SAEe,mBAAmB,CAAI,WAA2B,EAAE,KAAQ,EAAE,KAAQ,EAAE,OAAiB,EAAE,OAAiB;IACxH,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,YAAY,IAAIA,cAAY,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,YAAY,IAAIA,cAAY,CAAC,CAAC;CAClH;;;;;;AAOD,SAAgB,eAAe,CAAI,WAA2B,EAAE,UAAa,EAAE,OAAiB,EAAE,OAAiB;IAC/G,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,eAAe,EAAE,UAAU,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,GAAGA,cAAY,CAAC,CAAC;CACvG;;;;;AAMD,SAAS,eAAe,CAAI,WAA2B,EAAE,OAAiB,EAAE,OAAiB;IACzF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,EAAE;QACT,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,YAAY,GAAG,OAAO,GAAGA,cAAY,GAAG,CAAC,CAAC;KAC7C;SAAM,IAAI,OAAO,EAAE;QAChB,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C;IACD,OAAO,YAAY,CAAC;CACvB;;AAGD,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IACzC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1B;;ACrUD;;;;;;;AAmBA;;;;AAWA,IAAa,WAAW,GAAxB,MAAa,WAAW;IAkFpB,YACY,kBAAqC,EACC,YAA4B,EACvD,YAA4B,EAC3B,IAAqB;QAHjC,uBAAkB,GAAlB,kBAAkB,CAAmB;QACC,iBAAY,GAAZ,YAAY,CAAgB;QACvD,iBAAY,GAAZ,YAAY,CAAgB;QAC3B,SAAI,GAAJ,IAAI,CAAiB;QArFrC,0BAAqB,GAAG,YAAY,CAAC,KAAK,CAAC;;QAuDhC,mBAAc,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAGxD,kBAAa,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAGvD,qBAAgB,GAAoB,IAAI,YAAY,EAAK,CAAC;QA0BzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAChD;;IA3FD,IAAI,UAAU,KAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;IAChD,IAAI,UAAU,CAAC,KAAQ;QACnB,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,SAAS,GACX,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAChC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CACvC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC1F,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;;IAKD,IAAI,QAAQ,KAA8B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAClE,IAAI,QAAQ,CAAC,KAA8B;QACvC,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/F;QAED,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACjC;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;IAoDD,kBAAkB;QACd,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;aACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACrB,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACtC;IAED,WAAW;QACP,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;KAC5C;;IAGD,cAAc,CAAC,KAAmC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,cAAc,GAChB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAExE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CACjD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KAC3E;;IAGD,0BAA0B,CAAC,KAAoB;;;;QAK3C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE5B,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,UAAU;gBACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxF,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxF,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAClE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnD,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAClE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,UAAU;oBACX,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClF,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,UAAU;oBACX,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBAChF,MAAM;YACV,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACN,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpF,MAAM;YACV;;gBAEI,OAAO;SACd;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAExB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;;IAGD,KAAK;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjE,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;;QAE1D,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7I,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;IAGD,gBAAgB;QACZ,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;KAC5C;;;;;IAMO,sBAAsB,CAAC,IAAc;QACzC,OAAO,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YACxF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC/C;;IAGO,mBAAmB,CAAC,KAAa,EAAE,SAAiB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC/F,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QAE9E,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;KAC5H;;IAGO,kBAAkB,CAAC,KAAa;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IACI,KAAK,KAAK,SAAS;YACnB,KAAK,KAAK,IAAI;YACd,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,KAAK,CAAC;YACnD,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,KAAK,CAAC,EACtD;YACE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;;QAGxE,KAAK,IAAI,IAAI,GAAG,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,EACnE,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;KAChB;;;;;IAMO,2BAA2B,CAAC,IAAY,EAAE,KAAa;QAC3D,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE1D,OAAO,IAAI,GAAG,OAAO,KAAK,IAAI,KAAK,OAAO,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC;SACnE;QAED,OAAO,KAAK,CAAC;KAChB;;;;;IAMO,4BAA4B,CAAC,IAAY,EAAE,KAAa;QAC5D,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE1D,OAAO,IAAI,GAAG,OAAO,KAAK,IAAI,KAAK,OAAO,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC;SACnE;QAED,OAAO,KAAK,CAAC;KAChB;;IAGO,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;KACjD;;IAGO,iBAAiB,CAAC,KAA8B;QACpD,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC1D,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC9C;aAAM;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;SAC5D;KACJ;CACJ,CAAA;;YA7MmC,iBAAiB;4CAC5C,QAAQ,YAAI,MAAM,SAACD,kBAAgB;YACH,WAAW,uBAA3C,QAAQ;YACkB,cAAc,uBAAxC,QAAQ;;AAjFb;IADC,KAAK,EAAE;;;6CACwC;AAgBhD;IADC,KAAK,EAAE;;;2CAC0D;AAclE;IADC,KAAK,EAAE;;;0CACyC;AAQjD;IADC,KAAK,EAAE;;;0CACyC;AAOxC;IAAR,KAAK,EAAE;;+CAAkC;AAGjC;IAAR,KAAK,EAAE;;8CAA4C;AAG1C;IAAT,MAAM,EAAE;8BAA0B,YAAY;mDAA4B;AAGjE;IAAT,MAAM,EAAE;8BAAyB,YAAY;kDAA4B;AAGhE;IAAT,MAAM,EAAE;8BAA4B,YAAY;qDAA4B;AAG/B;IAA7C,SAAS,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAmB,eAAe;qDAAC;AAjEvE,WAAW;IAPvB,SAAS,CAAC;QACP,QAAQ,EAAE,oBAAoB;QAC9B,i0BAA6B;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;KAClD,CAAC;IAqFO,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAACA,kBAAgB,CAAC,CAAA;IACpC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;qCAHiB,iBAAiB,UAEZ,WAAW;QACjB,cAAc;GAtFpC,WAAW,CAgSvB;;AC9TD;;;;;;;AA0BA;;;;AAkBA,IAAa,WAAW,GAAxB,MAAa,WAAW;IA2HpB,YACI,KAAwB,EACJ,YAA4B,EACF,YAA4B,EAClE,kBAAqC;QAFzB,iBAAY,GAAZ,YAAY,CAAgB;QACF,iBAAY,GAAZ,YAAY,CAAgB;QAClE,uBAAkB,GAAlB,kBAAkB,CAAmB;QA7H1C,mBAAc,GAAmB,IAAI,CAAC;;;;;;QAYrC,yBAAoB,GAAG,KAAK,CAAC;;QAW5B,cAAS,GAAoB,OAAO,CAAC;;;;;QA8C3B,mBAAc,GAAoB,IAAI,YAAY,EAAK,CAAC;;;;;QAMxD,iBAAY,GAAoB,IAAI,YAAY,EAAK,CAAC;;;;;QAMtD,kBAAa,GAAoB,IAAI,YAAY,EAAK,CAAC;;QAGvD,mBAAc,GAAiD,IAAI,YAAY,EAAkC,CAAC;;;;QAmCrI,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAQ/B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACxC,kBAAkB,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;;IA3HD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;IAQD,IAAI,QAAQ,KAA8B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAClE,IAAI,QAAQ,CAAC,KAA8B;QACvC,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/F;KACJ;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;IAKD,IAAI,OAAO,KAAe,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACjD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;;;;IAiDD,IAAI,UAAU,KAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE;IACvD,IAAI,UAAU,CAAC,KAAQ;QACnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;IAID,IAAI,WAAW,KAAsB,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;IAChE,IAAI,WAAW,CAAC,KAAsB;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IA4BD,kBAAkB;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;;QAG5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;KACtC;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;IAED,WAAW;QACP,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChC;IAED,WAAW,CAAC,OAAsB;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QAEjF,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAE7C,IAAI,IAAI,EAAE;;;gBAGN,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;gBACxC,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,eAAe;QACX,IAAI,CAAC,wBAAwB,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAC3D;;IAGD,gBAAgB;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,IAA4D,CAAC;QAEjE,IAAI,WAAW,KAAK,OAAO,EAAE;YACzB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;SACzB;aAAM,IAAI,WAAW,KAAK,MAAM,EAAE;YAC/B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;SACxB;aAAM;YACH,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;SAC7B;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;;IAGD,aAAa,CAAC,KAAqC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QAEzB,IAAI,IAAI,CAAC,QAAQ,YAAY,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;;;YAGlG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;IAGD,4BAA4B,CAAC,cAAiB;QAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC1C;;IAGD,wBAAwB,CAAC,eAAkB;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC5C;;IAGD,eAAe,CAAC,IAAO,EAAE,IAAqC;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;;IAGO,wBAAwB;QAC5B,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC;KAChE;CACJ,CAAA;;YA5Gc,iBAAiB;YACU,WAAW,uBAA5C,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAAC,gBAAgB;YACR,iBAAiB;;AA1HxC;IAAR,KAAK,EAAE;8BAAsB,WAAW;wDAAM;AAa/C;IADC,KAAK,EAAE;;;0CACyC;AAOxC;IAAR,KAAK,EAAE;;8CAAsC;AAI9C;IADC,KAAK,EAAE;;;2CAC0D;AAYlE;IADC,KAAK,EAAE;;;0CACyC;AAQjD;IADC,KAAK,EAAE;;;0CACyC;AAOxC;IAAR,KAAK,EAAE;;+CAAkC;AAGjC;IAAR,KAAK,EAAE;;8CAA4C;AAG3C;IAAR,KAAK,EAAE;;oDAA2B;AAG1B;IAAR,KAAK,EAAE;;kDAAyB;AAMvB;IAAT,MAAM,EAAE;8BAA0B,YAAY;mDAA4B;AAMjE;IAAT,MAAM,EAAE;8BAAwB,YAAY;iDAA4B;AAM/D;IAAT,MAAM,EAAE;8BAAyB,YAAY;kDAA4B;AAGhE;IAAT,MAAM,EAAE;8BAA0B,YAAY;mDAAsF;AAGzF;IAA3C,SAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAY,YAAY;8CAAI;AAG5B;IAA1C,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAW,WAAW;6CAAI;AAGpB;IAA/C,SAAS,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAgB,gBAAgB;kDAAI;AA/F1E,WAAW;IAdvB,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,4mFAA4B;QAE5B,IAAI,EAAE;YACF,OAAO,EAAE,cAAc;SAC1B;QACD,QAAQ,EAAE,iBAAiB;QAC3B,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,SAAS,EAAE;YACP,wCAAwC;SAC3C;;KACJ,CAAC;IA8HO,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;qCAF9B,iBAAiB;QACU,WAAW,UAEjB,iBAAiB;GA/HxC,WAAW,CAwOvB;AAED;AAQA,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAI1B,YACY,KAAwB,EACZ,YAA4B,EACF,YAA4B,EAClE,kBAAqC;QAHrC,UAAK,GAAL,KAAK,CAAmB;QACZ,iBAAY,GAAZ,YAAY,CAAgB;QACF,iBAAY,GAAZ,YAAY,CAAgB;QAClE,uBAAkB,GAAlB,kBAAkB,CAAmB;KAC5C;IAEL,eAAe;QACX,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC;KACzF;;IAGD,IAAI,gBAAgB;QAChB,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,OAAO,EAAE;YACzC,OAAO,IAAI,CAAC,YAAY;iBACnB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC;iBAC7E,iBAAiB,EAAE,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,MAAM,EAAE;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SACrE;;;;QAKD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvJ,MAAM,aAAa,GAAG,aAAa,GAAGC,cAAY,GAAG,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;KAC/D;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;KAC9H;;IAGD,IAAI,eAAe;QACf,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YAClC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YAChC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;SAC9C,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KACnC;;IAGD,IAAI,eAAe;QACf,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;YAClC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YAChC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;SAC9C,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KACnC;;IAGD,oBAAoB;QAChB,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,OAAO,GAAG,YAAY,GAAG,OAAO,CAAC;KACnG;;IAGD,eAAe;QACX,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,OAAO;cAC/D,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;cACpE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAACA,cAAY,CAAC,CAAC;KACtI;;IAGD,WAAW;QACP,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,OAAO;cAC/D,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;cACnE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,GAAGA,cAAY,CAAC,CAAC;KACpI;;IAGD,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC3B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAChH;;IAGD,WAAW;QACP,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAChH;;IAGO,WAAW,CAAC,KAAQ,EAAE,KAAQ;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,OAAO,EAAE;YACzC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACzJ;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,MAAM,EAAE;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC/E;;QAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KACnH;CACJ,CAAA;;YAjGsB,iBAAiB;YACE,WAAW,uBAA5C,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAAC,gBAAgB;YACR,iBAAiB;;AANxC;IAAR,KAAK,EAAE;8BAAc,WAAW;sDAAI;AAF5B,iBAAiB;IAP7B,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,yuCAAmC;QACnC,QAAQ,EAAE,uBAAuB;QACjC,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;KAClD,CAAC;IAOO,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;qCAFtB,iBAAiB;QACE,WAAW,UAEjB,iBAAiB;GARxC,iBAAiB,CAsG7B;;ACpYD;;;;;;;AAmBA;;;;;AAKA,MAAa,uBAAuB;IAIhC;;IAEW,MAAoC;;IAEpC,aAA0B;QAF1B,WAAM,GAAN,MAAM,CAA8B;QAEpC,kBAAa,GAAb,aAAa,CAAa;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAClC;CACJ;;AAMD,IAAsB,sBAAsB,GAA5C,MAAsB,sBAAsB;IA2KxC,YACc,WAAyC,EAChC,YAA4B,EACD,YAA4B;QAFhE,gBAAW,GAAX,WAAW,CAA8B;QAChC,iBAAY,GAAZ,YAAY,CAAgB;QACD,iBAAY,GAAZ,YAAY,CAAgB;;QA5H3D,eAAU,GAAgD,IAAI,YAAY,EAAiC,CAAC;;QAG5G,cAAS,GAAgD,IAAI,YAAY,EAAiC,CAAC;;QAG9H,iBAAY,GAAG,IAAI,YAAY,EAAY,CAAC;;QAG5C,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAEnC,eAAU,GAAG,SAAS,CAAC;QACvB,uBAAkB,GAAG,SAAS,CAAC;QAErB,iBAAY,GAAyB,SAAS,CAAC;QACjD,8BAAyB,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/C,wBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC;;QAUzC,oBAAe,GAAgB;YACnC,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;SACnH,CAAA;;QAGO,qBAAgB,GAAgB,CAAC,OAAwB;YAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxG,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,OAAO,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;SAC5G,CAAA;;QAGO,kBAAa,GAAgB,CAAC,OAAwB;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxG,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;SACnK,CAAA;;QAGO,kBAAa,GAAgB,CAAC,OAAwB;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxG,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;SACnK,CAAA;;QAsES,oBAAe,GAAG,KAAK,CAAC;QAO9B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;;QAGD,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC;KACN;;IApLD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;KAC5F;IACD,IAAI,KAAK,CAAC,KAAe;QACrB,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;KACJ;;IAKD,IAAI,QAAQ,KAAc,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;IAC9E,IAAI,QAAQ,CAAC,KAAc;QACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAE/C,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;;;;;QAMD,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,EAAE;;;;YAIjD,OAAO,CAAC,IAAI,EAAE,CAAC;SAClB;KACJ;;IAwDS,cAAc;QACpB,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAChG;;IAYD,cAAc,CAAC,KAAkC;QAC7C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACzC;QAED,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK;YACzE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;;;gBAKzB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;iBAC3F;gBAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;iBAC/B;aACJ;SACJ,CAAC,CAAC;KACN;IA4CD,eAAe;QACX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChC;;IAGD,yBAAyB,CAAC,EAAc;QACpC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;KAChC;;IAGD,QAAQ,CAAC,CAAkB;QACvB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACtD;;IAGD,UAAU,CAAC,KAAQ;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;;IAGD,gBAAgB,CAAC,EAAwB;QACrC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KAC1B;;IAGD,iBAAiB,CAAC,EAAc;QAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;;IAGD,gBAAgB,CAAC,UAAmB;QAChC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC9B;IAED,UAAU,CAAC,KAAoB;QAC3B,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC;QAEpE,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;IAED,QAAQ,CAAC,KAAa;QAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;SAC1F;aAAM;;;YAGH,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3B;YAED,IAAI,iBAAiB,KAAK,IAAI,CAAC,eAAe,EAAE;gBAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC7B;SACJ;KACJ;IAED,SAAS;QACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;KAC3F;;IAGD,OAAO;;QAEH,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;;IAGS,YAAY,CAAC,KAAe;QAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK;YAChC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;KACzF;;IAGO,YAAY,CAAC,KAAe;;;QAGhC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;KACJ;;IAGO,aAAa,CAAC,KAAe;QACjC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrD;;;;;IAMS,eAAe;QACrB,OAAO,KAAK,CAAC;KAChB;CAEJ,CAAA;AAnTG;IADC,KAAK,EAAE;;;mDAGP;AAiBD;IADC,KAAK,EAAE;;;sDACsE;AAwBpE;IAAT,MAAM,EAAE;8BAAsB,YAAY;0DAAoF;AAGrH;IAAT,MAAM,EAAE;8BAAqB,YAAY;yDAAoF;AArD5G,sBAAsB;IA6KnC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;qCAFd,UAAU;QACA,WAAW;GA7K9B,sBAAsB,CA0T3C;AAED;;;;AAIA,SAAgB,qBAAqB,CAAC,OAAsB,EAAE,OAA6B;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;QAClB,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;YAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE;gBAChD,OAAO,IAAI,CAAC;aACf;SACJ;aAAM;YACH,OAAO,IAAI,CAAC;SACf;KACJ;IAED,OAAO,KAAK,CAAC;CAChB;;ACzXD;;;;;;;;AAiCA;;;;AAIA,MAAa,2BAA2B,GAAG,IAAI,cAAc,CAAmC,6BAA6B,CAAC,CAAC;;;;AAM/H,IAAe,yBAAyB,GAAxC,MAAe,yBAA6B,SAAQ,sBAAoC;IAYpF,YACgD,WAAuC,EACnF,UAAwC,EACjC,yBAA4C,EAC3C,SAAmB,EACR,WAAmB,EACnB,gBAAoC,EAC3C,WAA2B,EACD,WAA2B;QACjE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QARA,gBAAW,GAAX,WAAW,CAA4B;QAE5E,8BAAyB,GAAzB,yBAAyB,CAAmB;QAC3C,cAAS,GAAT,SAAS,CAAU;QACR,gBAAW,GAAX,WAAW,CAAQ;QACnB,qBAAgB,GAAhB,gBAAgB,CAAoB;QAwEjD,yBAAoB,GAAG;;;YAG7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B,CAAA;KAxEA;IAED,QAAQ;;;;;;;QAOJ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAY,SAA4B,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAEnC,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;KACJ;IAED,SAAS;QACL,IAAI,IAAI,CAAC,SAAS,EAAE;;;;YAIhB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;KACJ;;IAGD,OAAO;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KAC5D;;IAGD,eAAe;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;KACrD;;IAGD,KAAK;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC1C;;IAGD,QAAQ,CAAC,KAAa;QAClB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;KAC9C;;IAGS,UAAU;QAChB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;KACtC;;IAGD,WAAW;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;KAC/B;;IAGD,WAAW;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;KAC/B;;IAGS,cAAc;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;KACtC;IAQS,eAAe;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;KAC1C;CACJ,CAAA;;4CAtFQ,MAAM,SAAC,2BAA2B;YACvB,UAAU;YACY,iBAAiB;YAChC,QAAQ;YACK,MAAM,uBAArC,QAAQ;YAC4B,kBAAkB,uBAAtD,QAAQ;YACgB,WAAW,uBAAnC,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAACD,kBAAgB;;AApB7B,yBAAyB;IADvC,SAAS,CAAC,EAAE,CAAC;IAcL,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAInC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAACA,kBAAgB,CAAC,CAAA;6CANzB,UAAU;QACY,iBAAiB;QAChC,QAAQ;QACK,MAAM;QACD,kBAAkB;QAC9B,WAAW;GAnB7B,yBAAyB,CAmGvC;AAED,MAAM,sBAAsB;;AAGxB,eAAe,CAAC,yBAAgC,CAAC,CAAC;;AAwBtD,IAAa,YAAY,oBAAzB,MAAa,YAAgB,SAAQ,sBAAyB;IAS1D,YACyC,UAAsC,EAC3E,UAAwC,EACxC,wBAA2C,EAC3C,QAAkB,EACN,UAAkB,EAClB,eAAmC,EACnC,WAA2B,EACD,WAA2B;;;;QAMjE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;;QApBrH,oBAAe,GAAgB,CAAC,OAAwB;YAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACjG,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC;YAC3D,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;SACjJ,CAAA;QAuCS,eAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAcnF,wBAAmB,GAAG,CAAC,KAA6C;YAC1E,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;SACtD,CAAA;KAtCA;IAED,QAAQ;;;;;;;QAOJ,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,SAAS;;;;;;;QAOL,KAAK,CAAC,SAAS,EAAE,CAAC;KACrB;IAIS,kBAAkB,CAAC,UAAwB;QACjD,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAES,mBAAmB,CAAC,KAAe;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAMS,YAAY,CAAC,KAAe;QAClC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;QAG1B,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;KAC9C;;IAGD,cAAc;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;KACzD;CAGJ,CAAA;;4CArEQ,MAAM,SAAC,2BAA2B;YACvB,UAAU;YACI,iBAAiB;YACjC,QAAQ;YACM,MAAM,uBAA7B,QAAQ;YACoB,kBAAkB,uBAA9C,QAAQ;YACgB,WAAW,uBAAnC,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAACA,kBAAgB;;AAjB/B,YAAY;IArBxB,SAAS,CAAC;QACP,QAAQ,EAAE,yBAAyB;QACnC,IAAI,EAAE;YACF,OAAO,EAAE,2CAA2C;YACpD,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,+BAA+B;YAC1C,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE,gBAAgB;YAC7B,sBAAsB,EAAE,2CAA2C;YACnE,kBAAkB,EAAE,yEAAyE;YAC7F,YAAY,EAAE,8DAA8D;YAC5E,YAAY,EAAE,8DAA8D;YAC5E,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,MAAM;SACjB;QACD,SAAS,EAAE;YACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAY,EAAE,KAAK,EAAE,IAAI,EAAE;YACtE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAY,EAAE,KAAK,EAAE,IAAI,EAAE;SACrE;KACJ,CAAC;IAWO,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAInC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAACA,kBAAgB,CAAC,CAAA;6CANzB,UAAU;QACI,iBAAiB;QACjC,QAAQ;QACM,MAAM;QACD,kBAAkB;QACtB,WAAW;GAhB/B,YAAY,CA+ExB;AAGD;AAqBA,IAAa,UAAU,kBAAvB,MAAa,UAAc,SAAQ,sBAAyB;IASxD,YACyC,UAAsC,EAC3E,UAAwC,EACxC,wBAA2C,EAC3C,QAAkB,EACN,UAAkB,EAClB,eAAmC,EACnC,WAA2B,EACD,WAA2B;;;;QAMjE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;;QApBrH,kBAAa,GAAgB,CAAC,OAAwB;YAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;YAC/D,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC;SACjJ,CAAA;QAuCS,eAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAcjF,wBAAmB,GAAG,CAAC,KAA6C;YAC1E,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;SACxD,CAAA;KAtCA;IAED,QAAQ;;;;;;;QAOJ,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;IAED,SAAS;;;;;;;QAOL,KAAK,CAAC,SAAS,EAAE,CAAC;KACrB;IAIS,kBAAkB,CAAC,UAAwB;QACjD,OAAO,UAAU,CAAC,GAAG,CAAC;KACzB;IAES,mBAAmB,CAAC,KAAe;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC5B;KACJ;IAMD,UAAU,CAAC,KAAoB;;QAE3B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;YACtE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SACxC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC3B;CAGJ,CAAA;;4CAhEQ,MAAM,SAAC,2BAA2B;YACvB,UAAU;YACI,iBAAiB;YACjC,QAAQ;YACM,MAAM,uBAA7B,QAAQ;YACoB,kBAAkB,uBAA9C,QAAQ;YACgB,WAAW,uBAAnC,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAACA,kBAAgB;;AAjB/B,UAAU;IApBtB,SAAS,CAAC;QACP,QAAQ,EAAE,uBAAuB;QACjC,IAAI,EAAE;YACF,OAAO,EAAE,yCAAyC;YAClD,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,+BAA+B;YAC1C,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,oBAAoB;YACjC,sBAAsB,EAAE,2CAA2C;YACnE,kBAAkB,EAAE,yEAAyE;YAC7F,YAAY,EAAE,8DAA8D;YAC5E,YAAY,EAAE,8DAA8D;YAC5E,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,MAAM;SACjB;QACD,SAAS,EAAE;YACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAU,EAAE,KAAK,EAAE,IAAI,EAAE;YACpE,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAU,EAAE,KAAK,EAAE,IAAI,EAAE;SACnE;KACJ,CAAC;IAWO,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAInC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAACA,kBAAgB,CAAC,CAAA;6CANzB,UAAU;QACI,iBAAiB;QACjC,QAAQ;QACM,MAAM;QACD,kBAAkB;QACtB,WAAW;GAhB/B,UAAU,CA0EtB;;AC5VD;;;;;;;AAOA,AAEA;;;;AAIA,MAAa,uBAAuB,GAGhC;;IAEA,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE;QACtC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,eAAe;SAC7B,CAAC,CAAC;QACH,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,kCAAkC,EAAE,KAAK,CAAC;YAC1E,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,aAAa;SAC3B,CAAC,CAAC,CAAC;QACJ,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1E,CAAC;;IAGF,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE;QACtC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;;;QAIrC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,8CAA8C,CAAC,CAAC;KACnF,CAAC;CACL;;ACvCD;;;;;;;AA4BA;AACA,IAAI,aAAa,GAAG,CAAC,CAAC;;AAGtB,MAAa,8BAA8B,GAAG,IAAI,cAAc,CAAuB,gCAAgC,CAAC,CAAC;;AAGzH,SAAgB,sCAAsC,CAAC,OAAgB;IACnE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;CACtD;;AASD,MAAa,+CAA+C,GAAG;IAC3D,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,UAAU,EAAE,sCAAsC;CACrD,CAAC;;;AAIF,MAAM,wBAAwB;IAC1B,YAAmB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;KAAK;CAClD;AAED,MAAM,8BAA8B,GAAmD,UAAU,CAAC,wBAAwB,CAAC,CAAC;;;;;;;;AA4B5H,IAAa,oBAAoB,GAAjC,MAAa,oBAA6D,SAAQ,8BAA8B;IAyB5G,YACI,UAAsB;;;;;;IAMd,kBAAsC,EACtC,MAAoC,EACpC,YAA6B,EAE7B,uBAA0D;QAElE,KAAK,CAAC,UAAU,CAAC,CAAC;QANV,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAA8B;QACpC,iBAAY,GAAZ,YAAY,CAAiB;QAE7B,4BAAuB,GAAvB,uBAAuB,CAAmC;QAlC9D,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;;QAkB5C,oBAAe,GAAqB,OAAO,CAAC;;QAG5C,mBAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;KAgBpC;IAED,eAAe;;QAEX,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC5D,IAAI,CAAC,kBAAmB,CAAC,YAAY,EAAE,CAAC;aAC3C,CAAC,CAAC,CAAC;SACP;QAED,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;KACpC;IAED,WAAW;QACP,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAClC;IAED,oBAAoB,CAAC,KAAqC;;;QAGtD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,MAAM,OAAO,GAAG,SAAS,YAAY,SAAS,CAAC;;;;;;YAO/C,IAAI,OAAO,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBACzC,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,KAAK,EACrE,SAAoC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAA4B,EAAE,IAAI,CAAC,CAAC;aACnE;iBAAM,IAAI,KAAK,KAAK,OAAO;gBACxB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAyB,CAAC,CAAC,EAAE;gBAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC1B;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SAC3B;KACJ;IAED,mBAAmB;QACf,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;;QAG9B,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC1C;KACJ;IAED,YAAY;;QAER,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAA+C,GAAG,IAAI,CAAC;KAC3F;CACJ,CAAA;;YAxEmB,UAAU;YAMO,iBAAiB;YAC7B,qBAAqB;YACf,WAAW;4CACjC,QAAQ,YAAI,MAAM,SAAC,iCAAiC;;AA9Bf;IAAzC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAY,WAAW;uDAAI;AAL3D,oBAAoB;IAnBhC,SAAS,CAAC;QACP,QAAQ,EAAE,6BAA6B;QACvC,w/BAAsC;QAEtC,IAAI,EAAE;YACF,OAAO,EAAE,wBAAwB;YACjC,mBAAmB,EAAE,iBAAiB;YACtC,wBAAwB,EAAE,uBAAuB;YACjD,sCAAsC,EAAE,oBAAoB;SAC/D;QACD,UAAU,EAAE;YACR,uBAAuB,CAAC,cAAc;YACtC,uBAAuB,CAAC,cAAc;SACzC;QACD,QAAQ,EAAE,0BAA0B;QACpC,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,MAAM,EAAE,CAAC,OAAO,CAAC;;KACpB,CAAC;IAoCO,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,iCAAiC,CAAC,CAAA;qCAT1C,UAAU;QAMO,iBAAiB;QAC7B,qBAAqB;QACf,WAAW;GAlC7B,oBAAoB,CAkGhC;AAcD;AACA,IAAsB,iBAAiB,GAAvC,MAAsB,iBAAiB;IA0InC,YACY,OAAkB,EAClB,QAAiB,EACjB,OAAe,EACf,iBAAmC,EACH,cAAmB,EACvC,YAA4B,EAC5B,IAAoB,EACF,SAAc,EAC5C,MAAmC;QARnC,YAAO,GAAP,OAAO,CAAW;QAClB,aAAQ,GAAR,QAAQ,CAAS;QACjB,YAAO,GAAP,OAAO,CAAQ;QACf,sBAAiB,GAAjB,iBAAiB,CAAkB;QAEvB,iBAAY,GAAZ,YAAY,CAAgB;QAC5B,SAAI,GAAJ,IAAI,CAAgB;QACF,cAAS,GAAT,SAAS,CAAK;QAC5C,WAAM,GAAN,MAAM,CAA6B;QAhJvC,uBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;;QAiBvC,cAAS,GAAoC,OAAO,CAAC;QAqBtD,aAAQ,GAAG,KAAK,CAAC;;QAoBzB,cAAS,GAAgC,OAAO,CAAC;;QAIjD,cAAS,GAAgC,OAAO,CAAC;;;;;QAM9B,iBAAY,GAAoB,IAAI,YAAY,EAAK,CAAC;;;;;QAMtD,kBAAa,GAAoB,IAAI,YAAY,EAAK,CAAC;;QASxD,iBAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAG5D,iBAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAStE,YAAO,GAAG,KAAK,CAAC;;QAGxB,OAAE,GAAW,kBAAkB,aAAa,EAAE,EAAE,CAAC;;QA0BzC,8BAAyB,GAAuB,IAAI,CAAC;;QAGrD,0BAAqB,GAAG,GAAG,IAAI,CAAC,EAAE,WAAW,CAAC;;QAM7C,kBAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;QAazC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;KACzC;;IAjJD,IAAI,OAAO;;;QAGP,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;KAClG;IACD,IAAI,OAAO,CAAC,KAAe;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9F;;IAQD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC;KACvG;IACD,IAAI,KAAK,CAAC,KAAmB;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;;;;;IAQD,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IAChD,IAAI,OAAO,CAAC,KAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAChD;;IAKD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB;YACxD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACzD;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtC;KACJ;;IAsCD,IAAI,MAAM,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;IAC9C,IAAI,MAAM,CAAC,KAAc;QACrB,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;KAC7D;;IAOD,WAAW;QACP,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;KAC7D;;IAGD,WAAW;QACP,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;KAC7D;IAED,cAAc;QACV,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;KACpE;IAyCD,WAAW,CAAC,OAAsB;QAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpE,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;YACjE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,gBAAqD,CAAC,CAAC;YAE9G,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACnC;SACJ;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACtC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACjC;;IAGD,MAAM,CAAC,IAAO;QACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACzB;;IAGD,WAAW,CAAC,cAAiB;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC1C;;IAGD,YAAY,CAAC,eAAkB;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC5C;;;;;;IAOD,cAAc,CAAC,KAAQ;QACnB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,MAAM,KAAK,CAAC,6DAA6D,CAAC,CAAC;SAC9E;QACD,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;IAGD,IAAI;QACA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO;SACV;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAC;SAC/E;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;SACjE;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;;IAGD,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;SACV;QACD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAClD,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAC/B,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC/E;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;QAED,MAAM,aAAa,GAAG;;;YAGlB,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;aACzC;SACJ,CAAC;QAEF,IAAI,IAAI,CAAC,yBAAyB;YAC9B,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,KAAK,UAAU,EAAE;;;;;;YAM5D,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;YACvC,UAAU,CAAC,aAAa,CAAC,CAAC;SAC7B;aAAM;YACH,aAAa,EAAE,CAAC;SACnB;KACJ;;IAGO,aAAa;;;;;QAKjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAA6B,oBAAoB,EAAE;YAClF,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;YAC9C,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,UAAU,EAAE,uBAAuB;;;YAInC,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,8BAA8B,IAAI,CAAC,qBAAqB,EAAE;YACzE,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI;;;;;;;YAQf,YAAY,EAAE,KAAK;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;KACjE;;IAGO,YAAY;QAChB,MAAM,MAAM,GAAG,IAAI,eAAe,CAA6B,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7G,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;;QAG7D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,SAAU,CAAC,cAAc,EAAE,CAAC;SACpC,CAAC,CAAC;KACN;;IAGS,qBAAqB,CAAC,QAAoC;QAChE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC/B;;IAGO,YAAY;QAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;aAC5C,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,CAAC;aACtE,qBAAqB,CAAC,yBAAyB,CAAC;aAChD,sBAAsB,CAAC,KAAK,CAAC;aAC7B,kBAAkB,CAAC,CAAC,CAAC;aACrB,kBAAkB,EAAE,CAAC;QAE1B,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACpC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;YAC/D,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,CAAC,kCAAkC,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAC/E,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;YACtC,UAAU,EAAE,sBAAsB;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE7D,KAAK,CACD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAC5B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;;YAE5C,OAAO,KAAK,CAAC,OAAO,KAAK,MAAM,KAAK,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;SAC5G,CAAC,CAAC,CACN,CAAC,SAAS,CAAC,KAAK;YACb,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB,CAAC,CAAC;KACN;;IAGO,aAAa;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SACnD;KACJ;;IAGO,sBAAsB,CAAC,QAA2C;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;QAC5D,MAAM,UAAU,GAAG,QAAQ,KAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;QAC/D,MAAM,UAAU,GAAG,QAAQ,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;QAEzD,OAAO,QAAQ,CAAC,aAAa,CAAC;YAC1B;gBACI,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;aACrB;YACD;gBACI,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,UAAU;aACvB;YACD;gBACI,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,QAAQ;aACrB;YACD;gBACI,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,UAAU;aACvB;SACJ,CAAC,CAAC;KACN;CAEJ,CAAA;AAjZY;IAAR,KAAK,EAAE;8BAAsB,WAAW;8DAAM;AAI/C;IADC,KAAK,EAAE;;;gDAKP;AAOQ;IAAR,KAAK,EAAE;;oDAAsD;AAI9D;IADC,KAAK,EAAE;;;8CAGP;AAWD;IADC,KAAK,EAAE;;;gDACwC;AAQhD;IADC,KAAK,EAAE;;;iDAIP;AAaD;IADC,KAAK,EAAE;;oDACyC;AAIjD;IADC,KAAK,EAAE;;oDACyC;AAMvC;IAAT,MAAM,EAAE;8BAAwB,YAAY;uDAA4B;AAM/D;IAAT,MAAM,EAAE;8BAAyB,YAAY;wDAA4B;AAGjE;IAAR,KAAK,EAAE;;qDAA+B;AAG9B;IAAR,KAAK,EAAE;;oDAA4C;AAGlC;IAAjB,MAAM,CAAC,QAAQ,CAAC;8BAAe,YAAY;uDAAkC;AAG5D;IAAjB,MAAM,CAAC,QAAQ,CAAC;8BAAe,YAAY;uDAAkC;AAK9E;IADC,KAAK,EAAE;;;+CACsC;AA9F5B,iBAAiB;IA+I9B,WAAA,MAAM,CAAC,8BAA8B,CAAC,CAAA;IACtC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;qCAPZE,WAAS;QACR,OAAO;QACR,MAAM;QACI,gBAAgB,UAET,WAAW;QACnB,cAAc,UAExB,qBAAqB;GAnJvB,iBAAiB,CAsZtC;;AC7lBD;;;;;;;AAsBA;;;;AAeA,IAAa,kBAAkB,GAA/B,MAAa,kBAAsB,SAAQ,iBAA8D;IAE3F,qBAAqB,CAAC,QAA+C;QAC3E,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEpC,IAAI,KAAK,EAAE;YACP,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YACjD,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;SAChD;KACJ;CACJ,CAAA;AAZY,kBAAkB;IAX9B,SAAS,CAAC;QACP,QAAQ,EAAE,4BAA4B;QACtC,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,wBAAwB;QAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,SAAS,EAAE;YACP,uCAAuC;YACvC,oCAAoC;SACvC;KACJ,CAAC;GACW,kBAAkB,CAY9B;;ACjDD;;;;;;;AAYA;;;;AAYA,IAAa,aAAa,GAA1B,MAAa,aAAiB,SAAQ,iBAAuD;CAAI,CAAA;AAApF,aAAa;IARzB,SAAS,CAAC;QACP,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,mBAAmB;QAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,SAAS,EAAE,CAAC,wCAAwC,CAAC;KACxD,CAAC;GACW,aAAa,CAAuE;;ACxBjG;;;;;;;;AAkBA;AACA,MAAa,6BAA6B,GAAQ;IAC9C,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;IACjD,KAAK,EAAE,IAAI;CACd,CAAC;;AAGF,MAAa,yBAAyB,GAAQ;IAC1C,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;IACjD,KAAK,EAAE,IAAI;CACd,CAAC;AAEF,MAAa,cAAc,GAAG,IAAI,cAAc,CAAe,cAAc,CAAC,CAAC;;AA2B/E,IAAa,kBAAkB,0BAA/B,MAAa,kBAAsB,SAAQ,sBAAmC;IAkD1E,YACI,UAAwC,EAC5B,WAA2B,EACD,WAA2B,EACrB,UAAwB;QAEpE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAFA,eAAU,GAAV,UAAU,CAAc;QAGpE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;KAChE;;IAtDD,IAAI,iBAAiB,CAAC,UAA4B;QAC9C,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;SACxD;KACJ;;IAKD,IAAI,GAAG,KAAe,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;IACzC,IAAI,GAAG,CAAC,KAAe;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;;IAKD,IAAI,GAAG,KAAe,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;IACzC,IAAI,GAAG,CAAC,KAAe;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;;IAKD,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;IAC7C,IAAI,UAAU,CAAC,KAA6B;QACxC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;;;;IAoBD,yBAAyB;QACrB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;KAC3F;;IAGD,eAAe;QACX,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;KAC9D;;IAGD,aAAa;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;;;;IAMD,4BAA4B;QACxB,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;;IAGS,UAAU;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC3B;KACJ;IAES,kBAAkB,CAAC,UAAoB;QAC7C,OAAO,UAAU,CAAC;KACrB;IAES,mBAAmB,CAAC,KAAe;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC5C;KACJ;;IAGD,WAAW;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;;IAGD,WAAW;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;;IAGS,cAAc;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAES,mBAAmB;QACzB,OAAO,IAAI,CAAC;KACf;CAKJ,CAAA;;YA1EmB,UAAU;YACG,WAAW,uBAAnC,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAACF,kBAAgB;YACoBG,cAAY,uBAAnE,QAAQ,YAAI,MAAM,SAAC,cAAc;;AAlDtC;IADC,KAAK,EAAE;8BAC0B,aAAa;qCAAb,aAAa;2DAK9C;AAKD;IADC,KAAK,EAAE;;;6CACiC;AAazC;IADC,KAAK,EAAE;;;6CACiC;AAazC;IADC,KAAK,CAAC,yBAAyB,CAAC;;;oDACY;AAxCpC,kBAAkB;IAxB9B,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,SAAS,EAAE;YACP,6BAA6B;YAC7B,yBAAyB;YACzB,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,oBAAkB,EAAE;SACzE;QACD,IAAI,EAAE;YACF,OAAO,EAAE,sBAAsB;YAC/B,sBAAsB,EAAE,+BAA+B;YACvD,kBAAkB,EAAE,iDAAiD;YACrE,YAAY,EAAE,0CAA0C;YACxD,YAAY,EAAE,0CAA0C;;;YAGxD,0BAA0B,EAAE,qCAAqC;YACjE,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,+BAA+B;YAC1C,UAAU,EAAE,aAAa;YACzB,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,oBAAoB;SACpC;QACD,QAAQ,EAAE,wBAAwB;KACrC,CAAC;IAqDO,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAACH,kBAAgB,CAAC,CAAA;IACpC,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;qCAHvB,UAAU;QACG,WAAW,UAEoBG,cAAY;GAtD/D,kBAAkB,CA6H9B;;ACxLD;;;;;;;;AAuBA,IAAIL,cAAY,GAAG,CAAC,CAAC;AA0BrB,IAAa,iBAAiB,yBAA9B,MAAa,iBAAiB;IAoJ1B,YACY,kBAAqC,EACrC,WAAoC,EACxB,OAAyB,EACzB,YAA4B,EACJ,UAAyB;QAJ7D,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,gBAAW,GAAX,WAAW,CAAyB;QAExB,iBAAY,GAAZ,YAAY,CAAgB;QACJ,eAAU,GAAV,UAAU,CAAe;;QAjJzE,OAAE,GAAG,wBAAwBA,cAAY,EAAE,EAAE,CAAC;;QAG9C,YAAO,GAAG,KAAK,CAAC;;QAQhB,gBAAW,GAAG,uBAAuB,CAAC;QAmFtC,mBAAc,GAAG,KAAK,CAAC;;QAmBvB,qBAAgB,GAAkB,IAAI,CAAC;;QAM9B,cAAS,GAAG,GAAG,CAAC;;QAGhB,oBAAe,GAAa,IAAI,CAAC;;QAGjC,kBAAa,GAAa,IAAI,CAAC;;QAaxC,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAU/B,IAAI,CAAC,YAAY,EAAE;YACf,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;;QAGD,IAAI,CAAC,SAAS,GAAG,OAAc,CAAC;KACnC;;IA/JD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;KACrD;;IASD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACtC;;;;;;IAUD,IAAI,WAAW;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC;QACnE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;KACpE;;IAID,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;IAC/C,IAAI,WAAW,CAAC,WAAkC;QAC9C,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;SACrC;KACJ;;IAKD,IAAI,QAAQ,KAAc,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACpD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;;IAKD,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;IAC7C,IAAI,UAAU,CAAC,KAAsB;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;;IAKD,IAAI,GAAG,KAAe,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;IACzC,IAAI,GAAG,CAAC,KAAe;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;IAKD,IAAI,GAAG,KAAe,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;IACzC,IAAI,GAAG,CAAC,KAAe;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;IAKD,IAAI,QAAQ;QACR,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS;aACrC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;YACrD,IAAI,CAAC,cAAc,CAAC;KAC3B;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE;YAClC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;KACJ;;IAID,IAAI,UAAU;QACV,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;YACpC,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACnE;QAED,OAAO,KAAK,CAAC;KAChB;;IAGD,IAAI,KAAK;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;QACnE,OAAO,UAAU,IAAI,QAAQ,CAAC;KACjC;;;;;IAkDD,iBAAiB,CAAC,GAAa;QAC3B,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC7D;;;;;IAMD,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;gBAC9C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC5B;iBAAM;gBACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;aAC1B;SACJ;KACJ;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,MAAM,KAAK,CAAC,wDAAwD,CAAC,CAAC;SACzE;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACvE;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACpC;;;QAID,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;YACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;KACJ;IAED,WAAW;QACP,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChC;;IAGD,aAAa;QACT,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KAC/C;;IAGD,eAAe;QACX,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;KAC9D;;IAGD,yBAAyB;QACrB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;KAC3F;;IAGD,oBAAoB;QAChB,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;KACpE;;IAGD,uBAAuB;QACnB,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;KACjE;;IAGD,uBAAuB;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;IAGD,eAAe;QACX,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;;IAGD,oBAAoB;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC;KACxF;;IAGD,kBAAkB;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,OAAO,SAAS,IAAI,SAAS,CAAC,iBAAiB,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;KACjF;;IAGO,WAAW;QACf,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;SACvC;KACJ;;IAGO,cAAc,CAAC,KAA0C;QAC7D,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC1C;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACxC;KACJ;CAEJ,CAAA;;YA1ImC,iBAAiB;YACxB,UAAU;YACF,gBAAgB,uBAA5C,QAAQ,YAAI,IAAI;YACiB,WAAW,uBAA5C,QAAQ;YACgDK,cAAY,uBAApE,QAAQ,YAAI,MAAM,SAAC,cAAc;;AAvHtC;IADC,KAAK,EAAE;8BAEqB,kBAAkB;qCAAlB,kBAAkB;oDADA;AAY/C;IADC,KAAK,EAAE;;;iDAC4C;AAQpD;IADC,KAAK,EAAE;;;mDACqC;AAS7C;IADC,KAAK,EAAE;;;4CACiC;AAazC;IADC,KAAK,EAAE;;;4CACiC;AAazC;IADC,KAAK,EAAE;;;iDAKP;AAkCQ;IAAR,KAAK,EAAE;;oDAAiB;AAGhB;IAAR,KAAK,EAAE;;0DAAkC;AAGjC;IAAR,KAAK,EAAE;;wDAAgC;AAEM;IAA7C,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAc,YAAY;sDAAI;AAC/B;IAA3C,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAY,UAAU;oDAAI;AAxI5D,iBAAiB;IAxB7B,SAAS,CAAC;QACP,QAAQ,EAAE,2BAA2B;QACrC,8uBAAoC;QAEpC,QAAQ,EAAE,uBAAuB;QACjC,IAAI,EAAE;YACF,OAAO,EAAE,sBAAsB;YAC/B,gDAAgD,EAAE,2BAA2B;YAC7E,uCAAuC,EAAE,UAAU;YACnD,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,OAAO;YACf,wBAAwB,EAAE,sBAAsB;YAChD,yBAAyB,EAAE,kBAAkB;;;YAG7C,0BAA0B,EAAE,qCAAqC;SACpE;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,SAAS,EAAE;YACP,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAiB,EAAE;YAChE,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,mBAAiB,EAAE;SAC3E;;KACJ,CAAC;IAwJO,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,IAAI,EAAE,CAAA;IAClB,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;qCAJP,iBAAiB;QACxB,UAAU;QACF,gBAAgB;QACX,WAAW;QACYA,cAAY;GAzJhE,iBAAiB,CA+R7B;;AChVD;;;;;;;AAeA;AAEA,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;CAAI,CAAA;AAA3B,uBAAuB;IADnC,SAAS,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;GACzC,uBAAuB,CAAI;IAsB3B,mBAAmB,GAAhC,MAAa,mBAAmB;IAiC5B,YACW,KAAwB,EACvB,kBAAqC,EACtB,eAAuB;QAFvC,UAAK,GAAL,KAAK,CAAmB;QACvB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAjCzC,kBAAa,GAAG,YAAY,CAAC,KAAK,CAAC;QAqCvC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,IAAI,cAAc,KAAK,CAAC,IAAI,cAAc,GAAG,IAAI,CAAC;KACpF;;IA7BD,IAAI,QAAQ;QACR,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACjD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SACnC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KAC3B;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAsBD,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KACpC;IAED,kBAAkB;QACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAED,KAAK,CAAC,KAAY;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;IAEO,kBAAkB;QACtB,MAAM,sBAAsB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAGC,EAAY,EAAE,CAAC;QAChG,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB;YACzE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,GAAGA,EAAY,EAAE,CAAC;QACnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU;YACrC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YACjEA,EAAY,EAAE,CAAC;QAEnB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CACtB,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,CACpB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC;KAC7D;CAGJ,CAAA;;YAhDqB,iBAAiB;YACH,iBAAiB;yCAC5C,SAAS,SAAC,UAAU;;AA/BX;IAAb,KAAK,CAAC,KAAK,CAAC;8BAAa,iBAAiB;uDAA+B;AAGjE;IAAR,KAAK,EAAE;;qDAAyB;AAIjC;IADC,KAAK,EAAE;;;mDAOP;AAOQ;IAAR,KAAK,EAAE;;0DAAwB;AAGyB;IAAxD,YAAY,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAc,uBAAuB;wDAAC;AAGvD;IAAtC,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAU,SAAS;oDAAC;AA/BjD,mBAAmB;IApB/B,SAAS,CAAC;QACP,QAAQ,EAAE,4BAA4B;QACtC,k2BAAqC;QAErC,IAAI,EAAE;YACF,OAAO,EAAE,uBAAuB;;;YAGhC,iBAAiB,EAAE,sBAAsB;YACzC,sCAAsC,EAAE,iCAAiC;YACzE,oBAAoB,EAAE,6CAA6C;YACnE,kBAAkB,EAAE,2CAA2C;;YAE/D,0BAA0B,EAAE,mCAAmC;YAC/D,SAAS,EAAE,iBAAiB;SAC/B;QACD,QAAQ,EAAE,yBAAyB;QACnC,aAAa,EAAE,iBAAiB,CAAC,IAAI;QACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;IAqCO,WAAA,SAAS,CAAC,UAAU,CAAC,CAAA;qCAFR,iBAAiB;QACH,iBAAiB;GAnCxC,mBAAmB,CAkF/B;;ACzHD;;;;;;;AAWA;;AAEA,IAAI,kBAA2B,CAAC;;;;;;AAOhC,IAAI;IACA,kBAAkB,GAAG,OAAO,IAAI,KAAK,WAAW,IAAK,IAAY,CAAC,eAAe,CAAC;CACrF;AAAC,WAAM;IACJ,kBAAkB,GAAG,KAAK,CAAC;CAC9B;;;;;AAMD,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAuDjB,YAAyC,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;;;;;QAlD5D,cAAS,GAAY,IAAI,CAAC,WAAW;cAC/B,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;cACnC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;;QAGjD,SAAI,GAAY,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;QAGtE,YAAO,GAAY,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;QAIjF,UAAK,GACD,IAAI,CAAC,SAAS;YACd,CAAC,EAAG,MAAc,CAAC,MAAM,IAAI,kBAAkB,CAAC;YAChD,OAAO,GAAG,KAAK,WAAW;YAC1B,CAAC,IAAI,CAAC,IAAI;YACV,CAAC,IAAI,CAAC,OAAO,CAAC;;;;QAKlB,WAAM,GACF,IAAI,CAAC,SAAS;YACd,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACxC,CAAC,IAAI,CAAC,KAAK;YACX,CAAC,IAAI,CAAC,IAAI;YACV,CAAC,IAAI,CAAC,OAAO,CAAC;;QAGlB,QAAG,GACC,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM,CAAC,CAAC;;;;;;QAO9F,YAAO,GAAY,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;;QAItF,YAAO,GAAY,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;QAM3F,WAAM,GAAY,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;KAEtB;CACpE,CAAA;AAxDY,QAAQ;IAuDJ,WAAA,MAAM,CAAC,WAAW,CAAC,CAAA;qCAAsB,MAAM;GAvDnD,QAAQ,CAwDpB;;AC3ED;;AAEA,IAAI,iBAA0B,CAAC;;;;;;AAO/B,IAAI;IACA,iBAAiB,GAAG,OAAO,IAAI,IAAI,WAAW,CAAC;CAClD;AAAC,WAAM;IACJ,iBAAiB,GAAG,KAAK,CAAC;CAC7B;;AAGD,MAAM,mBAAmB,GAAG;IACxB,MAAM,EAAE;QACJ,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW;QACrF,SAAS,EAAE,UAAU,EAAE,UAAU;KACpC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC7F,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACzE,CAAC;aAImC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;;AAAvD,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,OAAqB,CAAC;;AAIzD,MAAM,yBAAyB,GAAG;IAC9B,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;IACtF,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC1D,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAChD,CAAC;;;;;;AAQF,MAAM,cAAc,GAAG,oFAAoF,CAAC;;AAI5G,SAAS,KAAK,CAAI,MAAc,EAAE,aAAmC;IACjE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7B,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KACrC;IACD,OAAO,WAAW,CAAC;CACtB;;AAID,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,WAAiB;IAkBpD,YACyC,aAAqB,EAC7B,WAAmB;QAEhD,KAAK,EAAE,CAAC;QAFqB,gBAAW,GAAX,WAAW,CAAQ;;;;;;;;;;;;QAJpD,qBAAgB,GAAY,IAAI,CAAC;QAO7B,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,QAAQ,EAAE;;YAEV,IAAI,CAAC,gBAAgB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;SACvD;aAAM;YACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;KACJ;IAED,OAAO,CAAC,IAAU;QACd,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;KAC7B;IAED,QAAQ,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,OAAO,CAAC,IAAU;QACd,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;IAED,YAAY,CAAC,IAAU;QACnB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACxB;IAED,aAAa,CAAC,KAAkC;QAC5C,IAAI,iBAAiB,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACpF,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvG;QACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACrC;IAED,YAAY;QACR,IAAI,iBAAiB,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,8BAA8B,CACrD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QACD,OAAO,kBAAkB,CAAC;KAC7B;IAED,iBAAiB,CAAC,KAAkC;QAChD,IAAI,iBAAiB,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,8BAA8B,CACpD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QACD,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;KAC3C;IAED,WAAW,CAAC,IAAU;QAClB,IAAI,iBAAiB,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;SACvE;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;KACrC;IAED,iBAAiB;;QAEb,OAAO,CAAC,CAAC;KACZ;IAED,iBAAiB,CAAC,IAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACrG;IAED,KAAK,CAAC,IAAU;QACZ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACnC;IAED,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;;;QAGhD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;YACzB,MAAM,KAAK,CAAC,wBAAwB,KAAK,4CAA4C,CAAC,CAAC;SAC1F;QAED,IAAI,IAAI,GAAG,CAAC,EAAE;YACV,MAAM,KAAK,CAAC,iBAAiB,IAAI,mCAAmC,CAAC,CAAC;SACzE;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;;QAE7D,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,EAAE;YAC5B,MAAM,KAAK,CAAC,iBAAiB,IAAI,2BAA2B,KAAK,IAAI,CAAC,CAAC;SAC1E;QAED,OAAO,MAAM,CAAC;KACjB;IAED,KAAK;QACD,OAAO,IAAI,IAAI,EAAE,CAAC;KACrB;IAED,KAAK,CAAC,KAAU;;;QAGZ,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YAC1B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;KACrD;IAED,MAAM,CAAC,IAAU,EAAE,aAAqB;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrB,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACjE;QAED,IAAI,iBAAiB,EAAE;;;YAGnB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE;gBAC1E,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;aACrE;YAED,aAAa,mCAAQ,aAAa,KAAE,QAAQ,EAAE,KAAK,GAAE,CAAC;YAEtD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;SACvE;QACD,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACnE;IAED,gBAAgB,CAAC,IAAU,EAAE,KAAa;QACtC,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;KACnD;IAED,iBAAiB,CAAC,IAAU,EAAE,MAAc;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC,uBAAuB,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;QAM1E,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3E,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5F;QAED,OAAO,OAAO,CAAC;KAClB;IAED,eAAe,CAAC,IAAU,EAAE,IAAY;QACpC,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;KAC3G;IAED,SAAS,CAAC,IAAU;QAChB,OAAO;YACH,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;SAClC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACf;;;;;;IAOD,WAAW,CAAC,KAAU;QAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO,IAAI,CAAC;aACf;;;YAGD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC5B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,CAAC;iBACf;aACJ;SACJ;QACD,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,cAAc,CAAC,GAAQ;QACnB,OAAO,GAAG,YAAY,IAAI,CAAC;KAC9B;IAED,OAAO,CAAC,IAAU;QACd,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACjC;IAED,OAAO;QACH,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;;IAGO,uBAAuB,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;;;QAGrE,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;KACZ;;;;;;IAOO,OAAO,CAAC,CAAS;QACrB,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/B;;;;;;;;IASO,8BAA8B,CAAC,GAAW;QAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;KAC7C;;;;;;;;;;;;IAaO,OAAO,CAAC,GAAwB,EAAE,IAAU;;;QAGhD,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7F,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACxB;CACJ,CAAA;;yCAxPQ,QAAQ,YAAI,MAAM,SAAC,eAAe;YACO,MAAM,uBAA/C,MAAM,SAAC,WAAW;;AApBd,iBAAiB;IAD7B,UAAU,EAAE;IAoBJ,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACnC,WAAA,MAAM,CAAC,WAAW,CAAC,CAAA;6CAAsB,MAAM;GApB3C,iBAAiB,CA2Q7B;;AC/UD;;AAEA,MAAa,WAAW;IAEb,OAAO,UAAU;QACpB,IAAI,QAAQ,GAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,SAAS,GAAW,SAAS,CAAC,SAAS,CAAC;QAC5C,IAAI,YAAY,GAAW,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAE/C,KAAK,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE;YAAC,CAAC;QAE1G,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;KACjC;CAEJ;;;ACPD,MAAMC,QAAM,GAAG,OAAO,CAAC;AAEvB,IAKWP,cAAY,GAAG,CAAC,CAAC;AAkB5B,IAAa,wBAAwB,gCAArC,MAAa,wBAAwB;IA6IjC,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QA3IzC,UAAK,GAAW,mBAAmBA,cAAY,EAAE,EAAE,CAAC;QAmB1C,gBAAW,GAAW,GAAG,IAAI,CAAC,KAAK,QAAQ,CAAC;QAC9C,cAAS,GAAW,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC;QAEpC,kBAAa,GAAW,GAAG,IAAI,CAAC,KAAK,QAAQ,CAAC;QAChD,gBAAW,GAAW,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC;QAEnD,UAAK,GAAW,EAAE,CAAC;QAED,yBAAoB,GAAW,SAAS,CAAC;QAC3C,uBAAkB,GAAW,OAAO,CAAC;QAErD,SAAI,GAAW,EAAE,CAAC;QAElB,cAAS,GAAW,GAAG,CAAC;QAEzB,sBAAiB,GAAW,eAAe,CAAC;QAgB5C,cAAS,GAAW,GAAG,CAAC;QAQxB,aAAQ,GAAS,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAkBxC,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQ3B,gBAAW,GAAuB,IAAI,CAAC;QA6B/C,aAAQ,GAAa,SAAS,CAAC;QAE/B,cAAS,GAAa,SAAS,CAAC;KAS3B;IAzIL,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,SAAS,CAAC,KAAW;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAGD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAW;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACrD;IAkBQ,IAAI,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IACD,IAAI,gBAAgB,CAAC,KAAa;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;IAGQ,IAAI,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,MAAM,CAAC,KAAyB;QAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAChD;IAGa,IAAI,OAAO;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAW;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACtC;IAGa,IAAI,OAAO;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAW;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACtC;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAyB;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAGQ,IAAI,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IACD,IAAI,KAAK,CAAC,KAAsB;QAC5B,IAAI,KAAK,GAAS,IAAI,CAAC;QACvB,IAAI,GAAG,GAAS,IAAI,CAAC;QACrB,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;YACtB,KAAK,GAAGO,QAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;SACvD;QACD,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;YACpB,GAAG,GAAGA,QAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;SACjD;QAED,IAAI,KAAK,IAAI,GAAG,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B;KACJ;IAMD,IAAW,cAAc;QACrB,OAAO,EAAE,CAAC;KACb;IAOD,QAAQ,MAAY;IAEpB,WAAW,MAAY;IAEvB,UAAU,CAAC,KAAsB;QAC7B,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,SAAS,GAAGA,QAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;SAChE;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,OAAO,GAAGA,QAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;SAC1D;aAAM;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QAED,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,gBAAgB,CAAE,UAAmB;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,mBAAmB,CAAC,KAAiB;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChD,OAAO;SACV;QAED,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC5C;IAEM,kBAAkB,CAAC,SAAiB,EAAE,KAAc;QACvD,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YAClD,OAAO;SACV;QAED,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE;YAChE,IAAI,CAAC,SAAS,GAAGA,QAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1D,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACvE,IAAI,CAAC,SAAS,GAAGA,QAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;YACxD,KAAK,GAAG,IAAI,CAAC;SAChB;QAED,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YACxC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;aAC9B;SACJ;aAAM;YACH,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;aAC9B;SACJ;KACJ;IAEM,gBAAgB,CAAC,SAAiB,EAAE,KAAc;QACrD,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YAClD,OAAO;SACV;QAED,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE;YAChE,IAAI,CAAC,OAAO,GAAGA,QAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;YACxD,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACvE,IAAI,CAAC,OAAO,GAAGA,QAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;YACtD,KAAK,GAAG,IAAI,CAAC;SAChB;QAED,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YACxC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC1C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;aAC5B;SACJ;aAAM;YACH,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;aAC5B;SACJ;KACJ;CAGJ,CAAA;;YA/F0B,UAAU;YACD,iBAAiB;;AA7IC;IAAjD,SAAS,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAyB,mBAAmB;wEAAO;AAqBlF;IAAjB,KAAK,CAAC,SAAS,CAAC;;6DAA6C;AAC9C;IAAf,KAAK,CAAC,OAAO,CAAC;;2DAAyC;AAEpC;IAAnB,KAAK,CAAC,WAAW,CAAC;;+DAA+C;AAChD;IAAjB,KAAK,CAAC,SAAS,CAAC;;6DAA2C;AAEnD;IAAR,KAAK,EAAE;;uDAAoB;AAED;IAA1B,KAAK,CAAC,kBAAkB,CAAC;;sEAA0C;AAC3C;IAAxB,KAAK,CAAC,gBAAgB,CAAC;;oEAAsC;AAErD;IAAR,KAAK,EAAE;;sDAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAyB;AAGxB;IAAR,KAAK,EAAE;;;gEAEP;AAMQ;IAAR,KAAK,EAAE;;;sDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AAMa;IAAb,KAAK,CAAC,KAAK,CAAC;8BAGM,IAAI;qCAAJ,IAAI;uDADtB;AAOa;IAAb,KAAK,CAAC,KAAK,CAAC;8BAGM,IAAI;qCAAJ,IAAI;uDADtB;AAOQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;;;0DAEP;AAMQ;IAAR,KAAK,EAAE;8BAGS,SAAS;qCAAT,SAAS;qDADzB;AAnHQ,wBAAwB;IAhBpC,SAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,qBAAqB;QAC/B,qnGAAiD;QAEjD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,wBAAwB;SACpC;;KACJ,CAAC;qCA+IyB,UAAU;QACD,iBAAiB;GA/IxC,wBAAwB,CA6OpC;;ICtQY,yBAAyB,GAAtC,MAAa,yBAAyB;IAMlC,YAAoB,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;KAAK;IAErD,iBAAiB,CAAC,IAAO,EAAE,YAA0B;QACjD,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;QAElC,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3E,GAAG,GAAG,CAAC,IAAI,GAAG,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC;SAC3C;aAAM;YACH,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,GAAG,IAAI,CAAC;SACd;QAED,OAAO,IAAI,SAAS,CAAI,KAAK,EAAE,GAAG,CAAC,CAAC;KACvC;IAED,aAAa,CAAC,UAAoB,EAAE,YAA0B;QAC1D,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACxF,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,UAAU,GAAG,OAAO,IAAI,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC;YACnF,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,SAAS,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;KACvC;CAEJ,CAAA;;YA5BqC,WAAW;;AANpC,yBAAyB;IADrC,UAAU,EAAE;qCAOyB,WAAW;GANpC,yBAAyB,CAkCrC;;IC3BY,iBAAiB,GAA9B,MAAa,iBAAiB;IAE1B,YAEY,gBAAgD;QAAhD,qBAAgB,GAAhB,gBAAgB,CAAgC;KACvD;IAEI,IAAI,QAAQ,CAAC,KAAa;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC;KAC/C;CAEJ,CAAA;;YAPiC,yBAAyB,uBADlD,MAAM,SAAC,iCAAiC;;AAIpC;IAAR,KAAK,EAAE;;;iDAEP;AATQ,iBAAiB;IAT7B,SAAS,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iCAAiC;gBAC1C,QAAQ,EAAE,yBAAyB;aACtC;SACJ;KACJ,CAAC;IAIO,WAAA,MAAM,CAAC,iCAAiC,CAAC,CAAA;qCAChB,yBAAyB;GAJ9C,iBAAiB,CAW7B;;;ACpBD,MAAMA,QAAM,GAAG,OAAO,CAAC;AAEvB,IAyBa,oBAAoB,4BAAjC,MAAa,oBAAoB;IAsD7B,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QApDxC,cAAS,GAAkB,IAAI,OAAO,EAAE,CAAC;QAEnD,gBAAW,GAAa,EAAE,CAAC;QAC3B,kBAAa,GAAW,EAAE,CAAC;QAEzB,sBAAiB,GAA4B,IAAI,CAAC;QAClD,gBAAW,GAAsB,IAAI,CAAC;QACtC,uBAAkB,GAA6B,IAAI,CAAC;QAErD,sBAAiB,GAAW,eAAe,CAAC;KA2CW;IA1CtD,IAAI,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IACD,IAAI,gBAAgB,CAAC,KAAa;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;IAGQ,IAAI,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,MAAM,CAAC,KAAkC;QACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,IAAY,UAAU;QAClB,MAAM,aAAa,GAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACrD,OAAO,aAAa,CAAC,KAAK,CAAC;KAC9B;IAED,IAAY,QAAQ;QAChB,MAAM,aAAa,GAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACrD,OAAO,aAAa,CAAC,GAAG,CAAC;KAC5B;IAED,IAAY,QAAQ;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACnC;IAED,IAAY,QAAQ;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACnC;IAID,QAAQ;QACJ,IAAI,CAAC,WAAW,CAAC,YAAY;aACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC;YACP,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC1C,CAAC,CAAC;QAEP,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;IAEO,aAAa;QACjB,IAAI,KAAoB,CAAC;QACzB,IAAI,GAAkB,CAAC;QAEvB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;;oBAEpB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;wBAC3C,KAAK,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACzC;yBAAM;wBACH,KAAK,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACzC;oBAED,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;wBAC3C,GAAG,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACvC;yBAAM;wBACH,GAAG,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACvC;oBAED,MAAM,OAAO,GAAkBA,QAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC7D,IAAI,OAAO,GAAkBA,QAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;oBAE3D,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBAC9C,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;qBAC3B;oBACD,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBACtF,OAAO,GAAG,KAAK,CAAC;qBACnB;oBACD,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBAC3C,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;qBACzB;oBACD,IACI,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;yBACvC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAC5C;wBACE,SAAS;qBACZ;oBAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;iBACrC;aACJ;YAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAChC;aACJ;SACJ;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,kBAAkB;QACtB,IAAI,WAAW,GAAY,IAAI,CAAC;QAChC,IAAI,CAAC,GAAW,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,SAAS,GAAkBA,QAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,OAAO,GAAkBA,QAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEpE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACpB,MAAM,UAAU,GAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACzE,MAAM,QAAQ,GAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACvE,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;wBAC1D,WAAW,GAAG,KAAK,CAAC;wBACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACzC,MAAM;qBACT;oBAED,CAAC,EAAE,CAAC;iBACP;aACJ;YACD,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;aAC9C;SACJ;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;SAC9C;KACJ;IAEO,mBAAmB,CAAC,KAAa;QACrC,MAAM,OAAO,GAAkB,IAAI,CAAC,QAAQ,GAAGA,QAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC5E,MAAM,OAAO,GAAkB,IAAI,CAAC,QAAQ,GAAGA,QAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC5E,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,WAAW,GAAkB,IAAI,CAAC;QAEtC,IAAI,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACpC,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;SACnC;aAAM;YACH,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;SACjC;QACD,IAAI,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjC,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;SACjC;aAAM;YACH,WAAW,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;SAC7B;QAED,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjC,MAAM,aAAa,GAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACrD,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;YACpC,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC;SACnC;QAED,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC7G;IAEO,mBAAmB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAW,CAAC,GAAG,GAAW,GAAG,IAAI,CAAC;KACvF;IAEO,eAAe,CAAC,GAAQ;QAC5B,OAAO,GAAG,YAAY,IAAI,CAAC;KAC9B;IAEO,QAAQ,CAAC,IAAU;QACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KACjC;IAEM,UAAU,CAAC,KAAiB,EAAE,KAAa;QAC9C,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjC,OAAO;SACV;QAED,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;;;;;;QAMrD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;KACnC;IAGM,cAAc,CAAC,KAAa;QAC/B,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI;YAC1C,MAAM,OAAO,GAAkBA,QAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,KAAK,CAAC;aAChB;YACD,OAAOA,QAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAEzC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI;YACzC,MAAM,OAAO,GAAkBA,QAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,KAAK,CAAC;aAChB;YACD,OAAOA,QAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACxC,CAAC,CAAC;QAEH,OAAO,aAAa,IAAI,YAAY,CAAC;KACxC;CAEJ,CAAA;;YArL2C,iBAAiB;;AA/ChD;IAAR,KAAK,EAAE;8BAAoB,iBAAiB;+DAAc;AAClD;IAAR,KAAK,EAAE;8BAAc,WAAW;yDAAc;AACtC;IAAR,KAAK,EAAE;8BAAqB,kBAAkB;gEAAc;AAGpD;IAAR,KAAK,EAAE;;;4DAEP;AAMQ;IAAR,KAAK,EAAE;;;kDAEP;AAOQ;IAAR,KAAK,EAAE;;;oDAEP;AA/BQ,oBAAoB;IAhBhC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,ijBAA4C;QAE5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAmC,sBAAoB,CAAC;gBAChF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;;KACJ,CAAC;qCAuD0C,iBAAiB;GAtDhD,oBAAoB,CA2OhC;;;ACtQD,MAAMA,QAAM,GAAG,OAAO,CAAC;AAEvB,AAKA,IAAIP,cAAY,GAAG,CAAC,CAAC;AAkBrB,IAAa,mBAAmB,2BAAhC,MAAa,mBAAmB;IAoF5B,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAlFzC,UAAK,GAAW,mBAAmBA,cAAY,EAAE,EAAE,CAAC;QAEnD,OAAE,GAAW,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC;QAElC,SAAI,GAAW,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC;QAEpC,UAAK,GAAW,EAAE,CAAC;QAEnB,gBAAW,GAAW,YAAY,CAAC;QAEnC,SAAI,GAAW,EAAE,CAAC;QAEnB,aAAQ,GAAS,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAkBxC,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQ3B,gBAAW,GAAuB,IAAI,CAAC;QAkB/C,aAAQ,GAAa,SAAS,CAAC;QAE/B,cAAS,GAAa,SAAS,CAAC;KAS3B;IAtES,IAAI,OAAO;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAW;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACtC;IAGa,IAAI,OAAO;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,OAAO,CAAC,KAAW;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACtC;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,UAAU,CAAC,KAAyB;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAGQ,IAAI,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IACD,IAAI,KAAK,CAAC,KAAW;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAMD,IAAW,cAAc;QACrB,OAAO,EAAE,CAAC;KACb;IAOD,QAAQ,MAAY;IAEpB,WAAW,MAAY;IAEvB,UAAU,CAAC,KAAW;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,gBAAgB,CAAE,UAAmB;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,mBAAmB,CAAC,KAAiB;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChD,OAAO;SACV;KACJ;IAEM,aAAa,CAAC,SAAiB,EAAE,KAAc;QAClD,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YAClD,OAAO;SACV;QAED,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE;YAChE,IAAI,CAAC,KAAK,GAAGO,QAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;YACtD,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACvE,IAAI,CAAC,KAAK,GAAGA,QAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;YACpD,KAAK,GAAG,IAAI,CAAC;SAChB;QAED,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;YACxC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACxC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;aAC1B;SACJ;aAAM;YACH,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;aAC1B;SACJ;KACJ;IAEM,qBAAqB,CAAC,SAAiB;QAC1C,MAAM,SAAS,GAAGA,QAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3D,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;SAC1B;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;SAC1F;KACJ;CAEJ,CAAA;;YAlE0B,UAAU;YACD,iBAAiB;;AApFC;IAAjD,SAAS,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAAyB,mBAAmB;mEAAO;AAI3F;IAAR,KAAK,EAAE;;+CAAmC;AAElC;IAAR,KAAK,EAAE;;iDAAqC;AAEpC;IAAR,KAAK,EAAE;;kDAAoB;AAEnB;IAAR,KAAK,EAAE;;wDAAoC;AAEnC;IAAR,KAAK,EAAE;;iDAAmB;AAGb;IAAb,KAAK,CAAC,KAAK,CAAC;8BAGM,IAAI;qCAAJ,IAAI;kDADtB;AAOa;IAAb,KAAK,CAAC,KAAK,CAAC;8BAGM,IAAI;qCAAJ,IAAI;kDADtB;AAOQ;IAAR,KAAK,EAAE;;;mDAEP;AAMQ;IAAR,KAAK,EAAE;;;mDAEP;AAMQ;IAAR,KAAK,EAAE;;;mDAEP;AAMQ;IAAR,KAAK,EAAE;;;qDAEP;AAMQ;IAAR,KAAK,EAAE;8BAGS,IAAI;qCAAJ,IAAI;gDADpB;AArEQ,mBAAmB;IAhB/B,SAAS,CAAC;QACP,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,gBAAgB;QAC1B,k5CAA0C;QAE1C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAkC,qBAAmB,CAAC;gBAC9E,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,iBAAiB;SAC7B;;KACJ,CAAC;qCAsFyB,UAAU;QACD,iBAAiB;GAtFxC,mBAAmB,CAuJ/B;;aCvEqB;IACN,KAAK,EAAE;QACH,SAAS,EAAE,YAAY;KAC1B;IACD,OAAO,EAAE;QACL,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,UAAU;QAC1B,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,WAAW;KAClC;CACJ;AAOb,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;CAAI,CAAA;AAApB,gBAAgB;IA7F5B,QAAQ,CAAC;QACN,OAAO,EAAE;YACL,YAAY;YACZ,eAAe;YACf,eAAe;YACf,aAAa;YACb,UAAU;YACV,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,mBAAmB;SACtB;QACD,OAAO,EAAE;YACL,eAAe;YACf,WAAW;YACX,mBAAmB;YACnB,cAAc;YAEd,WAAW;YACX,eAAe;YACf,aAAa;YACb,oBAAoB;YACpB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,YAAY;YACZ,UAAU;YACV,kBAAkB;YAElB,iBAAiB;YACjB,oBAAoB;YACpB,wBAAwB;YACxB,mBAAmB;SACtB;QACD,YAAY,EAAE;YACV,WAAW;YACX,eAAe;YACf,aAAa;YACb,oBAAoB;YACpB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,YAAY;YACZ,UAAU;YACV,kBAAkB;YAElB,iBAAiB;YACjB,oBAAoB;YACpB,wBAAwB;YACxB,mBAAmB;SACtB;QACD,SAAS,EAAE;YACP,iBAAiB;YACjB,+CAA+C;YAC/C;gBACI,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,iBAAiB;gBAC3B,IAAI,EAAE,CAAC,eAAe,CAAC;aAC1B;YACD;gBACI,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,OAAO;aACpB;YACD;gBACI,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,MAUP;aACJ;SACJ;QACD,eAAe,EAAE;YACb,oBAAoB;SACvB;KACJ,CAAC;GACW,gBAAgB,CAAI;;;AC1HjC,MAAMA,QAAM,GAAG,OAAO,CAAC;AAEvB,IAyBa,0BAA0B,kCAAvC,MAAa,0BAA0B;IAuBnC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;QArBjD,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QAE5C,oBAAe,GAAqB,OAAO,CAAC;QAC5C,mBAAc,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAKpD,UAAK,GAAkB,EAAE,CAAC;QAC1B,WAAM,GAAkB,EAAE,CAAC;QAE3B,kBAAa,GAAoB,MAAM,CAAC;KAUuB;IAE/D,QAAQ;QACJ,IAAI,IAAI,CAAC,OAAO,EAAE;YACdA,QAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/B;aAAM;YACHA,QAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;QAED,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACnI;IAED,eAAe;QACX,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC;gBACzC,IAAI,CAAC,kBAAmB,CAAC,YAAY,EAAE,CAAC;aAC3C,CAAC,CACL,CAAC;SACL;KACJ;IAED,WAAW;QACP,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAClC;IAEM,mBAAmB;QACtB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC1C;KACJ;IAEM,SAAS;QACZ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;IAEM,SAAS;QACZ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;KACJ;IAEM,WAAW,CAAC,KAAa;QAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAChC;IAEM,eAAe,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAC9K;IAEM,cAAc,CAAC,UAAkB;QACpC,MAAM,YAAY,GAAWA,QAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAWA,QAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,UAAU,KAAK,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,CAAC;KAClH;IAEM,eAAe,CAAC,KAAa;QAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC1C,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YACtG,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YAEtG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC9D,QAAQ,GAAG,KAAK,GAAG,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC;aACnD;iBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACrC,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;aAC/B;iBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACrC,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;aAC/B;SACJ;QAED,OAAO,QAAQ,CAAC;;;;;;;;;KASnB;;IAGM,eAAe;QAClB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAEO,YAAY;QAChB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SAC7E;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SAC7E;KACJ;IAED,IAAW,iBAAiB;QACxB,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,GAAW;YAC/C,OAAO,GAAG,KAAK,WAAW,GAAG,EAAE,CAAC;SACnC,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC;KAC7I;IAEM,UAAU,CAAC,IAAY;QAC1B,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,GAAGA,QAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACxF,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;SAChC;KACJ;IAEM,cAAc,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;KACxE;IAEM,aAAa,CAAC,IAAY;QAC7B,OAAOA,QAAM,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;KACnC;IAEM,cAAc,CAAC,KAAa;QAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC1C,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YACpG,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAEpG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC5D,QAAQ,GAAG,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO,CAAC;aACjD;iBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACpC,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;aAC9B;iBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACpC,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;aAC9B;SACJ;QAED,OAAO,QAAQ,CAAC;;;;;;;;;KAUnB;CAEJ,CAAA;;YA1K2C,iBAAiB;;AAvBhD,0BAA0B;IAtBtC,SAAS,CAAC;QACP,QAAQ,EAAE,0BAA0B;QACpC,QAAQ,EAAE,qBAAqB;QAC/B,2jEAAmD;QAEnD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAyC,4BAA0B,CAAC;gBAC5F,KAAK,EAAE,IAAI;aACd;SACJ;QACD,UAAU,EAAE;YACRC,yBAAuB,CAAC,cAAc;YACtCA,yBAAuB,CAAC,cAAc;SACzC;QACD,IAAI,EAAE;YACF,OAAO,EAAE,0BAA0B;YACnC,mBAAmB,EAAE,iBAAiB;YACtC,wBAAwB,EAAE,uBAAuB;SACpD;;KACJ,CAAC;qCAwB0C,iBAAiB;GAvBhD,0BAA0B,CAiMtC;;;ACpND,MAAMD,QAAM,GAAG,OAAO,CAAC;AAEvB,MAGa,+BAA+B,GAAG,IAAI,cAAc,CAAuB,iCAAiC,CAAC,CAAC;;AAG3H,SAAgB,uCAAuC,CAAC,OAAgB;IACpE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;CACtD;;AAGD,MAAa,gDAAgD,GAAG;IAC5D,OAAO,EAAE,+BAA+B;IACxC,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,UAAU,EAAE,uCAAuC;CACtD,CAAC;AAGF,MAAa,SAAS;IAiBlB,YAAY,KAAc,EAAE,IAAa;QACrC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACrB;IAhBD,IAAW,IAAI;QACX,MAAM,IAAI,GAAGA,QAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC;KACf;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;CAMJ;AAED,MAAa,gBAAgB;IAUzB;QAFA,WAAM,GAAkB,EAAE,CAAC;QAGvB,IAAI,CAAC,kBAAkB,GAAGA,QAAM,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,mBAAmB,GAAGA,QAAM,EAAE,CAAC;QAEpC,IAAI,CAAC,MAAM,GAAGA,QAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;QAE7D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAC3D;IAED,cAAc;QACV,IAAI,CAAC,gBAAgB,GAAG,CAAC,UAAU,CAAC,MAAM,CAACA,QAAM,CAAC,GAAGA,QAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;KAC5G;IAED,WAAW,CAAC,KAAa;QACrB,IAAI,CAAC,mBAAmB,GAAGA,QAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAC3D;IAED,aAAa;QACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAChE,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,aAAa;QACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACrE,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;CACJ;AAED,IAAIP,cAAY,GAAG,CAAC,CAAC;AAkBrB,IAAa,wBAAwB,gCAArC,MAAa,wBAAwB;IA8HjC,YACW,UAAsB,EACrB,kBAAqC,EACrC,QAAiB,EACjB,OAAe,EACf,iBAAmC,EACF,cAAmB,EACxC,IAAoB,EACF,SAAc;QAP7C,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,aAAQ,GAAR,QAAQ,CAAS;QACjB,YAAO,GAAP,OAAO,CAAQ;QACf,sBAAiB,GAAjB,iBAAiB,CAAkB;QAEvB,SAAI,GAAJ,IAAI,CAAgB;QACF,cAAS,GAAT,SAAS,CAAK;QAlIhD,UAAK,GAAW,mBAAmBA,cAAY,EAAE,EAAE,CAAC;QAMpD,8BAAyB,GAAuB,IAAI,CAAC;QACrD,0BAAqB,GAAG,GAAG,IAAI,CAAC,KAAK,WAAW,CAAC;QAEhD,kBAAa,GAAkB,IAAI,OAAO,EAAE,CAAC;QAE/C,eAAU,GAAW,EAAE,CAAC;QAItB,OAAE,GAAW,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC;QAElC,SAAI,GAAW,GAAG,IAAI,CAAC,KAAK,OAAO,CAAC;QAEpC,UAAK,GAAW,EAAE,CAAC;QAEnB,gBAAW,GAAW,EAAE,CAAC;QAEzB,SAAI,GAAW,EAAE,CAAC;QAclB,cAAS,GAAoB,OAAO,CAAC;QAErC,cAAS,GAAsB,OAAO,CAAC;QAEvC,iBAAY,GAAoB,MAAM,CAAC;QAExC,YAAO,GAAG,KAAK,CAAC;QAQhB,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQ3B,SAAI,GAAc,IAAI,CAAC;QAQvB,SAAI,GAAc,IAAI,CAAC;QAwCb,iBAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC5D,iBAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAE9E,aAAQ,GAAa,SAAS,CAAC;QAE/B,cAAS,GAAa,SAAS,CAAC;QAY5B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;KACzC;IAzFQ,IAAI,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,MAAM,CAAC,KAAc;QACrB,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;KAC7D;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IACD,IAAI,GAAG,CAAC,KAAgB;QACpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACrB;IAGQ,IAAI,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IACD,IAAI,GAAG,CAAC,KAAgB;QACpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACrB;IAGQ,IAAI,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IACD,IAAI,KAAK,CAAC,KAAgB;QACtB,IAAI,QAAQ,GAAc,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE;YACR,QAAQ,GAAG,IAAI,CAAC;SACnB;QACD,IAAI,QAAQ,EAAE;YACV,QAAQ,IAAI,CAAC,YAAY;gBACrB,KAAK,MAAM,EAAE;oBACT,IAAI,CAAC,UAAU,GAAGO,QAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC1D,MAAM;iBACT;gBACD,KAAK,MAAM,EAAE;oBACT,IAAI,CAAC,UAAU,GAAGA,QAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvD,MAAM;iBACT;gBACD,SAAS;oBACL,IAAI,CAAC,UAAU,GAAGA,QAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC1D,MAAM;iBACT;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QAEvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAsBD,QAAQ;QACJ,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAGA,QAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5D;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAGA,QAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC;aAC5C;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SAC3C;aAAM;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACnF;KACJ;IAED,WAAW,CAAC,OAAsB;QAC9B,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpE,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;YACjE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,gBAAqD,CAAC,CAAC;YAE9G,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACnC;SACJ;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACtC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACjC;IAED,UAAU,CAAC,KAAgB;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,gBAAgB,CAAE,UAAmB;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,aAAa,CAAC,KAAa,EAAE,IAAY;QAC5C,MAAM,SAAS,GAAc,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAEM,IAAI;QACP,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,OAAO;SACV;QACD,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC,MAAM,KAAK,CAAC,gEAAgE,CAAC,CAAC;SACjF;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;SACjE;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAEM,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;SACV;QACD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAClD,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAC/B,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC/E;QAED,MAAM,aAAa,GAAG;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;aACzC;SACJ,CAAC;QAEF,IAAI,IAAI,CAAC,yBAAyB;YAC9B,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,KAAK,UAAU,EAAE;YAC5D,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;YACvC,UAAU,CAAC,aAAa,CAAC,CAAC;SAC7B;aAAM;YACH,aAAa,EAAE,CAAC;SACnB;KACJ;IAEO,YAAY;QAChB,MAAM,MAAM,GAAgD,IAAI,eAAe,CAA6B,0BAA0B,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEhK,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;QAExD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,SAAU,CAAC,cAAc,EAAE,CAAC;SACpC,CAAC,CAAC;KACN;IAEO,0BAA0B;QAC9B,OAAO,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC;KAC1F;IAEO,YAAY;QAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;aAC5C,mBAAmB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACtD,qBAAqB,CAAC,yBAAyB,CAAC;aAChD,sBAAsB,CAAC,KAAK,CAAC;aAC7B,kBAAkB,CAAC,CAAC,CAAC;aACrB,kBAAkB,EAAE,CAAC;QAE1B,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;YACpC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;YAC/D,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,CAAC,kCAAkC,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAC/E,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YAC7B,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;YACtC,UAAU,EAAE,6BAA6B;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE7D,KAAK,CACD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAC5B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,KAAK,IAAI,CAAC,wBAAwB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAClK,CAAC,SAAS,CAAC,KAAK;YACb,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB,CAAC,CAAC;KACN;IAEO,aAAa;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SACnD;KACJ;IAEO,sBAAsB,CAAC,QAA2C;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;QAC5D,MAAM,UAAU,GAAG,QAAQ,KAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;QAC/D,MAAM,UAAU,GAAG,QAAQ,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;QAEzD,OAAO,QAAQ,CAAC,aAAa,CAAC;YAC1B;gBACI,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;aACrB;YACD;gBACI,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,UAAU;aACvB;YACD;gBACI,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,QAAQ;aACrB;YACD;gBACI,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,UAAU;aACvB;SACJ,CAAC,CAAC;KACN;CAEJ,CAAA;;YAvN0B,UAAU;YACD,iBAAiB;YAC3B,OAAO;YACR,MAAM;YACI,gBAAgB;4CAC1C,MAAM,SAAC,+BAA+B;YACb,cAAc,uBAAvC,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAAC,QAAQ;;AApIwB;IAAvD,SAAS,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC;8BAA2B,UAAU;0EAAC;AAiBpF;IAAR,KAAK,EAAE;;oDAAmC;AAElC;IAAR,KAAK,EAAE;;sDAAqC;AAEpC;IAAR,KAAK,EAAE;;uDAAoB;AAEnB;IAAR,KAAK,EAAE;;6DAA0B;AAEzB;IAAR,KAAK,EAAE;;sDAAmB;AAElB;IAAR,KAAK,EAAE;;wDAAgB;AACf;IAAR,KAAK,EAAE;;sDAAc;AACb;IAAR,KAAK,EAAE;;uDAAe;AAQd;IAAR,KAAK,EAAE;;0DAAmB;AAElB;IAAR,KAAK,EAAE;;2DAAsC;AAErC;IAAR,KAAK,EAAE;;2DAAwC;AAEvC;IAAR,KAAK,EAAE;;8DAAwC;AAGvC;IAAR,KAAK,EAAE;;;sDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;8BAGO,SAAS;qCAAT,SAAS;mDADvB;AAMQ;IAAR,KAAK,EAAE;8BAGO,SAAS;qCAAT,SAAS;mDADvB;AAMQ;IAAR,KAAK,EAAE;8BAGS,SAAS;qCAAT,SAAS;qDADzB;AA6BiB;IAAjB,MAAM,CAAC,QAAQ,CAAC;8BAAe,YAAY;8DAAkC;AAC5D;IAAjB,MAAM,CAAC,QAAQ,CAAC;8BAAe,YAAY;8DAAkC;AAxHrE,wBAAwB;IAhBpC,SAAS,CAAC;QACP,QAAQ,EAAE,wBAAwB;QAClC,owDAAiD;QAEjD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAuC,0BAAwB,CAAC;gBACxF,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,wBAAwB;SACpC;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;IAqIO,WAAA,MAAM,CAAC,+BAA+B,CAAC,CAAA;IACvC,WAAA,QAAQ,EAAE,CAAA;IACV,WAAA,QAAQ,EAAE,CAAA,EAAE,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;qCAPV,UAAU;QACD,iBAAiB;QAC3B,OAAO;QACR,MAAM;QACI,gBAAgB,UAEjB,cAAc;GArInC,wBAAwB,CAsVpC;;ICjaY,qBAAqB,GAAlC,MAAa,qBAAqB;CAAI,CAAA;AAAzB,qBAAqB;IA5BjC,QAAQ,CAAC;QACN,OAAO,EAAE;YACL,YAAY;YACZ,eAAe;YACf,eAAe;YACf,aAAa;YACb,UAAU;YACV,YAAY;YACZ,aAAa;YACb,WAAW;YACX,mBAAmB;SACtB;QACD,OAAO,EAAE;YACL,eAAe;YACf,0BAA0B;YAC1B,wBAAwB;SAC3B;QACD,YAAY,EAAE;YACV,0BAA0B;YAC1B,wBAAwB;SAC3B;QACD,SAAS,EAAE;YACP,gDAAgD;SACnD;QACD,eAAe,EAAE;YACb,0BAA0B;SAC7B;KACJ,CAAC;GACW,qBAAqB,CAAI;;;ACnCtC,IAAIP,cAAY,GAAG,CAAC,CAAC;AAErB,MAAa,SAAS;IAYlB,YAAY,KAAc,EAAE,GAAY;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAClB;IAXM,aAAa;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;KACtC;IAEM,QAAQ;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACrF;CAMJ;AAcD,IAAa,sBAAsB,8BAAnC,MAAa,sBAAsB;IAsE/B,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAtEzC,UAAK,GAAW,mBAAmBA,cAAY,EAAE,EAAE,CAAC;QAErD,eAAU,GAAW,CAAC,CAAC;QACvB,aAAQ,GAAW,CAAC,CAAC;QAEnB,OAAE,GAAW,IAAI,CAAC,KAAK,CAAC;QAExB,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,UAAK,GAAW,EAAE,CAAC;QAEnB,YAAO,GAAW,EAAE,CAAC;QAErB,qBAAgB,GAAW,EAAE,CAAC;QAC9B,mBAAc,GAAW,EAAE,CAAC;QAE5B,SAAI,GAAW,EAAE,CAAC;QAEnB,SAAI,GAAW,CAAC,CAAC;QASjB,SAAI,GAAW,GAAG,CAAC;QASnB,UAAK,GAAW,CAAC,CAAC;QASlB,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQnC,aAAQ,GAAa,CAAC,KAAgB,QAAQ,CAAC;QAC/C,cAAS,GAAa,SAAS,CAAC;KAS3B;IApDI,IAAI,GAAG;QACZ,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;KACzD;IACD,IAAI,GAAG,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAGQ,IAAI,GAAG;QACZ,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KAC3D;IACD,IAAI,GAAG,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAGQ,IAAI,IAAI;QACb,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAC3D;IACD,IAAI,IAAI,CAAC,KAAa;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAKD,IAAW,cAAc;QACrB,OAAO,EAAE,CAAC;KACb;IAOD,QAAQ;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAED,WAAW,MAAY;IAEvB,UAAU,CAAC,KAAgB;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;SAC9C;QACD,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,gBAAgB,CAAC,EAAY;QACzB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,gBAAgB,CAAE,UAAmB;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEO,SAAS;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACvE;IAEM,aAAa;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;SAC9B;aAAM,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACvE;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAEM,eAAe;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACvE;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAEM,QAAQ;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAElE,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;KACJ;IAEM,IAAI;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;;;QAID,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAElE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;YACxD,UAAU,GAAG,YAAY,CAAC;SAC7B;QAED,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;KACJ;IAEM,UAAU,CAAC,KAAuB;QACrC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;YACzB,OAAO;SACV;QACD,UAAU,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;KACvC;IAEO,gBAAgB;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;CAEJ,CAAA;;YA1H0B,UAAU;YACD,iBAAiB;;AAjExC;IAAR,KAAK,EAAE;;kDAAyB;AAExB;IAAR,KAAK,EAAE;;oDAA2B;AAE1B;IAAR,KAAK,EAAE;;qDAAoB;AAEnB;IAAR,KAAK,EAAE;;uDAAsB;AAErB;IAAR,KAAK,EAAE;;gEAA+B;AAC9B;IAAR,KAAK,EAAE;;8DAA6B;AAE5B;IAAR,KAAK,EAAE;;oDAAmB;AAGlB;IAAR,KAAK,EAAE;;;iDAEP;AAOQ;IAAR,KAAK,EAAE;;;iDAEP;AAOQ;IAAR,KAAK,EAAE;;;kDAEP;AAOQ;IAAR,KAAK,EAAE;;;sDAEP;AAMQ;IAAR,KAAK,EAAE;;;sDAEP;AA1DQ,sBAAsB;IAZlC,SAAS,CAAC;QACP,QAAQ,EAAE,iBAAiB;QAC3B,khEAA0C;QAE1C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAsB,CAAC;gBACrD,KAAK,EAAE,IAAI;aACd;SACJ;;KACJ,CAAC;qCAwEyB,UAAU;QACD,iBAAiB;GAxExC,sBAAsB,CAiMlC;;;AC/ND,IAAIA,cAAY,GAAG,CAAC,CAAC;AAmBrB,IAAa,wBAAwB,gCAArC,MAAa,wBAAwB;IAkFjC,YACW,UAAsB,EACrB,kBAAqC;QADtC,eAAU,GAAV,UAAU,CAAY;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QA/EzC,UAAK,GAAW,qBAAqBA,cAAY,EAAE,EAAE,CAAC;QAErD,OAAE,GAAW,IAAI,CAAC,KAAK,CAAC;QAExB,SAAI,GAAW,IAAI,CAAC,KAAK,CAAC;QAE1B,UAAK,GAAW,EAAE,CAAC;QAEnB,SAAI,GAAW,EAAE,CAAC;QAElB,QAAG,GAAW,CAAC,CAAC;QAEhB,QAAG,GAAW,GAAG,CAAC;QAEnB,cAAS,GAAW,CAAC,CAAC;QAWtB,eAAU,GAAW,CAAC,CAAC;QAWvB,aAAQ,GAAW,CAAC,CAAC;QAWrB,UAAK,GAAW,CAAC,CAAC;QAWlB,cAAS,GAAY,KAAK,CAAC;QAQ3B,cAAS,GAAY,KAAK,CAAC;QAQnC,aAAQ,GAAa,SAAS,CAAC;QAC/B,cAAS,GAAa,SAAS,CAAC;KAK3B;IAjEI,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;KAC9B;IACD,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC7D;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC;KAC/B;IAGc,IAAI,SAAS;QACxB,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;KAC/B;IACD,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,CAAC,CAAC;KAChC;IAGY,IAAI,OAAO;QACpB,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;KAC7B;IACD,IAAI,OAAO,CAAC,KAAa;QACrB,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,CAAC,CAAC;KAC9B;IAGQ,IAAI,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;KAC1B;IACD,IAAI,IAAI,CAAC,KAAa;QAClB,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;KAC3B;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAGQ,IAAI,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAUD,QAAQ,MAAY;IAEpB,eAAe;QACX,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,WAAW,MAAY;IAEvB,UAAU,CAAC,KAAkB;QACzB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;YAExB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAChE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAE5D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;SACJ;KACJ;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,gBAAgB,CAAE,UAAmB;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;IAEM,gBAAgB,CAAC,WAAoB;QACxC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5I,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;;;;QAM3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,IAAI,GAAG,EAAE,EAAE;YACX,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACvB;QAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAChE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEM,cAAc,CAAC,WAAoB;QACtC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5I,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;;;;QAM3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,IAAI,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;SACrB;aAAM;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEM,iBAAiB;QACpB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC7B;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC7F,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAE3B,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC7B,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC7B;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,IAAI,IAAI,EAAE,EAAE;gBACZ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACrB;iBAAM;gBACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;YAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC/D;QAED,IAAI,IAAI,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAChE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEM,eAAe;QAClB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7B,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC7B;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC7F,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/B,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAE3B,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC7B,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC7B;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,IAAI,IAAI,EAAE,EAAE;gBACZ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;aACvB;iBAAM;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACzB;YAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SACnE;QAED,IAAI,IAAI,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;SACrB;aAAM;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,UAAU,CAAC,WAA6B,EAAE,SAA2B;QACzE,MAAM,IAAI,GAAW,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,EAAE,GAAW,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KACrB;IAEO,WAAW;QACf,MAAM,YAAY,GAAsB,IAAI,CAAC,UAAU,CAAC,aAAkC,CAAC;QAC3F,MAAM,UAAU,GAAsB,IAAI,CAAC,QAAQ,CAAC,aAAkC,CAAC;QACvF,MAAM,aAAa,GAAW,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9E,MAAM,YAAY,IAAY,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,IAAY,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,WAAW,GAAW,SAAS,CAAC;QACtC,MAAM,UAAU,GAAW,SAAS,CAAC;QAErC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG;;cAExB,WAAW;cACX,WAAW,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,GAAG,GAAG;cACrD,UAAU,IAAI,CAAC,CAAC,YAAY,KAAK,aAAa,CAAC,IAAI,GAAG;cACtD,UAAU,IAAI,CAAC,UAAU,KAAK,aAAa,CAAC,GAAG,GAAG;cAClD,WAAW,IAAI,CAAC,UAAU,KAAK,aAAa,CAAC,GAAG,GAAG;cACnD,WAAW,QAAQ,CAAC;KAC7B;IAEO,oBAAoB;QACxB,MAAM,SAAS,GAAI,IAAI,CAAC,UAAU,CAAC,aAAkC,CAAC;QACtE,MAAM,OAAO,GAAI,IAAI,CAAC,QAAQ,CAAC,aAAkC,CAAC;QAElE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE5C,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;;YAElF,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;SAC9B;aAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;;YAEzF,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;SAC9B;aAAM;;YAEH,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;SAC9B;KACJ;IAEO,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;KACpD;IAEO,kBAAkB;QACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAC7D;IAEM,MAAM;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;CAEJ,CAAA;;YAlO0B,UAAU;YACD,iBAAiB;;AAlFL;IAA3C,SAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAa,UAAU;4DAAC;AACzB;IAAzC,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAW,UAAU;0DAAC;AAItD;IAAR,KAAK,EAAE;;oDAAyB;AAExB;IAAR,KAAK,EAAE;;sDAA2B;AAE1B;IAAR,KAAK,EAAE;;uDAAoB;AAEnB;IAAR,KAAK,EAAE;;sDAAmB;AAElB;IAAR,KAAK,EAAE;;qDAAiB;AAEhB;IAAR,KAAK,EAAE;;qDAAmB;AAGlB;IAAR,KAAK,EAAE;;;wDAEP;AASc;IAAd,KAAK,CAAC,MAAM,CAAC;;;yDAEb;AASY;IAAZ,KAAK,CAAC,IAAI,CAAC;;;uDAEX;AASQ;IAAR,KAAK,EAAE;;;oDAEP;AASQ;IAAR,KAAK,EAAE;;;wDAEP;AAMQ;IAAR,KAAK,EAAE;;;wDAEP;AA1EQ,wBAAwB;IAjBpC,SAAS,CAAC;QACP,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;QAC3B,qyDAA4C;QAE5C,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,0BAAwB,CAAC;gBACvD,KAAK,EAAE,IAAI;aACd;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE,mBAAmB;SAC/B;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;qCAoFyB,UAAU;QACD,iBAAiB;GApFxC,wBAAwB,CAqTpC;;ICtNU,QAAkB,CAAC;AAE9B,MAAM,cAAc,GAAU;IAC1B,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,6BAA6B;IAC7B,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,mBAAmB;IACnB,yBAAyB;IACzB,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,sBAAsB;IACtB,yBAAyB;IACzB,oBAAoB;IACpB,4BAA4B;IAC5B,+BAA+B;IAC/B,6BAA6B;IAC7B,uBAAuB;IACvB,6BAA6B;IAC7B,+BAA+B;IAC/B,wBAAwB;IACxB,sBAAsB;IACtB,0BAA0B;IAC1B,kBAAkB;IAClB,0BAA0B;IAC1B,wBAAwB;IACxB,6BAA6B;IAC7B,4BAA4B;IAC5B,yBAAyB;IACzB,2BAA2B;IAC3B,iCAAiC;IACjC,uBAAuB;IACvB,kBAAkB;IAClB,wBAAwB;IACxB,sBAAsB;;IAGtB,wBAAwB;IACxB,sBAAsB;IACtB,wBAAwB;IACxB,4BAA4B;IAC5B,6BAA6B;IAC7B,kBAAkB;CACrB,CAAC;AAEF,MAAM,cAAc,GAAU;IAC1B,qBAAqB;IACrB,gBAAgB;IAChB,gBAAgB;IAChB,4BAA4B;IAC5B,2BAA2B;IAC3B,+BAA+B;CAClC,CAAC;AAEF,MAAM,SAAS,GAAU;IACrB,gBAAgB;CACnB,CAAC;AAEF,MAAM,YAAY,GAAU;IACxB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;CACxB,CAAC;aAoIoB;IACN,KAAK,EAAE;QACH,SAAS,EAAE,YAAY;KAC1B;IACD,OAAO,EAAE;QACL,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,UAAU;QAC1B,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,WAAW;KAClC;CACJ;AAIb,IAAa,YAAY,GAAzB,MAAa,YAAY;IACrB,YAAoB,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;QACnC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;KAC7B;CACJ,CAAA;;YAHkC,QAAQ;;AAD9B,YAAY;IAhJxB,QAAQ,CAAC;QACN,YAAY,EAAE;YACV,cAAc;YACd,cAAc;YACd,SAAS;YACT,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,yBAAyB;YACzB,uBAAuB;YACvB,oBAAoB;YACpB,iBAAiB;YACjB,YAAY;YACZ,mBAAmB;YACnB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,sBAAsB;YACtB,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,YAAY;YACZ,qBAAqB;YACrB,0BAA0B;YAC1B,kCAAkC;YAClC,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;YACxB,8BAA8B;SACjC;QACD,OAAO,EAAE;YACL,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,gBAAgB,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC;YAC1E,aAAa,CAAC,QAAQ,EAAE;YACxB,iBAAiB;YACjB,2BAA2B;YAC3B,gBAAgB;YAChB,oBAAoB;YACpB,aAAa;YAEb,gBAAgB;YAChB,qBAAqB;SACxB;QACD,OAAO,EAAE;YACL,cAAc;YACd,cAAc;YACd,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChBS,iBAAe;YACfC,iBAAe;YACf,oBAAoB;YACpB,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,yBAAyB;YACzB,uBAAuB;YACvB,oBAAoB;YACpB,iBAAiB;YACjB,YAAY;YACZ,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,sBAAsB;YACtB,kBAAkB;YAClB,gBAAgB;YAChB,aAAa;YACb,qBAAqB;YACrB,YAAY;YACZ,qBAAqB;YACrB,0BAA0B;YAC1B,kCAAkC;YAClC,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,6BAA6B;YAC7B,0BAA0B;YAC1B,wBAAwB;YACxB,8BAA8B;YAE9B,gBAAgB;YAChB,qBAAqB;SACxB;QACD,eAAe,EAAE;YACb,+BAA+B;YAC/B,iBAAiB;YACjB,YAAY;YACZ,gBAAgB;SACnB;QACD,SAAS,EAAE;YACP,YAAY;YACZ,gCAAgC;YAChC;gBACI,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,iBAAiB;gBAC3B,IAAI,EAAE,CAAC,eAAe,CAAC;aAC1B;YACD;gBACI,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,OAAO;aACpB;YACD;gBACI,OAAO,EAAE,gBAAgB;gBACzB,QAAQ,MAUP;aACJ;SACJ;KACJ,CAAC;qCAEiC,QAAQ;GAD9B,YAAY,CAIxB;;MCrVY,OAAW,SAAQ,WAAW;IAUvC;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACnB;CAEJ;;MCfY,OAAQ,SAAQ,WAAW;IAMtC,YAAY,KAAa,EAAE,SAA4B;QACrD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;CAEF;;ICfW,iBAKX;AALD,WAAY,iBAAiB;IAE3B,gCAAW,CAAA;IACX,kCAAa,CAAA;CAEd,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;;MCcqB,qBAAoE,SAAQ,iBAAiB;IAU/G,YACc,OAAkC,EAClC,cAA8B,EAC9B,mBAAwC,EACxC,MAAc,EACd,cAA8B;QAExC,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QANpC,YAAO,GAAP,OAAO,CAA2B;QAClC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAgB;KAG3C;IAED,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC5C;IAED,GAAG;QACC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CACtD,CAAC;KACL;IAED,IAAI,CAAC,MAAS;QACV,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAClE,CAAC;KACL;IAED,IAAI,CAAC,MAAS;QACV,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAClE,CAAC;KACL;IAED,MAAM,CAAC,MAAS,EAAE,MAAgB;QAC9B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAC7B,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,mBAAmB;YACvD,MAAM,EAAE;gBACJ,IAAI;oBACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;wBACrC,IAAI,MAAM,EAAE;4BACR,IAAI,CAAC,IAAI,EAAE,CAAC;yBACf;6BAAM;4BACH,IAAI,CAAC,GAAG,EAAE,CAAC;4BACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;4BACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;yBACzC;wBACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;4BAClB,IAAI,CAAC,KAAK,EAAE,CAAC;yBAChB;wBACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC3B,CAAC,CAAC;iBACN;gBAAC,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACJ;SACJ,CAAC,CAAC;KACN;IAED,SAAS,CAAC,UAAe,EAAE,MAAgB;QACvC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAC7B,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,uBAAuB;YAC3D,MAAM,EAAE;gBACJ,IAAI;oBACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;wBACzC,IAAI,MAAM,EAAE;4BACR,IAAI,CAAC,IAAI,EAAE,CAAC;yBACf;6BAAM;4BACH,IAAI,CAAC,GAAG,EAAE,CAAC;4BACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;4BACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;yBACzC;wBACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;4BAClB,IAAI,CAAC,KAAK,EAAE,CAAC;yBAChB;wBACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC3B,CAAC,CAAC;iBACN;gBAAC,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACJ;SACJ,CAAC,CAAC;KACN;IAED,YAAY,CAAC,MAAS,EAAE,OAAgB;QACpC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAC7B,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,oBAAoB,OAAO,GAAG,QAAQ,GAAG,UAAU,iBAAiB;YAC7E,MAAM,EAAE;gBACJ,IAAI;oBACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;wBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC3B,CAAC,CAAC;iBACN;gBAAC,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACJ;YACD,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;SAC7B,CAAC,CAAC;KACN;IAED,SAAS;KACR;IAED,KAAK;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAES,OAAO;QACb,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACzH;IAES,OAAO;QACb,OAAO,IAAI,OAAO,EAAK,CAAC;KAC3B;IAES,YAAY;QAClB,OAAO,IAAI,CAAC;KACf;IAES,0BAA0B;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC5B;IAES,kBAAkB;QACxB,OAAO,EAAE,CAAC;KACb;IAES,WAAW;QACjB,OAAO,EAAE,CAAC;KACb;IAED,IAAI,CAAC,SAAe;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;SACrC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC5E,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACtC;QAED,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC9D,IAAI,SAAS,CAAC,IAAI,EAAE;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAC5B,SAAS,CAAC,IAAI,CAAC,MAAM,EACrB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CACjH,CAAC,CAAC;aACN;SACJ;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI;YACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KACxC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KACpG;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAChF;IAED,UAAU;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC/E;CAEJ;;MC7NqB,qBAAoE,SAAQ,qBAA2B;IAYzH,YACc,OAAkC,EAClC,cAA8B,EAC9B,mBAAwC,EACxC,MAAc,EACd,cAA8B;QAExC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QANlE,YAAO,GAAP,OAAO,CAA2B;QAClC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAgB;QAdlC,iBAAY,GAAoB,IAAI,YAAY,CAAI,IAAI,CAAC,CAAC;KAiBnE;IAhBQ,IAAI,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAI,MAAM,CAAC,MAAS;QAChB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC5C;IAYD,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,IAAI,CAAC,IAAc,EAAE,MAAgB;QACjC,IAAI;YACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;aAC9B;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM;gBAC3C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC3D,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACrB;qBAAM,IAAI,MAAM,EAAE;oBACf,IAAI,CAAC,IAAI,EAAE,CAAC;iBACf;qBAAM;oBACH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;iBAC9H;aACJ,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SACxC;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACvB;KACJ;IAED,OAAO,MAAY;IAEnB,MAAM;QACF,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;iBAC3E,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACpE;aAAM;YACH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBAC7B,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,mBAAmB;gBACvD,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;qBACzF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;aACnE,CAAC,CAAC;SACN;KACJ;IAIS,cAAc;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,EAAE,GAAoB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,IAAI,EAAE,EAAE;YACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;gBACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACzC,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SACxC;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;KACJ;IAEM,mBAAmB,MAAY;CAEzC;AAtFa;IAAT,MAAM,EAAE;8BAAe,YAAY;2DAAgC;AAC3D;IAAR,KAAK,EAAE;;;mDAEP;;ACXL,MAAMH,QAAM,GAAG,OAAO,CAAC;AAIvB,IAOa,qBAAqB,GAAlC,MAAa,qBAA0C,SAAQ,eAAe;IAM1E,YAAsB,MAAc,EAAY,IAAgB;QAC5D,KAAK,EAAE,CAAC;QADU,WAAM,GAAN,MAAM,CAAQ;QAAY,SAAI,GAAJ,IAAI,CAAY;QAE5D,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAc,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACjD;IAED,KAAK,CAAC,IAAO;QACT,MAAM,IAAI,GAAe,IAAI,UAAU,EAAE;aACpC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;aAC7B,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;aAC9B,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,+BAA+B,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC1F,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CACvD,CAAC;KACL;IAEK,MAAM;;YACR,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aAChH,CAAC,CAAC;SACN;KAAA;IAED,WAAW;QACP,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,YAAY,CAAC,gBAAgC;QACzC,IAAI,IAAI,GAAe,IAAI,UAAU,EAAE;aAClC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC;aAClC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;YACtC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;SAC5E;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,+BAA+B,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACxJ,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CACvD,CAAC;KACL;IAED,WAAW,CAAC,KAAmB;QAC3B,IAAI,YAAY,GAAgB,IAAI,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC3B,YAAY,GAAG,IAAI,WAAW,EAAE;iBAC3B,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC;iBAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;KACvG;IAED,YAAY,CAAC,KAAkB;QAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YACnE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;SACtE;QACD,OAAO,KAAK,CAAC;KAChB;IAES,cAAc,CAAC,KAAkB;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;YAC5B,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;QACD,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;IAED,IAAI,sBAAsB;QACtB,MAAM,KAAK,GAAW,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;KAChE;IAES,YAAY;QAClB,OAAO,IAAI,WAAW,EAAE;aACnB,MAAM,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC;aACpE,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;aAC3D,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;aAC3B,MAAM,CAAC,UAAU,EAAEA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5D;CAEJ,CAAA;;YArFiC,MAAM;YAAkB,UAAU;;;AANvD,qBAAqB;IAHjC,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAOgC,MAAM,EAAkB,UAAU;GANvD,qBAAqB,CA2FjC;;ICpGY,eAAe,GAA5B,MAAa,eAAe;IAExB,YAAoB,qBAAsD;QAAtD,0BAAqB,GAArB,qBAAqB,CAAiC;KACzE;IAED,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,MAAM,KAAK,GAAuB,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;QAExE,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC5D,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACpB,UAAU,EAAE;oBACR,aAAa,EAAE,UAAU,KAAK,CAAC,WAAW,EAAE;iBAC/C;aACJ,CAAC,CAAC;SACN;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC/B;CACJ,CAAA;;YAhB8C,qBAAqB;;AAFvD,eAAe;IAD3B,UAAU,EAAE;qCAGkC,qBAAqB;GAFvD,eAAe,CAkB3B;;ICfY,gBAAgB,GAA7B,MAAa,gBAAgB;IAIzB,YAAoB,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;KAAK;IAE5C,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5B,UAAU,CAAC,CAAO,GAAQ;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,KAAK,GAAQ,IAAI,CAAC;YAEtB,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,CAAC,KAAK,YAAY,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;gBAExG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB;oBAC7C,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,iBAAiB,YAAY,iBAAiB,CAAC,EAAE;wBAC7F,KAAK,GAAG,iBAAiB,CAAC;qBAC7B;iBACJ,CAAC,CAAC;aAEN;iBAAM,IAAI,GAAG,YAAY,iBAAiB,EAAE;gBACzC,KAAK,GAAG,GAAG,CAAC;aACf;YAED,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAC5E,CAAA,CAAC,CACyB,CAAC;KACnC;IAEa,cAAc,CAAC,GAAQ;;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;gBAC/B,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC;gBACrD,MAAM,QAAQ,GAAgB,GAAG,CAAC,KAAK,CAAC,QAAuB,CAAC;gBAEhE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;oBAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,uBAAuB;4BACxC,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC,EAAE;wBACpH,KAAK,GAAG,yCAAyC,CAAC;qBACrD;yBAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,uBAAuB;4BAC/C,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,EAAE;wBACpG,KAAK,GAAG,gCAAgC,CAAC;qBAC5C;yBAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,uBAAuB;4BAC/C,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,EAAE;wBACpG,KAAK,GAAG,gCAAgC,CAAC;qBAC5C;yBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;wBACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;wBAC7E,OAAO;qBACV;yBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,EAAE;wBAC3C,KAAK,GAAG,oBAAoB,CAAC;wBAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC;qBACtD;yBAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;wBAClD,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;qBACpD;yBAAM;wBACH,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;qBAC5B;iBACJ;qBAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;oBAC1B,KAAK,GAAG,cAAc,CAAC;iBAC1B;qBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBAC7E,OAAO;iBACV;gBAED,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;KAAA;IAEa,UAAU,CAAC,GAAQ;;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;gBAC/B,IAAI;oBACA,IAAI,iBAAiB,GAAsB,IAAI,CAAC;oBAChD,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE,CAAC;oBAC5C,MAAM,CAAC,MAAM,GAAG,CAAC,CAAQ;wBACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAO,CAAC,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;wBAClD,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;4BACtC,KAAK,EAAE,MAAM;4BACb,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,UAAU,EAAE,GAAG,CAAC,UAAU;4BAC1B,GAAG,EAAE,GAAG,CAAC,GAAG;yBACf,CAAC,CAAC;wBACH,OAAO,CAAC,iBAAiB,CAAC,CAAC;qBAC9B,CAAC;oBACF,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBAChC;gBAAC,OAAO,CAAC,EAAE;oBACR,MAAM,CAAC,IAAI,CAAC,CAAC;oBACb,UAAU,CAAC,CAAC,CAAC,CAAC;iBACjB;aACJ,CAAC,CAAC;SACN;KAAA;CAEJ,CAAA;;YAtFkC,QAAQ;;AAJ9B,gBAAgB;IAD5B,UAAU,EAAE;qCAKsB,QAAQ;GAJ9B,gBAAgB,CA0F5B;;IC7FY,aAAa,GAA1B,MAAa,aAAc,SAAQ,eAAe;IAE9C,YAAmB,MAAiB;QAChC,KAAK,EAAE,CAAC;QADO,WAAM,GAAN,MAAM,CAAW;KAEnC;IAED,IAAI,CAAC,MAAiB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACnD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC9C,CAAC,CAAC;KACN;CAEJ,CAAA;;YAtB8B,SAAS;;;AAF3B,aAAa;IAHzB,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAG6B,SAAS;GAF3B,aAAa,CAwBzB;;IC1BY,kBAAkB,GAA/B,MAAa,kBAAkB;IAE3B,YACY,gBAAiC,EACjC,aAA2B;QAD3B,qBAAgB,GAAhB,gBAAgB,CAAiB;QACjC,kBAAa,GAAb,aAAa,CAAc;KAClC;;;;;;;;;IAUE,oBAAoB,CAAC,QAAa,EAAE,IAAY;QACnD,MAAM,OAAO,GAAa,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACvB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACnC;KACJ;;;;;;IAOM,eAAe,CAAC,OAAe,EAAE,IAAY;QAChD,IAAI;YACA,MAAM,MAAM,GAAoB,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,GAAG,IAAI,IAAI,OAAO,MAAM,CAAC,CAAC;YAC5G,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACrD;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;KACJ;CAEJ,CAAA;;YAjCiC,eAAe;YAClB,YAAY;;;AAJ9B,kBAAkB;IAH9B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAIgC,eAAe;QAClB,YAAY;GAJ9B,kBAAkB,CAoC9B;;ACtCD;AACA,MAAa,QAAQ;IAIV,OAAO,MAAM,CAAC,IAA0B,EAAE,MAA8B,EAAE,SAAkB,KAAK;QACpG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,KAAK,GAAkB,IAAI,CAAC;YAChC,IAAI,IAAI,YAAY,IAAI,EAAE;gBACtB,KAAK,GAAG;oBACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;oBACrB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;oBACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;iBAC5B,CAAC;aACL;iBAAM;gBACH,KAAK,GAAG,IAAI,CAAC;aAChB;YAED,IAAI,OAAO,GAAW,IAAI,CAAC,WAAW,CAAC;YACvC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;gBACxC,OAAO,GAAG,WAAW,MAAM,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC;aAC9C;iBAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBAChD,OAAO,GAAG,QAAQ,MAAM,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC;aAC3C;iBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE;gBAC3C,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;aAC3B;YAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC3C;QAED,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAEO,OAAO,WAAW,CAAC,IAAmB,EAAE,MAAc;QAC1D,IAAI,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC;QAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAClE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;QAEvD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;QAEvD,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;QACrC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;QACxD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;QACxD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC;KACjB;IAEO,OAAO,eAAe,CAAC,KAAa,EAAE,SAAiB,CAAC;QAC5D,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjD;;AA9Da,oBAAW,GAAG,UAAU,CAAC;;;ICC9B,aAAa,qBAA1B,MAAa,aAAa;IAEtB,SAAS,CAAC,IAA0B,EAAE,MAA8B,EAAE,SAAkB,KAAK;QACzF,IAAI;YACA,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAChD;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAa,eAAeI,UAAS,CAAE,KAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAChH;KACJ;CAEJ,CAAA;AAVY,aAAa;IAHzB,IAAI,CAAC;QACF,IAAI,EAAE,WAAW;KACpB,CAAC;GACW,aAAa,CAUzB;;MCbY,mBAAmB;IAI5B,YACc,IAAY,EACZ,OAAe;QADf,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;QAJnB,kBAAa,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAKxD;IAEL,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACjC;IAES,GAAG,CAAC,QAAiB,EAAE,OAAgB;QAC7C,IAAI,UAAU,GAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,UAAU,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SAC5C;aAAM,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACzE,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACjD;QAED,IAAI,WAAW,GAAW,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC/B,WAAW,GAAG,IAAI,QAAQ,EAAE,CAAC;SAChC;QAED,OAAO,OAAO,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;KACxD;IAES,OAAO,CAAC,MAAmB,EAAE,OAAqB;QACxD,OAAO;YACH,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;YAChD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;SAC/C,CAAC;KACL;IAES,YAAY;QAClB,OAAO,IAAI,WAAW,EAAE,CAAC;KAC5B;IAES,WAAW;QACjB,OAAO,IAAI,UAAU,EAAE,CAAC;KAC3B;IAES,YAAY,CAAW,OAAe;QAC5C,OAAO,OAAqC,CAAC;KAChD;IAES,WAAW,CAAW,KAAa;QACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;KAC5B;CAEJ;;MC5CqB,uBAAoG,SAAQ,mBAAmB;IAEjJ,YACc,IAAY,EACZ,OAAe,EACf,WAA4B;QAEtC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAJX,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;QACf,gBAAW,GAAX,WAAW,CAAiB;KAGzC;IAED,WAAW;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;IAQM,IAAI,CAAC,MAAe,EAAE,OAAgB;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACvF,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,OAAO,CAAC,QAAmB,EAAE,OAAgB;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACjG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,MAAM,CAAC,EAAmB,EAAE,OAAgB;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;;;;;;IAOM,SAAS,CAAC,MAAkB,EAAE,OAAgB;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;aACpB;SACJ;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACjG,GAAG,CAAC,QAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,EAC3B,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,MAAM,CAAC,EAAY,EAAE,OAAgB;QACxC,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACnF,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,IAAI,CAAC,OAAgB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,OAAO,CAAC,MAAgB,EAAE,OAAgB;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC/F,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,OAAgB;QAC9D,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjC,IAAI,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,GAAG,EAAE,CAAC;SACb;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACxH,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAQM,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,IAAa,EAAE,IAAoB,EAAE,OAAgB;QACjG,IAAI,MAAM,GAAW,KAAK,CAAC;QAC3B,IAAI,KAAK,EAAE;YACP,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SACnD;aAAM;YACH,MAAM,GAAG,EAAE,CAAC;SACf;QACD,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjC,IAAI,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,GAAG,EAAE,CAAC;SACb;QACD,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7D,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;SACnD;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS,IAAI,GAAG,KAAK,UAAU,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC7I,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;;;;;;IAOM,eAAe,CAAC,EAAY,EAAE,MAA4B,EAAE,OAAgB;QAC/E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACtH,GAAG,CAAC,QAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,EAC3B,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAA;KACJ;;;;;;IAOM,kBAAkB,CAAC,MAAkB,EAAE,MAA4B,EAAE,OAAgB;QACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;aACpB;SACJ;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACxH,GAAG,CAAC,QAAQ,OAAO,IAAI,CAAC,EAAE,CAAC,EAC3B,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAA;KACJ;IAGM,QAAQ,CAAC,MAAe;QAC3B,OAAO,EAAE,CAAC;KACb;CAEJ;;IC/NY,eAAe,GAA5B,MAAa,eAAe;IAExB,iBAAiB;IAEjB,QAAQ,CAAC,IAAS,EAAE,QAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACnC;KACJ;IAED,eAAe,CAAC,QAAa;QACzB,IAAI,CAAC,QAAQ,CACT,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACnG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CACvC,CAAC;KACL;IAED,YAAY,CAAC,IAAS,EAAE,QAAgB;QACpC,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAW,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE9E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC7C,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC3C,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACpC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACpC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACrC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC;QAC5B,iBAAiB,CAAC,MAAM,GAAG;YACvB,UAAU,CAAC;gBACP,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC1B,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC3C,EAAE,CAAC,CAAC,CAAC;SACT,CAAC;KACL;CAEJ,CAAA;;AAhDY,eAAe;IAH3B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;;GACW,eAAe,CAgD3B;;IChDY,yBAAyB,GAAtC,MAAa,yBAAyB;IAIlC;QACI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;KACzC;IAGD,GAAG,CAAC,GAAW,EAAE,KAAc;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB;IAGD,GAAG,CAAC,GAAW;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;SACjD;QACD,OAAO,IAAI,CAAC;KACf;IAED,MAAM,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB;IAED,KAAK;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;KAChB;CAEJ,CAAA;;AA1CY,yBAAyB;IADrC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;;GACtB,yBAAyB,CA0CrC;;ICjCY,eAAe,GAA5B,MAAa,eAAe;IAYxB,YACY,SAAmB,EACnB,OAAe;QADf,cAAS,GAAT,SAAS,CAAU;QACnB,YAAO,GAAP,OAAO,CAAQ;QAZnB,2BAAsB,GAA8B,IAAI,CAAC;QACzD,yBAAoB,GAAwB,IAAI,CAAC;QACjD,oBAAe,GAAmB,IAAI,CAAC;QACvC,mBAAc,GAAkB,IAAI,CAAC;QACrC,iBAAY,GAAoB,IAAI,CAAC;QACrC,eAAU,GAAc,IAAI,CAAC;QAC7B,gBAAW,GAAe,IAAI,CAAC;QAC/B,uBAAkB,GAAsB,IAAI,CAAC;QAC7C,iBAAY,GAAgB,IAAI,CAAC;KAKpC;IAEL,WAAW,MAAY;IAEvB,IAAI,qBAAqB;QACrB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;YAChD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;SAC/E;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;IAED,IAAI,mBAAmB;QACnB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC9C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;SACvE;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,IAAI,cAAc;QACd,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SAC7D;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAED,IAAI,aAAa;QACb,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAED,IAAI,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,SAAS;QACT,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAACP,WAAS,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAI,UAAU;QACV,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAI,MAAM;QACN,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAI,iBAAiB;QACjB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;SACnE;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAED,IAAI,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAACQ,aAAW,CAAC,CAAC;SACvD;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;CAEJ,CAAA;;YA5E0B,QAAQ;YACV,MAAM;;;AAdlB,eAAe;IAD3B,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;qCAcR,QAAQ;QACV,MAAM;GAdlB,eAAe,CAyF3B;;ICzFqB,qBAAqB,GAA3C,MAAsB,qBAAqB;IAkBvC,YACc,WAA4B,EAC5B,cAA8B;QAD9B,gBAAW,GAAX,WAAW,CAAiB;QAC5B,mBAAc,GAAd,cAAc,CAAgB;QAlBpC,aAAQ,GAAY,KAAK,CAAC;QAQ1B,wBAAmB,GAAuB,IAAI,CAAC;KAWlD;IAlBL,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IACD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAGD,IAAW,kBAAkB,CAAC,KAAyB;QACnD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KACpC;IACD,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IAOD,QAAQ;QACJ,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,eAAe;QACX,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,WAAW;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC7F;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC9F;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC9F;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KACzI;IAEM,aAAa,CAAC,UAAkB;QACnC,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAChC,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,KAAK,GAAuB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;KAC5F;IAEM,WAAW,CAAC,EAAY;QAC3B,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAC/B;IAES,UAAU,MAAY;IAEtB,eAAe,MAAY;IAE3B,SAAS,MAAY;IAErB,OAAO;QACb,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACzH;IAES,aAAa,CAAC,aAAqB,EAAE,QAAe,EAAE,qBAA8B,IAAI;QAC9F,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC3J;IAES,UAAU,CAAC,OAAmB;QACpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,cAAc,EAAE;YAC3D,gBAAgB,EAAE,KAAK;YACvB,kBAAkB,EAAE,QAAQ;YAC5B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;KACN;IAES,iBAAiB,CAAC,OAAe;QACvC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC;YAChC,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;KACN;IAES,eAAe,CAAC,OAAe;QACrC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC;YAChC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;KACN;IAES,iBAAiB,CAAC,OAAe;QACvC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC;YAChC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;KACN;IAES,cAAc,CAAC,OAAe;QACpC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC;YAChC,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;SACf,CAAC,CAAC;KACN;IAES,WAAW,CAAC,KAAU;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACnC,KAAK,GAAG,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;SACnF;QACD,IAAI,KAAK,YAAY,KAAK,EAAE;YACxB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,KAAK,CAAC;KACf;IAEM,oBAAoB,CAAC,KAAa,EAAE,iBAA0B,KAAK;QACtE,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;QAChD,MAAM,QAAQ,GAAa,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzE,MAAM,aAAa,GAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvF,IAAI,cAAc,EAAE;YAChB,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC9F;aAAM;YACH,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACzF;KACJ;CAEJ,CAAA;;YA/H8B,eAAe;YACZ,cAAc;;AApB1B,qBAAqB;IAD1C,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;qCAoBG,eAAe;QACZ,cAAc;GApB1B,qBAAqB,CAkJ1C;;ICnJqB,yBAAyB,GAA/C,MAAsB,yBAA6D,SAAQ,qBAAqB;IAU5G,YACc,mBAA0D,EAC1D,WAA4B,EAC5B,cAA8B;QAExC,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAJzB,wBAAmB,GAAnB,mBAAmB,CAAuC;QAC1D,gBAAW,GAAX,WAAW,CAAiB;QAC5B,mBAAc,GAAd,cAAc,CAAgB;QAXpC,YAAO,GAAY,IAAI,CAAC,SAAS,EAAE,CAAC;KAc3C;IAbD,IAAW,MAAM,CAAC,KAAc;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IACD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAUD,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACrD;KACJ;IAED,eAAe;QACX,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;IAED,WAAW;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;IAES,UAAU;QAChB,IAAI;YACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,MAAM,EAAE,GAAa,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAE5D,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;gBACtB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM;oBAChE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;iBACxB,EAAE,KAAK;oBACJ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC1B,CAAC,CAAC;aACN;iBAAM;gBACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAOS,aAAa,MAAY;IAEzB,OAAO,CAAC,MAAe,KAAW;IAErC,IAAI,CAAC,MAAgB,EAAE,WAAoB,IAAI;QAClD,IAAI;YACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC3B,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAErB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI;oBACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC3D,IAAI,QAAQ,EAAE;wBACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;qBAC9D;iBACJ,EAAE,KAAK;oBACJ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC1B,CAAC,CAAC;aACN;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,MAAM,CAAC,mBAA4B,IAAI;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,gBAAgB,EAAE;YACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACzC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,mBAAmB;gBACvD,MAAM,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;aAC3E,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAC9D;KACJ;CAEJ,CAAA;;YA5FsC,uBAAuB;YAC/B,eAAe;YACZ,cAAc;;AAb1B,yBAAyB;IAD9C,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;qCAYW,uBAAuB;QAC/B,eAAe;QACZ,cAAc;GAb1B,yBAAyB,CAuG9C;;MCpHY,aAAa;IAUtB;QACI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACnB;CAEJ;;MCbY,aAAa;IAMtB,YACI,KAAa,EACb,SAAoD;QAEpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;CAEJ;;ICKqB,yBAAyB,GAA/C,MAAsB,yBAAsG,SAAQ,qBAAqB;IA0CrJ,YACc,mBAA8D,EAC9D,WAA4B,EAC5B,cAA8B;QAExC,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAJzB,wBAAmB,GAAnB,mBAAmB,CAA2C;QAC9D,gBAAW,GAAX,WAAW,CAAiB;QAC5B,mBAAc,GAAd,cAAc,CAAgB;QA3CpC,YAAO,GAAY,IAAI,CAAC;QAQxB,UAAK,GAA2B,IAAI,CAAC;QAgBrC,aAAQ,GAAqB,EAAE,CAAC;QAQhC,oBAAe,GAA6B,EAAE,CAAC;KActD;IA7CD,IAAW,MAAM,CAAC,KAAc;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IACD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAGD,IAAW,IAAI,CAAC,KAA6B;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IACD,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAGD,IAAW,iBAAiB,CAAC,KAAwB;QACjD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;IACD,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAGD,IAAW,OAAO,CAAC,KAAuB;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IACD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAGD,IAAW,cAAc,CAAC,KAA+B;QACrD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;IACD,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAUD,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACrD;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC5C;IAED,eAAe;QACX,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;IAED,WAAW;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;IAgBS,OAAO;QACb,OAAO,IAAI,aAAa,EAAW,CAAC;KACvC;IAES,gBAAgB;QACtB,OAAO,EAAE,CAAC;KACb;IAES,SAAS,CAAC,EAAa,KAAW;IAElC,qBAAqB,CAAU,GAAM;QAC3C,QACI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;aACtC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAC1D;KACL;;IAGS,aAAa;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE;YAC1C,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACrC;KACJ;IAEM,OAAO,CAAC,SAAe;QAC1B,IAAI;YACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;aAClC;;;;YAMD,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;gBAE9D,IAAI,SAAS,CAAC,IAAI,EAAE;oBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;wBAChB,IAAI,aAAa,CACb,SAAS,CAAC,IAAI,CAAC,MAAM,EACrB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CACjG;qBACJ,CAAC;iBACL;aACJ;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;aAC7B;YAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAmB,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI;gBACjF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB,EAAE,KAAK;gBACJ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;aAC1B,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,WAAW,CAAC,UAAmB;QAClC,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC9E,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;SACrE;aAAM;YACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;aAC7C;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClE,OAAO;aACV;YAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;SACrE;KACJ;IAEM,YAAY,CAAC,EAAa,EAAE,UAAmB;QAClD,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO;SACV;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC9E,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;SACtE;aAAM;YACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;aAC/C;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClE,OAAO;aACV;YAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1E;KACJ;IAEM,cAAc,CAAC,EAAa,EAAE,UAAmB,EAAE,aAAsB,IAAI;QAChF,IAAI;YACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBACvB,OAAO;aACV;YAED,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC9E,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;aACxC;iBAAM;gBACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;oBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;iBAC/C;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;oBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;oBAClE,OAAO;iBACV;gBAED,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;aACxC;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;;IAGO,eAAe,CAAC,EAAY,EAAE,aAAsB,IAAI;QAC5D,IAAI;YACA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACzC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,mBAAmB;gBACvD,MAAM,EAAE;oBACJ,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAEnB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;wBAC1D,IAAI,UAAU,EAAE;4BACZ,IAAI,CAAC,OAAO,EAAE,CAAC;yBAClB;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,iBAAiB,CAAC,MAAmB,EAAE,UAAmB,EAAE,aAAsB,IAAI;QACzF,IAAI;YACA,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACxD,OAAO;aACV;YAED,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC9E,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;aAC/C;iBAAM;gBACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;oBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;iBAC/C;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;oBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;oBAClE,OAAO;iBACV;gBAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;aAC/C;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;;IAGO,kBAAkB,CAAC,MAAkB,EAAE,aAAsB,IAAI;QACrE,IAAI;YACA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACzC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,mBAAmB;gBACvD,MAAM,EAAE;oBACJ,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;oBAEjB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;wBACxD,IAAI,UAAU,EAAE;4BACZ,IAAI,CAAC,OAAO,EAAE,CAAC;yBAClB;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,YAAY,CAAC,EAAa,EAAE,UAAmB;QAClD,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO;SACV;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC9E,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1E;aAAM;YACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;aAC7C;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClE,OAAO;aACV;YAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1E;KACJ;IAEM,kBAAkB,CAAC,EAAY,EAAE,UAAkB;QACtD,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACrC;aAAM;YACH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACrC;KACJ;IAEM,uBAAuB,CAAC,MAA4B,EAAE,EAAa,EAAE,UAAmB,EAAE,aAAsB,IAAI;QACvH,IAAI;YACA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBACvB,OAAO;aACV;YAED,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC9E,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;aACzD;iBAAM;gBACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;oBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;iBAC/C;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;oBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;oBAClE,OAAO;iBACV;gBAED,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;aACzD;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;;IAGO,wBAAwB,CAAC,MAA4B,EAAE,EAAY,EAAE,aAAsB,IAAI;QACnG,IAAI;YACA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACzC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,oBAAoB,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,GAAG,QAAQ,iBAAiB;gBAC5F,MAAM,EAAE;oBACJ,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAE3B,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;wBAClE,IAAI,UAAU,EAAE;4BACZ,IAAI,CAAC,OAAO,EAAE,CAAC;yBAClB;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,2BAA2B,CAAC,MAA4B,EAAE,MAAmB,EAAE,UAAmB,EAAE,aAAsB,IAAI;QACjI,IAAI;YACA,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACxD,OAAO;aACV;YAED,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBAC9E,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aACjE;iBAAM;gBACH,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;oBAC/E,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;iBAC/C;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;oBACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC;oBAClE,OAAO;iBACV;gBAED,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aACjE;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;;IAGO,4BAA4B,CAAC,MAA4B,EAAE,MAAkB,EAAE,aAAsB,IAAI;QAC7G,IAAI;YACA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACzC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,oBAAoB,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,GAAG,QAAQ,6BAA6B;gBACxG,MAAM,EAAE;oBACJ,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAE3B,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;wBACzE,IAAI,UAAU,EAAE;4BACZ,IAAI,CAAC,OAAO,EAAE,CAAC;yBAClB;wBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;qBAC9D,EAAE,KAAK;wBACJ,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,KAAK;QACR,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAEM,cAAc,CAAC,EAAY;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC/D;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjG,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC;aACf;YAED,OAAO,eAAe,CAAC,EAAE,CAAC;SAC7B;QAED,OAAO,EAAE,CAAC;KACb;IAEM,kBAAkB,CAAC,MAAkB;QACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC9B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;iBAC/D;aACJ;SACJ;QAED,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACrG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC;aACf;YAED,OAAO,YAAY,CAAC;SACvB;QAED,OAAO,MAAM,CAAC;KACjB;CAEJ,CAAA;;YAvdsC,uBAAuB;YAC/B,eAAe;YACZ,cAAc;;AA7C1B,yBAAyB;IAD9C,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;qCA4CW,uBAAuB;QAC/B,eAAe;QACZ,cAAc;GA7C1B,yBAAyB,CAkgB9C;;;AChfD,MAAMC,gBAAc,GAAU;IAC1B,yBAAyB;IACzB,yBAAyB;IACzB,qBAAqB;CACxB,CAAC;AAEF,MAAa,wBAAwB,GAAG;IACpC,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,YAAY;CACpB,CAAC;AA2CF,IAAa,UAAU,kBAAvB,MAAa,UAAU;IACnB,OAAO,WAAW,CAAC,QAAqB;QACpC,OAAO;YACH,QAAQ,EAAE,YAAU;YACpB,SAAS,EAAE;gBACP,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,gBAAgB,EAAE;aAClG;SACJ,CAAC;KACL;CACJ,CAAA;AATY,UAAU;IAzCtB,QAAQ,CAAC;QACN,YAAY,EAAE;YACV,cAAc;YACd,aAAa;YACbA,gBAAc;SACjB;QACD,eAAe,EAAE;YACb,cAAc;SAEjB;QACD,OAAO,EAAE;YACL,uBAAuB;YACvB,aAAa;YACb,gBAAgB;YAChB,YAAY;YACZ,gBAAgB,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC;YAC1E,aAAa;YACb,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,eAAe;YACf,aAAa;YACb,aAAa,CAAC,OAAO,EAAE;YACvB,iBAAiB,CAAC,OAAO,CAAC,wBAAwB,CAAC;YACnD,YAAY;SACf;QACD,OAAO,EAAE;YACL,aAAa;YACbA,gBAAc;SACjB;QACD,SAAS,EAAE;YACP,UAAU;YACV,kBAAkB;YAClB,cAAc;YACd,mBAAmB;YACnB,aAAa;YACb,gCAAgC;YAChC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE;YACtE,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE;SAC1E;KACJ,CAAC;GACW,UAAU,CAStB;;IC5GW,aAGX;AAHD,WAAY,aAAa;IACrB,8BAAa,CAAA;IACb,gCAAe,CAAA;CAClB,EAHW,aAAa,KAAb,aAAa,QAGxB;;ICSY,SAAS,GAAtB,MAAa,SAAS;IAElB,YAAoB,MAAc,EAAU,qBAAsD;QAA9E,WAAM,GAAN,MAAM,CAAQ;QAAU,0BAAqB,GAArB,qBAAqB,CAAiC;KACjG;IAED,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACjE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CACxC,GAAG,CAAC,KAAK;gBACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAChD,OAAO,IAAI,CAAC;iBACf;qBAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAClC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;iBAC5C;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO,KAAK,CAAC;aAChB,CAAC,CACL,CAAC;SACL;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,gBAAgB,CAAC,KAA6B,EAAE,KAA0B;QACtE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACzC;CACJ,CAAA;;YAxB+B,MAAM;YAAiC,qBAAqB;;;AAF/E,SAAS;IAHrB,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAG8B,MAAM,EAAiC,qBAAqB;GAF/E,SAAS,CA0BrB;;ICxBY,eAAe,GAA5B,MAAa,eAAe;IAExB,YAAoB,MAAc,EAAU,qBAAsD;QAA9E,WAAM,GAAN,MAAM,CAAQ;QAAU,0BAAqB,GAArB,qBAAqB,CAAiC;KAAK;IAEvG,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACjE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CACxC,GAAG,CAAC,KAAK;gBACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC;wBAC1C,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;oBAClH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;oBACrC,OAAO,KAAK,CAAC;iBAChB;gBACD,OAAO,IAAI,CAAC;aACf,CAAC,CACL,CAAC;SACL;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,YAAY,CAAC,IAAS,EAAE,UAAkB;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;KACtF;IAED,aAAa,CAAC,QAAmB,EAAE,GAAW;QAC1C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YACzB,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;gBACrC,OAAO,IAAI,CAAC;aACf;iBAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;aACjD;SACJ;QACD,OAAO,KAAK,CAAC;KAChB;IAED,gBAAgB,CAAC,KAA6B,EAAE,KAA0B;QACtE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACzC;CAEJ,CAAA;;YAtC+B,MAAM;YAAiC,qBAAqB;;;AAF/E,eAAe;IAH3B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAG8B,MAAM,EAAiC,qBAAqB;GAF/E,eAAe,CAwC3B;;IC1CY,WAAW,GAAxB,MAAa,WAAW;IAEpB,YAAoB,MAAc,EAAU,qBAAsD;QAA9E,WAAM,GAAN,MAAM,CAAQ;QAAU,0BAAqB,GAArB,qBAAqB,CAAiC;KACjG;IAED,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACjE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CACxC,GAAG,CAAC,KAAK;gBACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBACpC,OAAO,KAAK,CAAC;iBAChB;gBACD,OAAO,IAAI,CAAC;aACf,CAAC,CACL,CAAC;SACL;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,gBAAgB,CAAC,KAA6B,EAAE,KAA0B;QACtE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACzC;CACJ,CAAA;;YAtB+B,MAAM;YAAiC,qBAAqB;;;AAF/E,WAAW;IAHvB,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAG8B,MAAM,EAAiC,qBAAqB;GAF/E,WAAW,CAwBvB;;MCpCqB,aAAa;CAIlC;;MCAY,QAAS,SAAQ,aAAa;IAcvC;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;CAEJ;;MCrBY,QAAS,SAAQ,WAAW;CAMxC;;MCHY,SAAmB,SAAQ,WAAW;CA8ClD;;MChDY,SAAU,SAAQ,WAAW;CAUzC;;MCXY,eAAe;IAMxB,YAAY,sBAAgD,KAAK,EAAE,wBAA+B,EAAE;QAChG,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;KACjD;CAEJ;;MCVY,OAAQ,SAAQ,WAAW;IAuBpC;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;CAEJ;;MC1BY,cAAe,SAAQ,WAAW;IA8B3C,YACI,IAAY,EACZ,QAAgB,EAChB,KAAU,EACV,QAAiB,EACjB,QAAiB,EACjB,OAAgB,EAChB,KAAkC,EAClC,UAAuC,EACvC,WAAwC,EACxC,KAAa,EACb,QAA0B,EAC1B,cAAgC,EAChC,WAAmB,EACnB,MAAoC;QAEpC,KAAK,EAAE,CAAC;QAtCZ,aAAQ,GAAG,KAAK,CAAC;QAEjB,aAAQ,GAAG,KAAK,CAAC;QAEjB,YAAO,GAAG,IAAI,CAAC;QAmCX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;CAEJ;;MClEY,QAA6B,SAAQ,WAAW;CAU5D;;ICbW,qBAcX;AAdD,WAAY,qBAAqB;IAE/B,8CAAqB,CAAA;IACrB,8CAAqB,CAAA;IACrB,sDAA6B,CAAA;IAC7B,wEAA+C,CAAA;IAC/C,gDAAuB,CAAA;IACvB,kEAAyC,CAAA;IACzC,sCAAa,CAAA;IACb,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;IACvB,8CAAqB,CAAA;IACrB,kCAAS,CAAA;CAEV,EAdW,qBAAqB,KAArB,qBAAqB,QAchC;;ICdW,yBAKX;AALD,WAAY,yBAAyB;IAEnC,wCAAW,CAAA;IACX,0CAAa,CAAA;CAEd,EALW,yBAAyB,KAAzB,yBAAyB,QAKpC;;ICLW,YAIX;AAJD,WAAY,YAAY;IACpB,+BAAe,CAAA;IACf,2CAA2B,CAAA;IAC3B,6BAAa,CAAA;CAChB,EAJW,YAAY,KAAZ,YAAY,QAIvB;;ICJW,eAOX;AAPD,WAAY,eAAe;IAEvB,kDAA+B,CAAA;IAC/B,yDAA4B,CAAA;IAC5B,qCAAkB,CAAA;IAClB,gCAAa,CAAA;CAEhB,EAPW,eAAe,KAAf,eAAe,QAO1B;;MCLY,gBAAiB,SAAQ,aAAa;CAIlD;;MCJY,UAAW,SAAQ,aAAa;IAA7C;;QAIE,SAAI,GAAG,IAAI,CAAC;QAEZ,WAAM,GAAG,IAAI,CAAC;QAEd,SAAI,GAAG,IAAI,CAAC;QAEZ,WAAM,GAAG,IAAI,CAAC;KAEf;CAAA;;MCXY,IAAK,SAAQ,aAAa;IAMrC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;CAEF;;MCFqB,mBAAkE,SAAQ,eAAe;IAE3G,YACc,IAAY,EACZ,IAAgB;QAE1B,KAAK,EAAE,CAAC;QAHE,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAY;KAG7B;IAED,WAAW;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;IAES,GAAG,CAAC,IAAa;QACvB,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;KAC9C;IAED,MAAM,CAAC,EAAmB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACxD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,IAAI,CAAC,MAAU;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACjD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,cAAc,CAAC,IAAY,EAAE,IAAY;QACrC,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjC,IAAI,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,GAAG,EAAE,CAAC;SACb;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC7F,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;;;;;;;;;IAUD,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE,IAAuD;QAC/G,IAAI,MAAM,GAAW,KAAK,CAAC;QAC3B,IAAI,KAAK,EAAE;YACP,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SACnD;aAAM;YACH,MAAM,GAAG,EAAE,CAAC;SACf;QACD,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;YACjC,IAAI,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,GAAG,EAAE,CAAC;SACb;QACD,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAChE,KAAK,GAAG,SAAS,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;SACtD;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS,IAAI,GAAG,KAAK,UAAU,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAClH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;CAEJ;;MC9FqB,mBAAkE,SAAQ,mBAAyB;IAMrH,YACI,IAAY,EACZ,IAAgB;QAEhB,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;IAED,IAAI,CAAC,MAAS;QACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,OAAO,CAAC,QAAa;QACjB,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,MAAM,CAAC,EAAmB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,SAAS,CAAC,QAAa;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAED,QAAQ,CAAC,MAAS,KAAW;CAEhC;;ACjDD;AACA,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,UAAwB,UAAmB;IACzE,IAAI,EAAE,GAAe;QACjB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;QACxL,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QAChG,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;QAC/H,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,CAAC;KAC7Q,CAAC;IAEF,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,IAAI,CAAC,GAAG,MAAM,CAAC;IACf,IAAI,CAAC,GAAG,SAAS,CAAC;IAClB,IAAI,EAAE,CAAC;IAEP,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5E,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE;YACnI,SAAS;SACZ;QAED,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBACjB,SAAS;aACZ;YAED,CAAC,GAAG,GAAG,GAAG,EAAE;oBACJ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;mBACrB,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAEhG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAChG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC9H;QAED,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhJ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAC3J;IAED,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACpB,CAAA;;AC3CD;AACA,MAAa,YAAY;IAEd,OAAO,SAAS,CAAC,KAAa,EAAE,UAAmB,EAAE,SAAmB;QAC3E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,SAAS;kBACV,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC;kBACtC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;SACvD;QAED,OAAO,UAAU,CAAC,KAAK,CAAC;KAC3B;IAEM,OAAO,uBAAuB,CAAC,KAAa,EAAE,aAAsB,IAAI;QAC3E,MAAM,cAAc,GAAW,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAW,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,OAAO,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;KACtD;CAEJ;;ACnBD;AACA,MAAa,YAAY;IAEd,OAAO,WAAW,CAAC,KAAa;QACnC,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,EAAE,CAAC;SACb;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KACnC;IAEM,OAAO,UAAU,CAAC,GAAW;QAChC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC;SAChB;QAED,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;eACd,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa;eACrB,GAAG,KAAK,aAAa,EAAE;YAC1B,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SACpC;QACD,IAAI,GAAG,GAAW,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;QAElC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;YAC1B,GAAG,GAAG,CAAC,CAAC;SACX;QAED,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SAChB;QAED,GAAG,GAAG,CAAC,CAAC;QACR,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACjC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SACpC;QACD,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;QAEtB,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;YAC1B,GAAG,GAAG,CAAC,CAAC;SACX;QAED,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,WAAW,CAAC,IAAY;QAClC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;eACrB,IAAI,CAAC,MAAM,KAAK,EAAE;eAClB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB;eACzB,IAAI,KAAK,gBAAgB,EAAE;YAC9B,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,MAAM,GAAW,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,IAAI,GAAG,GAAW,MAAM,GAAG,CAAC,CAAC;QAE7B,KAAK,IAAI,CAAC,GAAW,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAC3C,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,GAAG,GAAG,CAAC,CAAC;aACX;SACJ;QACD,IAAI,SAAS,GAAW,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QACzD,IAAI,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACjC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpC,GAAG,GAAG,CAAC,CAAC;QACR,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAW,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAC3C,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,GAAG,GAAG,CAAC,CAAC;aACX;SACJ;QACD,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QAE7C,IAAI,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACjC,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,wBAAwB,CAAC,YAA0B,EAAE,iBAAyB;QACxF,IAAI,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YAC3E,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,iBAAiB,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;YACrD,OAAO,IAAI,CAAC;SACf;aAAM;YACH,IAAI,YAAY,KAAK,IAAI,EAAE;gBACvB,MAAM,MAAM,GAAWC,WAAyB,CAAC,iBAAiB,CAAC,CAAC;gBACpE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACjC;iBAAM;gBACH,OAAOC,SAAuB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;aACnE;SACJ;KACJ;IAEM,OAAO,UAAU,CAAC,GAAW;QAChC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC;SAChB;QAED,OAAOC,UAAwB,CAAC,GAAG,CAAC,CAAC;KACxC;IAEO,OAAO,SAAS,CAAC,EAAU;QAC/B,MAAM,MAAM,GAAW,EAAE,CAAC,MAAM,CAAC;QACjC,MAAM,QAAQ,GAAW,MAAM,GAAG,CAAC,CAAC;QACpC,IAAI,MAAM,GAAW,MAAM,CAAC;QAC5B,MAAM,IAAI,GAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;;QAE/C,IAAI,GAAG,GAAW,CAAC,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;YACzB,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;YACpC,MAAM,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAW,GAAG,GAAG,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAW,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,MAAM,GAAW,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE;YACxD,MAAM,GAAG,CAAC,CAAC;SACd;QAED,IAAI,GAAG,KAAK,EAAE,EAAE;YACZ,GAAG,GAAG,MAAM,CAAC;SAChB;aAAM,IAAI,GAAG,KAAK,EAAE,EAAE;YACnB,GAAG,GAAG,CAAC,CAAC;SACX;QAED,MAAM,KAAK,GAAW,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,GAAG,KAAK,KAAK,CAAC;KACxB;CAEJ;;ACpLD;AACA,MAAa,SAAS;IAEX,OAAO,OAAO,CAAC,KAAa;QAC/B,MAAM,KAAK,GAAW,sEAAsE,CAAC;QAC7F,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBAClB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;mBACtB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;mBACtB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;mBACvB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;mBACrB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;KACvC;CAEJ;;ACpBD;AACA,MAAa,SAAS;IAEX,OAAO,gBAAgB,CAAC,KAAa;QACxC,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,EAAE,CAAC;SACb;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KACnC;IAEM,OAAO,OAAO,CAAC,WAAmB,EAAE,KAAyB,EAAE,UAAgC,IAAI;QACtG,IAAI,aAA+C,CAAC;QAEpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAClC,MAAM,YAAY,GAAGC,0BAAmC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,YAAY,EAAE;gBACd,aAAa,GAAG,YAAY,CAAC;aAChC;SACJ;aAAM;YACH,aAAa,GAAGC,gBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC7D;QAED,IAAI,aAAa,EAAE;YACf,MAAM,eAAe,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;YACvD,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAC9C;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;SACzE;KACJ;IAEM,OAAO,SAAS,CAAC,WAAmB,EAAE,UAAgC,IAAI;QAC7E,IAAI;YACA,MAAM,YAAY,GAAGD,0BAAmC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,YAAY,EAAE;gBACd,OAAO,YAAY,CAAC,cAAc,EAAE,CAAC;aACxC;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACnD;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9E;KACJ;IAEM,OAAO,MAAM,CAAC,MAAc,EAAE,IAAa;QAC9C,IAAI,kBAAkB,GAAW,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,cAAc,GAAW,EAAE,CAAC;QAEhC,IACI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;aAC7B,kBAAkB,CAAC,MAAM,GAAG,EAAE,CAAC;aAC/B,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAC7E;YACE,OAAO,kBAAkB,CAAC;SAC7B;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACxC;QAED,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1F,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC9F;QAED,OAAO,cAAc,CAAC;KACzB;IAEM,OAAO,IAAI,CAAC,KAAa;QAC5B,MAAM,eAAe,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3G,IAAI,QAAQ,GAAW,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvE,IACI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;aACnB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;aACrB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACzD;YACE,OAAO,IAAI,CAAC;SACf;QAED,MAAM,YAAY,GAAY,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1F,IAAI,YAAY,EAAE;YACd,OAAO,eAAe,CAAC;SAC1B;QAED,QAAQ,QAAQ,CAAC,MAAM;YACnB,KAAK,CAAC,EAAE,OAAO,WAAW,CAAC;YAC3B,KAAK,CAAC,EAAE,OAAO,aAAa,CAAC;YAC7B,KAAK,EAAE,EAAE,OAAO,gBAAgB,CAAC;YACjC,KAAK,EAAE,EAAE,OAAO,kBAAkB,CAAC;YACnC,KAAK,EAAE,EAAE,OAAO,mBAAmB,CAAC;YACpC,SAAS,OAAO,IAAI,CAAC;SACxB;KACJ;IAEM,OAAO,UAAU,CAAC,WAAmB,EAAE,UAAgC,IAAI;QAC9E,IAAI;YACA,MAAM,YAAY,GAAGA,0BAAmC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/E,OAAO,YAAY,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC;SAC3D;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,KAAK,CAAC;SAChB;KACJ;IAEM,OAAO,OAAO,CAAC,WAAmB,EAAE,UAAgC,IAAI;QAC3E,IAAI;YACA,MAAM,YAAY,GAAGA,0BAAmC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/E,OAAO,YAAY,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;SACxD;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,KAAK,CAAC;SAChB;KACJ;IAEM,OAAO,OAAO,CAAC,WAAmB,EAAE,UAAgC,IAAI;QAC3E,IAAI;YACA,MAAM,YAAY,GAAGA,0BAAmC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/E,OAAO,YAAY,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;SACvD;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC;SACf;KACJ;IAEM,OAAO,OAAO,CAAC,YAAoB,EAAE,YAAoB,EAAE,UAAgC,IAAI;QAClG,IAAI;YACA,MAAM,aAAa,GAAGA,0BAAmC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACjF,MAAM,aAAa,GAAGA,0BAAmC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACjF,IAAI,aAAa,IAAI,aAAa,EAAE;gBAChC,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aAC/C;iBAAM;gBACH,OAAO,KAAK,CAAC;aAChB;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,KAAK,CAAC;SAChB;KACJ;CAEJ;;ACnID;AACA,MAAa,kBAAkB;IAgC3B,YAAY,yBAAqD;QAxBzD,cAAS,GAAG,KAAK,CAAC;QAElB,cAAS,GAAG,KAAK,CAAC;QAElB,aAAQ,GAAG,IAAI,CAAC;QAQhB,WAAM,GAAG,cAAc,CAAC;QAa5B,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;KAC/D;IAEM,OAAO,QAAQ,CAAC,yBAAqD;QACxE,OAAO,IAAI,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;KAC5D;IAEM,IAAI,CAAC,IAAS;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAa;QACzB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;KACf;IAEM,KAAK,CAAC,KAAU;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAiB;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAiB;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,CAAC,OAAgB;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;KACf;IAEM,KAAK,CAAC,KAAsB;QAC/B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;KACf;IAEM,UAAU,CAAC,UAA2B;QACzC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;KACf;IAEM,WAAW,CAAC,WAA4B;QAC3C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;KACf;IAEM,KAAK,CAAC,KAAa;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,aAA2C;QAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU;YACnE,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBAC/B,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACxC;YACD,OAAO,MAAM,CAAC;SACjB,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAA0B;QACtC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,cAAgC;QAClD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,OAAO,IAAI,CAAC;KACf;IAEM,WAAW,CAAC,WAAmB;QAClC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,OAAO,IAAI,CAAC;KACf;IAEM,MAAM,CAAC,MAAoC;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;KACf;IAEM,KAAK;QACR,OAAO,IAAI,cAAc,CACrB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACf,CAAC;KACL;CAEJ;;ACpJD;AACA,MAAa,aAAa;IAKf,OAAO,GAAG,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvC;IAEM,OAAO,GAAG,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvC;;;AARc,0BAAY,GAAoB,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;MCGhF,KAAK,GAAY,OAAO,CAAC;AACtC,MAAa,IAAI,GAAW,MAAM,CAAC;AACnC,MAAa,IAAI,GAAW,MAAM,CAAC;AAEnC,SAAgB,cAAc,CAAU,MAAc,EAAE,WAA4B;IAChF,IAAI,CAAE,OAAe,CAAC,WAAW,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;KAClF;IACD,OAAQ,OAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;CAC3E;AAED,SAAgB,aAAa;IACzB,OAAO,CAAC,MAAc,EAAE,WAAoB;QACxC,MAAM,KAAK,GAAY,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAa,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;;;;;;;;;;QAY/D,MAAM,MAAM,GAAG;YACX,MAAM,OAAO,GAAsB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,WAAW,GAAQ,IAAI,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC7B,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;aACjC;iBAAM;gBACH,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC1C;YAED,OAAO,CAAC,OAAO,GAAG,UAAU,GAAG,IAAW;gBACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtC,QAAQ,CAAC,WAAW,CAAC,GAAGE,iBAAe,CAAC,QAAQ,CAAC,CAAC;gBAClD,OAAO,QAAQ,CAAC;aACnB,CAAA;SACJ,CAAC;QAEF,KAAK;cACC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAA;aAC9E,CAAC;cACA,MAAM,EAAE,CAAC;KAClB,CAAC;CACL;;ICvDW,qBAGX;AAHD,WAAY,qBAAqB;IAC7B,oCAAW,CAAA;IACX,sCAAa,CAAA;CAChB,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;;MCDY,uBAAuB;CAanC;;MCbqB,iBAAiB;CAStC;;MCXY,iBAAiB;IAM1B,YAAY,WAAmB,EAAE,GAAM;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAClB;IAED,IAAW,WAAW,CAAC,WAAmB;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACnC;IACD,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAW,GAAG,CAAC,GAAM;QACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KACnB;IACD,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;CAEJ;;MCvBqB,eAAe;CASpC;;MCXY,aAAa;IAWtB,YACI,SAAkB,EAClB,QAAiB,EACjB,MAAe;QAEf,IAAI,SAAS,IAAI,SAAS,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;QACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC5B;QACD,IAAI,MAAM,IAAI,MAAM,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACxB;KACJ;;IAGD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAW,SAAS,CAAC,KAAa;QAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;;IAGD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;;IAGD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAW,MAAM,CAAC,KAAa;QAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;CAEJ;;IC/BY,cAAc,GAA3B,MAAa,cAAc;IAGvB,YAAoB,OAAgB,EAAU,QAAkB;QAA5C,YAAO,GAAP,OAAO,CAAS;QAAU,aAAQ,GAAR,QAAQ,CAAU;KAC/D;IAED,IAAI,CAAI,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAmB;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,IAAI,UAAU,CAAI,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEzE,OAAO,UAAU,CAAC;KACrB;IAEO,gBAAgB,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC;QACnD,OAAO,IAAI,aAAa,CAAC;YACrB,WAAW,EAAE,IAAI;YACjB,KAAK;YACL,MAAM;YACN,aAAa,EAAE,kBAAkB;YACjC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC;YACxD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;SAC7D,CAAC,CAAC;KACN;IAEO,kBAAkB,CAAC,MAAgC,EAAE,KAAkB;;QAE3E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC;QACjG,IAAI,KAAK,EAAE;YACP,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;iBACzB,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,KAAK,CAAC;iBACzB,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;aACzB,mBAAmB,CAAC,MAAM,CAAC;aAC3B,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;aAClC,sBAAsB,CAAC,KAAK,CAAC;aAC7B,QAAQ,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,cAAc,CAAC,UAAsB,EAAE,KAAiB;QACpD,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;aAC5D,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC;aACzB,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;KACpC;IAED,cAAc,CAAC,UAAsB,EAAE,QAAkB;QACrD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC/C;IAEO,YAAY;QAChB,OAAO;YACH;gBACI,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;aAClB;YACD;gBACI,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;aAClB;SACJ,CAAC;KACL;CAEJ,CAAA;;YApEgC,OAAO;YAAoB,QAAQ;;;AAHvD,cAAc;IAH1B,UAAU,CAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;qCAI+B,OAAO,EAAoB,QAAQ;GAHvD,cAAc,CAuE1B;;ACrFA,CAAC;;MCFW,gBAAgB;IAiDzB,YACI,IAAY,EACZ,QAAgB,EAChB,KAAkE,EAClE,QAAiB,EACjB,OAAgB,EAChB,YAAqB,EACrB,UAAkB,EAClB,YAAoB,EACpB,YAAoB,EACpB,YAAoB,EACpB,YAAoB,EACpB,YAAoB,EACpB,QAAgB,EAChB,QAAgB,EAChB,aAAqB,EACrB,KAAkC,EAClC,YAA8B,EAC9B,cAAgC,EAChC,WAAmB,EACnB,UAAe,EACf,IAAwB,EACxB,MAA0B;QA/DtB,cAAS,GAAY,KAAK,CAAC;QAE3B,aAAQ,GAAY,IAAI,CAAC;QAEzB,kBAAa,GAAY,KAAK,CAAC;QA6DnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IACD,IAAW,IAAI,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IACD,IAAW,KAAK,CAAC,KAAkE;QAC/E,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,KAAc;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAc;QAClC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAW,UAAU,CAAC,KAAa;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAa;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAa;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAa;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAa;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAa;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAW,aAAa,CAAC,KAAa;QAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IACD,IAAW,KAAK,CAAC,KAAkC;QAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IACD,IAAW,YAAY,CAAC,KAAuB;QAC3C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IACD,IAAW,cAAc,CAAC,KAAuB;QAC7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,WAAW,CAAC,KAAa;QAChC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAW,UAAU,CAAC,KAAU;QAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IACD,IAAW,IAAI,CAAC,KAAyB;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAW,MAAM,CAAC,KAAyB;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;CAEJ;;MC1PY,uBAAuB;IA8ChC;QAtCQ,eAAU,GAAY,KAAK,CAAC;QAE5B,cAAS,GAAY,IAAI,CAAC;QAE1B,mBAAc,GAAY,KAAK,CAAC;QAoBhC,YAAO,GAAgC,MAAM,CAAC;KAcrC;IAEV,OAAO,QAAQ;QAClB,OAAO,IAAI,uBAAuB,EAAE,CAAC;KACxC;IAEM,IAAI,CAAC,IAAY;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAgB;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,OAAO,IAAI,CAAC;KACf;IAEM,KAAK,CAAC,KAAkE;QAC3E,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAiB;QAC7B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,CAAC,OAAgB;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAAqB;QACrC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,UAAU,CAAC,UAAkB;QAChC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAAoB;QACpC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAAoB;QACpC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAAoB;QACpC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAAoB;QACpC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAAoB;QACpC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAgB;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAAgB;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,CAAC,aAAqB;QACtC,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;QACrC,OAAO,IAAI,CAAC;KACf;IAEM,KAAK,CAAC,KAAkC;QAC3C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,YAA8B;QAC9C,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,cAAgC;QAClD,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;QACvC,OAAO,IAAI,CAAC;KACf;IAEM,WAAW,CAAC,WAAmB;QAClC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,OAAO,IAAI,CAAC;KACf;IAEM,UAAU,CAAC,UAAkB;QAChC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,CAAC,IAAwB;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;KACf;IAEM,MAAM,CAAC,MAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,OAAO,IAAI,CAAC;KACf;IAEM,KAAK;QACR,OAAO,IAAI,gBAAgB,CACvB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,CAChB,CAAC;KACL;CAEJ;;AClMD;;;;;;;AAWA,MAAa,uBAAuB,GAAmB;IACnD,KAAK,EAAE;QACH,SAAS,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACL,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;QAChE,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;QACnD,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;QACjE,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;KACzD;CACJ;;ACrBD;;GAEG;;;;"}
|