mis-crystal-design-system 2.3.17 → 2.3.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.js +12 -12
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js +2 -2
- package/bundles/mis-crystal-design-system-datepicker_v2.umd.min.js.map +1 -1
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +61 -23
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +2 -2
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +1 -1
- package/esm2015/datepicker_v2/tz-dp-container/tz-dp-container.component.js +12 -12
- package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +74 -37
- package/fesm2015/mis-crystal-design-system-datepicker_v2.js +11 -11
- package/fesm2015/mis-crystal-design-system-datepicker_v2.js.map +1 -1
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +72 -35
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +1 -1
- package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +1 -1
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +8 -2
- package/package.json +1 -1
- package/bundles/mis-crystal-design-system-datepicker.umd.js +0 -13916
- package/bundles/mis-crystal-design-system-datepicker.umd.js.map +0 -1
- package/bundles/mis-crystal-design-system-datepicker.umd.min.js +0 -68
- package/bundles/mis-crystal-design-system-datepicker.umd.min.js.map +0 -1
- package/datepicker/base/bs-datepicker-container.d.ts +0 -44
- package/datepicker/bs-datepicker-inline.component.d.ts +0 -61
- package/datepicker/bs-datepicker-inline.config.d.ts +0 -3
- package/datepicker/bs-datepicker-input.directive.d.ts +0 -30
- package/datepicker/bs-datepicker.component.d.ts +0 -123
- package/datepicker/bs-datepicker.config.d.ts +0 -140
- package/datepicker/bs-datepicker.module.d.ts +0 -4
- package/datepicker/bs-daterangepicker-inline.component.d.ts +0 -61
- package/datepicker/bs-daterangepicker-inline.config.d.ts +0 -6
- package/datepicker/bs-daterangepicker-input.directive.d.ts +0 -30
- package/datepicker/bs-daterangepicker.component.d.ts +0 -115
- package/datepicker/bs-daterangepicker.config.d.ts +0 -4
- package/datepicker/bs-locale.service.d.ts +0 -10
- package/datepicker/date-formatter.d.ts +0 -3
- package/datepicker/datepicker-animations.d.ts +0 -3
- package/datepicker/datepicker-inner.component.d.ts +0 -75
- package/datepicker/datepicker.component.d.ts +0 -78
- package/datepicker/datepicker.config.d.ts +0 -19
- package/datepicker/datepicker.module.d.ts +0 -4
- package/datepicker/daypicker.component.d.ts +0 -14
- package/datepicker/engine/calc-days-calendar.d.ts +0 -2
- package/datepicker/engine/flag-days-calendar.d.ts +0 -17
- package/datepicker/engine/flag-months-calendar.d.ts +0 -12
- package/datepicker/engine/flag-years-calendar.d.ts +0 -12
- package/datepicker/engine/format-days-calendar.d.ts +0 -4
- package/datepicker/engine/format-months-calendar.d.ts +0 -2
- package/datepicker/engine/format-years-calendar.d.ts +0 -4
- package/datepicker/engine/view-mode.d.ts +0 -2
- package/datepicker/index.d.ts +0 -1
- package/datepicker/mis-crystal-design-system-datepicker.d.ts +0 -24
- package/datepicker/mis-crystal-design-system-datepicker.metadata.json +0 -1
- package/datepicker/models/index.d.ts +0 -102
- package/datepicker/monthpicker.component.d.ts +0 -11
- package/datepicker/package.json +0 -11
- package/datepicker/public_api.d.ts +0 -26
- package/datepicker/reducer/_defaults.d.ts +0 -2
- package/datepicker/reducer/bs-datepicker.actions.d.ts +0 -43
- package/datepicker/reducer/bs-datepicker.effects.d.ts +0 -38
- package/datepicker/reducer/bs-datepicker.reducer.d.ts +0 -3
- package/datepicker/reducer/bs-datepicker.state.d.ts +0 -43
- package/datepicker/reducer/bs-datepicker.store.d.ts +0 -5
- package/datepicker/sub-components/chronos/create/check-overflow.d.ts +0 -2
- package/datepicker/sub-components/chronos/create/clone.d.ts +0 -1
- package/datepicker/sub-components/chronos/create/date-from-array.d.ts +0 -2
- package/datepicker/sub-components/chronos/create/from-anything.d.ts +0 -4
- package/datepicker/sub-components/chronos/create/from-array.d.ts +0 -2
- package/datepicker/sub-components/chronos/create/from-object.d.ts +0 -2
- package/datepicker/sub-components/chronos/create/from-string-and-array.d.ts +0 -2
- package/datepicker/sub-components/chronos/create/from-string-and-format.d.ts +0 -4
- package/datepicker/sub-components/chronos/create/from-string.d.ts +0 -4
- package/datepicker/sub-components/chronos/create/local.d.ts +0 -3
- package/datepicker/sub-components/chronos/create/parsing-flags.d.ts +0 -2
- package/datepicker/sub-components/chronos/create/parsing.types.d.ts +0 -64
- package/datepicker/sub-components/chronos/create/valid.d.ts +0 -6
- package/datepicker/sub-components/chronos/duration/bubble.d.ts +0 -4
- package/datepicker/sub-components/chronos/duration/constructor.d.ts +0 -21
- package/datepicker/sub-components/chronos/duration/create.d.ts +0 -8
- package/datepicker/sub-components/chronos/duration/humanize.d.ts +0 -5
- package/datepicker/sub-components/chronos/duration/valid.d.ts +0 -2
- package/datepicker/sub-components/chronos/format/format.d.ts +0 -11
- package/datepicker/sub-components/chronos/format.d.ts +0 -5
- package/datepicker/sub-components/chronos/i18n/ar.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/bg.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/ca.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/cs.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/da.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/de.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/en-gb.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/es-do.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/es-us.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/es.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/et.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/fi.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/fr.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/gl.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/he.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/hi.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/hr.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/hu.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/id.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/it.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/ja.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/ka.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/kk.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/ko.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/lt.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/lv.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/mn.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/nb.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/nl-be.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/nl.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/pl.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/pt-br.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/ro.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/ru.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/sk.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/sl.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/sq.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/sv.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/th-be.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/th.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/tr.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/uk.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/vi.d.ts +0 -2
- package/datepicker/sub-components/chronos/i18n/zh-cn.d.ts +0 -2
- package/datepicker/sub-components/chronos/index.d.ts +0 -1
- package/datepicker/sub-components/chronos/locale/calendar.d.ts +0 -8
- package/datepicker/sub-components/chronos/locale/locale.class.d.ts +0 -143
- package/datepicker/sub-components/chronos/locale/locale.defaults.d.ts +0 -11
- package/datepicker/sub-components/chronos/locale/locales.d.ts +0 -7
- package/datepicker/sub-components/chronos/moment/add-subtract.d.ts +0 -5
- package/datepicker/sub-components/chronos/moment/calendar.d.ts +0 -15
- package/datepicker/sub-components/chronos/moment/diff.d.ts +0 -3
- package/datepicker/sub-components/chronos/moment/min-max.d.ts +0 -2
- package/datepicker/sub-components/chronos/parse/regex.d.ts +0 -22
- package/datepicker/sub-components/chronos/parse/token.d.ts +0 -5
- package/datepicker/sub-components/chronos/public_api.d.ts +0 -57
- package/datepicker/sub-components/chronos/test/chain.d.ts +0 -214
- package/datepicker/sub-components/chronos/types.d.ts +0 -36
- package/datepicker/sub-components/chronos/units/aliases.d.ts +0 -7
- package/datepicker/sub-components/chronos/units/constants.d.ts +0 -9
- package/datepicker/sub-components/chronos/units/day-of-month.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/day-of-week.d.ts +0 -20
- package/datepicker/sub-components/chronos/units/day-of-year.d.ts +0 -3
- package/datepicker/sub-components/chronos/units/hour.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/index.d.ts +0 -18
- package/datepicker/sub-components/chronos/units/millisecond.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/minute.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/month.d.ts +0 -2
- package/datepicker/sub-components/chronos/units/offset.d.ts +0 -10
- package/datepicker/sub-components/chronos/units/priorities.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/quarter.d.ts +0 -3
- package/datepicker/sub-components/chronos/units/second.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/timestamp.d.ts +0 -1
- package/datepicker/sub-components/chronos/units/timezone.d.ts +0 -3
- package/datepicker/sub-components/chronos/units/week-calendar-utils.d.ts +0 -9
- package/datepicker/sub-components/chronos/units/week-year.d.ts +0 -8
- package/datepicker/sub-components/chronos/units/week.d.ts +0 -6
- package/datepicker/sub-components/chronos/units/year.d.ts +0 -4
- package/datepicker/sub-components/chronos/utils/abs-ceil.d.ts +0 -1
- package/datepicker/sub-components/chronos/utils/abs-round.d.ts +0 -1
- package/datepicker/sub-components/chronos/utils/compare-arrays.d.ts +0 -1
- package/datepicker/sub-components/chronos/utils/date-compare.d.ts +0 -9
- package/datepicker/sub-components/chronos/utils/date-getters.d.ts +0 -18
- package/datepicker/sub-components/chronos/utils/date-setters.d.ts +0 -12
- package/datepicker/sub-components/chronos/utils/defaults.d.ts +0 -1
- package/datepicker/sub-components/chronos/utils/start-end-of.d.ts +0 -3
- package/datepicker/sub-components/chronos/utils/type-checks.d.ts +0 -12
- package/datepicker/sub-components/chronos/utils/zero-fill.d.ts +0 -1
- package/datepicker/sub-components/chronos/utils.d.ts +0 -2
- package/datepicker/sub-components/component-loader/bs-component-ref.class.d.ts +0 -5
- package/datepicker/sub-components/component-loader/component-loader.class.d.ts +0 -75
- package/datepicker/sub-components/component-loader/component-loader.factory.d.ts +0 -18
- package/datepicker/sub-components/component-loader/content-ref.class.d.ts +0 -7
- package/datepicker/sub-components/component-loader/index.d.ts +0 -1
- package/datepicker/sub-components/component-loader/listen-options.model.d.ts +0 -11
- package/datepicker/sub-components/component-loader/public_api.d.ts +0 -4
- package/datepicker/sub-components/mini-ngrx/index.d.ts +0 -1
- package/datepicker/sub-components/mini-ngrx/public_api.d.ts +0 -7
- package/datepicker/sub-components/mini-ngrx/state.class.d.ts +0 -8
- package/datepicker/sub-components/mini-ngrx/store.class.d.ts +0 -16
- package/datepicker/sub-components/positioning/index.d.ts +0 -1
- package/datepicker/sub-components/positioning/models/index.d.ts +0 -41
- package/datepicker/sub-components/positioning/modifiers/arrow.d.ts +0 -2
- package/datepicker/sub-components/positioning/modifiers/flip.d.ts +0 -2
- package/datepicker/sub-components/positioning/modifiers/index.d.ts +0 -5
- package/datepicker/sub-components/positioning/modifiers/initData.d.ts +0 -2
- package/datepicker/sub-components/positioning/modifiers/preventOverflow.d.ts +0 -2
- package/datepicker/sub-components/positioning/modifiers/shift.d.ts +0 -2
- package/datepicker/sub-components/positioning/ng-positioning.d.ts +0 -8
- package/datepicker/sub-components/positioning/positioning.service.d.ts +0 -45
- package/datepicker/sub-components/positioning/public_api.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/computeAutoPlacement.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/findCommonOffsetParent.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/getBordersSize.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getBoundaries.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/getBoundingClientRect.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/getClientRect.d.ts +0 -5
- package/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getOffsetParent.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/getOffsets.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/getOppositePlacement.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getOppositeVariation.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getOuterSizes.d.ts +0 -7
- package/datepicker/sub-components/positioning/utils/getParentNode.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getReferenceOffsets.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/getRoot.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getScroll.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getScrollParent.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/getStyleComputedProperty.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/getTargetOffsets.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/getWindowSizes.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/includeScroll.d.ts +0 -2
- package/datepicker/sub-components/positioning/utils/index.d.ts +0 -23
- package/datepicker/sub-components/positioning/utils/isBrowser.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/isFixed.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/isIE.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/isModifierEnabled.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/isNumeric.d.ts +0 -4
- package/datepicker/sub-components/positioning/utils/isOffsetContainer.d.ts +0 -1
- package/datepicker/sub-components/positioning/utils/setStyles.d.ts +0 -5
- package/datepicker/sub-components/positioning/utils/updateContainerClass.d.ts +0 -6
- package/datepicker/sub-components/tooltip/index.d.ts +0 -1
- package/datepicker/sub-components/tooltip/public_api.d.ts +0 -4
- package/datepicker/sub-components/tooltip/tooltip-container.component.d.ts +0 -14
- package/datepicker/sub-components/tooltip/tooltip.config.d.ts +0 -13
- package/datepicker/sub-components/tooltip/tooltip.directive.d.ts +0 -109
- package/datepicker/sub-components/tooltip/tooltip.module.d.ts +0 -4
- package/datepicker/sub-components/utils/decorators.d.ts +0 -1
- package/datepicker/sub-components/utils/facade/browser.d.ts +0 -23
- package/datepicker/sub-components/utils/index.d.ts +0 -1
- package/datepicker/sub-components/utils/linked-list.class.d.ts +0 -26
- package/datepicker/sub-components/utils/public_api.d.ts +0 -10
- package/datepicker/sub-components/utils/theme-provider.d.ts +0 -2
- package/datepicker/sub-components/utils/trigger.class.d.ts +0 -6
- package/datepicker/sub-components/utils/triggers.d.ts +0 -18
- package/datepicker/sub-components/utils/utils.class.d.ts +0 -4
- package/datepicker/sub-components/utils/warn-once.d.ts +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.d.ts +0 -2
- package/datepicker/themes/bs/bs-current-date-view.component.d.ts +0 -3
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +0 -14
- package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +0 -33
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +0 -11
- package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +0 -10
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +0 -9
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +0 -37
- package/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +0 -10
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +0 -23
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +0 -13
- package/datepicker/themes/bs/bs-timepicker-view.component.d.ts +0 -5
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +0 -13
- package/datepicker/utils/bs-calendar-utils.d.ts +0 -10
- package/datepicker/utils/matrix-utils.d.ts +0 -9
- package/datepicker/yearpicker.component.d.ts +0 -11
- package/esm2015/datepicker/base/bs-datepicker-container.js +0 -47
- package/esm2015/datepicker/bs-datepicker-inline.component.js +0 -132
- package/esm2015/datepicker/bs-datepicker-inline.config.js +0 -12
- package/esm2015/datepicker/bs-datepicker-input.directive.js +0 -159
- package/esm2015/datepicker/bs-datepicker.component.js +0 -238
- package/esm2015/datepicker/bs-datepicker.config.js +0 -85
- package/esm2015/datepicker/bs-datepicker.module.js +0 -101
- package/esm2015/datepicker/bs-daterangepicker-inline.component.js +0 -129
- package/esm2015/datepicker/bs-daterangepicker-inline.config.js +0 -19
- package/esm2015/datepicker/bs-daterangepicker-input.directive.js +0 -191
- package/esm2015/datepicker/bs-daterangepicker.component.js +0 -227
- package/esm2015/datepicker/bs-daterangepicker.config.js +0 -17
- package/esm2015/datepicker/bs-locale.service.js +0 -28
- package/esm2015/datepicker/date-formatter.js +0 -7
- package/esm2015/datepicker/datepicker-animations.js +0 -16
- package/esm2015/datepicker/datepicker-inner.component.js +0 -282
- package/esm2015/datepicker/datepicker.component.js +0 -140
- package/esm2015/datepicker/datepicker.config.js +0 -30
- package/esm2015/datepicker/datepicker.module.js +0 -35
- package/esm2015/datepicker/daypicker.component.js +0 -174
- package/esm2015/datepicker/engine/calc-days-calendar.js +0 -19
- package/esm2015/datepicker/engine/flag-days-calendar.js +0 -91
- package/esm2015/datepicker/engine/flag-months-calendar.js +0 -41
- package/esm2015/datepicker/engine/flag-years-calendar.js +0 -39
- package/esm2015/datepicker/engine/format-days-calendar.js +0 -29
- package/esm2015/datepicker/engine/format-months-calendar.js +0 -19
- package/esm2015/datepicker/engine/format-years-calendar.js +0 -35
- package/esm2015/datepicker/engine/view-mode.js +0 -4
- package/esm2015/datepicker/index.js +0 -2
- package/esm2015/datepicker/mis-crystal-design-system-datepicker.js +0 -25
- package/esm2015/datepicker/models/index.js +0 -9
- package/esm2015/datepicker/monthpicker.component.js +0 -87
- package/esm2015/datepicker/public_api.js +0 -26
- package/esm2015/datepicker/reducer/_defaults.js +0 -5
- package/esm2015/datepicker/reducer/bs-datepicker.actions.js +0 -132
- package/esm2015/datepicker/reducer/bs-datepicker.effects.js +0 -170
- package/esm2015/datepicker/reducer/bs-datepicker.reducer.js +0 -302
- package/esm2015/datepicker/reducer/bs-datepicker.state.js +0 -12
- package/esm2015/datepicker/reducer/bs-datepicker.store.js +0 -19
- package/esm2015/datepicker/sub-components/chronos/create/check-overflow.js +0 -30
- package/esm2015/datepicker/sub-components/chronos/create/clone.js +0 -6
- package/esm2015/datepicker/sub-components/chronos/create/date-from-array.js +0 -17
- package/esm2015/datepicker/sub-components/chronos/create/from-anything.js +0 -107
- package/esm2015/datepicker/sub-components/chronos/create/from-array.js +0 -136
- package/esm2015/datepicker/sub-components/chronos/create/from-object.js +0 -17
- package/esm2015/datepicker/sub-components/chronos/create/from-string-and-array.js +0 -38
- package/esm2015/datepicker/sub-components/chronos/create/from-string-and-format.js +0 -106
- package/esm2015/datepicker/sub-components/chronos/create/from-string.js +0 -227
- package/esm2015/datepicker/sub-components/chronos/create/local.js +0 -16
- package/esm2015/datepicker/sub-components/chronos/create/parsing-flags.js +0 -26
- package/esm2015/datepicker/sub-components/chronos/create/parsing.types.js +0 -2
- package/esm2015/datepicker/sub-components/chronos/create/valid.js +0 -42
- package/esm2015/datepicker/sub-components/chronos/duration/bubble.js +0 -47
- package/esm2015/datepicker/sub-components/chronos/duration/constructor.js +0 -130
- package/esm2015/datepicker/sub-components/chronos/duration/create.js +0 -113
- package/esm2015/datepicker/sub-components/chronos/duration/humanize.js +0 -80
- package/esm2015/datepicker/sub-components/chronos/duration/valid.js +0 -45
- package/esm2015/datepicker/sub-components/chronos/format/format.js +0 -51
- package/esm2015/datepicker/sub-components/chronos/format.js +0 -46
- package/esm2015/datepicker/sub-components/chronos/i18n/ar.js +0 -131
- package/esm2015/datepicker/sub-components/chronos/i18n/bg.js +0 -96
- package/esm2015/datepicker/sub-components/chronos/i18n/ca.js +0 -91
- package/esm2015/datepicker/sub-components/chronos/i18n/cs.js +0 -181
- package/esm2015/datepicker/sub-components/chronos/i18n/da.js +0 -50
- package/esm2015/datepicker/sub-components/chronos/i18n/de.js +0 -72
- package/esm2015/datepicker/sub-components/chronos/i18n/en-gb.js +0 -61
- package/esm2015/datepicker/sub-components/chronos/i18n/es-do.js +0 -85
- package/esm2015/datepicker/sub-components/chronos/i18n/es-us.js +0 -79
- package/esm2015/datepicker/sub-components/chronos/i18n/es.js +0 -84
- package/esm2015/datepicker/sub-components/chronos/i18n/et.js +0 -75
- package/esm2015/datepicker/sub-components/chronos/i18n/fi.js +0 -100
- package/esm2015/datepicker/sub-components/chronos/i18n/fr.js +0 -76
- package/esm2015/datepicker/sub-components/chronos/i18n/gl.js +0 -84
- package/esm2015/datepicker/sub-components/chronos/i18n/he.js +0 -98
- package/esm2015/datepicker/sub-components/chronos/i18n/hi.js +0 -124
- package/esm2015/datepicker/sub-components/chronos/i18n/hr.js +0 -62
- package/esm2015/datepicker/sub-components/chronos/i18n/hu.js +0 -104
- package/esm2015/datepicker/sub-components/chronos/i18n/id.js +0 -83
- package/esm2015/datepicker/sub-components/chronos/i18n/it.js +0 -65
- package/esm2015/datepicker/sub-components/chronos/i18n/ja.js +0 -75
- package/esm2015/datepicker/sub-components/chronos/i18n/ka.js +0 -87
- package/esm2015/datepicker/sub-components/chronos/i18n/kk.js +0 -76
- package/esm2015/datepicker/sub-components/chronos/i18n/ko.js +0 -77
- package/esm2015/datepicker/sub-components/chronos/i18n/lt.js +0 -116
- package/esm2015/datepicker/sub-components/chronos/i18n/lv.js +0 -56
- package/esm2015/datepicker/sub-components/chronos/i18n/mn.js +0 -99
- package/esm2015/datepicker/sub-components/chronos/i18n/nb.js +0 -53
- package/esm2015/datepicker/sub-components/chronos/i18n/nl-be.js +0 -81
- package/esm2015/datepicker/sub-components/chronos/i18n/nl.js +0 -80
- package/esm2015/datepicker/sub-components/chronos/i18n/pl.js +0 -126
- package/esm2015/datepicker/sub-components/chronos/i18n/pt-br.js +0 -56
- package/esm2015/datepicker/sub-components/chronos/i18n/ro.js +0 -66
- package/esm2015/datepicker/sub-components/chronos/i18n/ru.js +0 -181
- package/esm2015/datepicker/sub-components/chronos/i18n/sk.js +0 -157
- package/esm2015/datepicker/sub-components/chronos/i18n/sl.js +0 -184
- package/esm2015/datepicker/sub-components/chronos/i18n/sq.js +0 -54
- package/esm2015/datepicker/sub-components/chronos/i18n/sv.js +0 -63
- package/esm2015/datepicker/sub-components/chronos/i18n/th-be.js +0 -74
- package/esm2015/datepicker/sub-components/chronos/i18n/th.js +0 -59
- package/esm2015/datepicker/sub-components/chronos/i18n/tr.js +0 -82
- package/esm2015/datepicker/sub-components/chronos/i18n/uk.js +0 -147
- package/esm2015/datepicker/sub-components/chronos/i18n/vi.js +0 -74
- package/esm2015/datepicker/sub-components/chronos/i18n/zh-cn.js +0 -114
- package/esm2015/datepicker/sub-components/chronos/index.js +0 -2
- package/esm2015/datepicker/sub-components/chronos/locale/calendar.js +0 -9
- package/esm2015/datepicker/sub-components/chronos/locale/locale.class.js +0 -532
- package/esm2015/datepicker/sub-components/chronos/locale/locale.defaults.js +0 -40
- package/esm2015/datepicker/sub-components/chronos/locale/locales.js +0 -229
- package/esm2015/datepicker/sub-components/chronos/moment/add-subtract.js +0 -35
- package/esm2015/datepicker/sub-components/chronos/moment/calendar.js +0 -41
- package/esm2015/datepicker/sub-components/chronos/moment/diff.js +0 -70
- package/esm2015/datepicker/sub-components/chronos/moment/min-max.js +0 -38
- package/esm2015/datepicker/sub-components/chronos/parse/regex.js +0 -49
- package/esm2015/datepicker/sub-components/chronos/parse/token.js +0 -32
- package/esm2015/datepicker/sub-components/chronos/public_api.js +0 -56
- package/esm2015/datepicker/sub-components/chronos/test/chain.js +0 -711
- package/esm2015/datepicker/sub-components/chronos/types.js +0 -2
- package/esm2015/datepicker/sub-components/chronos/units/aliases.js +0 -35
- package/esm2015/datepicker/sub-components/chronos/units/constants.js +0 -11
- package/esm2015/datepicker/sub-components/chronos/units/day-of-month.js +0 -31
- package/esm2015/datepicker/sub-components/chronos/units/day-of-week.js +0 -129
- package/esm2015/datepicker/sub-components/chronos/units/day-of-year.js +0 -37
- package/esm2015/datepicker/sub-components/chronos/units/hour.js +0 -127
- package/esm2015/datepicker/sub-components/chronos/units/index.js +0 -19
- package/esm2015/datepicker/sub-components/chronos/units/millisecond.js +0 -60
- package/esm2015/datepicker/sub-components/chronos/units/minute.js +0 -23
- package/esm2015/datepicker/sub-components/chronos/units/month.js +0 -63
- package/esm2015/datepicker/sub-components/chronos/units/offset.js +0 -210
- package/esm2015/datepicker/sub-components/chronos/units/priorities.js +0 -21
- package/esm2015/datepicker/sub-components/chronos/units/quarter.js +0 -39
- package/esm2015/datepicker/sub-components/chronos/units/second.js +0 -23
- package/esm2015/datepicker/sub-components/chronos/units/timestamp.js +0 -28
- package/esm2015/datepicker/sub-components/chronos/units/timezone.js +0 -19
- package/esm2015/datepicker/sub-components/chronos/units/week-calendar-utils.js +0 -70
- package/esm2015/datepicker/sub-components/chronos/units/week-year.js +0 -101
- package/esm2015/datepicker/sub-components/chronos/units/week.js +0 -58
- package/esm2015/datepicker/sub-components/chronos/units/year.js +0 -60
- package/esm2015/datepicker/sub-components/chronos/utils/abs-ceil.js +0 -4
- package/esm2015/datepicker/sub-components/chronos/utils/abs-round.js +0 -4
- package/esm2015/datepicker/sub-components/chronos/utils/compare-arrays.js +0 -16
- package/esm2015/datepicker/sub-components/chronos/utils/date-compare.js +0 -55
- package/esm2015/datepicker/sub-components/chronos/utils/date-getters.js +0 -67
- package/esm2015/datepicker/sub-components/chronos/utils/date-setters.js +0 -75
- package/esm2015/datepicker/sub-components/chronos/utils/defaults.js +0 -11
- package/esm2015/datepicker/sub-components/chronos/utils/start-end-of.js +0 -57
- package/esm2015/datepicker/sub-components/chronos/utils/type-checks.js +0 -56
- package/esm2015/datepicker/sub-components/chronos/utils/zero-fill.js +0 -10
- package/esm2015/datepicker/sub-components/chronos/utils.js +0 -7
- package/esm2015/datepicker/sub-components/component-loader/bs-component-ref.class.js +0 -3
- package/esm2015/datepicker/sub-components/component-loader/component-loader.class.js +0 -272
- package/esm2015/datepicker/sub-components/component-loader/component-loader.factory.js +0 -32
- package/esm2015/datepicker/sub-components/component-loader/content-ref.class.js +0 -12
- package/esm2015/datepicker/sub-components/component-loader/index.js +0 -2
- package/esm2015/datepicker/sub-components/component-loader/listen-options.model.js +0 -2
- package/esm2015/datepicker/sub-components/component-loader/public_api.js +0 -5
- package/esm2015/datepicker/sub-components/mini-ngrx/index.js +0 -2
- package/esm2015/datepicker/sub-components/mini-ngrx/public_api.js +0 -3
- package/esm2015/datepicker/sub-components/mini-ngrx/state.class.js +0 -16
- package/esm2015/datepicker/sub-components/mini-ngrx/store.class.js +0 -43
- package/esm2015/datepicker/sub-components/positioning/index.js +0 -2
- package/esm2015/datepicker/sub-components/positioning/models/index.js +0 -2
- package/esm2015/datepicker/sub-components/positioning/modifiers/arrow.js +0 -56
- package/esm2015/datepicker/sub-components/positioning/modifiers/flip.js +0 -60
- package/esm2015/datepicker/sub-components/positioning/modifiers/index.js +0 -6
- package/esm2015/datepicker/sub-components/positioning/modifiers/initData.js +0 -42
- package/esm2015/datepicker/sub-components/positioning/modifiers/preventOverflow.js +0 -56
- package/esm2015/datepicker/sub-components/positioning/modifiers/shift.js +0 -22
- package/esm2015/datepicker/sub-components/positioning/ng-positioning.js +0 -30
- package/esm2015/datepicker/sub-components/positioning/positioning.service.js +0 -71
- package/esm2015/datepicker/sub-components/positioning/public_api.js +0 -3
- package/esm2015/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +0 -53
- package/esm2015/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +0 -40
- package/esm2015/datepicker/sub-components/positioning/utils/getBordersSize.js +0 -10
- package/esm2015/datepicker/sub-components/positioning/utils/getBoundaries.js +0 -56
- package/esm2015/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +0 -55
- package/esm2015/datepicker/sub-components/positioning/utils/getClientRect.js +0 -4
- package/esm2015/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +0 -17
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsetParent.js +0 -32
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +0 -51
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsets.js +0 -11
- package/esm2015/datepicker/sub-components/positioning/utils/getOppositePlacement.js +0 -8
- package/esm2015/datepicker/sub-components/positioning/utils/getOppositeVariation.js +0 -13
- package/esm2015/datepicker/sub-components/positioning/utils/getOuterSizes.js +0 -14
- package/esm2015/datepicker/sub-components/positioning/utils/getParentNode.js +0 -10
- package/esm2015/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +0 -13
- package/esm2015/datepicker/sub-components/positioning/utils/getRoot.js +0 -10
- package/esm2015/datepicker/sub-components/positioning/utils/getScroll.js +0 -14
- package/esm2015/datepicker/sub-components/positioning/utils/getScrollParent.js +0 -26
- package/esm2015/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +0 -13
- package/esm2015/datepicker/sub-components/positioning/utils/getTargetOffsets.js +0 -30
- package/esm2015/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +0 -19
- package/esm2015/datepicker/sub-components/positioning/utils/getWindowSizes.js +0 -18
- package/esm2015/datepicker/sub-components/positioning/utils/includeScroll.js +0 -15
- package/esm2015/datepicker/sub-components/positioning/utils/index.js +0 -24
- package/esm2015/datepicker/sub-components/positioning/utils/isBrowser.js +0 -2
- package/esm2015/datepicker/sub-components/positioning/utils/isFixed.js +0 -16
- package/esm2015/datepicker/sub-components/positioning/utils/isIE.js +0 -16
- package/esm2015/datepicker/sub-components/positioning/utils/isModifierEnabled.js +0 -10
- package/esm2015/datepicker/sub-components/positioning/utils/isNumeric.js +0 -7
- package/esm2015/datepicker/sub-components/positioning/utils/isOffsetContainer.js +0 -9
- package/esm2015/datepicker/sub-components/positioning/utils/setStyles.js +0 -17
- package/esm2015/datepicker/sub-components/positioning/utils/updateContainerClass.js +0 -22
- package/esm2015/datepicker/sub-components/tooltip/index.js +0 -2
- package/esm2015/datepicker/sub-components/tooltip/public_api.js +0 -5
- package/esm2015/datepicker/sub-components/tooltip/tooltip-container.component.js +0 -63
- package/esm2015/datepicker/sub-components/tooltip/tooltip.config.js +0 -22
- package/esm2015/datepicker/sub-components/tooltip/tooltip.directive.js +0 -282
- package/esm2015/datepicker/sub-components/tooltip/tooltip.module.js +0 -23
- package/esm2015/datepicker/sub-components/utils/decorators.js +0 -25
- package/esm2015/datepicker/sub-components/utils/facade/browser.js +0 -24
- package/esm2015/datepicker/sub-components/utils/index.js +0 -2
- package/esm2015/datepicker/sub-components/utils/linked-list.class.js +0 -240
- package/esm2015/datepicker/sub-components/utils/public_api.js +0 -11
- package/esm2015/datepicker/sub-components/utils/theme-provider.js +0 -35
- package/esm2015/datepicker/sub-components/utils/trigger.class.js +0 -10
- package/esm2015/datepicker/sub-components/utils/triggers.js +0 -110
- package/esm2015/datepicker/sub-components/utils/utils.class.js +0 -21
- package/esm2015/datepicker/sub-components/utils/warn-once.js +0 -12
- package/esm2015/datepicker/themes/bs/bs-calendar-layout.component.js +0 -25
- package/esm2015/datepicker/themes/bs/bs-current-date-view.component.js +0 -13
- package/esm2015/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -44
- package/esm2015/datepicker/themes/bs/bs-datepicker-container.component.js +0 -152
- package/esm2015/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -47
- package/esm2015/datepicker/themes/bs/bs-datepicker-inline-container.component.js +0 -36
- package/esm2015/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -63
- package/esm2015/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -195
- package/esm2015/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +0 -36
- package/esm2015/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -162
- package/esm2015/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -60
- package/esm2015/datepicker/themes/bs/bs-timepicker-view.component.js +0 -34
- package/esm2015/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -61
- package/esm2015/datepicker/utils/bs-calendar-utils.js +0 -43
- package/esm2015/datepicker/utils/matrix-utils.js +0 -14
- package/esm2015/datepicker/yearpicker.component.js +0 -90
- package/fesm2015/mis-crystal-design-system-datepicker.js +0 -13512
- package/fesm2015/mis-crystal-design-system-datepicker.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-datepicker.umd.js","sources":["../../../projects/mis-components/datepicker/bs-datepicker.config.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/mis-components/datepicker/sub-components/chronos/utils.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/type-checks.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/aliases.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/constants.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/zero-fill.ts","../../../projects/mis-components/datepicker/sub-components/chronos/format/format.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/date-from-array.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/date-getters.ts","../../../projects/mis-components/datepicker/sub-components/chronos/parse/regex.ts","../../../projects/mis-components/datepicker/sub-components/chronos/parse/token.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/priorities.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/day-of-month.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/parsing-flags.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/year.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/month.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/date-setters.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/clone.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/start-end-of.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/day-of-year.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/week-calendar-utils.ts","../../../projects/mis-components/datepicker/sub-components/chronos/locale/locale.class.ts","../../../projects/mis-components/datepicker/sub-components/chronos/locale/calendar.ts","../../../projects/mis-components/datepicker/sub-components/chronos/locale/locale.defaults.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/compare-arrays.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/week.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/week-year.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/timezone.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/timestamp.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/second.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/quarter.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/offset.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/minute.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/millisecond.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/hour.ts","../../../projects/mis-components/datepicker/sub-components/chronos/locale/locales.ts","../../../projects/mis-components/datepicker/sub-components/chronos/duration/valid.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/abs-ceil.ts","../../../projects/mis-components/datepicker/sub-components/chronos/duration/bubble.ts","../../../projects/mis-components/datepicker/sub-components/chronos/duration/humanize.ts","../../../projects/mis-components/datepicker/sub-components/chronos/duration/constructor.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/valid.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/from-string.ts","../../../projects/mis-components/datepicker/sub-components/chronos/format.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/defaults.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/from-array.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/check-overflow.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/from-string-and-format.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/from-string-and-array.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/from-object.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/from-anything.ts","../../../projects/mis-components/datepicker/sub-components/chronos/create/local.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/abs-round.ts","../../../projects/mis-components/datepicker/sub-components/chronos/utils/date-compare.ts","../../../projects/mis-components/datepicker/sub-components/chronos/duration/create.ts","../../../projects/mis-components/datepicker/sub-components/chronos/moment/add-subtract.ts","../../../projects/mis-components/datepicker/sub-components/chronos/units/day-of-week.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ar.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/bg.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ca.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/cs.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/da.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/de.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/en-gb.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/es-do.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/es.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/es-us.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/et.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/fi.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/fr.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/gl.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/he.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/hi.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/hu.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/hr.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/id.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/it.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ja.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ka.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/kk.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ko.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/lt.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/lv.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/mn.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/nb.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/nl-be.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/nl.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/pl.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/pt-br.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ro.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/ru.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/sk.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/sl.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/sq.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/sv.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/th.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/th-be.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/tr.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/uk.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/vi.ts","../../../projects/mis-components/datepicker/sub-components/chronos/i18n/zh-cn.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getStyleComputedProperty.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getParentNode.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getScrollParent.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/isBrowser.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/isIE.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getOffsetParent.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/isOffsetContainer.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getRoot.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/findCommonOffsetParent.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getBordersSize.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getWindowSizes.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getScroll.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getClientRect.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getBoundingClientRect.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/includeScroll.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/isFixed.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getBoundaries.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/computeAutoPlacement.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getOffsets.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getOppositePlacement.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getOppositeVariation.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getOuterSizes.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getReferenceOffsets.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/getTargetOffsets.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/isModifierEnabled.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/isNumeric.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/updateContainerClass.ts","../../../projects/mis-components/datepicker/sub-components/positioning/utils/setStyles.ts","../../../projects/mis-components/datepicker/sub-components/positioning/modifiers/arrow.ts","../../../projects/mis-components/datepicker/sub-components/positioning/modifiers/flip.ts","../../../projects/mis-components/datepicker/sub-components/positioning/modifiers/initData.ts","../../../projects/mis-components/datepicker/sub-components/positioning/modifiers/preventOverflow.ts","../../../projects/mis-components/datepicker/sub-components/positioning/modifiers/shift.ts","../../../projects/mis-components/datepicker/sub-components/positioning/ng-positioning.ts","../../../projects/mis-components/datepicker/sub-components/positioning/positioning.service.ts","../../../projects/mis-components/datepicker/datepicker-animations.ts","../../../projects/mis-components/datepicker/base/bs-datepicker-container.ts","../../../projects/mis-components/datepicker/reducer/bs-datepicker.actions.ts","../../../projects/mis-components/datepicker/bs-locale.service.ts","../../../projects/mis-components/datepicker/reducer/bs-datepicker.effects.ts","../../../projects/mis-components/datepicker/sub-components/mini-ngrx/state.class.ts","../../../projects/mis-components/datepicker/sub-components/mini-ngrx/store.class.ts","../../../projects/mis-components/datepicker/reducer/_defaults.ts","../../../projects/mis-components/datepicker/reducer/bs-datepicker.state.ts","../../../projects/mis-components/datepicker/utils/bs-calendar-utils.ts","../../../projects/mis-components/datepicker/utils/matrix-utils.ts","../../../projects/mis-components/datepicker/engine/calc-days-calendar.ts","../../../projects/mis-components/datepicker/engine/format-days-calendar.ts","../../../projects/mis-components/datepicker/engine/flag-days-calendar.ts","../../../projects/mis-components/datepicker/engine/view-mode.ts","../../../projects/mis-components/datepicker/engine/format-months-calendar.ts","../../../projects/mis-components/datepicker/engine/flag-months-calendar.ts","../../../projects/mis-components/datepicker/engine/format-years-calendar.ts","../../../projects/mis-components/datepicker/engine/flag-years-calendar.ts","../../../projects/mis-components/datepicker/reducer/bs-datepicker.reducer.ts","../../../projects/mis-components/datepicker/reducer/bs-datepicker.store.ts","../../../projects/mis-components/datepicker/themes/bs/bs-datepicker-container.component.ts","../../../projects/mis-components/datepicker/sub-components/component-loader/bs-component-ref.class.ts","../../../projects/mis-components/datepicker/sub-components/utils/trigger.class.ts","../../../projects/mis-components/datepicker/sub-components/utils/triggers.ts","../../../projects/mis-components/datepicker/sub-components/utils/facade/browser.ts","../../../projects/mis-components/datepicker/sub-components/utils/theme-provider.ts","../../../projects/mis-components/datepicker/sub-components/utils/linked-list.class.ts","../../../projects/mis-components/datepicker/sub-components/utils/decorators.ts","../../../projects/mis-components/datepicker/sub-components/utils/utils.class.ts","../../../projects/mis-components/datepicker/sub-components/utils/warn-once.ts","../../../projects/mis-components/datepicker/sub-components/component-loader/content-ref.class.ts","../../../projects/mis-components/datepicker/sub-components/component-loader/component-loader.class.ts","../../../projects/mis-components/datepicker/sub-components/component-loader/component-loader.factory.ts","../../../projects/mis-components/datepicker/bs-datepicker.component.ts","../../../projects/mis-components/datepicker/bs-datepicker-inline.config.ts","../../../projects/mis-components/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","../../../projects/mis-components/datepicker/bs-datepicker-inline.component.ts","../../../projects/mis-components/datepicker/bs-daterangepicker-inline.config.ts","../../../projects/mis-components/datepicker/themes/bs/bs-daterangepicker-container.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","../../../projects/mis-components/datepicker/bs-daterangepicker-inline.component.ts","../../../projects/mis-components/datepicker/bs-datepicker-input.directive.ts","../../../projects/mis-components/datepicker/bs-daterangepicker.config.ts","../../../projects/mis-components/datepicker/bs-daterangepicker.component.ts","../../../projects/mis-components/datepicker/bs-daterangepicker-input.directive.ts","../../../projects/mis-components/datepicker/sub-components/tooltip/tooltip.config.ts","../../../projects/mis-components/datepicker/sub-components/tooltip/tooltip-container.component.ts","../../../projects/mis-components/datepicker/sub-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/datepicker/sub-components/tooltip/tooltip.module.ts","../../../projects/mis-components/datepicker/themes/bs/bs-calendar-layout.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-current-date-view.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-custom-dates-view.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","../../../projects/mis-components/datepicker/models/index.ts","../../../projects/mis-components/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-days-calendar-view.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-months-calendar-view.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-timepicker-view.component.ts","../../../projects/mis-components/datepicker/themes/bs/bs-years-calendar-view.component.ts","../../../projects/mis-components/datepicker/bs-datepicker.module.ts","../../../projects/mis-components/datepicker/date-formatter.ts","../../../projects/mis-components/datepicker/datepicker-inner.component.ts","../../../projects/mis-components/datepicker/datepicker.config.ts","../../../projects/mis-components/datepicker/datepicker.component.ts","../../../projects/mis-components/datepicker/daypicker.component.ts","../../../projects/mis-components/datepicker/monthpicker.component.ts","../../../projects/mis-components/datepicker/yearpicker.component.ts","../../../projects/mis-components/datepicker/datepicker.module.ts","../../../projects/mis-components/datepicker/mis-crystal-design-system-datepicker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n DatePickerRenderOptions,\n MisDatePickerViewMode,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText\n} from './models';\nimport { BsCustomDates } from './themes/bs/bs-custom-dates-view.component';\n\n\n/**\n * For date range picker there are `MisDateRangePickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDatePickerConfig implements DatePickerRenderOptions {\n /** sets use adaptive position */\n adaptivePosition = false;\n /** sets use UTC date time format */\n useUtc = false;\n /** turn on/off animation */\n isAnimated = false;\n value?: Date | Date[];\n isDisabled?: boolean;\n /**\n * Default min date for all date/range pickers\n */\n minDate?: Date;\n /**\n * Default max date for all date/range pickers\n */\n maxDate?: Date;\n /**\n * The view that the datepicker should start in\n */\n startView: MisDatePickerViewMode = 'day';\n /**\n * Default date custom classes for all date/range pickers\n */\n dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Default tooltip text for all date/range pickers\n */\n dateTooltipTexts?: DatePickerDateTooltipText[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n datesDisabled?: Date[];\n /**\n * Show one months for special cases (only for dateRangePicker)\n * 1. maxDate is equal to today's date\n * 2. minDate's month is equal to maxDate's month\n */\n displayOneMonthRange?: boolean;\n /**\n * Enable specific dates\n */\n datesEnabled?: Date[];\n /**\n * Makes dates from other months active\n */\n selectFromOtherMonth?: boolean;\n\n /**\n * Allows select first date of the week by click on week number\n */\n selectWeek?: boolean;\n\n /**\n * Allows select daterange as first and last day of week by click on week number (dateRangePicker only)\n */\n selectWeekDateRange?: boolean;\n\n /**\n * Shows previous and current month, instead of current and next (dateRangePicker only)\n */\n showPreviousMonth?: boolean;\n\n /**\n * Add class to current day\n */\n customTodayClass?: string;\n\n /**\n * Default mode for all date pickers\n */\n minMode?: MisDatePickerViewMode;\n\n /**\n * If true, returns focus to the datepicker / daterangepicker input after date selection\n */\n returnFocusToInput = false;\n\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n containerClass = 'theme-green';\n\n // DatePickerRenderOptions\n displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n showWeekNumbers = false;\n\n dateInputFormat = 'L';\n // range picker\n rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n rangeInputFormat = 'L';\n\n /**\n * Predefined ranges\n */\n ranges?: BsCustomDates[];\n\n /**\n * Max Date Range in days\n */\n maxDateRange?: number;\n\n // DatePickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n\n /**\n * Shows 'today' button\n */\n showTodayButton = false;\n\n /**\n * Shows clear button\n */\n showClearButton = false;\n\n /**\n * Positioning of 'today' button\n */\n todayPosition = 'center';\n\n /**\n * Positioning of 'clear' button\n */\n clearPosition = 'right';\n\n /**\n * Label for 'today' button\n */\n todayButtonLabel = 'Today';\n\n /**\n * Label for 'clear' button\n */\n clearButtonLabel = 'Clear';\n\n /**\n * Label for 'custom range' button\n */\n customRangeButtonLabel = 'Custom Range';\n\n /* To enable emmission of date range on selecting start and end dates */\n emitOnDateRangeSelect: boolean = false;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","\n\nexport function mod(n: number, x: number): number {\n return (n % x + x) % x;\n}\n\nexport function absFloor(num: number): number {\n return num < 0 ? Math.ceil(num) || 0 : Math.floor(num);\n}\n\n","import { absFloor } from '../utils';\n\nexport function isString(str: any): str is string {\n return typeof str === 'string';\n}\n\nexport function isDate(value: any): value is Date {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\n\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false;\n}\n\nexport function isDateValid(date: Date): boolean {\n return date && date.getTime && !isNaN(date.getTime());\n}\n\nexport function isFunction(fn: any): fn is Function {\n return (\n fn instanceof Function ||\n Object.prototype.toString.call(fn) === '[object Function]'\n );\n}\n\nexport function isNumber(value?: any): value is number {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n\nexport function isArray<T>(input?: any): input is T[] {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n}\n\nexport function hasOwnProp<T>(a: T /*object*/, b: string): b is Extract<keyof T, string> {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nexport function isObject<T>(input: any /*object*/): input is T {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null && Object.prototype.toString.call(input) === '[object Object]'\n );\n}\n\nexport function isObjectEmpty(obj: any): boolean {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n }\n let k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n\n return true;\n}\n\n\nexport function isUndefined(input: any): boolean {\n return input === void 0;\n}\n\nexport function toInt<T>(argumentForCoercion: string | number | T): number {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n","import { hasOwnProp, isString } from '../utils/type-checks';\nimport { DateObject, UnitOfTime } from '../types';\n\nconst aliases: { [key: string]: string } = {};\n\nexport type ExtendedUnitOfTime = UnitOfTime | 'date' | 'week' | 'isoWeek' | 'dayOfYear' |\n 'weekday' | 'isoWeekday' | 'second' | 'millisecond' | 'minute' | 'hour' | 'quarter' | 'weekYear' | 'isoWeekYear';\n\nconst _mapUnits: { [key: string]: UnitOfTime } = {\n date: 'day',\n hour: 'hours',\n minute: 'minutes',\n second: 'seconds',\n millisecond: 'milliseconds'\n};\n\nexport function addUnitAlias(unit: ExtendedUnitOfTime, shorthand: string): void {\n const lowerCase = unit.toLowerCase();\n let _unit = unit;\n if (lowerCase in _mapUnits) {\n _unit = _mapUnits[lowerCase];\n }\n aliases[lowerCase] = aliases[`${lowerCase}s`] = aliases[shorthand] = _unit;\n}\n\nexport function normalizeUnits(units: string | string[]): string {\n return isString(units) ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nexport function normalizeObjectUnits(inputObject: { [key: string]: number }): DateObject {\n const normalizedInput: { [key: string]: number } = {};\n let normalizedProp;\n let prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput as any;\n}\n","// place in new Date([array])\nexport const YEAR = 0;\nexport const MONTH = 1;\nexport const DATE = 2;\nexport const HOUR = 3;\nexport const MINUTE = 4;\nexport const SECOND = 5;\nexport const MILLISECOND = 6;\nexport const WEEK = 7;\nexport const WEEKDAY = 8;\n","export function zeroFill(num: number,\n targetLength: number,\n forceSign?: boolean): string {\n const absNumber = `${Math.abs(num)}`;\n const zerosToFill = targetLength - absNumber.length;\n const sign = num >= 0;\n const _sign = sign ? (forceSign ? '+' : '') : '-';\n // todo: this is crazy slow\n const _zeros = Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1);\n\n return (_sign + _zeros + absNumber);\n}\n","import { Locale } from '../locale/locale.class';\nimport { zeroFill } from '../utils/zero-fill';\nimport { isFunction } from '../utils/type-checks';\nimport { DateFormatterOptions, DateFormatterFn } from '../types';\n\nexport let formatFunctions: {\n [key: string]: (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string;\n} = {};\nexport let formatTokenFunctions: { [key: string]: DateFormatterFn } = {};\n\n// tslint:disable-next-line\nexport const formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nexport function addFormatToken(token: string,\n padded: [string, number, boolean],\n ordinal: string,\n callback: DateFormatterFn): void {\n\n if (token) {\n formatTokenFunctions[token] = callback;\n }\n\n if (padded) {\n formatTokenFunctions[padded[0]] = function (): string {\n return zeroFill(callback.apply(null, arguments), padded[1], padded[2]);\n };\n }\n\n if (ordinal) {\n formatTokenFunctions[ordinal] = function (date: Date, opts: DateFormatterOptions): string {\n return opts.locale.ordinal(callback.apply(null, arguments), token);\n };\n }\n}\n\nexport function makeFormatFunction(format: string):\n (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string {\n\n const array: string[] = format.match(formattingTokens);\n const length = array.length;\n\n const formatArr: string[] | DateFormatterFn[] = new Array(length);\n\n for (let i = 0; i < length; i++) {\n formatArr[i] = formatTokenFunctions[array[i]]\n ? formatTokenFunctions[array[i]]\n : removeFormattingTokens(array[i]);\n }\n\n return function (date: Date, locale: Locale, isUTC: boolean, offset = 0): string {\n\n let output = '';\n for (let j = 0; j < length; j++) {\n output += isFunction(formatArr[j])\n ? (formatArr[j] as DateFormatterFn).call(null, date, {format, locale, isUTC, offset})\n : formatArr[j];\n }\n\n return output;\n };\n}\n\nfunction removeFormattingTokens(input: string): string {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n\n return input.replace(/\\\\/g, '');\n}\n","export function createUTCDate(y?: number,\n m?: number,\n d?: number): Date {\n const date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n\n return date;\n}\n\nexport function createDate(y?: number,\n m = 0,\n d = 1,\n h = 0,\n M = 0,\n s = 0,\n ms = 0): Date {\n const date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n\n return date;\n}\n","import { createDate } from '../create/date-from-array';\n\nexport function getHours(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCHours() : date.getHours();\n}\n\nexport function getMinutes(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCMinutes() : date.getMinutes();\n}\n\nexport function getSeconds(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCSeconds() : date.getSeconds();\n}\n\nexport function getMilliseconds(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCMilliseconds() : date.getMilliseconds();\n}\nexport function getTime(date: Date): number {\n return date.getTime();\n}\n\nexport function getDay(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCDay() : date.getDay();\n}\n\nexport function getDate(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCDate() : date.getDate();\n}\n\nexport function getMonth(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCMonth() : date.getMonth();\n}\n\nexport function getFullYear(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCFullYear() : date.getFullYear();\n}\n\nexport function getUnixTime(date: Date): number {\n return Math.floor(date.valueOf() / 1000);\n}\n\nexport function unix(date: Date): number {\n return Math.floor(date.valueOf() / 1000);\n}\n\nexport function getFirstDayOfMonth(date: Date): Date {\n return createDate(\n date.getFullYear(),\n date.getMonth(),\n 1,\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n}\n\nexport function daysInMonth(date: Date): number {\n return _daysInMonth(date.getFullYear(), date.getMonth());\n}\n\nexport function _daysInMonth(year: number, month: number): number {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\nexport function isFirstDayOfWeek(date: Date, firstDayOfWeek: number): boolean {\n return date.getDay() === firstDayOfWeek;\n}\n\nexport function isSameMonth(date1: Date, date2: Date) {\n if (!date1 || !date2) {\n return false;\n }\n\n return isSameYear(date1, date2) && getMonth(date1) === getMonth(date2);\n}\n\nexport function isSameYear(date1: Date, date2: Date) {\n if (!date1 || !date2) {\n return false;\n }\n\n return getFullYear(date1) === getFullYear(date2);\n}\n\nexport function isSameDay(date1: Date, date2: Date): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return (\n isSameYear(date1, date2) &&\n isSameMonth(date1, date2) &&\n getDate(date1) === getDate(date2)\n );\n}\n","import { hasOwnProp, isFunction } from '../utils/type-checks';\nimport { Locale } from '../locale/locale.class';\n\nexport const match1 = /\\d/; // 0 - 9\nexport const match2 = /\\d\\d/; // 00 - 99\nexport const match3 = /\\d{3}/; // 000 - 999\nexport const match4 = /\\d{4}/; // 0000 - 9999\nexport const match6 = /[+-]?\\d{6}/; // -999999 - 999999\nexport const match1to2 = /\\d\\d?/; // 0 - 99\nexport const match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nexport const match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nexport const match1to3 = /\\d{1,3}/; // 0 - 999\nexport const match1to4 = /\\d{1,4}/; // 0 - 9999\nexport const match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nexport const matchUnsigned = /\\d+/; // 0 - inf\nexport const matchSigned = /[+-]?\\d+/; // -inf - inf\n\nexport const matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nexport const matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nexport const matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\n// tslint:disable-next-line\nexport const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\nexport type RegExpTokenFn = (isStrict: boolean, locale: Locale) => RegExp;\nconst regexes: {[key: string]: RegExpTokenFn} = {};\n\n\nexport function addRegexToken(token: string, regex: RegExp | RegExpTokenFn, strictRegex?: RegExp): void {\n if (isFunction(regex)) {\n regexes[token] = regex;\n\n return;\n }\n\n regexes[token] = function (isStrict: boolean, locale: Locale) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nexport function getParseRegexForToken(token: string, locale: Locale): RegExp {\n const _strict = false;\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](_strict, locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(str: string): string {\n // tslint:disable-next-line\n return regexEscape(str\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, (matched, p1, p2, p3, p4) => p1 || p2 || p3 || p4)\n );\n}\n\nexport function regexEscape(str: string): string {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n","// tslint:disable:max-line-length\nimport { hasOwnProp, isArray, isFunction, isNumber, isString, toInt } from '../utils/type-checks';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { DateArray, DateParseTokenFn } from '../types';\n\nconst tokens: {[key: string]: DateParseTokenFn} = {};\n\nexport function addParseToken(token: string | string[], callback: DateParseTokenFn | number) {\n const _token = isString(token) ? [token] : token;\n let func = callback;\n\n if (isNumber(callback)) {\n func = function (input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[callback] = toInt(input);\n\n return config;\n };\n }\n\n if (isArray<string>(_token) && isFunction(func)) {\n let i;\n for (i = 0; i < _token.length; i++) {\n tokens[_token[i]] = func;\n }\n }\n}\n\nexport function addWeekParseToken(token: string[], callback: DateParseTokenFn): void {\n addParseToken(token, function (input: string, array: DateArray, config: DateParsingConfig, _token: string): DateParsingConfig {\n config._w = config._w || {};\n\n return callback(input, config._w, config, _token);\n });\n}\n\n\nexport function addTimeToArrayFromToken(token: string, input: string, config: DateParsingConfig): DateParsingConfig {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n\n return config;\n}\n","const priorities: {[key: string]: number} = {};\n\nexport function addUnitPriority(unit: string, priority: number): void {\n priorities[unit] = priority;\n}\n\n/*\nexport function getPrioritizedUnits(unitsObj) {\n const units = [];\n let unit;\n for (unit in unitsObj) {\n if (unitsObj.hasOwnProperty(unit)) {\n units.push({ unit, priority: priorities[unit] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n\n return units;\n}\n*/\n","import { addFormatToken } from '../format/format';\nimport { getDate } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { DATE } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { DateParsingConfig } from '../create/parsing.types';\n\n\nexport function initDayOfMonth() {\n// FORMATTING\n\n addFormatToken('D', ['DD', 2, false], 'Do',\n function(date: Date, opts: DateFormatterOptions): string {\n return getDate(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('date', 'D');\n\n// PRIOROITY\n addUnitPriority('date', 9);\n\n// PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function(isStrict, locale) {\n return locale._dayOfMonthOrdinalParse || locale._ordinalParse;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken(\n 'Do',\n function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[DATE] = toInt(input.match(match1to2)[0]);\n\n return config;\n }\n );\n}\n","import { DateParsingConfig, DateParsingFlags } from './parsing.types';\n\nfunction defaultParsingFlags(): DateParsingFlags {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n}\n\nexport function getParsingFlags(config: DateParsingConfig): DateParsingFlags {\n if (config._pf == null) {\n config._pf = defaultParsingFlags();\n }\n\n return config._pf;\n}\n","import { addFormatToken } from '../format/format';\nimport { getFullYear } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { YEAR } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateFormatterOptions } from '../types';\n\n// FORMATTING\n\nfunction getYear(date: Date, opts: DateFormatterOptions): string {\n if (opts.locale.getFullYear) {\n return opts.locale.getFullYear(date, opts.isUTC).toString();\n }\n return getFullYear(date, opts.isUTC).toString();\n}\n\nexport function initYear() {\n addFormatToken('Y', null, null,\n function (date: Date, opts: DateFormatterOptions): string {\n const y = getFullYear(date, opts.isUTC);\n\n return y <= 9999 ? y.toString(10) : `+${y}`;\n });\n\n addFormatToken(null, ['YY', 2, false], null,\n function (date: Date, opts: DateFormatterOptions): string {\n return (getFullYear(date, opts.isUTC) % 100).toString(10);\n });\n\n addFormatToken(null, ['YYYY', 4, false], null, getYear);\n addFormatToken(null, ['YYYYY', 5, false], null, getYear);\n addFormatToken(null, ['YYYYYY', 6, true], null, getYear);\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array, config) {\n array[YEAR] = input.length === 2 ? parseTwoDigitYear(input) : toInt(input);\n\n return config;\n });\n addParseToken('YY', function (input, array, config) {\n array[YEAR] = parseTwoDigitYear(input);\n\n return config;\n });\n addParseToken('Y', function (input, array, config) {\n array[YEAR] = parseInt(input, 10);\n\n return config;\n });\n}\n\nexport function parseTwoDigitYear(input: string): number {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n}\n\nexport function daysInYear(year: number): number {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function isLeapYear(year: number): boolean {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n","import { addFormatToken } from '../format/format';\nimport { isLeapYear } from './year';\nimport { mod } from '../utils';\nimport { getMonth } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MONTH } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { DateArray, DateFormatterOptions } from '../types';\n\n// todo: this is duplicate, source in date-getters.ts\nexport function daysInMonth(year: number, month: number): number {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n const modMonth = mod(month, 12);\n const _year = year + (month - modMonth) / 12;\n\n return modMonth === 1\n ? isLeapYear(_year) ? 29 : 28\n : (31 - modMonth % 7 % 2);\n}\n\nexport function initMonth() {\n// FORMATTING\n\n addFormatToken('M', ['MM', 2, false], 'Mo',\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMonth(date, opts.isUTC) + 1).toString(10);\n }\n );\n\n addFormatToken('MMM', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.monthsShort(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('MMMM', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.months(date, opts.format, opts.isUTC);\n }\n );\n\n\n// ALIASES\n\n addUnitAlias('month', 'M');\n\n// PRIORITY\n\n addUnitPriority('month', 8);\n\n// PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function(isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function(isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[MONTH] = toInt(input) - 1;\n\n return config;\n });\n\n addParseToken(\n ['MMM', 'MMMM'],\n function(input: string, array: DateArray, config: DateParsingConfig, token: string): DateParsingConfig {\n const month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = !!input;\n }\n\n return config;\n }\n );\n}\n","import { TimeUnit } from '../types';\nimport { daysInMonth } from '../units/month';\nimport { isNumber } from './type-checks';\nimport { getDate, getFullYear, getMonth } from './date-getters';\nimport { isLeapYear } from '../units/year';\nimport { createDate } from '../create/date-from-array';\n\nconst defaultTimeUnit: TimeUnit = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n seconds: 0\n};\n\nexport function shiftDate(date: Date, unit: TimeUnit): Date {\n const _unit = Object.assign({}, defaultTimeUnit, unit);\n const year = date.getFullYear() + (_unit.year || 0);\n const month = date.getMonth() + (_unit.month || 0);\n let day = date.getDate() + (_unit.day || 0);\n if (_unit.month && !_unit.day) {\n day = Math.min(day, daysInMonth(year, month));\n }\n\n return createDate(\n year,\n month,\n day,\n date.getHours() + (_unit.hour || 0),\n date.getMinutes() + (_unit.minute || 0),\n date.getSeconds() + (_unit.seconds || 0)\n );\n}\n\nexport function setFullDate(date: Date, unit: TimeUnit): Date {\n return createDate(\n getNum(date.getFullYear(), unit.year),\n getNum(date.getMonth(), unit.month),\n 1, // day, to avoid issue with wrong months selection at the end of current month (#5371)\n getNum(date.getHours(), unit.hour),\n getNum(date.getMinutes(), unit.minute),\n getNum(date.getSeconds(), unit.seconds),\n getNum(date.getMilliseconds(), unit.milliseconds)\n );\n}\n\nfunction getNum(def: number, num?: number): number {\n return isNumber(num) ? num : def;\n}\n\nexport function setFullYear(date: Date, value: number, isUTC?: boolean): Date {\n const _month = getMonth(date, isUTC);\n const _date = getDate(date, isUTC);\n const _year = getFullYear(date, isUTC);\n if (isLeapYear(_year) && _month === 1 && _date === 29) {\n const _daysInMonth = daysInMonth(value, _month);\n isUTC ? date.setUTCFullYear(value, _month, _daysInMonth) : date.setFullYear(value, _month, _daysInMonth);\n }\n\n isUTC ? date.setUTCFullYear(value) : date.setFullYear(value);\n\n return date;\n}\n\nexport function setMonth(date: Date, value: number, isUTC?: boolean): Date {\n const dayOfMonth = Math.min(getDate(date), daysInMonth(getFullYear(date), value));\n isUTC ? date.setUTCMonth(value, dayOfMonth) : date.setMonth(value, dayOfMonth);\n\n return date;\n}\n\nexport function setDay(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n\n return date;\n}\n\nexport function setHours(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCHours(value) : date.setHours(value);\n\n return date;\n}\n\nexport function setMinutes(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCMinutes(value) : date.setMinutes(value);\n\n return date;\n}\n\nexport function setSeconds(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCSeconds(value) : date.setSeconds(value);\n\n return date;\n}\n\nexport function setMilliseconds(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCMilliseconds(value) : date.setMilliseconds(value);\n\n return date;\n}\n\nexport function setDate(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n\n return date;\n}\n\nexport function setTime(date: Date, value: number): Date {\n date.setTime(value);\n\n return date;\n}\n","// fastest way to clone date\n// https://jsperf.com/clone-date-object2\nexport function cloneDate(date: Date): Date {\n return new Date(date.getTime());\n}\n","// tslint:disable: switch-default\nimport { TimeUnit, UnitOfTime } from '../types';\nimport {\n setDate, setFullDate, setHours, setMilliseconds, setMinutes, setMonth, setSeconds,\n shiftDate\n} from './date-setters';\nimport { cloneDate } from '../create/clone';\nimport { setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';\nimport { getMonth } from './date-getters';\nimport { add, subtract } from '../moment/add-subtract';\n\nexport function startOf(date: Date, unit: UnitOfTime, isUTC?: boolean): Date {\n const _date = cloneDate(date);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (unit) {\n case 'year':\n setMonth(_date, 0, isUTC);\n /* falls through */\n case 'quarter':\n case 'month':\n setDate(_date, 1, isUTC);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n setHours(_date, 0, isUTC);\n /* falls through */\n case 'hours':\n setMinutes(_date, 0, isUTC);\n /* falls through */\n case 'minutes':\n setSeconds(_date, 0, isUTC);\n /* falls through */\n case 'seconds':\n setMilliseconds(_date, 0, isUTC);\n }\n\n // weeks are a special case\n if (unit === 'week') {\n setLocaleDayOfWeek(_date, 0, {isUTC});\n }\n if (unit === 'isoWeek') {\n setISODayOfWeek(_date, 1);\n }\n\n // quarters are also special\n if (unit === 'quarter') {\n setMonth(_date, Math.floor(getMonth(_date, isUTC) / 3) * 3, isUTC);\n }\n\n return _date;\n}\n\nexport function endOf(date: Date, unit: UnitOfTime, isUTC?: boolean): Date {\n let _unit = unit;\n // 'date' is an alias for 'day', so it should be considered as such.\n if (_unit === 'date') {\n _unit = 'day';\n }\n\n const start = startOf(date, _unit, isUTC);\n const _step = add(start, 1, _unit === 'isoWeek' ? 'week' : _unit, isUTC);\n const res = subtract(_step, 1, 'milliseconds', isUTC);\n\n return res;\n}\n","import { addFormatToken } from '../format/format';\nimport { startOf } from '../utils/start-end-of';\nimport { addRegexToken, match1to3, match3 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { toInt } from '../utils/type-checks';\nimport { add } from '../moment/add-subtract';\n\n\nexport function initDayOfYear() {\n// FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3, false], 'DDDo',\n function(date: Date): string {\n return getDayOfYear(date)\n .toString(10);\n }\n );\n\n\n// ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\n\n addUnitPriority('dayOfYear', 4);\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(\n ['DDD', 'DDDD'],\n function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._dayOfYear = toInt(input);\n\n return config;\n }\n );\n}\n\nexport function getDayOfYear(date: Date, isUTC?: boolean): number {\n const date1 = +startOf(date, 'day', isUTC);\n const date2 = +startOf(date, 'year', isUTC);\n const someDate = date1 - date2;\n const oneDay = 1000 * 60 * 60 * 24;\n\n return Math.round(someDate / oneDay) + 1;\n}\n\nexport function setDayOfYear(date: Date, input: number): Date {\n const dayOfYear = getDayOfYear(date);\n\n return add(date, (input - dayOfYear), 'day');\n}\n","/**\n *\n * @param {number} year\n * @param {number} dow - start-of-first-week\n * @param {number} doy - start-of-year\n * @returns {number}\n */\nimport { createUTCDate } from '../create/date-from-array';\nimport { daysInYear } from './year';\nimport { getDayOfYear } from './day-of-year';\nimport { getFullYear } from '../utils/date-getters';\n\nfunction firstWeekOffset(year: number, dow: number, doy: number): number {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n const fwd = dow - doy + 7;\n // first-week day local weekday -- which local weekday is fwd\n const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nexport function dayOfYearFromWeeks(\n year: number,\n week: number,\n weekday: number,\n dow: number,\n doy: number\n): { year: number; dayOfYear: number } {\n const localWeekday = (7 + weekday - dow) % 7;\n const weekOffset = firstWeekOffset(year, dow, doy);\n const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;\n let resYear: number;\n let resDayOfYear: number;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nexport function weekOfYear(date: Date, dow: number, doy: number, isUTC?: boolean): { week: number; year: number } {\n const weekOffset = firstWeekOffset(getFullYear(date, isUTC), dow, doy);\n const week = Math.floor((getDayOfYear(date, isUTC) - weekOffset - 1) / 7) + 1;\n let resWeek: number;\n let resYear: number;\n\n if (week < 1) {\n resYear = getFullYear(date, isUTC) - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(getFullYear(date, isUTC), dow, doy)) {\n resWeek = week - weeksInYear(getFullYear(date, isUTC), dow, doy);\n resYear = getFullYear(date, isUTC) + 1;\n } else {\n resYear = getFullYear(date, isUTC);\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nexport function weeksInYear(year: number, dow: number, doy: number): number {\n const weekOffset = firstWeekOffset(year, dow, doy);\n const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n","// tslint:disable:max-file-line-count max-line-length cyclomatic-complexity\n\nimport { weekOfYear } from '../units/week-calendar-utils';\nimport { hasOwnProp, isArray, isFunction } from '../utils/type-checks';\nimport { getDay, getMonth, getFullYear } from '../utils/date-getters';\nimport { matchWord, regexEscape } from '../parse/regex';\nimport { setDayOfWeek } from '../units/day-of-week';\n\nexport interface LocaleOptionsFormat {\n format: string[];\n standalone: string[];\n isFormat?: RegExp;\n}\n\nexport type LocaleOptions = string[] | LocaleOptionsFormat;\n\nconst MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nexport const defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n);\nexport const defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n);\nexport const defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n);\nexport const defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split(\n '_'\n);\nexport const defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nexport const defaultLongDateFormat: { [index: string]: string } = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n};\n\nexport const defaultOrdinal = '%d';\nexport const defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nconst defaultMonthsShortRegex = matchWord;\nconst defaultMonthsRegex = matchWord;\n\nexport type OrdinalDateFn = (num: number, token?: string) => string;\nexport type PluralizeDateFn = (num: number, withoutSuffix: boolean,\n key?: string, isFuture?: boolean) => string;\n\nexport interface LocaleData {\n abbr?: string;\n parentLocale?: string;\n\n months?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n monthsShort?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n monthsParseExact?: boolean;\n\n weekdays?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n weekdaysShort?: string[] | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n weekdaysMin?: string[] | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n weekdaysParseExact?: boolean;\n\n longDateFormat?: { [index: string]: string };\n calendar?: {\n [key: string]: (string\n | ((date: Date, now?: Date) => string)\n // tslint:disable-next-line\n | ((dayOfWeek: number, isNextWeek: boolean) => string))\n };\n relativeTime?: { [key: string]: string | PluralizeDateFn };\n dayOfMonthOrdinalParse?: RegExp;\n ordinal?: string | OrdinalDateFn;\n\n week?: { dow?: number; doy?: number };\n\n invalidDate?: string;\n\n monthsRegex?: RegExp;\n monthsParse?: RegExp[];\n monthsShortRegex?: RegExp;\n monthsStrictRegex?: RegExp;\n monthsShortStrictRegex?: RegExp;\n longMonthsParse?: RegExp[];\n shortMonthsParse?: RegExp[];\n\n meridiemParse?: RegExp;\n\n meridiemHour?(hour: number, meridiem: string): number;\n\n preparse?(str: string, format?: string | string[]): string;\n\n postformat?(str: string | number): string;\n\n meridiem?(hour: number, minute?: number, isLower?: boolean): string;\n\n isPM?(input: string): boolean;\n\n getFullYear?(date: Date, isUTC: boolean): number;\n}\n\nexport class Locale {\n parentLocale?: Locale;\n _abbr: string;\n _config: LocaleData;\n meridiemHour: (hour: number, meridiem: string) => number;\n\n _invalidDate: string;\n _week: { dow: number; doy: number };\n _dayOfMonthOrdinalParse: RegExp;\n _ordinalParse: RegExp;\n _meridiemParse: RegExp;\n\n private _calendar: { [key: string]: string };\n private _relativeTime: { future: string; past: string };\n private _months: LocaleOptions;\n private _monthsShort: LocaleOptions;\n private _monthsRegex: RegExp;\n private _monthsShortRegex: RegExp;\n private _monthsStrictRegex: RegExp;\n private _monthsShortStrictRegex: RegExp;\n private _monthsParse: RegExp[];\n private _longMonthsParse: string[] | RegExp[];\n private _shortMonthsParse: string[] | RegExp[];\n private _monthsParseExact: RegExp;\n private _weekdaysParseExact: boolean;\n private _weekdaysRegex: RegExp;\n private _weekdaysShortRegex: RegExp;\n private _weekdaysMinRegex: RegExp;\n\n private _weekdaysStrictRegex: RegExp;\n private _weekdaysShortStrictRegex: RegExp;\n private _weekdaysMinStrictRegex: RegExp;\n\n private _weekdays: LocaleOptions;\n private _weekdaysShort: string[];\n private _weekdaysMin: string[];\n private _weekdaysParse: string[] | RegExp[];\n private _minWeekdaysParse: string[] | RegExp[];\n private _shortWeekdaysParse: string[] | RegExp[];\n private _fullWeekdaysParse: RegExp[];\n private _longDateFormat: { [key: string]: string };\n\n private _ordinal: string;\n\n constructor(config: LocaleData) {\n if (!!config) {\n this.set(config);\n }\n }\n\n set(config: LocaleData): void {\n let confKey;\n for (confKey in config) {\n if (!config.hasOwnProperty(confKey)) {\n continue;\n }\n const prop = config[confKey as keyof LocaleData];\n const key = (isFunction(prop) ? confKey : `_${confKey}`) as keyof Locale;\n\n this[key] = prop as any;\n }\n\n this._config = config;\n }\n\n calendar(key: string, date: Date, now: Date): string {\n const output = this._calendar[key] || this._calendar.sameElse;\n\n return isFunction(output) ? output.call(null, date, now) : output;\n }\n\n longDateFormat(key: string) {\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val: string) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n get invalidDate(): string {\n return this._invalidDate;\n }\n\n set invalidDate(val: string) {\n this._invalidDate = val;\n }\n\n ordinal(num: number, token?: string): string {\n return this._ordinal.replace('%d', num.toString(10));\n }\n\n preparse(str: string, format?: string | string[]) {\n return str;\n }\n\n\n getFullYear(date: Date, isUTC = false): number {\n return getFullYear(date, isUTC);\n }\n\n postformat(str: string) {\n return str;\n }\n\n relativeTime(num: number, withoutSuffix: boolean, str: 'future' | 'past', isFuture: boolean): string {\n const output = this._relativeTime[str];\n\n return (isFunction(output)) ?\n output(num, withoutSuffix, str, isFuture) :\n output.replace(/%d/i, num.toString(10));\n }\n\n pastFuture(diff: number, output: string): string {\n const format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n /** Months */\n months(): string[];\n months(date: Date, format?: string, isUTC?: boolean): string;\n months(date?: Date, format?: string, isUTC = false): string | string[] {\n if (!date) {\n return isArray<string>(this._months)\n ? this._months\n : this._months.standalone;\n }\n\n if (isArray<string>(this._months)) {\n return this._months[getMonth(date, isUTC)];\n }\n\n const key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone';\n\n return this._months[key][getMonth(date, isUTC)];\n }\n\n monthsShort(): string[];\n monthsShort(date?: Date, format?: string, isUTC?: boolean): string;\n monthsShort(date?: Date, format?: string, isUTC = false): string | string[] {\n if (!date) {\n return isArray<string>(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort.standalone;\n }\n\n if (isArray<string>(this._monthsShort)) {\n return this._monthsShort[getMonth(date, isUTC)];\n }\n const key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone';\n\n return this._monthsShort[key][getMonth(date, isUTC)];\n }\n\n monthsParse(monthName: string, format?: string, strict?: boolean): number {\n let date;\n let regex;\n\n if (this._monthsParseExact) {\n return this.handleMonthStrictParse(monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(Date.UTC(2000, i));\n if (strict && !this._longMonthsParse[i]) {\n const _months = this.months(date, '', true).replace('.', '');\n const _shortMonths = this.monthsShort(date, '', true).replace('.', '');\n this._longMonthsParse[i] = new RegExp(`^${_months}$`, 'i');\n this._shortMonthsParse[i] = new RegExp(`^${_shortMonths}$`, 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = `^${this.months(date, '', true)}|^${this.monthsShort(date, '', true)}`;\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && (this._longMonthsParse[i] as RegExp).test(monthName)) {\n return i;\n }\n\n if (strict && format === 'MMM' && (this._shortMonthsParse[i] as RegExp).test(monthName)) {\n return i;\n }\n\n if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n monthsRegex(isStrict: boolean): RegExp {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n }\n\n return this._monthsRegex;\n }\n\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n\n monthsShortRegex(isStrict: boolean): RegExp {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n }\n\n return this._monthsShortRegex;\n }\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n\n /** Week */\n week(date: Date, isUTC?: boolean): number {\n return weekOfYear(date, this._week.dow, this._week.doy, isUTC).week;\n }\n\n firstDayOfWeek(): number {\n return this._week.dow;\n }\n\n firstDayOfYear(): number {\n return this._week.doy;\n }\n\n /** Day of Week */\n weekdays(): string[];\n weekdays(date: Date, format?: string, isUTC?: boolean): string;\n weekdays(date?: Date, format?: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return isArray<string>(this._weekdays)\n ? this._weekdays\n : this._weekdays.standalone;\n }\n\n if (isArray<string>(this._weekdays)) {\n return this._weekdays[getDay(date, isUTC)];\n }\n\n const _key = this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone';\n\n return this._weekdays[_key][getDay(date, isUTC)];\n }\n\n weekdaysMin(): string[];\n weekdaysMin(date: Date, format?: string, isUTC?: boolean): string;\n weekdaysMin(date?: Date, format?: string, isUTC?: boolean): string | string[] {\n return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin;\n }\n\n weekdaysShort(): string[];\n weekdaysShort(date: Date, format?: string, isUTC?: boolean): string;\n weekdaysShort(date?: Date, format?: string, isUTC?: boolean): string | string[] {\n return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort;\n }\n\n\n // proto.weekdaysParse = localeWeekdaysParse;\n weekdaysParse(weekdayName?: string, format?: string, strict?: boolean): number {\n let i;\n let regex;\n\n if (this._weekdaysParseExact) {\n return this.handleWeekStrictParse(weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // fix: here is the issue\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(`^${this.weekdays(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._shortWeekdaysParse[i] = new RegExp(`^${this.weekdaysShort(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._minWeekdaysParse[i] = new RegExp(`^${this.weekdaysMin(date, '', true).replace('.', '\\.?')}$`, 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = `^${this.weekdays(date, '', true)}|^${this.weekdaysShort(date, '', true)}|^${this.weekdaysMin(date, '', true)}`;\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n\n if (!isArray<RegExp>(this._fullWeekdaysParse)\n || !isArray<RegExp>(this._shortWeekdaysParse)\n || !isArray<RegExp>(this._minWeekdaysParse)\n || !isArray<RegExp>(this._weekdaysParse)) {\n return;\n }\n\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // proto.weekdaysRegex = weekdaysRegex;\n weekdaysRegex(isStrict: boolean) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = matchWord;\n }\n\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n // proto.weekdaysShortRegex = weekdaysShortRegex;\n // proto.weekdaysMinRegex = weekdaysMinRegex;\n\n\n weekdaysShortRegex(isStrict?: boolean): RegExp {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = matchWord;\n }\n\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n weekdaysMinRegex(isStrict?: boolean): RegExp {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = matchWord;\n }\n\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n isPM(input: string): boolean {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return input.toLowerCase().charAt(0) === 'p';\n }\n\n meridiem(hours: number, minutes: number, isLower: boolean): string {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n }\n\n return isLower ? 'am' : 'AM';\n }\n\n formatLongDate(key: string) {\n this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat;\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[\n key\n ] = formatUpper.replace(/MMMM|MM|DD|dddd/g, (val: string) => {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n private handleMonthStrictParse(monthName: string, format: string, strict?: boolean) {\n const llc = monthName.toLocaleLowerCase();\n let i;\n let ii;\n let mom;\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = new Date(2000, i);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = (this._shortMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n ii = (this._longMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n\n if (format === 'MMM') {\n ii = (this._shortMonthsParse as string[]).indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n\n ii = (this._longMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n\n ii = (this._longMonthsParse as string[]).indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = (this._shortMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n\n private handleWeekStrictParse(weekdayName: string, format: string, strict: boolean): number {\n let ii;\n const llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n let i;\n for (i = 0; i < 7; ++i) {\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase();\n }\n }\n\n if (!isArray<string>(this._weekdaysParse)\n || !isArray<string>(this._shortWeekdaysParse)\n || !isArray<string>(this._minWeekdaysParse)) {\n return;\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else {\n ii = this._minWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else {\n ii = this._minWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n private computeMonthsParse() {\n const shortPieces: string[] = [];\n const longPieces: string[] = [];\n const mixedPieces: string[] = [];\n let date;\n\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(2000, i);\n shortPieces.push(this.monthsShort(date, ''));\n longPieces.push(this.months(date, ''));\n mixedPieces.push(this.months(date, ''));\n mixedPieces.push(this.monthsShort(date, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._monthsShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n }\n\n private computeWeekdaysParse() {\n const minPieces = [];\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n\n let i;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // let mom = createUTC([2000, 1]).day(i);\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n const minp = this.weekdaysMin(date);\n const shortp = this.weekdaysShort(date);\n const longp = this.weekdays(date);\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._weekdaysShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n this._weekdaysMinStrictRegex = new RegExp(`^(${minPieces.join('|')})`, 'i');\n }\n}\n\nfunction cmpLenRev(a: string, b: string): number {\n return b.length - a.length;\n}\n","export const defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n};\n","import {\n defaultDayOfMonthOrdinalParse,\n defaultLocaleMonths,\n defaultLocaleMonthsShort,\n defaultLocaleWeekdays,\n defaultLocaleWeekdaysMin,\n defaultLocaleWeekdaysShort, defaultLongDateFormat, defaultOrdinal,\n LocaleData\n} from './locale.class';\nimport { defaultCalendar } from './calendar';\n\nexport const defaultInvalidDate = 'Invalid date';\n\nexport const defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nexport const defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n\nexport const defaultRelativeTime: {[key: string]: string} = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nexport const baseConfig: LocaleData = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n","// compare two arrays, return the number of differences\nimport { toInt } from './type-checks';\n\nexport function compareArrays<T>(array1: T[], array2: T[], dontConvert: boolean) {\n const len = Math.min(array1.length, array2.length);\n const lengthDiff = Math.abs(array1.length - array2.length);\n let diffs = 0;\n let i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i])\n || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n\n return diffs + lengthDiff;\n}\n","import { addFormatToken } from '../format/format';\nimport { Locale } from '../locale/locale.class';\nimport { weekOfYear } from './week-calendar-utils';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addWeekParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { DateFormatterOptions, WeekParsing } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { getLocale } from '../locale/locales';\nimport { add } from '../moment/add-subtract';\n\n// FORMATTING\n\nexport function initWeek() {\n addFormatToken('w', ['ww', 2, false], 'wo',\n function(date: Date, opts: DateFormatterOptions): string {\n return getWeek(date, opts.locale)\n .toString(10);\n }\n );\n\n addFormatToken('W', ['WW', 2, false], 'Wo',\n function(date: Date): string {\n return getISOWeek(date)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n// PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {\n week[token.substr(0, 1)] = toInt(input);\n\n return config;\n }\n );\n\n// export function getSetWeek (input) {\n// var week = this.localeData().week(this);\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\n}\n\nexport function setWeek(date: Date, input: number, locale = getLocale()): Date {\n const week = getWeek(date, locale);\n\n return add(date, (input - week) * 7, 'day');\n}\n\nexport function getWeek(date: Date, locale = getLocale(), isUTC?: boolean): number {\n return locale.week(date, isUTC);\n}\n\n// export function getSetISOWeek (input) {\n// var week = weekOfYear(this, 1, 4).week;\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\n\nexport function setISOWeek(date: Date, input: number): Date {\n const week = getISOWeek(date);\n\n return add(date, (input - week) * 7, 'day');\n}\n\nexport function getISOWeek(date: Date, isUTC?: boolean): number {\n return weekOfYear(date, 1, 4, isUTC).week;\n}\n\n","import { addFormatToken } from '../format/format';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\nimport { addWeekParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { parseTwoDigitYear } from './year';\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from './week-calendar-utils';\nimport { createUTCDate } from '../create/date-from-array';\nimport { getISOWeek, getWeek } from './week';\nimport { getISODayOfWeek, getLocaleDayOfWeek } from './day-of-week';\nimport { getLocale } from '../locale/locales';\nimport { setDate, setFullYear, setMonth } from '../utils/date-setters';\nimport { getDate, getFullYear, getMonth } from '../utils/date-getters';\nimport { Locale } from '../locale/locale.class';\nimport { DateFormatterFn, DateFormatterOptions, WeekParsing } from '../types';\n\n// FORMATTING\n\nexport function initWeekYear() {\n addFormatToken(null, ['gg', 2, false], null,\n function (date: Date, opts: DateFormatterOptions): string {\n // return this.weekYear() % 100;\n return (getWeekYear(date, opts.locale) % 100).toString();\n }\n );\n\n addFormatToken(null, ['GG', 2, false], null,\n function (date: Date): string {\n // return this.isoWeekYear() % 100;\n return (getISOWeekYear(date) % 100).toString();\n }\n );\n\n addWeekYearFormatToken('gggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('ggggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('GGGG', _getISOWeekYearFormatCb);\n addWeekYearFormatToken('GGGGG', _getISOWeekYearFormatCb);\n\n// ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week: WeekParsing, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n\n return config;\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week: WeekParsing, config, token) {\n week[token] = parseTwoDigitYear(input);\n\n return config;\n });\n}\n\nfunction addWeekYearFormatToken(token: string, getter: DateFormatterFn): void {\n addFormatToken(null, [token, token.length, false], null, getter);\n}\n\nfunction _getWeekYearFormatCb(date: Date, opts: DateFormatterOptions): string {\n return getWeekYear(date, opts.locale).toString();\n}\n\nfunction _getISOWeekYearFormatCb(date: Date): string {\n return getISOWeekYear(date).toString();\n}\n\n// MOMENTS\n\nexport function getSetWeekYear(date: Date, input: number, locale = getLocale(), isUTC?: boolean): number | Date {\n return getSetWeekYearHelper(date,\n input,\n // this.week(),\n getWeek(date, locale, isUTC),\n // this.weekday(),\n getLocaleDayOfWeek(date, locale, isUTC),\n locale.firstDayOfWeek(),\n locale.firstDayOfYear(),\n isUTC);\n}\n\nexport function getWeekYear(date: Date, locale = getLocale(), isUTC?: boolean): number {\n return weekOfYear(date, locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC).year;\n}\n\nexport function getSetISOWeekYear(date: Date, input: number, isUTC?: boolean): number | Date {\n return getSetWeekYearHelper(date, input, getISOWeek(date, isUTC), getISODayOfWeek(date, isUTC), 1, 4);\n}\n\nexport function getISOWeekYear(date: Date, isUTC?: boolean): number {\n return weekOfYear(date, 1, 4, isUTC).year;\n}\n\nexport function getISOWeeksInYear(date: Date, isUTC?: boolean) {\n return weeksInYear(getFullYear(date, isUTC), 1, 4);\n}\n\nexport function getWeeksInYear(date: Date, isUTC?: boolean, locale: Locale = getLocale()): number {\n return weeksInYear(getFullYear(date, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear());\n}\n\nfunction getSetWeekYearHelper(date: Date, input: number, week: number,\n weekday: number, dow: number, doy: number, isUTC?: boolean): number | Date {\n if (!input) {\n return getWeekYear(date, void 0, isUTC);\n }\n\n const weeksTarget = weeksInYear(input, dow, doy);\n const _week = week > weeksTarget ? weeksTarget : week;\n\n return setWeekAll(date, input, _week, weekday, dow, doy);\n}\n\nfunction setWeekAll(date: Date, weekYear: number, week: number,\n weekday: number, dow: number, doy: number): Date {\n const dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n const _date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n setFullYear(date, getFullYear(_date, true), true);\n setMonth(date, getMonth(_date, true), true);\n setDate(date, getDate(_date, true), true);\n\n return date;\n}\n","import { addFormatToken } from '../format/format';\nimport { DateFormatterOptions } from '../types';\n\n// todo: add support for timezones\n\nexport function initTimezone() {\n // FORMATTING\n addFormatToken('z', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.isUTC ? 'UTC' : '';\n }\n );\n addFormatToken('zz', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.isUTC ? 'Coordinated Universal Time' : '';\n }\n );\n}\n\n// MOMENTS\n\nexport function getZoneAbbr(isUTC: boolean) {\n return isUTC ? 'UTC' : '';\n}\n\nexport function getZoneName(isUTC: boolean) {\n return isUTC ? 'Coordinated Universal Time' : '';\n}\n","import { addFormatToken } from '../format/format';\nimport { unix } from '../utils/date-getters';\nimport { addRegexToken, matchSigned, matchTimestamp } from '../parse/regex';\nimport { addParseToken} from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { DateArray } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\n\n\nexport function initTimestamp() {\n// FORMATTING\n\n addFormatToken('X', null, null, function(date: Date): string {\n return unix(date)\n .toString(10);\n });\n addFormatToken('x', null, null, function(date: Date): string {\n return date.valueOf()\n .toString(10);\n });\n\n// PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n\n addParseToken('X', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._d = new Date(parseFloat(input) * 1000);\n\n return config;\n });\n addParseToken('x', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._d = new Date(toInt(input));\n\n return config;\n });\n}\n","import { addFormatToken } from '../format/format';\nimport { getSeconds } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { SECOND } from './constants';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { DateFormatterOptions } from '../types';\n\n\nexport function initSecond() {\n// FORMATTING\n\n addFormatToken('s', ['ss', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getSeconds(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('second', 's');\n\n// PRIORITY\n\n addUnitPriority('second', 15);\n\n// PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n}\n","import { addFormatToken } from '../format/format';\nimport { addRegexToken, match1 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MONTH } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { getMonth } from '../utils/date-getters';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { setMonth } from '../utils/date-setters';\n\n\nexport function initQuarter() {\n// FORMATTING\n\n addFormatToken('Q', null, 'Qo',\n function(date: Date, opts: DateFormatterOptions): string {\n return getQuarter(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\n addUnitPriority('quarter', 7);\n\n// PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[MONTH] = (toInt(input) - 1) * 3;\n\n return config;\n });\n}\n\n// MOMENTS\n\nexport function getQuarter(date: Date, isUTC = false): number {\n return Math.ceil((getMonth(date, isUTC) + 1) / 3);\n}\n\nexport function setQuarter(date: Date, quarter: number, isUTC?: boolean): Date {\n return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);\n}\n\n// export function getSetQuarter(input) {\n// return input == null\n// ? Math.ceil((this.month() + 1) / 3)\n// : this.month((input - 1) * 3 + this.month() % 3);\n// }\n","// tslint:disable:no-bitwise max-line-length\n// FORMATTING\n\nimport { addFormatToken } from '../format/format';\nimport { zeroFill } from '../utils/zero-fill';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { isNumber, isString, toInt } from '../utils/type-checks';\nimport { addRegexToken, matchOffset, matchShortOffset } from '../parse/regex';\nimport { add } from '../moment/add-subtract';\nimport { addParseToken } from '../parse/token';\nimport { DateArray } from '../types';\nimport { cloneDate } from '../create/clone';\nimport { setMonth } from '../utils/date-setters';\n\nfunction addOffsetFormatToken(token: string, separator: string): void {\n addFormatToken(token, null, null, function (date: Date, config): string {\n let offset = getUTCOffset(date, {_isUTC: config.isUTC, _offset: config.offset});\n let sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\nexport function initOffset() {\n addOffsetFormatToken('Z', ':');\n addOffsetFormatToken('ZZ', '');\n\n// PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n\n return config;\n });\n}\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nconst chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher: RegExp, str: string): number {\n const matches = (str || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n const chunk = matches[matches.length - 1];\n const parts = chunk.match(chunkOffset) || ['-', '0', '0'];\n const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);\n const _min = parts[0] === '+' ? minutes : -minutes;\n\n return minutes === 0 ? 0 : _min;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nexport function cloneWithOffset(input: Date, date: Date,\n config: DateParsingConfig = {}): Date {\n if (!config._isUTC) {\n return input;\n }\n\n const res = cloneDate(date);\n // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000\n const offsetDiff = (config._offset || 0) * 60000;\n const diff = input.valueOf() - res.valueOf() + offsetDiff;\n // Use low-level api, because this fn is low-level api.\n res.setTime(res.valueOf() + diff);\n // todo: add timezone handling\n // hooks.updateOffset(res, false);\n\n return res;\n}\n\nexport function getDateOffset(date: Date): number {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\n// todo: it's from moment timezones\n// hooks.updateOffset = function () {\n// };\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nexport function getUTCOffset(date: Date, config: DateParsingConfig = {}): number {\n const _offset = config._offset || 0;\n\n return config._isUTC ? _offset : getDateOffset(date);\n}\n\nexport function setUTCOffset(date: Date, input: number | string, keepLocalTime?: boolean, keepMinutes?: boolean, config: DateParsingConfig = {}): Date {\n const offset = config._offset || 0;\n let localAdjust;\n let _input = input;\n let _date = date;\n\n if (isString(_input)) {\n _input = offsetFromString(matchShortOffset, _input);\n if (_input === null) {\n return _date;\n }\n } else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {\n _input = _input * 60;\n }\n\n if (!config._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(_date);\n }\n config._offset = _input;\n config._isUTC = true;\n if (localAdjust != null) {\n _date = add(_date, localAdjust, 'minutes');\n }\n if (offset !== _input) {\n if (!keepLocalTime || config._changeInProgress) {\n _date = add(_date, _input - offset, 'minutes', config._isUTC);\n // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);\n } else if (!config._changeInProgress) {\n config._changeInProgress = true;\n // todo: add timezone handling\n // hooks.updateOffset(this, true);\n config._changeInProgress = null;\n }\n }\n\n return _date;\n}\n\n/*\nexport function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n*/\n\nexport function setOffsetToUTC(date: Date, keepLocalTime?: boolean): Date {\n return setUTCOffset(date, 0, keepLocalTime);\n}\n\nexport function isDaylightSavingTime(date: Date): boolean {\n\n return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))\n || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));\n}\n\n/*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}*/\n\nexport function setOffsetToParsedOffset(date: Date, input: string, config: DateParsingConfig = {}): Date {\n if (config._tzm != null) {\n return setUTCOffset(date, config._tzm, false, true, config);\n }\n\n if (isString(input)) {\n const tZone = offsetFromString(matchOffset, input);\n if (tZone != null) {\n return setUTCOffset(date, tZone, false, false, config);\n }\n\n return setUTCOffset(date, 0, true, false, config);\n }\n\n return date;\n}\n\nexport function hasAlignedHourOffset(date: Date, input?: Date) {\n const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;\n\n return (getUTCOffset(date) - _input) % 60 === 0;\n}\n\n\n// DEPRECATED\n/*export function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n const c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}*/\n\n// in Khronos\n/*export function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nexport function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nexport function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}*/\n","import { addFormatToken } from '../format/format';\nimport { getMinutes } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MINUTE } from './constants';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateFormatterOptions } from '../types';\n\n\nexport function initMinute() {\n// FORMATTING\n\n addFormatToken('m', ['mm', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getMinutes(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('minute', 'm');\n\n// PRIORITY\n\n addUnitPriority('minute', 14);\n\n// PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n}\n","// tslint:disable:no-bitwise\n// FORMATTING\n\nimport { addFormatToken } from '../format/format';\nimport { addRegexToken, match1, match1to3, match2, match3, matchUnsigned } from '../parse/regex';\nimport { MILLISECOND } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addParseToken } from '../parse/token';\nimport { DateArray, DateFormatterOptions, WeekParsing } from '../types';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { getMilliseconds } from '../utils/date-getters';\n\n\nexport function initMillisecond() {\n addFormatToken('S', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (~~(getMilliseconds(date, opts.isUTC) / 100)).toString(10);\n }\n );\n\n addFormatToken(null, ['SS', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (~~(getMilliseconds(date, opts.isUTC) / 10)).toString(10);\n }\n );\n\n addFormatToken(null, ['SSS', 3, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC)).toString(10);\n }\n );\n addFormatToken(null, ['SSSS', 4, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 10).toString(10);\n }\n );\n addFormatToken(null, ['SSSSS', 5, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 100).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSS', 6, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 1000).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSSS', 7, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 10000).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSSSS', 8, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 100000).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSSSSS', 9, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 1000000).toString(10);\n }\n );\n\n\n// ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n// PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n let token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[MILLISECOND] = toInt(parseFloat(`0.${input}`) * 1000);\n\n return config;\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n// MOMENTS\n}\n","import { getHours, getMinutes, getSeconds } from '../utils/date-getters';\nimport { addFormatToken } from '../format/format';\nimport { zeroFill } from '../utils/zero-fill';\nimport { Locale } from '../locale/locale.class';\nimport { addRegexToken, match1to2, match2, match3to4, match5to6 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { HOUR, MINUTE, SECOND } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\n\n\nexport function initHour() {\n// FORMATTING\n\n function hFormat(date: Date, isUTC: boolean): number {\n return getHours(date, isUTC) % 12 || 12;\n }\n\n function kFormat(date: Date, isUTC: boolean): number {\n return getHours(date, isUTC) || 24;\n }\n\n addFormatToken('H', ['HH', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getHours(date, opts.isUTC)\n .toString(10);\n }\n );\n addFormatToken('h', ['hh', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return hFormat(date, opts.isUTC)\n .toString(10);\n }\n );\n addFormatToken('k', ['kk', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return kFormat(date, opts.isUTC)\n .toString(10);\n }\n );\n\n addFormatToken('hmm', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n\n return `${_h}${_mm}`;\n }\n );\n\n addFormatToken('hmmss', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n\n return `${_h}${_mm}${_ss}`;\n }\n );\n\n addFormatToken('Hmm', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n\n return `${_H}${_mm}`;\n }\n );\n\n addFormatToken('Hmmss', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n\n return `${_H}${_mm}${_ss}`;\n }\n );\n\n function meridiem(token: string, lowercase: boolean): void {\n addFormatToken(token, null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.meridiem(getHours(date, opts.isUTC), getMinutes(date, opts.isUTC), lowercase);\n }\n );\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n// ALIASES\n\n addUnitAlias('hour', 'h');\n\n// PRIORITY\n addUnitPriority('hour', 13);\n\n\n// PARSING\n\n function matchMeridiem(isStrict: boolean, locale: Locale): RegExp {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(\n ['k', 'kk'],\n function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n\n return config;\n }\n );\n addParseToken(['a', 'A'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n\n return config;\n });\n addParseToken(['h', 'hh'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n\n return config;\n });\n addParseToken('hmm', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n\n return config;\n });\n addParseToken('hmmss', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n\n return config;\n });\n addParseToken('Hmm', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n\n return config;\n });\n addParseToken('Hmmss', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n\n return config;\n });\n\n}\n","// internal storage for locale config files\nimport { Locale, LocaleData } from './locale.class';\nimport { baseConfig } from './locale.defaults';\nimport { hasOwnProp, isArray, isObject, isString, isUndefined, toInt } from '../utils/type-checks';\nimport { compareArrays } from '../utils/compare-arrays';\n\nimport { initWeek } from '../units/week';\nimport { initWeekYear } from '../units/week-year';\nimport { initYear } from '../units/year';\nimport { initTimezone } from '../units/timezone';\nimport { initTimestamp } from '../units/timestamp';\nimport { initSecond } from '../units/second';\nimport { initQuarter } from '../units/quarter';\nimport { initOffset } from '../units/offset';\nimport { initMinute } from '../units/minute';\nimport { initMillisecond } from '../units/millisecond';\nimport { initMonth } from '../units/month';\nimport { initHour } from '../units/hour';\nimport { initDayOfYear } from '../units/day-of-year';\nimport { initDayOfWeek } from '../units/day-of-week';\nimport { initDayOfMonth } from '../units/day-of-month';\n\nconst locales: { [key: string]: Locale } = {};\nconst localeFamilies: { [key: string]: {name: string; config: LocaleData}[] } = {};\nlet globalLocale: Locale;\n\nfunction normalizeLocale(key: string): string {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least,\n// but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names: string[]): Locale {\n let next;\n let locale;\n let i = 0;\n\n while (i < names.length) {\n const split = normalizeLocale(names[i]).split('-');\n let j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n // the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n\n return null;\n}\n\nexport function mergeConfigs(parentConfig: LocaleData,\n childConfig: LocaleData) {\n const res: LocaleData = Object.assign({}, parentConfig);\n\n for (const childProp in childConfig) {\n if (!hasOwnProp(childConfig, childProp)) {\n continue;\n }\n\n if (isObject(parentConfig[childProp]) && isObject(childConfig[childProp])) {\n res[childProp as any] = {};\n Object.assign(res[childProp], parentConfig[childProp]);\n Object.assign(res[childProp], childConfig[childProp]);\n } else if (childConfig[childProp] != null) {\n res[childProp as any] = childConfig[childProp];\n } else {\n delete res[childProp as any];\n }\n }\n for (const parentProp in parentConfig) {\n if (\n hasOwnProp(parentConfig, parentProp) &&\n !hasOwnProp(childConfig, parentProp) &&\n isObject(parentConfig[parentProp as keyof LocaleData])\n ) {\n // make sure changes to properties don't modify parent config\n res[parentProp as any] = Object.assign({}, res[parentProp as keyof LocaleData]);\n }\n }\n\n return res;\n}\n\n\nfunction loadLocale(name: string): Locale {\n // no way!\n /* var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }*/\n if (!locales[name]) {\n // tslint:disable-next-line\n console.error(`Khronos locale error: please load locale \"${name}\" before using it`);\n // throw new Error(`Khronos locale error: please load locale \"${name}\" before using it`);\n }\n\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nexport function getSetGlobalLocale(key?: string | string[], values?: LocaleData): string {\n let data: Locale;\n\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else if (isString(key)) {\n data = defineLocale(key, values);\n }\n\n if (data) {\n globalLocale = data;\n }\n }\n\n return globalLocale && globalLocale._abbr;\n}\n\nexport function defineLocale(name: string, config?: LocaleData): Locale {\n if (config === null) {\n // useful for testing\n delete locales[name];\n globalLocale = getLocale('en');\n\n return null;\n }\n\n if (!config) {\n return;\n }\n\n let parentConfig = baseConfig;\n config.abbr = name;\n if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({ name, config });\n\n return null;\n }\n }\n\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n}\n\nexport function updateLocale(name: string, config?: LocaleData): Locale {\n let _config = config;\n\n if (_config != null) {\n let parentConfig = baseConfig;\n // MERGE\n const tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n _config = mergeConfigs(parentConfig, _config);\n const locale = new Locale(_config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n\n return locales[name];\n}\n\n// returns locale data\nexport function getLocale(key?: string | string[]): Locale {\n setDefaultLocale();\n\n if (!key) {\n return globalLocale;\n }\n // let locale;\n const _key = isArray(key) ? key : [key];\n\n return chooseLocale(_key);\n}\n\nexport function listLocales(): string[] {\n return Object.keys(locales);\n}\n\nfunction setDefaultLocale(): void {\n if (locales[`en`]) {\n\n return undefined;\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal(num: number): string {\n const b = num % 10;\n const output =\n toInt((num % 100) / 10) === 1\n ? 'th'\n : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n\n return num + output;\n }\n });\n\n initWeek();\n initWeekYear();\n initYear();\n initTimezone();\n initTimestamp();\n initSecond();\n initQuarter();\n initOffset();\n initMonth();\n initMinute();\n initMillisecond();\n initHour();\n initDayOfYear();\n initDayOfWeek();\n initDayOfMonth();\n}\n","import { toInt } from '../utils/type-checks';\nimport { createDuration } from './create';\nimport { Duration } from './constructor';\nimport { DateObject } from '../types';\n\nconst ordering: (keyof DateObject)[] = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes', 'seconds', 'milliseconds'];\nconst orderingHash = ordering.reduce((mem: { [key: string]: boolean }, order) => {\n mem[order] = true;\n\n return mem;\n}, {});\n\nexport function isDurationValid(duration: Partial<DateObject>): boolean {\n const durationKeys = Object.keys(duration);\n if (durationKeys\n .some((key: keyof DateObject) => {\n return (key in orderingHash)\n && duration[key] === null\n || isNaN(duration[key]);\n })) {\n return false;\n }\n // for (let key in duration) {\n // if (!(indexOf.call(ordering, key) !== -1 && (duration[key] == null || !isNaN(duration[key])))) {\n // return false;\n // }\n // }\n\n let unitHasDecimal = false;\n for (let i = 0; i < ordering.length; ++i) {\n if (duration[ordering[i]]) {\n // only allow non-integers for smallest unit\n if (unitHasDecimal) {\n return false;\n }\n if (duration[ordering[i]] !== toInt(duration[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\n// export function isValid() {\n// return this._isValid;\n// }\n//\n// export function createInvalid(): Duration {\n// return createDuration(NaN);\n// }\n","export function absCeil (number: number): number {\n return number < 0 ? Math.floor(number) : Math.ceil(number);\n}\n","import { Duration } from './constructor';\nimport { absFloor } from '../utils';\nimport { absCeil } from '../utils/abs-ceil';\n\nexport function bubble(dur: Duration): Duration {\n let milliseconds = dur._milliseconds;\n let days = dur._days;\n let months = dur._months;\n const data = dur._data;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n const seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n const minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n const hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n const monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n const years = absFloor(months / 12);\n months %= 12;\n\n data.day = days;\n data.month = months;\n data.year = years;\n\n return dur;\n}\n\nexport function daysToMonths(day: number): number {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return day * 4800 / 146097;\n}\n\nexport function monthsToDays(month: number): number {\n // the reverse of daysToMonths\n return month * 146097 / 4800;\n}\n","// tslint:disable:cyclomatic-complexity\nimport { createDuration } from './create';\nimport { Locale } from '../locale/locale.class';\nimport { Duration } from './constructor';\n\nlet round = Math.round;\nconst thresholds: { [key: string]: number } = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(str: 'future' | 'past', num: number,\n withoutSuffix: boolean, isFuture: boolean,\n locale: Locale): string {\n return locale.relativeTime(num || 1, !!withoutSuffix, str, isFuture);\n}\n\nexport function relativeTime(posNegDuration: Duration, withoutSuffix: boolean, locale: Locale): string {\n const duration = createDuration(posNegDuration).abs();\n const seconds = round(duration.as('s'));\n const minutes = round(duration.as('m'));\n const hours = round(duration.as('h'));\n const days = round(duration.as('d'));\n const months = round(duration.as('M'));\n const years = round(duration.as('y'));\n\n const a: [string] | [string, number] =\n seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n const b: [string, number | string, boolean, boolean, Locale] =\n [a[0], a[1], withoutSuffix, +posNegDuration > 0, locale];\n // a[2] = withoutSuffix;\n // a[3] = +posNegDuration > 0;\n // a[4] = locale;\n\n return substituteTimeAgo.apply(null, b);\n}\n\n// This function allows you to set the rounding function for relative time strings\nexport function getSetRelativeTimeRounding(roundingFunction: any): boolean | Function {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n\n return true;\n }\n\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nexport function getSetRelativeTimeThreshold(threshold: string, limit: number): boolean | number {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n\n return true;\n}\n\n// export function humanize(withSuffix) {\n// if (!this.isValid()) {\n// return this.localeData().invalidDate();\n// }\n//\n// const locale = this.localeData();\n// let output = relativeTime(this, !withSuffix, locale);\n//\n// if (withSuffix) {\n// output = locale.pastFuture(+this, output);\n// }\n//\n// return locale.postformat(output);\n// }\n","import { getLocale } from '../locale/locales';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { isDurationValid } from './valid';\nimport { bubble, daysToMonths, monthsToDays } from './bubble';\nimport { DateObject } from '../types';\nimport { Locale } from '../locale/locale.class';\nimport { normalizeUnits } from '../units/aliases';\nimport { relativeTime } from './humanize';\nimport { toInt } from '../utils/type-checks';\n\nexport class Duration {\n _milliseconds: number;\n _days: number;\n _months: number;\n _data: Partial<DateObject> = {};\n _locale: Locale = getLocale();\n _isValid: boolean;\n\n constructor(duration: Partial<DateObject>, config: DateParsingConfig = {}) {\n this._locale = config && config._locale || getLocale();\n // const normalizedInput = normalizeObjectUnits(duration);\n const normalizedInput = duration;\n const years = normalizedInput.year || 0;\n const quarters = normalizedInput.quarter || 0;\n const months = normalizedInput.month || 0;\n const weeks = normalizedInput.week || 0;\n const days = normalizedInput.day || 0;\n const hours = normalizedInput.hours || 0;\n const minutes = normalizedInput.minutes || 0;\n const seconds = normalizedInput.seconds || 0;\n const milliseconds = normalizedInput.milliseconds || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1000 +\n minutes * 60 * 1000 + // 1000 * 60\n hours * 1000 * 60 * 60; // using 1000 * 60 * 60\n // instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n // this._data = {};\n\n // this._locale = getLocale();\n\n // this._bubble();\n return bubble(this);\n }\n\n isValid(): boolean {\n return this._isValid;\n }\n\n humanize(withSuffix?: boolean): string {\n // throw new Error(`TODO: implement`);\n\n if (!this.isValid()) {\n return this.localeData().invalidDate;\n }\n\n const locale = this.localeData();\n let output = relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n localeData(): Locale {\n return this._locale;\n }\n\n locale(): string;\n locale(localeKey: string): Duration;\n locale(localeKey?: string): Duration | string {\n if (!localeKey) {\n return this._locale._abbr;\n }\n\n this._locale = getLocale(localeKey) || this._locale;\n\n return this;\n }\n\n\n abs(): Duration {\n const mathAbs = Math.abs;\n\n const data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.month = mathAbs(data.month);\n data.year = mathAbs(data.year);\n\n return this;\n }\n\n as(_units: string): number {\n if (!this.isValid()) {\n return NaN;\n }\n let days;\n let months;\n const milliseconds = this._milliseconds;\n\n const units = normalizeUnits(_units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n\n return units === 'month' ? months : months / 12;\n }\n\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' :\n return days / 7 + milliseconds / 6048e5;\n case 'day' :\n return days + milliseconds / 864e5;\n case 'hours' :\n return days * 24 + milliseconds / 36e5;\n case 'minutes' :\n return days * 1440 + milliseconds / 6e4;\n case 'seconds' :\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'milliseconds':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error(`Unknown unit ${units}`);\n }\n }\n\n valueOf () {\n if (!this.isValid()) {\n return NaN;\n }\n\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n}\n\nexport function isDuration(obj: any): obj is Duration {\n return obj instanceof Duration;\n}\n","import { DateParsingConfig } from './parsing.types';\nimport { getParsingFlags } from './parsing-flags';\n\nexport function isValid(config: DateParsingConfig): boolean {\n if (config._isValid == null) {\n const flags = getParsingFlags(config);\n const parsedParts = Array.prototype.some.call(flags.parsedDateParts, function (i: number) {\n return i != null;\n });\n let isNowValid = !isNaN(config._d && config._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (config._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(config)) {\n config._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n\n return config._isValid;\n}\n\nexport function createInvalid(config: DateParsingConfig, flags?: { nullInput: boolean }): DateParsingConfig {\n config._d = new Date(NaN);\n Object.assign(getParsingFlags(config), flags || { userInvalidated: true });\n\n return config;\n}\n\nexport function markInvalid(config: DateParsingConfig): DateParsingConfig {\n config._isValid = false;\n\n return config;\n}\n","// tslint:disable-next-line\nimport { defaultLocaleMonthsShort, defaultLocaleWeekdaysShort } from '../locale/locale.class';\nimport { DateArray } from '../types';\nimport { DateParsingConfig } from './parsing.types';\nimport { isString } from '../utils/type-checks';\nimport { configFromStringAndFormat } from './from-string-and-format';\nimport { createUTCDate } from './date-from-array';\nimport { createInvalid, markInvalid } from './valid';\nimport { getParsingFlags } from './parsing-flags';\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n// tslint:disable-next-line\nconst extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n// tslint:disable-next-line\nconst basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nconst tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nconst isoDates: [string, RegExp, boolean][] = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/, true],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/, true],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/, true],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/, true],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/, true],\n ['YYYYMMDD', /\\d{8}/, true],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/, true],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/, true]\n];\n\n// iso time formats and regexes\nconst isoTimes: [string, RegExp][] = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nconst aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\nconst obsOffsets: { [key: string]: number } = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n// tslint:disable-next-line\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n// date from iso format\nexport function configFromISO(config: DateParsingConfig): DateParsingConfig {\n if (!isString(config._i)) {\n return config;\n }\n\n const input = config._i;\n const match = extendedIsoRegex.exec(input) || basicIsoRegex.exec(input);\n\n\n let allowTime;\n let dateFormat;\n let timeFormat;\n let tzFormat;\n\n if (!match) {\n config._isValid = false;\n\n return config;\n }\n\n // getParsingFlags(config).iso = true;\n let i;\n let l;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n\n if (dateFormat == null) {\n config._isValid = false;\n\n return config;\n }\n\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n\n if (timeFormat == null) {\n config._isValid = false;\n\n return config;\n }\n\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n\n return config;\n }\n\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n\n return config;\n }\n }\n\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n\n return configFromStringAndFormat(config);\n}\n\n// tslint:disable-next-line\nfunction extractFromRFC2822Strings(yearStr: string, monthStr: string, dayStr: string, hourStr: string, minuteStr: string, secondStr: string): DateArray {\n const result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n}\n\nfunction untruncateYear(yearStr: string): number {\n const year = parseInt(yearStr, 10);\n\n return year <= 49 ? year + 2000 : year;\n}\n\nfunction preprocessRFC2822(str: string): string {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return str\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ').trim();\n}\n\nfunction checkWeekday(weekdayStr: string, parsedInput: DateArray, config: DateParsingConfig): boolean {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n const weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr);\n const weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n\n return false;\n }\n }\n\n return true;\n}\n\nfunction calculateOffset(obsOffset: string, militaryOffset: string, numOffset: string) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n const hm = parseInt(numOffset, 10);\n const m = hm % 100;\n const h = (hm - m) / 100;\n\n return h * 60 + m;\n }\n}\n\n// date and time from ref 2822 format\nexport function configFromRFC2822(config: DateParsingConfig): DateParsingConfig {\n if (!isString(config._i)) {\n return config;\n }\n\n const match = rfc2822.exec(preprocessRFC2822(config._i));\n\n if (!match) {\n return markInvalid(config);\n }\n\n const parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return config;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n\n return config;\n}\n\n// date from iso format or fallback\nexport function configFromString(config: DateParsingConfig): DateParsingConfig {\n if (!isString(config._i)) {\n return config;\n }\n\n const matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n\n return config;\n }\n\n // todo: update logic processing\n // isISO -> configFromISO\n // isRFC -> configFromRFC\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return config;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return config;\n }\n\n // Final attempt, use Input Fallback\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n}\n\n// hooks.createFromInputFallback = deprecate(\n// 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n// 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n// 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n// 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n// function (config) {\n// config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n// }\n// );\n","// moment.js\n// version : 2.18.1\n// authors : Tim Wood, Iskren Chernev, Moment.js contributors\n// license : MIT\n// momentjs.com\n\nimport './units/index';\nimport { formatFunctions, makeFormatFunction } from './format/format';\nimport { Locale } from './locale/locale.class';\nimport { getLocale } from './locale/locales';\nimport { isDateValid } from './utils/type-checks';\n\nexport function formatDate(date: Date, format: string, locale?: string, isUTC?: boolean, offset = 0): string {\n const _locale = getLocale(locale || 'en');\n if (!_locale) {\n throw new Error(\n `Locale \"${locale}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n const _format = format || (isUTC ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ssZ');\n\n const output = formatMoment(date, _format, _locale, isUTC, offset);\n\n if (!output) {\n return output;\n }\n\n return _locale.postformat(output);\n}\n\n// format date using native date object\nexport function formatMoment(date: Date, _format: string, locale: Locale, isUTC?: boolean, offset = 0): string {\n if (!isDateValid(date)) {\n return locale.invalidDate;\n }\n\n const format = expandFormat(_format, locale);\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](date, locale, isUTC, offset);\n}\n\nexport function expandFormat(_format: string, locale: Locale): string {\n let format = _format;\n let i = 5;\n const localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n const replaceLongDateFormatTokens = (input: any) => {\n return locale.formatLongDate(input) || input;\n };\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n","// Pick the first defined of two or three arguments.\nexport function defaults<T>(a?: T, b?: T, c?: T): T {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n\n return c;\n}\n","import { DateParsingConfig } from './parsing.types';\nimport { DateArray } from '../types';\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, YEAR } from '../units/constants';\nimport { daysInYear } from '../units/year';\nimport { getParsingFlags } from './parsing-flags';\nimport { createUTCDate } from './date-from-array';\nimport { createDate } from './date-from-array';\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from '../units/week-calendar-utils';\nimport { defaults } from '../utils/defaults';\n\nfunction currentDateArray(config: DateParsingConfig): DateArray {\n const nowValue = new Date();\n\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nexport function configFromArray(config: DateParsingConfig): DateParsingConfig {\n const input = [];\n let i;\n let date;\n let currentDate;\n let expectedWeekday;\n let yearToUse;\n\n if (config._d) {\n return config;\n }\n\n currentDate = currentDateArray(config);\n\n // compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n // if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = new Date(Date.UTC(yearToUse, 0, config._dayOfYear));\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n\n return config;\n}\n\nfunction dayOfYearFromWeekInfo(config: DateParsingConfig): DateParsingConfig {\n let w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(new Date(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n const curWeek = weekOfYear(new Date(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n\n return config;\n}\n","import { getParsingFlags } from './parsing-flags';\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, WEEK, WEEKDAY, YEAR } from '../units/constants';\nimport { daysInMonth } from '../units/month';\nimport { DateParsingConfig } from './parsing.types';\n\nexport function checkOverflow(config: DateParsingConfig): DateParsingConfig {\n let overflow;\n const a = config._a;\n\n if (a && getParsingFlags(config).overflow === -2) {\n // todo: fix this sh*t\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(config)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(config)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(config)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(config).overflow = overflow;\n }\n\n return config;\n}\n\n","import { DateParsingConfig } from './parsing.types';\nimport { configFromISO, configFromRFC2822 } from './from-string';\nimport { expandFormat } from '../format';\nimport { formattingTokens, formatTokenFunctions } from '../format/format';\nimport { isArray, isString } from '../utils/type-checks';\nimport { getParseRegexForToken } from '../parse/regex';\nimport { addTimeToArrayFromToken } from '../parse/token';\nimport { HOUR } from '../units/constants';\nimport { configFromArray } from './from-array';\nimport { getParsingFlags } from './parsing-flags';\nimport { checkOverflow } from './check-overflow';\nimport { Locale } from '../locale/locale.class';\n\n// constant that refers to the ISO standard\n// hooks.ISO_8601 = function () {};\nexport const ISO_8601 = 'ISO_8601';\n\n// constant that refers to the RFC 2822 form\n// hooks.RFC_2822 = function () {};\nexport const RFC_2822 = 'RFC_2822';\n\n// date from string and format string\nexport function configFromStringAndFormat(config: DateParsingConfig): DateParsingConfig {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === ISO_8601) {\n return configFromISO(config);\n }\n if (config._f === RFC_2822) {\n return configFromRFC2822(config);\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n if (isArray(config._f) || (!config._i && config._i !== 0)) {\n return config;\n }\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n let input = config._i.toString();\n let totalParsedInputLength = 0;\n const inputLength = input.length;\n const tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n let i;\n let token;\n let parsedInput;\n let skipped;\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (input.match(getParseRegexForToken(token, config._locale)) || [])[0];\n if (parsedInput) {\n skipped = input.substr(0, input.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n input = input.slice(input.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = inputLength - totalParsedInputLength;\n if (input.length > 0) {\n getParsingFlags(config).unusedInput.push(input);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = void 0;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n\n return checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap(locale: Locale, _hour: number, meridiem: string): number {\n let hour = _hour;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n }\n\n if (locale.isPM == null) {\n // this is not supposed to happen\n return hour;\n }\n // Fallback\n const isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n\n if (!isPm && hour === 12) {\n hour = 0;\n }\n\n return hour;\n}\n","import { DateParsingConfig } from './parsing.types';\nimport { createInvalid, isValid } from './valid';\nimport { getParsingFlags } from './parsing-flags';\nimport { configFromStringAndFormat } from './from-string-and-format';\n\n// date from string and array of format strings\nexport function configFromStringAndArray(config: DateParsingConfig): DateParsingConfig {\n let tempConfig;\n let bestMoment;\n let scoreToBeat;\n let currentScore;\n\n if (!config._f || config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n\n return createInvalid(config);\n }\n\n let i;\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = Object.assign({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n // or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n return Object.assign(config, bestMoment || tempConfig);\n}\n","import { normalizeObjectUnits } from '../units/aliases';\nimport { configFromArray } from './from-array';\nimport { DateParsingConfig } from './parsing.types';\nimport { isObject, isString } from '../utils/type-checks';\n\nexport function configFromObject(config: DateParsingConfig): DateParsingConfig {\n if (config._d) {\n return config;\n }\n\n const input = config._i;\n if (isObject(input)) {\n const i = normalizeObjectUnits(input as any);\n config._a = [i.year, i.month, i.day, i.hours, i.minutes, i.seconds, i.milliseconds]\n // todo: obsolete -> remove it\n .map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n }\n\n return configFromArray(config);\n}\n","// tslint:disable:max-line-length\nimport { isArray, isDate, isNumber, isObject, isObjectEmpty, isString, isUndefined } from '../utils/type-checks';\nimport { DateParsingConfig } from './parsing.types';\nimport { getLocale } from '../locale/locales';\nimport { createInvalid, isValid } from './valid';\nimport { configFromStringAndArray } from './from-string-and-array';\nimport { configFromStringAndFormat } from './from-string-and-format';\nimport { cloneDate } from './clone';\nimport { configFromString } from './from-string';\nimport { configFromArray } from './from-array';\nimport { configFromObject } from './from-object';\nimport { checkOverflow } from './check-overflow';\nimport { DateInput } from '../test/chain';\n\nfunction createFromConfig(config: DateParsingConfig): DateParsingConfig {\n const res = checkOverflow(prepareConfig(config));\n // todo: remove, in moment.js it's never called cuz of moment constructor\n res._d = new Date(res._d != null ? res._d.getTime() : NaN);\n if (!isValid(Object.assign({}, res, {_isValid: null}))) {\n res._d = new Date(NaN);\n }\n // todo: update offset\n /*if (res._nextDay) {\n // Adding is smart enough around DST\n res._d = add(res._d, 1, 'day');\n res._nextDay = undefined;\n }*/\n\n return res;\n}\n\nexport function prepareConfig(config: DateParsingConfig): DateParsingConfig {\n let input = config._i;\n const format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid(config, { nullInput: true });\n }\n\n if (isString(input)) {\n config._i = input = config._locale.preparse(input, format);\n }\n\n if (isDate(input)) {\n config._d = cloneDate(input);\n\n return config;\n }\n\n // todo: add check for recursion\n\n if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config: DateParsingConfig): DateParsingConfig {\n const input = config._i;\n if (isUndefined(input)) {\n config._d = new Date();\n } else if (isDate(input)) {\n config._d = cloneDate(input);\n } else if (isString(input)) {\n configFromString(config);\n } else if (isArray<string | number>(input) && input.length) {\n const _arr: (string | number)[] = input.slice(0);\n config._a = _arr.map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n }\n\n return config;\n}\n\nexport function createLocalOrUTC(input: DateInput, format?: string | string[], localeKey?: string, strict?: boolean, isUTC?: boolean): DateParsingConfig {\n const config: DateParsingConfig = {};\n let _input = input;\n\n // params switch -> skip; test it well\n // if (localeKey === true || localeKey === false) {\n // strict = localeKey;\n // localeKey = undefined;\n // }\n\n // todo: fail fast and return not valid date\n if ((isObject(_input) && isObjectEmpty(_input)) || (isArray(_input) && _input.length === 0)) {\n _input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n // config._isAMomentObject = true;\n config._useUTC = config._isUTC = isUTC;\n config._l = localeKey;\n config._i = _input;\n config._f = format;\n config._strict = strict;\n\n return createFromConfig(config);\n}\n","import { createLocalOrUTC } from './from-anything';\nimport { DateInput } from '../test/chain';\nimport { isDate } from '../utils/type-checks';\n\nexport function parseDate(input: DateInput, format?: string | string[],\n localeKey?: string, strict?: boolean, isUTC?: boolean): Date {\n if (isDate(input)) {\n return input;\n }\n\n const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\n\n return config._d;\n}\n\nexport function utcAsLocal(date) {\n if (!(date instanceof Date)) {\n return null;\n }\n\n return new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n );\n}\n","export function absRound(num: number): number {\n return num < 0 ? Math.round(num * -1) * -1 : Math.round(num);\n}\n","import { UnitOfTime } from '../types';\nimport { endOf, startOf } from './start-end-of';\n\nexport function isAfter(\n date1: Date,\n date2: Date,\n units: UnitOfTime = 'milliseconds'\n): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n if (units === 'milliseconds') {\n return date1.valueOf() > date2.valueOf();\n }\n\n return date2.valueOf() < startOf(date1, units).valueOf();\n}\n\nexport function isBefore(\n date1: Date,\n date2: Date,\n units: UnitOfTime = 'milliseconds'\n): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n if (units === 'milliseconds') {\n return date1.valueOf() < date2.valueOf();\n }\n\n return endOf(date1, units).valueOf() < date2.valueOf();\n}\n\nexport function isDisabledDay(date: Date, daysDisabled: number[]): boolean {\n if (daysDisabled === undefined || !daysDisabled || !daysDisabled.length) {\n return false;\n }\n\n return daysDisabled.some((day: number) => day === date.getDay());\n}\n\nexport function isBetween(\n date: Date,\n from: Date,\n to: Date,\n units: UnitOfTime,\n inclusivity = '()'\n): boolean {\n const leftBound =\n inclusivity[0] === '('\n ? isAfter(date, from, units)\n : !isBefore(date, from, units);\n const rightBound =\n inclusivity[1] === ')'\n ? isBefore(date, to, units)\n : !isAfter(date, to, units);\n\n return leftBound && rightBound;\n}\n\nexport function isSame(\n date1: Date,\n date2: Date,\n units: UnitOfTime = 'milliseconds'\n): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n if (units === 'milliseconds') {\n return date1.valueOf() === date2.valueOf();\n }\n\n const inputMs = date2.valueOf();\n\n return (\n startOf(date1, units).valueOf() <= inputMs &&\n inputMs <= endOf(date1, units).valueOf()\n );\n}\n\nexport function isSameDay(date1: Date, date2: Date):boolean{\n return (date1.getDay() == date2.getDay());\n}\n\nexport function isSameOrAfter(\n date1: Date,\n date2: Date,\n units?: UnitOfTime\n): boolean {\n return isSame(date1, date2, units) || isAfter(date1, date2, units);\n}\n\nexport function isSameOrBefore(\n date1: Date,\n date2: Date,\n units?: UnitOfTime\n): boolean {\n return isSame(date1, date2, units) || isBefore(date1, date2, units);\n}\n","// ASP.NET json date format regex\nimport { Duration, isDuration } from './constructor';\nimport { isDateValid, isNumber, isObject, isString, toInt } from '../utils/type-checks';\nimport { DATE, HOUR, MILLISECOND, MINUTE, SECOND } from '../units/constants';\nimport { parseDate } from '../create/local';\nimport { absRound } from '../utils/abs-round';\nimport { DateObject } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { cloneWithOffset } from '../units/offset';\nimport { isAfter, isBefore } from '../utils/date-compare';\nimport { getFullYear, getMonth } from '../utils/date-getters';\nimport { add } from '../moment/add-subtract';\nimport { cloneDate } from '../create/clone';\n\nconst aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\n// tslint:disable-next-line\nconst isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nexport type DurationInput = string | number | Duration | Partial<DateObject> | { from: Date; to: Date };\n\nexport function createDuration(input?: DurationInput, key?: string, config: DateParsingConfig = {}) {\n const duration = convertDuration(input, key);\n // matching against regexp is expensive, do it on demand\n\n return new Duration(duration, config);\n}\n\nfunction convertDuration(input: any, key: string): Partial<DateObject> {\n // checks for null or undefined\n if (input == null) {\n return {};\n }\n\n if (isDuration(input)) {\n return {\n milliseconds: input._milliseconds,\n day: input._days,\n month: input._months\n };\n }\n if (isNumber(input)) {\n // duration = {};\n return key ? { [key]: input } : { milliseconds: input };\n }\n\n if (isString(input)) {\n let match = aspNetRegex.exec(input);\n\n if (match) {\n const sign = (match[1] === '-') ? -1 : 1;\n\n return {\n year: 0,\n day: toInt(match[DATE]) * sign,\n hours: toInt(match[HOUR]) * sign,\n minutes: toInt(match[MINUTE]) * sign,\n seconds: toInt(match[SECOND]) * sign,\n // the millisecond decimal point is included in the match\n milliseconds: toInt(absRound(toInt(match[MILLISECOND]) * 1000)) * sign\n };\n }\n\n match = isoRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n\n return {\n year: parseIso(match[2], sign),\n month: parseIso(match[3], sign),\n week: parseIso(match[4], sign),\n day: parseIso(match[5], sign),\n hours: parseIso(match[6], sign),\n minutes: parseIso(match[7], sign),\n seconds: parseIso(match[8], sign)\n };\n }\n\n }\n\n if (isObject<{from: any; to: any}>(input) && ('from' in input || 'to' in input)) {\n const diffRes = momentsDifference(parseDate(input.from), parseDate(input.to));\n\n return {\n milliseconds: diffRes.milliseconds,\n month: diffRes.months\n };\n }\n\n return input;\n}\n\n// createDuration.fn = Duration.prototype;\n// createDuration.invalid = invalid;\n\nfunction parseIso(inp: string, sign: number): number {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n const res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base: Date, other: Date): { milliseconds: number; months: number } {\n const res = { milliseconds: 0, months: 0 };\n\n res.months = getMonth(other) - getMonth(base) +\n (getFullYear(other) - getFullYear(base)) * 12;\n const _basePlus = add(cloneDate(base), res.months, 'month');\n if (isAfter(_basePlus, other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(add(cloneDate(base), res.months, 'month'));\n\n return res;\n}\n\nfunction momentsDifference(base: Date, other: Date): { milliseconds: number; months: number } {\n if (!(isDateValid(base) && isDateValid(other))) {\n return { milliseconds: 0, months: 0 };\n }\n\n let res;\n const _other = cloneWithOffset(other, base, {_offset: base.getTimezoneOffset()});\n if (isBefore(base, _other)) {\n res = positiveMomentsDifference(base, _other);\n } else {\n res = positiveMomentsDifference(_other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n","import { createDuration } from '../duration/create';\nimport { absRound } from '../utils/abs-round';\nimport { Duration } from '../duration/constructor';\nimport { getDate, getMonth, getTime } from '../utils/date-getters';\nimport { setDate, setMonth, setTime } from '../utils/date-setters';\nimport { cloneDate } from '../create/clone';\nimport { UnitOfTime } from '../types';\n\nexport function add(date: Date, val: number, period: UnitOfTime, isUTC?: boolean): Date {\n const dur = createDuration(val, period);\n\n return addSubtract(date, dur, 1, isUTC);\n}\n\nexport function subtract(date: Date, val: number, period: UnitOfTime, isUTC?: boolean): Date {\n const dur = createDuration(val, period);\n\n return addSubtract(date, dur, -1, isUTC);\n}\n\nexport function addSubtract(date: Date, duration: Duration, isAdding: number, isUTC?: boolean): Date {\n const milliseconds = duration._milliseconds;\n const days = absRound(duration._days);\n const months = absRound(duration._months);\n\n // todo: add timezones support\n // const _updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(date, getMonth(date, isUTC) + months * isAdding, isUTC);\n }\n if (days) {\n setDate(date, getDate(date, isUTC) + days * isAdding, isUTC);\n }\n if (milliseconds) {\n setTime(date, getTime(date) + milliseconds * isAdding);\n }\n\n return cloneDate(date);\n // todo: add timezones support\n // if (_updateOffset) {\n // hooks.updateOffset(date, days || months);\n // }\n}\n","import { addFormatToken } from '../format/format';\nimport { Locale } from '../locale/locale.class';\nimport { getDay } from '../utils/date-getters';\nimport { addRegexToken, match1to2 } from '../parse/regex';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addWeekParseToken } from '../parse/token';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { isNumber, isString, toInt } from '../utils/type-checks';\nimport { DateFormatterOptions, WeekParsing } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { add } from '../moment/add-subtract';\nimport { getLocale } from '../locale/locales';\n\n\nexport function initDayOfWeek() {\n// FORMATTING\n\n addFormatToken('d', null, 'do',\n function(date: Date, opts: DateFormatterOptions): string {\n return getDay(date, opts.isUTC)\n .toString(10);\n }\n );\n\n addFormatToken('dd', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('ddd', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('dddd', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.weekdays(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('e', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getLocaleDayOfWeek(date, opts.locale, opts.isUTC)\n .toString(10);\n // return getDay(date, opts.isUTC).toString(10);\n }\n );\n addFormatToken('E', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getISODayOfWeek(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n// PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n\n addRegexToken('dd', function(isStrict: boolean, locale: Locale): RegExp {\n return locale.weekdaysMinRegex(isStrict);\n });\n\n addRegexToken('ddd', function(isStrict: boolean, locale: Locale): RegExp {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function(isStrict: boolean, locale: Locale): RegExp {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(\n ['dd', 'ddd', 'dddd'],\n function(input: string, week: WeekParsing, config: DateParsingConfig, token) {\n const weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = !!input;\n }\n\n return config;\n }\n );\n\n addWeekParseToken(\n ['d', 'e', 'E'],\n function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {\n week[token] = toInt(input);\n\n return config;\n }\n );\n}\n\n// HELPERS\n\nexport function parseWeekday(input: string | number, locale: Locale): number {\n if (!isString(input)) {\n return input;\n }\n\n const _num = parseInt(input, 10);\n if (!isNaN(_num)) {\n return _num;\n }\n\n const _weekDay = locale.weekdaysParse(input);\n if (isNumber(_weekDay)) {\n return _weekDay;\n }\n\n return null;\n}\n\nexport function parseIsoWeekday(input: string | number, locale: Locale = getLocale()): number {\n if (isString(input)) {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n\n return isNumber(input) && isNaN(input) ? null : input;\n}\n\n// MOMENTS\n\nexport function getSetDayOfWeek(date: Date, input: number, opts: { isUTC?: boolean; locale: Locale }): Date | number {\n if (!input) {\n return getDayOfWeek(date, opts.isUTC);\n }\n\n return setDayOfWeek(date, input, opts.locale, opts.isUTC);\n}\n\nexport function setDayOfWeek(date: Date, input: number, locale = getLocale(), isUTC?: boolean): Date {\n const day = getDay(date, isUTC);\n const _input = parseWeekday(input, locale);\n\n return add(date, _input - day, 'day');\n}\n\nexport function getDayOfWeek(date: Date, isUTC?: boolean): number {\n return getDay(date, isUTC);\n}\n\n/********************************************/\n\n// todo: utc\n// getSetLocaleDayOfWeek\nexport function getLocaleDayOfWeek(date: Date, locale = getLocale(), isUTC?: boolean): number {\n return (getDay(date, isUTC) + 7 - locale.firstDayOfWeek()) % 7;\n}\n\nexport function setLocaleDayOfWeek(date: Date, input: number, opts: { locale?: Locale; isUTC?: boolean } = {}): Date {\n const weekday = getLocaleDayOfWeek(date, opts.locale, opts.isUTC);\n\n return add(date, input - weekday, 'day');\n}\n\n\n// getSetISODayOfWeek\nexport function getISODayOfWeek(date: Date, isUTC?: boolean): number {\n return getDay(date, isUTC) || 7;\n}\n\nexport function setISODayOfWeek(date: Date, input: number | string, opts: { locale?: Locale } = {}): Date {\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n const weekday = parseIsoWeekday(input, opts.locale);\n\n return setDayOfWeek(date, getDayOfWeek(date) % 7 ? weekday : weekday - 7);\n}\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n\n//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\nimport { LocaleData } from '../locale/locale.class';\n\nconst symbolMap: {[key: string]: string} = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n};\nconst numberMap: {[key: string]: string} = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nconst pluralForm = function (num: number): number {\n return num === 0 ? 0 : num === 1 ? 1 : num === 2 ? 2 : num % 100 >= 3 && num % 100 <= 10 ? 3 : num % 100 >= 11 ? 4 : 5;\n};\nconst plurals: {[key: string]: [string, string, [string, string], string, string, string]} = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nconst pluralize = function (u: string) {\n return function (num: number, withoutSuffix: boolean): string {\n const f = pluralForm(num);\n let str = plurals[u][pluralForm(num)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return (str as string).replace(/%d/i, num.toString());\n };\n};\nconst months: string[] = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\n\nexport const arLocale: LocaleData = {\n abbr: 'ar',\n months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM(input) {\n return 'م' === input;\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse(str: string): string {\n return str.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat(str: string) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { Khronos } from '../test/chain';\n\n//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Iskren Ivov Chernev : https://github.com/ichernev\n//! author : Kunal Marwaha : https://github.com/marwahaha\n//! author : Matt Grande : https://github.com/mattgrande\n//! author : Isaac Cambron : https://github.com/icambron\n//! author : Venelin Manchev : https://github.com/vmanchev\n\nexport const bgLocale: LocaleData = {\n abbr: 'bg',\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function (d: any) {\n\n switch (d) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дни',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (_num: number): string {\n\n const number = Number(_num);\n\n let lastDigit = number % 10,\n last2Digits = number % 100;\n\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Xavier Arbat : https://github.com/XavisaurusRex\n\nlet monthsShortDot = 'gen._feb._mar._abr._mai._jun._jul._ago._set._oct._nov._des.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_mai_jun_jul_ago_set_oct_nov_des'.split('_');\n\nlet monthsParse = [/^gen/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^jun/i, /^jul/i, /^ago/i, /^set/i, /^oct/i, /^nov/i, /^des/i];\nlet monthsRegex = /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre|gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i;\n\nexport const caLocale: LocaleData = {\n abbr: 'ca',\n months: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n }\n\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i,\n monthsShortStrictRegex: /^(gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'diu._dil._dim._dix._dij._div._dis.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date: Date) {\n return '[avui a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextDay(date: Date) {\n return '[dema a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextWeek(date: Date) {\n return 'dddd [a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastDay(date: Date) {\n return '[ahir a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastWeek(date: Date) {\n return '[el] dddd [' + ('passada la ' + (getHours(date) !== 1) ? 'passades les' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|on|er|rt|é)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n const output = (num > 4) ? 'é' :\n (num === 1 || num === 3) ? 'r' :\n (num === 2) ? 'n' :\n (num === 4) ? 't' : 'é';\n return num + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\nconst months: string[] = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nconst monthsShort: string[] = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\nfunction plural(num: number): boolean {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n const result = num + ' ';\n\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n // break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n // break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n // break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n // break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n // break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n // break;\n }\n}\n\nexport const csLocale: LocaleData = {\n abbr: 'cs',\n months,\n monthsShort,\n monthsParse: (function (months, monthsShort) {\n let i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months, monthsShort)),\n shortMonthsParse: (function (monthsShort) {\n let i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort)),\n longMonthsParse: (function (months) {\n let i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months)),\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Danish (Denmark) [da]\n//! author : Per Hansen : https://github.com/perhp\n\nexport const daLocale: LocaleData = {\n abbr: 'da',\n months : 'Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays : 'Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag'.split('_'),\n weekdaysShort : 'Søn_Man_Tir_Ons_Tor_Fre_Lør'.split('_'),\n weekdaysMin : 'Sø_Ma_Ti_On_To_Fr_Lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'på dddd [kl.] LT',\n lastDay : '[i går kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-key-quotes\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\nfunction processRelativeTime(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n const format: { [key: string]: [string, string] } = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [num + ' Tage', num + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [num + ' Monate', num + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [num + ' Jahre', num + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nexport const deLocale: LocaleData = {\n abbr: 'de',\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\nexport const enGbLocale: LocaleData = {\n abbr: 'en-gb',\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n const b = num % 10,\n output = (~~(num % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return num + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\nexport const esDoLocale: LocaleData = {\n abbr: 'es-do',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n } else {\n return monthsShortDot[getMonth(date, isUTC)];\n }\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date: Date): string {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date): string {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date): string {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date): string {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date): string {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\nexport const esLocale: LocaleData = {\n abbr: 'es',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n }\n\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date: Date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nlet monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nexport const esUsLocale: LocaleData = {\n abbr: 'es-us',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n } else {\n return monthsShortDot[getMonth(date, isUTC)];\n }\n },\n monthsParseExact: true,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM [de] D [de] YYYY',\n LLL: 'MMMM [de] D [de] YYYY h:mm A',\n LLLL: 'dddd, MMMM [de] D [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date: Date): string {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date): string {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date): string {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date): string {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date): string {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Chris Gedrim : https://github.com/a90machado\n\nconst processRelativeTime = function (num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n const format = {\n s : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [num + 'sekundi', num + 'sekundit'],\n m : ['ühe minuti', 'üks minut'],\n mm: [num + ' minuti', num + ' minutit'],\n h : ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [num + ' tunni', num + ' tundi'],\n d : ['ühe päeva', 'üks päev'],\n M : ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [num + ' kuu', num + ' kuud'],\n y : ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [num + ' aasta', num + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n};\n\nexport const etLocale: LocaleData = {\n abbr: 'et',\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n// https://github.com/moment/moment/blob/develop/locale/fi.js\n\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(num, isFuture) + ' ' + result;\n return result;\n}\n\nfunction verbalNumber(num: number, isFuture: boolean) {\n return num < 10 ? (isFuture ? numbersFuture[num] : numbersPast[num]) : num;\n}\n\nexport const fiLocale: LocaleData = {\n abbr: 'fi',\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\nexport const frLocale: LocaleData = {\n abbr: 'fr',\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal(_num: number, period: string): string {\n const num = Number(_num);\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return num + (num === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return num + (num === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return num + (num === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Darío Beiró : https://github.com/quinobravo\n\nlet monthsShortDot = 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsShort = 'xan_feb_mar_abr_mai_xuñ_xul_ago_set_out_nov_dec'.split('_');\n\nlet monthsParse = [/^xan/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^xuñ/i, /^xul/i, /^ago/i, /^set/i, /^out/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro|xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i;\n\nexport const glLocale: LocaleData = {\n abbr: 'gl',\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n }\n\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i,\n monthsShortStrictRegex: /^(xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date: Date) {\n return '[hoxe á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date) {\n return '[mañan á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date) {\n return 'dddd [á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date) {\n return '[onte á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date) {\n return '[o] dddd [pasado á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\nexport const heLocale: LocaleData = {\n abbr: 'he',\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh(num: number): string {\n if (num === 2) {\n return 'שעתיים';\n }\n return num + ' שעות';\n },\n d: 'יום',\n dd(num: number): string {\n if (num === 2) {\n return 'יומיים';\n }\n return num + ' ימים';\n },\n M: 'חודש',\n MM(num: number): string {\n if (num === 2) {\n return 'חודשיים';\n }\n return num + ' חודשים';\n },\n y: 'שנה',\n yy(num: number): string {\n if (num === 2) {\n return 'שנתיים';\n } else if (num % 10 === 0 && num !== 10) {\n return num + ' שנה';\n }\n return num + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM(input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\nlet symbolMap: {[key: string]: string} = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap: {[key: string]: string} = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\nexport const hiLocale: LocaleData = {\n abbr: 'hi',\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष'\n },\n preparse(str: string): string {\n return str.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat(str: string): string {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\nlet weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + ((isFuture || withoutSuffix) ? ' másodperc' : ' másodperce');\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(date: Date, isFuture: boolean) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[getDayOfWeek(date)] + '] LT[-kor]';\n}\n\nexport const huLocale: LocaleData = {\n abbr: 'hu',\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek (date: Date) {\n return week(date, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek (date: Date) {\n return week(date, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Danijel Grmec : https://github.com/cobaltsis\n\nexport const hrLocale: LocaleData = {\n abbr: 'hr',\n months: 'Siječanj_Veljača_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac'.split('_'),\n monthsShort: 'Sij_Velj_Ožu_Tra_Svi_Lip_Srp_Kol_Ruj_Lis_Stu_Pro'.split('_'),\n weekdays: 'Nedjelja_Ponedjeljak_Utorak_Srijeda_Četvrtak_Petak_Subota'.split('_'),\n weekdaysShort: 'Ned_Pon_Uto_Sri_Čet_Pet_Sub'.split('_'),\n weekdaysMin: 'Ne_Po_Ut_Sr_Če_Pe_Su'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Danas u] LT',\n nextDay: '[Sutra u] LT',\n nextWeek: 'dddd [u] LT',\n lastDay: '[Jučer u] LT',\n lastWeek: '[Zadnji] dddd [u] LT',\n sameElse: 'L'\n },\n invalidDate: 'Neispravan datum',\n relativeTime: {\n future: 'za %s',\n past: '%s prije',\n s: 'nekoliko sekundi',\n ss: '%d sekundi',\n m: 'minuta',\n mm: '%d minuta',\n h: 'sat',\n hh: '%d sati',\n d: 'dan',\n dd: '%d dana',\n M: 'mjesec',\n MM: '%d mjeseci',\n y: 'godina',\n yy: '%d godina'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n const b = num % 10,\n output = (~~(num % 100 / 10) === 1) ? '.' :\n (b === 1) ? '.' :\n (b === 2) ? '.' :\n (b === 3) ? '.' : '.';\n return num + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Indonesia [id]\n//! author : Romy Kusuma : https://github.com/rkusuma\n//! reference: https://github.com/moment/moment/blob/develop/locale/id.js\n\nexport const idLocale: LocaleData = {\n abbr: 'id',\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n ss : '%d detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n\nexport const itLocale: LocaleData = {\n abbr: 'it',\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future(num: number): string {\n return ((/^[0-9].+$/).test(num.toString(10)) ? 'tra' : 'in') + ' ' + num;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: 'un\\'ora',\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\nexport const jaLocale: LocaleData = {\n abbr: 'ja',\n months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日 HH:mm dddd',\n l : 'YYYY/MM/DD',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日 HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM (input) {\n return input === '午後';\n },\n meridiem (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : '[来週]dddd LT',\n lastDay : '[昨日] LT',\n lastWeek : '[前週]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}日/,\n ordinal (num: number, period: string): string {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n default:\n return num.toString(10);\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n ss : '%d秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n//! author : Levan Tskipuri : https://github.com/tskipa\n\nexport const kaLocale: LocaleData = {\n abbr: 'ka',\n months : {\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_'),\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future(s: number): string {\n var st = s.toString();\n return (/(წამი|წუთი|საათი|წელი)/).test(st) ?\n st.replace(/ი$/, 'ში') :\n st + 'ში';\n },\n past(s: number): string {\n var st = s.toString();\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(st)) {\n return st.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(st)) {\n return st.replace(/წელი$/, 'წლის წინ');\n }\n },\n s : 'რამდენიმე წამი',\n ss : '%d წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal(_num: number, _period: string): string {\n const num = Number(_num);\n if (num === 0) {\n return num.toString();\n }\n if (num === 1) {\n return num + '-ლი';\n }\n if ((num < 20) || (num <= 100 && (num % 20 === 0)) || (num % 100 === 0)) {\n return 'მე-' + num;\n }\n return num + '-ე';\n },\n week : {\n dow : 1,\n doy : 4\n }\n};\n","// ! moment.js locale configuration\n// ! locale : Kazakh [kk]\n// ! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\nimport { LocaleData } from '..';\n\nconst suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n};\n\nexport const kkLocale: LocaleData = {\n abbr: 'kk',\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n ss : '%d секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal(_num: number): string {\n const a = _num % 10;\n const b = _num >= 100 ? 100 : null;\n\n return _num + (suffixes[_num] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-shorthand\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\nexport const koLocale: LocaleData = {\n abbr: 'ko',\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h:mm',\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD',\n ll : 'YYYY년 MMMM D일',\n lll : 'YYYY년 MMMM D일 A h:mm',\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '1분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n ordinal : function (num: number, period: string): string {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '일';\n case 'M':\n return num + '월';\n case 'w':\n case 'W':\n return num + '주';\n default:\n return num.toString(10);\n }\n },\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Stanislavas Guk : https://github.com/ixoster\n\nconst units = {\n ss : 'sekundė_sekundžių_sekundes',\n m : 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h : 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d : 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M : 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y : 'metai_metų_metus',\n yy: 'metai_metų_metus'\n};\nfunction translateSeconds(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(num: number) {\n return num % 10 === 0 || (num > 10 && num < 20);\n}\nfunction forms(key: string) {\n return (units as any)[key].split('_');\n}\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n let result = num + ' ';\n if (num === 1) {\n return result + translateSingular(num, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(num) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(num) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\n\nexport const ltLocale: LocaleData = {\n abbr: 'lt',\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n ss : translate,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal(num) {\n return num + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Matiss Janis Aboltins : https://github.com/matissjanis\n\nexport const lvLocale: LocaleData = {\n abbr: 'lv',\n months : 'Janvāris_Februāris_Marts_Aprīlis_Maijs_Jūnijs_Jūlijs_Augusts_Septembris_Oktobris_Novembris_Decembris'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mai_Jūn_Jūl_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays : 'Svētdiena_Pirmdiena_Otrdiena_Trešdiena_Ceturtdiena_Piektdiena_Sestdiena'.split('_'),\n weekdaysShort : 'Svētd_Pirmd_Otrd_Trešd_Ceturtd_Piektd_Sestd'.split('_'),\n weekdaysMin : 'Sv_Pi_Ot_Tr_Ce_Pk_Se'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : 'dažām sekundēm',\n ss : '%d sekundēm',\n m : 'minūtes',\n mm : '%d minūtēm',\n h : 'stundas',\n hh : '%d stundām',\n d : 'dienas',\n dd : '%d dienām',\n M : 'mēneša',\n MM : '%d mēnešiem',\n y : 'gada',\n yy : '%d gadiem'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal(num) {\n return num + '.';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-shorthand\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return num + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return num + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return num + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return num + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return num + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return num + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return num.toString(10);\n }\n}\n\nexport const mnLocale: LocaleData = {\n abbr: 'mn',\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (num: number, period: string): string {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + ' өдөр';\n default:\n return num.toString(10);\n }\n }\n};\n","// tslint:disable:comment-format\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n\nexport const nbLocale: LocaleData = {\n abbr: 'nb',\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nlet monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nexport const nlBeLocale: LocaleData = {\n abbr: 'nl-be',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n } else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nexport const nlLocale: LocaleData = {\n abbr: 'nl',\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort (date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n } else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal (_num: number): string {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getMonth } from '../utils/date-getters';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\nlet monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nlet monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n\nfunction plural(num: number): boolean {\n return (num % 10 < 5) && (num % 10 > 1) && ((~~(num / 10) % 10) !== 1);\n}\n\nfunction translate(num: number, withoutSuffix: boolean, key: string): string {\n let result = num + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(num) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(num) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(num) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(num) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(num) ? 'lata' : 'lat');\n }\n}\n\nexport const plLocale: LocaleData = {\n abbr: 'pl',\n months(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[getMonth(date, isUTC)] + '|' + monthsNominative[getMonth(date, isUTC)] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[getMonth(date, isUTC)];\n } else {\n return monthsNominative[getMonth(date, isUTC)];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 5:\n return '[W piątek o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 4:\n return '[W zeszłą czwartek o] LT';\n case 5:\n return '[W zeszłą piątek o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\nexport const ptBrLocale: LocaleData = {\n abbr: 'pt-br',\n months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek(date: Date) {\n return (getDayOfWeek(date) === 0 || getDayOfWeek(date) === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: '%s atrás',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº'\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { LocaleData } from '../locale/locale.class';\n\n// ! moment.js locale configuration\n// ! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n// ! author : Earle white: https://github.com/5earle\n\nfunction relativeTimeWithPlural(num: number, withoutSuffix: boolean, key: string): string {\n let format: {[key:string]: string} = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani'\n };\n\n let separator = ' ';\n if (num % 100 >= 20 || (num >= 100 && num % 100 === 0)) {\n separator = ' de ';\n }\n return num + separator + format[key];\n}\n\n\nexport const roLocale: LocaleData = {\n abbr: 'ro',\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getWeek } from '../units/week';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\nfunction plural(word: string, num: number): string {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\n\nfunction relativeTimeWithPlural(num: number, withoutSuffix: boolean, key: string): string {\n let format: {[key: string]: string} = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n return num + ' ' + plural(format[key], +num);\n}\n\nlet monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nexport const ruLocale: LocaleData = {\n abbr: 'ru',\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek(date: Date, now: Date) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd [в] LT';\n }\n } else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek(date: Date, now: Date) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd [в] LT';\n }\n } else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM(input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal(_num: number, period: string): string {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return num + '-й';\n case 'D':\n return num + '-го';\n case 'w':\n case 'W':\n return num + '-я';\n default:\n return num.toString(10);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Jozef Pažin : https://github.com/atiris\n\nconst months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nconst monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n\nfunction plural(num: number): boolean {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n const result = num + ' ';\n\n switch (key) {\n case 's':// a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'ss':// 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'sekundy' : 'sekúnd');\n }\n else {\n return result + 'sekundami';\n }\n // break;\n case 'm':// a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm':// 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'minúty' : 'minút');\n }\n else {\n return result + 'minútami';\n }\n // break;\n case 'h':// an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh':// 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'hodiny' : 'hodín');\n }\n else {\n return result + 'hodinami';\n }\n // break;\n case 'd':// a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd':// 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'dni' : 'dní');\n }\n else {\n return result + 'dňami';\n }\n // break;\n case 'M':// a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM':// 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'mesiace' : 'mesiacov');\n }\n else {\n return result + 'mesiacmi';\n }\n // break;\n case 'y':// a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy':// 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'roky' : 'rokov');\n }\n else {\n return result + 'rokmi';\n }\n // break;\n }\n}\n\nexport const skLocale: LocaleData = {\n abbr: 'sk',\n months,\n monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'o %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-key-quotes\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : mihan : https://github.com/mihan\n\nfunction processRelativeTime(number: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += withoutSuffix || isFuture ? 'sekund' : 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\n\nexport const slLocale: LocaleData = {\n abbr: 'sl',\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Agon Cecelia : https://github.com/agoncecelia\n\nexport const sqLocale: LocaleData = {\n abbr: 'sq',\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Dielë_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'Di_He_Ma_Me_En_Pr_Sh'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : 'para %sve',\n s : 'disa sekonda',\n ss : '%d sekonda',\n m : 'një minut',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./, // need clarification\n ordinal : '%d.', // need clarification\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\nexport const svLocale: LocaleData = {\n abbr: 'sv',\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n let b = num % 10,\n output = (~~(num % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return num + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\n// moment.js locale configuration\n// locale : Thai [th]\n// author : Watcharapol Sanitwong : https://github.com/tumit\n\nimport { LocaleData } from '../locale/locale.class';\n\nexport const thLocale: LocaleData = {\n abbr: 'th',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\n// moment.js locale configuration\n// locale : Thai-Buddhist Era [th-be]\n// author : Watcharapol Sanitwong : https://github.com/tumit\n\nimport { LocaleData } from '../locale/locale.class';\n\nexport const thBeLocale: LocaleData = {\n abbr: 'th-be',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n },\n\n preparse(str: string, format?: string): string {\n\n const _format = thBeLocale.longDateFormat[format]\n ? thBeLocale.longDateFormat[format]\n : format;\n\n // endsWith('YYYY')\n if (_format.indexOf('YYYY', _format.length - 'YYYY'.length) !== -1 ) {\n const ddMM = str.substr(0, str.length - 4);\n const yyyy = parseInt(str.substr(str.length - 4), 10) - 543;\n return ddMM + yyyy;\n }\n\n return str;\n },\n\n getFullYear(date: Date, isUTC = false): number {\n return 543 + (isUTC ? date.getUTCFullYear() : date.getFullYear());\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\nlet suffixes: { [key: string]: string } = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\n\nexport const trLocale: LocaleData = {\n abbr: 'tr',\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n if (num === 0) { // special case for zero\n return num + '\\'ıncı';\n }\n let a = num % 10,\n b = num % 100 - a,\n c = num >= 100 ? 100 : null;\n return num + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours } from '../utils/date-getters';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\nfunction plural(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\n\nfunction relativeTimeWithPlural(num: number, withoutSuffix, key): string {\n let format: { [key: string]: string } = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n\n if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n return num + ' ' + plural(format[key], +num);\n}\n\nfunction weekdaysCaseReplace(date: Date, format: string, isUTC?: boolean): string | string[] {\n let weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (!date) {\n return weekdays.nominative;\n }\n\n let nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][getDayOfWeek(date, isUTC)];\n}\n\nfunction processHoursFunction(str: string) {\n return function (date: Date): string {\n return str + 'о' + (getHours(date) === 11 ? 'б' : '') + '] LT';\n };\n}\n\nexport const ukLocale: LocaleData = {\n abbr: 'uk',\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [')(date);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [')(date);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM(input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal(_num: number, period: string): string {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return num + '-й';\n case 'D':\n return num + '-го';\n default:\n return num.toString();\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Việt Nam [vi]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\nexport const viLocale: LocaleData = {\n abbr: 'vi',\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact: true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM(input: string): boolean {\n return /^ch$/i.test(input);\n },\n meridiem(hours: number, minutes: number, isLower: boolean): string {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n ss : '%d giây' ,\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal(_num: number): string {\n return '' + _num;\n },\n week : {\n dow : 1, // Thứ Hai là ngày đầu tuần.\n doy : 4 // Tuần chứa ngày 4 tháng 1 là tuần đầu tiên trong năm.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\nexport const zhCnLocale: LocaleData = {\n abbr: 'zh-cn',\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n let hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal(_num: number, period) {\n const num = Number(_num);\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n case 'M':\n return num + '月';\n case 'w':\n case 'W':\n return num + '周';\n default:\n return num.toString();\n }\n },\n relativeTime: {\n future: '%s内',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","/**\n * Get CSS computed property of the given element\n */\nexport function getStyleComputedProperty(element: HTMLElement, property?: string): any {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n\n return property ? css[property as any] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n */\nexport function getParentNode(element: any): any {\n if (element.nodeName === 'HTML') {\n return element;\n }\n\n return element.parentNode || element.host;\n}\n","/**\n * Returns the scrolling parent of the given element\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { getParentNode } from './getParentNode';\n\nexport function getScrollParent(element: any): any {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n default:\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n","/**\n * Determines if the browser is Internet Explorer\n */\nimport { isBrowser } from './isBrowser';\n\nconst isIE11 = isBrowser && !!((window as any).MSInputMethodContext && (document as any).documentMode);\nconst isIE10 = isBrowser && !!((window as any).MSInputMethodContext && /MSIE 10/.test((navigator as any).userAgent));\n\nexport function isIE(version?: number) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n\n return isIE11 || isIE10;\n}\n","/**\n * Returns the offset parent of the given element\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { isIE } from './isIE';\n\nexport function getOffsetParent(element: any): any {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n\n // Skip hidden elements which don't have an offsetParent\n let sibling: HTMLElement | null;\n\n while (offsetParent === noOffsetParent\n && element.nextElementSibling\n && sibling !== element.nextElementSibling) {\n\n sibling = element.nextElementSibling;\n offsetParent = sibling.offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return sibling ? sibling.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import { getOffsetParent } from './getOffsetParent';\n\nexport function isOffsetContainer(element: any) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n */\nexport function getRoot(node: Node): any {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","/**\n * Finds the offset parent common to the two provided nodes\n */\nimport { isOffsetContainer } from './isOffsetContainer';\nimport { getRoot } from './getRoot';\nimport { getOffsetParent } from './getOffsetParent';\n\nexport function findCommonOffsetParent(element1: HTMLElement, element2: HTMLElement): any {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n /* tslint:disable-next-line: no-bitwise */\n const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Helper to detect borders of a given element\n */\n\nexport function getBordersSize(styles: CSSStyleDeclaration, axis: string) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width` as any]) +\n parseFloat(styles[`border${sideB}Width` as any])\n );\n}\n","import { isIE } from './isIE';\n\nfunction getSize(axis: string, body: HTMLElement, html: HTMLElement, computedStyle: CSSStyleDeclaration) {\n return Math.max(\n (body as any)[`offset${axis}`],\n (body as any)[`scroll${axis}`],\n (html as any)[`client${axis}`],\n (html as any)[`offset${axis}`],\n (html as any)[`scroll${axis}`],\n isIE(10)\n ? (parseInt((html as any)[`offset${axis}`], 10) +\n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}` as any], 10) +\n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}` as any], 10))\n : 0\n );\n}\n\nexport function getWindowSizes(document: Document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n */\nexport function getScroll(element: HTMLElement, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n */\nimport { Offsets } from '../models';\n\nexport function getClientRect(offsets: Offsets): Offsets {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n };\n}\n","/**\n * Get bounding client rect of given element\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { getBordersSize } from './getBordersSize';\nimport { getWindowSizes } from './getWindowSizes';\nimport { getScroll } from './getScroll';\nimport { getClientRect } from './getClientRect';\nimport { isIE } from './isIE';\nimport { Offsets } from '../models';\n\nexport function getBoundingClientRect(element: HTMLElement): Offsets {\n let rect: any = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {\n return undefined;\n }\n\n const result: any = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n const sizes: any = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","/**\n * Sum or subtract the element scroll values (left and top) from a given rect object\n */\nimport { getScroll } from './getScroll';\nimport { Offsets } from '../models';\n\nexport function includeScroll(rect: Offsets, element: HTMLElement, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n\n return rect;\n}\n","import { getBoundingClientRect } from './getBoundingClientRect';\nimport { getClientRect } from './getClientRect';\nimport { getScrollParent } from './getScrollParent';\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { includeScroll } from './includeScroll';\nimport { isIE as runIsIE } from './isIE';\nimport { Offsets } from '../models';\n\nexport function getOffsetRectRelativeToArbitraryNode(\n children: HTMLElement,\n parent: HTMLElement,\n fixedPosition = false\n): Offsets {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect: any = getBoundingClientRect(children);\n const parentRect: any = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n\n let offsets: Offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import { getClientRect } from './getClientRect';\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\nimport { getScroll } from './getScroll';\nimport { Offsets } from '../models';\n\nexport function getViewportOffsetRectRelativeToArtbitraryNode(element: HTMLElement, excludeScroll = false): Offsets {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - Number(relativeOffset.top) + Number(relativeOffset.marginTop),\n left: scrollLeft - Number(relativeOffset.left) + Number(relativeOffset.marginLeft),\n width,\n height\n };\n\n return getClientRect(offset);\n}\n","/**\n * Check if the given element is fixed or is inside a fixed parent\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { getParentNode } from './getParentNode';\n\nexport function isFixed(element: HTMLElement): boolean {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n\n return isFixed(getParentNode(element));\n}\n","/**\n * Finds the first parent of an element that has a transformed property defined\n */\n\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { isIE } from './isIE';\n\nexport function getFixedPositionOffsetParent(element: HTMLElement): HTMLElement {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n\n let el = element.parentElement;\n\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n\n return el || document.documentElement;\n}\n","/**\n * Computed the boundaries limits and return them\n */\nimport { getScrollParent } from './getScrollParent';\nimport { getParentNode } from './getParentNode';\nimport { findCommonOffsetParent } from './findCommonOffsetParent';\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\nimport { getViewportOffsetRectRelativeToArtbitraryNode } from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport { getWindowSizes } from './getWindowSizes';\nimport { isFixed } from './isFixed';\nimport { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';\n\nexport function getBoundaries(\n target: HTMLElement,\n host: HTMLElement,\n padding = 0,\n boundariesElement: string,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries: any = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(host));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = target.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(target.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = Number(height) + Number(offsets.top);\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = Number(width) + Number(offsets.left);\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n */\nimport { getBoundaries } from './getBoundaries';\nimport { Offsets } from '../models';\n\nfunction getArea({ width, height }: { [key: string]: number }) {\n return width * height;\n}\n\nexport function computeAutoPlacement(\n placement: string,\n refRect: Offsets,\n target: HTMLElement,\n host: HTMLElement,\n allowedPositions: any[] = ['top', 'bottom', 'right', 'left'],\n boundariesElement = 'viewport',\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(target, host, padding, boundariesElement);\n\n const rects: any = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key])\n }))\n .sort((a, b) => b.area - a.area);\n\n let filteredAreas: any[] = sortedAreas.filter(\n ({ width, height }) => {\n return width >= target.clientWidth\n && height >= target.clientHeight;\n }\n );\n\n filteredAreas = filteredAreas.filter((position: any) => {\n return allowedPositions\n .some((allowedPosition: string) => {\n return allowedPosition === position.key;\n });\n });\n\n const computedPlacement: string = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split(' ')[1];\n\n // for tooltip on auto position\n target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${computedPlacement}`);\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import { Data, Offsets } from '../models';\n\nexport function getOffsets(data: Data): Offsets {\n return {\n width: data.offsets.target.width,\n height: data.offsets.target.height,\n left: Math.floor(data.offsets.target.left),\n top: Math.round(data.offsets.target.top),\n bottom: Math.round(data.offsets.target.bottom),\n right: Math.floor(data.offsets.target.right)\n };\n}\n","/**\n * Get the opposite placement of the given one\n */\nexport function getOppositePlacement(placement: string) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\n return placement.replace(/left|right|bottom|top/g, matched => (hash as any)[matched]);\n}\n","/**\n * Get the opposite placement variation of the given one\n */\nexport function getOppositeVariation(variation: string) {\n if (variation === 'right') {\n return 'left';\n } else if (variation === 'left') {\n return 'right';\n }\n\n return variation;\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n */\nexport function getOuterSizes(element: any) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n\n return {\n width: Number(element.offsetWidth) + y,\n height: Number(element.offsetHeight) + x\n };\n}\n","/**\n * Get offsets to the reference element\n */\nimport { findCommonOffsetParent } from './findCommonOffsetParent';\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\nimport { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';\nimport { Offsets } from '../models';\n\nexport function getReferenceOffsets(\n target: HTMLElement,\n host: HTMLElement,\n fixedPosition: boolean = null\n): Offsets {\n const commonOffsetParent = fixedPosition\n ? getFixedPositionOffsetParent(target)\n : findCommonOffsetParent(target, host);\n\n return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get offsets to the target\n */\nimport { getOppositePlacement } from './getOppositePlacement';\nimport { getOuterSizes } from './getOuterSizes';\nimport { Offsets } from '../models';\n\nexport function getTargetOffsets(\n target: HTMLElement,\n hostOffsets: Offsets,\n position: string\n): Offsets {\n const placement = position.split(' ')[0];\n\n // Get target node sizes\n const targetRect = getOuterSizes(target);\n\n // Add position, width and height to our offsets object\n const targetOffsets = {\n width: targetRect.width,\n height: targetRect.height\n };\n\n // depending by the target placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n (targetOffsets as any)[mainSide] =\n hostOffsets[mainSide] +\n hostOffsets[measurement] / 2 -\n targetRect[measurement] / 2;\n\n (targetOffsets as any)[secondarySide] = placement === secondarySide\n ? hostOffsets[secondarySide] - targetRect[secondaryMeasurement]\n : (hostOffsets as any)[getOppositePlacement(secondarySide)];\n\n return targetOffsets;\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n */\nexport function isModifierEnabled(options: any, modifierName: string) {\n return options\n && options.modifiers\n && options.modifiers[modifierName]\n && options.modifiers[modifierName].enabled;\n}\n","/**\n * Tells if a given input is a number\n */\nexport function isNumeric(n: any) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Update class for the given popper\n */\nimport { Renderer2 } from '@angular/core';\nimport { Data } from '../models';\n\nexport function updateContainerClass(data: Data, renderer?: Renderer2): void {\n const target = data.instance.target;\n\n let containerClass = target.className;\n\n if (data.placementAuto) {\n containerClass = containerClass.replace(/mis-popover-auto/g, `mis-popover-${data.placement}`);\n containerClass = containerClass.replace(/bs-tooltip-auto/g, `bs-tooltip-${data.placement}`);\n containerClass = containerClass.replace(/\\sauto/g, ` ${data.placement}`);\n\n if (containerClass.indexOf('popover') !== -1 && containerClass.indexOf('popover-auto') === -1) {\n containerClass += ' popover-auto';\n }\n\n if (containerClass.indexOf('tooltip') !== -1 && containerClass.indexOf('tooltip-auto') === -1) {\n containerClass += ' tooltip-auto';\n }\n }\n\n containerClass = containerClass.replace(/left|right|top|bottom/g, `${data.placement.split(' ')[0]}`);\n\n if (renderer) {\n renderer.setAttribute(target, 'class', containerClass);\n\n return;\n }\n\n target.className = containerClass;\n}\n","/**\n * Set the style to the given popper\n */\nimport { Renderer2 } from '@angular/core';\n\nimport { isNumeric } from './isNumeric';\n\nexport function setStyles(element: HTMLElement, styles: any, renderer?: Renderer2) {\n Object.keys(styles).forEach((prop: any) => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 &&\n isNumeric(styles[prop])) {\n unit = 'px';\n }\n\n if (renderer) {\n renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);\n\n return;\n }\n\n element.style[prop] = String(styles[prop]) + unit;\n });\n}\n","import { getClientRect, getOuterSizes, getStyleComputedProperty } from '../utils';\nimport { Data } from '../models';\n\nexport function arrow(data: Data) {\n let targetOffsets = data.offsets.target;\n // if arrowElement is a string, suppose it's a CSS selector\n const arrowElement: HTMLElement | null = data.instance.target.querySelector('.arrow');\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n\n const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n const placementVariation = data.placement.split(' ')[1];\n\n // top/left side\n if (data.offsets.host[opSide] - arrowElementSize < (targetOffsets as any)[side]) {\n (targetOffsets as any)[side] -=\n (targetOffsets as any)[side] - (data.offsets.host[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (Number((data as any).offsets.host[side]) + Number(arrowElementSize) > (targetOffsets as any)[opSide]) {\n (targetOffsets as any)[side] +=\n Number((data as any).offsets.host[side]) + Number(arrowElementSize) - Number((targetOffsets as any)[opSide]);\n }\n targetOffsets = getClientRect(targetOffsets);\n\n // Compute the sideValue using the updated target offsets\n // take target margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.target);\n const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n\n // compute center of the target\n let center: number;\n if (!placementVariation) {\n center = Number((data as any).offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);\n } else {\n const targetBorderRadius = parseFloat(css.borderRadius);\n const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\n center = side === placementVariation ?\n Number((data as any).offsets.host[side]) + targetSideArrowOffset :\n Number((data as any).offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\n }\n\n let sideValue =\n center - (targetOffsets as any)[side] - targetMarginSide - targetBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its target\n sideValue = Math.max(Math.min(targetOffsets[len] - arrowElementSize, sideValue), 0);\n\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '' // make sure to unset any eventual altSide value from the DOM node\n };\n\n data.instance.arrow = arrowElement;\n\n return data;\n}\n","import {\n computeAutoPlacement,\n getBoundaries,\n getClientRect,\n getOppositeVariation,\n getTargetOffsets,\n isModifierEnabled\n} from '../utils';\n\nimport { Data } from '../models';\n\nexport function flip(data: Data): Data {\n data.offsets.target = getClientRect(data.offsets.target);\n\n if (!isModifierEnabled(data.options, 'flip')) {\n\n data.offsets.target = {\n ...data.offsets.target,\n ...getTargetOffsets(\n data.instance.target,\n data.offsets.host,\n data.placement\n )\n };\n\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.target,\n data.instance.host,\n 0, // padding\n 'viewport',\n false // positionFixed\n );\n\n let placement = data.placement.split(' ')[0];\n let variation = data.placement.split(' ')[1] || '';\n\n const offsetsHost = data.offsets.host;\n const target = data.instance.target;\n const host = data.instance.host;\n\n const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);\n const flipOrder = [placement, adaptivePosition];\n\n /* tslint:disable-next-line: cyclomatic-complexity */\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split(' ')[0];\n\n // using floor because the host offsets may contain decimals we are not going to consider here\n const overlapsRef =\n (placement === 'left' &&\n Math.floor(data.offsets.target.right) > Math.floor(data.offsets.host.left)) ||\n (placement === 'right' &&\n Math.floor(data.offsets.target.left) < Math.floor(data.offsets.host.right)) ||\n (placement === 'top' &&\n Math.floor(data.offsets.target.bottom) > Math.floor(data.offsets.host.top)) ||\n (placement === 'bottom' &&\n Math.floor(data.offsets.target.top) < Math.floor(data.offsets.host.bottom));\n\n const overflowsLeft = Math.floor(data.offsets.target.left) < Math.floor(boundaries.left);\n const overflowsRight = Math.floor(data.offsets.target.right) > Math.floor(boundaries.right);\n const overflowsTop = Math.floor(data.offsets.target.top) < Math.floor(boundaries.top);\n const overflowsBottom = Math.floor(data.offsets.target.bottom) > Math.floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n ((isVertical && variation === 'left' && overflowsLeft) ||\n (isVertical && variation === 'right' && overflowsRight) ||\n (!isVertical && variation === 'left' && overflowsTop) ||\n (!isVertical && variation === 'right' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? ` ${variation}` : '');\n\n data.offsets.target = {\n ...data.offsets.target,\n ...getTargetOffsets(\n data.instance.target,\n data.offsets.host,\n data.placement\n )\n };\n }\n });\n\n return data;\n}\n","import {\n computeAutoPlacement,\n getReferenceOffsets,\n getTargetOffsets\n} from '../utils';\n\nimport { Data, Options } from '../models';\n\nexport function initData(\n targetElement: HTMLElement, hostElement: HTMLElement, position: string, options: Options\n): Data {\n\n const hostElPosition = getReferenceOffsets(targetElement, hostElement);\n\n if (!position.match(/^(auto)*\\s*(left|right|top|bottom)*$/)\n && !position.match(/^(left|right|top|bottom)*(?: (left|right|top|bottom))?\\s*(start|end)*$/)) {\n /* tslint:disable-next-line: no-parameter-reassignment */\n position = 'auto';\n }\n\n const placementAuto = !!position.match(/auto/g);\n\n // support old placements 'auto left|right|top|bottom'\n let placement = position.match(/auto\\s(left|right|top|bottom)/)\n ? position.split(' ')[1] || 'auto'\n : position;\n\n // Normalize placements that have identical main placement and variation (\"right right\" => \"right\").\n const matches = placement.match(/^(left|right|top|bottom)* ?(?!\\1)(left|right|top|bottom)?/);\n if (matches) {\n placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');\n }\n\n // \"left right\", \"top bottom\" etc. placements also considered incorrect.\n if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {\n placement = 'auto';\n }\n\n const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);\n\n placement = computeAutoPlacement(\n placement,\n hostElPosition,\n targetElement,\n hostElement,\n options ? options.allowedPositions : undefined\n );\n\n return {\n options,\n instance: {\n target: targetElement,\n host: hostElement,\n arrow: null\n },\n offsets: {\n target: targetOffset,\n host: hostElPosition,\n arrow: null\n },\n positionFixed: false,\n placement,\n placementAuto\n };\n}\n","import { getBoundaries, isModifierEnabled } from '../utils';\nimport { Data } from '../models';\n\nexport function preventOverflow(data: Data) {\n\n if (!isModifierEnabled(data.options, 'preventOverflow')) {\n return data;\n }\n\n // NOTE: DOM access here\n // resets the targetOffsets's position so that the document size can be calculated excluding\n // the size of the targetOffsets element itself\n const transformProp = 'transform';\n const targetStyles = data.instance.target.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = targetStyles;\n targetStyles.top = '';\n targetStyles.left = '';\n targetStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.target,\n data.instance.host,\n 0, // padding\n data.options.modifiers.preventOverflow.boundariesElement || 'scrollParent',\n false // positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n targetStyles.top = top;\n targetStyles.left = left;\n targetStyles[transformProp] = transform;\n\n const order = ['left', 'right', 'top', 'bottom'];\n\n const check = {\n primary(placement: string) {\n let value = (data as any).offsets.target[placement];\n if (\n (data as any).offsets.target[placement] < boundaries[placement] &&\n !false // options.escapeWithReference\n ) {\n value = Math.max((data as any).offsets.target[placement], boundaries[placement]);\n }\n\n return { [placement]: value };\n },\n secondary(placement: string) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = data.offsets.target[mainSide];\n if (\n (data as any).offsets.target[placement] > boundaries[placement] &&\n !false // escapeWithReference\n ) {\n value = Math.min(\n data.offsets.target[mainSide],\n boundaries[placement] -\n (placement === 'right' ? data.offsets.target.width : data.offsets.target.height)\n );\n }\n\n return { [mainSide]: value };\n }\n };\n\n let side: string;\n\n order.forEach(placement => {\n side = ['left', 'top']\n .indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n\n data.offsets.target = {\n ...data.offsets.target,\n ...(check as any)[side](placement)\n };\n\n });\n\n return data;\n}\n","import { Data } from '../models';\n\nexport function shift(data: Data): Data {\n const placement = data.placement;\n const basePlacement = placement.split(' ')[0];\n const shiftVariation = placement.split(' ')[1];\n\n if (shiftVariation) {\n const { host, target } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: host[side] },\n end: {\n [side]: host[side] + host[measurement] - target[measurement]\n }\n };\n\n data.offsets.target = {\n ...target, ...{\n [side]: (side === shiftVariation ? (shiftOffsets as any).start[side] : (shiftOffsets as any).end[side])\n }\n };\n }\n\n return data;\n}\n","import { Renderer2 } from '@angular/core';\n\nimport { getOffsets, getReferenceOffsets, updateContainerClass, setStyles } from './utils';\n\nimport { arrow, flip, preventOverflow, shift, initData } from './modifiers';\nimport { Data, Offsets, Options } from './models';\n\n\nexport class Positioning {\n position(hostElement: HTMLElement, targetElement: HTMLElement, round = true): Offsets {\n return this.offset(hostElement, targetElement, false);\n }\n\n offset(hostElement: HTMLElement, targetElement: HTMLElement, round = true): Offsets {\n return getReferenceOffsets(targetElement, hostElement);\n }\n\n positionElements(\n hostElement: HTMLElement,\n targetElement: HTMLElement,\n position: string,\n appendToBody?: boolean,\n options?: Options\n ): Data {\n const chainOfModifiers = [flip, shift, preventOverflow, arrow];\n\n return chainOfModifiers.reduce(\n (modifiedData, modifier) => modifier(modifiedData),\n initData(targetElement, hostElement, position, options)\n );\n }\n}\n\nconst positionService = new Positioning();\n\nexport function positionElements(\n hostElement: HTMLElement,\n targetElement: HTMLElement,\n placement: string,\n appendToBody?: boolean,\n options?: Options,\n renderer?: Renderer2\n): void {\n\n const data = positionService.positionElements(\n hostElement,\n targetElement,\n placement,\n appendToBody,\n options\n );\n\n const offsets = getOffsets(data);\n\n setStyles(targetElement, {\n 'will-change': 'transform',\n top: '0px',\n left: '0px',\n transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`\n }, renderer);\n\n if (data.instance.arrow) {\n setStyles(data.instance.arrow, data.offsets.arrow, renderer);\n }\n\n updateContainerClass(data, renderer);\n}\n","import { Injectable, ElementRef, RendererFactory2, Inject, PLATFORM_ID, NgZone } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { positionElements } from './ng-positioning';\n\nimport { fromEvent, merge, of, animationFrameScheduler, Subject, Observable } from 'rxjs';\nimport { Options } from './models';\n\n\nexport interface PositioningOptions {\n /** The DOM element, ElementRef, or a selector string of an element which will be moved */\n element?: HTMLElement | ElementRef | string;\n\n /** The DOM element, ElementRef, or a selector string of an element which the element will be attached to */\n target?: HTMLElement | ElementRef | string;\n\n /**\n * A string of the form 'vert-attachment horiz-attachment' or 'placement'\n * - placement can be \"top\", \"bottom\", \"left\", \"right\"\n * not yet supported:\n * - vert-attachment can be any of 'top', 'middle', 'bottom'\n * - horiz-attachment can be any of 'left', 'center', 'right'\n */\n attachment?: string;\n\n /** A string similar to `attachment`. The one difference is that, if it's not provided,\n * `targetAttachment` will assume the mirror image of `attachment`.\n */\n targetAttachment?: string;\n\n /** A string of the form 'vert-offset horiz-offset'\n * - vert-offset and horiz-offset can be of the form \"20px\" or \"55%\"\n */\n offset?: string;\n\n /** A string similar to `offset`, but referring to the offset of the target */\n targetOffset?: string;\n\n /** If true component will be attached to body */\n appendToBody?: boolean;\n}\n\n\n@Injectable()\nexport class PositioningService {\n private options: Options;\n private update$$ = new Subject<null>();\n private positionElements = new Map();\n private triggerEvent$: Observable<number|Event>;\n private isDisabled = false;\n\n constructor(\n ngZone: NgZone,\n rendererFactory: RendererFactory2,\n @Inject(PLATFORM_ID) platformId: number\n ) {\n\n if (isPlatformBrowser(platformId)) {\n ngZone.runOutsideAngular(() => {\n this.triggerEvent$ = merge(\n fromEvent(window, 'scroll', { passive: true }),\n fromEvent(window, 'resize', { passive: true }),\n /* tslint:disable-next-line: deprecation */\n of(0, animationFrameScheduler),\n this.update$$\n );\n\n this.triggerEvent$.subscribe(() => {\n if (this.isDisabled) {\n return;\n }\n\n this.positionElements\n /* tslint:disable-next-line: no-any */\n .forEach((positionElement: any) => {\n positionElements(\n _getHtmlElement(positionElement.target),\n _getHtmlElement(positionElement.element),\n positionElement.attachment,\n positionElement.appendToBody,\n this.options,\n rendererFactory.createRenderer(null, null)\n );\n });\n });\n });\n }\n }\n\n position(options: PositioningOptions): void {\n this.addPositionElement(options);\n }\n\n get event$(): Observable<number|Event> {\n return this.triggerEvent$;\n }\n\n disable(): void {\n this.isDisabled = true;\n }\n\n enable(): void {\n this.isDisabled = false;\n }\n\n addPositionElement(options: PositioningOptions): void {\n this.positionElements.set(_getHtmlElement(options.element), options);\n }\n\n calcPosition(): void {\n this.update$$.next();\n }\n\n deletePositionElement(elRef: ElementRef): void {\n this.positionElements.delete(_getHtmlElement(elRef));\n }\n\n setOptions(options: Options) {\n this.options = options;\n }\n}\n\nfunction _getHtmlElement(element: HTMLElement | ElementRef | string): HTMLElement {\n // it means that we got a selector\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n\n if (element instanceof ElementRef) {\n return element.nativeElement;\n }\n\n return element;\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","// datepicker container component\n/* tslint:disable:no-empty */\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { MisDatePickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable } from 'rxjs';\nimport {\n MisDatePickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class MisDatePickerAbstractComponent {\n containerClass: string;\n isOtherMonthsActive: boolean;\n showTodayBtn: boolean;\n todayBtnLbl: string;\n todayPos: string;\n showClearBtn: boolean;\n clearBtnLbl: string;\n clearPos: string;\n\n _effects: MisDatePickerEffects;\n customRanges: BsCustomDates[] = [];\n customRangeBtnLbl: string;\n chosenRange: Date[] = [];\n\n set minDate(value: Date) {\n this._effects.setMinDate(value);\n }\n\n set maxDate(value: Date) {\n this._effects.setMaxDate(value);\n }\n set daysDisabled(value: number[]) {\n this._effects.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]) {\n this._effects.setDatesDisabled(value);\n }\n\n set datesEnabled(value: Date[]) {\n this._effects.setDatesEnabled(value);\n }\n\n set isDisabled(value: boolean) {\n this._effects.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatePickerDateCustomClasses[]) {\n this._effects.setDateCustomClasses(value);\n }\n\n set dateTooltipTexts(value: DatePickerDateTooltipText[]) {\n this._effects.setDateTooltipTexts(value);\n }\n\n viewMode: Observable<MisDatePickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatePickerRenderOptions>;\n\n setViewMode(event: MisDatePickerViewMode): void {}\n\n navigateTo(event: BsNavigationEvent): void {}\n\n dayHoverHandler(event: CellHoverEvent): void {}\n\n weekHoverHandler(event: WeekViewModel): void {}\n\n monthHoverHandler(event: CellHoverEvent): void {}\n\n yearHoverHandler(event: CellHoverEvent): void {}\n\n daySelectHandler(day: DayViewModel): void {}\n\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n setRangeOnCalendar(dates: BsCustomDates): void {}\n\n setToday(): void {}\n\n clearDate(): void {}\n\n /* tslint:disable-next-line: no-any */\n _stopPropagation(event: any): void {\n event.stopPropagation();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TimeUnit } from '../sub-components/chronos';\nimport { Action } from '../sub-components/mini-ngrx';\nimport {\n MisDatePickerViewMode,\n BsViewNavigationEvent,\n CellHoverEvent,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText\n} from '../models';\n\n@Injectable()\nexport class MisDatePickerActions {\n static readonly CALCULATE = '[datepicker] calculate dates matrix';\n static readonly FORMAT = '[datepicker] format datepicker values';\n static readonly FLAG = '[datepicker] set flags';\n static readonly SELECT = '[datepicker] select date';\n static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\n static readonly NAVIGATE_TO = '[datepicker] change view date';\n static readonly SET_OPTIONS = '[datepicker] update render options';\n static readonly HOVER = '[datepicker] hover date';\n static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\n\n static readonly SET_MIN_DATE = '[datepicker] set min date';\n static readonly SET_MAX_DATE = '[datepicker] set max date';\n static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\n static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\n static readonly SET_DATESENABLED = '[datepicker] set dates enabled';\n static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n static readonly SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\n static readonly SET_LOCALE = '[datepicker] set datepicker locale';\n\n static readonly SELECT_RANGE = '[daterangepicker] select dates range';\n\n calculate(): Action {\n return { type: MisDatePickerActions.CALCULATE };\n }\n\n format(): Action {\n return { type: MisDatePickerActions.FORMAT };\n }\n\n flag(): Action {\n return { type: MisDatePickerActions.FLAG };\n }\n\n select(date: Date): Action {\n return {\n type: MisDatePickerActions.SELECT,\n payload: date\n };\n }\n\n changeViewMode(event: MisDatePickerViewMode): Action {\n return {\n type: MisDatePickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {\n type: MisDatePickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n\n navigateStep(step: TimeUnit): Action {\n return {\n type: MisDatePickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n\n setOptions(options: DatePickerRenderOptions): Action {\n return {\n type: MisDatePickerActions.SET_OPTIONS,\n payload: options\n };\n }\n\n // date range picker\n selectRange(value: Date[]): Action {\n return {\n type: MisDatePickerActions.SELECT_RANGE,\n payload: value\n };\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {\n type: MisDatePickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n\n minDate(date: Date): Action {\n return {\n type: MisDatePickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n\n maxDate(date: Date): Action {\n return {\n type: MisDatePickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n\n daysDisabled(days: number[]): Action {\n return {\n type: MisDatePickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n\n datesDisabled(dates: Date[]): Action {\n return {\n type: MisDatePickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n\n datesEnabled(dates: Date[]): Action {\n return {\n type: MisDatePickerActions.SET_DATESENABLED,\n payload: dates\n };\n }\n\n isDisabled(value: boolean): Action {\n return {\n type: MisDatePickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n\n setDateCustomClasses(value: DatePickerDateCustomClasses[]): Action {\n return {\n type: MisDatePickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n\n setDateTooltipTexts(value: DatePickerDateTooltipText[]): Action {\n return {\n type: MisDatePickerActions.SET_DATE_TOOLTIP_TEXTS,\n payload: value\n };\n }\n\n setLocale(locale: string): Action {\n return {\n type: MisDatePickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class BsLocaleService {\n private _defaultLocale = 'en';\n private _locale = new BehaviorSubject<string>(this._defaultLocale);\n private _localeChange: Observable<string> = this._locale.asObservable();\n\n get locale(): BehaviorSubject<string> {\n return this._locale;\n }\n\n get localeChange(): Observable<string> {\n return this._localeChange;\n }\n\n get currentLocale(): string {\n return this._locale.getValue();\n }\n\n use(locale: string): void {\n if (locale === this.currentLocale) {\n return;\n }\n\n this._locale.next(locale);\n }\n}\n","/* tslint:disable:max-file-line-count */\nimport { Injectable } from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { MisDatePickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { MisDatePickerActions } from './bs-datepicker.actions';\nimport { MisDatePickerConfig } from '../bs-datepicker.config';\nimport { MisDatePickerStore } from './bs-datepicker.store';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n MisDatePickerViewMode,\n BsNavigationEvent,\n CellHoverEvent,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\n\n\n@Injectable()\nexport class MisDatePickerEffects {\n viewMode: Observable<MisDatePickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatePickerRenderOptions>;\n\n private _store: MisDatePickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: MisDatePickerActions,\n private _localeService: BsLocaleService) {}\n\n init(_misDatePickerStore: MisDatePickerStore): MisDatePickerEffects {\n this._store = _misDatePickerStore;\n\n return this;\n }\n\n /** setters */\n\n setValue(value: Date): void {\n this._store.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value: Date[]): void {\n this._store.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value: Date): MisDatePickerEffects {\n this._store.dispatch(this._actions.minDate(value));\n\n return this;\n }\n\n setMaxDate(value: Date): MisDatePickerEffects {\n this._store.dispatch(this._actions.maxDate(value));\n\n return this;\n }\n\n setDaysDisabled(value: number[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.daysDisabled(value));\n\n return this;\n }\n\n setDatesDisabled(value: Date[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.datesDisabled(value));\n\n return this;\n }\n\n setDatesEnabled(value: Date[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.datesEnabled(value));\n\n return this;\n }\n\n setDisabled(value: boolean): MisDatePickerEffects {\n this._store.dispatch(this._actions.isDisabled(value));\n\n return this;\n }\n\n setDateCustomClasses(value: DatePickerDateCustomClasses[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.setDateCustomClasses(value));\n\n return this;\n }\n\n setDateTooltipTexts(value: DatePickerDateTooltipText[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.setDateTooltipTexts(value));\n\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: MisDatePickerConfig): MisDatePickerEffects {\n const _options = Object.assign({locale: this._localeService.currentLocale}, _config);\n this._store.dispatch(this._actions.setOptions(_options));\n\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: MisDatePickerAbstractComponent): MisDatePickerEffects {\n container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .pipe(\n filter(months => !!months)\n );\n\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .pipe(\n filter(months => !!months)\n );\n\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .pipe(\n filter(years => !!years)\n );\n\n container.viewMode = this._store.select(state => state.view.mode);\n\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .pipe(\n map(showWeekNumbers => ({showWeekNumbers}))\n );\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: MisDatePickerAbstractComponent): MisDatePickerEffects {\n container.setViewMode = (event: MisDatePickerViewMode): void => {\n this._store.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n return this;\n }\n\n registerDatePickerSideEffects(): MisDatePickerEffects {\n this._subs.push(\n this._store.select(state => state.view).subscribe(view => {\n this._store.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(\n filter(monthModel => !!monthModel)\n )\n .subscribe(month => this._store.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(\n filter(month => !!month)\n )\n .subscribe(month => this._store.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(\n filter(selectedDate => !!selectedDate)\n )\n .subscribe(selectedDate => this._store.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(\n filter(selectedRange => !!selectedRange)\n )\n .subscribe(selectedRange => this._store.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(\n filter(state => !!state)\n )\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(\n filter(hoveredDate => !!hoveredDate)\n )\n .subscribe(hoveredDate => this._store.dispatch(this._actions.flag()))\n );\n\n // date custom classes\n this._subs.push(\n this._store\n .select(state => state.dateCustomClasses)\n .pipe(\n filter(dateCustomClasses => !!dateCustomClasses)\n )\n .subscribe(dateCustomClasses => this._store.dispatch(this._actions.flag()))\n );\n\n // date tooltip texts\n this._subs.push(\n this._store\n .select(state => state.dateTooltipTexts)\n .pipe(\n filter(dateTooltipTexts => !!dateTooltipTexts)\n )\n .subscribe(dateTooltipTexts => this._store.dispatch(this._actions.flag()))\n );\n\n // on locale change\n this._subs.push(\n this._localeService.localeChange\n .subscribe(locale => this._store.dispatch(this._actions.setLocale(locale)))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","/**\n * @copyright ngrx\n */\nimport { Action, ActionReducer } from './index';\nimport { BehaviorSubject, Observable, queueScheduler } from 'rxjs';\nimport { observeOn, scan } from 'rxjs/operators';\n\n\nexport class MiniState<T> extends BehaviorSubject<T> {\n constructor(\n _initialState: T,\n actionsDispatcher$: Observable<Action>,\n reducer: ActionReducer<T>\n ) {\n super(_initialState);\n\n const actionInQueue$ = actionsDispatcher$.pipe(\n observeOn(queueScheduler)\n );\n const state$ = actionInQueue$.pipe(\n scan((state: T, action: Action) => {\n if (!action) {\n return state;\n }\n\n return reducer(state, action);\n },\n _initialState\n ));\n\n state$.subscribe((value: T) => this.next(value));\n }\n}\n","/**\n * @copyright ngrx\n */\nimport { Observable, Observer, Operator } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { Action, ActionReducer } from './index';\n\nexport class MiniStore<T> extends Observable<T> implements Observer<Action> {\n constructor(\n private _dispatcher: Observer<Action>,\n /* tslint:disable-next-line: no-any */\n private _reducer: ActionReducer<any>,\n /* tslint:disable-next-line: no-any */\n state$: Observable<any>\n ) {\n super();\n\n /* tslint:disable-next-line: deprecation */\n this.source = state$;\n }\n\n select<R>(pathOrMapFn: (state: T) => R): Observable<R> {\n /* tslint:disable-next-line: deprecation */\n const mapped$: Observable<R> = this.source.pipe(map(pathOrMapFn));\n\n return mapped$.pipe(distinctUntilChanged());\n }\n\n lift<R>(operator: Operator<T, R>): MiniStore<R> {\n const store = new MiniStore<R>(this._dispatcher, this._reducer, this);\n /* tslint:disable-next-line: deprecation */\n store.operator = operator;\n\n return store;\n }\n\n dispatch(action: Action) {\n this._dispatcher.next(action);\n }\n\n next(action: Action) {\n this._dispatcher.next(action);\n }\n\n /* tslint:disable-next-line: no-any */\n error(err: any) {\n this._dispatcher.error(err);\n }\n\n complete() {\n /*noop*/\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n","import {\n MisDatePickerViewMode,\n DatePickerFormatOptions,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport { defaultMonthOptions } from './_defaults';\nimport { MisDatePickerConfig } from '../bs-datepicker.config';\n\nexport interface MisDatePickerViewState {\n date: Date;\n mode: MisDatePickerViewMode;\n}\n\nexport class MisDatePickerState\n implements DatePickerRenderOptions, DatePickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view: MisDatePickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n daysDisabled?: number[];\n datesDisabled?: Date[];\n datesEnabled?: Date[];\n minMode?: MisDatePickerViewMode;\n dateCustomClasses?: DatePickerDateCustomClasses[];\n dateTooltipTexts?: DatePickerDateTooltipText[];\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n selectFromOtherMonth?: boolean;\n showPreviousMonth?: boolean; // dateRangePicker only;\n displayOneMonthRange?: boolean; // dateRangePicker only;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions: MonthViewOptions;\n\n // DatePickerRenderOptions\n showWeekNumbers?: boolean;\n displayMonths?: number;\n\n // DatePickerFormatOptions\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nconst _initialView: MisDatePickerViewState = { date: new Date(), mode: 'day' };\n\nexport const initialDatePickerState: MisDatePickerState = Object.assign(\n new MisDatePickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {\n getDay,\n isFirstDayOfWeek,\n isAfter,\n isBefore,\n shiftDate,\n endOf,\n startOf,\n isArray,\n isSame\n} from '../sub-components/chronos';\nimport { MisDatePickerState } from '../reducer/bs-datepicker.state';\n\nexport function getStartingDayOfCalendar(date: Date,\n options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset: number): number {\n if (startingDayOffset === 0) {\n return weekday;\n }\n\n const offset = weekday - startingDayOffset % 7;\n\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isYearDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isDisabledDate(date: Date, datesDisabled: Date[]): boolean {\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\n return false;\n }\n\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function isEnabledDate(date: Date, datesEnabled: Date[]): boolean {\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n return false;\n }\n\n return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: MisDatePickerState, calendarIndex = 0): Date {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model && model.years && model.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n","import { TimeUnit, shiftDate } from '../sub-components/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(\n options: MatrixOptions,\n fn: CreateMatrixCb<T>\n): T[][] {\n let prevValue = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","// user and model input should handle parsing and validating input values\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getFirstDayOfMonth } from '../sub-components/chronos';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(\n startingDate: Date,\n options: MonthViewOptions\n): DaysCalendarModel {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n\n const matrixOptions = {\n width: options.width,\n height: options.height,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\n\n return {\n daysMatrix,\n month: firstDay\n };\n}\n","import {\n DatePickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel\n} from '../models';\nimport { formatDate, getLocale } from '../sub-components/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\n formatOptions: DatePickerFormatOptions,\n monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(\n daysCalendar.month,\n formatOptions.monthTitle,\n formatOptions.locale\n ),\n yearTitle: formatDate(\n daysCalendar.month,\n formatOptions.yearTitle,\n formatOptions.locale\n ),\n weekNumbers: getWeekNumbers(\n daysCalendar.daysMatrix,\n formatOptions.weekNumbers,\n formatOptions.locale\n ),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n }))\n };\n}\n\nexport function getWeekNumbers(daysMatrix: Date[][],\n format: string,\n locale: string): string[] {\n return daysMatrix.map(\n (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\n );\n}\n\nexport function getShiftedWeekdays(locale: string): string[] {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort() as string[];\n const firstDayOfWeek = _locale.firstDayOfWeek();\n\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n","import {\n DaysCalendarViewModel,\n DayViewModel,\n WeekViewModel,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText\n} from '../models';\n\nimport {\n isAfter,\n isBefore,\n isDisabledDay,\n isSameDay,\n isSameMonth,\n shiftDate\n} from '../sub-components/chronos';\n\nimport { isMonthDisabled, isDisabledDate, isEnabledDate } from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n daysDisabled: number[];\n datesDisabled: Date[];\n datesEnabled: Date[];\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n dateCustomClasses: DatePickerDateCustomClasses[];\n dateTooltipTexts: DatePickerDateTooltipText[];\n}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: FlagDaysCalendarOptions\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n /* tslint:disable-next-line: cyclomatic-complexity */\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n\n const isHovered =\n !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n\n const isSelected =\n (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n\n const isInRange =\n !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n\n const isDisabled =\n options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled) ||\n isEnabledDate(day.date, options.datesEnabled);\n\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\n .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses,\n tooltipText\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses ||\n day.tooltipText !== newDay.tooltipText\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: -1 }),\n options.minDate,\n options.maxDate\n );\n formattedMonth.disableRightArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange: Date[],\n hoveredDate: Date\n): boolean {\n if (!date || !selectedRange[0]) {\n return false;\n }\n\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n\n return false;\n}\n","import { MisDatePickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: MisDatePickerViewMode, minMode?: MisDatePickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {\n DatePickerFormatOptions,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { startOf, formatDate } from '../sub-components/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\n\nexport function formatMonthsCalendar(\n viewDate: Date,\n formatOptions: DatePickerFormatOptions\n): MonthsCalendarViewModel {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(\n viewDate,\n formatOptions.yearTitle,\n formatOptions.locale\n )\n };\n}\n","import { isSameMonth, shiftDate } from '../sub-components/chronos';\nimport {\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: FlagMonthCalendarOptions\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n let isSelected: boolean;\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n monthCalendar.disableRightArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return monthCalendar;\n}\n","import {\n DatePickerFormatOptions,\n YearsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { shiftDate, formatDate } from '../sub-components/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\n\nexport function formatYearsCalendar(\n viewDate: Date,\n formatOptions: DatePickerFormatOptions,\n previousInitialDate?: Date\n): YearsCalendarViewModel {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, { year: initialYearShift });\n}\n\nfunction formatYearRangeTitle(\n yearsMatrix: CalendarCellViewModel[][],\n formatOptions: DatePickerFormatOptions\n): string {\n const from = formatDate(\n yearsMatrix[0][0].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n const to = formatDate(\n yearsMatrix[height - 1][width - 1].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n\n return `${from} - ${to}`;\n}\n","import { isSameYear, shiftDate } from '../sub-components/chronos';\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\nimport { isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: FlagYearsCalendarOptions\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n let isSelected: boolean;\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n\n yearsCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return yearsCalendar;\n}\n","// tslint:disable:max-file-line-count\nimport { MisDatePickerState, initialDatePickerState } from './bs-datepicker.state';\nimport { Action } from '../sub-components/mini-ngrx';\nimport { MisDatePickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport {\n setFullDate,\n shiftDate,\n isArray,\n isDateValid,\n startOf,\n getLocale,\n isAfter,\n isBefore,\n isSame\n} from '../sub-components/chronos';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { BsViewNavigationEvent, DatePickerFormatOptions, MisDatePickerViewMode } from '../models';\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\n\n\n/* tslint:disable-next-line: cyclomatic-complexity */\nexport function misDatePickerReducer(state = initialDatePickerState,\n action: Action): MisDatePickerState {\n switch (action.type) {\n case MisDatePickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case MisDatePickerActions.FORMAT: {\n return formatReducer(state, action);\n }\n\n case MisDatePickerActions.FLAG: {\n return flagReducer(state, action);\n }\n\n case MisDatePickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case MisDatePickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode: MisDatePickerViewMode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n } else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode)) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n\n case MisDatePickerActions.SELECT: {\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.SET_OPTIONS: {\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n\n // provided value is not supported :)\n // need to report it somehow\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case MisDatePickerActions.SELECT_RANGE: {\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case MisDatePickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case MisDatePickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case MisDatePickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n case MisDatePickerActions.SET_DATE_TOOLTIP_TEXTS: {\n return Object.assign({}, state, {\n dateTooltipTexts: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: MisDatePickerState): MisDatePickerState {\n // how many calendars\n const displayMonths = (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) ? 1 : state.displayMonths;\n\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day') {\n if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(\n viewDate,\n state.monthViewOptions\n );\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n\n return Object.assign({}, state, { monthsModel });\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state),\n state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\n );\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction formatReducer(state: MisDatePickerState,\n action: Action): MisDatePickerState {\n if (state.view.mode === 'day') {\n const formattedMonths = state.monthsModel.map((month, monthIndex) =>\n formatDaysCalendar(month, getFormatOptions(state), monthIndex)\n );\n\n return Object.assign({}, state, { formattedMonths });\n }\n\n // how many calendars\n const displayMonths = state.displayMonths;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction flagReducer(state: MisDatePickerState,\n action: Action): MisDatePickerState {\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map(\n (formattedMonth, monthIndex) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n dateTooltipTexts: state.dateTooltipTexts,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month') {\n const flaggedMonthsCalendar = state.monthsCalendar.map(\n (formattedMonth, monthIndex) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarFlagged = state.yearsCalendarModel.map(\n (formattedMonth, yearIndex) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: MisDatePickerState, action: Action): MisDatePickerState {\n const newState = {\n view: {\n mode: state.view.mode,\n date: shiftViewDate(state, action)\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: MisDatePickerState, action: Action): Date {\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n\n return shiftDate(middleDate, action.payload);\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: MisDatePickerState): DatePickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n\n weekNumbers: state.weekNumbers\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate: Date, maxDate: Date) {\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) {\n return minDate;\n }\n\n if (maxDate && isBefore(maxDate, _date, 'day')) {\n return maxDate;\n }\n\n return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate: Date, maxDate: Date) {\n if (maxDate && isSame(maxDate, viewDate, 'day')) {\n return true;\n }\n\n if (minDate && maxDate && minDate.getMonth() === maxDate.getMonth()) {\n return true;\n }\n\n return false;\n}\n","import { Injectable } from '@angular/core';\nimport { MiniStore, Action, MiniState } from '../sub-components/mini-ngrx';\nimport { MisDatePickerState, initialDatePickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { misDatePickerReducer } from './bs-datepicker.reducer';\n\n@Injectable()\nexport class MisDatePickerStore extends MiniStore<MisDatePickerState> {\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({\n type: '[datepicker] dispatcher init'\n });\n const state = new MiniState<MisDatePickerState>(\n initialDatePickerState,\n _dispatcher,\n misDatePickerReducer\n );\n super(_dispatcher, misDatePickerReducer, state);\n }\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from '../../sub-components/chronos';\nimport { PositioningService } from '../../sub-components/positioning';\n\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { MisDatePickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\n\n@Component({\n selector: 'mis-datepicker-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDatePickerContainerComponent extends MisDatePickerAbstractComponent\n implements OnInit, OnDestroy {\n\n set value(value: Date) {\n this._effects.setValue(value);\n }\n\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n animationState = 'void';\n\n _subs: Subscription[] = [];\n constructor(\n private _renderer: Renderer2,\n private _config: MisDatePickerConfig,\n private _store: MisDatePickerStore,\n private _element: ElementRef,\n private _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this.showTodayBtn = this._config.showTodayButton;\n this.todayBtnLbl = this._config.todayButtonLabel;\n this.todayPos = this._config.todayPosition;\n this.showClearBtn = this._config.showClearButton;\n this.clearBtnLbl = this._config.clearButtonLabel;\n this.clearPos = this._config.clearPosition;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n this._effects\n .init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatePickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n /* tslint:disable-next-line: no-any */\n .select((state: any) => state.selectedDate)\n /* tslint:disable-next-line: no-any */\n .subscribe((date: any) => this.valueChange.emit(date))\n );\n\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n dayApplyHandler(day: DayViewModel): void {\n\n }\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n })\n );\n }\n\n yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n })\n );\n }\n\n setToday(): void {\n this._store.dispatch(this._actions.select(new Date()));\n }\n\n clearDate(): void {\n this._store.dispatch(this._actions.select(undefined));\n }\n cancel(){\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n }\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class BsComponentRef<T> {\n templateRef: TemplateRef<T>;\n viewContainer: ViewContainerRef;\n}\n","export class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","import { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n/* tslint:disable-next-line: no-any */\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n outsideEsc?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-any */\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n\nexport function registerEscClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n\n return renderer.listen('document', 'keyup.esc', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n","/**\n * @license\n * Copyright Google Inc. 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/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\nexport const gc = win.gc ? () => win.gc() : (): any => null;\nexport const performance = win.performance ? win.performance : null;\nexport const Event = win.Event;\nexport const MouseEvent = win.MouseEvent;\nexport const KeyboardEvent = win.KeyboardEvent;\nexport const EventTarget = win.EventTarget;\nexport const History = win.History;\nexport const Location = win.Location;\nexport const EventListener = win.EventListener;\n","import { window } from './facade/browser';\n\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): void {\n guessedVersion = theme;\n}\n\n// todo: in mis-design-system, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n /* tslint:disable-next-line: no-any*/\n const node: any = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n\n return lastItem;\n }\n\n /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n every(fn: any): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-any */\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-any */\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n /* tslint:disable-next-line: no-any */\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\n\nexport class ContentRef {\n /* tslint:disable-next-line: no-any */\n nodes: any[];\n viewRef?: ViewRef;\n /* tslint:disable-next-line: no-any */\n componentRef?: ComponentRef<any>;\n\n constructor(\n /* tslint:disable-next-line: no-any */\n nodes: any[],\n viewRef?: ViewRef,\n /* tslint:disable-next-line: no-any */\n componentRef?: ComponentRef<any>\n ) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n","// tslint:disable:max-file-line-count\n// todo: add delay support\n// todo: merge events onShow, onShown, etc...\n// todo: add global positioning configuration?\nimport {\n ApplicationRef,\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Injector,\n NgZone,\n Renderer2,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\n\nimport { PositioningOptions, PositioningService } from '../positioning';\n\nimport {\n listenToTriggersV2,\n registerEscClick,\n registerOutsideClick\n} from '../utils';\n\nimport { ContentRef } from './content-ref.class';\nimport { ListenOptions } from './listen-options.model';\nimport { Subscription } from 'rxjs';\n\nexport class ComponentLoader<T> {\n onBeforeShow: EventEmitter<void> = new EventEmitter();\n /* tslint:disable-next-line: no-any*/\n onShown: EventEmitter<any> = new EventEmitter();\n /* tslint:disable-next-line: no-any*/\n onBeforeHide: EventEmitter<any> = new EventEmitter();\n onHidden: EventEmitter<any> = new EventEmitter();\n\n instance: T;\n _componentRef: ComponentRef<T>;\n _inlineViewRef: EmbeddedViewRef<T>;\n\n private _providers: StaticProvider[] = [];\n private _componentFactory: ComponentFactory<T>;\n private _zoneSubscription: Subscription;\n private _contentRef: ContentRef;\n private _innerComponent: ComponentRef<T>;\n\n private _unregisterListenersFn: Function;\n\n get isShown(): boolean {\n if (this._isHiding) {\n return false;\n }\n\n return !!this._componentRef;\n }\n\n private _isHiding = false;\n\n /**\n * Placement of a component. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n private attachment: string;\n\n /**\n * A selector specifying the element the popover should be appended to.\n */\n /* tslint:disable-next-line: no-any*/\n private container: string | ElementRef | any;\n\n /**\n * A selector used if container element was not found\n */\n private containerDefaultSelector = 'body';\n\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n private triggers: string;\n\n private _listenOpts: ListenOptions = {};\n private _globalListener = Function.prototype;\n\n /**\n * Do not use this directly, it should be instanced via\n * `ComponentLoadFactory.attach`\n * @internal\n */\n // tslint:disable-next-line\n public constructor(\n private _viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _injector: Injector,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _ngZone: NgZone,\n private _applicationRef: ApplicationRef,\n private _posService: PositioningService\n ) { }\n\n attach(compType: Type<T>): ComponentLoader<T> {\n this._componentFactory = this._componentFactoryResolver\n .resolveComponentFactory<T>(compType);\n\n return this;\n }\n\n // todo: add behaviour: to target element, `body`, custom element\n to(container?: string | ElementRef): ComponentLoader<T> {\n this.container = container || this.container;\n\n return this;\n }\n\n position(opts?: PositioningOptions): ComponentLoader<T> {\n this.attachment = opts.attachment || this.attachment;\n /* tslint:disable-next-line: no-unnecessary-type-assertion */\n this._elementRef = (opts.target as ElementRef) || this._elementRef;\n\n return this;\n }\n\n provide(provider: StaticProvider): ComponentLoader<T> {\n this._providers.push(provider);\n\n return this;\n }\n\n // todo: appendChild to element or document.querySelector(this.container)\n\n show(opts: {\n /* tslint:disable-next-line: no-any*/\n content?: string | TemplateRef<any>;\n /* tslint:disable-next-line: no-any*/\n context?: any;\n /* tslint:disable-next-line: no-any*/\n initialState?: any;\n /* tslint:disable-next-line: no-any*/\n [key: string]: any;\n id?: number|string;\n } = {}\n ): ComponentRef<T> {\n\n this._subscribePositioning();\n this._innerComponent = null;\n\n if (!this._componentRef) {\n this.onBeforeShow.emit();\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n\n const injector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n\n this._applicationRef.attachView(this._componentRef.hostView);\n // this._componentRef = this._viewContainerRef\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n this.instance = this._componentRef.instance;\n\n Object.assign(this._componentRef.instance, opts);\n\n if (this.container instanceof ElementRef) {\n this.container.nativeElement.appendChild(\n this._componentRef.location.nativeElement\n );\n }\n\n if (typeof this.container === 'string' && typeof document !== 'undefined') {\n const selectedElement = document.querySelector(this.container) ||\n document.querySelector(this.containerDefaultSelector);\n\n selectedElement.appendChild(this._componentRef.location.nativeElement);\n }\n\n if (\n !this.container &&\n this._elementRef &&\n this._elementRef.nativeElement.parentElement\n ) {\n this._elementRef.nativeElement.parentElement.appendChild(\n this._componentRef.location.nativeElement\n );\n }\n\n // we need to manually invoke change detection since events registered\n // via\n // Renderer::listen() are not picked up by change detection with the\n // OnPush strategy\n if (this._contentRef.componentRef) {\n this._innerComponent = this._contentRef.componentRef.instance;\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\n }\n this._componentRef.changeDetectorRef.markForCheck();\n this._componentRef.changeDetectorRef.detectChanges();\n\n\n this.onShown.emit(opts.id ? { id: opts.id } : this._componentRef.instance);\n }\n\n this._registerOutsideClick();\n\n return this._componentRef;\n }\n\n hide(id?: number|string): ComponentLoader<T> {\n if (!this._componentRef) {\n return this;\n }\n\n this._posService.deletePositionElement(this._componentRef.location);\n\n this.onBeforeHide.emit(this._componentRef.instance);\n\n const componentEl = this._componentRef.location.nativeElement;\n componentEl.parentNode.removeChild(componentEl);\n if (this._contentRef.componentRef) {\n this._contentRef.componentRef.destroy();\n }\n\n if (this._viewContainerRef && this._contentRef.viewRef) {\n this._viewContainerRef.remove(\n this._viewContainerRef.indexOf(this._contentRef.viewRef)\n );\n }\n if (this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._contentRef = null;\n this._componentRef = null;\n this._removeGlobalListener();\n\n this.onHidden.emit(id ? { id } : null);\n\n return this;\n }\n\n toggle(): void {\n if (this.isShown) {\n this.hide();\n\n return;\n }\n\n this.show();\n }\n\n dispose(): void {\n if (this.isShown) {\n this.hide();\n }\n\n this._unsubscribePositioning();\n\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n }\n\n listen(listenOpts: ListenOptions): ComponentLoader<T> {\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n listenOpts.target = listenOpts.target || this._elementRef.nativeElement;\n\n const hide = (this._listenOpts.hide = () =>\n listenOpts.hide ? listenOpts.hide() : void this.hide());\n const show = (this._listenOpts.show = (registerHide: Function) => {\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n registerHide();\n });\n\n const toggle = (registerHide: Function) => {\n this.isShown ? hide() : show(registerHide);\n };\n\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n target: listenOpts.target,\n triggers: listenOpts.triggers,\n show,\n hide,\n toggle\n });\n\n return this;\n }\n\n _removeGlobalListener() {\n if (this._globalListener) {\n this._globalListener();\n this._globalListener = null;\n }\n }\n\n attachInline(\n vRef: ViewContainerRef,\n /* tslint:disable-next-line: no-any*/\n template: TemplateRef<any>\n ): ComponentLoader<T> {\n this._inlineViewRef = vRef.createEmbeddedView(template);\n\n return this;\n }\n\n _registerOutsideClick(): void {\n if (!this._componentRef || !this._componentRef.location) {\n return;\n }\n // why: should run after first event bubble\n if (this._listenOpts.outsideClick) {\n const target = this._componentRef.location.nativeElement;\n setTimeout(() => {\n this._globalListener = registerOutsideClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideClick: this._listenOpts.outsideClick,\n hide: () => this._listenOpts.hide()\n });\n });\n }\n if (this._listenOpts.outsideEsc) {\n const target = this._componentRef.location.nativeElement;\n this._globalListener = registerEscClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideEsc: this._listenOpts.outsideEsc,\n hide: () => this._listenOpts.hide()\n });\n }\n }\n\n getInnerComponent(): ComponentRef<T> {\n return this._innerComponent;\n }\n\n private _subscribePositioning(): void {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n\n this.onShown.subscribe(() => {\n this._posService.position({\n element: this._componentRef.location,\n target: this._elementRef,\n attachment: this.attachment,\n appendToBody: this.container === 'body'\n });\n });\n\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n if (!this._componentRef) {\n return;\n }\n\n this._posService.calcPosition();\n });\n }\n\n private _unsubscribePositioning(): void {\n if (!this._zoneSubscription) {\n return;\n }\n\n this._zoneSubscription.unsubscribe();\n this._zoneSubscription = null;\n }\n\n private _getContentRef(\n /* tslint:disable-next-line: no-any*/\n content: string | TemplateRef<any> | any,\n /* tslint:disable-next-line: no-any*/\n context?: any,\n /* tslint:disable-next-line: no-any*/\n initialState?: any\n ): ContentRef {\n if (!content) {\n return new ContentRef([]);\n }\n\n if (content instanceof TemplateRef) {\n if (this._viewContainerRef) {\n const _viewRef = this._viewContainerRef\n .createEmbeddedView<TemplateRef<T>>(content, context);\n _viewRef.markForCheck();\n\n return new ContentRef([_viewRef.rootNodes], _viewRef);\n }\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n if (typeof content === 'function') {\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(\n content\n );\n\n const modalContentInjector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n\n const componentRef = contentCmptFactory.create(modalContentInjector);\n Object.assign(componentRef.instance, initialState);\n this._applicationRef.attachView(componentRef.hostView);\n\n return new ContentRef(\n [[componentRef.location.nativeElement]],\n componentRef.hostView,\n componentRef\n );\n }\n\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n}\n","import {\n ApplicationRef, ComponentFactoryResolver, ElementRef, Injectable, Injector,\n NgZone, Renderer2, ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader } from './component-loader.class';\nimport { PositioningService } from '../../sub-components/positioning';\n\n@Injectable()\nexport class ComponentLoaderFactory {\n constructor(private _componentFactoryResolver: ComponentFactoryResolver,\n private _ngZone: NgZone,\n private _injector: Injector,\n private _posService: PositioningService,\n private _applicationRef: ApplicationRef) {}\n\n /**\n *\n * @param _elementRef\n * @param _viewContainerRef\n * @param _renderer\n */\n createLoader<T>(_elementRef: ElementRef,\n _viewContainerRef: ViewContainerRef,\n _renderer: Renderer2): ComponentLoader<T> {\n return new ComponentLoader<T>(\n _viewContainerRef,\n _renderer,\n _elementRef,\n this._injector,\n this._componentFactoryResolver,\n this._ngZone,\n this._applicationRef,\n this._posService\n );\n }\n}\n","// tslint:disable:max-file-line-count\nimport {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef, AfterViewInit\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from './sub-components/component-loader';\nimport { MisDatePickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDatePickerViewMode, DatePickerDateCustomClasses, DatePickerDateTooltipText } from './models';\n\n@Directive({\n selector: '[misDatePicker]',\n exportAs: 'misDatePicker'\n})\nexport class MisDatePickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the datepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the datepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date;\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n return;\n }\n\n if (!this._bsValue && value) {\n const now = new Date();\n\n value.setMilliseconds(now.getMilliseconds());\n value.setSeconds(now.getSeconds());\n value.setMinutes(now.getMinutes());\n value.setHours(now.getHours());\n }\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() set misConfig(misConfig: Partial<MisDatePickerConfig>) {\n this._misConfig = misConfig;\n this.setConfig();\n this._dateInputFormat$.next(misConfig && misConfig.dateInputFormat);\n }\n get misConfig(): Partial<MisDatePickerConfig> {\n return this._misConfig;\n }\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n\n /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode: MisDatePickerViewMode;\n\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled: number[];\n\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Date tooltip text\n */\n @Input() dateTooltipTexts: DatePickerDateTooltipText[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n get dateInputFormat$(): Observable<string> {\n return this._dateInputFormat$;\n }\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<MisDatePickerContainerComponent>;\n private _datepickerRef: ComponentRef<MisDatePickerContainerComponent>;\n private _misConfig: Partial<MisDatePickerConfig>;\n private readonly _dateInputFormat$ = new Subject<string>();\n\n constructor(public _config: MisDatePickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<MisDatePickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: MisDatePickerConfig, useValue: this._config})\n .attach(MisDatePickerContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({placement: this.placement});\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.misConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n daysDisabled: this.daysDisabled || this.misConfig && this.misConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.misConfig && this.misConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled,\n minMode: this.minMode || this.misConfig && this.misConfig.minMode\n });\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDatePickerInlineConfig extends MisDatePickerConfig { }\n","import { Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { MisDatePickerContainerComponent } from './bs-datepicker-container.component';\n\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from '../../sub-components/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'mis-datepicker-inline-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDatePickerInlineContainerComponent extends MisDatePickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: MisDatePickerConfig,\n _store: MisDatePickerStore,\n _element: ElementRef,\n _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from './sub-components/component-loader';\n\nimport { Subscription } from 'rxjs';\n\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDatePickerInlineConfig } from './bs-datepicker-inline.config';\nimport { MisDatePickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { DatePickerDateCustomClasses, DatePickerDateTooltipText } from './models';\n\n@Directive({\n selector: 'mis-datepicker-inline',\n exportAs: 'misDatePickerInline'\n})\nexport class MisDatePickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue === value) {\n return;\n }\n\n if (!this._bsValue && value) {\n const now = new Date();\n\n value.setMilliseconds(now.getMilliseconds());\n value.setSeconds(now.getSeconds());\n value.setMinutes(now.getMinutes());\n value.setHours(now.getHours());\n }\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() misConfig: Partial<MisDatePickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Date tooltip text\n */\n @Input() dateTooltipTexts: DatePickerDateTooltipText[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<MisDatePickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<MisDatePickerInlineContainerComponent>;\n\n constructor(\n public _config: MisDatePickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<MisDatePickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.misConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.misConfig && this.misConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({provide: MisDatePickerConfig, useValue: this._config})\n .attach(MisDatePickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDateRangePickerInlineConfig extends MisDatePickerConfig {\n // DatePickerRenderOptions\n displayMonths = 2;\n /** turn on/off animation */\n isAnimated = false;\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from '../../sub-components/chronos';\nimport { PositioningService } from '../../sub-components/positioning';\n\nimport { MisDatePickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { BsCustomDates } from './bs-custom-dates-view.component';\n\n@Component({\n selector: 'mis-daterangepicker-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDateRangePickerContainerComponent extends MisDatePickerAbstractComponent\n implements OnInit, OnDestroy {\n set value(value: Date[]) {\n this._effects.setRangeValue(value);\n }\n\n valueChange = new EventEmitter<Date[]>();\n animationState = 'void';\n\n _rangeStack: Date[] = [];\n chosenRange: Date[] = [];\n _subs: Subscription[] = [];\n\n constructor(\n private _renderer: Renderer2,\n private _config: MisDatePickerConfig,\n private _store: MisDatePickerStore,\n private _element: ElementRef,\n private _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n this.customRanges = this._config.ranges;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects\n .init(this._store)\n // intial state options\n // todo: fix this, split configs\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatePickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .subscribe(date => {\n this.chosenRange = date;\n if(this._config.emitOnDateRangeSelect){\n this.valueChange.emit(date)\n }\n })\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n this.rangesProcessing(day);\n }\n dayApplyHandler(day: DayViewModel): void {\n this.valueChange.emit(this.chosenRange);\n }\n monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day) {\n return;\n }\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n })\n );\n\n return;\n }\n this.rangesProcessing(day);\n }\n\n yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day) {\n return;\n }\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n })\n );\n\n return;\n }\n this.rangesProcessing(day);\n }\n\n rangesProcessing(day: CalendarCellViewModel): void {\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n cancel(){\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n }\n\n setRangeOnCalendar(dates: BsCustomDates): void {\n this._rangeStack = (dates === null) ? [] : (dates.value instanceof Date ? [dates.value] : dates.value);\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n\n setMaxDateRangeOnCalendar(currentSelection: Date): void {\n const maxDateRange = new Date(currentSelection);\n maxDateRange.setDate(currentSelection.getDate() + this._config.maxDateRange);\n this._effects.setMaxDate(maxDateRange);\n }\n\n}\n","import { OnInit, OnDestroy, ElementRef, Component, Renderer2 } from '@angular/core';\nimport { MisDateRangePickerContainerComponent } from './bs-daterangepicker-container.component';\n\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from '../../sub-components/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'mis-daterangepicker-inline-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDateRangePickerInlineContainerComponent extends MisDateRangePickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: MisDatePickerConfig,\n _store: MisDatePickerStore,\n _element: ElementRef,\n _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from './sub-components/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDateRangePickerInlineConfig } from './bs-daterangepicker-inline.config';\nimport { MisDateRangePickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\nimport { DatePickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'mis-daterangepicker-inline',\n exportAs: 'misDateRangePickerInline'\n})\nexport class MisDateRangePickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date[];\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() misConfig: Partial<MisDateRangePickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<MisDateRangePickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<MisDateRangePickerInlineContainerComponent>;\n\n constructor(\n public _config: MisDateRangePickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<MisDateRangePickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n this.setConfig();\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.misConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n daysDisabled: this.daysDisabled || this.misConfig && this.misConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled,\n ranges: this.misConfig && this.misConfig.ranges,\n maxDateRange: this.misConfig && this.misConfig.maxDateRange\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({ provide: MisDatePickerConfig, useValue: this._config })\n .attach(MisDateRangePickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n OnDestroy,\n OnInit,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isDate,\n isDateValid,\n parseDate,\n utcAsLocal\n} from './sub-components/chronos';\n\nimport { MisDatePickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDatePickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDatePickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[misDatePicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class MisDatePickerInputDirective\n implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date;\n private _subs = new Subscription();\n\n constructor(@Host() private _picker: MisDatePickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {}\n\n ngOnInit() {\n // update input value on datepicker value update\n this._subs.add(\n this._picker.bsValueChange.subscribe((value: Date) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n })\n );\n\n // update input value on locale change\n this._subs.add(\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n })\n );\n\n this._subs.add(\n this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n })\n );\n}\n\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(value: Date): void {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: Date | string = c.value;\n\n /* tslint:disable-next-line: prefer-switch */\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { misDate: { invalid: _value } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n this.writeValue(this._picker.minDate);\n\n return { misDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n this.writeValue(this._picker.maxDate);\n\n return { misDate: { maxDate: this._picker.maxDate } };\n }\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDateRangePickerConfig extends MisDatePickerConfig {\n // DatePickerRenderOptions\n displayMonths = 2;\n}\n","import {\n AfterViewInit, ComponentRef,\n Directive, ElementRef, EventEmitter,\n Input, OnChanges, OnDestroy, OnInit,\n Output, Renderer2, SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { MisDateRangePickerConfig } from './bs-daterangepicker.config';\nimport { MisDateRangePickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { ComponentLoaderFactory, ComponentLoader } from './sub-components/component-loader';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { DatePickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[misDateRangePicker]',\n exportAs: 'misDateRangePicker'\n})\nexport class MisDateRangePickerDirective\n implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the daterangepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date[];\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n\n /**\n * Initial value of daterangepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for daterangepicker\n */\n @Input() set misConfig(misConfig: Partial<MisDateRangePickerConfig>) {\n this._misConfig = misConfig;\n this.setConfig();\n this._rangeInputFormat$.next(misConfig && misConfig.rangeInputFormat);\n }\n get misConfig(): Partial<MisDateRangePickerConfig> {\n return this._misConfig;\n }\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n\n /**\n * Enable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n get rangeInputFormat$(): Observable<string> {\n return this._rangeInputFormat$;\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<MisDateRangePickerContainerComponent>;\n private _datepickerRef: ComponentRef<MisDateRangePickerContainerComponent>;\n private _misConfig: Partial<MisDateRangePickerConfig>;\n private readonly _rangeInputFormat$ = new Subject<string>();\n\n constructor(public _config: MisDateRangePickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n this._datepicker = cis.createLoader<MisDateRangePickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({ provide: MisDatePickerConfig, useValue: this._config })\n .attach(MisDateRangePickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.misConfig,\n {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n daysDisabled: this.daysDisabled || this.misConfig && this.misConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled,\n ranges: this.misConfig && this.misConfig.ranges,\n maxDateRange: this.misConfig && this.misConfig.maxDateRange\n }\n );\n }\n\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n OnDestroy,\n OnInit,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n parseDate,\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isArray,\n isDateValid,\n utcAsLocal\n} from './sub-components/chronos';\n\nimport { MisDateRangePickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDateRangePickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDateRangePickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[misDateRangePicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class MisDateRangePickerInputDirective\n implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date[];\n private _subs = new Subscription();\n\n constructor(@Host() private _picker: MisDateRangePickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n // update input value on datepicker value update\n this._subs.add(\n this._picker.bsValueChange.subscribe((value: Date[]) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n }));\n\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n\n this._subs.add(\n // update input value on format change\n this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n\n onKeydownEvent(event:any) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(date: Date[]): void {\n let range = '';\n if (date) {\n const start: string = !date[0] ? ''\n : formatDate(date[0],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n const end: string = !date[1] ? ''\n : formatDate(\n date[1],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: [Date, Date] = c.value;\n const errors: object[] = [];\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n\n // @ts-ignore\n _value.sort((a, b) => a - b);\n\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n\n if (!_isFirstDateValid) {\n return { misDate: { invalid: _value[0] } };\n }\n\n if (!_isSecondDateValid) {\n return { misDate: { invalid: _value[1] } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n _value[0] = this._picker.minDate;\n errors.push({ misDate: { minDate: this._picker.minDate } });\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n _value[1] = this._picker.maxDate;\n errors.push({ misDate: { maxDate: this._picker.maxDate } });\n }\n if (errors.length > 0) {\n this.writeValue(_value);\n\n return errors;\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n let _input: (string | Date)[] = [];\n if (typeof value === 'string') {\n const trimmedSeparator = this._picker._config.rangeSeparator.trim();\n _input = value\n .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\n .map(_val => _val.trim());\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n this._value = _input\n .map((_val: string | Date): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? null : date));\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n/** Default values provider for tooltip */\n@Injectable({\n providedIn: 'root'\n})\nexport class TooltipConfig {\n /** sets disable adaptive position */\n adaptivePosition = true;\n /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */\n placement = 'top';\n /** array of event names which triggers tooltip opening */\n triggers = 'hover focus';\n /** a selector specifying the element the tooltip should be appended to. */\n container: string;\n /** delay before showing the tooltip */\n delay = 0;\n}\n","import {\n AfterViewInit,\n Component,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { TooltipConfig } from './tooltip.config';\nimport { isBs3 } from '../utils';\n\n@Component({\n selector: 'mis-tooltip-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line\n host: {\n '[class]':\n '\"tooltip in tooltip-\" + placement + \" \" + \"bs-tooltip-\" + placement + \" \" + placement + \" \" + containerClass',\n '[class.show]': '!isBs3',\n '[class.bs3]': 'isBs3',\n '[attr.id]': 'this.id',\n role: 'tooltip'\n },\n styles: [\n `\n :host.tooltip {\n display: block;\n pointer-events: none;\n }\n :host.bs3.tooltip.top>.arrow {\n margin-left: -2px;\n }\n :host.bs3.tooltip.bottom {\n margin-top: 0px;\n }\n :host.bs3.bs-tooltip-left, :host.bs3.bs-tooltip-right{\n margin: 1rem;\n }\n :host.bs3.bs-tooltip-right .arrow, :host.bs3.bs-tooltip-left .arrow {\n margin: 1rem;\n }\n `\n ],\n template: `\n <div class=\"tooltip-arrow arrow\"></div>\n <div class=\"tooltip-inner\"><ng-content></ng-content></div>\n `\n})\nexport class TooltipContainerComponent implements AfterViewInit {\n classMap: { [key: string]: boolean };\n placement: string;\n containerClass: string;\n animation: boolean;\n id: string;\n\n get isBs3(): boolean {\n return isBs3();\n }\n\n constructor(config: TooltipConfig) {\n Object.assign(this, config);\n }\n\n ngAfterViewInit(): void {\n this.classMap = { in: false, fade: false };\n this.classMap[this.placement] = true;\n this.classMap[`tooltip-${this.placement}`] = true;\n\n this.classMap.in = true;\n if (this.animation) {\n this.classMap.fade = true;\n }\n\n if (this.containerClass) {\n this.classMap[this.containerClass] = true;\n }\n }\n}\n","/* tslint:disable: max-file-line-count deprecation */\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { TooltipConfig } from './tooltip.config';\n\nimport { ComponentLoader, ComponentLoaderFactory } from '../component-loader';\nimport { OnChange, warnOnce, parseTriggers, Trigger } from '../utils';\nimport { PositioningService } from '../positioning';\n\nimport { timer, Subscription } from 'rxjs';\n\nlet id = 0;\n\n@Directive({\n selector: '[tooltip], [tooltipHtml]',\n exportAs: 'mis-tooltip'\n})\nexport class TooltipDirective implements OnInit, OnDestroy {\n tooltipId = id++;\n /** sets disable adaptive position */\n @Input() adaptivePosition: boolean;\n /**\n * Content to be displayed as tooltip.\n */\n @OnChange()\n @Input()\n /* tslint:disable-next-line:no-any */\n tooltip: string | TemplateRef<any>;\n /** Fired when tooltip content changes */\n @Output()\n /* tslint:disable-next-line:no-any */\n tooltipChange: EventEmitter<string | TemplateRef<any>> = new EventEmitter();\n\n /**\n * Placement of a tooltip. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: string;\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers: string;\n /**\n * A selector specifying the element the tooltip should be appended to.\n */\n @Input() container: string;\n /**\n * Css class for tooltip container\n */\n @Input() containerClass = '';\n @Input() boundariesElement: ('viewport' | 'scrollParent' | 'window');\n /**\n * Returns whether or not the tooltip is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._tooltip.isShown;\n }\n\n set isOpen(value: boolean) {\n if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Allows to disable tooltip\n */\n @Input() isDisabled: boolean;\n\n /**\n * Delay before showing the tooltip\n */\n @Input() delay: number;\n\n /**\n * Emits an event when the tooltip is shown\n */\n /* tslint:disable-next-line:no-any */\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the tooltip is hidden\n */\n /* tslint:disable-next-line:no-any */\n @Output() onHidden: EventEmitter<any>;\n\n /** @deprecated - please use `tooltip` instead */\n @Input('tooltipHtml')\n /* tslint:disable-next-line:no-any */\n set htmlContent(value: string | TemplateRef<any>) {\n warnOnce('tooltipHtml was deprecated, please use `tooltip` instead');\n this.tooltip = value;\n }\n\n /** @deprecated - please use `placement` instead */\n @Input('tooltipPlacement')\n set _placement(value: string) {\n warnOnce('tooltipPlacement was deprecated, please use `placement` instead');\n this.placement = value;\n }\n\n /** @deprecated - please use `isOpen` instead */\n @Input('tooltipIsOpen')\n set _isOpen(value: boolean) {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n this.isOpen = value;\n }\n\n get _isOpen(): boolean {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n\n return this.isOpen;\n }\n\n /** @deprecated - please use `isDisabled` instead */\n @Input('tooltipEnable')\n set _enable(value: boolean) {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n this.isDisabled = !value;\n }\n\n get _enable(): boolean {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n\n return this.isDisabled;\n }\n\n /** @deprecated - please use `container=\"body\"` instead */\n @Input('tooltipAppendToBody')\n set _appendToBody(value: boolean) {\n warnOnce(\n 'tooltipAppendToBody was deprecated, please use `container=\"body\"` instead'\n );\n this.container = value ? 'body' : this.container;\n }\n\n get _appendToBody(): boolean {\n warnOnce(\n 'tooltipAppendToBody was deprecated, please use `container=\"body\"` instead'\n );\n\n return this.container === 'body';\n }\n\n /** @deprecated - removed, will be added to configuration */\n @Input() tooltipAnimation = true;\n\n /** @deprecated - will replaced with customClass */\n @Input('tooltipClass')\n set _popupClass(value: string) {\n warnOnce('tooltipClass deprecated');\n }\n\n /** @deprecated - removed */\n @Input('tooltipContext')\n /* tslint:disable-next-line:no-any */\n set _tooltipContext(value: any) {\n warnOnce('tooltipContext deprecated');\n }\n\n /** @deprecated */\n @Input('tooltipPopupDelay')\n set _tooltipPopupDelay(value: number) {\n warnOnce('tooltipPopupDelay is deprecated, use `delay` instead');\n this.delay = value;\n }\n\n /** @deprecated */\n @Input() tooltipFadeDuration = 150;\n\n /** @deprecated - please use `triggers` instead */\n @Input('tooltipTrigger')\n get _tooltipTrigger(): string | string[] {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n\n return this.triggers;\n }\n\n set _tooltipTrigger(value: string | string[]) {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n this.triggers = (value || '').toString();\n }\n\n /** @deprecated */\n @Output()\n tooltipStateChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /* tslint:disable-next-line:no-any */\n protected _delayTimeoutId: number | any;\n protected _tooltipCancelShowFn: Function;\n\n private _tooltip: ComponentLoader<TooltipContainerComponent>;\n private _delaySubscription: Subscription;\n private _ariaDescribedby: string;\n constructor(\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory,\n config: TooltipConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _positionService: PositioningService\n ) {\n\n this._tooltip = cis\n .createLoader<TooltipContainerComponent>(\n this._elementRef,\n _viewContainerRef,\n this._renderer\n )\n .provide({provide: TooltipConfig, useValue: config});\n\n Object.assign(this, config);\n this.onShown = this._tooltip.onShown;\n this.onHidden = this._tooltip.onHidden;\n }\n\n ngOnInit(): void {\n this._tooltip.listen({\n triggers: this.triggers,\n show: () => this.show()\n });\n /* tslint:disable-next-line:no-any */\n this.tooltipChange.subscribe((value: any) => {\n if (!value) {\n this._tooltip.hide();\n }\n });\n\n this.onShown.subscribe(() => {\n this.setAriaDescribedBy();\n });\n\n this.onHidden.subscribe(() => {\n this.setAriaDescribedBy();\n });\n }\n\n setAriaDescribedBy(): void {\n this._ariaDescribedby = this.isOpen ? `tooltip-${this.tooltipId}` : null;\n\n if (this._ariaDescribedby) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ariaDescribedby);\n } else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n }\n }\n\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Opens an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n show(): void {\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this.adaptivePosition\n },\n preventOverflow: {\n enabled: this.adaptivePosition,\n boundariesElement: this.boundariesElement || 'scrollParent'\n }\n }\n });\n\n if (\n this.isOpen ||\n this.isDisabled ||\n this._delayTimeoutId ||\n !this.tooltip\n ) {\n return;\n }\n\n const showTooltip = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n\n this._tooltip\n .attach(TooltipContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({\n content: this.tooltip,\n placement: this.placement,\n containerClass: this.containerClass,\n id: `tooltip-${this.tooltipId}`\n });\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._tooltipCancelShowFn) {\n this._tooltipCancelShowFn();\n }\n };\n\n if (this.delay) {\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n\n this._delaySubscription = timer(this.delay).subscribe(() => {\n showTooltip();\n cancelDelayedTooltipShowing();\n });\n\n if (this.triggers) {\n parseTriggers(this.triggers)\n .forEach((trigger: Trigger) => {\n this._tooltipCancelShowFn = this._renderer.listen(\n this._elementRef.nativeElement,\n trigger.close,\n () => {\n this._delaySubscription.unsubscribe();\n cancelDelayedTooltipShowing();\n }\n );\n });\n }\n } else {\n showTooltip();\n }\n }\n\n /**\n * Closes an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n hide(): void {\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n\n if (!this._tooltip.isShown) {\n return;\n }\n\n this._tooltip.instance.classMap.in = false;\n setTimeout(() => {\n this._tooltip.hide();\n }, this.tooltipFadeDuration);\n }\n\n ngOnDestroy(): void {\n this._tooltip.dispose();\n this.tooltipChange.unsubscribe();\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n this.onShown.unsubscribe();\n this.onHidden.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { TooltipDirective } from './tooltip.directive';\nimport { ComponentLoaderFactory } from '../component-loader';\nimport { PositioningService } from '../positioning';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TooltipDirective, TooltipContainerComponent],\n exports: [TooltipDirective],\n entryComponents: [TooltipContainerComponent]\n})\nexport class TooltipModule {\n static forRoot(): ModuleWithProviders<TooltipModule> {\n return {\n ngModule: TooltipModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mis-calendar-layout',\n template: `\n <!-- current date, will be added in nearest releases -->\n <mis-current-date title=\"hey there\" *ngIf=\"false\"></mis-current-date>\n\n <!--navigation-->\n <div class=\"bs-datepicker-head\">\n <ng-content select=\"mis-datepicker-navigation-view\"></ng-content>\n </div>\n\n <div class=\"bs-datepicker-body\">\n <ng-content></ng-content>\n </div>\n\n <!--timepicker-->\n <mis-timepicker *ngIf=\"false\"></mis-timepicker>\n `\n})\nexport class BsCalendarLayoutComponent { }\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mis-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n})\nexport class BsCurrentDateViewComponent {\n @Input() title: string;\n}\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface BsCustomDates {\n label: string;\n value: Date | Date[];\n}\n\n@Component({\n selector: 'mis-custom-date-view',\n template: `\n <div class=\"bs-datepicker-predefined-btns\">\n <button *ngFor=\"let range of ranges\"\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(range)\"\n [class.selected]=\"range.value === selectedRange\">\n {{ range.label }}\n </button>\n <button\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(customRange)\"\n [class.selected]=\"!checkRange()\">\n {{customRangeLabel}}\n </button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() ranges: BsCustomDates[];\n @Input() selectedRange: Date[];\n @Input() customRangeLabel: string;\n @Output() onSelect = new EventEmitter<BsCustomDates>();\n\n customRange: any = null;\n\n selectFromRanges(range: BsCustomDates) {\n this.onSelect.emit(range);\n }\n\n checkRange() {\n return this.ranges ? this.ranges.filter(range => range.value === this.selectedRange).length > 0 : false;\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2\n} from '@angular/core';\n\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\n\n@Component({\n selector: '[misDatePickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day.label }}`\n})\nexport class MisDatePickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel;\n\n constructor(\n private _config: MisDatePickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n if (this.day.isToday && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n\n if (typeof this.day.customClasses === 'string') {\n this.day.customClasses.split(' ')\n .filter((className: string) => className)\n .forEach((className: string) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\n","import { TimeUnit } from '../sub-components/chronos';\n\nexport type MisDatePickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow?: boolean;\n hideRightArrow?: boolean;\n disableLeftArrow?: boolean;\n disableRightArrow?: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonthHovered?: boolean;\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n customClasses?: string;\n tooltipText?: string;\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\n// todo: split navigation settings\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n // additional information\n month: Date;\n weekNumbers: string[];\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n/** *************** */\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// math model\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatePickerFormatOptions {\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nexport interface DatePickerRenderOptions {\n showWeekNumbers?: boolean;\n displayMonths?: number;\n}\n\nexport interface DatePickerDateCustomClasses {\n date: Date;\n classes: string[];\n}\n\nexport interface DatePickerDateTooltipText {\n date: Date;\n tooltipText: string;\n}\n\n/** *************** */\n// events\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: MisDatePickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n DaysCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'mis-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button class=\"previous\"\n [disabled]=\"calendar.disableLeftArrow\"\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(true)\">\n <span class=\"ic-navigation-arrow-left-24\"></span>\n </button>\n\n <ng-container *ngIf=\"calendar.monthTitle\">\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\"\n type=\"button\"\n (click)=\"view('month')\"\n ><span>{{ calendar.monthTitle }}</span>\n </button>\n </ng-container>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\" (click)=\"view('year')\" type=\"button\">\n <span>{{ calendar.yearTitle }}</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"next\"\n [disabled]=\"calendar.disableRightArrow\"\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(false)\"><span class=\"ic-navigation-arrow-right-24\"></span>\n </button>\n `\n})\nexport class MisDatePickerNavigationViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n navTo(down: boolean): void {\n this.onNavigate.emit(\n down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\n );\n }\n\n view(viewMode: MisDatePickerViewMode): void {\n this.onViewMode.emit(viewMode);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport { isSameDay } from '../../sub-components/chronos';\n\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent, DatePickerDateTooltipText,\n DatePickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel, WeekViewModel\n} from '../../models';\n\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\n\n@Component({\n selector: 'mis-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <mis-calendar-layout>\n <mis-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></mis-datepicker-navigation-view>\n\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"options.showWeekNumbers\"></th>\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n <td class=\"week\" [class.active-week]=\"isWeekHovered\" *ngIf=\"options.showWeekNumbers\">\n <span *ngIf=\"isiOS\" (click)=\"selectWeek(week)\">{{ calendar.weekNumbers[i] }}</span>\n <span *ngIf=\"!isiOS\"\n (click)=\"selectWeek(week)\"\n (mouseenter)=\"weekHoverHandler(week, true)\"\n (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\n </td>\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n\n <!-- When we want to show tooltips for dates -->\n <span *ngIf=\"!isiOS && isShowTooltip\" misDatePickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n tooltip=\"{{day.tooltipText}}\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 3</span>\n <!-- When tooltips for dates are disabled -->\n <span *ngIf=\"!isiOS && !isShowTooltip\" misDatePickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 2</span>\n\n <!-- For mobile iOS view, tooltips are not needed -->\n <span *ngIf=\"isiOS\" misDatePickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\">{{ day.label }} 1</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n </mis-calendar-layout>\n `\n})\nexport class MisDaysCalendarViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n @Input() options: DatePickerRenderOptions;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\n\n isWeekHovered: boolean;\n isiOS: boolean;\n isShowTooltip: boolean;\n\n constructor(private _config: MisDatePickerConfig) {\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\n this.isShowTooltip = true;\n }\n }\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n\n changeViewMode(event: MisDatePickerViewMode): void {\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n selectWeek(week: WeekViewModel): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n if (week.days.length === 0) {\n return;\n }\n\n if (this._config.selectWeek && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n\n this.onSelect.emit(week.days[0]);\n\n return;\n }\n\n const selectedDay = week.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(selectedDay);\n\n if (this._config.selectWeekDateRange) {\n const days = week.days.slice(0);\n const lastDayOfRange = days.reverse().find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(lastDayOfRange);\n }\n }\n\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n const hasActiveDays = cell.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n\n if (this._config.dateTooltipTexts) {\n cell.tooltipText = '';\n this._config.dateTooltipTexts.forEach((dateData: DatePickerDateTooltipText) => {\n\n if (isSameDay(dateData.date, cell.date)) {\n cell.tooltipText = dateData.tooltipText;\n\n return;\n }\n });\n }\n\n this.onHover.emit({ cell, isHovered });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../../models';\n\n@Component({\n selector: 'mis-month-calendar-view',\n template: `\n <mis-calendar-layout>\n <mis-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></mis-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"months\">\n <tbody>\n <tr *ngFor=\"let row of calendar.months\">\n <td *ngFor=\"let month of row\" role=\"gridcell\"\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\"\n (mouseleave)=\"hoverMonth(month, false)\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\">\n <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </mis-calendar-layout>\n `\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendar: MonthsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: MisDatePickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","// tslint:disable:max-line-length\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'mis-timepicker',\n template: `\n <div class=\"mis-timepicker-container\">\n <div class=\"mis-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <div class=\"mis-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\n <img\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n alt=\"\">\n </button>\n </div>\n `\n})\nexport class BsTimepickerViewComponent {\n ampm = 'ok';\n hours = 0;\n minutes = 0;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'mis-years-calendar-view',\n template: `\n <mis-calendar-layout>\n <mis-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></mis-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"years\">\n <tbody>\n <tr *ngFor=\"let row of calendar.years\">\n <td *ngFor=\"let year of row\" role=\"gridcell\"\n (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\"\n (mouseleave)=\"hoverYear(year, false)\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\">\n <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </mis-calendar-layout>\n `\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar: YearsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: MisDatePickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from './sub-components/component-loader';\nimport { PositioningService } from './sub-components/positioning';\n\nimport { TooltipModule } from './sub-components/tooltip';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDateRangePickerConfig } from './bs-daterangepicker.config';\nimport { MisDatePickerInputDirective } from './bs-datepicker-input.directive';\nimport { MisDatePickerDirective } from './bs-datepicker.component';\nimport { MisDateRangePickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { MisDateRangePickerDirective } from './bs-daterangepicker.component';\n\nimport { MisDatePickerInlineDirective } from './bs-datepicker-inline.component';\n\nimport { BsLocaleService } from './bs-locale.service';\nimport { MisDatePickerActions } from './reducer/bs-datepicker.actions';\nimport { MisDatePickerEffects } from './reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from './reducer/bs-datepicker.store';\nimport { MisDatePickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { MisDateRangePickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\n\nimport { MisDatePickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { MisDateRangePickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\n\nimport { MisDateRangePickerInlineDirective } from './bs-daterangepicker-inline.component';\n\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { MisDatePickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { MisDatePickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { MisDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule.forRoot()],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n MisDatePickerDayDecoratorComponent,\n MisDatePickerNavigationViewComponent,\n MisDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n MisDatePickerContainerComponent,\n MisDatePickerDirective,\n MisDatePickerInlineContainerComponent,\n MisDatePickerInlineDirective,\n MisDatePickerInputDirective,\n MisDateRangePickerContainerComponent,\n MisDateRangePickerDirective,\n MisDateRangePickerInlineContainerComponent,\n MisDateRangePickerInlineDirective,\n MisDateRangePickerInputDirective\n ],\n entryComponents: [\n MisDatePickerContainerComponent,\n MisDateRangePickerContainerComponent,\n MisDatePickerInlineContainerComponent,\n MisDateRangePickerInlineContainerComponent\n ],\n exports: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n MisDatePickerDayDecoratorComponent,\n MisDatePickerNavigationViewComponent,\n MisDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n MisDatePickerContainerComponent,\n MisDatePickerDirective,\n MisDatePickerInlineContainerComponent,\n MisDatePickerInlineDirective,\n MisDatePickerInputDirective,\n MisDateRangePickerContainerComponent,\n MisDateRangePickerDirective,\n MisDateRangePickerInlineContainerComponent,\n MisDateRangePickerInlineDirective,\n MisDateRangePickerInputDirective\n ]\n})\nexport class MisDatePickerModule {\n static forRoot(): ModuleWithProviders<MisDatePickerModule> {\n return {\n ngModule: MisDatePickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n MisDatePickerStore,\n MisDatePickerActions,\n MisDatePickerEffects,\n BsLocaleService,\n MisDatePickerConfig,\n MisDateRangePickerConfig\n ]\n };\n }\n}\n","import { formatDate } from './sub-components/chronos';\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return formatDate(date, format, locale);\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\" >\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input() locale: string;\n @Input() datepickerMode: string;\n @Input() startingDay: number;\n @Input() yearRange: number;\n\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() minMode: string;\n @Input() maxMode: string;\n @Input() showWeeks: boolean;\n @Input() formatDay: string;\n @Input() formatMonth: string;\n @Input() formatYear: string;\n @Input() formatDayHeader: string;\n @Input() formatDayTitle: string;\n @Input() formatMonthTitle: string;\n @Input() onlyCurrentMonth: boolean;\n @Input() shortcutPropagation: boolean;\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n @Input() monthColLimit: number;\n @Input() yearColLimit: number;\n @Input() dateDisabled: { date: Date; mode: string }[];\n @Input() dayDisabled: number[];\n @Input() initDate: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate: Date;\n protected selectedDate: Date;\n protected activeDateId: string;\n\n protected refreshViewHandlerDay: Function;\n protected compareHandlerDay: Function;\n protected refreshViewHandlerMonth: Function;\n protected compareHandlerMonth: Function;\n protected refreshViewHandlerYear: Function;\n protected compareHandlerYear: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (\n previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()\n ) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hours === 23 ? hours + 2 : 0\n );\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) - 1\n ];\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year =\n this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month =\n this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if (\n (this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)\n ) {\n return;\n }\n\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) + direction\n ];\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return (\n customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode\n );\n }, this);\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(\n date1Disabled: { date: Date; mode: string },\n date2: Date\n ): number {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach(\n (disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n }\n );\n }\n\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatePickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Provider,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerConfig } from './datepicker.config';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n/* tslint:disable:component-selector-name component-selector-type */\n@Component({\n selector: 'datepicker',\n template: `\n <datepicker-inner [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\">\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input() initDate: Date;\n /** oldest selectable date */\n @Input() minDate: Date;\n /** latest selectable date */\n @Input() maxDate: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input() minMode: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input() maxMode: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input() formatDay: string;\n /** format of month in year */\n @Input() formatMonth: string;\n /** format of year in year range */\n @Input() formatYear: string;\n /** format of day in week header */\n @Input() formatDayHeader: string;\n /** format of title when selecting day */\n @Input() formatDayTitle: string;\n /** format of title when selecting month */\n @Input() formatMonthTitle: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() startingDay: number;\n /** number of years displayed in year selection */\n @Input() yearRange: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input() onlyCurrentMonth: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input() shortcutPropagation: boolean;\n /** number of months displayed in a single row of month picker */\n @Input() monthColLimit: number;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input() dateDisabled: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() dayDisabled: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(\n undefined\n );\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatePickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate: Date;\n\n constructor(config: DatePickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = value ? new Date(value) : void 0;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { isBs3 } from './sub-components/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'daypicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode === 'day'\" role=\"grid\" [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\" aria-activedescendant=\"activeDateId\">\n <thead>\n <tr>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">‹</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"><</button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">›</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">>\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"><b>{{ labelz.abbr }}</b></small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth =\n difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(\n days[j].date,\n this.formatDayHeader\n );\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(\n self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date)\n );\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + 1\n );\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (\n Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1\n );\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from './sub-components/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'monthpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button></th>\n <th [attr.colspan]=\"((datePicker.monthColLimit - 2) <= 0) ? 1 : datePicker.monthColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong> \n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class MonthPickerComponent implements OnInit {\n title: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from './sub-components/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'yearpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"((datePicker.yearColLimit - 2) <= 0) ? 1 : datePicker.yearColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\" role=\"heading\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(\n ' - '\n );\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatePickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n})\nexport class DatePickerModule {\n static forRoot(): ModuleWithProviders<DatePickerModule> {\n return { ngModule: DatePickerModule, providers: [DatePickerConfig] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {MisDatePickerAbstractComponent as ɵb} from './base/bs-datepicker-container';\nexport {datepickerAnimation as ɵg} from './datepicker-animations';\nexport {DATEPICKER_CONTROL_VALUE_ACCESSOR as ɵa} from './datepicker.component';\nexport {MisDatePickerActions as ɵf} from './reducer/bs-datepicker.actions';\nexport {MisDatePickerEffects as ɵe} from './reducer/bs-datepicker.effects';\nexport {MisDatePickerStore as ɵc} from './reducer/bs-datepicker.store';\nexport {ComponentLoaderFactory as ɵi} from './sub-components/component-loader';\nexport {MiniStore as ɵd} from './sub-components/mini-ngrx';\nexport {PositioningService as ɵh} from './sub-components/positioning';\nexport {TooltipModule as ɵj} from './sub-components/tooltip';\nexport {OnChange as ɵt} from './sub-components/utils';\nexport {BsCalendarLayoutComponent as ɵk} from './themes/bs/bs-calendar-layout.component';\nexport {BsCurrentDateViewComponent as ɵl} from './themes/bs/bs-current-date-view.component';\nexport {BsCustomDatesViewComponent as ɵm} from './themes/bs/bs-custom-dates-view.component';\nexport {MisDatePickerDayDecoratorComponent as ɵn} from './themes/bs/bs-datepicker-day-decorator.directive';\nexport {MisDatePickerNavigationViewComponent as ɵo} from './themes/bs/bs-datepicker-navigation-view.component';\nexport {MisDaysCalendarViewComponent as ɵp} from './themes/bs/bs-days-calendar-view.component';\nexport {BsMonthCalendarViewComponent as ɵq} from './themes/bs/bs-months-calendar-view.component';\nexport {BsTimepickerViewComponent as ɵr} from './themes/bs/bs-timepicker-view.component';\nexport {BsYearsCalendarViewComponent as ɵs} from './themes/bs/bs-years-calendar-view.component';"],"names":["Injectable","daysInMonth","isSameDay","months","monthsShort","ɵ0","ɵ1","monthsShortDot","monthsParse","monthsRegex","processRelativeTime","translate","symbolMap","numberMap","monthsShortWithDots","monthsShortWithoutDots","plural","relativeTimeWithPlural","suffixes","runIsIE","Subject","isPlatformBrowser","merge","fromEvent","of","animationFrameScheduler","NgZone","RendererFactory2","Inject","PLATFORM_ID","ElementRef","trigger","state","style","transition","animate","BehaviorSubject","filter","map","observeOn","queueScheduler","scan","distinctUntilChanged","Observable","shift","height","width","EventEmitter","take","Component","Renderer2","document","window","isDevMode","Injector","TemplateRef","ComponentFactoryResolver","ApplicationRef","takeUntil","Directive","ViewContainerRef","Input","Output","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","Subscription","Host","ChangeDetectorRef","ChangeDetectionStrategy","timer","NgModule","CommonModule","ViewChild","FormsModule"],"mappings":";;;;;;IAUA;;;;;QAIA;;YAKE,qBAAgB,GAAG,KAAK,CAAC;;YAEzB,WAAM,GAAG,KAAK,CAAC;;YAEf,eAAU,GAAG,KAAK,CAAC;;;;YAcnB,cAAS,GAA0B,KAAK,CAAC;;;;YA4DzC,uBAAkB,GAAG,KAAK,CAAC;;;;YAK3B,mBAAc,GAAG,aAAa,CAAC;;YAG/B,kBAAa,GAAG,CAAC,CAAC;;;;YAIlB,oBAAe,GAAG,KAAK,CAAC;YAExB,oBAAe,GAAG,GAAG,CAAC;;YAEtB,mBAAc,GAAG,KAAK,CAAC;;;;YAIvB,qBAAgB,GAAG,GAAG,CAAC;;YAavB,eAAU,GAAG,MAAM,CAAC;YACpB,cAAS,GAAG,MAAM,CAAC;YACnB,aAAQ,GAAG,GAAG,CAAC;YACf,eAAU,GAAG,MAAM,CAAC;YACpB,cAAS,GAAG,MAAM,CAAC;YACnB,gBAAW,GAAG,GAAG,CAAC;;;;YAKlB,oBAAe,GAAG,KAAK,CAAC;;;;YAKxB,oBAAe,GAAG,KAAK,CAAC;;;;YAKxB,kBAAa,GAAG,QAAQ,CAAC;;;;YAKzB,kBAAa,GAAG,OAAO,CAAC;;;;YAKxB,qBAAgB,GAAG,OAAO,CAAC;;;;YAK3B,qBAAgB,GAAG,OAAO,CAAC;;;;YAK3B,2BAAsB,GAAG,cAAc,CAAC;;YAGxC,0BAAqB,GAAa,KAAK,CAAC;SACzC;;;;;gBAhKAA,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;IChBD;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;aAEc,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;YACrC,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;QAC9F,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;QACL,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;aAEe,OAAO,CAAC,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;aAEe,UAAU,CAAC,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;aAEe,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,SAAS,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,SAAS,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;aAEe,WAAW,CAAC,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,cAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;aAEa,YAAY,CAAC,CAAC,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;aAEe,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,QAAQ;QACpB,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,cAAc;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI;QACxC,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjF,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,EAAE;wBAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnB;aACJ;QACD,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;aAEe,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1I,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAAE,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACxH,SAAS,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;aAEe,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5I,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;aAEe,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAChK,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;aAEe,oBAAoB,CAAC,MAAM,EAAE,GAAG;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;YAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAAE;aAAM;YAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;SAAE;QAC/G,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;aAEc,YAAY,CAAC,GAAG;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACzI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,eAAe,CAAC,GAAG;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC3D,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;QACnL,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClG,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClE,IAAI,IAAI,KAAK,GAAG;YAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;QAClL,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC9G;;aC5OgB,GAAG,CAAC,CAAS,EAAE,CAAS;QACtC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;aAEe,QAAQ,CAAC,GAAW;QAClC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD;;aCNgB,QAAQ,CAAC,GAAQ;QAC/B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;IACjC,CAAC;aAEe,MAAM,CAAC,KAAU;QAC/B,OAAO,KAAK,YAAY,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC;IAC5F,CAAC;aAEe,SAAS,CAAC,KAAU;QAClC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;IAC3C,CAAC;aAEe,WAAW,CAAC,IAAU;QACpC,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;aAEe,UAAU,CAAC,EAAO;QAChC,QACE,EAAE,YAAY,QAAQ;YACtB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,mBAAmB,EAC1D;IACJ,CAAC;aAEe,QAAQ,CAAC,KAAW;QAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;IAClG,CAAC;aAEe,OAAO,CAAI,KAAW;QACpC,QACE,KAAK,YAAY,KAAK;YACtB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,gBAAgB,EAC1D;IACJ,CAAC;aAEe,UAAU,CAAI,CAAI,aAAa,CAAS;QACtD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;aAEe,QAAQ,CAAI,KAAU;;;QAGpC,QACE,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAC5E;IACJ,CAAC;aAEe,aAAa,CAAC,GAAQ;QACpC,IAAI,MAAM,CAAC,mBAAmB,EAAE;YAC9B,QAAQ,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;SACvD;QACD,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,GAAG,EAAE;YACb,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;aAGe,WAAW,CAAC,KAAU;QACpC,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;aAEe,KAAK,CAAI,mBAAwC;QAC/D,IAAM,aAAa,GAAG,CAAC,mBAAmB,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,aAAa,KAAK,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE;YAClD,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC;IACf;;ICzEA,IAAM,OAAO,GAA8B,EAAE,CAAC;IAK9C,IAAM,SAAS,GAAkC;QAC/C,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,cAAc;KAC5B,CAAC;aAEc,YAAY,CAAC,IAAwB,EAAE,SAAiB;QACtE,IAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAI,SAAS,MAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAC7E,CAAC;aAEe,cAAc,CAAC,KAAwB;QACrD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC;IACtF,CAAC;aAEe,oBAAoB,CAAC,WAAsC;QACzE,IAAM,eAAe,GAA8B,EAAE,CAAC;QACtD,IAAI,cAAc,CAAC;QACnB,IAAI,IAAI,CAAC;QAET,KAAK,IAAI,IAAI,WAAW,EAAE;YACxB,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;gBACjC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,cAAc,EAAE;oBAClB,eAAe,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;iBACrD;aACF;SACF;QAED,OAAO,eAAsB,CAAC;IAChC;;IC5CA;IACO,IAAM,IAAI,GAAG,CAAC,CAAC;IACf,IAAM,KAAK,GAAG,CAAC,CAAC;IAChB,IAAM,IAAI,GAAG,CAAC,CAAC;IACf,IAAM,IAAI,GAAG,CAAC,CAAC;IACf,IAAM,MAAM,GAAG,CAAC,CAAC;IACjB,IAAM,MAAM,GAAG,CAAC,CAAC;IACjB,IAAM,WAAW,GAAG,CAAC,CAAC;IACtB,IAAM,IAAI,GAAG,CAAC,CAAC;IACf,IAAM,OAAO,GAAG,CAAC;;aCTR,QAAQ,CAAC,GAAW,EACX,YAAoB,EACpB,SAAmB;QAC1C,IAAM,SAAS,GAAG,KAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAG,CAAC;QACrC,IAAM,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;QACpD,IAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC;QACtB,IAAM,KAAK,GAAG,IAAI,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,CAAC;;QAElD,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE3E,QAAQ,KAAK,GAAG,MAAM,GAAG,SAAS,EAAE;IACtC;;ICNO,IAAI,eAAe,GAEtB,EAAE,CAAC;IACA,IAAI,oBAAoB,GAAuC,EAAE,CAAC;IAEzE;IACO,IAAM,gBAAgB,GAAG,sLAAsL,CAAC;IAEvN;IACA;IACA;IACA;aACgB,cAAc,CAAC,KAAa,EACb,MAAiC,EACjC,OAAe,EACf,QAAyB;QAEtD,IAAI,KAAK,EAAE;YACT,oBAAoB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;SACxC;QAED,IAAI,MAAM,EAAE;YACV,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;gBAChC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACxE,CAAC;SACH;QAED,IAAI,OAAO,EAAE;YACX,oBAAoB,CAAC,OAAO,CAAC,GAAG,UAAU,IAAU,EAAE,IAA0B;gBAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;aACpE,CAAC;SACH;IACH,CAAC;aAEe,kBAAkB,CAAC,MAAc;QAG/C,IAAM,KAAK,GAAa,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,IAAM,SAAS,GAAiC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,SAAS,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;kBACzC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;kBAC9B,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,UAAU,IAAU,EAAE,MAAc,EAAE,KAAc,EAAE,MAAU;YAAV,uBAAA,EAAA,UAAU;YAErE,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;sBAC7B,SAAS,CAAC,CAAC,CAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAC,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAC,CAAC;sBACnF,SAAS,CAAC,CAAC,CAAC,CAAC;aAClB;YAED,OAAO,MAAM,CAAC;SACf,CAAC;IACJ,CAAC;IAED,SAAS,sBAAsB,CAAC,KAAa;QAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACtC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClC;;aCxEgB,aAAa,CAAC,CAAU,EACV,CAAU,EACV,CAAU;QACtC,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;;QAGvD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;YACxD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACxB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,UAAU,CAAC,CAAU,EACV,CAAK,EACL,CAAK,EACL,CAAK,EACL,CAAK,EACL,CAAK,EACL,EAAM;QALN,kBAAA,EAAA,KAAK;QACL,kBAAA,EAAA,KAAK;QACL,kBAAA,EAAA,KAAK;QACL,kBAAA,EAAA,KAAK;QACL,kBAAA,EAAA,KAAK;QACL,mBAAA,EAAA,MAAM;QAC/B,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;;QAG5C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;YACrD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACrB;QAED,OAAO,IAAI,CAAC;IACd;;aC1BgB,QAAQ,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAChD,OAAO,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAClD,OAAO,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1D,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAClD,OAAO,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1D,CAAC;aAEe,eAAe,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QACvD,OAAO,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IACpE,CAAC;aACe,OAAO,CAAC,IAAU;QAChC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;aAEe,MAAM,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAC9C,OAAO,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;aAEe,OAAO,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAC/C,OAAO,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;aAEe,QAAQ,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAChD,OAAO,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;aAEe,WAAW,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QACnD,OAAO,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5D,CAAC;aAEe,WAAW,CAAC,IAAU;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC;aAEe,IAAI,CAAC,IAAU;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC;aAEe,kBAAkB,CAAC,IAAU;QAC3C,OAAO,UAAU,CACf,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,CAAC,EACD,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,CAClB,CAAC;IACJ,CAAC;aAEe,WAAW,CAAC,IAAU;QACpC,OAAO,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;aAEe,YAAY,CAAC,IAAY,EAAE,KAAa;QACtD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7D,CAAC;aAEe,gBAAgB,CAAC,IAAU,EAAE,cAAsB;QACjE,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,cAAc,CAAC;IAC1C,CAAC;aAEe,WAAW,CAAC,KAAW,EAAE,KAAW;QAClD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;aAEe,UAAU,CAAC,KAAW,EAAE,KAAW;QACjD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;aAEe,SAAS,CAAC,KAAW,EAAE,KAAW;QAChD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,QACE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;YACxB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,EACjC;IACJ;;IC3FO,IAAM,MAAM,GAAG,IAAI,CAAC;IACpB,IAAM,MAAM,GAAG,MAAM,CAAC;IACtB,IAAM,MAAM,GAAG,OAAO,CAAC;IACvB,IAAM,MAAM,GAAG,OAAO,CAAC;IACvB,IAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,IAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,IAAM,SAAS,GAAG,WAAW,CAAC;IAC9B,IAAM,SAAS,GAAG,eAAe,CAAC;IAClC,IAAM,SAAS,GAAG,SAAS,CAAC;IAC5B,IAAM,SAAS,GAAG,SAAS,CAAC;IAC5B,IAAM,SAAS,GAAG,cAAc,CAAC;IAEjC,IAAM,aAAa,GAAG,KAAK,CAAC;IAC5B,IAAM,WAAW,GAAG,UAAU,CAAC;IAE/B,IAAM,WAAW,GAAG,oBAAoB,CAAC;IACzC,IAAM,gBAAgB,GAAG,yBAAyB,CAAC;IAEnD,IAAM,cAAc,GAAG,sBAAsB,CAAC;IAErD;IACA;IACA;IACO,IAAM,SAAS,GAAG,0IAA0I,CAAC;IAGpK,IAAM,OAAO,GAAmC,EAAE,CAAC;aAGnC,aAAa,CAAC,KAAa,EAAE,KAA6B,EAAE,WAAoB;QAC9F,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YAEvB,OAAO;SACR;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,QAAiB,EAAE,MAAc;YAC1D,OAAO,CAAC,QAAQ,IAAI,WAAW,IAAI,WAAW,GAAG,KAAK,CAAC;SACxD,CAAC;IACJ,CAAC;aAEe,qBAAqB,CAAC,KAAa,EAAE,MAAc;QACjE,IAAM,OAAO,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;SAC1C;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;IACA,SAAS,cAAc,CAAC,GAAW;;QAEjC,OAAO,WAAW,CAAC,GAAG;aACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,qCAAqC,EAAE,UAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAA,CAAC,CACnG,CAAC;IACJ,CAAC;aAEe,WAAW,CAAC,GAAW;QACrC,OAAO,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACvD;;IChEA;IAKA,IAAM,MAAM,GAAsC,EAAE,CAAC;aAErC,aAAa,CAAC,KAAwB,EAAE,QAAmC;QACzF,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACjD,IAAI,IAAI,GAAG,QAAQ,CAAC;QAEpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACtB,IAAI,GAAG,UAAU,KAAa,EAAE,KAAgB,EAAE,MAAyB;gBACzE,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;gBAE/B,OAAO,MAAM,CAAC;aACf,CAAC;SACH;QAED,IAAI,OAAO,CAAS,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,SAAA,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC1B;SACF;IACH,CAAC;aAEe,iBAAiB,CAAC,KAAe,EAAE,QAA0B;QAC3E,aAAa,CAAC,KAAK,EAAE,UAAU,KAAa,EAAE,KAAgB,EAAE,MAAyB,EAAE,MAAc;YACvG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;YAE5B,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;aAGe,uBAAuB,CAAC,KAAa,EAAE,KAAa,EAAE,MAAyB;QAC7F,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;SAChD;QAED,OAAO,MAAM,CAAC;IAChB;;IC1CA,IAAM,UAAU,GAA4B,EAAE,CAAC;aAE/B,eAAe,CAAC,IAAY,EAAE,QAAgB;QAC5D,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;;;;;aCMgB,cAAc;;QAG5B,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAC7B,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAIF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;QAG1B,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;QAI3B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,EAAE,UAAS,QAAQ,EAAE,MAAM;YAC3C,OAAO,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,CAAC;SAC/D,CAAC,CAAC;QAEH,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,aAAa,CACX,IAAI,EACJ,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACjE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/C,OAAO,MAAM,CAAC;SACf,CACF,CAAC;IACJ;;IC5CA,SAAS,mBAAmB;;QAE1B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,CAAC,CAAC;YACZ,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;YACtB,GAAG,EAAE,KAAK;YACV,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;aAEe,eAAe,CAAC,MAAyB;QACvD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,CAAC,GAAG,GAAG,mBAAmB,EAAE,CAAC;SACpC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB;;IClBA;IAEA,SAAS,OAAO,CAAC,IAAU,EAAE,IAA0B;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SAC7D;QACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC;aAEe,QAAQ;QACtB,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAU,IAAU,EAAE,IAA0B;YAChD,IAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAExC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAI,CAAG,CAAC;SAC7C,CAAC,CAAC;QAEH,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACzC,UAAU,IAAU,EAAE,IAA0B;YAChD,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC3D,CAAC,CAAC;QAEH,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,cAAc,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACzD,cAAc,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;QAIzD,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;QAI1B,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;QAI3B,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAChC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1C,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE3C,aAAa,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QACzC,aAAa,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM;YAClD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3E,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM;YAChD,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEvC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE,KAAK,EAAE,MAAM;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAElC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;IACL,CAAC;aAEe,iBAAiB,CAAC,KAAa;QAC7C,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAC1D,CAAC;aAEe,UAAU,CAAC,IAAY;QACrC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACtC,CAAC;aAEe,UAAU,CAAC,IAAY;QACrC,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;IAClE;;IClEA;aACgBC,aAAW,CAAC,IAAY,EAAE,KAAa;QACrD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,GAAG,CAAC;SACZ;QACD,IAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,IAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,QAAQ,IAAI,EAAE,CAAC;QAE7C,OAAO,QAAQ,KAAK,CAAC;cACjB,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;eAC1B,EAAE,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;aAEe,SAAS;;QAGvB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACtD,CACF,CAAC;QAEF,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAC9B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/D,CACF,CAAC;QAEF,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAC/B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1D,CACF,CAAC;;QAKF,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;QAI3B,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;QAI5B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,KAAK,EAAE,UAAS,QAAQ,EAAE,MAAM;YAC5C,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC1C,CAAC,CAAC;QACH,aAAa,CAAC,MAAM,EAAE,UAAS,QAAQ,EAAE,MAAM;YAC7C,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACrC,CAAC,CAAC;QAEH,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YAC5F,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEhC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QAEH,aAAa,CACX,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB,EAAE,KAAa;YAChF,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;YAEvE,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;aACtB;iBAAM;gBACL,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC;aAChD;YAED,OAAO,MAAM,CAAC;SACf,CACF,CAAC;IACJ;;ICjFA,IAAM,eAAe,GAAa;QAChC,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;KACX,CAAC;aAEc,SAAS,CAAC,IAAU,EAAE,IAAc;QAClD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QACvD,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACpD,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAC7B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAEA,aAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC/C;QAED,OAAO,UAAU,CACf,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EACnC,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,EACvC,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CACzC,CAAC;IACJ,CAAC;aAEe,WAAW,CAAC,IAAU,EAAE,IAAc;QACpD,OAAO,UAAU,CACf,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EACnC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAClC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EACtC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EACvC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAClD,CAAC;IACJ,CAAC;IAED,SAAS,MAAM,CAAC,GAAW,EAAE,GAAY;QACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,CAAC;aAEe,WAAW,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QACpE,IAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;YACrD,IAAM,YAAY,GAAGA,aAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAChD,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;SAC1G;QAED,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,QAAQ,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QACjE,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAEA,aAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAClF,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE/E,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,MAAM,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QAC/D,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,QAAQ,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QACjE,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QACnE,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QACnE,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,eAAe,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QACxE,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,OAAO,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QAChE,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,OAAO,CAAC,IAAU,EAAE,KAAa;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,OAAO,IAAI,CAAC;IACd;;IChHA;IACA;aACgB,SAAS,CAAC,IAAU;QAClC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC;;aCOgB,OAAO,CAAC,IAAU,EAAE,IAAgB,EAAE,KAAe;QACnE,IAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;;;QAG9B,QAAQ,IAAI;YACV,KAAK,MAAM;gBACT,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;YAE5B,KAAK,SAAS,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;YAE3B,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;YAE5B,KAAK,OAAO;gBACV,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;YAE9B,KAAK,SAAS;gBACZ,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;YAE9B,KAAK,SAAS;gBACZ,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SACpC;;QAGD,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAC,KAAK,OAAA,EAAC,CAAC,CAAC;SACvC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC3B;;QAGD,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SACpE;QAED,OAAO,KAAK,CAAC;IACf,CAAC;aAEe,KAAK,CAAC,IAAU,EAAE,IAAgB,EAAE,KAAe;QACjE,IAAI,KAAK,GAAG,IAAI,CAAC;;QAEjB,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,KAAK,GAAG,KAAK,CAAC;SACf;QAED,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;QACzE,IAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QAEtD,OAAO,GAAG,CAAC;IACb;;aCvDgB,aAAa;;QAG3B,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAC9C,UAAS,IAAU;YACjB,OAAO,YAAY,CAAC,IAAI,CAAC;iBACtB,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAKF,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;;QAIjC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEhC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,aAAa,CACX,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACjE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAEjC,OAAO,MAAM,CAAC;SACf,CACF,CAAC;IACJ,CAAC;aAEe,YAAY,CAAC,IAAU,EAAE,KAAe;QACtD,IAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;QAC/B,IAAM,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;aAEe,YAAY,CAAC,IAAU,EAAE,KAAa;QACpD,IAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC;IAC/C;;ICxDA;;;;;;;IAYA,SAAS,eAAe,CAAC,IAAY,EAAE,GAAW,EAAE,GAAW;;QAE7D,IAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;QAE1B,IAAM,KAAK,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtE,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;aACgB,kBAAkB,CAChC,IAAY,EACZ,IAAY,EACZ,OAAe,EACf,GAAW,EACX,GAAW;QAEX,IAAM,YAAY,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC;QAC7C,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnD,IAAM,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;QACjE,IAAI,OAAe,CAAC;QACpB,IAAI,YAAoB,CAAC;QAEzB,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;YACnB,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;SAChD;aAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE;YACvC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;YACnB,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,GAAG,SAAS,CAAC;SAC1B;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,YAAY;SACxB,CAAC;IACJ,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,GAAW,EAAE,GAAW,EAAE,KAAe;QAC9E,IAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QAEpB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACjD;aAAM,IAAI,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;YACjE,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACjE,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;SACxC;aAAM;YACL,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC;SAChB;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;aAEe,WAAW,CAAC,IAAY,EAAE,GAAW,EAAE,GAAW;QAChE,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnD,IAAM,cAAc,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAE3D,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,cAAc,IAAI,CAAC,CAAC;IAC9D;;IChFA;IAgBA,IAAM,gBAAgB,GAAG,+BAA+B,CAAC;IAClD,IAAM,mBAAmB,GAAG,uFAAuF,CAAC,KAAK,CAC9H,GAAG,CACJ,CAAC;IACK,IAAM,wBAAwB,GAAG,iDAAiD,CAAC,KAAK,CAC7F,GAAG,CACJ,CAAC;IACK,IAAM,qBAAqB,GAAG,0DAA0D,CAAC,KAAK,CACnG,GAAG,CACJ,CAAC;IACK,IAAM,0BAA0B,GAAG,6BAA6B,CAAC,KAAK,CAC3E,GAAG,CACJ,CAAC;IACK,IAAM,wBAAwB,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnE,IAAM,qBAAqB,GAAgC;QAChE,GAAG,EAAE,WAAW;QAChB,EAAE,EAAE,QAAQ;QACZ,CAAC,EAAE,YAAY;QACf,EAAE,EAAE,cAAc;QAClB,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,2BAA2B;KAClC,CAAC;IAEK,IAAM,cAAc,GAAG,IAAI,CAAC;IAC5B,IAAM,6BAA6B,GAAG,SAAS,CAAC;IAEvD,IAAM,uBAAuB,GAAG,SAAS,CAAC;IAC1C,IAAM,kBAAkB,GAAG,SAAS,CAAC;IAyDrC;QA4CE,gBAAY,MAAkB;YAC5B,IAAI,CAAC,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAClB;SACF;QAED,oBAAG,GAAH,UAAI,MAAkB;YACpB,IAAI,OAAO,CAAC;YACZ,KAAK,OAAO,IAAI,MAAM,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBACnC,SAAS;iBACV;gBACD,IAAM,IAAI,GAAG,MAAM,CAAC,OAA2B,CAAC,CAAC;gBACjD,IAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,MAAI,OAAS,CAAiB,CAAC;gBAEzE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAW,CAAC;aACzB;YAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;SACvB;QAED,yBAAQ,GAAR,UAAS,GAAW,EAAE,IAAU,EAAE,GAAS;YACzC,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAE9D,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;SACnE;QAED,+BAAc,GAAd,UAAe,GAAW;YACxB,IAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAE5D,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;gBAC1B,OAAO,MAAM,CAAC;aACf;YAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,GAAW;gBACvF,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACrB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAClC;QAED,sBAAI,+BAAW;iBAAf;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;iBAED,UAAgB,GAAW;gBACzB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;aACzB;;;WAJA;QAMD,wBAAO,GAAP,UAAQ,GAAW,EAAE,KAAc;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;SACtD;QAED,yBAAQ,GAAR,UAAS,GAAW,EAAE,MAA0B;YAC9C,OAAO,GAAG,CAAC;SACZ;QAGD,4BAAW,GAAX,UAAY,IAAU,EAAE,KAAa;YAAb,sBAAA,EAAA,aAAa;YACnC,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACjC;QAED,2BAAU,GAAV,UAAW,GAAW;YACpB,OAAO,GAAG,CAAC;SACZ;QAED,6BAAY,GAAZ,UAAa,GAAW,EAAE,aAAsB,EAAE,GAAsB,EAAE,QAAiB;YACzF,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAEvC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;gBACxB,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC;gBACzC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3C;QAED,2BAAU,GAAV,UAAW,IAAY,EAAE,MAAc;YACrC,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;YAEhE,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC5E;QAKD,uBAAM,GAAN,UAAO,IAAW,EAAE,MAAe,EAAE,KAAa;YAAb,sBAAA,EAAA,aAAa;YAChD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,OAAO,CAAS,IAAI,CAAC,OAAO,CAAC;sBAChC,IAAI,CAAC,OAAO;sBACZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;aAC7B;YAED,IAAI,OAAO,CAAS,IAAI,CAAC,OAAO,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5C;YAED,IAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;kBAChE,QAAQ;kBACR,YAAY,CAAC;YAEjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SACjD;QAID,4BAAW,GAAX,UAAY,IAAW,EAAE,MAAe,EAAE,KAAa;YAAb,sBAAA,EAAA,aAAa;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,OAAO,CAAS,IAAI,CAAC,YAAY,CAAC;sBACrC,IAAI,CAAC,YAAY;sBACjB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;aAClC;YAED,IAAI,OAAO,CAAS,IAAI,CAAC,YAAY,CAAC,EAAE;gBACtC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACjD;YACD,IAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,GAAG,YAAY,CAAC;YAEpE,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SACtD;QAED,4BAAW,GAAX,UAAY,SAAiB,EAAE,MAAe,EAAE,MAAgB;YAC9D,IAAI,IAAI,CAAC;YACT,IAAI,KAAK,CAAC;YAEV,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC/D;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;aAC7B;;;;YAKD,IAAI,CAAC,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;;gBAEvB,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;oBACvC,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC7D,IAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,MAAI,OAAO,MAAG,EAAE,GAAG,CAAC,CAAC;oBAC3D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,MAAI,YAAY,MAAG,EAAE,GAAG,CAAC,CAAC;iBAClE;gBACD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;oBACpC,KAAK,GAAG,MAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAG,CAAC;oBAC/E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;iBAChE;;gBAED,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,IAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACvF,OAAO,CAAC,CAAC;iBACV;gBAED,IAAI,MAAM,IAAI,MAAM,KAAK,KAAK,IAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACvF,OAAO,CAAC,CAAC;iBACV;gBAED,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACnD,OAAO,CAAC,CAAC;iBACV;aACF;SACF;QAED,4BAAW,GAAX,UAAY,QAAiB;YAC3B,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;oBACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBAC3B;gBACD,IAAI,QAAQ,EAAE;oBACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC;iBAChC;gBAED,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;YAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;gBACrC,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;aACxC;YAED,OAAO,IAAI,CAAC,kBAAkB,IAAI,QAAQ;gBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC;SAC/C;QAED,iCAAgB,GAAhB,UAAiB,QAAiB;YAChC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;oBACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBAC3B;gBACD,IAAI,QAAQ,EAAE;oBACZ,OAAO,IAAI,CAAC,uBAAuB,CAAC;iBACrC;gBAED,OAAO,IAAI,CAAC,iBAAiB,CAAC;aAC/B;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,uBAAuB,CAAC;aAClD;YAED,OAAO,IAAI,CAAC,uBAAuB,IAAI,QAAQ;gBAC7C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACzD;;QAGD,qBAAI,GAAJ,UAAK,IAAU,EAAE,KAAe;YAC9B,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;SACrE;QAED,+BAAc,GAAd;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;SACvB;QAED,+BAAc,GAAd;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;SACvB;QAKD,yBAAQ,GAAR,UAAS,IAAW,EAAE,MAAe,EAAE,KAAe;YACpD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,OAAO,CAAS,IAAI,CAAC,SAAS,CAAC;sBAClC,IAAI,CAAC,SAAS;sBACd,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;aAC/B;YAED,IAAI,OAAO,CAAS,IAAI,CAAC,SAAS,CAAC,EAAE;gBACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5C;YAED,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;kBAC7C,QAAQ;kBACR,YAAY,CAAC;YAEjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAClD;QAID,4BAAW,GAAX,UAAY,IAAW,EAAE,MAAe,EAAE,KAAe;YACvD,OAAO,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;SAC1E;QAID,8BAAa,GAAb,UAAc,IAAW,EAAE,MAAe,EAAE,KAAe;YACzD,OAAO,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;SAC9E;;QAID,8BAAa,GAAb,UAAc,WAAoB,EAAE,MAAe,EAAE,MAAgB;YACnE,IAAI,CAAC,CAAC;YACN,IAAI,KAAK,CAAC;YAEV,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAChE;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;aAC9B;YAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;;;gBAGtB,IAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtE,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;oBACzC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,MAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;oBACvG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,MAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;oBAC7G,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,MAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;iBAC1G;gBACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBAC3B,KAAK,GAAG,MAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAG,CAAC;oBACxH,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;iBAClE;gBAED,IAAI,CAAC,OAAO,CAAS,IAAI,CAAC,kBAAkB,CAAC;uBACxC,CAAC,OAAO,CAAS,IAAI,CAAC,mBAAmB,CAAC;uBAC1C,CAAC,OAAO,CAAS,IAAI,CAAC,iBAAiB,CAAC;uBACxC,CAAC,OAAO,CAAS,IAAI,CAAC,cAAc,CAAC,EAAE;oBAC1C,OAAO;iBACR;;gBAGD,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC/E,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACtF,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACnF,OAAO,CAAC,CAAC;iBACV;qBAAM,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC9D,OAAO,CAAC,CAAC;iBACV;aACF;SACF;;QAGD,8BAAa,GAAb,UAAc,QAAiB;YAC7B,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;oBACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;iBAC7B;gBAED,IAAI,QAAQ,EAAE;oBACZ,OAAO,IAAI,CAAC,oBAAoB,CAAC;iBAClC;qBAAM;oBACL,OAAO,IAAI,CAAC,cAAc,CAAC;iBAC5B;aACF;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;oBACvC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;iBACjC;gBAED,OAAO,IAAI,CAAC,oBAAoB,IAAI,QAAQ;oBAC1C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC;aACnD;SACF;;;QAMD,mCAAkB,GAAlB,UAAmB,QAAkB;YACnC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;oBACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;iBAC7B;gBACD,IAAI,QAAQ,EAAE;oBACZ,OAAO,IAAI,CAAC,yBAAyB,CAAC;iBACvC;qBAAM;oBACL,OAAO,IAAI,CAAC,mBAAmB,CAAC;iBACjC;aACF;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC,EAAE;oBAC5C,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;iBACtC;gBAED,OAAO,IAAI,CAAC,yBAAyB,IAAI,QAAQ;oBAC/C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC;aAC7D;SACF;QAED,iCAAgB,GAAhB,UAAiB,QAAkB;YACjC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;oBACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;iBAC7B;gBACD,IAAI,QAAQ,EAAE;oBACZ,OAAO,IAAI,CAAC,uBAAuB,CAAC;iBACrC;qBAAM;oBACL,OAAO,IAAI,CAAC,iBAAiB,CAAC;iBAC/B;aACF;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE;oBAC1C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;iBACpC;gBAED,OAAO,IAAI,CAAC,uBAAuB,IAAI,QAAQ;oBAC7C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC;aACzD;SACF;QAED,qBAAI,GAAJ,UAAK,KAAa;;;YAGhB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;SAC9C;QAED,yBAAQ,GAAR,UAAS,KAAa,EAAE,OAAe,EAAE,OAAgB;YACvD,IAAI,KAAK,GAAG,EAAE,EAAE;gBACd,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;aAC9B;YAED,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;SAC9B;QAED,+BAAc,GAAd,UAAe,GAAW;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC;YAC3F,IAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAE5D,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;gBAC1B,OAAO,MAAM,CAAC;aACf;YAED,IAAI,CAAC,eAAe,CAClB,GAAG,CACF,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAC,GAAW;gBACxD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACrB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAClC;QAEO,uCAAsB,GAAtB,UAAuB,SAAiB,EAAE,MAAc,EAAE,MAAgB;YAChF,IAAM,GAAG,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC;YACN,IAAI,EAAE,CAAC;YACP,IAAI,GAAG,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;gBAEtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;oBACvB,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBAC1E,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;iBACrE;aACF;YAED,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,KAAK,KAAK,EAAE;oBACpB,EAAE,GAAI,IAAI,CAAC,iBAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEvD,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;gBACD,EAAE,GAAI,IAAI,CAAC,gBAA6B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEtD,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;aAC9B;YAED,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,EAAE,GAAI,IAAI,CAAC,iBAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvD,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;oBACb,OAAO,EAAE,CAAC;iBACX;gBAED,EAAE,GAAI,IAAI,CAAC,gBAA6B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEtD,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;aAC9B;YAED,EAAE,GAAI,IAAI,CAAC,gBAA6B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;gBACb,OAAO,EAAE,CAAC;aACX;YACD,EAAE,GAAI,IAAI,CAAC,iBAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEvD,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SAC9B;QAEO,sCAAqB,GAArB,UAAsB,WAAmB,EAAE,MAAc,EAAE,MAAe;YAChF,IAAI,EAAE,CAAC;YACP,IAAM,GAAG,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBAE5B,IAAI,CAAC,SAAA,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;oBACtB,IAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBACvE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBAC3E,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;iBACtE;aACF;YAED,IAAI,CAAC,OAAO,CAAS,IAAI,CAAC,cAAc,CAAC;mBACpC,CAAC,OAAO,CAAS,IAAI,CAAC,mBAAmB,CAAC;mBAC1C,CAAC,OAAO,CAAS,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBAC7C,OAAO;aACR;YAED,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,KAAK,MAAM,EAAE;oBACrB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEtC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;qBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;oBAC3B,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAE3C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;qBAAM;oBACL,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEzC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;aACF;iBAAM;gBACL,IAAI,MAAM,KAAK,MAAM,EAAE;oBACrB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBACb,OAAO,EAAE,CAAC;qBACX;oBACD,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC3C,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBACb,OAAO,EAAE,CAAC;qBACX;oBACD,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEzC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;qBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;oBAC3B,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC3C,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBACb,OAAO,EAAE,CAAC;qBACX;oBACD,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBACb,OAAO,EAAE,CAAC;qBACX;oBACD,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAEzC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;qBAAM;oBACL,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBACb,OAAO,EAAE,CAAC;qBACX;oBACD,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBACb,OAAO,EAAE,CAAC;qBACX;oBACD,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAE3C,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBAC9B;aACF;SACF;QAEO,mCAAkB,GAAlB;YACN,IAAM,WAAW,GAAa,EAAE,CAAC;YACjC,IAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAM,WAAW,GAAa,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC;YAET,IAAI,CAAC,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;;gBAEvB,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9C;;;YAGD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACvB,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5C;YACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACvB,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,OAAK,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,MAAM,CAAC,OAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;YACxE,IAAI,CAAC,uBAAuB,GAAG,IAAI,MAAM,CAAC,OAAK,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;SAC/E;QAEO,qCAAoB,GAApB;YACN,IAAM,SAAS,GAAG,EAAE,CAAC;YACrB,IAAM,WAAW,GAAG,EAAE,CAAC;YACvB,IAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAM,WAAW,GAAG,EAAE,CAAC;YAEvB,IAAI,CAAC,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;;;gBAGtB,IAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtE,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzB;;;YAGD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtB,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,OAAK,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;YAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;YAE7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,MAAM,CAAC,OAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;YAC1E,IAAI,CAAC,yBAAyB,GAAG,IAAI,MAAM,CAAC,OAAK,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;YAChF,IAAI,CAAC,uBAAuB,GAAG,IAAI,MAAM,CAAC,OAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAG,EAAE,GAAG,CAAC,CAAC;SAC7E;qBACF;KAAA,IAAA;IAED,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;QACrC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B;;IC5uBO,IAAM,eAAe,GAAG;QAC7B,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,GAAG;KACd;;ICIM,IAAM,kBAAkB,GAAG,cAAc,CAAC;IAE1C,IAAM,iBAAiB,GAAG;QAC/B,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;KACP,CAAC;IAEK,IAAM,0BAA0B,GAAG,eAAe,CAAC;IAEnD,IAAM,mBAAmB,GAA4B;QAC1D,MAAM,EAAG,OAAO;QAChB,IAAI,EAAK,QAAQ;QACjB,CAAC,EAAI,eAAe;QACpB,EAAE,EAAG,YAAY;QACjB,CAAC,EAAI,UAAU;QACf,EAAE,EAAG,YAAY;QACjB,CAAC,EAAI,SAAS;QACd,EAAE,EAAG,UAAU;QACf,CAAC,EAAI,OAAO;QACZ,EAAE,EAAG,SAAS;QACd,CAAC,EAAI,SAAS;QACd,EAAE,EAAG,WAAW;QAChB,CAAC,EAAI,QAAQ;QACb,EAAE,EAAG,UAAU;KAChB,CAAC;IAEK,IAAM,UAAU,GAAe;QACpC,QAAQ,EAAE,eAAe;QACzB,cAAc,EAAE,qBAAqB;QACrC,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,cAAc;QACvB,sBAAsB,EAAE,6BAA6B;QACrD,YAAY,EAAE,mBAAmB;QAEjC,MAAM,EAAE,mBAAmB;QAC3B,WAAW,EAAE,wBAAwB;QAErC,IAAI,EAAE,iBAAiB;QAEvB,QAAQ,EAAE,qBAAqB;QAC/B,WAAW,EAAE,wBAAwB;QACrC,aAAa,EAAE,0BAA0B;QAEzC,aAAa,EAAE,0BAA0B;KAC1C;;ICvDD;aAGgB,aAAa,CAAI,MAAW,EAAE,MAAW,EAAE,WAAoB;QAC7E,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;oBACrC,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5D,KAAK,EAAE,CAAC;aACT;SACF;QAED,OAAO,KAAK,GAAG,UAAU,CAAC;IAC5B;;ICHA;aAEgB,QAAQ;QACtB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;iBAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;QAEF,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU;YACjB,OAAO,UAAU,CAAC,IAAI,CAAC;iBACpB,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAIF,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;;QAI7B,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3B,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;;QAI9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEvC,iBAAiB,CACf,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACtB,UAAS,KAAa,EAAE,IAAiB,EAAE,MAAyB,EAAE,KAAa;YACjF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAExC,OAAO,MAAM,CAAC;SACf,CACF,CAAC;;;;;IAMJ,CAAC;aAEe,OAAO,CAAC,IAAU,EAAE,KAAa,EAAE,MAAoB;QAApB,uBAAA,EAAA,SAAS,SAAS,EAAE;QACrE,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;aAEe,OAAO,CAAC,IAAU,EAAE,MAAoB,EAAE,KAAe;QAArC,uBAAA,EAAA,SAAS,SAAS,EAAE;QACtD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;IACA;IACA;IACA;aAEgB,UAAU,CAAC,IAAU,EAAE,KAAa;QAClD,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE9B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,KAAe;QACpD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;IAC5C;;ICpEA;aAEgB,YAAY;QAC1B,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACzC,UAAU,IAAU,EAAE,IAA0B;;YAE9C,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC;SAC1D,CACF,CAAC;QAEF,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACzC,UAAU,IAAU;;YAElB,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC;SAChD,CACF,CAAC;QAEF,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACrD,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACtD,sBAAsB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QACxD,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;;QAIzD,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/B,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;;QAIlC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/B,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;;QAKlC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAChC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAChC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1C,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE1C,iBAAiB,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAClD,UAAU,KAAK,EAAE,IAAiB,EAAE,MAAM,EAAE,KAAK;YAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAExC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QAEL,iBAAiB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,KAAK,EAAE,IAAiB,EAAE,MAAM,EAAE,KAAK;YAC/E,IAAI,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEvC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,MAAuB;QACpE,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,SAAS,oBAAoB,CAAC,IAAU,EAAE,IAA0B;QAClE,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,SAAS,uBAAuB,CAAC,IAAU;QACzC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IAED;aAEgB,cAAc,CAAC,IAAU,EAAE,KAAa,EAAE,MAAoB,EAAE,KAAe;QAArC,uBAAA,EAAA,SAAS,SAAS,EAAE;QAC5E,OAAO,oBAAoB,CAAC,IAAI,EAC9B,KAAK;;QAEL,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;;QAE5B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EACvC,MAAM,CAAC,cAAc,EAAE,EACvB,MAAM,CAAC,cAAc,EAAE,EACvB,KAAK,CAAC,CAAC;IACX,CAAC;aAEe,WAAW,CAAC,IAAU,EAAE,MAAoB,EAAE,KAAe;QAArC,uBAAA,EAAA,SAAS,SAAS,EAAE;QAC1D,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;IACxF,CAAC;aAEe,iBAAiB,CAAC,IAAU,EAAE,KAAa,EAAE,KAAe;QAC1E,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC;aAEe,cAAc,CAAC,IAAU,EAAE,KAAe;QACxD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;aAEe,iBAAiB,CAAC,IAAU,EAAE,KAAe;QAC3D,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;aAEe,cAAc,CAAC,IAAU,EAAE,KAAe,EAAE,MAA4B;QAA5B,uBAAA,EAAA,SAAiB,SAAS,EAAE;QACtF,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,SAAS,oBAAoB,CAAC,IAAU,EAAE,KAAa,EAAE,IAAY,EACvC,OAAe,EAAE,GAAW,EAAE,GAAW,EAAE,KAAe;QACtF,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;SACzC;QAED,IAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,IAAM,KAAK,GAAG,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;QAEtD,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,UAAU,CAAC,IAAU,EAAE,QAAgB,EAAE,IAAY,EAC1C,OAAe,EAAE,GAAW,EAAE,GAAW;QAC3D,IAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5E,IAAM,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5E,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd;;IC3IA;aAEgB,YAAY;;QAE1B,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;SAChC,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAC7B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,KAAK,GAAG,4BAA4B,GAAG,EAAE,CAAC;SACvD,CACF,CAAC;IACJ,CAAC;IAED;aAEgB,WAAW,CAAC,KAAc;QACxC,OAAO,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;IAC5B,CAAC;aAEe,WAAW,CAAC,KAAc;QACxC,OAAO,KAAK,GAAG,4BAA4B,GAAG,EAAE,CAAC;IACnD;;aClBgB,aAAa;;QAG3B,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAS,IAAU;YACjD,OAAO,IAAI,CAAC,IAAI,CAAC;iBACd,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CAAC,CAAC;QACH,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAS,IAAU;YACjD,OAAO,IAAI,CAAC,OAAO,EAAE;iBAClB,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CAAC,CAAC;;QAIH,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAChC,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAEnC,aAAa,CAAC,GAAG,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACpF,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAE/C,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACpF,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAEnC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;IACL;;aC1BgB,UAAU;;QAGxB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAChC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAIF,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;QAI5B,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;QAI9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACrC;;aCpBgB,WAAW;;QAGzB,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAChC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAIF,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;;QAI7B,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;;QAI9B,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3B,aAAa,CAAC,GAAG,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACpF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEtC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED;aAEgB,UAAU,CAAC,IAAU,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;aAEe,UAAU,CAAC,IAAU,EAAE,OAAe,EAAE,KAAe;QACrE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED;IACA;IACA;IACA;IACA;;ICvDA;IAcA,SAAS,oBAAoB,CAAC,KAAa,EAAE,SAAiB;QAC5D,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,IAAU,EAAE,MAAM;YAC5D,IAAI,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC;YAChF,IAAI,IAAI,GAAG,GAAG,CAAC;YACf,IAAI,MAAM,GAAG,CAAC,EAAE;gBACd,MAAM,GAAG,CAAC,MAAM,CAAC;gBACjB,IAAI,GAAG,GAAG,CAAC;aACZ;YAED,OAAO,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;SACvF,CAAC,CAAC;IACL,CAAC;aAEe,UAAU;QACxB,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;;QAI/B,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACrC,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACtC,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YAC5F,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAExD,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED;IAEA;IACA;IACA;IACA,IAAM,WAAW,GAAG,iBAAiB,CAAC;IAEtC,SAAS,gBAAgB,CAAC,OAAe,EAAE,GAAW;QACpD,IAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,OAAO,IAAI,CAAC;SACb;QAED,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC;QAEnD,OAAO,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;aACgB,eAAe,CAAC,KAAW,EAAE,IAAU,EACvB,MAA8B;QAA9B,uBAAA,EAAA,WAA8B;QAC5D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO,KAAK,CAAC;SACd;QAED,IAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;;QAE5B,IAAM,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC;QACjD,IAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;;QAE1D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;;;QAIlC,OAAO,GAAG,CAAC;IACb,CAAC;aAEe,aAAa,CAAC,IAAU;;;QAGtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IAED;IAEA;IACA;IACA;IACA;IACA;IAEA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;aACgB,YAAY,CAAC,IAAU,EAAE,MAA8B;QAA9B,uBAAA,EAAA,WAA8B;QACrE,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAEpC,OAAO,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;aAEe,YAAY,CAAC,IAAU,EAAE,KAAsB,EAAE,aAAuB,EAAE,WAAqB,EAAE,MAA8B;QAA9B,uBAAA,EAAA,WAA8B;QAC7I,IAAM,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACnC,IAAI,WAAW,CAAC;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpB,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,OAAO,KAAK,CAAC;aACd;SACF;aAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;YACpE,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,EAAE;YACnC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;SACpC;QACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;SAC5C;QACD,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,EAAE;gBAC9C,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;;aAE/D;iBAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBACpC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;;;gBAGhC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;aAgBgB,cAAc,CAAC,IAAU,EAAE,aAAuB;QAChE,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;aAEe,oBAAoB,CAAC,IAAU;QAE7C,QAAQ,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;eAClE,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACxE,CAAC;IAED;;;;;;;;;;;aAYgB,uBAAuB,CAAC,IAAU,EAAE,KAAa,EAAE,MAA8B;QAA9B,uBAAA,EAAA,WAA8B;QAC/F,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;YACvB,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SAC7D;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,IAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACxD;YAED,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SACnD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,oBAAoB,CAAC,IAAU,EAAE,KAAY;QAC3D,IAAM,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;QAElE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAGD;IACA;;;;;;;;;;;;;;;;;;;;IAqBA;IACA;;;;;;;;;;;;aCrOgB,UAAU;;QAGxB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAChC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAIF,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;QAI5B,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;QAI9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACrC;;ICjCA;aAegB,eAAe;QAC7B,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACnE,CACF,CAAC;QAEF,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACzC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAClE,CACF,CAAC;QAEF,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAC1C,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACzD,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAC3C,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC9D,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAC5C,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC/D,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAC7C,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAChE,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAC9C,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjE,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAC/C,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAClE,CACF,CAAC;QACF,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAChD,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACnE,CACF,CAAC;;QAKF,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;;QAIlC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;;QAInC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACtC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC;QACV,KAAK,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE;YACpD,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SACrC;QAED,SAAS,OAAO,CAAC,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACzE,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,OAAK,KAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAE5D,OAAO,MAAM,CAAC;SACf;QAED,KAAK,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE;YACjD,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC/B;;IAEH;;aC/EgB,QAAQ;;QAGtB,SAAS,OAAO,CAAC,IAAU,EAAE,KAAc;YACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;SACzC;QAED,SAAS,OAAO,CAAC,IAAU,EAAE,KAAc;YACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;SACpC;QAED,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;QACF,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAC7B,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;QACF,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EACxC,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAC7B,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;QAEF,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAC9B,UAAS,IAAU,EAAE,IAA0B;YAC7C,IAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtD,OAAO,KAAG,EAAE,GAAG,GAAK,CAAC;SACtB,CACF,CAAC;QAEF,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAChC,UAAS,IAAU,EAAE,IAA0B;YAC7C,IAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,IAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtD,OAAO,KAAG,EAAE,GAAG,GAAG,GAAG,GAAK,CAAC;SAC5B,CACF,CAAC;QAEF,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAC9B,UAAS,IAAU,EAAE,IAA0B;YAC7C,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtD,OAAO,KAAG,EAAE,GAAG,GAAK,CAAC;SACtB,CACF,CAAC;QAEF,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAChC,UAAS,IAAU,EAAE,IAA0B;YAC7C,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,IAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtD,OAAO,KAAG,EAAE,GAAG,GAAG,GAAG,GAAK,CAAC;SAC5B,CACF,CAAC;QAEF,SAAS,QAAQ,CAAC,KAAa,EAAE,SAAkB;YACjD,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAC9B,UAAS,IAAU,EAAE,IAA0B;gBAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;aAClG,CACF,CAAC;SACH;QAED,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;QAIrB,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;QAG1B,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;QAK5B,SAAS,aAAa,CAAC,QAAiB,EAAE,MAAc;YACtD,OAAO,MAAM,CAAC,cAAc,CAAC;SAC9B;QAED,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAClC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAClC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEvC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,aAAa,CACX,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACjE,IAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;YAEzC,OAAO,MAAM,CAAC;SACf,CACF,CAAC;QACF,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YAC3F,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;YAEzB,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YAC5F,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YAEvC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,KAAK,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACtF,IAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YAEvC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,OAAO,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACxF,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;YAEvC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,KAAK,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACtF,IAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzC,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QACH,aAAa,CAAC,OAAO,EAAE,UAAS,KAAa,EAAE,KAAgB,EAAE,MAAyB;YACxF,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAE1C,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;IAEL;;ICnLA;IAsBA,IAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,IAAM,cAAc,GAA4D,EAAE,CAAC;IACnF,IAAI,YAAoB,CAAC;IAEzB,SAAS,eAAe,CAAC,GAAW;QAClC,OAAO,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;IACzD,CAAC;IAED;IACA;IACA;IACA;IACA,SAAS,YAAY,CAAC,KAAe;QACnC,IAAI,IAAI,CAAC;QACT,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;YACvB,IAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACZ,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;gBACD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;oBAEzE,MAAM;iBACP;gBACD,CAAC,EAAE,CAAC;aACL;YACD,CAAC,EAAE,CAAC;SACL;QAED,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,YAAY,CAAC,YAAwB,EACxB,WAAuB;QAClD,IAAM,GAAG,GAAe,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAExD,KAAK,IAAM,SAAS,IAAI,WAAW,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;gBACvC,SAAS;aACV;YAED,IAAI,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE;gBACzE,GAAG,CAAC,SAAgB,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;aACvD;iBAAM,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;gBACzC,GAAG,CAAC,SAAgB,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;aAChD;iBAAM;gBACL,OAAO,GAAG,CAAC,SAAgB,CAAC,CAAC;aAC9B;SACF;QACD,KAAK,IAAM,UAAU,IAAI,YAAY,EAAE;YACrC,IACE,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC;gBACpC,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC;gBACpC,QAAQ,CAAC,YAAY,CAAC,UAA8B,CAAC,CAAC,EACtD;;gBAEA,GAAG,CAAC,UAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,UAA8B,CAAC,CAAC,CAAC;aACjF;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,SAAS,UAAU,CAAC,IAAY;;;;;;;;;;;;;QAa9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;YAElB,OAAO,CAAC,KAAK,CAAC,gDAA6C,IAAI,uBAAmB,CAAC,CAAC;;SAErF;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;IACA;IACA;aACgB,kBAAkB,CAAC,GAAuB,EAAE,MAAmB;QAC7E,IAAI,IAAY,CAAC;QAEjB,IAAI,GAAG,EAAE;YACP,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;gBACvB,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;aACvB;iBAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACxB,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAClC;YAED,IAAI,IAAI,EAAE;gBACR,YAAY,GAAG,IAAI,CAAC;aACrB;SACF;QAED,OAAO,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC;IAC5C,CAAC;aAEe,YAAY,CAAC,IAAY,EAAE,MAAmB;QAC5D,IAAI,MAAM,KAAK,IAAI,EAAE;;YAEnB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE/B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,IAAI,YAAY,GAAG,UAAU,CAAC;QAC9B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;YAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;gBACxC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;aACrD;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;oBACxC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;iBAC1C;gBACD,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;gBAE3D,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;YACxB,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBACtC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;aAChC,CAAC,CAAC;SACJ;;;;QAKD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAGzB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;aAEe,YAAY,CAAC,IAAY,EAAE,MAAmB;QAC5D,IAAI,OAAO,GAAG,MAAM,CAAC;QAErB,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,IAAI,YAAY,GAAG,UAAU,CAAC;;YAE9B,IAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,SAAS,IAAI,IAAI,EAAE;gBACrB,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;aAClC;YACD,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;;YAGvB,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAC1B;aAAM;;YAEL,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE;oBACtC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;iBAC5C;qBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAChC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;iBACtB;aACF;SACF;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;aACgB,SAAS,CAAC,GAAuB;QAC/C,gBAAgB,EAAE,CAAC;QAEnB,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,YAAY,CAAC;SACrB;;QAED,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAExC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;aAEe,WAAW;QACzB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS,gBAAgB;QACvB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YAEjB,OAAO,SAAS,CAAC;SAClB;QAED,kBAAkB,CAAC,IAAI,EAAE;YACvB,sBAAsB,EAAE,sBAAsB;YAC9C,OAAO,YAAC,GAAW;gBACjB,IAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACnB,IAAM,MAAM,GACV,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC;sBACzB,IAAI;sBACJ,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;gBAE9D,OAAO,GAAG,GAAG,MAAM,CAAC;aACrB;SACF,CAAC,CAAC;QAEH,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC;QAClB,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;IACnB;;ICpQA,IAAM,QAAQ,GAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;aAC7F,UAAC,GAA+B,EAAE,KAAK;QAC1E,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAElB,OAAO,GAAG,CAAC;IACb,CAAC;IAJD,IAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,KAIjC,EAAE,CAAC,CAAC;aAES,eAAe,CAAC,QAA6B;QAC3D,IAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,YAAY;aACX,IAAI,CAAC,UAAC,GAAqB;YAC1B,OAAO,CAAC,GAAG,IAAI,YAAY;mBACtB,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI;mBACtB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3B,CAAC,EAAE;YACN,OAAO,KAAK,CAAC;SACd;;;;;;QAOD,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;;gBAEzB,IAAI,cAAc,EAAE;oBAClB,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC1D,cAAc,GAAG,IAAI,CAAC;iBACvB;aACF;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACA;IACA;IACA;IACA;IACA;IACA;;aClDgB,OAAO,CAAE,MAAc;QACrC,OAAO,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D;;aCEgB,MAAM,CAAC,GAAa;QAClC,IAAI,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC;QACrC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;QACzB,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;;;QAIvB,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;aAC/C,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;YACpD,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7D,IAAI,GAAG,CAAC,CAAC;YACT,MAAM,GAAG,CAAC,CAAC;SACZ;;;QAID,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC;QAExC,IAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;QAE5B,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;QAE5B,IAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;QAExB,IAAI,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;;QAG7B,IAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,cAAc,CAAC;QACzB,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;;QAG9C,IAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,EAAE,CAAC;QAEb,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAElB,OAAO,GAAG,CAAC;IACb,CAAC;aAEe,YAAY,CAAC,GAAW;;;QAGtC,OAAO,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;IAC7B,CAAC;aAEe,YAAY,CAAC,KAAa;;QAExC,OAAO,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B;;IC3DA;IAKA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAM,UAAU,GAA8B;QAC5C,EAAE,EAAE,EAAE;QACN,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN,CAAC;IAEF;IACA,SAAS,iBAAiB,CAAC,GAAsB,EAAE,GAAW,EACnC,aAAsB,EAAE,QAAiB,EACzC,MAAc;QACvC,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;aAEe,YAAY,CAAC,cAAwB,EAAE,aAAsB,EAAE,MAAc;QAC3F,IAAM,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC;QACtD,IAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,IAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,IAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,IAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtC,IAAM,CAAC,GACL,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;YAC1C,OAAO,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB,OAAO,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACzC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACnB,KAAK,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAClB,IAAI,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YACnC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB,MAAM,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACvC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEvC,IAAM,CAAC,GACL,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,cAAc,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;;;;QAK3D,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;aACgB,0BAA0B,CAAC,gBAAqB;QAC9D,IAAI,gBAAgB,KAAK,SAAS,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,QAAO,gBAAgB,CAAC,KAAK,UAAU,EAAE;YAC3C,KAAK,GAAG,gBAAgB,CAAC;YAEzB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;aACgB,2BAA2B,CAAC,SAAiB,EAAE,KAAa;QAC1E,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;SAC9B;QACD,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC9B,IAAI,SAAS,KAAK,GAAG,EAAE;YACrB,UAAU,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;ICtFA;QAQE,kBAAY,QAA6B,EAAE,MAA8B;YAA9B,uBAAA,EAAA,WAA8B;YAJzE,UAAK,GAAwB,EAAE,CAAC;YAChC,YAAO,GAAW,SAAS,EAAE,CAAC;YAI5B,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;;YAEvD,IAAM,eAAe,GAAG,QAAQ,CAAC;YACjC,IAAM,KAAK,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC;YACxC,IAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,IAAI,CAAC,CAAC;YAC9C,IAAM,MAAM,GAAG,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC;YAC1C,IAAM,KAAK,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC;YACxC,IAAM,IAAI,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,IAAM,KAAK,GAAG,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC;YACzC,IAAM,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,CAAC,CAAC;YAC7C,IAAM,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,CAAC,CAAC;YAC7C,IAAM,YAAY,GAAG,eAAe,CAAC,YAAY,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;;YAGjD,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY;gBAChC,OAAO,GAAG,IAAI;gBACd,OAAO,GAAG,EAAE,GAAG,IAAI;gBACnB,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;;;;YAIzB,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI;gBAChB,KAAK,GAAG,CAAC,CAAC;;;;YAIZ,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM;gBACpB,QAAQ,GAAG,CAAC;gBACZ,KAAK,GAAG,EAAE,CAAC;;;;YAOb,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;SACrB;QAED,0BAAO,GAAP;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,2BAAQ,GAAR,UAAS,UAAoB;;YAG3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC;aACtC;YAED,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAErD,IAAI,UAAU,EAAE;gBACd,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC3C;YAED,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,6BAAU,GAAV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QAID,yBAAM,GAAN,UAAO,SAAkB;YACvB,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aAC3B;YAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;YAEpD,OAAO,IAAI,CAAC;SACb;QAGD,sBAAG,GAAH;YACE,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;YAEzB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAExB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAErC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE/B,OAAO,IAAI,CAAC;SACb;QAED,qBAAE,GAAF,UAAG,MAAc;YACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,OAAO,GAAG,CAAC;aACZ;YACD,IAAI,IAAI,CAAC;YACT,IAAI,MAAM,CAAC;YACX,IAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YAExC,IAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE;gBACzC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,GAAG,KAAK,CAAC;gBACzC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAE3C,OAAO,KAAK,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;aACjD;;YAGD,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3D,QAAQ,KAAK;gBACX,KAAK,MAAM;oBACT,OAAO,IAAI,GAAG,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC;gBAC1C,KAAK,KAAK;oBACR,OAAO,IAAI,GAAG,YAAY,GAAG,KAAK,CAAC;gBACrC,KAAK,OAAO;oBACV,OAAO,IAAI,GAAG,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC;gBACzC,KAAK,SAAS;oBACZ,OAAO,IAAI,GAAG,IAAI,GAAG,YAAY,GAAG,GAAG,CAAC;gBAC1C,KAAK,SAAS;oBACZ,OAAO,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,CAAC;;gBAE5C,KAAK,cAAc;oBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;gBACjD;oBACE,MAAM,IAAI,KAAK,CAAC,kBAAgB,KAAO,CAAC,CAAC;aAC5C;SACF;QAED,0BAAO,GAAP;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,OAAO,GAAG,CAAC;aACZ;YAED,QACE,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,KAAK,GAAG,KAAK;gBAClB,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,MAAM;gBAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,OAAO,EAClC;SACH;uBACF;KAAA,IAAA;aAEe,UAAU,CAAC,GAAQ;QACjC,OAAO,GAAG,YAAY,QAAQ,CAAC;IACjC;;aCvKgB,OAAO,CAAC,MAAyB;QAC/C,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC3B,IAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACtC,IAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAS;gBACtF,OAAO,CAAC,IAAI,IAAI,CAAC;aAClB,CAAC,CAAC;YACH,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBACvD,KAAK,CAAC,QAAQ,GAAG,CAAC;gBAClB,CAAC,KAAK,CAAC,KAAK;gBACZ,CAAC,KAAK,CAAC,YAAY;gBACnB,CAAC,KAAK,CAAC,cAAc;gBACrB,CAAC,KAAK,CAAC,eAAe;gBACtB,CAAC,KAAK,CAAC,SAAS;gBAChB,CAAC,KAAK,CAAC,aAAa;gBACpB,CAAC,KAAK,CAAC,eAAe;iBACrB,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;YAEvD,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,UAAU,GAAG,UAAU;oBACrB,KAAK,CAAC,aAAa,KAAK,CAAC;oBACzB,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;oBAC/B,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;aAC/B;YAED,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACvD,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;aAC9B;iBAAM;gBACL,OAAO,UAAU,CAAC;aACnB;SACF;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;aAEe,aAAa,CAAC,MAAyB,EAAE,KAA8B;QACrF,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3E,OAAO,MAAM,CAAC;IAChB,CAAC;aAEe,WAAW,CAAC,MAAyB;QACnD,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAExB,OAAO,MAAM,CAAC;IAChB;;IChDA;IAUA;IACA;IACA;IACA,IAAM,gBAAgB,GAAG,kJAAkJ,CAAC;IAC5K;IACA,IAAM,aAAa,GAAG,6IAA6I,CAAC;IAEpK,IAAM,OAAO,GAAG,uBAAuB,CAAC;IAExC,IAAM,QAAQ,GAAgC;QAC5C,CAAC,cAAc,EAAE,qBAAqB,EAAE,IAAI,CAAC;QAC7C,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,CAAC;QACvC,CAAC,cAAc,EAAE,gBAAgB,EAAE,IAAI,CAAC;QACxC,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC;QACpC,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC;QACjC,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;QAChC,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC;QAClC,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;;QAE3B,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC;QACnC,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC;QACnC,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;KAC3B,CAAC;IAEF;IACA,IAAM,QAAQ,GAAuB;QACnC,CAAC,eAAe,EAAE,qBAAqB,CAAC;QACxC,CAAC,eAAe,EAAE,oBAAoB,CAAC;QACvC,CAAC,UAAU,EAAE,gBAAgB,CAAC;QAC9B,CAAC,OAAO,EAAE,WAAW,CAAC;QACtB,CAAC,aAAa,EAAE,mBAAmB,CAAC;QACpC,CAAC,aAAa,EAAE,kBAAkB,CAAC;QACnC,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC1B,CAAC,MAAM,EAAE,UAAU,CAAC;QACpB,CAAC,IAAI,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,IAAM,eAAe,GAAG,qBAAqB,CAAC;IAE9C,IAAM,UAAU,GAA8B;QAC5C,EAAE,EAAE,CAAC;QACL,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;KACb,CAAC;IAEF;IACA;IACA,IAAM,OAAO,GAAG,yLAAyL,CAAC;IAE1M;aACgB,aAAa,CAAC,MAAyB;QACrD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC;SACf;QAED,IAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;QACxB,IAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAGxE,IAAI,SAAS,CAAC;QACd,IAAI,UAAU,CAAC;QACf,IAAI,UAAU,CAAC;QACf,IAAI,QAAQ,CAAC;QAEb,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAExB,OAAO,MAAM,CAAC;SACf;;QAGD,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5B,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;gBACrC,MAAM;aACP;SACF;QAED,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAExB,OAAO,MAAM,CAAC;SACf;QAED,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;;oBAEjC,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChD,MAAM;iBACP;aACF;YAED,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAExB,OAAO,MAAM,CAAC;aACf;SAEF;QACD,IAAI,CAAC,SAAS,IAAI,UAAU,IAAI,IAAI,EAAE;YACpC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAExB,OAAO,MAAM,CAAC;SACf;QAED,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1B,QAAQ,GAAG,GAAG,CAAC;aAChB;iBAAM;gBACL,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAExB,OAAO,MAAM,CAAC;aACf;SACF;QAED,MAAM,CAAC,EAAE,GAAG,UAAU,IAAI,UAAU,IAAI,EAAE,CAAC,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC;QAE/D,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;IACA,SAAS,yBAAyB,CAAC,OAAe,EAAE,QAAgB,EAAE,MAAc,EAAE,OAAe,EAAE,SAAiB,EAAE,SAAiB;QACzI,IAAM,MAAM,GAAG;YACb,cAAc,CAAC,OAAO,CAAC;YACvB,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1C,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;SACxB,CAAC;QAEF,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,cAAc,CAAC,OAAe;QACrC,IAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEnC,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzC,CAAC;IAED,SAAS,iBAAiB,CAAC,GAAW;;QAEpC,OAAO,GAAG;aACP,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;aACjC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,YAAY,CAAC,UAAkB,EAAE,WAAsB,EAAE,MAAyB;QACzF,IAAI,UAAU,EAAE;;YAEd,IAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACvE,IAAM,aAAa,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACxF,IAAI,eAAe,KAAK,aAAa,EAAE;gBACrC,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC/C,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAExB,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,eAAe,CAAC,SAAiB,EAAE,cAAsB,EAAE,SAAiB;QACnF,IAAI,SAAS,EAAE;YACb,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;SAC9B;aAAM,IAAI,cAAc,EAAE;;YAEzB,OAAO,CAAC,CAAC;SACV;aAAM;YACL,IAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACnC,IAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;YACnB,IAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;YAEzB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACnB;IACH,CAAC;IAED;aACgB,iBAAiB,CAAC,MAAyB;QACzD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC;SACf;QAED,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;SAC5B;QAED,IAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;YAChD,OAAO,MAAM,CAAC;SACf;QAED,MAAM,CAAC,EAAE,GAAG,WAAW,CAAC;QACxB,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7D,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAEjE,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QAEvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;aACgB,gBAAgB,CAAC,MAAyB;QACxD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC;SACf;QAED,IAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhD,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAElC,OAAO,MAAM,CAAC;SACf;;;;QAMD,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC;SACxB;aAAM;YACL,OAAO,MAAM,CAAC;SACf;QAED,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC;SACxB;aAAM;YACL,OAAO,MAAM,CAAC;SACf;;;QAID,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;ICnRA;aAYgB,UAAU,CAAC,IAAU,EAAE,MAAc,EAAE,MAAe,EAAE,KAAe,EAAE,MAAU;QAAV,uBAAA,EAAA,UAAU;QACjG,IAAM,OAAO,GAAG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CACb,cAAW,MAAM,gEAA0D,CAC5E,CAAC;SACH;QAED,IAAM,OAAO,GAAG,MAAM,KAAK,KAAK,GAAI,wBAAwB,GAAG,sBAAsB,CAAC,CAAC;QAEvF,IAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,MAAM,CAAC;SACf;QAED,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;aACgB,YAAY,CAAC,IAAU,EAAE,OAAe,EAAE,MAAc,EAAE,KAAe,EAAE,MAAU;QAAV,uBAAA,EAAA,UAAU;QACnG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACtB,OAAO,MAAM,CAAC,WAAW,CAAC;SAC3B;QAED,IAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEhF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;aAEe,YAAY,CAAC,OAAe,EAAE,MAAc;QAC1D,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAM,qBAAqB,GAAG,4CAA4C,CAAC;QAE3E,IAAM,2BAA2B,GAAG,UAAC,KAAU;YAC7C,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;SAC9C,CAAC;QAEF,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,CAAC;YAC5E,qBAAqB,CAAC,SAAS,GAAG,CAAC,CAAC;YACpC,CAAC,IAAI,CAAC,CAAC;SACR;QAED,OAAO,MAAM,CAAC;IAChB;;IC5DA;aACgB,QAAQ,CAAI,CAAK,EAAE,CAAK,EAAE,CAAK;QAC7C,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,OAAO,CAAC,CAAC;SACV;QACD,IAAI,CAAC,IAAI,IAAI,EAAE;YACb,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX;;ICAA,SAAS,gBAAgB,CAAC,MAAyB;QACjD,IAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;SACnF;QAED,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;IACA;IACA;IACA;aACgB,eAAe,CAAC,MAAyB;QACvD,IAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC;QACN,IAAI,IAAI,CAAC;QACT,IAAI,WAAW,CAAC;QAChB,IAAI,eAAe,CAAC;QACpB,IAAI,SAAS,CAAC;QAEd,IAAI,MAAM,CAAC,EAAE,EAAE;YACb,OAAO,MAAM,CAAC;SACf;QAED,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;;QAGvC,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YACpE,qBAAqB,CAAC,MAAM,CAAC,CAAC;SAC/B;;QAGD,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;YAC7B,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzD,IAAI,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;gBACxE,eAAe,CAAC,MAAM,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;aACnD;YAED,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;SACrC;;;;;;QAOD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE;YAC9C,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;SAC1C;;QAGD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACrF;;QAGD,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;YACxB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACvB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACvB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YAC9B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;QAED,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7E,eAAe,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;;;QAI9E,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;YACvB,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;SAClE;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACtB;;QAGD,IAAI,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe,EAAE;YACtF,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;SAChD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,qBAAqB,CAAC,MAAyB;QACtD,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC;QAEhE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QACd,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC9C,GAAG,GAAG,CAAC,CAAC;YACR,GAAG,GAAG,CAAC,CAAC;;;;;YAMR,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9E,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;gBAC9B,eAAe,GAAG,IAAI,CAAC;aACxB;SACF;aAAM;YACL,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/B,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YAE/B,IAAM,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEjD,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;YAGzD,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;;gBAEf,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;oBAC9B,eAAe,GAAG,IAAI,CAAC;iBACxB;aACF;iBAAM,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;;gBAEtB,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACtB,eAAe,GAAG,IAAI,CAAC;iBACxB;aACF;iBAAM;;gBAEL,OAAO,GAAG,GAAG,CAAC;aACf;SACF;QACD,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;YACtD,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;SAC/C;aAAM,IAAI,eAAe,IAAI,IAAI,EAAE;YAClC,eAAe,CAAC,MAAM,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACjD;aAAM;YACL,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;SACpC;QAED,OAAO,MAAM,CAAC;IAChB;;aCxJgB,aAAa,CAAC,MAAyB;QACrD,IAAI,QAAQ,CAAC;QACb,IAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QAEpB,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE;;YAEhD,QAAQ;gBACN,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK;oBACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAGA,aAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI;wBAC5D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;4BACpH,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM;gCACtC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM;oCACtC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,WAAW;wCACtD,CAAC,CAAC,CAAC;YAEjB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,kBAAkB,KAAK,QAAQ,GAAG,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE;gBACtF,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBAC7D,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,gBAAgB,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBAC/D,QAAQ,GAAG,OAAO,CAAC;aACpB;YAED,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC7C;QAED,OAAO,MAAM,CAAC;IAChB;;ICrBA;IACA;IACO,IAAM,QAAQ,GAAG,UAAU,CAAC;IAEnC;IACA;IACO,IAAM,QAAQ,GAAG,UAAU,CAAC;IAEnC;aACgB,yBAAyB,CAAC,MAAyB;;QAEjE,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE;YAC1B,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;SAC9B;QACD,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE;YAC1B,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;SAClC;QACD,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QAErC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;YACzD,OAAO,MAAM,CAAC;SACf;;QAID,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,sBAAsB,GAAG,CAAC,CAAC;QAC/B,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,IAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAErF,IAAI,CAAC,CAAC;QACN,IAAI,KAAK,CAAC;QACV,IAAI,WAAW,CAAC;QAChB,IAAI,OAAO,CAAC;QACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,WAAW,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnF,IAAI,WAAW,EAAE;gBACf,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACnD;gBACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACrE,sBAAsB,IAAI,WAAW,CAAC,MAAM,CAAC;aAC9C;;YAED,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,WAAW,EAAE;oBACf,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;iBACvC;qBAAM;oBACL,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAClD;gBAED,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;aACrD;iBAAM,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;gBACzC,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClD;SACF;;QAGD,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,WAAW,GAAG,sBAAsB,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjD;;QAGD,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;YACvB,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,IAAI;YACxC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACrB,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;SAC1C;QAED,eAAe,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;;QAEpD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAErF,eAAe,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAGD,SAAS,eAAe,CAAC,MAAc,EAAE,KAAa,EAAE,QAAgB;QACtE,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,IAAI,QAAQ,IAAI,IAAI,EAAE;;YAEpB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;YAC/B,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC5C;QAED,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;;YAEvB,OAAO,IAAI,CAAC;SACb;;QAED,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;YACrB,IAAI,IAAI,EAAE,CAAC;SACZ;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;YACxB,IAAI,GAAG,CAAC,CAAC;SACV;QAED,OAAO,IAAI,CAAC;IACd;;ICvHA;aACgB,wBAAwB,CAAC,MAAyB;QAChE,IAAI,UAAU,CAAC;QACf,IAAI,UAAU,CAAC;QACf,IAAI,WAAW,CAAC;QAChB,IAAI,YAAY,CAAC;QAEjB,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;YAE7C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,YAAY,GAAG,CAAC,CAAC;YACjB,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC1B,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;aACrC;YACD,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACxB,SAAS;aACV;;YAGD,YAAY,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;;YAG1D,YAAY,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;YAErE,eAAe,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC;YAEjD,IAAI,WAAW,IAAI,IAAI,IAAI,YAAY,GAAG,WAAW,EAAE;gBACrD,WAAW,GAAG,YAAY,CAAC;gBAC3B,UAAU,GAAG,UAAU,CAAC;aACzB;SACF;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC;IACzD;;aC1CgB,gBAAgB,CAAC,MAAyB;QACxD,IAAI,MAAM,CAAC,EAAE,EAAE;YACb,OAAO,MAAM,CAAC;SACf;QAED,IAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,IAAM,CAAC,GAAG,oBAAoB,CAAC,KAAY,CAAC,CAAC;YAC7C,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC;;iBAEhF,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAA,CAAC,CAAC;SACxD;QAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC;;ICnBA;IAcA,SAAS,gBAAgB,CAAC,MAAyB;QACjD,IAAM,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;;QAEjD,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE;YACtD,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;SACxB;;;;;;;QAQD,OAAO,GAAG,CAAC;IACb,CAAC;aAEe,aAAa,CAAC,MAAyB;QACrD,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;QACtB,IAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAEzB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExD,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;YAC5D,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACnD;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,MAAM,CAAC,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC5D;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YACjB,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAE7B,OAAO,MAAM,CAAC;SACf;;QAID,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,wBAAwB,CAAC,MAAM,CAAC,CAAC;SAClC;aAAM,IAAI,MAAM,EAAE;YACjB,yBAAyB,CAAC,MAAM,CAAC,CAAC;SACnC;aAAM;YACL,eAAe,CAAC,MAAM,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACpB,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;SAClB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,eAAe,CAAC,MAAyB;QAChD,IAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;QACxB,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;SACxB;aAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC1B;aAAM,IAAI,OAAO,CAAkB,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;YAC1D,IAAM,IAAI,GAAwB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAA,CAAC,CAAC;YACrE,eAAe,CAAC,MAAM,CAAC,CAAC;SACzB;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC1B;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;;YAE1B,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;aAAM;;YAEL,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;aAEe,gBAAgB,CAAC,KAAgB,EAAE,MAA0B,EAAE,SAAkB,EAAE,MAAgB,EAAE,KAAe;QAClI,IAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,KAAK,CAAC;;;;;;;QASnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC3F,MAAM,GAAG,SAAS,CAAC;SACpB;;;;QAID,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACvC,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;QACnB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;QAExB,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC;;aCjHgB,SAAS,CAAC,KAAgB,EAAE,MAA0B,EAC5C,SAAkB,EAAE,MAAgB,EAAE,KAAe;QAC7E,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QAED,IAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAEzE,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;aAEe,UAAU,CAAC,IAAI;QAC7B,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,kBAAkB,EAAE,CAC1B,CAAC;IACJ;;aC7BgB,QAAQ,CAAC,GAAW;QAClC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D;;aCCgB,OAAO,CACrB,KAAW,EACX,KAAW,EACX,KAAkC;QAAlC,sBAAA,EAAA,sBAAkC;QAElC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,KAAK,cAAc,EAAE;YAC5B,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SAC1C;QAED,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC;aAEe,QAAQ,CACtB,KAAW,EACX,KAAW,EACX,KAAkC;QAAlC,sBAAA,EAAA,sBAAkC;QAElC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,KAAK,cAAc,EAAE;YAC5B,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SAC1C;QAED,OAAO,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;aAEe,aAAa,CAAC,IAAU,EAAE,YAAsB;QAC9D,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACvE,OAAO,KAAK,CAAC;SACd;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,UAAC,GAAW,IAAK,OAAA,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,GAAA,CAAC,CAAC;IACnE,CAAC;aAEe,SAAS,CACvB,IAAU,EACV,IAAU,EACV,EAAQ,EACR,KAAiB,EACjB,WAAkB;QAAlB,4BAAA,EAAA,kBAAkB;QAElB,IAAM,SAAS,GACb,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG;cAClB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;cAC1B,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAM,UAAU,GACd,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG;cAClB,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC;cACzB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAEhC,OAAO,SAAS,IAAI,UAAU,CAAC;IACjC,CAAC;aAEe,MAAM,CACpB,KAAW,EACX,KAAW,EACX,KAAkC;QAAlC,sBAAA,EAAA,sBAAkC;QAElC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,KAAK,cAAc,EAAE;YAC5B,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;SAC5C;QAED,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhC,QACE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,OAAO;YAC1C,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,EACxC;IACJ,CAAC;aAEeC,WAAS,CAAC,KAAW,EAAE,KAAW;QAChD,QAAQ,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;IAC5C,CAAC;aAEe,aAAa,CAC3B,KAAW,EACX,KAAW,EACX,KAAkB;QAElB,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;aAEe,cAAc,CAC5B,KAAW,EACX,KAAW,EACX,KAAkB;QAElB,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACtE;;ICrGA;IAcA,IAAM,WAAW,GAAG,0DAA0D,CAAC;IAE/E;IACA;IACA;IACA;IACA,IAAM,QAAQ,GAAG,qKAAqK,CAAC;aAIvK,cAAc,CAAC,KAAqB,EAAE,GAAY,EAAE,MAA8B;QAA9B,uBAAA,EAAA,WAA8B;QAChG,IAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;QAG7C,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,eAAe,CAAC,KAAU,EAAE,GAAW;;;QAE9C,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAO,EAAE,CAAC;SACX;QAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;YACrB,OAAO;gBACL,YAAY,EAAE,KAAK,CAAC,aAAa;gBACjC,GAAG,EAAE,KAAK,CAAC,KAAK;gBAChB,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAC;SACH;QACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;;YAEnB,OAAO,GAAG,aAAK,GAAC,GAAG,IAAG,KAAK,QAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;SACzD;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpC,IAAI,KAAK,EAAE;gBACT,IAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAEzC,OAAO;oBACL,IAAI,EAAE,CAAC;oBACP,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;oBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;oBAChC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;oBACpC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;;oBAEpC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI;iBACvE,CAAC;aACH;YAED,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,KAAK,EAAE;gBACT,IAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAElE,OAAO;oBACL,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC9B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC/B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC9B,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC/B,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBACjC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;iBAClC,CAAC;aACH;SAEF;QAED,IAAI,QAAQ,CAAuB,KAAK,CAAC,KAAK,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE;YAC/E,IAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9E,OAAO;gBACL,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC;SACH;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;IACA;IAEA,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;;;;QAIzC,IAAM,GAAG,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;QAGrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,SAAS,yBAAyB,CAAC,IAAU,EAAE,KAAW;QACxD,IAAM,GAAG,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAE3C,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3C,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,IAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;YAC7B,EAAE,GAAG,CAAC,MAAM,CAAC;SACd;QAED,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAEzE,OAAO,GAAG,CAAC;IACb,CAAC;IAED,SAAS,iBAAiB,CAAC,IAAU,EAAE,KAAW;QAChD,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9C,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;SACvC;QAED,IAAI,GAAG,CAAC;QACR,IAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAC,CAAC,CAAC;QACjF,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YAC1B,GAAG,GAAG,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC/C;aAAM;YACL,GAAG,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;SAC1B;QAED,OAAO,GAAG,CAAC;IACb;;aCnIgB,GAAG,CAAC,IAAU,EAAE,GAAW,EAAE,MAAkB,EAAE,KAAe;QAC9E,IAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAExC,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;aAEe,QAAQ,CAAC,IAAU,EAAE,GAAW,EAAE,MAAkB,EAAE,KAAe;QACnF,IAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAExC,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;aAEe,WAAW,CAAC,IAAU,EAAE,QAAkB,EAAE,QAAgB,EAAE,KAAe;QAC3F,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC5C,IAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;;;QAK1C,IAAI,MAAM,EAAE;YACV,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;SAClE;QACD,IAAI,IAAI,EAAE;YACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC9D;QACD,IAAI,YAAY,EAAE;YAChB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC;SACxD;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;;;;;IAKzB;;aC5BgB,aAAa;;QAG3B,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBAC5B,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;QAEF,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAC7B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/D,CACF,CAAC;QAEF,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAC9B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACjE,CACF,CAAC;QAEF,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAC/B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5D,CACF,CAAC;QAEF,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;iBACrD,QAAQ,CAAC,EAAE,CAAC,CAAC;;SAEjB,CACF,CAAC;QACF,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAC5B,UAAS,IAAU,EAAE,IAA0B;YAC7C,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;iBACrC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjB,CACF,CAAC;;QAIF,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzB,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7B,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;;QAGhC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3B,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/B,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;;QAIlC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE9B,aAAa,CAAC,IAAI,EAAE,UAAS,QAAiB,EAAE,MAAc;YAC5D,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC1C,CAAC,CAAC;QAEH,aAAa,CAAC,KAAK,EAAE,UAAS,QAAiB,EAAE,MAAc;YAC7D,OAAO,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;SAC5C,CAAC,CAAC;QACH,aAAa,CAAC,MAAM,EAAE,UAAS,QAAiB,EAAE,MAAc;YAC9D,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACvC,CAAC,CAAC;QAEH,iBAAiB,CACf,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EACrB,UAAS,KAAa,EAAE,IAAiB,EAAE,MAAyB,EAAE,KAAK;YACzE,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;YAE3E,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;aAClB;iBAAM;gBACL,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;aAClD;YAED,OAAO,MAAM,CAAC;SACf,CACF,CAAC;QAEF,iBAAiB,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,UAAS,KAAa,EAAE,IAAiB,EAAE,MAAyB,EAAE,KAAa;YACjF,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO,MAAM,CAAC;SACf,CACF,CAAC;IACJ,CAAC;IAED;aAEgB,YAAY,CAAC,KAAsB,EAAE,MAAc;QACjE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,IAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QAED,IAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACtB,OAAO,QAAQ,CAAC;SACjB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;aAEe,eAAe,CAAC,KAAsB,EAAE,MAA4B;QAA5B,uBAAA,EAAA,SAAiB,SAAS,EAAE;QAClF,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC7C;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IACxD,CAAC;IAED;aAEgB,eAAe,CAAC,IAAU,EAAE,KAAa,EAAE,IAAyC;QAClG,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACvC;QAED,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;aAEe,YAAY,CAAC,IAAU,EAAE,KAAa,EAAE,MAAoB,EAAE,KAAe;QAArC,uBAAA,EAAA,SAAS,SAAS,EAAE;QAC1E,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,IAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3C,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;aAEe,YAAY,CAAC,IAAU,EAAE,KAAe;QACtD,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;IAEA;IACA;aACgB,kBAAkB,CAAC,IAAU,EAAE,MAAoB,EAAE,KAAe;QAArC,uBAAA,EAAA,SAAS,SAAS,EAAE;QACjE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;aAEe,kBAAkB,CAAC,IAAU,EAAE,KAAa,EAAE,IAA+C;QAA/C,qBAAA,EAAA,SAA+C;QAC3G,IAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAElE,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAGD;aACgB,eAAe,CAAC,IAAU,EAAE,KAAe;QACzD,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;aAEe,eAAe,CAAC,IAAU,EAAE,KAAsB,EAAE,IAA8B;QAA9B,qBAAA,EAAA,SAA8B;;;;QAKhG,IAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpD,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5E;;IC3LA;IAUA,IAAM,SAAS,GAA4B;QACzC,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;KACP,CAAC;IACF,IAAM,SAAS,GAA4B;QACzC,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;KACT,CAAC;IACF,IAAM,UAAU,GAAG,UAAU,GAAW;QACtC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACzH,CAAC,CAAC;;IACF,IAAM,OAAO,GAAgF;QAC3F,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;QAC7F,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;QAC9F,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC;QACxF,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC;QAClF,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;QACjF,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;KACpF,CAAC;IACF,IAAM,SAAS,GAAG,UAAU,CAAS;QACnC,OAAO,UAAU,GAAW,EAAE,aAAsB;YAClD,IAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACX,GAAG,GAAG,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAClC;YAED,OAAQ,GAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvD,CAAC;IACJ,CAAC,CAAC;;IACF,IAAM,MAAM,GAAa;QACvB,OAAO;QACP,QAAQ;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,OAAO;QACP,OAAO;QACP,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT,CAAC;IAEK,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,QAAA;QACN,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,aAAa,EAAE,uCAAuC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,sBAAsB;YACzB,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,wBAAwB;SAC/B;QACD,aAAa,EAAE,KAAK;QACpB,IAAI,YAAC,KAAK;YACR,OAAO,GAAG,KAAK,KAAK,CAAC;SACtB;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,EAAE,EAAE;gBACb,OAAO,GAAG,CAAC;aACZ;iBAAM;gBACL,OAAO,GAAG,CAAC;aACZ;SACF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,uBAAuB;YAChC,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,sBAAsB;YAChC,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,QAAQ;YACd,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC;YAClB,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC;YAClB,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC;YAClB,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC;YAClB,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC;YAClB,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC;SACnB;QACD,QAAQ,YAAC,GAAW;YAClB,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,KAAK;gBACjD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;aACzB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACvB;QACD,UAAU,YAAC,GAAW;YACpB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAK;gBACvC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;aACzB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACvB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;SACR;KACF;;ICxID;IACA;IACA;IACA;eAiCc,UAAU,CAAM;QAExB,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,CAAC;YACP,KAAK,CAAC;gBACJ,OAAO,4BAA4B,CAAC;YACtC,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,CAAC;YACP,KAAK,CAAC;gBACJ,OAAO,2BAA2B,CAAC;SACtC;IACH,CAAC;IAzCL;IACA;IACA;IACA;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,mFAAmF,CAAC,KAAK,CAAC,GAAG,CAAC;QACtG,WAAW,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,QAAQ,EAAE,wDAAwD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7E,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,wBAAwB;SAC/B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,cAAc;YACvB,QAAQ,MAaP;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,UAAU;YAChB,CAAC,EAAE,iBAAiB;YACpB,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,OAAO;YACV,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,WAAW;SAChB;QACD,sBAAsB,EAAE,6BAA6B;QACrD,OAAO,EAAE,UAAU,IAAY;YAE7B,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAE5B,IAAI,SAAS,GAAG,MAAM,GAAG,EAAE,EACzB,WAAW,GAAG,MAAM,GAAG,GAAG,CAAC;YAE7B,IAAI,MAAM,KAAK,CAAC,EAAE;gBAChB,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;iBAAM,IAAI,WAAW,KAAK,CAAC,EAAE;gBAC5B,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;iBAAM,IAAI,WAAW,GAAG,EAAE,IAAI,WAAW,GAAG,EAAE,EAAE;gBAC/C,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;iBAAM,IAAI,SAAS,KAAK,CAAC,EAAE;gBAC1B,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;iBAAM,IAAI,SAAS,KAAK,CAAC,EAAE;gBAC1B,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;iBAAM,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;gBAC7C,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;iBAAM;gBACL,OAAO,MAAM,GAAG,KAAK,CAAC;aACvB;SACF;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IChGD;IAQA;IACA;IACA;IAEA,IAAI,cAAc,GAAG,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC,EAC3F,WAAW,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7E,IAAI,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/H,IAAI,WAAW,GAAG,2KAA2K,CAAC;IAEvL,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,mFAAmF,CAAC,KAAK,CAAC,GAAG,CAAC;QACtG,WAAW,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,cAAc,CAAC;aACvB;YAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACxB,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3C;YAED,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC9C;QACD,WAAW,aAAA;QACX,gBAAgB,EAAE,WAAW;QAC7B,iBAAiB,EAAE,uFAAuF;QAC1G,sBAAsB,EAAE,yFAAyF;QACjH,WAAW,aAAA;QACX,eAAe,EAAE,WAAW;QAC5B,gBAAgB,EAAE,WAAW;QAC7B,QAAQ,EAAE,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC;QAClF,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,uBAAuB;YAC3B,GAAG,EAAE,4BAA4B;YACjC,IAAI,EAAE,kCAAkC;SACzC;QACD,QAAQ,EAAE;YACR,OAAO,YAAC,IAAU;gBAChB,OAAO,UAAU,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAC3E;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,UAAU,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAC3E;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,UAAU,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAC3E;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,UAAU,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAC3E;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,aAAa,IAAI,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAChG;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO;YACb,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,wBAAwB;QAChD,OAAO,YAAC,IAAY;YAClB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG;gBAC1B,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG;oBAC5B,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG;wBACf,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;YAChC,OAAO,GAAG,GAAG,MAAM,CAAC;SACrB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IClGD;IAQA;IACA;IACA;IAEA,IAAMC,QAAM,GAAa,mFAAmF,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxH,IAAMC,aAAW,GAAa,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3F,SAAS,MAAM,CAAC,GAAW;QACzB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,SAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACpF,IAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;QAEzB,QAAQ,GAAG;YACT,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,YAAY,GAAG,eAAe,CAAC;YACtE,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;iBACtD;qBAAM;oBACL,OAAO,MAAM,GAAG,WAAW,CAAC;iBAC7B;;YAEH,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,QAAQ,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;YACtE,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;iBACpD;qBAAM;oBACL,OAAO,MAAM,GAAG,UAAU,CAAC;iBAC5B;;YAEH,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,QAAQ,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;YACtE,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;iBACpD;qBAAM;oBACL,OAAO,MAAM,GAAG,UAAU,CAAC;iBAC5B;;YAEH,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC;YACtD,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;iBAC/C;qBAAM;oBACL,OAAO,MAAM,GAAG,KAAK,CAAC;iBACvB;;YAEH,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC;YAC3D,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;iBACrD;qBAAM;oBACL,OAAO,MAAM,GAAG,QAAQ,CAAC;iBAC1B;;YAEH,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,KAAK,GAAG,OAAO,CAAC;YACvD,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;iBAChD;qBAAM;oBACL,OAAO,MAAM,GAAG,MAAM,CAAC;iBACxB;;SAEJ;IACH,CAAC;eAMe,UAAU,MAAM,EAAE,WAAW;QACzC,IAAI,CAAC,EAAE,YAAY,GAAG,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;;YAEvB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;SACnF;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,SACkB,UAAU,WAAW;QACtC,IAAI,CAAC,EAAE,iBAAiB,GAAG,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACvB,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;SACpE;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC,OACiB,UAAU,MAAM;QAChC,IAAI,CAAC,EAAE,gBAAgB,GAAG,EAAE,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACvB,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;SAC9D;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAzBI,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,UAAA;QACN,WAAW,eAAA;QACX,WAAW,GAAGC,KAOZF,QAAM,EAAEC,aAAW,CAAC,CAAC;QACvB,gBAAgB,GAAGE,KAMjBF,aAAW,CAAC,CAAC;QACf,eAAe,GAAG,GAMhBD,QAAM,CAAC,CAAC;QACV,QAAQ,EAAE,kDAAkD,CAAC,KAAK,CAAC,GAAG,CAAC;QACvE,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,cAAc;YAClB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,wBAAwB;YAC9B,CAAC,EAAE,YAAY;SAChB;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,cAAc;YACvB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAC3B,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAC3B,KAAK,CAAC;wBACJ,OAAO,kBAAkB,CAAC;oBAC5B,KAAK,CAAC;wBACJ,OAAO,mBAAmB,CAAC;oBAC7B,KAAK,CAAC;wBACJ,OAAO,gBAAgB,CAAC;oBAC1B,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;iBAC5B;aACF;YACD,OAAO,EAAE,cAAc;YACvB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,uBAAuB,CAAC;oBACjC,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC;wBACJ,OAAO,uBAAuB,CAAC;oBACjC,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC;wBACJ,OAAO,uBAAuB,CAAC;iBAClC;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICnLD;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,qFAAqF,CAAC,KAAK,CAAC,GAAG,CAAC;QACzG,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG,oDAAoD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACb,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,cAAc;YACnB,GAAG,EAAG,oBAAoB;YAC1B,IAAI,EAAG,oCAAoC;SAC9C;QACD,QAAQ,EAAG;YACP,OAAO,EAAG,gBAAgB;YAC1B,OAAO,EAAG,mBAAmB;YAC7B,QAAQ,EAAG,kBAAkB;YAC7B,OAAO,EAAG,gBAAgB;YAC1B,QAAQ,EAAG,oBAAoB;YAC/B,QAAQ,EAAG,GAAG;SACjB;QACD,YAAY,EAAG;YACX,MAAM,EAAG,OAAO;YAChB,IAAI,EAAG,UAAU;YACjB,CAAC,EAAG,aAAa;YACjB,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,aAAa;YAClB,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,QAAQ;YACZ,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,OAAO;YACX,EAAE,EAAG,OAAO;SACf;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAG,KAAK;QACf,IAAI,EAAG;YACH,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACV;KACF;;ICpDD;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IACA;IAEA,SAAS,mBAAmB,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QAC9F,IAAM,MAAM,GAAwC;YAClD,GAAG,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACpC,GAAG,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;YACpC,GAAG,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;YAC7B,IAAI,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,QAAQ,CAAC;YACrC,GAAG,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;YACjC,IAAI,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,GAAG,GAAG,UAAU,CAAC;YACzC,GAAG,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;YAC/B,IAAI,EAAE,CAAC,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,SAAS,CAAC;SACxC,CAAC;QACF,OAAO,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,oFAAoF,CAAC,KAAK,CAAC,GAAG,CAAC;QACvG,WAAW,EAAE,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QACpF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC;QAClF,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,cAAc;YAClB,GAAG,EAAE,oBAAoB;YACzB,IAAI,EAAE,0BAA0B;SACjC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,oBAAoB;YAC9B,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,8BAA8B;SACzC;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,QAAQ;YACd,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,mBAAmB;YACvB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,mBAAmB;YACvB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,mBAAmB;SACxB;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC3ED;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAG,uFAAuF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3G,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG,0DAA0D,CAAC,KAAK,CAAC,GAAG,CAAC;QAChF,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,mBAAmB;YACzB,IAAI,EAAG,yBAAyB;SACjC;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,eAAe;YACzB,OAAO,EAAG,kBAAkB;YAC5B,QAAQ,EAAG,cAAc;YACzB,OAAO,EAAG,mBAAmB;YAC7B,QAAQ,EAAG,qBAAqB;YAChC,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,OAAO;YAChB,IAAI,EAAG,QAAQ;YACf,CAAC,EAAG,eAAe;YACnB,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,OAAO;YACX,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,WAAW;YAChB,CAAC,EAAG,QAAQ;YACZ,EAAE,EAAG,UAAU;SAChB;QACD,sBAAsB,EAAE,sBAAsB;QAC9C,OAAO,YAAC,IAAY;YAClB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAM,CAAC,GAAG,GAAG,GAAG,EAAE,EAChB,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI;gBACxC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI;oBACd,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI;wBACd,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;YAChC,OAAO,GAAG,GAAG,MAAM,CAAC;SACrB;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;IChED;IAQA;IACA;IAEA,IAAII,gBAAc,GAAG,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC,EAC3FH,aAAW,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7E,IAAII,aAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/H,IAAIC,aAAW,GAAG,kLAAkL,CAAC;IAE9L,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,0FAA0F,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7G,WAAW,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAOF,gBAAc,CAAC;aACvB;iBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAOH,aAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAOG,gBAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC9C;SACF;QACD,WAAW,eAAA;QACX,gBAAgB,EAAEE,aAAW;QAC7B,iBAAiB,EAAE,8FAA8F;QACjH,sBAAsB,EAAE,yFAAyF;QACjH,WAAW,eAAA;QACX,eAAe,EAAED,aAAW;QAC5B,gBAAgB,EAAEA,aAAW;QAC7B,QAAQ,EAAE,sDAAsD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3E,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,QAAQ;YACZ,GAAG,EAAE,WAAW;YAChB,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,uBAAuB;YAC3B,GAAG,EAAE,8BAA8B;YACnC,IAAI,EAAE,oCAAoC;SAC3C;QACD,QAAQ,EAAE;YACR,OAAO,YAAC,IAAU;gBAChB,OAAO,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACnE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACtE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACpE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACpE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,wBAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAChF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,eAAe;YAClB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,UAAU;QAClC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICxFD;IAQA;IACA;IACA;IAEA,IAAID,gBAAc,GAAG,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC,EAC3FH,aAAW,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7E,IAAII,aAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/H,IAAIC,aAAW,GAAG,kLAAkL,CAAC;IAE9L,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,0FAA0F,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7G,WAAW,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAOF,gBAAc,CAAC;aACvB;YAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACxB,OAAOH,aAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3C;YAED,OAAOG,gBAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC9C;QACD,WAAW,eAAA;QACX,gBAAgB,EAAEE,aAAW;QAC7B,iBAAiB,EAAE,8FAA8F;QACjH,sBAAsB,EAAE,yFAAyF;QACjH,WAAW,eAAA;QACX,eAAe,EAAED,aAAW;QAC5B,gBAAgB,EAAEA,aAAW;QAC7B,QAAQ,EAAE,sDAAsD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3E,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,uBAAuB;YAC3B,GAAG,EAAE,4BAA4B;YACjC,IAAI,EAAE,kCAAkC;SACzC;QACD,QAAQ,EAAE;YACR,OAAO,YAAC,IAAU;gBAChB,OAAO,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACnE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACtE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACpE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACpE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,wBAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAChF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,eAAe;YAClB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,UAAU;QAClC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC3FD;IAQA;IACA;IACA;IAEA,IAAID,gBAAc,GAAG,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9F,IAAIH,aAAW,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExE,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,0FAA0F,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7G,WAAW,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAOG,gBAAc,CAAC;aACvB;iBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAOH,aAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAOG,gBAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC9C;SACF;QACD,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,sDAAsD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3E,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,QAAQ;YACZ,GAAG,EAAE,WAAW;YAChB,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,uBAAuB;YAC3B,GAAG,EAAE,8BAA8B;YACnC,IAAI,EAAE,oCAAoC;SAC3C;QACD,QAAQ,EAAE;YACR,OAAO,YAAC,IAAU;gBAChB,OAAO,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACnE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACtE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACpE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACpE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,wBAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAChF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,eAAe;YAClB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,UAAU;QAClC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IChFD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEA,IAAMG,qBAAmB,GAAG,UAAU,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACvG,IAAM,MAAM,GAAG;YACX,CAAC,EAAG,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC;YACpD,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,GAAG,GAAG,UAAU,CAAC;YACvC,CAAC,EAAG,CAAC,YAAY,EAAE,WAAW,CAAC;YAC/B,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,GAAG,GAAG,UAAU,CAAC;YACvC,CAAC,EAAG,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;YAC1C,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,QAAQ,CAAC;YACpC,CAAC,EAAG,CAAC,WAAW,EAAE,UAAU,CAAC;YAC7B,CAAC,EAAG,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;YACtC,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC;YACjC,CAAC,EAAG,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC;YACvC,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,SAAS,CAAC;SACxC,CAAC;QACF,IAAI,aAAa,EAAE;YACf,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3D;QACD,OAAO,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC;;IAEK,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,4FAA4F,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/G,WAAW,EAAE,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QACpF,QAAQ,EAAE,gEAAgE,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACzC,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,cAAc,EAAE;YACd,EAAE,EAAI,MAAM;YACZ,GAAG,EAAG,SAAS;YACf,CAAC,EAAK,YAAY;YAClB,EAAE,EAAI,cAAc;YACpB,GAAG,EAAG,mBAAmB;YACzB,IAAI,EAAE,yBAAyB;SAChC;QACD,QAAQ,EAAE;YACR,OAAO,EAAG,YAAY;YACtB,OAAO,EAAG,aAAa;YACvB,QAAQ,EAAE,oBAAoB;YAC9B,OAAO,EAAG,YAAY;YACtB,QAAQ,EAAE,mBAAmB;YAC7B,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAG;YACb,MAAM,EAAG,WAAW;YACpB,IAAI,EAAK,WAAW;YACpB,CAAC,EAAQA,qBAAmB;YAC5B,EAAE,EAAOA,qBAAmB;YAC5B,CAAC,EAAQA,qBAAmB;YAC5B,EAAE,EAAOA,qBAAmB;YAC5B,CAAC,EAAQA,qBAAmB;YAC5B,EAAE,EAAOA,qBAAmB;YAC5B,CAAC,EAAQA,qBAAmB;YAC5B,EAAE,EAAO,UAAU;YACnB,CAAC,EAAQA,qBAAmB;YAC5B,EAAE,EAAOA,qBAAmB;YAC5B,CAAC,EAAQA,qBAAmB;YAC5B,EAAE,EAAOA,qBAAmB;SAC7B;QACD,sBAAsB,EAAG,UAAU;QACnC,OAAO,EAAG,KAAK;QACf,IAAI,EAAG;YACH,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACV;KACF;;IC5ED;IACA;IACA;IACA;IAIA;IACA;IAEA,IAAI,WAAW,GAAG,uEAAuE,CAAC,KAAK,CAAC,GAAG,CAAC,EAClG,aAAa,GAAG;QACd,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;QAClE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;KAC/C,CAAC;IAEJ,SAASC,WAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACpF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,QAAQ,GAAG;YACT,KAAK,GAAG;gBACN,OAAO,QAAQ,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;YAC5D,KAAK,IAAI;gBACP,OAAO,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;YAC5C,KAAK,GAAG;gBACN,OAAO,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;YAC5C,KAAK,IAAI;gBACP,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;gBAC7C,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;YACvC,KAAK,IAAI;gBACP,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;gBACxC,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;YACvC,KAAK,IAAI;gBACP,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;gBACxC,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;YAC7C,KAAK,IAAI;gBACP,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;gBAC9C,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;YACvC,KAAK,IAAI;gBACP,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;gBACxC,MAAM;SACT;QACD,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,YAAY,CAAC,GAAW,EAAE,QAAiB;QAClD,OAAO,GAAG,GAAG,EAAE,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAC7E,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,0GAA0G,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7H,WAAW,EAAE,sEAAsE,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9F,QAAQ,EAAE,oEAAoE,CAAC,KAAK,CAAC,GAAG,CAAC;QACzF,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,kBAAkB;YACtB,GAAG,EAAE,+BAA+B;YACpC,IAAI,EAAE,qCAAqC;YAC3C,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,0BAA0B;YAC/B,IAAI,EAAE,+BAA+B;SACtC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,WAAW;YACjB,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;SACd;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC1GD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,sFAAsF,CAAC,KAAK,CAAC,GAAG,CAAC;QACzG,WAAW,EAAE,gEAAgE,CAAC,KAAK,CAAC,GAAG,CAAC;QACxF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,wBAAwB;SAC/B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,qBAAqB;YAC/B,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,WAAW;YACjB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,OAAO;YACV,EAAE,EAAE,QAAQ;SACb;QACD,sBAAsB,EAAE,cAAc;QACtC,OAAO,YAAC,IAAY,EAAE,MAAc;YAClC,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,QAAQ,MAAM;;;;gBAIZ,KAAK,GAAG;oBACN,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;;gBAGvC,QAAQ;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK,CAAC;gBACX,KAAK,GAAG;oBACN,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;;gBAGxC,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;aACzC;SACF;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IChFD;IAQA;IACA;IACA;IAEA,IAAIJ,gBAAc,GAAG,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC,EAC3FH,aAAW,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7E,IAAII,aAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/H,IAAIC,aAAW,GAAG,gLAAgL,CAAC;IAE5L,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,wFAAwF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3G,WAAW,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAOF,gBAAc,CAAC;aACvB;YAED,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACxB,OAAOH,aAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3C;YAED,OAAOG,gBAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC9C;QACD,WAAW,eAAA;QACX,gBAAgB,EAAEE,aAAW;QAC7B,iBAAiB,EAAE,4FAA4F;QAC/G,sBAAsB,EAAE,yFAAyF;QACjH,WAAW,eAAA;QACX,eAAe,EAAED,aAAW;QAC5B,gBAAgB,EAAEA,aAAW;QAC7B,QAAQ,EAAE,kDAAkD,CAAC,KAAK,CAAC,GAAG,CAAC;QACvE,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,uBAAuB;YAC3B,GAAG,EAAE,4BAA4B;YACjC,IAAI,EAAE,kCAAkC;SACzC;QACD,QAAQ,EAAE;YACR,OAAO,YAAC,IAAU;gBAChB,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACjE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAClE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACjE;YACD,OAAO,YAAC,IAAU;gBAChB,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aACjE;YACD,QAAQ,YAAC,IAAU;gBACjB,OAAO,oBAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;aAC5E;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,QAAQ;YACd,CAAC,EAAE,cAAc;YACjB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,UAAU;QAClC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC3FD;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,yEAAyE,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5F,WAAW,EAAE,2DAA2D,CAAC,KAAK,CAAC,GAAG,CAAC;QACnF,QAAQ,EAAE,sCAAsC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3D,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,gBAAgB;YACpB,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE,4BAA4B;YAClC,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,YAAY;YAChB,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,uBAAuB;SAC9B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,YAAY;YACrB,QAAQ,EAAE,gBAAgB;YAC1B,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,8BAA8B;YACxC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,KAAK;YACR,EAAE,YAAC,GAAW;gBACZ,IAAI,GAAG,KAAK,CAAC,EAAE;oBACb,OAAO,QAAQ,CAAC;iBACjB;gBACD,OAAO,GAAG,GAAG,OAAO,CAAC;aACtB;YACD,CAAC,EAAE,KAAK;YACR,EAAE,YAAC,GAAW;gBACZ,IAAI,GAAG,KAAK,CAAC,EAAE;oBACb,OAAO,QAAQ,CAAC;iBACjB;gBACD,OAAO,GAAG,GAAG,OAAO,CAAC;aACtB;YACD,CAAC,EAAE,MAAM;YACT,EAAE,YAAC,GAAW;gBACZ,IAAI,GAAG,KAAK,CAAC,EAAE;oBACb,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,GAAG,GAAG,SAAS,CAAC;aACxB;YACD,CAAC,EAAE,KAAK;YACR,EAAE,YAAC,GAAW;gBACZ,IAAI,GAAG,KAAK,CAAC,EAAE;oBACb,OAAO,QAAQ,CAAC;iBACjB;qBAAM,IAAI,GAAG,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,EAAE;oBACvC,OAAO,GAAG,GAAG,MAAM,CAAC;iBACrB;gBACD,OAAO,GAAG,GAAG,OAAO,CAAC;aACtB;SACF;QACD,aAAa,EAAE,+DAA+D;QAC9E,IAAI,YAAC,KAAK;YACR,OAAO,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClD;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,OAAO,YAAY,CAAC;aACrB;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,OAAO,CAAC;aAChB;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;aAC5C;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,OAAO,GAAG,OAAO,GAAG,cAAc,CAAC;aAC3C;iBAAM;gBACL,OAAO,MAAM,CAAC;aACf;SACF;KACF;;IC/FD;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IAEA,IAAII,WAAS,GAA4B;QACrC,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;KACP,EACDC,WAAS,GAA4B;QACnC,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;KACT,CAAC;IAEG,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,6EAA6E,CAAC,KAAK,CAAC,GAAG,CAAC;QAChG,WAAW,EAAE,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QACpF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,sDAAsD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3E,aAAa,EAAE,iCAAiC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3D,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5C,cAAc,EAAE;YACd,EAAE,EAAE,YAAY;YAChB,GAAG,EAAE,eAAe;YACpB,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,yBAAyB;YAC9B,IAAI,EAAE,+BAA+B;SACtC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,aAAa;YAChB,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;SACd;QACD,QAAQ,YAAC,GAAW;YAClB,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,KAAK;gBACjD,OAAOA,WAAS,CAAC,KAAK,CAAC,CAAC;aACzB,CAAC,CAAC;SACJ;QACD,UAAU,YAAC,GAAW;YACpB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,KAAK;gBACvC,OAAOD,WAAS,CAAC,KAAK,CAAC,CAAC;aACzB,CAAC,CAAC;SACJ;;;QAGD,aAAa,EAAE,oBAAoB;QACnC,YAAY,YAAC,IAAI,EAAE,QAAQ;YACzB,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,IAAI,GAAG,CAAC,CAAC;aACV;YACD,IAAI,QAAQ,KAAK,KAAK,EAAE;gBACtB,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;aACpC;iBAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;gBAC9B,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;gBAC/B,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;aACtC;iBAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;gBAC7B,OAAO,IAAI,GAAG,EAAE,CAAC;aAClB;SACF;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,OAAO,CAAC;aAChB;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,KAAK,CAAC;aACd;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;SACF;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICzHD;IAQA;IACA;IACA;IAEA,IAAI,WAAW,GAAG,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7F,SAASD,WAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACpF,QAAQ,GAAG;YACT,KAAK,GAAG;gBACN,OAAO,CAAC,QAAQ,IAAI,aAAa,IAAI,kBAAkB,GAAG,mBAAmB,CAAC;YAChF,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,aAAa,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC;YAC5E,KAAK,GAAG;gBACN,OAAO,KAAK,IAAI,QAAQ,IAAI,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;YAClE,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,QAAQ,IAAI,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;YAChE,KAAK,GAAG;gBACN,OAAO,KAAK,IAAI,QAAQ,IAAI,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;YACjE,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,QAAQ,IAAI,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;YAC/D,KAAK,GAAG;gBACN,OAAO,KAAK,IAAI,QAAQ,IAAI,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;YACjE,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,QAAQ,IAAI,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;YAC/D,KAAK,GAAG;gBACN,OAAO,KAAK,IAAI,QAAQ,IAAI,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;YACrE,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,QAAQ,IAAI,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;YACnE,KAAK,GAAG;gBACN,OAAO,KAAK,IAAI,QAAQ,IAAI,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;YAC9D,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,QAAQ,IAAI,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;SAC7D;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,SAAS,IAAI,CAAC,IAAU,EAAE,QAAiB;QACzC,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,SAAS,IAAI,GAAG,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC;IAC5F,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,mGAAmG,CAAC,KAAK,CAAC,GAAG,CAAC;QACvH,WAAW,EAAG,oDAAoD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7E,QAAQ,EAAG,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3E,aAAa,EAAG,+BAA+B,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1D,WAAW,EAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7C,cAAc,EAAG;YACf,EAAE,EAAG,MAAM;YACX,GAAG,EAAG,SAAS;YACf,CAAC,EAAG,aAAa;YACjB,EAAE,EAAG,eAAe;YACpB,GAAG,EAAG,oBAAoB;YAC1B,IAAI,EAAG,0BAA0B;SAClC;QACD,aAAa,EAAE,QAAQ;QACvB,IAAI,YAAE,KAAK;YACT,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;SAC9C;QACD,QAAQ,YAAE,KAAK,EAAE,OAAO,EAAE,OAAO;YAC/B,IAAI,KAAK,GAAG,EAAE,EAAE;gBACd,OAAO,OAAO,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;aACvC;iBAAM;gBACL,OAAO,OAAO,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;aACvC;SACF;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,eAAe;YACzB,OAAO,EAAG,mBAAmB;YAC7B,QAAQ,YAAE,IAAU;gBAClB,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACzB;YACD,OAAO,EAAG,mBAAmB;YAC7B,QAAQ,YAAE,IAAU;gBAClB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC1B;YACD,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,UAAU;YACnB,IAAI,EAAG,IAAI;YACX,CAAC,EAAGA,WAAS;YACb,EAAE,EAAGA,WAAS;YACd,CAAC,EAAGA,WAAS;YACb,EAAE,EAAGA,WAAS;YACd,CAAC,EAAGA,WAAS;YACb,EAAE,EAAGA,WAAS;YACd,CAAC,EAAGA,WAAS;YACb,EAAE,EAAGA,WAAS;YACd,CAAC,EAAGA,WAAS;YACb,EAAE,EAAGA,WAAS;YACd,CAAC,EAAGA,WAAS;YACb,EAAE,EAAGA,WAAS;SACf;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAG,KAAK;QACf,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;IC1GD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,+FAA+F,CAAC,KAAK,CAAC,GAAG,CAAC;QAClH,WAAW,EAAE,kDAAkD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAE,2DAA2D,CAAC,KAAK,CAAC,GAAG,CAAC;QAChF,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,yBAAyB;SAChC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,GAAG;SACd;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,UAAU;YAChB,CAAC,EAAE,kBAAkB;YACrB,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,WAAW;SAChB;QACD,sBAAsB,EAAE,sBAAsB;QAC9C,OAAO,YAAC,IAAY;YAClB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAM,CAAC,GAAG,GAAG,GAAG,EAAE,EAChB,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG;gBACvC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG;oBACb,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG;wBACb,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;YAC9B,OAAO,GAAG,GAAG,MAAM,CAAC;SACrB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICjED;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,wFAAwF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5G,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG,4CAA4C,CAAC,KAAK,CAAC,GAAG,CAAC;QAClE,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,2BAA2B;YACjC,IAAI,EAAG,iCAAiC;SACzC;QACD,aAAa,EAAE,uBAAuB;QACtC,YAAY,YAAC,IAAI,EAAE,QAAQ;YACzB,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,IAAI,GAAG,CAAC,CAAC;aACV;YACD,IAAI,QAAQ,KAAK,MAAM,EAAE;gBACvB,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;gBAC/B,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;aACtC;iBAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;gBACtD,OAAO,IAAI,GAAG,EAAE,CAAC;aAClB;SACF;QACD,QAAQ,YAAC,KAAK,EAAE,OAAO,EAAE,OAAO;YAC9B,IAAI,KAAK,GAAG,EAAE,EAAE;gBACd,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,KAAK,GAAG,EAAE,EAAE;gBACrB,OAAO,OAAO,CAAC;aAChB;iBAAM,IAAI,KAAK,GAAG,EAAE,EAAE;gBACrB,OAAO,MAAM,CAAC;aACf;iBAAM;gBACL,OAAO,OAAO,CAAC;aAChB;SACF;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,qBAAqB;YAC/B,OAAO,EAAG,kBAAkB;YAC5B,QAAQ,EAAG,iBAAiB;YAC5B,OAAO,EAAG,oBAAoB;YAC9B,QAAQ,EAAG,sBAAsB;YACjC,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,UAAU;YACnB,IAAI,EAAG,cAAc;YACrB,CAAC,EAAG,gBAAgB;YACpB,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,OAAO;YACX,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,QAAQ;YACZ,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,UAAU;SAChB;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;IChFD;IAQA;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,+FAA+F,CAAC,KAAK,CAAC,GAAG,CAAC;QAClH,WAAW,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,QAAQ,EAAE,0DAA0D,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/E,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,wBAAwB;SAC/B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,gBAAgB;YAC1B,OAAO,EAAE,gBAAgB;YACzB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,4BAA4B,CAAC;oBACtC;wBACE,OAAO,4BAA4B,CAAC;iBACvC;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,YAAC,GAAW;gBAChB,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;aAC1E;YACD,IAAI,EAAE,OAAO;YACb,CAAC,EAAE,gBAAgB;YACnB,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,UAAU;QAClC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICnED;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAgB;QACnC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5D,WAAW,EAAG,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,QAAQ,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACnD,aAAa,EAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1C,WAAW,EAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,WAAW;YAChB,GAAG,EAAG,iBAAiB;YACvB,IAAI,EAAG,sBAAsB;YAC7B,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,WAAW;YAChB,GAAG,EAAG,iBAAiB;YACvB,IAAI,EAAG,sBAAsB;SAC9B;QACD,aAAa,EAAE,QAAQ;QACvB,IAAI,YAAE,KAAK;YACT,OAAO,KAAK,KAAK,IAAI,CAAC;SACvB;QACD,QAAQ,YAAE,IAAI,EAAE,MAAM,EAAE,OAAO;YAC7B,IAAI,IAAI,GAAG,EAAE,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;SACF;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,SAAS;YACnB,OAAO,EAAG,SAAS;YACnB,QAAQ,EAAG,aAAa;YACxB,OAAO,EAAG,SAAS;YACnB,QAAQ,EAAG,aAAa;YACxB,QAAQ,EAAG,GAAG;SACf;QACD,sBAAsB,EAAG,UAAU;QACnC,OAAO,YAAE,GAAW,EAAE,MAAc;YAClC,QAAQ,MAAM;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK;oBACR,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB;oBACE,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC3B;SACF;QACD,YAAY,EAAG;YACb,MAAM,EAAG,KAAK;YACd,IAAI,EAAG,KAAK;YACZ,CAAC,EAAG,IAAI;YACR,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,IAAI;YACR,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,MAAM;YACX,CAAC,EAAG,IAAI;YACR,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,MAAM;YACX,CAAC,EAAG,IAAI;YACR,EAAE,EAAG,KAAK;SACX;KACF;;IC5ED;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAgB;QACnC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG;YACP,MAAM,EAAE,qGAAqG,CAAC,KAAK,CAAC,GAAG,CAAC;YACxH,UAAU,EAAE,oGAAoG,CAAC,KAAK,CAAC,GAAG,CAAC;SAC5H;QACD,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG;YACT,UAAU,EAAE,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC;YACtF,MAAM,EAAE,gEAAgE,CAAC,KAAK,CAAC,GAAG,CAAC;YACnF,QAAQ,EAAE,eAAe;SAC1B;QACD,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACf,EAAE,EAAG,QAAQ;YACb,GAAG,EAAG,WAAW;YACjB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,oBAAoB;YAC1B,IAAI,EAAG,0BAA0B;SAClC;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,gBAAgB;YAC1B,OAAO,EAAG,gBAAgB;YAC1B,OAAO,EAAG,iBAAiB;YAC3B,QAAQ,EAAG,uBAAuB;YAClC,QAAQ,EAAG,mBAAmB;YAC9B,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,YAAC,CAAS;gBACd,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,EAAE,CAAC;oBAC1C,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;oBACtB,EAAE,GAAG,IAAI,CAAC;aACX;YACD,IAAI,YAAC,CAAS;gBACZ,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;oBAC1C,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBACvC;gBACD,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;oBACrB,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBACxC;aACF;YACD,CAAC,EAAG,gBAAgB;YACpB,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,MAAM;YACV,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,OAAO;YACX,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,MAAM;YACV,EAAE,EAAG,SAAS;SACf;QACD,sBAAsB,EAAE,6BAA6B;QACrD,OAAO,YAAC,IAAY,EAAE,OAAe;YACnC,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,CAAC,EAAE;gBACb,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;aACvB;YACD,IAAI,GAAG,KAAK,CAAC,EAAE;gBACb,OAAO,GAAG,GAAG,KAAK,CAAC;aACpB;YACD,IAAI,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE;gBACvE,OAAO,KAAK,GAAG,GAAG,CAAC;aACpB;YACD,OAAO,GAAG,GAAG,IAAI,CAAC;SACnB;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;ICzFD;IACA;IACA;IAIA,IAAM,QAAQ,GAAG;QACf,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,EAAE,EAAE,KAAK;QACT,GAAG,EAAE,KAAK;KACX,CAAC;IAEK,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,oFAAoF,CAAC,KAAK,CAAC,GAAG,CAAC;QACxG,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG,yDAAyD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/E,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,mBAAmB;YACzB,IAAI,EAAG,yBAAyB;SACjC;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,kBAAkB;YAC5B,OAAO,EAAG,kBAAkB;YAC5B,QAAQ,EAAG,iBAAiB;YAC5B,OAAO,EAAG,iBAAiB;YAC3B,QAAQ,EAAG,iCAAiC;YAC5C,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,WAAW;YACpB,IAAI,EAAG,UAAU;YACjB,CAAC,EAAG,gBAAgB;YACpB,EAAE,EAAG,WAAW;YAChB,CAAC,EAAG,WAAW;YACf,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,WAAW;YACf,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,QAAQ;YACZ,EAAE,EAAG,OAAO;YACZ,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,QAAQ;SACd;QACD,sBAAsB,EAAE,iBAAiB;QACzC,OAAO,YAAC,IAAY;YAClB,IAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAM,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;YAEnC,OAAO,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;IC/ED;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5D,WAAW,EAAG,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,QAAQ,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACnD,aAAa,EAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1C,WAAW,EAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,cAAc,EAAG;YACf,EAAE,EAAG,QAAQ;YACb,GAAG,EAAG,WAAW;YACjB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,eAAe;YACpB,GAAG,EAAG,sBAAsB;YAC5B,IAAI,EAAG,2BAA2B;YAClC,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,eAAe;YACpB,GAAG,EAAG,sBAAsB;YAC5B,IAAI,EAAG,2BAA2B;SACnC;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,OAAO;YACjB,OAAO,EAAG,OAAO;YACjB,QAAQ,EAAG,SAAS;YACpB,OAAO,EAAG,OAAO;YACjB,QAAQ,EAAG,aAAa;YACxB,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,MAAM;YACf,IAAI,EAAG,MAAM;YACb,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,IAAI;YACR,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,MAAM;YACV,EAAE,EAAG,MAAM;YACX,CAAC,EAAG,IAAI;YACR,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,KAAK;YACV,CAAC,EAAG,KAAK;YACT,EAAE,EAAG,KAAK;SACX;QACD,sBAAsB,EAAG,gBAAgB;QACzC,OAAO,EAAG,UAAU,GAAW,EAAE,MAAc;YAC7C,QAAQ,MAAM;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK;oBACR,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB;oBACE,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC3B;SACF;QACD,aAAa,EAAG,OAAO;QACvB,IAAI,EAAG,UAAU,KAAK;YACpB,OAAO,KAAK,KAAK,IAAI,CAAC;SACvB;QACD,QAAQ,EAAG,UAAU,IAAI,EAAE,MAAM,EAAE,OAAO;YACxC,OAAO,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;SAChC;KACF;;IC/ED;IACA;IACA;IACA;IAIA;IACA;IACA;IAEA,IAAM,KAAK,GAAG;QACZ,EAAE,EAAG,4BAA4B;QACjC,CAAC,EAAG,uBAAuB;QAC3B,EAAE,EAAE,yBAAyB;QAC7B,CAAC,EAAG,0BAA0B;QAC9B,EAAE,EAAE,2BAA2B;QAC/B,CAAC,EAAG,oBAAoB;QACxB,EAAE,EAAE,qBAAqB;QACzB,CAAC,EAAG,sBAAsB;QAC1B,EAAE,EAAE,2BAA2B;QAC/B,CAAC,EAAG,kBAAkB;QACtB,EAAE,EAAE,kBAAkB;KACvB,CAAC;IACF,SAAS,gBAAgB,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QAC3F,IAAI,aAAa,EAAE;YACf,OAAO,iBAAiB,CAAC;SAC5B;aAAM;YACH,OAAO,QAAQ,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;SAC3D;IACH,CAAC;IACD,SAAS,iBAAiB,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QAC5F,OAAO,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,SAAS,OAAO,CAAC,GAAW;QAC1B,OAAO,GAAG,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,SAAS,KAAK,CAAC,GAAW;QACxB,OAAQ,KAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,SAASA,WAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACpF,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;QACvB,IAAI,GAAG,KAAK,CAAC,EAAE;YACX,OAAO,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC3E;aAAM,IAAI,aAAa,EAAE;YACtB,OAAO,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClE;aAAM;YACH,IAAI,QAAQ,EAAE;gBACV,OAAO,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;iBAAM;gBACH,OAAO,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAClE;SACJ;IACH,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG;YACP,MAAM,EAAE,mGAAmG,CAAC,KAAK,CAAC,GAAG,CAAC;YACtH,UAAU,EAAE,iGAAiG,CAAC,KAAK,CAAC,GAAG,CAAC;YACxH,QAAQ,EAAE,6DAA6D;SACxE;QACD,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG;YACP,MAAM,EAAE,mFAAmF,CAAC,KAAK,CAAC,GAAG,CAAC;YACtG,UAAU,EAAE,0FAA0F,CAAC,KAAK,CAAC,GAAG,CAAC;YACjH,QAAQ,EAAE,YAAY;SACzB;QACD,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;QACzC,kBAAkB,EAAG,IAAI;QACzB,cAAc,EAAG;YACb,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,uBAAuB;YAC5B,GAAG,EAAG,qCAAqC;YAC3C,IAAI,EAAG,2CAA2C;YAClD,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,uBAAuB;YAC5B,GAAG,EAAG,qCAAqC;YAC3C,IAAI,EAAG,0CAA0C;SACpD;QACD,QAAQ,EAAG;YACP,OAAO,EAAG,eAAe;YACzB,OAAO,EAAG,YAAY;YACtB,QAAQ,EAAG,SAAS;YACpB,OAAO,EAAG,YAAY;YACtB,QAAQ,EAAG,oBAAoB;YAC/B,QAAQ,EAAG,GAAG;SACjB;QACD,YAAY,EAAG;YACX,MAAM,EAAG,OAAO;YAChB,IAAI,EAAG,UAAU;YACjB,CAAC,EAAG,gBAAgB;YACpB,EAAE,EAAGA,WAAS;YACd,CAAC,EAAG,iBAAiB;YACrB,EAAE,EAAGA,WAAS;YACd,CAAC,EAAG,iBAAiB;YACrB,EAAE,EAAGA,WAAS;YACd,CAAC,EAAG,iBAAiB;YACrB,EAAE,EAAGA,WAAS;YACd,CAAC,EAAG,iBAAiB;YACrB,EAAE,EAAGA,WAAS;YACd,CAAC,EAAG,iBAAiB;YACrB,EAAE,EAAGA,WAAS;SACjB;QACD,sBAAsB,EAAE,aAAa;QACrC,OAAO,YAAC,GAAG;YACP,OAAO,GAAG,GAAG,MAAM,CAAC;SACvB;QACD,IAAI,EAAG;YACH,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACV;KACF;;ICnHD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,sGAAsG,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1H,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG,yEAAyE,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/F,aAAa,EAAG,6CAA6C,CAAC,KAAK,CAAC,GAAG,CAAC;QACxE,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,mBAAmB;YACzB,IAAI,EAAG,yBAAyB;SACjC;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,eAAe;YACzB,OAAO,EAAG,kBAAkB;YAC5B,QAAQ,EAAG,cAAc;YACzB,OAAO,EAAG,mBAAmB;YAC7B,QAAQ,EAAG,qBAAqB;YAChC,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,QAAQ;YACjB,IAAI,EAAG,UAAU;YACjB,CAAC,EAAG,gBAAgB;YACpB,EAAE,EAAG,aAAa;YAClB,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,QAAQ;YACZ,EAAE,EAAG,WAAW;YAChB,CAAC,EAAG,QAAQ;YACZ,EAAE,EAAG,aAAa;YAClB,CAAC,EAAG,MAAM;YACV,EAAE,EAAG,WAAW;SACjB;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,YAAC,GAAG;YACP,OAAO,GAAG,GAAG,GAAG,CAAC;SACpB;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;IC1DD;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IAEA,SAASA,WAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACpF,QAAQ,GAAG;YACT,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,eAAe,GAAG,iBAAiB,CAAC;YAC7D,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,aAAa,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC;YACzD,KAAK,GAAG,CAAC;YACT,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC;YACvD,KAAK,GAAG,CAAC;YACT,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;YACpD,KAAK,GAAG,CAAC;YACT,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;YACrD,KAAK,GAAG,CAAC;YACT,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;YACnD,KAAK,GAAG,CAAC;YACT,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;YACpD;gBACE,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC3B;IACH,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,8LAA8L,CAAC,KAAK,CAAC,GAAG,CAAC;QACjN,WAAW,EAAE,4EAA4E,CAAC,KAAK,CAAC,GAAG,CAAC;QACpG,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,4CAA4C,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,mBAAmB;YACvB,GAAG,EAAE,yBAAyB;YAC9B,IAAI,EAAE,+BAA+B;SACtC;QACD,aAAa,EAAE,QAAQ;QACvB,IAAI,EAAE,UAAU,KAAK;YACnB,OAAO,KAAK,KAAK,IAAI,CAAC;SACvB;QACD,QAAQ,EAAE,UAAU,IAAI,EAAE,MAAM,EAAE,OAAO;YACvC,IAAI,IAAI,GAAG,EAAE,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;SACF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,gBAAgB;YAC1B,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,oBAAoB;YAC9B,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,SAAS;YACf,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;SACd;QACD,sBAAsB,EAAE,cAAc;QACtC,OAAO,EAAE,UAAU,GAAW,EAAE,MAAc;YAC5C,QAAQ,MAAM;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK;oBACR,OAAO,GAAG,GAAG,OAAO,CAAC;gBACvB;oBACE,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC3B;SACF;KACF;;IClGD;IACA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,oFAAoF,CAAC,KAAK,CAAC,GAAG,CAAC;QACvG,WAAW,EAAE,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,oDAAoD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,cAAc;YAClB,GAAG,EAAE,0BAA0B;YAC/B,IAAI,EAAE,+BAA+B;SACtC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,mBAAmB;YAC5B,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,yBAAyB;YACnC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,UAAU;YAChB,CAAC,EAAE,eAAe;YAClB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,OAAO;SACZ;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICvDD;IAQA;IACA;IACA;IACA;IAEA,IAAI,mBAAmB,GAAG,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClG,IAAI,sBAAsB,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE1F,IAAIH,aAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrJ,IAAIC,aAAW,GAAG,0KAA0K,CAAC;IAEtL,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,yFAAyF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5G,WAAW,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YACrD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,mBAAmB,CAAC;aAC5B;iBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAO,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACtD;iBAAM;gBACL,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACnD;SACF;QAED,WAAW,eAAA;QACX,gBAAgB,EAAEA,aAAW;QAC7B,iBAAiB,EAAE,2FAA2F;QAC9G,sBAAsB,EAAE,kFAAkF;QAE1G,WAAW,eAAA;QACX,eAAe,EAAED,aAAW;QAC5B,gBAAgB,EAAEA,aAAW;QAE7B,QAAQ,EAAE,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QACjF,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,wBAAwB;SAC/B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,YAAY;YAClB,CAAC,EAAE,mBAAmB;YACtB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,iBAAiB;QACzC,OAAO,YAAC,IAAY;YAClB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;SACrE;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICtFD;IAQA;IACA;IACA;IACA;IAEA,IAAIM,qBAAmB,GAAG,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC,EAC/FC,wBAAsB,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExF,IAAIP,aAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrJ,IAAIC,aAAW,GAAG,0KAA0K,CAAC;IAEtL,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,yFAAyF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7G,WAAW,YAAE,IAAU,EAAE,MAAc,EAAE,KAAe;YACtD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAOK,qBAAmB,CAAC;aAC5B;iBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAOC,wBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACtD;iBAAM;gBACL,OAAOD,qBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACnD;SACF;QAED,WAAW,eAAA;QACX,gBAAgB,EAAEL,aAAW;QAC7B,iBAAiB,EAAE,2FAA2F;QAC9G,sBAAsB,EAAE,kFAAkF;QAE1G,WAAW,eAAA;QACX,eAAe,EAAGD,aAAW;QAC7B,gBAAgB,EAAGA,aAAW;QAE9B,QAAQ,EAAG,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QAClF,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,kBAAkB,EAAG,IAAI;QACzB,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,mBAAmB;YACzB,IAAI,EAAG,wBAAwB;SAChC;QACD,QAAQ,EAAG;YACT,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAG;YACb,MAAM,EAAG,SAAS;YAClB,IAAI,EAAG,YAAY;YACnB,CAAC,EAAG,mBAAmB;YACvB,EAAE,EAAG,aAAa;YAClB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,WAAW;YACf,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,SAAS;SACf;QACD,sBAAsB,EAAE,iBAAiB;QACzC,OAAO,YAAE,IAAY;YACnB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;SACrE;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;ICtFD;IASA;IACA;IACA;IAEA,IAAI,gBAAgB,GAAG,kGAAkG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrI,IAAI,gBAAgB,GAAG,oGAAoG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvI,SAASQ,QAAM,CAAC,GAAW;QACzB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,SAASL,WAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW;QACjE,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;QACvB,QAAQ,GAAG;YACT,KAAK,IAAI;gBACP,OAAO,MAAM,IAAIK,QAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;YACvD,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;YAC7C,KAAK,IAAI;gBACP,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;YACrD,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;YAC/C,KAAK,IAAI;gBACP,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;YACvD,KAAK,IAAI;gBACP,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;YAC1D,KAAK,IAAI;gBACP,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;SAClD;IACH,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,YAAC,IAAU,EAAE,MAAc,EAAE,KAAe;YAChD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,gBAAgB,CAAC;aACzB;iBAAM,IAAI,MAAM,KAAK,EAAE,EAAE;;;;gBAIxB,OAAO,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;aAC5G;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAChD;iBAAM;gBACL,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAChD;SACF;QACD,WAAW,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,QAAQ,EAAE,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QACjF,aAAa,EAAE,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC;QACpD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,yBAAyB;SAChC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,cAAc;YACvB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,oBAAoB,CAAC;oBAE9B,KAAK,CAAC;wBACJ,OAAO,kBAAkB,CAAC;oBAE5B,KAAK,CAAC;wBACJ,OAAO,gBAAgB,CAAC;oBAE1B,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAE3B,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAE3B;wBACE,OAAO,iBAAiB,CAAC;iBAC5B;aACF;YACD,OAAO,EAAE,gBAAgB;YACzB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,2BAA2B,CAAC;oBACrC,KAAK,CAAC;wBACJ,OAAO,uBAAuB,CAAC;oBACjC,KAAK,CAAC;wBACJ,OAAO,0BAA0B,CAAC;oBACpC,KAAK,CAAC;wBACJ,OAAO,wBAAwB,CAAC;oBAClC,KAAK,CAAC;wBACJ,OAAO,wBAAwB,CAAC;oBAClC;wBACE,OAAO,wBAAwB,CAAC;iBACnC;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,cAAc;YACjB,EAAE,EAAEL,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,SAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAE,KAAK;YACR,EAAE,EAAEA,WAAS;SACd;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICrID;IAQA;IACA;IACA;IAEO,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,0FAA0F,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7G,WAAW,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,QAAQ,EAAE,gFAAgF,CAAC,KAAK,CAAC,GAAG,CAAC;QACrG,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,uBAAuB;YAC3B,GAAG,EAAE,kCAAkC;YACvC,IAAI,EAAE,wCAAwC;SAC/C;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,eAAe;YACxB,QAAQ,YAAC,IAAU;gBACjB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC1D,uBAAuB;oBACvB,uBAAuB,CAAC;aAC3B;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,UAAU;YAChB,CAAC,EAAE,iBAAiB;YACpB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;SACd;QACD,sBAAsB,EAAE,UAAU;QAClC,OAAO,EAAE,KAAK;KACf;;ICpDD;IACA;IACA;IACA;IACA;IAEA,SAAS,sBAAsB,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW;QAC9E,IAAI,MAAM,GAA2B;YACnC,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,MAAM;YACV,EAAE,EAAE,MAAM;YACV,EAAE,EAAE,KAAK;SACV,CAAC;QAEF,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE;YACtD,SAAS,GAAG,MAAM,CAAC;SACpB;QACD,OAAO,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAGM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,mGAAmG,CAAC,KAAK,CAAC,GAAG,CAAC;QACtH,WAAW,EAAE,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC;QACvF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACtE,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,wBAAwB;SAC/B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,sBAAsB;YAChC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,YAAY;YAClB,CAAC,EAAE,gBAAgB;YACnB,EAAE,EAAE,sBAAsB;YAC1B,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,sBAAsB;YAC1B,CAAC,EAAE,OAAO;YACV,EAAE,EAAE,sBAAsB;YAC1B,CAAC,EAAE,MAAM;YACT,EAAE,EAAE,sBAAsB;YAC1B,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,sBAAsB;YAC1B,CAAC,EAAE,OAAO;YACV,EAAE,EAAE,sBAAsB;SAC3B;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC1ED;IASA;IACA;IACA;IACA;IACA;IAEA,SAASK,QAAM,CAAC,IAAY,EAAE,GAAW;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvJ,CAAC;IAED,SAASC,wBAAsB,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW;QAC9E,IAAI,MAAM,GAA4B;YACpC,EAAE,EAAE,aAAa,GAAG,wBAAwB,GAAG,wBAAwB;YACvE,EAAE,EAAE,aAAa,GAAG,qBAAqB,GAAG,qBAAqB;YACjE,EAAE,EAAE,gBAAgB;YACpB,EAAE,EAAE,eAAe;YACnB,EAAE,EAAE,sBAAsB;YAC1B,EAAE,EAAE,cAAc;SACnB,CAAC;QACF,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,OAAO,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;SAC5C;QACD,OAAO,GAAG,GAAG,GAAG,GAAGD,QAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAIR,aAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAElI;IACA;IACA;IACO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE;YACN,MAAM,EAAE,mFAAmF,CAAC,KAAK,CAAC,GAAG,CAAC;YACtG,UAAU,EAAE,iFAAiF,CAAC,KAAK,CAAC,GAAG,CAAC;SACzG;QACD,WAAW,EAAE;;YAEX,MAAM,EAAE,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC;YAClF,UAAU,EAAE,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC;SACvF;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC;YACtF,MAAM,EAAE,+DAA+D,CAAC,KAAK,CAAC,GAAG,CAAC;YAClF,QAAQ,EAAE,gDAAgD;SAC3D;QACD,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,WAAW,eAAA;QACX,eAAe,EAAEA,aAAW;QAC5B,gBAAgB,EAAEA,aAAW;;QAG7B,WAAW,EAAE,0MAA0M;;QAGvN,gBAAgB,EAAE,0MAA0M;;QAG5N,iBAAiB,EAAE,uHAAuH;;QAG1I,sBAAsB,EAAE,4FAA4F;QACpH,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,gBAAgB;YACpB,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE,4BAA4B;SACnC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,cAAc;YACvB,QAAQ,YAAC,IAAU,EAAE,GAAS;gBAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;oBAClC,QAAQ,YAAY,CAAC,IAAI,CAAC;wBACxB,KAAK,CAAC;4BACJ,OAAO,2BAA2B,CAAC;wBACrC,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC;4BACJ,OAAO,2BAA2B,CAAC;wBACrC,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC;4BACJ,OAAO,2BAA2B,CAAC;qBACtC;iBACF;qBAAM;oBACL,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBAC5B,OAAO,kBAAkB,CAAC;qBAC3B;yBAAM;wBACL,OAAO,iBAAiB,CAAC;qBAC1B;iBACF;aACF;YACD,QAAQ,YAAC,IAAU,EAAE,GAAS;gBAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;oBAClC,QAAQ,YAAY,CAAC,IAAI,CAAC;wBACxB,KAAK,CAAC;4BACJ,OAAO,yBAAyB,CAAC;wBACnC,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC;4BACJ,OAAO,yBAAyB,CAAC;wBACnC,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC,CAAC;wBACP,KAAK,CAAC;4BACJ,OAAO,yBAAyB,CAAC;qBACpC;iBACF;qBAAM;oBACL,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBAC5B,OAAO,kBAAkB,CAAC;qBAC3B;yBAAM;wBACL,OAAO,iBAAiB,CAAC;qBAC1B;iBACF;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU;YAChB,CAAC,EAAE,kBAAkB;YACrB,EAAE,EAAES,wBAAsB;YAC1B,CAAC,EAAEA,wBAAsB;YACzB,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,KAAK;YACR,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,MAAM;YACT,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,OAAO;YACV,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,KAAK;YACR,EAAE,EAAEA,wBAAsB;SAC3B;QACD,aAAa,EAAE,uBAAuB;QACtC,IAAI,YAAC,KAAK;YACR,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,KAAK,CAAC;aACd;iBAAM;gBACL,OAAO,QAAQ,CAAC;aACjB;SACF;QACD,sBAAsB,EAAE,kBAAkB;QAC1C,OAAO,YAAC,IAAY,EAAE,MAAc;YAClC,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,QAAQ,MAAM;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK;oBACR,OAAO,GAAG,GAAG,IAAI,CAAC;gBACpB,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,KAAK,CAAC;gBACrB,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,IAAI,CAAC;gBACpB;oBACE,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC3B;SACF;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICvLD;IAQA;IACA;IACA;IAEA,IAAMd,QAAM,GAAG,mFAAmF,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9G,IAAMC,aAAW,GAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjF,SAASY,QAAM,CAAC,GAAW;QACzB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAASL,WAAS,CAAC,GAAW,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACpF,IAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;QAEzB,QAAQ,GAAG;YACT,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,YAAY,GAAG,eAAe,CAAC;YACtE,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAIK,QAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;iBACtD;qBACI;oBACH,OAAO,MAAM,GAAG,WAAW,CAAC;iBAC7B;;YAEH,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,QAAQ,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;YACtE,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;iBACpD;qBACI;oBACH,OAAO,MAAM,GAAG,UAAU,CAAC;iBAC5B;;YAEH,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,QAAQ,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;YACtE,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;iBACpD;qBACI;oBACH,OAAO,MAAM,GAAG,UAAU,CAAC;iBAC5B;;YAEH,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC;YACtD,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;iBAC/C;qBACI;oBACH,OAAO,MAAM,GAAG,OAAO,CAAC;iBACzB;;YAEH,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC;YAC7D,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;iBACxD;qBACI;oBACH,OAAO,MAAM,GAAG,UAAU,CAAC;iBAC5B;;YAEH,KAAK,GAAG;gBACN,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,KAAK,GAAG,OAAO,CAAC;YACvD,KAAK,IAAI;gBACP,IAAI,aAAa,IAAI,QAAQ,EAAE;oBAC7B,OAAO,MAAM,IAAIA,QAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;iBAClD;qBACI;oBACH,OAAO,MAAM,GAAG,OAAO,CAAC;iBACzB;;SAEJ;IACH,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,UAAA;QACN,WAAW,eAAA;QACX,QAAQ,EAAE,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,cAAc;YAClB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,wBAAwB;YAC9B,CAAC,EAAE,YAAY;SAChB;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,eAAe;YACxB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAC3B,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAC3B,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAC3B,KAAK,CAAC;wBACJ,OAAO,mBAAmB,CAAC;oBAC7B,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;oBAC3B,KAAK,CAAC;wBACJ,OAAO,iBAAiB,CAAC;iBAC5B;aACF;YACD,OAAO,EAAE,cAAc;YACvB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;iBACjC;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,SAAS;YACf,CAAC,EAAEL,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;YACb,CAAC,EAAEA,WAAS;YACZ,EAAE,EAAEA,WAAS;SACd;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICnKD;IASA;IACA;IACA;IAEA,SAASD,qBAAmB,CAAC,MAAc,EAAE,aAAsB,EAAE,GAAW,EAAE,QAAiB;QACjG,IAAI,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;QAC1B,QAAQ,GAAG;YACT,KAAK,GAAG;gBACN,OAAO,aAAa,IAAI,QAAQ,GAAG,cAAc,GAAG,iBAAiB,CAAC;YACxE,KAAK,IAAI;gBACP,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,MAAM,IAAI,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;iBACjD;qBAAM,IAAI,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;iBAC9D;qBAAM,IAAI,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;iBAC9D;qBAAM;oBACL,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;iBAC3D;gBACD,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;YACrD,KAAK,IAAI;gBACP,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,MAAM,IAAI,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;iBAC/C;qBAAM,IAAI,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;iBAC7D;qBAAM,IAAI,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;iBAC7D;qBAAM;oBACL,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;iBAC5D;gBACD,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;YAC/C,KAAK,IAAI;gBACP,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,MAAM,IAAI,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC;iBACzC;qBAAM,IAAI,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;iBACvD;qBAAM,IAAI,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;iBACvD;qBAAM;oBACL,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;iBACtD;gBACD,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,aAAa,IAAI,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;YAC5D,KAAK,IAAI;gBACP,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;iBACtD;qBAAM,IAAI,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;iBACzD;qBAAM;oBACL,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;iBACvD;gBACD,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,aAAa,IAAI,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;YACjE,KAAK,IAAI;gBACP,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;iBAC3D;qBAAM,IAAI,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;iBAC7D;qBAAM,IAAI,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;iBAC3D;qBAAM;oBACL,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;iBAC5D;gBACD,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,aAAa,IAAI,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;YAC/D,KAAK,IAAI;gBACP,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;iBACxD;qBAAM,IAAI,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;iBACzD;qBAAM,IAAI,MAAM,GAAG,CAAC,EAAE;oBACrB,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;iBACvD;qBAAM;oBACL,MAAM,IAAI,aAAa,IAAI,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;iBACtD;gBACD,OAAO,MAAM,CAAC;SACjB;IACH,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,uFAAuF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1G,WAAW,EAAE,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,aAAa,EAAE,oCAAoC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,cAAc;YAClB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,yBAAyB;SAChC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,eAAe;YAExB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,uBAAuB,CAAC;oBACjC,KAAK,CAAC;wBACJ,OAAO,qBAAqB,CAAC;oBAC/B,KAAK,CAAC;wBACJ,OAAO,sBAAsB,CAAC;oBAChC,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,kBAAkB,CAAC;iBAC7B;aACF;YACD,OAAO,EAAE,gBAAgB;YACzB,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC;wBACJ,OAAO,8BAA8B,CAAC;oBACxC,KAAK,CAAC;wBACJ,OAAO,4BAA4B,CAAC;oBACtC,KAAK,CAAC;wBACJ,OAAO,6BAA6B,CAAC;oBACvC,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,yBAAyB,CAAC;iBACpC;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,SAAS;YACf,CAAC,EAAEA,qBAAmB;YACtB,EAAE,EAAEA,qBAAmB;YACvB,CAAC,EAAEA,qBAAmB;YACtB,EAAE,EAAEA,qBAAmB;YACvB,CAAC,EAAEA,qBAAmB;YACtB,EAAE,EAAEA,qBAAmB;YACvB,CAAC,EAAEA,qBAAmB;YACtB,EAAE,EAAEA,qBAAmB;YACvB,CAAC,EAAEA,qBAAmB;YACtB,EAAE,EAAEA,qBAAmB;YACvB,CAAC,EAAEA,qBAAmB;YACtB,EAAE,EAAEA,qBAAmB;SACxB;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC3KD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,+EAA+E,CAAC,KAAK,CAAC,GAAG,CAAC;QACnG,WAAW,EAAG,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1E,QAAQ,EAAG,4DAA4D,CAAC,KAAK,CAAC,GAAG,CAAC;QAClF,aAAa,EAAG,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACxD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,aAAa;YAClB,GAAG,EAAG,mBAAmB;YACzB,IAAI,EAAG,yBAAyB;SACjC;QACD,QAAQ,EAAG;YACT,OAAO,EAAG,aAAa;YACvB,OAAO,EAAG,eAAe;YACzB,QAAQ,EAAG,cAAc;YACzB,OAAO,EAAG,aAAa;YACvB,QAAQ,EAAG,uBAAuB;YAClC,QAAQ,EAAG,GAAG;SACf;QACD,YAAY,EAAG;YACb,MAAM,EAAG,OAAO;YAChB,IAAI,EAAG,WAAW;YAClB,CAAC,EAAG,cAAc;YAClB,EAAE,EAAG,YAAY;YACjB,CAAC,EAAG,WAAW;YACf,EAAE,EAAG,WAAW;YAChB,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,SAAS;SACf;QACD,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAG,KAAK;QACf,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;ICxDD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,uFAAuF,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1G,WAAW,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,QAAQ,EAAE,mDAAmD,CAAC,KAAK,CAAC,GAAG,CAAC;QACxE,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,yBAAyB;YAC9B,IAAI,EAAE,8BAA8B;YACpC,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,sBAAsB;SAC7B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,cAAc;YACpB,CAAC,EAAE,gBAAgB;YACnB,EAAE,EAAE,aAAa;YACjB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,OAAO;SACZ;QACD,sBAAsB,EAAE,cAAc;QACtC,OAAO,YAAC,IAAY;YAClB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,EACd,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG;gBACvC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG;oBACb,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG;wBACb,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;YAC9B,OAAO,GAAG,GAAG,MAAM,CAAC;SACrB;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IClED;IACA;IACA;IACA;IAQO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,mGAAmG,CAAC,KAAK,CAAC,GAAG,CAAC;QACtH,WAAW,EAAE,gEAAgE,CAAC,KAAK,CAAC,GAAG,CAAC;QACxF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,gDAAgD,CAAC,KAAK,CAAC,GAAG,CAAC;QACrE,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,WAAW,EAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,uBAAuB;YAC5B,IAAI,EAAE,kCAAkC;SACzC;QACD,aAAa,EAAE,uBAAuB;QACtC,IAAI,YAAC,KAAK;YACR,OAAO,KAAK,KAAK,YAAY,CAAC;SAC/B;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,EAAE,EAAE;gBACb,OAAO,YAAY,CAAC;aACrB;iBAAM;gBACL,OAAO,YAAY,CAAC;aACrB;SACF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,oBAAoB;YAC9B,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,4BAA4B;YACtC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,WAAW;YACjB,CAAC,EAAE,cAAc;YACjB,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,OAAO;YACV,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,MAAM;YACT,EAAE,EAAE,OAAO;SACZ;KACF;;IC/DD;IACA;IACA;IACA;IAQO,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,mGAAmG,CAAC,KAAK,CAAC,GAAG,CAAC;QACtH,WAAW,EAAE,gEAAgE,CAAC,KAAK,CAAC,GAAG,CAAC;QACxF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,gDAAgD,CAAC,KAAK,CAAC,GAAG,CAAC;QACrE,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,WAAW,EAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE;YACd,EAAE,EAAE,MAAM;YACV,GAAG,EAAE,SAAS;YACd,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,uBAAuB;YAC5B,IAAI,EAAE,kCAAkC;SACzC;QACD,aAAa,EAAE,uBAAuB;QACtC,IAAI,YAAC,KAAK;YACR,OAAO,KAAK,KAAK,YAAY,CAAC;SAC/B;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,EAAE,EAAE;gBACb,OAAO,YAAY,CAAC;aACrB;iBAAM;gBACL,OAAO,YAAY,CAAC;aACrB;SACF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,oBAAoB;YAC9B,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,4BAA4B;YACtC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,WAAW;YACjB,CAAC,EAAE,cAAc;YACjB,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,WAAW;YACd,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,OAAO;YACV,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,UAAU;YACd,CAAC,EAAE,MAAM;YACT,EAAE,EAAE,OAAO;SACZ;QAED,QAAQ,YAAC,GAAW,EAAE,MAAe;YAEnC,IAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;kBAC7C,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;kBACjC,MAAM,CAAC;;YAGX,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAG;gBACnE,IAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;gBAC5D,OAAO,IAAI,GAAG,IAAI,CAAC;aACpB;YAED,OAAO,GAAG,CAAC;SACZ;QAED,WAAW,YAAC,IAAU,EAAE,KAAa;YAAb,sBAAA,EAAA,aAAa;YACnC,OAAO,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SACnE;KACF;;ICnFD;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IAEA,IAAIQ,UAAQ,GAA8B;QACxC,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,QAAQ;QACX,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,OAAO;QACV,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,OAAO;QACX,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,QAAQ;QACX,GAAG,EAAE,QAAQ;QACb,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,QAAQ;QACX,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,QAAQ;KACb,CAAC;IAEK,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,4EAA4E,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/F,WAAW,EAAE,iDAAiD,CAAC,KAAK,CAAC,GAAG,CAAC;QACzE,QAAQ,EAAE,uDAAuD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5E,aAAa,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,yBAAyB;SAChC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,iBAAiB;YAC1B,QAAQ,EAAE,0BAA0B;YACpC,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,wBAAwB;YAClC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,eAAe;YAClB,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,WAAW;YACf,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,SAAS;YACb,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,QAAQ;YACZ,CAAC,EAAE,QAAQ;YACX,EAAE,EAAE,OAAO;YACX,CAAC,EAAE,SAAS;YACZ,EAAE,EAAE,QAAQ;SACb;QACD,sBAAsB,EAAE,uCAAuC;QAC/D,OAAO,YAAC,IAAY;YAClB,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,CAAC,EAAE;gBACb,OAAO,GAAG,GAAG,QAAQ,CAAC;aACvB;YACD,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,EACd,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EACjB,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;YAC9B,OAAO,GAAG,IAAIA,UAAQ,CAAC,CAAC,CAAC,IAAIA,UAAQ,CAAC,CAAC,CAAC,IAAIA,UAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1D;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;ICvFD;IASA;IACA;IACA;IACA;IAEA,SAASF,QAAM,CAAC,IAAI,EAAE,GAAG;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvJ,CAAC;IAED,SAASC,wBAAsB,CAAC,GAAW,EAAE,aAAa,EAAE,GAAG;QAC7D,IAAI,MAAM,GAA8B;YACtC,EAAE,EAAE,aAAa,GAAG,wBAAwB,GAAG,wBAAwB;YACvE,EAAE,EAAE,aAAa,GAAG,wBAAwB,GAAG,wBAAwB;YACvE,EAAE,EAAE,aAAa,GAAG,qBAAqB,GAAG,qBAAqB;YACjE,EAAE,EAAE,eAAe;YACnB,EAAE,EAAE,uBAAuB;YAC3B,EAAE,EAAE,gBAAgB;SACrB,CAAC;QAEF,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,OAAO,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;SAC9C;QAED,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,OAAO,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;SAC5C;QACD,OAAO,GAAG,GAAG,GAAG,GAAGD,QAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,mBAAmB,CAAC,IAAU,EAAE,MAAc,EAAE,KAAe;QACtE,IAAI,QAAQ,GAAG;YACb,UAAU,EAAE,yDAAyD,CAAC,KAAK,CAAC,GAAG,CAAC;YAChF,UAAU,EAAE,yDAAyD,CAAC,KAAK,CAAC,GAAG,CAAC;YAChF,QAAQ,EAAE,2DAA2D,CAAC,KAAK,CAAC,GAAG,CAAC;SACjF,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,QAAQ,CAAC,UAAU,CAAC;SAC5B;QAED,IAAI,QAAQ,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC;YAChD,YAAY;aACX,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC;gBACnD,UAAU;gBACV,YAAY,CAAC,CAAC;QAClB,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,oBAAoB,CAAC,GAAW;QACvC,OAAO,UAAU,IAAU;YACzB,OAAO,GAAG,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;SAChE,CAAC;IACJ,CAAC;IAEM,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE;YACN,MAAM,EAAE,wFAAwF,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3G,UAAU,EAAE,gGAAgG,CAAC,KAAK,CAAC,GAAG,CAAC;SACxH;QACD,WAAW,EAAE,wDAAwD,CAAC,KAAK,CAAC,GAAG,CAAC;QAChF,QAAQ,EAAE,mBAAmB;QAC7B,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9C,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,gBAAgB;YACpB,GAAG,EAAE,uBAAuB;YAC5B,IAAI,EAAE,6BAA6B;SACpC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,oBAAoB,CAAC,YAAY,CAAC;YAC3C,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC;YACzC,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC;YACxC,QAAQ,EAAE,oBAAoB,CAAC,YAAY,CAAC;YAC5C,QAAQ,YAAC,IAAU;gBACjB,QAAQ,YAAY,CAAC,IAAI,CAAC;oBACxB,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC;oBACxD,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC1D;aACF;YACD,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,SAAS;YACf,CAAC,EAAE,iBAAiB;YACpB,EAAE,EAAEC,wBAAsB;YAC1B,CAAC,EAAEA,wBAAsB;YACzB,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,QAAQ;YACX,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,MAAM;YACT,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,QAAQ;YACX,EAAE,EAAEA,wBAAsB;YAC1B,CAAC,EAAE,KAAK;YACR,EAAE,EAAEA,wBAAsB;SAC3B;;QAED,aAAa,EAAE,uBAAuB;QACtC,IAAI,YAAC,KAAK;YACR,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,OAAO,CAAC;aAChB;iBAAM,IAAI,IAAI,GAAG,EAAE,EAAE;gBACpB,OAAO,KAAK,CAAC;aACd;iBAAM;gBACL,OAAO,QAAQ,CAAC;aACjB;SACF;QACD,sBAAsB,EAAE,gBAAgB;QACxC,OAAO,YAAC,IAAY,EAAE,MAAc;YAClC,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,QAAQ,MAAM;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK,CAAC;gBACX,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,IAAI,CAAC;gBACpB,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,KAAK,CAAC;gBACrB;oBACE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;aACzB;SACF;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC1JD;IACA;IACA;IACA;IAIA;IACA;IACA;IAEO,IAAM,QAAQ,GAAe;QAClC,IAAI,EAAE,IAAI;QACV,MAAM,EAAG,oGAAoG,CAAC,KAAK,CAAC,GAAG,CAAC;QACxH,WAAW,EAAG,6DAA6D,CAAC,KAAK,CAAC,GAAG,CAAC;QACtF,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAG,wDAAwD,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9E,aAAa,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QACjD,WAAW,EAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,kBAAkB,EAAG,IAAI;QACzB,aAAa,EAAE,QAAQ;QACvB,IAAI,YAAC,KAAa;YAChB,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;QACD,QAAQ,YAAC,KAAa,EAAE,OAAe,EAAE,OAAgB;YACvD,IAAI,KAAK,GAAG,EAAE,EAAE;gBACd,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;aAC9B;iBAAM;gBACL,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;aAC9B;SACF;QACD,cAAc,EAAG;YACf,EAAE,EAAG,OAAO;YACZ,GAAG,EAAG,UAAU;YAChB,CAAC,EAAG,YAAY;YAChB,EAAE,EAAG,mBAAmB;YACxB,GAAG,EAAG,yBAAyB;YAC/B,IAAI,EAAG,+BAA+B;YACtC,CAAC,EAAG,WAAW;YACf,EAAE,EAAG,YAAY;YACjB,GAAG,EAAG,kBAAkB;YACxB,IAAI,EAAG,uBAAuB;SAC/B;QACD,QAAQ,EAAG;YACT,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,mBAAmB;YAC5B,QAAQ,EAAE,wBAAwB;YAClC,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,GAAG;SACd;QACD,YAAY,EAAG;YACb,MAAM,EAAG,QAAQ;YACjB,IAAI,EAAG,UAAU;YACjB,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,QAAQ;YACb,CAAC,EAAG,UAAU;YACd,EAAE,EAAG,SAAS;YACd,CAAC,EAAG,WAAW;YACf,EAAE,EAAG,UAAU;YACf,CAAC,EAAG,SAAS;YACb,EAAE,EAAG,QAAQ;SACd;QACD,sBAAsB,EAAE,SAAS;QACjC,OAAO,YAAC,IAAY;YAClB,OAAO,EAAE,GAAG,IAAI,CAAC;SAClB;QACD,IAAI,EAAG;YACL,GAAG,EAAG,CAAC;YACP,GAAG,EAAG,CAAC;SACR;KACF;;IC3ED;IACA;IACA;IACA;IACA;IAIA;IACA;IACA;IACA;IAEO,IAAM,UAAU,GAAe;QACpC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,uCAAuC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1D,WAAW,EAAE,wCAAwC,CAAC,KAAK,CAAC,GAAG,CAAC;QAChE,QAAQ,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,aAAa,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,cAAc,EAAE;YACd,EAAE,EAAE,OAAO;YACX,GAAG,EAAE,UAAU;YACf,CAAC,EAAE,YAAY;YACf,EAAE,EAAE,WAAW;YACf,GAAG,EAAE,iBAAiB;YACtB,IAAI,EAAE,qBAAqB;YAC3B,CAAC,EAAE,UAAU;YACb,EAAE,EAAE,WAAW;YACf,GAAG,EAAE,iBAAiB;YACtB,IAAI,EAAE,qBAAqB;SAC5B;QACD,aAAa,EAAE,mBAAmB;QAClC,YAAY,YAAC,IAAI,EAAE,QAAQ;YACzB,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,IAAI,GAAG,CAAC,CAAC;aACV;YACD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI;gBACxC,QAAQ,KAAK,IAAI,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACjD,OAAO,IAAI,GAAG,EAAE,CAAC;aAClB;iBAAM;;gBAEL,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;aACtC;SACF;QACD,QAAQ,YAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC5B,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;YAC7B,IAAI,EAAE,GAAG,GAAG,EAAE;gBACZ,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,EAAE,GAAG,GAAG,EAAE;gBACnB,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,EAAE,GAAG,IAAI,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,EAAE,GAAG,IAAI,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,EAAE,GAAG,IAAI,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;SACF;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,GAAG;SACd;QACD,sBAAsB,EAAE,gBAAgB;QACxC,OAAO,YAAC,IAAY,EAAE,MAAM;YAC1B,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,QAAQ,MAAM;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK;oBACR,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,OAAO,GAAG,GAAG,GAAG,CAAC;gBACnB;oBACE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;aACzB;SACF;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,CAAC,EAAE,IAAI;YACP,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,MAAM;YACT,EAAE,EAAE,OAAO;YACX,CAAC,EAAE,MAAM;YACT,EAAE,EAAE,OAAO;YACX,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,MAAM;YACT,EAAE,EAAE,OAAO;YACX,CAAC,EAAE,KAAK;YACR,EAAE,EAAE,MAAM;SACX;QACD,IAAI,EAAE;;YAEJ,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,CAAC;SACP;KACF;;IC7GD;;;aAGgB,wBAAwB,CAAC,OAAoB,EAAE,QAAiB;QAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;;QAED,IAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;QACjD,IAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEnD,OAAO,QAAQ,GAAG,GAAG,CAAC,QAAe,CAAC,GAAG,GAAG,CAAC;IAC/C;;ICZA;;;aAGgB,aAAa,CAAC,OAAY;QACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;YAC/B,OAAO,OAAO,CAAC;SAChB;QAED,OAAO,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAC5C;;ICTA;;;aAMgB,eAAe,CAAC,OAAY;;QAE1C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,QAAQ,CAAC,IAAI,CAAC;SACtB;QAED,QAAQ,OAAO,CAAC,QAAQ;YACtB,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;YACpC,KAAK,WAAW;gBACd,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,QAAQ;SACT;;QAGK,IAAA,KAAqC,wBAAwB,CAAC,OAAO,CAAC,EAApE,QAAQ,cAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eAAsC,CAAC;QAC7E,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;YAC1F,OAAO,OAAO,CAAC;SAChB;QAED,OAAO,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD;;IC5BO,IAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;;ICAzF;;;IAKA,IAAM,MAAM,GAAG,SAAS,IAAI,CAAC,EAAG,MAAc,CAAC,oBAAoB,IAAK,QAAgB,CAAC,YAAY,CAAC,CAAC;IACvG,IAAM,MAAM,GAAG,SAAS,IAAI,CAAC,EAAG,MAAc,CAAC,oBAAoB,IAAI,SAAS,CAAC,IAAI,CAAE,SAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;aAErG,IAAI,CAAC,OAAgB;QACnC,IAAI,OAAO,KAAK,EAAE,EAAE;YAClB,OAAO,MAAM,CAAC;SACf;QACD,IAAI,OAAO,KAAK,EAAE,EAAE;YAClB,OAAO,MAAM,CAAC;SACf;QAED,OAAO,MAAM,IAAI,MAAM,CAAC;IAC1B;;ICjBA;;;aAMgB,eAAe,CAAC,OAAY;QAC1C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,QAAQ,CAAC,eAAe,CAAC;SACjC;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;;QAGvD,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;;QAGhD,IAAI,OAA2B,CAAC;QAEhC,OAAO,YAAY,KAAK,cAAc;eAC5B,OAAO,CAAC,kBAAkB;eAC1B,OAAO,KAAK,OAAO,CAAC,kBAAkB,EAAE;YAE9C,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;YACrC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;SACrC;QAEH,IAAM,QAAQ,GAAG,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC;QAEvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC3D,OAAO,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;SACnF;;QAGD,IACE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3D,wBAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,QAAQ,EAC/D;YACA,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;SACtC;QAED,OAAO,YAAY,CAAC;IACtB;;aCxCgB,iBAAiB,CAAC,OAAY;QACpC,IAAA,QAAQ,GAAK,OAAO,SAAZ,CAAa;QAC7B,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;QAED,QACE,QAAQ,KAAK,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,OAAO,EAC7E;IACJ;;ICXA;;;aAGgB,OAAO,CAAC,IAAU;QAChC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;YAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,IAAI,CAAC;IACd;;ICTA;;;aAOgB,sBAAsB,CAAC,QAAqB,EAAE,QAAqB;;QAEjF,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACtE,OAAO,QAAQ,CAAC,eAAe,CAAC;SACjC;;;QAID,IAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAAC;QAE5F,IAAM,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1C,IAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;;QAGxC,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACb,IAAA,uBAAuB,GAAK,KAAK,wBAAV,CAAW;;QAG1C,IACE,CAAC,QAAQ,KAAK,uBAAuB;YACnC,QAAQ,KAAK,uBAAuB;YACtC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EACnB;YACA,IAAI,iBAAiB,CAAC,uBAAuB,CAAC,EAAE;gBAC9C,OAAO,uBAAuB,CAAC;aAChC;YAED,OAAO,eAAe,CAAC,uBAAuB,CAAC,CAAC;SACjD;;QAGD,IAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,YAAY,CAAC,IAAI,EAAE;YACrB,OAAO,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC5D;aAAM;YACL,OAAO,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;SACjE;IACH;;IC9CA;;;aAIgB,cAAc,CAAC,MAA2B,EAAE,IAAY;QACtE,IAAM,KAAK,GAAG,IAAI,KAAK,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC;QAC5C,IAAM,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;QAEpD,QACE,UAAU,CAAC,MAAM,CAAC,WAAS,KAAK,UAAc,CAAC,CAAC;YAChD,UAAU,CAAC,MAAM,CAAC,WAAS,KAAK,UAAc,CAAC,CAAC,EAChD;IACJ;;ICVA,SAAS,OAAO,CAAC,IAAY,EAAE,IAAiB,EAAE,IAAiB,EAAE,aAAkC;QACrG,OAAO,IAAI,CAAC,GAAG,CACZ,IAAY,CAAC,WAAS,IAAM,CAAC,EAC7B,IAAY,CAAC,WAAS,IAAM,CAAC,EAC7B,IAAY,CAAC,WAAS,IAAM,CAAC,EAC7B,IAAY,CAAC,WAAS,IAAM,CAAC,EAC7B,IAAY,CAAC,WAAS,IAAM,CAAC,EAC9B,IAAI,CAAC,EAAE,CAAC;eACH,QAAQ,CAAE,IAAY,CAAC,WAAS,IAAM,CAAC,EAAE,EAAE,CAAC;gBAC/C,QAAQ,CAAC,aAAa,CAAC,YAAS,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAS,CAAC,EAAE,EAAE,CAAC;gBACjF,QAAQ,CAAC,aAAa,CAAC,YAAS,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAS,CAAC,EAAE,EAAE,CAAC;cACrF,CAAC,CACJ,CAAC;IACJ,CAAC;aAEe,cAAc,CAAC,QAAkB;QAC/C,IAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;QACtC,IAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEzD,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;YACpD,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;SACnD,CAAC;IACJ;;IC1BA;;;aAGgB,SAAS,CAAC,OAAoB,EAAE,IAAY;QAAZ,qBAAA,EAAA,YAAY;QAC1D,IAAM,SAAS,GAAG,IAAI,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;QAC9D,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC9C,IAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;YACnD,IAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,IAAI,IAAI,CAAC;YAExE,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;SACpC;QAED,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B;;aCVgB,aAAa,CAAC,OAAgB;QAC5C,uCACK,OAAO,KACV,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,EACnC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,IACpC;IACJ;;ICXA;;;aAWgB,qBAAqB,CAAC,OAAoB;QACxD,IAAI,IAAI,GAAQ,EAAE,CAAC;;;;QAKnB,IAAI;YACF,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE;gBACZ,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBACvC,IAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,IAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;gBACtB,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;gBACxB,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;gBACzB,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;aAC1B;iBAAM;gBACL,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;aACxC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;QAED,IAAM,MAAM,GAAQ;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;SAC/B,CAAC;;QAGF,IAAM,KAAK,GAAQ,OAAO,CAAC,QAAQ,KAAK,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAC5F,IAAM,KAAK,GACT,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QACnE,IAAM,MAAM,GACV,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;QAErE,IAAI,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACjD,IAAI,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;;;QAIlD,IAAI,cAAc,IAAI,aAAa,EAAE;YACnC,IAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACjD,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9C,aAAa,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAE7C,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC;YAC/B,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC;SAChC;QAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B;;IC9DA;;;aAMgB,aAAa,CAAC,IAAa,EAAE,OAAoB,EAAE,QAAgB;QAAhB,yBAAA,EAAA,gBAAgB;QACjF,IAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAM,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,IAAI,SAAS,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,KAAK,IAAI,UAAU,GAAG,QAAQ,CAAC;QAEpC,OAAO,IAAI,CAAC;IACd;;aCRgB,oCAAoC,CAClD,QAAqB,EACrB,MAAmB,EACnB,aAAqB;QAArB,8BAAA,EAAA,qBAAqB;QAErB,IAAM,MAAM,GAAGE,IAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC;QAC1C,IAAM,YAAY,GAAQ,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAM,UAAU,GAAQ,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzD,IAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;;QAG3D,IAAI,aAAa,IAAI,MAAM,EAAE;YAC3B,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7C,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAChD;QAED,IAAI,OAAO,GAAY,aAAa,CAAC;YACnC,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,cAAc;YACvD,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,eAAe;YAC3D,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC,CAAC;QAEH,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;;;;;QAMvB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE;YACrB,IAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEjD,OAAO,CAAC,GAAG,IAAI,cAAc,GAAG,SAAS,CAAC;YAC1C,OAAO,CAAC,MAAM,IAAI,cAAc,GAAG,SAAS,CAAC;YAC7C,OAAO,CAAC,IAAI,IAAI,eAAe,GAAG,UAAU,CAAC;YAC7C,OAAO,CAAC,KAAK,IAAI,eAAe,GAAG,UAAU,CAAC;;YAG9C,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;YAC9B,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;SACjC;QAED,IACE,MAAM,IAAI,CAAC,aAAa;cACpB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;cAC7B,MAAM,KAAK,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM,EAC/D;YACA,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SAC1C;QAED,OAAO,OAAO,CAAC;IACjB;;aC7DgB,6CAA6C,CAAC,OAAoB,EAAE,aAAqB;QAArB,8BAAA,EAAA,qBAAqB;QACvG,IAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;QACnD,IAAM,cAAc,GAAG,oCAAoC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QACjE,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAEpE,IAAM,SAAS,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,IAAM,UAAU,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhE,IAAM,MAAM,GAAG;YACb,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;YAC9E,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;YAClF,KAAK,OAAA;YACL,MAAM,QAAA;SACP,CAAC;QAEF,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B;;ICtBA;;;aAMgB,OAAO,CAAC,OAAoB;QAC1C,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC9C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,OAAO,EAAE;YAC7D,OAAO,IAAI,CAAC;SACb;QAED,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC;;IChBA;;;aAOgB,4BAA4B,CAAC,OAAoB;;QAE/D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE,EAAE;YACjD,OAAO,QAAQ,CAAC,eAAe,CAAC;SAChC;QAED,IAAI,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;QAE/B,OAAO,EAAE,IAAI,wBAAwB,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE;YACjE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;SACvB;QAED,OAAO,EAAE,IAAI,QAAQ,CAAC,eAAe,CAAC;IACxC;;ICpBA;;;aAYgB,aAAa,CAC3B,MAAmB,EACnB,IAAiB,EACjB,OAAW,EACX,iBAAyB,EACzB,aAAqB;QAFrB,wBAAA,EAAA,WAAW;QAEX,8BAAA,EAAA,qBAAqB;;QAIrB,IAAI,UAAU,GAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1C,IAAM,YAAY,GAAG,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;QAGjH,IAAI,iBAAiB,KAAK,UAAU,EAAE;YACpC,UAAU,GAAG,6CAA6C,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;SACzF;aAAM;;YAEL,IAAI,cAAc,SAAA,CAAC;YACnB,IAAI,iBAAiB,KAAK,cAAc,EAAE;gBACxC,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtD,IAAI,cAAc,CAAC,QAAQ,KAAK,MAAM,EAAE;oBACtC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;iBACvD;aACF;iBAAM,IAAI,iBAAiB,KAAK,QAAQ,EAAE;gBACzC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;aACvD;iBAAM;gBACL,cAAc,GAAG,iBAAiB,CAAC;aACpC;YAED,IAAM,OAAO,GAAG,oCAAoC,CAClD,cAAc,EACd,YAAY,EACZ,aAAa,CACd,CAAC;;YAGF,IAAI,cAAc,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAC1D,IAAA,KAAoB,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAtD,MAAM,YAAA,EAAE,KAAK,WAAyC,CAAC;gBAC/D,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;gBAClD,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzD,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;gBACrD,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACzD;iBAAM;;gBAEL,UAAU,GAAG,OAAO,CAAC;aACtB;SACF;;QAGD,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC;QAC3B,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC;QAC1B,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC;QAC5B,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC;QAE7B,OAAO,UAAU,CAAC;IACpB;;ICnEA;;;;IAOA,SAAS,OAAO,CAAC,EAA4C;YAA1C,KAAK,WAAA,EAAE,MAAM,YAAA;QAC9B,OAAO,KAAK,GAAG,MAAM,CAAC;IACxB,CAAC;aAEe,oBAAoB,CAClC,SAAiB,EACjB,OAAgB,EAChB,MAAmB,EACnB,IAAiB,EACjB,gBAA4D,EAC5D,iBAA8B,EAC9B,OAAW;QAFX,iCAAA,EAAA,oBAA2B,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;QAC5D,kCAAA,EAAA,8BAA8B;QAC9B,wBAAA,EAAA,WAAW;QAEX,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACpC,OAAO,SAAS,CAAC;SAClB;QAED,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAE3E,IAAM,KAAK,GAAQ;YACjB,GAAG,EAAE;gBACH,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG;aACrC;YACD,KAAK,EAAE;gBACL,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;gBACvC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;aAC3C;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;gBACrC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B;SACF,CAAC;QAEF,IAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aACnC,GAAG,CAAC,UAAA,GAAG,IAAI,sCACV,GAAG,KAAA,IACA,KAAK,CAAC,GAAG,CAAC,KACb,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OACzB,CAAC;aACF,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAA,CAAC,CAAC;QAEnC,IAAI,aAAa,GAAU,WAAW,CAAC,MAAM,CAC3C,UAAC,EAAiB;gBAAf,KAAK,WAAA,EAAE,MAAM,YAAA;YACd,OAAO,KAAK,IAAI,MAAM,CAAC,WAAW;mBAC7B,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;SACpC,CACF,CAAC;QAEF,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,UAAC,QAAa;YACjD,OAAO,gBAAgB;iBACpB,IAAI,CAAC,UAAC,eAAuB;gBAC5B,OAAO,eAAe,KAAK,QAAQ,CAAC,GAAG,CAAC;aACzC,CAAC,CAAC;SACN,CAAC,CAAC;QAEH,IAAM,iBAAiB,GAAW,aAAa,CAAC,MAAM,GAAG,CAAC;cACtD,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;cACpB,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAEvB,IAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QAG1C,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAc,iBAAmB,CAAC,CAAC;QAEnG,OAAO,iBAAiB,IAAI,SAAS,GAAG,MAAI,SAAW,GAAG,EAAE,CAAC,CAAC;IAChE;;aC3EgB,UAAU,CAAC,IAAU;QACnC,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;YAChC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;YAClC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1C,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7C,CAAC;IACJ;;ICXA;;;aAGgB,oBAAoB,CAAC,SAAiB;QACpD,IAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAE5E,OAAO,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,UAAA,OAAO,IAAK,OAAA,IAAY,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;IACxF;;ICPA;;;aAGgB,oBAAoB,CAAC,SAAiB;QACpD,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,OAAO,MAAM,CAAC;SACf;aAAM,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/B,OAAO,OAAO,CAAC;SAChB;QAED,OAAO,SAAS,CAAC;IACnB;;ICXA;;;aAGgB,aAAa,CAAC,OAAY;QACxC,IAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;QACjD,IAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,IAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QACnF,IAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAEnF,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;YACtC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;SACzC,CAAC;IACJ;;ICbA;;;aAQgB,mBAAmB,CACjC,MAAmB,EACnB,IAAiB,EACjB,aAA6B;QAA7B,8BAAA,EAAA,oBAA6B;QAE7B,IAAM,kBAAkB,GAAG,aAAa;cACpC,4BAA4B,CAAC,MAAM,CAAC;cACpC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEzC,OAAO,oCAAoC,CAAC,IAAI,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACvF;;IClBA;;;aAOgB,gBAAgB,CAC9B,MAAmB,EACnB,WAAoB,EACpB,QAAgB;QAEhB,IAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QAGzC,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;;QAGzC,IAAM,aAAa,GAAG;YACpB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;;QAGF,IAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;QAC1C,IAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;QAC/C,IAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;QACjD,IAAM,oBAAoB,GAAG,CAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;QAE1D,aAAqB,CAAC,QAAQ,CAAC;YAC9B,WAAW,CAAC,QAAQ,CAAC;gBACrB,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC;gBAC5B,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE7B,aAAqB,CAAC,aAAa,CAAC,GAAG,SAAS,KAAK,aAAa;cAC/D,WAAW,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC;cAC5D,WAAmB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;QAE9D,OAAO,aAAa,CAAC;IACvB;;ICxCA;;;aAGgB,iBAAiB,CAAC,OAAY,EAAE,YAAoB;QAClE,OAAO,OAAO;eACT,OAAO,CAAC,SAAS;eACjB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;eAC/B,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;IAC/C;;ICRA;;;aAGgB,SAAS,CAAC,CAAM;QAC9B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1D;;aCCgB,oBAAoB,CAAC,IAAU,EAAE,QAAoB;QACnE,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEpC,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;QAEtC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,iBAAe,IAAI,CAAC,SAAW,CAAC,CAAC;YAC9F,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAc,IAAI,CAAC,SAAW,CAAC,CAAC;YAC5F,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,MAAI,IAAI,CAAC,SAAW,CAAC,CAAC;YAEzE,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7F,cAAc,IAAI,eAAe,CAAC;aACnC;YAED,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAK,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9F,cAAc,IAAI,eAAe,CAAC;aACnC;SACF;QAED,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,wBAAwB,EAAE,KAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAG,CAAC,CAAC;QAErG,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;YAEvD,OAAO;SACR;QAED,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC;IACpC;;aC3BgB,SAAS,CAAC,OAAoB,EAAE,MAAW,EAAE,QAAoB;QAC/E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,IAAS;YACpC,IAAI,IAAI,GAAG,EAAE,CAAC;;YAEd,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5E,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;gBACzB,IAAI,GAAG,IAAI,CAAC;aACb;YAED,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAM,CAAC,CAAC;gBAEnE,OAAO;aACR;YAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;SACnD,CAAC,CAAC;IACL;;aCrBgB,KAAK,CAAC,IAAU;;QAC9B,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;QAExC,IAAM,YAAY,GAAuB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;QAGtF,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QAED,IAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAElF,IAAM,GAAG,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC5C,IAAM,eAAe,GAAG,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;QACpD,IAAM,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAM,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;QAC5C,IAAM,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC/C,IAAM,gBAAgB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QAGxD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,GAAI,aAAqB,CAAC,IAAI,CAAC,EAAE;YAC9E,aAAqB,CAAC,IAAI,CAAC;gBACzB,aAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC;SACjF;;QAED,IAAI,MAAM,CAAE,IAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAI,aAAqB,CAAC,MAAM,CAAC,EAAE;YACvG,aAAqB,CAAC,IAAI,CAAC;gBAC1B,MAAM,CAAE,IAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAE,aAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;SAChH;QACD,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;;;QAI7C,IAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,WAAS,eAAiB,CAAC,CAAC,CAAC;QACrE,IAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,WAAS,eAAe,UAAO,CAAC,CAAC,CAAC;;QAG1E,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,GAAG,MAAM,CAAE,IAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;SAC/G;aAAM;YACL,IAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACxD,IAAM,qBAAqB,GAAG,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;YAC/F,MAAM,GAAG,IAAI,KAAK,kBAAkB;gBAClC,MAAM,CAAE,IAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,qBAAqB;gBAChE,MAAM,CAAE,IAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC;SACrG;QAED,IAAI,SAAS,GACX,MAAM,GAAI,aAAqB,CAAC,IAAI,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;;QAG9E,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,OAAO,CAAC,KAAK;YAChB,GAAC,IAAI,IAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC7B,GAAC,OAAO,IAAG,EAAE;;eACd,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd;;aCxDgB,IAAI,CAAC,IAAU;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAE5C,IAAI,CAAC,OAAO,CAAC,MAAM,mCACd,IAAI,CAAC,OAAO,CAAC,MAAM,GACnB,gBAAgB,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,SAAS,CACf,CACF,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAM,UAAU,GAAG,aAAa,CAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,CAAC;QACD,UAAU,EACV,KAAK;SACN,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnD,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAEhC,IAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChH,IAAM,SAAS,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;;QAGhD,SAAS,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK;YAC5B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,EAAE;gBACxD,OAAO,IAAI,CAAC;aACb;YAED,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;YAGzC,IAAM,WAAW,GACf,CAAC,SAAS,KAAK,MAAM;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC3E,SAAS,KAAK,OAAO;oBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC5E,SAAS,KAAK,KAAK;oBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC5E,SAAS,KAAK,QAAQ;oBACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAEhF,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzF,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtF,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAE/F,IAAM,mBAAmB,GACvB,CAAC,SAAS,KAAK,MAAM,IAAI,aAAa;iBACrC,SAAS,KAAK,OAAO,IAAI,cAAc,CAAC;iBACxC,SAAS,KAAK,KAAK,IAAI,YAAY,CAAC;iBACpC,SAAS,KAAK,QAAQ,IAAI,eAAe,CAAC,CAAC;;YAG9C,IAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,IAAM,gBAAgB,IACnB,CAAC,UAAU,IAAI,SAAS,KAAK,MAAM,IAAI,aAAa;iBAClD,UAAU,IAAI,SAAS,KAAK,OAAO,IAAI,cAAc,CAAC;iBACtD,CAAC,UAAU,IAAI,SAAS,KAAK,MAAM,IAAI,YAAY,CAAC;iBACpD,CAAC,UAAU,IAAI,SAAS,KAAK,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC;YAE/D,IAAI,WAAW,IAAI,mBAAmB,IAAI,gBAAgB,EAAE;gBAC1D,IAAI,WAAW,IAAI,mBAAmB,EAAE;oBACtC,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBAClC;gBAED,IAAI,gBAAgB,EAAE;oBACpB,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;iBAC7C;gBAED,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,GAAG,MAAI,SAAW,GAAG,EAAE,CAAC,CAAC;gBAEhE,IAAI,CAAC,OAAO,CAAC,MAAM,mCACd,IAAI,CAAC,OAAO,CAAC,MAAM,GACnB,gBAAgB,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,SAAS,CACf,CACF,CAAC;aACH;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd;;aCnGgB,QAAQ,CACtB,aAA0B,EAAE,WAAwB,EAAE,QAAgB,EAAE,OAAgB;QAGxF,IAAM,cAAc,GAAG,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEvE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,sCAAsC,CAAC;eACtD,CAAC,QAAQ,CAAC,KAAK,CAAC,wEAAwE,CAAC,EAAE;;YAE5F,QAAQ,GAAG,MAAM,CAAC;SACnB;QAEH,IAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;QAGhD,IAAI,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,+BAA+B,CAAC;cAC3D,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM;cAChC,QAAQ,CAAC;;QAGb,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC7F,IAAI,OAAO,EAAE;YACX,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,MAAI,OAAO,CAAC,CAAC,CAAG,GAAG,EAAE,CAAC,CAAC;SAC/D;;QAGD,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YACtF,SAAS,GAAG,MAAM,CAAC;SACpB;QAED,IAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAEhF,SAAS,GAAG,oBAAoB,CAC9B,SAAS,EACT,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAC/C,CAAC;QAEF,OAAO;YACL,OAAO,SAAA;YACP,QAAQ,EAAE;gBACR,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,IAAI;aACZ;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,IAAI;aACZ;YACD,aAAa,EAAE,KAAK;YACpB,SAAS,WAAA;YACT,aAAa,eAAA;SACd,CAAC;IACJ;;aC7DgB,eAAe,CAAC,IAAU;QAExC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE;YACvD,OAAO,IAAI,CAAC;SACb;;;;QAKD,IAAM,aAAa,GAAG,WAAW,CAAC;QAClC,IAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACxC,IAA0C,KAAA,YAAY,EAAtD,GAAG,SAAA,EAAE,IAAI,UAAA,EAAE,KAAC,aAAc,EAAE,SAAS,SAAiB,CAAC;QAC/D,YAAY,CAAC,GAAG,GAAG,EAAE,CAAC;QACtB,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;QACvB,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAEjC,IAAM,UAAU,GAAG,aAAa,CAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,iBAAiB,IAAI,cAAc,EAC1E,KAAK;SACN,CAAC;;;QAIF,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,YAAY,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAExC,IAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEjD,IAAM,KAAK,GAAG;YACZ,OAAO,YAAC,SAAiB;;gBACvB,IAAI,KAAK,GAAI,IAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpD,IACG,IAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC/D,CAAC,KAAK;kBACN;oBACA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAE,IAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;iBAClF;gBAED,gBAAS,GAAC,SAAS,IAAG,KAAK,KAAG;aAC/B;YACD,SAAS,YAAC,SAAiB;;gBACzB,IAAM,QAAQ,GAAG,SAAS,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;gBACxD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IACG,IAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC/D,CAAC,KAAK;kBACN;oBACA,KAAK,GAAG,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC7B,UAAU,CAAC,SAAS,CAAC;yBACpB,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CACjF,CAAC;iBACH;gBAED,gBAAS,GAAC,QAAQ,IAAG,KAAK,KAAG;aAC9B;SACF,CAAC;QAEF,IAAI,IAAY,CAAC;QAEjB,KAAK,CAAC,OAAO,CAAC,UAAA,SAAS;YACrB,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;iBACnB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;kBACxB,SAAS;kBACT,WAAW,CAAC;YAEhB,IAAI,CAAC,OAAO,CAAC,MAAM,mCACd,IAAI,CAAC,OAAO,CAAC,MAAM,GAClB,KAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CACnC,CAAC;SAEH,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd;;aC/EgB,KAAK,CAAC,IAAU;;QAC9B,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,cAAc,EAAE;YACZ,IAAA,KAAmB,IAAI,CAAC,OAAO,EAA7B,IAAI,UAAA,EAAE,MAAM,YAAiB,CAAC;YACtC,IAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,IAAM,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;YACzC,IAAM,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;YAEpD,IAAM,YAAY,GAAG;gBACnB,KAAK,YAAI,GAAC,IAAI,IAAG,IAAI,CAAC,IAAI,CAAC,KAAE;gBAC7B,GAAG;oBACD,GAAC,IAAI,IAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;uBAC7D;aACF,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,MAAM,mCACd,MAAM;gBACP,GAAC,IAAI,KAAI,IAAI,KAAK,cAAc,GAAI,YAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAI,YAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAE1G,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd;;ICpBA;QAAA;SAuBC;QAtBC,8BAAQ,GAAR,UAAS,WAAwB,EAAE,aAA0B,EAAE,KAAY;YAAZ,sBAAA,EAAA,YAAY;YACzE,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;SACvD;QAED,4BAAM,GAAN,UAAO,WAAwB,EAAE,aAA0B,EAAE,KAAY;YAAZ,sBAAA,EAAA,YAAY;YACvE,OAAO,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;SACxD;QAED,sCAAgB,GAAhB,UACE,WAAwB,EACxB,aAA0B,EAC1B,QAAgB,EAChB,YAAsB,EACtB,OAAiB;YAEjB,IAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;YAE/D,OAAO,gBAAgB,CAAC,MAAM,CAC5B,UAAC,YAAY,EAAE,QAAQ,IAAK,OAAA,QAAQ,CAAC,YAAY,CAAC,GAAA,EAClD,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CACxD,CAAC;SACH;0BACF;KAAA,IAAA;IAED,IAAM,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC;aAE1B,gBAAgB,CAC9B,WAAwB,EACxB,aAA0B,EAC1B,SAAiB,EACjB,YAAsB,EACtB,OAAiB,EACjB,QAAoB;QAGpB,IAAM,IAAI,GAAG,eAAe,CAAC,gBAAgB,CAC3C,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,EACZ,OAAO,CACR,CAAC;QAEF,IAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjC,SAAS,CAAC,aAAa,EAAE;YACvB,aAAa,EAAE,WAAW;YAC1B,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,iBAAe,OAAO,CAAC,IAAI,YAAO,OAAO,CAAC,GAAG,aAAU;SACnE,EAAE,QAAQ,CAAC,CAAC;QAEb,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACvB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC9D;QAED,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC;;;QCfE,4BACE,MAAc,EACd,eAAiC,EACZ,UAAkB;YAHzC,iBAoCC;YAzCO,aAAQ,GAAG,IAAIC,YAAO,EAAQ,CAAC;YAC/B,qBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;YAE7B,eAAU,GAAG,KAAK,CAAC;YAQzB,IAAIC,wBAAiB,CAAC,UAAU,CAAC,EAAE;gBACjC,MAAM,CAAC,iBAAiB,CAAC;oBACvB,KAAI,CAAC,aAAa,GAAGC,UAAK,CACxBC,cAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAC9CA,cAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;oBAE9CC,OAAE,CAAC,CAAC,EAAEC,4BAAuB,CAAC,EAC9B,KAAI,CAAC,QAAQ,CACd,CAAC;oBAEF,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC;wBAC3B,IAAI,KAAI,CAAC,UAAU,EAAE;4BACnB,OAAO;yBACR;wBAED,KAAI,CAAC,gBAAgB;;6BAElB,OAAO,CAAC,UAAC,eAAoB;4BAC5B,gBAAgB,CACd,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,EACvC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EACxC,eAAe,CAAC,UAAU,EAC1B,eAAe,CAAC,YAAY,EAC5B,KAAI,CAAC,OAAO,EACZ,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAC3C,CAAC;yBACH,CAAC,CAAC;qBACN,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ;SACF;QAED,qCAAQ,GAAR,UAAS,OAA2B;YAClC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAClC;QAED,sBAAI,sCAAM;iBAAV;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;;;WAAA;QAED,oCAAO,GAAP;YACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QAED,mCAAM,GAAN;YACE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;QAED,+CAAkB,GAAlB,UAAmB,OAA2B;YAC5C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;SACtE;QAED,yCAAY,GAAZ;YACE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;QAED,kDAAqB,GAArB,UAAsB,KAAiB;YACrC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;SACtD;QAED,uCAAU,GAAV,UAAW,OAAgB;YACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;;;;gBA5EFzB,aAAU;;;gBA3C6D0B,SAAM;gBAA7CC,mBAAgB;6CAsD5CC,SAAM,SAACC,cAAW;;IAoEvB,SAAS,eAAe,CAAC,OAA0C;;QAEjE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACxC;QAED,IAAI,OAAO,YAAYC,aAAU,EAAE;YACjC,OAAO,OAAO,CAAC,aAAa,CAAC;SAC9B;QAED,OAAO,OAAO,CAAC;IACjB;;IC5HO,IAAM,2BAA2B,GAAG,kCAAkC,CAAC;QAEjE,mBAAmB,GAC9BC,kBAAO,CAAC,qBAAqB,EAAE;QAC7BC,gBAAK,CAAC,eAAe,EAAEC,gBAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClEC,qBAAU,CAAC,oBAAoB,EAAE;YAC/BD,gBAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACxCE,kBAAO,CAAC,2BAA2B,CAAC;SACrC,CAAC;QACFH,gBAAK,CAAC,aAAa,EAAEC,gBAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChEC,qBAAU,CAAC,kBAAkB,EAAE;YAC7BD,gBAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1CE,kBAAO,CAAC,2BAA2B,CAAC;SACrC,CAAC;QACFD,qBAAU,CAAC,iBAAiB,EAAEC,kBAAO,CAAC,IAAI,CAAC,CAAC;KAC7C;;;QCJH;YAWE,iBAAY,GAAoB,EAAE,CAAC;YAEnC,gBAAW,GAAW,EAAE,CAAC;SAkE1B;QAhEC,sBAAI,mDAAO;iBAAX,UAAY,KAAW;gBACrB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACjC;;;WAAA;QAED,sBAAI,mDAAO;iBAAX,UAAY,KAAW;gBACrB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACjC;;;WAAA;QACD,sBAAI,wDAAY;iBAAhB,UAAiB,KAAe;gBAC9B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACtC;;;WAAA;QACD,sBAAI,yDAAa;iBAAjB,UAAkB,KAAa;gBAC7B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aACvC;;;WAAA;QAED,sBAAI,wDAAY;iBAAhB,UAAiB,KAAa;gBAC5B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACtC;;;WAAA;QAED,sBAAI,sDAAU;iBAAd,UAAe,KAAc;gBAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAClC;;;WAAA;QAED,sBAAI,6DAAiB;iBAArB,UAAsB,KAAoC;gBACxD,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aAC3C;;;WAAA;QAED,sBAAI,4DAAgB;iBAApB,UAAqB,KAAkC;gBACrD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;aAC1C;;;WAAA;QAQD,oDAAW,GAAX,UAAY,KAA4B,KAAU;QAElD,mDAAU,GAAV,UAAW,KAAwB,KAAU;QAE7C,wDAAe,GAAf,UAAgB,KAAqB,KAAU;QAE/C,yDAAgB,GAAhB,UAAiB,KAAoB,KAAU;QAE/C,0DAAiB,GAAjB,UAAkB,KAAqB,KAAU;QAEjD,yDAAgB,GAAhB,UAAiB,KAAqB,KAAU;QAEhD,yDAAgB,GAAhB,UAAiB,GAAiB,KAAU;QAE5C,2DAAkB,GAAlB,UAAmB,KAA4B,KAAU;QAEzD,0DAAiB,GAAjB,UAAkB,KAA4B,KAAU;QAExD,2DAAkB,GAAlB,UAAmB,KAAoB,KAAU;QAEjD,iDAAQ,GAAR,eAAmB;QAEnB,kDAAS,GAAT,eAAoB;;QAGpB,yDAAgB,GAAhB,UAAiB,KAAU;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;6CACF;KAAA;;;QCtFD;;QAuBE,wCAAS,GAAT;YACE,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,SAAS,EAAE,CAAC;SACjD;QAED,qCAAM,GAAN;YACE,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,EAAE,CAAC;SAC9C;QAED,mCAAI,GAAJ;YACE,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,CAAC;SAC5C;QAED,qCAAM,GAAN,UAAO,IAAU;YACf,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,MAAM;gBACjC,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAED,6CAAc,GAAd,UAAe,KAA4B;YACzC,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,eAAe;gBAC1C,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,yCAAU,GAAV,UAAW,KAA4B;YACrC,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,WAAW;gBACtC,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,2CAAY,GAAZ,UAAa,IAAc;YACzB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,eAAe;gBAC1C,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAED,yCAAU,GAAV,UAAW,OAAgC;YACzC,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,WAAW;gBACtC,OAAO,EAAE,OAAO;aACjB,CAAC;SACH;;QAGD,0CAAW,GAAX,UAAY,KAAa;YACvB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,YAAY;gBACvC,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,uCAAQ,GAAR,UAAS,KAAqB;YAC5B,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,KAAK;gBAChC,OAAO,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;aAClD,CAAC;SACH;QAED,sCAAO,GAAP,UAAQ,IAAU;YAChB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,YAAY;gBACvC,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAED,sCAAO,GAAP,UAAQ,IAAU;YAChB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,YAAY;gBACvC,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAED,2CAAY,GAAZ,UAAa,IAAc;YACzB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;gBAC3C,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAED,4CAAa,GAAb,UAAc,KAAa;YACzB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,iBAAiB;gBAC5C,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,2CAAY,GAAZ,UAAa,KAAa;YACxB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,gBAAgB;gBAC3C,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,yCAAU,GAAV,UAAW,KAAc;YACvB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,eAAe;gBAC1C,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,mDAAoB,GAApB,UAAqB,KAAoC;YACvD,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,uBAAuB;gBAClD,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,kDAAmB,GAAnB,UAAoB,KAAkC;YACpD,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,sBAAsB;gBACjD,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QAED,wCAAS,GAAT,UAAU,MAAc;YACtB,OAAO;gBACL,IAAI,EAAE,oBAAoB,CAAC,UAAU;gBACrC,OAAO,EAAE,MAAM;aAChB,CAAC;SACH;;;IAjJe,8BAAS,GAAG,qCAAqC,CAAC;IAClD,2BAAM,GAAG,uCAAuC,CAAC;IACjD,yBAAI,GAAG,wBAAwB,CAAC;IAChC,2BAAM,GAAG,0BAA0B,CAAC;IACpC,oCAAe,GAAG,8BAA8B,CAAC;IACjD,gCAAW,GAAG,+BAA+B,CAAC;IAC9C,gCAAW,GAAG,oCAAoC,CAAC;IACnD,0BAAK,GAAG,yBAAyB,CAAC;IAClC,oCAAe,GAAG,+BAA+B,CAAC;IAElD,iCAAY,GAAG,2BAA2B,CAAC;IAC3C,iCAAY,GAAG,2BAA2B,CAAC;IAC3C,qCAAgB,GAAG,gCAAgC,CAAC;IACpD,sCAAiB,GAAG,iCAAiC,CAAC;IACtD,qCAAgB,GAAG,gCAAgC,CAAC;IACpD,oCAAe,GAAG,8BAA8B,CAAC;IACjD,4CAAuB,GAAG,sCAAsC,CAAC;IACjE,2CAAsB,GAAG,qCAAqC,CAAC;IAC/D,+BAAU,GAAG,oCAAoC,CAAC;IAElD,iCAAY,GAAG,sCAAsC,CAAC;;gBAtBvEnC,aAAU;;;;QCTX;YAEU,mBAAc,GAAG,IAAI,CAAC;YACtB,YAAO,GAAG,IAAIoC,oBAAe,CAAS,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,kBAAa,GAAuB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;SAqBzE;QAnBC,sBAAI,mCAAM;iBAAV;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;;;WAAA;QAED,sBAAI,yCAAY;iBAAhB;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;;;WAAA;QAED,sBAAI,0CAAa;iBAAjB;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;aAChC;;;WAAA;QAED,6BAAG,GAAH,UAAI,MAAc;YAChB,IAAI,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;gBACjC,OAAO;aACR;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;;;;gBAxBFpC,aAAU;;;;QCkCT,8BAAoB,QAA8B,EAC9B,cAA+B;YAD/B,aAAQ,GAAR,QAAQ,CAAsB;YAC9B,mBAAc,GAAd,cAAc,CAAiB;YAH3C,UAAK,GAAmB,EAAE,CAAC;SAGoB;QAEvD,mCAAI,GAAJ,UAAK,mBAAuC;YAC1C,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC;YAElC,OAAO,IAAI,CAAC;SACb;;QAID,uCAAQ,GAAR,UAAS,KAAW;YAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACnD;QAED,4CAAa,GAAb,UAAc,KAAa;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SACxD;QAED,yCAAU,GAAV,UAAW,KAAW;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC;SACb;QAED,yCAAU,GAAV,UAAW,KAAW;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC;SACb;QAED,8CAAe,GAAf,UAAgB,KAAe;YAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAExD,OAAO,IAAI,CAAC;SACb;QAED,+CAAgB,GAAhB,UAAiB,KAAa;YAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC;SACb;QAED,8CAAe,GAAf,UAAgB,KAAa;YAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAExD,OAAO,IAAI,CAAC;SACb;QAED,0CAAW,GAAX,UAAY,KAAc;YACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtD,OAAO,IAAI,CAAC;SACb;QAED,mDAAoB,GAApB,UAAqB,KAAoC;YACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YAEhE,OAAO,IAAI,CAAC;SACb;QAED,kDAAmB,GAAnB,UAAoB,KAAkC;YACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAE/D,OAAO,IAAI,CAAC;SACb;;QAGD,yCAAU,GAAV,UAAW,OAA4B;YACrC,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAC,EAAE,OAAO,CAAC,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC;SACb;;QAGD,0CAAW,GAAX,UAAY,SAAyC;YACnD,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;iBACjC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,aAAa,GAAA,CAAC;iBACpC,IAAI,CACHqC,gBAAM,CAAC,UAAA,MAAM,IAAI,OAAA,CAAC,CAAC,MAAM,GAAA,CAAC,CAC3B,CAAC;;YAGJ,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;iBACnC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,qBAAqB,GAAA,CAAC;iBAC5C,IAAI,CACHA,gBAAM,CAAC,UAAA,MAAM,IAAI,OAAA,CAAC,CAAC,MAAM,GAAA,CAAC,CAC3B,CAAC;;YAGJ,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;iBAClC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,oBAAoB,GAAA,CAAC;iBAC3C,IAAI,CACHA,gBAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CACzB,CAAC;YAEJ,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,IAAI,GAAA,CAAC,CAAC;YAElE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;iBAC5B,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,eAAe,GAAA,CAAC;iBACtC,IAAI,CACHC,aAAG,CAAC,UAAA,eAAe,IAAI,QAAC,EAAC,eAAe,iBAAA,EAAC,IAAC,CAAC,CAC5C,CAAC;YAEJ,OAAO,IAAI,CAAC;SACb;;QAGD,+CAAgB,GAAhB,UAAiB,SAAyC;YAA1D,iBA4BC;YA3BC,SAAS,CAAC,WAAW,GAAG,UAAC,KAA4B;gBACnD,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;aAC3D,CAAC;YAEF,SAAS,CAAC,UAAU,GAAG,UAAC,KAAwB;gBAC9C,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC9D,CAAC;YAEF,SAAS,CAAC,eAAe,GAAG,UAAC,KAAqB;gBAChD,IAAM,KAAK,GAAG,KAAK,CAAC,IAAoB,CAAC;gBACzC,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,EAAE;oBAC1C,OAAO;iBACR;gBAED,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;aACnC,CAAC;YAEF,SAAS,CAAC,iBAAiB,GAAG,UAAC,KAAqB;gBAClD,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;aACxC,CAAC;YAEF,SAAS,CAAC,gBAAgB,GAAG,UAAC,KAAqB;gBACjD,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;aACxC,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,4DAA6B,GAA7B;YAAA,iBAqGC;YApGC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,GAAA,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;gBACpD,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;aACjD,CAAC,CACH,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,WAAW,GAAA,CAAC;iBAClC,IAAI,CACHD,gBAAM,CAAC,UAAA,UAAU,IAAI,OAAA,CAAC,CAAC,UAAU,GAAA,CAAC,CACnC;iBACA,SAAS,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAA,CAAC,CACpE,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,eAAe,GAAA,CAAC;iBACtC,IAAI,CACHA,gBAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CACzB;iBACA,SAAS,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAClE,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,YAAY,GAAA,CAAC;iBACnC,IAAI,CACHA,gBAAM,CAAC,UAAA,YAAY,IAAI,OAAA,CAAC,CAAC,YAAY,GAAA,CAAC,CACvC;iBACA,SAAS,CAAC,UAAA,YAAY,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CACzE,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,aAAa,GAAA,CAAC;iBACpC,IAAI,CACHA,gBAAM,CAAC,UAAA,aAAa,IAAI,OAAA,CAAC,CAAC,aAAa,GAAA,CAAC,CACzC;iBACA,SAAS,CAAC,UAAA,aAAa,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAC1E,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,cAAc,GAAA,CAAC;iBACrC,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAC/D,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,kBAAkB,GAAA,CAAC;iBACzC,IAAI,CACHA,gBAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CACzB;iBACA,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAC/D,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,WAAW,GAAA,CAAC;iBAClC,IAAI,CACHA,gBAAM,CAAC,UAAA,WAAW,IAAI,OAAA,CAAC,CAAC,WAAW,GAAA,CAAC,CACrC;iBACA,SAAS,CAAC,UAAA,WAAW,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CACxE,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,iBAAiB,GAAA,CAAC;iBACxC,IAAI,CACHA,gBAAM,CAAC,UAAA,iBAAiB,IAAI,OAAA,CAAC,CAAC,iBAAiB,GAAA,CAAC,CACjD;iBACA,SAAS,CAAC,UAAA,iBAAiB,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAC9E,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,gBAAgB,GAAA,CAAC;iBACvC,IAAI,CACHA,gBAAM,CAAC,UAAA,gBAAgB,IAAI,OAAA,CAAC,CAAC,gBAAgB,GAAA,CAAC,CAC/C;iBACA,SAAS,CAAC,UAAA,gBAAgB,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAC7E,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,YAAY;iBAC7B,SAAS,CAAC,UAAA,MAAM,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAA,CAAC,CAC9E,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,sCAAO,GAAP;;;gBACE,KAAkB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAAzB,IAAM,GAAG,WAAA;oBACZ,GAAG,CAAC,WAAW,EAAE,CAAC;iBACnB;;;;;;;;;SACF;;;;gBAjQFrC,aAAU;;;gBAnBF,oBAAoB;gBAGpB,eAAe;;;ICFxB;QAAkC,6BAAkB;QAClD,mBACE,aAAgB,EAChB,kBAAsC,EACtC,OAAyB;YAH3B,YAKE,kBAAM,aAAa,CAAC,SAiBrB;YAfC,IAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAC5CuC,mBAAS,CAACC,mBAAc,CAAC,CAC1B,CAAC;YACF,IAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAChCC,cAAI,CAAC,UAAC,KAAQ,EAAE,MAAc;gBAC5B,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC/B,EACD,aAAa,CACd,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,CAAC,UAAC,KAAQ,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;;SAClD;wBACF;KAxBD,CAAkCL,oBAAkB;;;QCDlB,6BAAa;QAC7C,mBACU,WAA6B;;QAE7B,QAA4B;;QAEpC,MAAuB;YALzB,YAOE,iBAAO,SAIR;YAVS,iBAAW,GAAX,WAAW,CAAkB;YAE7B,cAAQ,GAAR,QAAQ,CAAoB;;YAOpC,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;SACtB;QAED,0BAAM,GAAN,UAAU,WAA4B;;YAEpC,IAAM,OAAO,GAAkB,IAAI,CAAC,MAAM,CAAC,IAAI,CAACE,aAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAElE,OAAO,OAAO,CAAC,IAAI,CAACI,8BAAoB,EAAE,CAAC,CAAC;SAC7C;QAED,wBAAI,GAAJ,UAAQ,QAAwB;YAC9B,IAAM,KAAK,GAAG,IAAI,SAAS,CAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;YAEtE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE1B,OAAO,KAAK,CAAC;SACd;QAED,4BAAQ,GAAR,UAAS,MAAc;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B;QAED,wBAAI,GAAJ,UAAK,MAAc;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B;;QAGD,yBAAK,GAAL,UAAM,GAAQ;YACZ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC7B;QAED,4BAAQ,GAAR;;SAEC;wBACF;KA7CD,CAAkCC,eAAa;;ICHxC,IAAM,mBAAmB,GAAqB;QACnD,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;KACV;;ICaD;QAAA;SA2DC;iCAAA;KAAA,IAAA;IAED,IAAM,YAAY,GAA2B,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAExE,IAAM,sBAAsB,GAAuB,MAAM,CAAC,MAAM,CACrE,IAAI,mBAAmB,EAAE,EACzB;QACE,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,mBAAmB;KACtC,CACF;;aC9Ee,wBAAwB,CAAC,IAAU,EACV,OAAoC;QAC3E,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QAED,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAEpE,OAAO,SAAS,CAAC,IAAI,EAAE,EAAC,GAAG,EAAE,CAAC,MAAM,EAAC,CAAC,CAAC;IACzC,CAAC;aAEe,mBAAmB,CAAC,OAAe,EAAE,iBAAyB;QAC5E,IAAI,iBAAiB,KAAK,CAAC,EAAE;YAC3B,OAAO,OAAO,CAAC;SAChB;QAED,IAAM,MAAM,GAAG,OAAO,GAAG,iBAAiB,GAAG,CAAC,CAAC;QAE/C,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;IAC1C,CAAC;aAEe,eAAe,CAAC,IAAU,EAAE,GAAS,EAAE,GAAS;QAC9D,IAAM,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACnE,IAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAEpE,OAAO,QAAQ,IAAI,QAAQ,CAAC;IAC9B,CAAC;aAEe,cAAc,CAAC,IAAU,EAAE,GAAS,EAAE,GAAS;QAC7D,IAAM,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,IAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAEnE,OAAO,QAAQ,IAAI,QAAQ,CAAC;IAC9B,CAAC;aAEe,cAAc,CAAC,IAAU,EAAE,aAAqB;QAC9D,IAAI,CAAC,aAAa,IAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACvE,OAAO,KAAK,CAAC;SACd;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,UAAC,YAAkB,IAAK,OAAA,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,GAAA,CAAC,CAAC;IACxF,CAAC;aAEe,aAAa,CAAC,IAAU,EAAE,YAAoB;QAC5D,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACnE,OAAO,KAAK,CAAC;SACd;QAED,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAC,WAAiB,IAAK,OAAA,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,GAAA,CAAC,CAAC;IACtF,CAAC;aAEe,2BAA2B,CAAC,KAAyB,EAAE,aAAiB;QAAjB,8BAAA,EAAA,iBAAiB;QACtF,IAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE3F,OAAO,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F;;aC1DgB,YAAY,CAC1B,OAAsB,EACtB,EAAqB;QAErB,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;QACpC,IAAM,MAAM,GAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC7B,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;aACjD;SACF;QAED,OAAO,MAAM,CAAC;IAChB;;aClBgB,gBAAgB,CAC9B,YAAkB,EAClB,OAAyB;QAEzB,IAAM,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAM,aAAa,GAAG;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,aAAA;YACX,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SAClB,CAAC;QACF,IAAM,UAAU,GAAG,YAAY,CAAO,aAAa,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,GAAA,CAAC,CAAC;QAEnE,OAAO;YACL,UAAU,YAAA;YACV,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ;;aCpBgB,kBAAkB,CAAC,YAA+B,EAC/B,aAAsC,EACtC,UAAkB;QACnD,OAAO;YACL,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,MAAM,CACrB;YACD,SAAS,EAAE,UAAU,CACnB,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;YACD,WAAW,EAAE,cAAc,CACzB,YAAY,CAAC,UAAU,EACvB,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,MAAM,CACrB;YACD,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC;YAClD,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,IAAY,EAAE,SAAiB,IAAK,QAAC;gBACvE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAC,IAAU,EAAE,QAAgB,IAAK,QAAC;oBAChD,IAAI,MAAA;oBACJ,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;oBACrE,UAAU,YAAA;oBACV,SAAS,WAAA;oBACT,QAAQ,UAAA;iBACT,IAAC,CAAC;aACJ,IAAC,CAAC;SACJ,CAAC;IACJ,CAAC;aAEe,cAAc,CAAC,UAAoB,EACpB,MAAc,EACd,MAAc;QAC3C,OAAO,UAAU,CAAC,GAAG,CACnB,UAAC,IAAY,IAAK,QAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,IAAC,CACvE,CAAC;IACJ,CAAC;aAEe,kBAAkB,CAAC,MAAc;QAC/C,IAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAClC,IAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAc,CAAC;QACrD,IAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAEhD,gBAAW,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,EAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE;IACnF;;aCnBgB,gBAAgB,CAC9B,cAAqC,EACrC,OAAgC;QAEhC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAmB;;YAE/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,GAAiB,EAAE,QAAgB;;gBAEpD,IAAM,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;gBAElE,IAAM,SAAS,GACb,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;;gBAE5D,IAAM,gBAAgB,GACpB,CAAC,YAAY;oBACb,OAAO,CAAC,aAAa;oBACrB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,IAAM,cAAc,GAClB,CAAC,YAAY;oBACb,OAAO,CAAC,aAAa;oBACrB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhD,IAAM,UAAU,GACd,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;oBAC3D,gBAAgB;oBAChB,cAAc,CAAC;gBAEjB,IAAM,SAAS,GACb,CAAC,YAAY;oBACb,OAAO,CAAC,aAAa;oBACrB,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBAEtE,IAAM,UAAU,GACd,OAAO,CAAC,UAAU;oBAClB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;oBACzC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;oBAC7C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;oBAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;gBAEhD,IAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC/B,IAAM,OAAO,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAElE,IAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB;qBACzE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE,GAAA,CAAC;qBAC5D,MAAM,CAAC,UAAC,aAAa,EAAE,YAAY,IAAK,OAAA,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,GAAA,EAAE,EAAE,CAAC;qBAC/E,IAAI,CAAC,GAAG,CAAC;uBACP,EAAE,CAAC;gBAER,IAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;qBACnE,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,GAAA,CAAC;qBAC7D,MAAM,CAAC,UAAC,aAAa,EAAE,YAAY,IAAK,OAAA,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,GAAA,EAAE,EAAE,CAAC;qBAC/E,IAAI,CAAC,GAAG,CAAC;uBACT,EAAE,CAAC;;gBAGR,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;oBACpC,YAAY,cAAA;oBACZ,SAAS,WAAA;oBACT,UAAU,YAAA;oBACV,gBAAgB,kBAAA;oBAChB,cAAc,gBAAA;oBACd,SAAS,WAAA;oBACT,UAAU,YAAA;oBACV,OAAO,SAAA;oBACP,aAAa,eAAA;oBACb,WAAW,aAAA;iBACZ,CAAC,CAAC;gBAEH,IACE,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;oBACxC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;oBAClC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;oBACpC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC,gBAAgB;oBAChD,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;oBAC5C,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;oBACpC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;oBAClC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa;oBAC1C,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EACtC;oBACA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;iBAC9B;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;;QAGH,cAAc,CAAC,aAAa;YAC1B,OAAO,CAAC,UAAU;iBACjB,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3E,cAAc,CAAC,cAAc;YAC3B,OAAO,CAAC,UAAU;iBACjB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa;oBACzC,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtD,cAAc,CAAC,gBAAgB,GAAG,eAAe,CAC/C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAC9C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,cAAc,CAAC,iBAAiB,GAAG,eAAe,CAChD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC7C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,SAAS,aAAa,CACpB,IAAU,EACV,aAAqB,EACrB,WAAiB;QAEjB,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC;SACd;QAED,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;YACpB,OAAO,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;SAC5D;QAED,IAAI,WAAW,EAAE;YACf,OAAO,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC;SACvD;QAED,OAAO,KAAK,CAAC;IACf;;aC/JgB,aAAa,CAAC,IAA2B,EAAE,OAA+B;QACxF,OAAO,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;IAC1C;;ICIA,IAAM,MAAM,GAAG,CAAC,CAAC;IACjB,IAAM,KAAK,GAAG,CAAC,CAAC;IAChB,IAAMC,OAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAEX,oBAAoB,CAClC,QAAc,EACd,aAAsC;QAEtC,IAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAM,aAAa,GAAG,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,WAAW,aAAA,EAAE,KAAK,SAAA,EAAE,CAAC;QAC5D,IAAM,WAAW,GAAG,YAAY,CAE9B,aAAa,EAAE,UAAA,IAAI,IAAI,QAAC;YACxB,IAAI,MAAA;YACJ,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;SACxE,IAAC,CAAC,CAAC;QAEJ,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,UAAU,CACnB,QAAQ,EACR,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;SACF,CAAC;IACJ;;aChBgB,kBAAkB,CAChC,aAAsC,EACtC,OAAiC;QAEjC,aAAa,CAAC,MAAM,CAAC,OAAO,CAC1B,UAAC,MAA+B,EAAE,QAAgB;YAChD,MAAM,CAAC,OAAO,CAAC,UAAC,KAA4B,EAAE,UAAkB;gBAC9D,IAAI,UAAmB,CAAC;gBACxB,IAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;gBAChE,IAAM,UAAU,GACd,OAAO,CAAC,UAAU;oBAClB,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEhE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;oBAClD,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,IAAI,CAAC,UAAU,EAAE;wBACf,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;qBAChE;iBACF;qBAAM;oBACL,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;iBAC5D;gBACD,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,SAAS,KAAK,EAAE;oBAC5C,SAAS,WAAA;oBACT,UAAU,YAAA;oBACV,UAAU,YAAA;iBACX,CAAC,CAAC;gBACH,IACE,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;oBACtC,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;oBACxC,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EACxC;oBACA,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;iBACvD;aACF,CAAC,CAAC;SACJ,CACF,CAAC;;QAGF,aAAa,CAAC,aAAa;YACzB,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC;QACzE,aAAa,CAAC,cAAc;YAC1B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa;gBAC1C,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC;QAEnD,aAAa,CAAC,gBAAgB,GAAG,cAAc,CAC7C,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EACxD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAC9C,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB;;IClEA,IAAMC,QAAM,GAAG,CAAC,CAAC;IACjB,IAAMC,OAAK,GAAG,CAAC,CAAC;IACT,IAAM,gBAAgB,GAAGD,QAAM,GAAGC,OAAK,CAAC;IACxC,IAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,IAAMF,OAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;aAEV,mBAAmB,CACjC,QAAc,EACd,aAAsC,EACtC,mBAA0B;QAE1B,IAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACxE,IAAM,aAAa,GAAG,EAAE,KAAK,SAAA,EAAE,MAAM,UAAA,EAAE,WAAW,aAAA,EAAE,KAAK,SAAA,EAAE,CAAC;QAC5D,IAAM,WAAW,GAAG,YAAY,CAE9B,aAAa,EAAE,UAAA,IAAI,IAAI,QAAC;YACxB,IAAI,MAAA;YACJ,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC;SACvE,IAAC,CAAC,CAAC;QACJ,IAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAEnE,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,EAAE;YACd,SAAS,WAAA;SACV,CAAC;IACJ,CAAC;IAED,SAAS,oBAAoB,CAAC,QAAc,EAAE,mBAA0B;QACtE,IAAI,mBAAmB;eAClB,QAAQ,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,WAAW,EAAE;eAC3D,QAAQ,CAAC,WAAW,EAAE,GAAG,mBAAmB,CAAC,WAAW,EAAE,GAAG,gBAAgB,EAAE;YAClF,OAAO,mBAAmB,CAAC;SAC5B;QAED,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,oBAAoB,CAC3B,WAAsC,EACtC,aAAsC;QAEtC,IAAM,IAAI,GAAG,UAAU,CACrB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EACtB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB,CAAC;QACF,IAAM,EAAE,GAAG,UAAU,CACnB,WAAW,CAACC,QAAM,GAAG,CAAC,CAAC,CAACC,OAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EACvC,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB,CAAC;QAEF,OAAU,IAAI,WAAM,EAAI,CAAC;IAC3B;;aC/CgB,iBAAiB,CAC/B,aAAqC,EACrC,OAAiC;QAEjC,aAAa,CAAC,KAAK,CAAC,OAAO,CACzB,UAAC,KAA8B,EAAE,QAAgB;YAC/C,KAAK,CAAC,OAAO,CAAC,UAAC,IAA2B,EAAE,SAAiB;gBAC3D,IAAI,UAAmB,CAAC;gBACxB,IAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC7D,IAAM,UAAU,GACd,OAAO,CAAC,UAAU;oBAClB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAE9D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;oBAClD,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,UAAU,EAAE;wBACf,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC9D;iBACF;qBAAM;oBACL,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;iBAC1D;gBAED,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,SAAS,IAAI,EAAE,EAAE,SAAS,WAAA,EAAE,UAAU,YAAA,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;gBACpF,IACE,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;oBACrC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;oBACvC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EACvC;oBACA,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;iBACrD;aACF,CAAC,CAAC;SACJ,CACF,CAAC;;QAGF,aAAa,CAAC,aAAa;YACzB,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC;QACvE,aAAa,CAAC,cAAc;YAC1B,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,aAAa;gBACzC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC;QAElD,aAAa,CAAC,gBAAgB,GAAG,cAAc,CAC7C,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,IAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,IAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAC9C,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACtD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB;;ICtEA;IA2BA;aACgB,oBAAoB,CAAC,KAA8B,EAC/B,MAAc;QADb,sBAAA,EAAA,8BAA8B;QAEjE,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,oBAAoB,CAAC,SAAS,EAAE;gBACnC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;aAChC;YAED,KAAK,oBAAoB,CAAC,MAAM,EAAE;gBAChC,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACrC;YAED,KAAK,oBAAoB,CAAC,IAAI,EAAE;gBAC9B,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACnC;YAED,KAAK,oBAAoB,CAAC,eAAe,EAAE;gBACzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC7C;YAED,KAAK,oBAAoB,CAAC,WAAW,EAAE;gBACrC,IAAM,OAAO,GAA0B,MAAM,CAAC,OAAO,CAAC;gBAEtD,IAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxD,IAAI,QAAQ,SAAA,CAAC;gBACb,IAAI,IAA2B,SAAA,CAAC;gBAChC,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;oBAClD,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;oBACxB,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,EAAE,CAAC;iBACrC;qBAAM;oBACL,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,EAAE,CAAC;iBACzD;gBAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;YAED,KAAK,oBAAoB,CAAC,eAAe,EAAE;gBACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;oBACjD,OAAO,KAAK,CAAC;iBACd;gBACD,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC5B,IAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,EAAE,CAAC;gBAE1C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;YAED,KAAK,oBAAoB,CAAC,KAAK,EAAE;gBAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;aAClE;YAED,KAAK,oBAAoB,CAAC,MAAM,EAAE;gBAChC,IAAM,QAAQ,GAAG;oBACf,YAAY,EAAE,MAAM,CAAC,OAAO;oBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC;gBAEF,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChD,IAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9D,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,CAAC;gBAE/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;YAED,KAAK,oBAAoB,CAAC,WAAW,EAAE;gBACrC,IAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;;gBAEhC,IAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnE,IAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK;uBAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;uBAC9E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrB,IAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxE,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,CAAC;;gBAE/B,IAAI,QAAQ,CAAC,KAAK,EAAE;;oBAElB,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;wBAC3B,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;qBACzC;;oBAGD,IAAI,QAAQ,CAAC,KAAK,YAAY,IAAI,EAAE;wBAClC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;qBACxC;;;iBAIF;gBAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;;YAGD,KAAK,oBAAoB,CAAC,YAAY,EAAE;gBACtC,IAAM,QAAQ,GAAG;oBACf,aAAa,EAAE,MAAM,CAAC,OAAO;oBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC;gBAEF,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrE,IAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9D,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,CAAC;gBAE/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3C;YAED,KAAK,oBAAoB,CAAC,YAAY,EAAE;gBACtC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC;aACJ;YACD,KAAK,oBAAoB,CAAC,YAAY,EAAE;gBACtC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC;aACJ;YACD,KAAK,oBAAoB,CAAC,eAAe,EAAE;gBACzC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC9B,UAAU,EAAE,MAAM,CAAC,OAAO;iBAC3B,CAAC,CAAC;aACJ;YACD,KAAK,oBAAoB,CAAC,uBAAuB,EAAE;gBACjD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC9B,iBAAiB,EAAE,MAAM,CAAC,OAAO;iBAClC,CAAC,CAAC;aACJ;YACD,KAAK,oBAAoB,CAAC,sBAAsB,EAAE;gBAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC9B,gBAAgB,EAAE,MAAM,CAAC,OAAO;iBACjC,CAAC,CAAC;aACJ;YAED;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,KAAyB;;QAEjD,IAAM,aAAa,GAAG,CAAC,KAAK,CAAC,oBAAoB;YAC/C,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;;QAG9F,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAE/B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;YAC7B,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAC/C;YAED,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;YACjF,IAAM,WAAW,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAC7C,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,aAAa,EAAE,UAAU,EAAE,EAAE;;gBAEjE,WAAW,CAAC,UAAU,CAAC,GAAG,gBAAgB,CACxC,QAAQ,EACR,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aAC9C;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YAC/B,IAAM,cAAc,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;gBAEA,cAAc,CAAC,aAAa,CAAC,GAAG,oBAAoB,CAClD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;gBACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7C;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;SACrD;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YAC9B,IAAM,kBAAkB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAEpD,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;gBAEA,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAmB,CACrD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,EACvB,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,SAAS,CACzF,CAAC;gBACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;aAC5D;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,oBAAA,EAAE,CAAC,CAAC;SACzD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,aAAa,CAAC,KAAyB,EACzB,MAAc;QACnC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;YAC7B,IAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,UAAU,IAC9D,OAAA,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAA,CAC/D,CAAC;YAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,iBAAA,EAAE,CAAC,CAAC;SACtD;;QAGD,IAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;;;QAG1C,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAE/B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YAC/B,IAAM,cAAc,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;gBAEA,cAAc,CAAC,aAAa,CAAC,GAAG,oBAAoB,CAClD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;gBACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7C;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;SACrD;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YAC9B,IAAM,kBAAkB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YACpD,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;gBAEA,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAmB,CACrD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;gBACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;aAC9C;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,oBAAA,EAAE,CAAC,CAAC;SACzD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,WAAW,CAAC,KAAyB,EACzB,MAAc;QACjC,IAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;QACjH,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;YAC7B,IAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAC7C,UAAC,cAAc,EAAE,UAAU,IACzB,OAAA,gBAAgB,CAAC,cAAc,EAAE;gBAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,aAAa,eAAA;gBACb,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,UAAU,YAAA;aACX,CAAC,GAAA,CACL,CAAC;YAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,eAAA,EAAE,CAAC,CAAC;SACpD;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YAC/B,IAAM,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CACpD,UAAC,cAAc,EAAE,UAAU,IACzB,OAAA,kBAAkB,CAAC,cAAc,EAAE;gBACjC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,aAAa,eAAA;gBACb,UAAU,YAAA;aACX,CAAC,GAAA,CACL,CAAC;YAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,qBAAqB,uBAAA,EAAE,CAAC,CAAC;SAC5D;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YAC9B,IAAM,oBAAoB,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CACvD,UAAC,cAAc,EAAE,SAAS,IACxB,OAAA,iBAAiB,CAAC,cAAc,EAAE;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,aAAa,eAAA;gBACb,SAAS,WAAA;aACV,CAAC,GAAA,CACL,CAAC;YAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,oBAAoB,sBAAA,EAAE,CAAC,CAAC;SAC3D;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,qBAAqB,CAAC,KAAyB,EAAE,MAAc;QACtE,IAAM,QAAQ,GAAG;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACrB,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;aACnC;SACF,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,aAAa,CAAC,KAAyB,EAAE,MAAc;QAC9D,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC1D,IAAM,WAAW,GAAG,2BAA2B,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1D,IAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAEvE,OAAO,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,gBAAgB,CAAC,KAAyB;QACjD,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YAEpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;YAE1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;YAE1B,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;IAED;;;;;;IAMA,SAAS,WAAW,CAAC,QAAuB,EAAE,OAAa,EAAE,OAAa;QACxE,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAE/D,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;YAC7C,OAAO,OAAO,CAAC;SAChB;QAED,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;YAC9C,OAAO,OAAO,CAAC;SAChB;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,iBAAiB,CAAC,QAAc,EAAE,OAAa,EAAE,OAAa;QACrE,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAO,IAAI,OAAO,IAAK,OAAO,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE;YACpE,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf;;;QC/ZwC,sCAA6B;QACnE;YAAA,iBAUC;YATC,IAAM,WAAW,GAAG,IAAIV,oBAAe,CAAS;gBAC9C,IAAI,EAAE,8BAA8B;aACrC,CAAC,CAAC;YACH,IAAM,KAAK,GAAG,IAAI,SAAS,CACzB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,CACrB,CAAC;YACF,QAAA,kBAAM,WAAW,EAAE,oBAAoB,EAAE,KAAK,CAAC,SAAC;;SACjD;;KAXH,CAAwC,SAA6B;;gBADpEpC,aAAU;;;;;QCsB0C,mDAA8B;QAWjF,yCACU,SAAoB,EACpB,OAA4B,EAC5B,MAA0B,EAC1B,QAAoB,EACpB,QAA8B,EACtC,QAA8B,EACtB,gBAAoC;YAP9C,YASE,iBAAO,SAKR;YAbS,eAAS,GAAT,SAAS,CAAW;YACpB,aAAO,GAAP,OAAO,CAAqB;YAC5B,YAAM,GAAN,MAAM,CAAoB;YAC1B,cAAQ,GAAR,QAAQ,CAAY;YACpB,cAAQ,GAAR,QAAQ,CAAsB;YAE9B,sBAAgB,GAAhB,gBAAgB,CAAoB;YAX9C,iBAAW,GAAuB,IAAI+C,eAAY,EAAQ,CAAC;YAC3D,oBAAc,GAAG,MAAM,CAAC;YAExB,WAAK,GAAmB,EAAE,CAAC;YAWzB,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;;SACpE;QAtBD,sBAAI,kDAAK;iBAAT,UAAU,KAAW;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC/B;;;WAAA;QAsBD,kDAAQ,GAAR;YAAA,iBAoDC;YAnDC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;gBAC/D,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM;iBACzB,IAAI,CACHC,cAAI,CAAC,CAAC,CAAC,CACR;iBACA,SAAS,CAAC;gBACT,KAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAEhC,IAAI,KAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC3B,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;oBAE3E,OAAO;iBACR;gBAED,KAAI,CAAC,cAAc,GAAG,YAAY,CAAC;aACpC,CAAC,CAAC;YAEL,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC7D,IAAI,CAAC,QAAQ;iBACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;iBAEjB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;iBAExB,WAAW,CAAC,IAAI,CAAC;;iBAEjB,gBAAgB,CAAC,IAAI,CAAC;iBACtB,6BAA6B,EAAE,CAAC;;;YAInC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;;iBAER,MAAM,CAAC,UAAC,KAAU,IAAK,OAAA,KAAK,CAAC,YAAY,GAAA,CAAC;;iBAE1C,SAAS,CAAC,UAAC,IAAS,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAA,CAAC,CACzD,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SAC5E;QAED,sBAAI,0DAAa;iBAAjB;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC9D;;;WAAA;QAED,+DAAqB,GAArB;YACE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SAChC;QACD,yDAAe,GAAf,UAAgB,GAAiB;SAEhC;QACD,0DAAgB,GAAhB,UAAiB,GAAiB;YAChC,IAAI,CAAC,GAAG,EAAE;gBACT,OAAO;aACP;YAED,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAEpG,IAAI,UAAU,EAAE;gBACd,OAAO;aACR;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SACtD;QAED,4DAAkB,GAAlB,UAAmB,GAA0B;YAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,IAAI,EAAE;oBACJ,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBACzB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC5B;gBACD,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;SACH;QAED,2DAAiB,GAAjB,UAAkB,GAA0B;YAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC5B;gBACD,QAAQ,EAAE,OAAO;aAClB,CAAC,CACH,CAAC;SACH;QAED,kDAAQ,GAAR;YACE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;SACxD;QAED,mDAAS,GAAT;YACE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;SACvD;QACD,gDAAM,GAAN;YACE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACzE;QACD,qDAAW,GAAX;;;gBACE,KAAkB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAAzB,IAAM,GAAG,WAAA;oBACZ,GAAG,CAAC,WAAW,EAAE,CAAC;iBACnB;;;;;;;;;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACzB;;KAvJH,CAAqD,8BAA8B;;gBAZlFC,YAAS,SAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;oBACrD,23GAAwC;oBACxC,IAAI,EAAE;wBACJ,KAAK,EAAE,QAAQ;wBACf,SAAS,EAAE,0BAA0B;wBACrC,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,UAAU;qBACzB;oBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;iBAClC;;;gBA3BgEC,YAAS;gBAUjE,mBAAmB;gBAInB,kBAAkB;gBAdPpB,aAAU;gBAYrB,oBAAoB;gBACpB,oBAAoB;gBAPpB,kBAAkB;;;ICJ3B;QAAA;SAGC;6BAAA;KAAA;;ICLD;QAIE,iBAAY,IAAY,EAAE,KAAc;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;SAC5B;QAED,0BAAQ,GAAR;YACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;SAC1D;sBACF;KAAA;;ICKD,IAAM,eAAe,GAAG;QACtB,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QAChC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAC/B,CAAC;IAEF;aACgB,aAAa,CAAC,QAAgB,EAAE,OAA8B;QAA9B,wBAAA,EAAA,yBAA8B;QAC5E,IAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QAEhD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,CAAC;SACX;QAED,IAAM,cAAc,GAAG,eAAe;aACnC,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,UAAC,OAAe,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAA,CAAC;aAC5C,GAAG,CAAC,UAAC,WAAqB;YACzB,IAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;YAErD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC,CAAC;QAEL,IAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,UAAC,WAAoB,IAChE,OAAA,WAAW,CAAC,QAAQ,EAAE,GAAA,CACvB,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC7E;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;aAEe,gBAAgB,CAAC,QAAmB;IACnB;IACA,MAAW,EACX,QAAgB,EAChB,MAAuB,EACvB,MAAuB,EACvB,QAAyB;QACxD,IAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;;QAE/C,IAAM,SAAS,GAAU,EAAE,CAAC;QAE5B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;QAED,cAAc,CAAC,OAAO,CAAC,UAAC,OAAgB;YACtC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;gBAClC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAEhE,OAAO;aACR;YAED,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAC/C,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,CAAC,OAAO,CAAC,UAAC,aAAuB,IAAK,OAAA,aAAa,EAAE,GAAA,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;aAEe,kBAAkB,CAAC,QAAmB,EACnB,OAAsB;QACvD,IAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;;QAE9B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;;;QAID,IAAM,SAAS,GAAU,EAAE,CAAC;;QAG5B,IAAM,aAAa,GAAe,EAAE,CAAC;QACrC,IAAM,YAAY,GAAG;;YAEnB,aAAa,CAAC,OAAO,CAAC,UAAC,EAAY,IAAK,OAAA,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAA,CAAC,CAAC;;YAE9D,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1B,CAAC;;QAGF,cAAc,CAAC,OAAO,CAAC,UAAC,OAAgB;YACtC,IAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC;YACjD,IAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAEzD,IAAI,CAAC,SAAS,EAAE;gBACd,aAAa,CAAC,IAAI,CAAC,cACjB,OAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAA,CACrD,CAAC;aACH;YAED,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,cAAM,OAAA,MAAM,CAAC,YAAY,CAAC,GAAA,CAAC,CAClE,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,CAAC,OAAO,CAAC,UAAC,aAAuB,IAAK,OAAA,aAAa,EAAE,GAAA,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;aAEe,oBAAoB,CAAC,QAAmB,EACnB,OAAsB;QACzD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;;QAGD,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,UAAC,KAAU;YACrD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO,SAAS,CAAC;aAClB;YACD,IACE,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC,EAC7D;gBACA,OAAO,SAAS,CAAC;aAClB;YAED,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB,CAAC,CAAC;IACL,CAAC;aAEe,gBAAgB,CAAC,QAAmB,EACnB,OAAsB;QACrD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,UAAC,KAAU;YACzD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO,SAAS,CAAC;aAClB;YACD,IACE,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC,EAC7D;gBACA,OAAO,SAAS,CAAC;aAClB;YAED,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB,CAAC,CAAC;IACL;;IC3KA;;;;;;;IAQA;;;IAGA,IAAM,GAAG,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,EAAS,CAAC;IAG5D,IAAMqB,UAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAM,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,cAAM,OAAA,GAAG,CAAC,EAAE,EAAE,GAAA,GAAG,cAAW,OAAA,IAAI,GAAA,CAAC;IACrD,IAAM,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7D,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,IAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACxC,IAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAM,aAAa,GAAG,GAAG,CAAC,aAAa;;ICtB9C,IAAI,cAA6B,CAAC;IAElC,SAAS,eAAe;QACtB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;QACD,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACxC,CAAC;aAEe,QAAQ,CAAC,KAAoB;QAC3C,cAAc,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;aACgB,KAAK;QACnB,IAAI,OAAOC,GAAM,KAAK,WAAW,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAOA,GAAM,CAAC,OAAO,KAAK,WAAW,EAAE;YACzC,IAAI,cAAc,EAAE;gBAClB,OAAO,cAAc,KAAK,KAAK,CAAC;aACjC;YACD,cAAc,GAAG,eAAe,EAAE,CAAC;YAEnC,OAAO,cAAc,KAAK,KAAK,CAAC;SACjC;QAED,OAAOA,GAAM,CAAC,OAAO,KAAK,KAAK,CAAC;IAClC;;ICzCA;QAAA;YACE,WAAM,GAAG,CAAC,CAAC;YAOD,YAAO,GAAQ,EAAE,CAAC;;SAkR7B;QAhRC,wBAAG,GAAH,UAAI,QAAgB;YAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,OAAO,KAAK,CAAC,CAAC;aACf;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC7C,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,OAAO,CAAC,KAAK,CAAC;SACtB;QAED,wBAAG,GAAH,UAAI,KAAQ,EAAE,QAA8B;YAA9B,yBAAA,EAAA,WAAmB,IAAI,CAAC,MAAM;YAC1C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;;YAGD,IAAM,IAAI,GAAQ;gBAChB,KAAK,OAAA;gBACL,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;aACpB,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;iBAAM;gBACL,IAAI,QAAQ,KAAK,CAAC,EAAE;;oBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;qBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;;oBAEnC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;qBAAM;;oBAEL,IAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACvD,IAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC;oBAEjD,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAEhC,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC;oBACpC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;iBAC7B;aACF;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC1C;QAED,2BAAM,GAAN,UAAO,QAAY;YAAZ,yBAAA,EAAA,YAAY;YACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAI,QAAQ,KAAK,CAAC,EAAE;;gBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAE3B,IAAI,IAAI,CAAC,IAAI,EAAE;;oBAEb,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;iBAChC;qBAAM;;oBAEL,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;iBACvB;aACF;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;aAC5B;iBAAM;;gBAEL,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3C,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;gBACjD,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;aAC9C;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC1C;QAED,wBAAG,GAAH,UAAI,QAAgB,EAAE,KAAQ;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC1C;QAED,4BAAO,GAAP;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;QAGD,4BAAO,GAAP,UAAQ,EAAO;YACb,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;;YAExB,IAAM,MAAM,GAAU,EAAE,CAAC;YACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBAC5B,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,OAAA,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,CAAC,CAAC;iBAC5C;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;;QAGD,yBAAI,GAAJ;YAAA,iBAOC;YAPI,cAAY;iBAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;gBAAZ,yBAAY;;;YAEf,IAAI,CAAC,OAAO,CAAC,UAAC,GAAQ;gBACpB,KAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACf,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,wBAAG,GAAH;YACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAO,SAAS,CAAC;aAClB;YACD,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE7B,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,4BAAO,GAAP;YAAA,iBAQC;YARO,cAAY;iBAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;gBAAZ,yBAAY;;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;;YAEf,IAAI,CAAC,OAAO,CAAC,UAAC,GAAQ;gBACpB,KAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAClB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,0BAAK,GAAL;YACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAO,SAAS,CAAC;aAClB;YACD,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,OAAO,QAAQ,CAAC;SACjB;;QAGD,4BAAO,GAAP,UAAQ,EAAO;YACb,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;SACF;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;oBAC3B,QAAQ,GAAG,KAAK,CAAC;oBACjB,MAAM;iBACP;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,QAAQ,CAAC;SACjB;;QAGD,yBAAI,GAAJ,UAAK,EAAO;YACV,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE;gBACzB,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACrB,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;iBACP;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;;QAGD,0BAAK,GAAL,UAAM,EAAO;YACX,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,OAAO,OAAO,IAAI,MAAM,EAAE;gBACxB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,MAAM,GAAG,KAAK,CAAC;iBAChB;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;QAED,6BAAQ,GAAR;YACE,OAAO,eAAe,CAAC;SACxB;;QAGD,yBAAI,GAAJ,UAAK,EAAO;YACV,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,MAAS,CAAC;YACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBAC5B,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;oBACvB,MAAM;iBACP;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;;QAGD,8BAAS,GAAT,UAAU,EAAO;YACf,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,MAAc,CAAC;YACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBAC5B,MAAM,GAAG,KAAK,CAAC;oBACf,MAAM;iBACP;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;;QAGS,4BAAO,GAAP,UAAQ,QAAgB;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC7C,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,OAAO,CAAC;SAChB;QAES,sDAAiC,GAAjC;;YAER,IAAM,QAAQ,GAAU,EAAE,CAAC;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,OAAO,OAAO,EAAE;gBACd,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;yBAGF;KAAA;;IC1RD;IACA;aACgB,QAAQ,CAAC,YAAkB;QACzC,IAAM,KAAK,GAAG,QAAQ,CAAC;;QAGvB,OAAO,SAAS,eAAe,CAAC,MAAW,EAAE,WAAmB;YAC9D,IAAM,IAAI,GAAG,QAAM,WAAW,UAAO,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;;gBAEzC,GAAG;oBACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnB;;gBAED,GAAG,YAAC,KAAU;oBACZ,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBACnB,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE;wBACpD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACvC;iBACF;aACF,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IACD;;ICtBA;QAAA;SAqBC;;QAnBQ,YAAM,GAAb,UAAc,OAAY;;YAExB,CAAC,UAAC,EAAO,IAAW,OAAA,EAAE,GAAA,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;SAC/C;;;QAIM,eAAS,GAAhB,UAAiB,IAAS;;;;YAIxB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAE1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACzB,IAAI,GAAGA,GAAM,CAAC;aACf;YAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACpC;oBACF;KAAA;;ICtBD,IAAM,aAAa,GAA+B,EAAE,CAAC;IACrD,IAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC;aAExD,QAAQ,CAAC,GAAW;QAClC,IAAI,CAACC,YAAS,EAAE,IAAI,QAAQ,IAAI,GAAG,IAAI,aAAa,EAAE;YACpD,OAAO;SACR;QAED,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;QAE1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB;;ICVA;QAOE;;QAEE,KAAY,EACZ,OAAiB;;QAEjB,YAAgC;YAEhC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SAClC;yBACF;KAAA;;ICpBD;IAiCA;;;;;;;QA6DE,yBACU,iBAAmC,EACnC,SAAoB,EACpB,WAAuB,EACvB,SAAmB,EACnB,yBAAmD,EACnD,OAAe,EACf,eAA+B,EAC/B,WAA+B;YAP/B,sBAAiB,GAAjB,iBAAiB,CAAkB;YACnC,cAAS,GAAT,SAAS,CAAW;YACpB,gBAAW,GAAX,WAAW,CAAY;YACvB,cAAS,GAAT,SAAS,CAAU;YACnB,8BAAyB,GAAzB,yBAAyB,CAA0B;YACnD,YAAO,GAAP,OAAO,CAAQ;YACf,oBAAe,GAAf,eAAe,CAAgB;YAC/B,gBAAW,GAAX,WAAW,CAAoB;YApEzC,iBAAY,GAAuB,IAAIN,eAAY,EAAE,CAAC;;YAEtD,YAAO,GAAsB,IAAIA,eAAY,EAAE,CAAC;;YAEhD,iBAAY,GAAsB,IAAIA,eAAY,EAAE,CAAC;YACrD,aAAQ,GAAsB,IAAIA,eAAY,EAAE,CAAC;YAMzC,eAAU,GAAqB,EAAE,CAAC;YAgBlC,cAAS,GAAG,KAAK,CAAC;;;;YAgBlB,6BAAwB,GAAG,MAAM,CAAC;YAQlC,gBAAW,GAAkB,EAAE,CAAC;YAChC,oBAAe,GAAG,QAAQ,CAAC,SAAS,CAAC;SAiBxC;QAlDL,sBAAI,oCAAO;iBAAX;gBACE,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;aAC7B;;;WAAA;QA8CD,gCAAM,GAAN,UAAO,QAAiB;YACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,yBAAyB;iBACpD,uBAAuB,CAAI,QAAQ,CAAC,CAAC;YAExC,OAAO,IAAI,CAAC;SACb;;QAGD,4BAAE,GAAF,UAAG,SAA+B;YAChC,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;YAE7C,OAAO,IAAI,CAAC;SACb;QAED,kCAAQ,GAAR,UAAS,IAAyB;YAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;;YAErD,IAAI,CAAC,WAAW,GAAI,IAAI,CAAC,MAAqB,IAAI,IAAI,CAAC,WAAW,CAAC;YAEnE,OAAO,IAAI,CAAC;SACb;QAED,iCAAO,GAAP,UAAQ,QAAwB;YAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE/B,OAAO,IAAI,CAAC;SACb;;QAID,8BAAI,GAAJ,UAAK,IAUC;YAVD,qBAAA,EAAA,SAUC;YAGJ,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAEtF,IAAM,QAAQ,GAAGO,WAAQ,CAAC,MAAM,CAAC;oBAC/B,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,MAAM,EAAE,IAAI,CAAC,SAAS;iBACvB,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAErF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;;gBAG7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAEjD,IAAI,IAAI,CAAC,SAAS,YAAYxB,aAAU,EAAE;oBACxC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,CACtC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAC1C,CAAC;iBACH;gBAED,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;oBACzE,IAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;wBACtC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAE9E,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;iBACxE;gBAED,IACE,CAAC,IAAI,CAAC,SAAS;oBACf,IAAI,CAAC,WAAW;oBAChB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,EAC5C;oBACA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAC1C,CAAC;iBACH;;;;;gBAMD,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC;oBAC9D,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;oBAC/D,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;iBACjE;gBACD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBACpD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBAGrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC5E;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAE7B,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;QAED,8BAAI,GAAJ,UAAK,EAAkB;YACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEpE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEpD,IAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC9D,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBACjC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aACzC;YAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBACtD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CACzD,CAAC;aACH;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aACpC;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAA,EAAE,GAAG,IAAI,CAAC,CAAC;YAEvC,OAAO,IAAI,CAAC;SACb;QAED,gCAAM,GAAN;YACE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO;aACR;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QAED,iCAAO,GAAP;YACE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;YAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC/B;SACF;QAED,gCAAM,GAAN,UAAO,UAAyB;YAAhC,iBA0BC;YAzBC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACpD,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAExE,IAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,cACpC,OAAA,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,KAAK,KAAI,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;YAC1D,IAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,UAAC,YAAsB;gBAC3D,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1E,YAAY,EAAE,CAAC;aAChB,CAAC,CAAC;YAEH,IAAM,MAAM,GAAG,UAAC,YAAsB;gBACpC,KAAI,CAAC,OAAO,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;aAC5C,CAAC;YAEF,IAAI,CAAC,sBAAsB,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC/D,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,IAAI,MAAA;gBACJ,IAAI,MAAA;gBACJ,MAAM,QAAA;aACP,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACb;QAED,+CAAqB,GAArB;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;aAC7B;SACF;QAED,sCAAY,GAAZ,UACE,IAAsB;;QAEtB,QAA0B;YAE1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAExD,OAAO,IAAI,CAAC;SACb;QAED,+CAAqB,GAArB;YAAA,iBAuBC;YAtBC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBACvD,OAAO;aACR;;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBACjC,IAAM,QAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACzD,UAAU,CAAC;oBACT,KAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,KAAI,CAAC,SAAS,EAAE;wBAC1D,OAAO,EAAE,CAAC,QAAM,EAAE,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC;wBACjD,YAAY,EAAE,KAAI,CAAC,WAAW,CAAC,YAAY;wBAC3C,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAA;qBACpC,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;gBAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACzD,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE;oBACtD,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;oBACjD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;oBACvC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAA;iBACpC,CAAC,CAAC;aACJ;SACF;QAED,2CAAiB,GAAjB;YACE,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;QAEO,+CAAqB,GAArB;YAAA,iBAqBP;YApBC,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC9C,OAAO;aACR;YAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACrB,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;oBACxB,OAAO,EAAE,KAAI,CAAC,aAAa,CAAC,QAAQ;oBACpC,MAAM,EAAE,KAAI,CAAC,WAAW;oBACxB,UAAU,EAAE,KAAI,CAAC,UAAU;oBAC3B,YAAY,EAAE,KAAI,CAAC,SAAS,KAAK,MAAM;iBACxC,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvD,IAAI,CAAC,KAAI,CAAC,aAAa,EAAE;oBACvB,OAAO;iBACR;gBAED,KAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;aACjC,CAAC,CAAC;SACJ;QAEO,iDAAuB,GAAvB;YACN,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,OAAO;aACR;YAED,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;QAEO,wCAAc,GAAd;;QAEN,OAAwC;;QAExC,OAAa;;QAEb,YAAkB;YAElB,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;aAC3B;YAED,IAAI,OAAO,YAAYyB,cAAW,EAAE;gBAClC,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,IAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB;yBACpC,kBAAkB,CAAiB,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxD,QAAQ,CAAC,YAAY,EAAE,CAAC;oBAExB,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;iBACvD;gBACD,IAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAEzC,OAAO,IAAI,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;aACrD;YAED,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;gBACjC,IAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAC/E,OAAO,CACR,CAAC;gBAEF,IAAM,oBAAoB,GAAGD,WAAQ,CAAC,MAAM,CAAC;oBAC3C,SAAS,EAAE,IAAI,CAAC,UAAU;oBAC1B,MAAM,EAAE,IAAI,CAAC,SAAS;iBACvB,CAAC,CAAC;gBAEH,IAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACrE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAEvD,OAAO,IAAI,UAAU,CACnB,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EACvC,YAAY,CAAC,QAAQ,EACrB,YAAY,CACb,CAAC;aACH;YAED,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAG,OAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE;8BACF;KAAA;;;QC9ZC,gCAAoB,yBAAmD,EACnD,OAAe,EACf,SAAmB,EACnB,WAA+B,EAC/B,eAA+B;YAJ/B,8BAAyB,GAAzB,yBAAyB,CAA0B;YACnD,YAAO,GAAP,OAAO,CAAQ;YACf,cAAS,GAAT,SAAS,CAAU;YACnB,gBAAW,GAAX,WAAW,CAAoB;YAC/B,oBAAe,GAAf,eAAe,CAAgB;SAAI;;;;;;;QAQvD,6CAAY,GAAZ,UAAgB,WAAuB,EACvB,iBAAmC,EACnC,SAAoB;YAClC,OAAO,IAAI,eAAe,CACxB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,yBAAyB,EAC9B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,CACjB,CAAC;SACH;;;;gBA3BFtD,aAAU;;;gBANOwD,2BAAwB;gBACxC9B,SAAM;gBAD4D4B,WAAQ;gBAInE,kBAAkB;gBAJzBG,iBAAc;;;;QCsJd,gCAAmB,OAA4B,EAC1B,WAAuB,EACvB,SAAoB,EAC7B,iBAAmC,EACnC,GAA2B;YAJpB,YAAO,GAAP,OAAO,CAAqB;YAC1B,gBAAW,GAAX,WAAW,CAAY;YACvB,cAAS,GAAT,SAAS,CAAW;;;;YArIhC,cAAS,GAAwC,QAAQ,CAAC;;;;;YAK1D,aAAQ,GAAG,OAAO,CAAC;;;;YAInB,iBAAY,GAAG,IAAI,CAAC;;;;YAIpB,cAAS,GAAG,MAAM,CAAC;YAEnB,eAAU,GAAG,IAAI,CAAC;;;;YAuGjB,kBAAa,GAAuB,IAAIV,eAAY,EAAE,CAAC;YAMvD,UAAK,GAAmB,EAAE,CAAC;YAKpB,sBAAiB,GAAG,IAAI3B,YAAO,EAAU,CAAC;;YAQzD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,IAAIgB,oBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjD;QA9HD,sBACI,0CAAM;;;;iBADV;gBAEE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;aACjC;iBAED,UAAW,KAAc;gBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;;;WAJA;QAuBD,sBACI,2CAAO;;;;iBADX,UACY,KAAW;gBACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE;oBACzE,OAAO;iBACR;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;oBAC3B,IAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;oBAEvB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;oBAC7C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;oBACnC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;oBACnC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAChC;gBAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;;;WAAA;QAKD,sBAAa,6CAAS;iBAKtB;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;;iBAPD,UAAuB,SAAuC;gBAC5D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;aACrE;;;WAAA;QAgDD,sBAAI,oDAAgB;iBAApB;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;aAC/B;;;WAAA;QA0BD,yCAAQ,GAAR;YAAA,iBASC;YARC,IAAI,CAAC,UAAU,GAAG,IAAIhB,YAAO,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,IAAI,EAAE,GAAA;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,4CAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACzD,OAAO;aACR;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;aACrD;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;aACrD;YAED,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAC/D;YAED,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;aACjE;YAED,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAC/D;YAED,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;aAC3D;YAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;aACzE;YAED,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;aACvE;SACF;QAED,gDAAe,GAAf;YAAA,iBAMC;YALC,IAAI,CAAC,OAAO,CAAC,IAAI,CACfiB,gBAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,KAAK,KAAI,CAAC,MAAM,GAAA,CAAC,EACxCqB,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;iBACA,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,EAAE,GAAA,CAAC,CAAC;SACjC;;;;;QAMD,qCAAI,GAAJ;YAAA,iBA4BC;YA3BC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC5B,OAAO;aACR;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;iBACnC,OAAO,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;iBAC/D,MAAM,CAAC,+BAA+B,CAAC;iBACvC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;iBAClB,QAAQ,CAAC,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC;iBACtC,IAAI,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;;YAGrC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAW;gBACvC,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;aAC5C,CAAC,CACH,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAC,KAAW;gBAC7D,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,KAAI,CAAC,IAAI,EAAE,CAAC;aACb,CAAC,CACH,CAAC;SACH;;;;;QAMD,qCAAI,GAAJ;;YACE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aACzB;;gBACD,KAAkB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAAzB,IAAM,GAAG,WAAA;oBACZ,GAAG,CAAC,WAAW,EAAE,CAAC;iBACnB;;;;;;;;;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aAC1E;SACF;;;;;QAMD,uCAAM,GAAN;YACE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;aACpB;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;;;;QAKD,0CAAS,GAAT;YACE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC7D,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;gBAChF,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB;gBAC/F,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB;gBAC5F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa;gBACnF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;gBAChF,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;aAClE,CAAC,CAAC;SACJ;QAED,4CAAW,GAAX;YACE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;aAC5B;SACF;;;;gBA7SFC,YAAS,SAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,eAAe;iBAC1B;;;gBANQ,mBAAmB;gBAPD7B,aAAU;gBACRoB,YAAS;gBAAiBU,mBAAgB;gBAE7C,sBAAsB;;;4BAe7CC,QAAK;2BAKLA,QAAK;+BAILA,QAAK;4BAILA,QAAK;6BAELA,QAAK;yBAKLA,QAAK;0BAaLC,SAAM;2BAKNA,SAAM;0BAQND,QAAK;4BAsBLA,QAAK;6BAWLA,QAAK;0BAILA,QAAK;0BAILA,QAAK;0BAKLA,QAAK;+BAKLA,QAAK;gCAKLA,QAAK;+BAILA,QAAK;oCAILA,QAAK;mCAILA,QAAK;gCAILC,SAAM;;;;QCpIsC,6CAAmB;QAAlE;;;;KAAA,CAA+C,mBAAmB;;;gBAHjE9D,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;QCe0D,yDAA+B;QAGxF,+CACE,SAAoB,EACpB,OAA4B,EAC5B,MAA0B,EAC1B,QAAoB,EACpB,QAA8B,EAC9B,QAA8B,EAC9B,mBAAuC;YAPzC,YASE,kBAAM,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,SAIrF;YAFC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;;SAClE;;KAhBH,CAA2D,+BAA+B;;gBATzFiD,YAAS,SAAC;oBACT,QAAQ,EAAE,iCAAiC;oBAC3C,SAAS,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;oBACrD,23GAAwC;oBACxC,IAAI,EAAE;wBACJ,SAAS,EAAE,0BAA0B;qBACtC;oBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;iBAClC;;;gBAnBkDC,YAAS;gBAInD,mBAAmB;gBAEnB,kBAAkB;gBANPpB,aAAU;gBAGrB,oBAAoB;gBAEpB,oBAAoB;gBAGpB,kBAAkB;;;;QC4EzB,sCACS,OAAkC,EACjC,WAAuB,EAC/B,SAAoB,EACpB,iBAAmC,EACnC,GAA2B;YAJpB,YAAO,GAAP,OAAO,CAA2B;YACjC,gBAAW,GAAX,WAAW,CAAY;;;;YATvB,kBAAa,GAAuB,IAAIiB,eAAY,EAAE,CAAC;YAEvD,UAAK,GAAmB,EAAE,CAAC;;YAanC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;SACH;QA3ED,sBACI,iDAAO;;;;iBADX,UACY,KAAW;gBACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;oBAC3B,OAAO;iBACR;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;oBAC3B,IAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;oBAEvB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;oBAC7C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;oBACnC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;oBACnC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAChC;gBAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;;;WAAA;QA4DD,+CAAQ,GAAR;YAAA,iBAgBC;YAfC,IAAI,CAAC,SAAS,EAAE,CAAC;;YAGjB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAW;gBACvC,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;aAC5C,CAAC,CACH,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAC,KAAW;gBAC7D,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB,CAAC,CACH,CAAC;SACH;QAED,kDAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACzD,OAAO;aACR;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBACpD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBACpD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;gBAChE,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;aACpD;YAED,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACxE,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACtE,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;SACF;;;;QAKD,gDAAS,GAAT;YACE,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aACzB;YAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC7D,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB;gBAC/F,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB;gBAC5F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa;gBACnF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;aACjF,CAAC,CAAC;YAGH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;iBACnC,OAAO,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;iBAC/D,MAAM,CAAC,qCAAqC,CAAC;iBAC7C,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;iBACpB,IAAI,EAAE,CAAC;SACX;QAED,kDAAW,GAAX;YACE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAC5B;;;;gBA9KFY,YAAS,SAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,QAAQ,EAAE,qBAAqB;iBAChC;;;gBAPQ,yBAAyB;gBATP7B,aAAU;gBACRoB,YAAS;gBAAiBU,mBAAgB;gBAG7C,sBAAsB;;;0BAkB7CC,QAAK;4BAsBLA,QAAK;6BAILA,QAAK;0BAILA,QAAK;0BAILA,QAAK;oCAILA,QAAK;mCAILA,QAAK;+BAILA,QAAK;gCAILA,QAAK;gCAILC,SAAM;;;;QCvE2C,kDAAmB;QAHvE;YAAA,4DAQC;;YAHG,mBAAa,GAAG,CAAC,CAAC;;YAElB,gBAAU,GAAG,KAAK,CAAC;;SACtB;;KALD,CAAoD,mBAAmB;;;gBAHtE9D,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;QCwByD,wDAA8B;QAatF,8CACU,SAAoB,EACpB,OAA4B,EAC5B,MAA0B,EAC1B,QAAoB,EACpB,QAA8B,EACtC,QAA8B,EACtB,gBAAoC;YAP9C,YASE,iBAAO,SAQR;YAhBS,eAAS,GAAT,SAAS,CAAW;YACpB,aAAO,GAAP,OAAO,CAAqB;YAC5B,YAAM,GAAN,MAAM,CAAoB;YAC1B,cAAQ,GAAR,QAAQ,CAAY;YACpB,cAAQ,GAAR,QAAQ,CAAsB;YAE9B,sBAAgB,GAAhB,gBAAgB,CAAoB;YAd9C,iBAAW,GAAG,IAAI+C,eAAY,EAAU,CAAC;YACzC,oBAAc,GAAG,MAAM,CAAC;YAExB,iBAAW,GAAW,EAAE,CAAC;YACzB,iBAAW,GAAW,EAAE,CAAC;YACzB,WAAK,GAAmB,EAAE,CAAC;YAYzB,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACxC,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAE7D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;;SACpE;QA5BD,sBAAI,uDAAK;iBAAT,UAAU,KAAa;gBACrB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpC;;;WAAA;QA4BD,uDAAQ,GAAR;YAAA,iBA8CC;YA7CC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;gBAC/D,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM;iBACzB,IAAI,CACHC,cAAI,CAAC,CAAC,CAAC,CACR;iBACA,SAAS,CAAC;gBACT,KAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAEhC,IAAI,KAAI,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC3B,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;oBAE3E,OAAO;iBACR;gBAED,KAAI,CAAC,cAAc,GAAG,YAAY,CAAC;aACpC,CAAC,CAAC;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC7D,IAAI,CAAC,QAAQ;iBACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;;iBAGjB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;iBAExB,WAAW,CAAC,IAAI,CAAC;;iBAEjB,gBAAgB,CAAC,IAAI,CAAC;iBACtB,6BAA6B,EAAE,CAAC;;;YAInC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;iBACR,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,aAAa,GAAA,CAAC;iBACpC,SAAS,CAAC,UAAA,IAAI;gBACb,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAG,KAAI,CAAC,OAAO,CAAC,qBAAqB,EAAC;oBACpC,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;iBAC5B;aACF,CAAC,CACL,CAAC;SACH;QAED,sBAAI,+DAAa;iBAAjB;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC9D;;;WAAA;QAED,oEAAqB,GAArB;YACE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SAChC;QAED,+DAAgB,GAAhB,UAAiB,GAAiB;YAChC,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO;aACR;YACD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAEpG,IAAI,UAAU,EAAE;gBACd,OAAO;aACR;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,8DAAe,GAAf,UAAgB,GAAiB;YAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzC;QACD,iEAAkB,GAAlB,UAAmB,GAA0B;YAC3C,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO;aACR;YAED,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE;gBACpC,IAAI,GAAG,CAAC,UAAU,EAAE;oBAClB,OAAO;iBACR;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACvB,IAAI,EAAE;wBACJ,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBACzB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;qBAC5B;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CACH,CAAC;gBAEF,OAAO;aACR;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC5B;QAED,gEAAiB,GAAjB,UAAkB,GAA0B;YAC1C,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO;aACR;YAED,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE;gBACnC,IAAI,GAAG,CAAC,UAAU,EAAE;oBAClB,OAAO;iBACR;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACvB,IAAI,EAAE;wBACJ,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;qBAC5B;oBACD,QAAQ,EAAE,OAAO;iBAClB,CAAC,CACH,CAAC;gBAEF,OAAO;aACR;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC5B;QAED,+DAAgB,GAAhB,UAAiB,GAA0B;;;;;;YAOzC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjC,IAAI,CAAC,WAAW;oBACd,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;0BAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;0BAC9B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACnB;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAE9B,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;oBAC7B,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC1C;aACF;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;aACvB;SACF;QAED,0DAAW,GAAX;;;gBACE,KAAkB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAAzB,IAAM,GAAG,WAAA;oBACZ,GAAG,CAAC,WAAW,EAAE,CAAC;iBACnB;;;;;;;;;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACzB;QACD,qDAAM,GAAN;YACE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACzE;QAED,iEAAkB,GAAlB,UAAmB,KAAoB;YACrC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACvG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SACnE;QAED,wEAAyB,GAAzB,UAA0B,gBAAsB;YAC9C,IAAM,YAAY,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChD,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;SACxC;;KAzMH,CAA0D,8BAA8B;;gBAZvFC,YAAS,SAAC;oBACT,QAAQ,EAAE,+BAA+B;oBACzC,SAAS,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;oBACrD,23GAAwC;oBACxC,IAAI,EAAE;wBACJ,KAAK,EAAE,QAAQ;wBACf,SAAS,EAAE,0BAA0B;wBACrC,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,UAAU;qBACzB;oBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;iBAClC;;;gBA5BgEC,YAAS;gBASjE,mBAAmB;gBAInB,kBAAkB;gBAbPpB,aAAU;gBAWrB,oBAAoB;gBACpB,oBAAoB;gBANpB,kBAAkB;;;;QCcqC,8DAAoC;QAGlG,oDACE,SAAoB,EACpB,OAA4B,EAC5B,MAA0B,EAC1B,QAAoB,EACpB,QAA8B,EAC9B,QAA8B,EAC9B,mBAAuC;YAPzC,YASE,kBAAM,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,SAIrF;YAFC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;;SAClE;;KAhBH,CAAgE,oCAAoC;;gBATnGmB,YAAS,SAAC;oBACT,QAAQ,EAAE,sCAAsC;oBAChD,SAAS,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;oBACrD,23GAAwC;oBACxC,IAAI,EAAE;wBACJ,SAAS,EAAE,0BAA0B;qBACtC;oBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;iBAClC;;;gBAnBkDC,YAAS;gBAInD,mBAAmB;gBAEnB,kBAAkB;gBANCpB,aAAU;gBAG7B,oBAAoB;gBAEpB,oBAAoB;gBAGpB,kBAAkB;;;;QCmEzB,2CACS,OAAuC,EACtC,WAAuB,EAC/B,SAAoB,EACpB,iBAAmC,EACnC,GAA2B;YAJpB,YAAO,GAAP,OAAO,CAAgC;YACtC,gBAAW,GAAX,WAAW,CAAY;;;;YATvB,kBAAa,GAAyB,IAAIiB,eAAY,EAAE,CAAC;YAEzD,UAAK,GAAmB,EAAE,CAAC;;YAanC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;SACH;QAjED,sBACI,sDAAO;;;;iBADX,UACY,KAAa;gBACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;oBAC3B,OAAO;iBACR;gBACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;;;WAAA;QA4DD,oDAAQ,GAAR;YAAA,iBAoBC;YAnBC,IAAI,CAAC,SAAS,EAAE,CAAC;;YAGjB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAa;gBACzC,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;aAC5C,CAAC,CACH,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;iBACrC,IAAI,CACHV,gBAAM,CAAC,UAAC,KAAa,IAAK,OAAA,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAA,CAAC,CAC3D;iBACA,SAAS,CAAC,UAAC,KAAa;gBACvB,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB,CAAC,CACL,CAAC;SACH;QAED,uDAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACzD,OAAO;aACR;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBACpD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBACpD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAC/D;YAED,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;gBAChE,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACxE,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;SACF;;;;QAKD,qDAAS,GAAT;YACE,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aACzB;YAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC7D,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;gBAChF,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB;gBAC/F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa;gBACnF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;gBAChF,MAAM,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM;gBAC/C,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;aAC5D,CAAC,CAAC;YAGH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;iBACnC,OAAO,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;iBACjE,MAAM,CAAC,0CAA0C,CAAC;iBAClD,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;iBACpB,IAAI,EAAE,CAAC;SACX;QAED,uDAAW,GAAX;YACE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAC5B;;;;gBAzKFsB,YAAS,SAAC;oBACT,QAAQ,EAAE,4BAA4B;oBACtC,QAAQ,EAAE,0BAA0B;iBACrC;;;gBAPQ,8BAA8B;gBAVZ7B,aAAU;gBACRoB,YAAS;gBAAiBU,mBAAgB;gBAG7C,sBAAsB;;;0BAmB7CC,QAAK;4BAYLA,QAAK;6BAILA,QAAK;0BAILA,QAAK;0BAILA,QAAK;oCAILA,QAAK;+BAILA,QAAK;gCAILA,QAAK;+BAILA,QAAK;gCAILC,SAAM;;;IC/BT,IAAM,4BAA4B,GAAa;QAC7C,OAAO,EAAEC,yBAAiB;;QAE1B,WAAW,EAAEC,aAAU,CAAC,cAAM,OAAA,2BAA2B,GAAA,CAAC;QAC1D,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,IAAM,uBAAuB,GAAa;QACxC,OAAO,EAAEC,qBAAa;;QAEtB,WAAW,EAAED,aAAU,CAAC,cAAM,OAAA,2BAA2B,GAAA,CAAC;QAC1D,KAAK,EAAE,IAAI;KACZ,CAAC;;QAqBA,qCAA4B,OAA+B,EACvC,cAA+B,EAC/B,SAAoB,EACpB,MAAkB,EAClB,eAAkC;YAJ1B,YAAO,GAAP,OAAO,CAAwB;YACvC,mBAAc,GAAd,cAAc,CAAiB;YAC/B,cAAS,GAAT,SAAS,CAAW;YACpB,WAAM,GAAN,MAAM,CAAY;YAClB,oBAAe,GAAf,eAAe,CAAmB;YAX9C,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC/B,eAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;;YAEhC,qBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;YAEtC,UAAK,GAAG,IAAIE,iBAAY,EAAE,CAAC;SAMuB;QAE1D,8CAAQ,GAAR;YAAA,iBA0BD;;YAxBG,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAW;gBAC/C,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,KAAI,CAAC,MAAM,KAAK,KAAK,EAAE;oBACzB,KAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAI,CAAC,UAAU,EAAE,CAAC;iBACnB;gBACD,KAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;aACrC,CAAC,CACH,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC;gBACzC,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;aAClC,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CACd,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAACxB,8BAAoB,EAAE,CAAC,CAAC,SAAS,CAAC;gBACnE,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;aAClC,CAAC,CACH,CAAC;SACH;QAEC,iDAAW,GAAX;YACE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SAC1B;QAED,oDAAc,GAAd,UAAe,KAAK;YAClB,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;QAED,oDAAc,GAAd,UAAe,KAAW;YACxB,IAAM,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE;kBAC3B,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAE/F,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SAC7E;QAED,8CAAQ,GAAR,UAAS,KAAY;;YAEnB,IAAI,CAAC,UAAU,CAAE,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aACrE;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,8CAAQ,GAAR,UAAS,CAAkB;YACzB,IAAM,MAAM,GAAkB,CAAC,CAAC,KAAK,CAAC;;YAGtC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;gBAC5D,OAAO,IAAI,CAAC;aACb;YAED,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;gBAClB,IAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,YAAY,EAAE;oBACjB,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;iBACzC;gBAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;oBAC1F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAEtC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;iBACvD;gBAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;oBACzF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAEtC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;iBACvD;aACF;SACF;QAED,+DAAyB,GAAzB,UAA0B,EAAc;YACtC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;SAC5B;QAED,gDAAU,GAAV,UAAW,KAAoB;YAC7B,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;iBAAM;gBACL,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;gBACrD,IAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,KAAK,CACb,cAAW,UAAU,gEAA0D,CAChF,CAAC;iBACH;gBAED,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAExG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACvC;aACF;YAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;SACpC;QAED,sDAAgB,GAAhB,UAAiB,UAAmB;YAClC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YACrC,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAE/E,OAAO;aACR;YACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;SACvE;QAED,sDAAgB,GAAhB,UAAiB,EAAc;YAC7B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;QAED,uDAAiB,GAAjB,UAAkB,EAAc;YAC9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACtB;QAED,4CAAM,GAAN;YACE,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,0CAAI,GAAJ;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aACrE;SACF;;;;gBAlKFiB,YAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE;wBACJ,UAAU,EAAE,kBAAkB;wBAC9B,aAAa,EAAE,QAAQ;wBACvB,WAAW,EAAE,wBAAwB;wBACrC,QAAQ,EAAE,UAAU;qBACrB;oBACD,SAAS,EAAE,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;iBACnE;;;gBA5BQ,sBAAsB,uBAsChBQ,OAAI;gBArCV,eAAe;gBAxBtBjB,YAAS;gBANTpB,aAAU;gBAFVsC,oBAAiB;;;;QCK2B,4CAAmB;QAHjE;YAAA,4DAMC;;YADC,mBAAa,GAAG,CAAC,CAAC;;SACnB;;KAHD,CAA8C,mBAAmB;;;gBAHhEpE,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;QCkIC,qCAAmB,OAAiC,EAC1C,WAAuB,EACvB,SAAoB,EAC5B,iBAAmC,EACnC,GAA2B;YAJV,YAAO,GAAP,OAAO,CAA0B;YAC1C,gBAAW,GAAX,WAAW,CAAY;YACvB,cAAS,GAAT,SAAS,CAAW;;;;YAjHrB,cAAS,GAAwC,QAAQ,CAAC;;;;;YAK1D,aAAQ,GAAG,OAAO,CAAC;;;;YAInB,iBAAY,GAAG,IAAI,CAAC;;;;YAIpB,cAAS,GAAG,MAAM,CAAC;YAEnB,eAAU,GAAG,IAAI,CAAC;;;;YAoFjB,kBAAa,GAAyB,IAAI+C,eAAY,EAAE,CAAC;YAMzD,UAAK,GAAmB,EAAE,CAAC;YAIpB,uBAAkB,GAAG,IAAI3B,YAAO,EAAU,CAAC;YAO1D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,IAAIgB,oBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjD;QAzGD,sBACI,+CAAM;;;;iBADV;gBAEE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;aACjC;iBAED,UAAW,KAAc;gBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;;;WAJA;QAwBD,sBACI,gDAAO;;;;iBADX,UACY,KAAa;gBACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;oBAC3B,OAAO;iBACR;gBACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;;;WAAA;QAKD,sBAAa,kDAAS;iBAKtB;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;;iBAPD,UAAuB,SAA4C;gBACjE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;aACvE;;;WAAA;QAsCD,sBAAI,0DAAiB;iBAArB;gBACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;aAChC;;;WAAA;QAwBD,8CAAQ,GAAR;YAAA,iBASC;YARC,IAAI,CAAC,UAAU,GAAG,IAAIhB,YAAO,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,IAAI,EAAE,GAAA;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,iDAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACzD,OAAO;aACR;YACD,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;aACrD;YACD,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;aACrD;YACD,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;aACjE;YACD,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAC/D;YACD,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAC/D;YACD,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;aAC3D;YACD,IAAI,OAAO,CAAC,iBAAiB,EAAE;gBAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;aACzE;SACF;QAED,qDAAe,GAAf;YAAA,iBAMC;YALC,IAAI,CAAC,OAAO,CAAC,IAAI,CACfiB,gBAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,KAAK,KAAI,CAAC,MAAM,GAAA,CAAC,EACxCqB,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;iBACE,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,EAAE,GAAA,CAAC,CAAC;SACnC;;;;;QAMD,0CAAI,GAAJ;YAAA,iBAgCC;YA/BC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC5B,OAAO;aACR;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;iBACnC,OAAO,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;iBACjE,MAAM,CAAC,oCAAoC,CAAC;iBAC5C,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;iBAClB,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;iBACxC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;;YAGvC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAa;gBACzC,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;aAC5C,CAAC,CACH,CAAC;;YAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;iBACrC,IAAI,CACHrB,gBAAM,CAAC,UAAC,KAAa,IAAK,OAAA,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAA,CAAC,CAC3D;iBACA,SAAS,CAAC,UAAC,KAAa;gBACvB,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,KAAI,CAAC,IAAI,EAAE,CAAC;aACb,CAAC,CACL,CAAC;SACH;;;;QAKD,+CAAS,GAAT;YACE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAC1B,EAAE,EACF,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd;gBACE,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACjE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;gBAChF,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB;gBAC/F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa;gBACnF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;gBAChF,MAAM,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM;gBAC/C,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY;aAC5D,CACF,CAAC;SACH;;;;;QAMD,0CAAI,GAAJ;;YACE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aACzB;;gBACD,KAAkB,IAAA,KAAA,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAAzB,IAAM,GAAG,WAAA;oBACZ,GAAG,CAAC,WAAW,EAAE,CAAC;iBACnB;;;;;;;;;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aAC1E;SACF;;;;;QAMD,4CAAM,GAAN;YACE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;aACpB;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QAED,iDAAW,GAAX;YACE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;aAC5B;SACF;;;;gBAvRFsB,YAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE,oBAAoB;iBAC/B;;;gBAXQ,wBAAwB;gBALpB7B,aAAU;gBAEboB,YAAS;gBACjBU,mBAAgB;gBAMT,sBAAsB;;;4BAa5BC,QAAK;2BAKLA,QAAK;+BAILA,QAAK;4BAILA,QAAK;6BAELA,QAAK;yBAKLA,QAAK;0BAaLC,SAAM;2BAKNA,SAAM;0BASND,QAAK;4BAYLA,QAAK;6BAWLA,QAAK;0BAILA,QAAK;0BAILA,QAAK;oCAILA,QAAK;+BAILA,QAAK;gCAILA,QAAK;+BAKLA,QAAK;gCAILC,SAAM;;;ICtFT,IAAM,iCAAiC,GAAa;QAClD,OAAO,EAAEC,yBAAiB;;QAE1B,WAAW,EAAEC,aAAU,CAAC,cAAM,OAAA,gCAAgC,GAAA,CAAC;QAC/D,KAAK,EAAE,IAAI;KACZ,CAAC;IAEF,IAAM,4BAA4B,GAAa;QAC7C,OAAO,EAAEC,qBAAa;;QAEtB,WAAW,EAAED,aAAU,CAAC,cAAM,OAAA,gCAAgC,GAAA,CAAC;QAC/D,KAAK,EAAE,IAAI;KACZ,CAAC;;QAsBA,0CAA4B,OAAoC,EAC5C,cAA+B,EAC/B,SAAoB,EACpB,MAAkB,EAClB,eAAkC;YAJ1B,YAAO,GAAP,OAAO,CAA6B;YAC5C,mBAAc,GAAd,cAAc,CAAiB;YAC/B,cAAS,GAAT,SAAS,CAAW;YACpB,WAAM,GAAN,MAAM,CAAY;YAClB,oBAAe,GAAf,eAAe,CAAmB;YAX9C,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC/B,eAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;;YAEhC,qBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;YAEtC,UAAK,GAAG,IAAIE,iBAAY,EAAE,CAAC;SAOlC;QAED,mDAAQ,GAAR;YAAA,iBAuBC;;YArBC,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAa;gBACjD,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,KAAI,CAAC,MAAM,KAAK,KAAK,EAAE;oBACzB,KAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAI,CAAC,UAAU,EAAE,CAAC;iBACnB;gBACD,KAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;aACrC,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC;gBACxD,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;aAClC,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,KAAK,CAAC,GAAG;;YAEZ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAACxB,8BAAoB,EAAE,CAAC,CAAC,SAAS,CAAC;gBACpE,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;aAClC,CAAC,CAAC,CAAC;SACP;QAED,sDAAW,GAAX;YACE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SAC1B;QAED,yDAAc,GAAd,UAAe,KAAS;YACtB,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAClD,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;QAED,yDAAc,GAAd,UAAe,IAAY;YACzB,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,EAAE;gBACR,IAAM,KAAK,GAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;sBAC/B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EACrC,IAAI,CAAC,cAAc,CAAC,aAAa,CAClC,CAAC;gBACJ,IAAM,GAAG,GAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;sBAC7B,UAAU,CACV,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EACrC,IAAI,CAAC,cAAc,CAAC,aAAa,CAClC,CAAC;gBACJ,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,EAAE,CAAC;aACjF;YACD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;SACvE;QAED,mDAAQ,GAAR,UAAS,KAAY;;YAEnB,IAAI,CAAC,UAAU,CAAE,KAAK,CAAC,MAAc,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aACrE;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,mDAAQ,GAAR,UAAS,CAAkB;YACzB,IAAM,MAAM,GAAiB,CAAC,CAAC,KAAK,CAAC;YACrC,IAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC/D,OAAO,IAAI,CAAC;aACb;;YAGD,MAAM,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;YAE7B,IAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,IAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC,iBAAiB,EAAE;gBACtB,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aAC5C;YAED,IAAI,CAAC,kBAAkB,EAAE;gBACvB,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aAC5C;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBAC7F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC7D;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBAC5F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC7D;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAExB,OAAO,MAAM,CAAC;aACf;SACF;QAED,oEAAyB,GAAzB,UAA0B,EAAc;YACtC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;SAC5B;QAED,qDAAU,GAAV,UAAW,KAAsB;YAAjC,iBAuCC;YAtCC,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;iBAAM;gBACL,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;gBACrD,IAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,EAAE;oBACZ,MAAM,IAAI,KAAK,CACb,cAAW,UAAU,gEAA0D,CAChF,CAAC;iBACH;gBAED,IAAI,MAAM,GAAsB,EAAE,CAAC;gBACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,IAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;oBACpE,MAAM,GAAG,KAAK;yBACX,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;yBAC3F,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;iBAC7B;gBAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACxB,MAAM,GAAG,KAAK,CAAC;iBAChB;gBAED,IAAI,CAAC,MAAM,GAAG,MAAM;qBACjB,GAAG,CAAC,UAAC,IAAmB;oBACrB,IAAI,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;wBAC/B,OAAO,UAAU,CACf,SAAS,CAAC,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAC1F,CAAC;qBACH;oBAED,OAAO,SAAS,CAAC,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;iBAClG,CACF;qBACA,GAAG,CAAC,UAAC,IAAU,IAAK,QAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,IAAC,CAAC,CAAC;aAC/D;YAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;SACpC;QAED,2DAAgB,GAAhB,UAAiB,UAAmB;YAClC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YACrC,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAE/E,OAAO;aACR;YACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;SACvE;;QAGD,2DAAgB,GAAhB,UAAiB,EAAc;YAC7B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;;QAGD,4DAAiB,GAAjB,UAAkB,EAAc;YAC9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACtB;QAED,iDAAM,GAAN;YACE,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,+CAAI,GAAJ;YACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;aACrE;SACF;;;;gBA5MFiB,YAAS,SAAC;oBACT,QAAQ,EAAE,2BAA2B;oBACrC,IAAI,EAAE;wBACJ,UAAU,EAAE,kBAAkB;wBAC9B,aAAa,EAAE,QAAQ;wBACvB,WAAW,EAAE,wBAAwB;wBACrC,QAAQ,EAAE,UAAU;qBACrB;oBACD,SAAS,EAAE,CAAC,iCAAiC,EAAE,4BAA4B,CAAC;iBAC7E;;;gBA7BQ,2BAA2B,uBAuCrBQ,OAAI;gBAtCV,eAAe;gBAxBtBjB,YAAS;gBANTpB,aAAU;gBAFVsC,oBAAiB;;;ICCnB;;QACA;;YAKE,qBAAgB,GAAG,IAAI,CAAC;;YAExB,cAAS,GAAG,KAAK,CAAC;;YAElB,aAAQ,GAAG,aAAa,CAAC;;YAIzB,UAAK,GAAG,CAAC,CAAC;SACX;;;;;gBAdApE,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;QCmDC,mCAAY,MAAqB;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC7B;QAND,sBAAI,4CAAK;iBAAT;gBACE,OAAO,KAAK,EAAE,CAAC;aAChB;;;WAAA;QAMD,mDAAe,GAAf;YACE,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,aAAW,IAAI,CAAC,SAAW,CAAC,GAAG,IAAI,CAAC;YAElD,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC;YACxB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;aAC3B;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;aAC3C;SACF;;;;gBAjEFiD,YAAS,SAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,eAAe,EAAEoB,0BAAuB,CAAC,MAAM;;oBAE/C,IAAI,EAAE;wBACJ,SAAS,EACP,8GAA8G;wBAChH,cAAc,EAAE,QAAQ;wBACxB,aAAa,EAAE,OAAO;wBACtB,WAAW,EAAE,SAAS;wBACtB,IAAI,EAAE,SAAS;qBAChB;oBAqBD,QAAQ,EAAE,yHAGP;6BAtBD,yZAiBD;iBAMF;;;gBAvCQ,aAAa;;;ICkBtB,IAAI,EAAE,GAAG,CAAC,CAAC;;QAyLT,0BACE,iBAAmC,EACnC,GAA2B,EAC3B,MAAqB,EACb,WAAuB,EACvB,SAAoB,EACpB,gBAAoC;YAFpC,gBAAW,GAAX,WAAW,CAAY;YACvB,cAAS,GAAT,SAAS,CAAW;YACpB,qBAAgB,GAAhB,gBAAgB,CAAoB;YAxL9C,cAAS,GAAG,EAAE,EAAE,CAAC;;;YAajB,kBAAa,GAA4C,IAAItB,eAAY,EAAE,CAAC;;;;YAkBnE,mBAAc,GAAG,EAAE,CAAC;;YAkGpB,qBAAgB,GAAG,IAAI,CAAC;;YAuBxB,wBAAmB,GAAG,GAAG,CAAC;;YAiBnC,wBAAmB,GAA0B,IAAIA,eAAY,EAAW,CAAC;YAkBvE,IAAI,CAAC,QAAQ,GAAG,GAAG;iBAChB,YAAY,CACX,IAAI,CAAC,WAAW,EAChB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CACf;iBACA,OAAO,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACxC;QAlKD,sBACI,oCAAM;;;;iBADV;gBAEE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;aAC9B;iBAED,UAAW,KAAc;gBACvB,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF;;;WARA;QAgCD,sBAEI,yCAAW;;iBAFf,UAEgB,KAAgC;gBAC9C,QAAQ,CAAC,0DAA0D,CAAC,CAAC;gBACrE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;;;WAAA;QAGD,sBACI,wCAAU;;iBADd,UACe,KAAa;gBAC1B,QAAQ,CAAC,iEAAiE,CAAC,CAAC;gBAC5E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;;;WAAA;QAGD,sBACI,qCAAO;iBAKX;gBACE,QAAQ,CAAC,2DAA2D,CAAC,CAAC;gBAEtE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;iBAVD,UACY,KAAc;gBACxB,QAAQ,CAAC,2DAA2D,CAAC,CAAC;gBACtE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;WAAA;QASD,sBACI,qCAAO;iBAKX;gBACE,QAAQ,CAAC,+DAA+D,CAAC,CAAC;gBAE1E,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;iBAVD,UACY,KAAc;gBACxB,QAAQ,CAAC,+DAA+D,CAAC,CAAC;gBAC1E,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;aAC1B;;;WAAA;QASD,sBACI,2CAAa;iBAOjB;gBACE,QAAQ,CACN,2EAA2E,CAC5E,CAAC;gBAEF,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;aAClC;;iBAdD,UACkB,KAAc;gBAC9B,QAAQ,CACN,2EAA2E,CAC5E,CAAC;gBACF,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;aAClD;;;WAAA;QAcD,sBACI,yCAAW;;iBADf,UACgB,KAAa;gBAC3B,QAAQ,CAAC,yBAAyB,CAAC,CAAC;aACrC;;;WAAA;QAGD,sBAEI,6CAAe;;iBAFnB,UAEoB,KAAU;gBAC5B,QAAQ,CAAC,2BAA2B,CAAC,CAAC;aACvC;;;WAAA;QAGD,sBACI,gDAAkB;;iBADtB,UACuB,KAAa;gBAClC,QAAQ,CAAC,sDAAsD,CAAC,CAAC;gBACjE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;;;WAAA;QAMD,sBACI,6CAAe;;iBADnB;gBAEE,QAAQ,CAAC,8DAA8D,CAAC,CAAC;gBAEzE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;iBAED,UAAoB,KAAwB;gBAC1C,QAAQ,CAAC,8DAA8D,CAAC,CAAC;gBACzE,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;aAC1C;;;WALA;QAwCD,mCAAQ,GAAR;YAAA,iBAmBC;YAlBC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,IAAI,EAAE,GAAA;aACxB,CAAC,CAAC;;YAEH,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAU;gBACtC,IAAI,CAAC,KAAK,EAAE;oBACV,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACtB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACrB,KAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACtB,KAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B,CAAC,CAAC;SACJ;QAED,6CAAkB,GAAlB;YACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,aAAW,IAAI,CAAC,SAAW,GAAG,IAAI,CAAC;YAEzE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACxG;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;aACpF;SACF;;;;;QAMD,iCAAM,GAAN;YACE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;aACpB;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;;;;;QAMD,+BAAI,GAAJ;YAAA,iBAsEC;YArEC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC/B,SAAS,EAAE;oBACT,IAAI,EAAE;wBACJ,OAAO,EAAE,IAAI,CAAC,gBAAgB;qBAC/B;oBACD,eAAe,EAAE;wBACf,OAAO,EAAE,IAAI,CAAC,gBAAgB;wBAC9B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,cAAc;qBAC5D;iBACF;aACF,CAAC,CAAC;YAEH,IACE,IAAI,CAAC,MAAM;gBACX,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;gBACpB,CAAC,IAAI,CAAC,OAAO,EACb;gBACA,OAAO;aACR;YAED,IAAM,WAAW,GAAG;gBAClB,IAAI,KAAI,CAAC,eAAe,EAAE;oBACxB,KAAI,CAAC,eAAe,GAAG,SAAS,CAAC;iBAClC;gBAED,KAAI,CAAC,QAAQ;qBACV,MAAM,CAAC,yBAAyB,CAAC;qBACjC,EAAE,CAAC,KAAI,CAAC,SAAS,CAAC;qBAClB,QAAQ,CAAC,EAAC,UAAU,EAAE,KAAI,CAAC,SAAS,EAAC,CAAC;qBACtC,IAAI,CAAC;oBACJ,OAAO,EAAE,KAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,KAAI,CAAC,SAAS;oBACzB,cAAc,EAAE,KAAI,CAAC,cAAc;oBACnC,EAAE,EAAE,aAAW,KAAI,CAAC,SAAW;iBAChC,CAAC,CAAC;aACN,CAAC;YACF,IAAM,2BAA2B,GAAG;gBAClC,IAAI,KAAI,CAAC,oBAAoB,EAAE;oBAC7B,KAAI,CAAC,oBAAoB,EAAE,CAAC;iBAC7B;aACF,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;iBACvC;gBAED,IAAI,CAAC,kBAAkB,GAAGuB,UAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;oBACpD,WAAW,EAAE,CAAC;oBACd,2BAA2B,EAAE,CAAC;iBAC/B,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;yBACzB,OAAO,CAAC,UAAC,OAAgB;wBACxB,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,SAAS,CAAC,MAAM,CAC/C,KAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,OAAO,CAAC,KAAK,EACb;4BACE,KAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;4BACtC,2BAA2B,EAAE,CAAC;yBAC/B,CACF,CAAC;qBACH,CAAC,CAAC;iBACN;aACF;iBAAM;gBACL,WAAW,EAAE,CAAC;aACf;SACF;;;;;QAMD,+BAAI,GAAJ;YAAA,iBAcC;YAbC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;aAClC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC;YAC3C,UAAU,CAAC;gBACT,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACtB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAC9B;QAED,sCAAW,GAAX;YACE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;aACvC;YACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;SAC7B;;;;gBAhWFX,YAAS,SAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,QAAQ,EAAE,aAAa;iBACxB;;;gBAjBCC,mBAAgB;gBAMQ,sBAAsB;gBAFvC,aAAa;gBAZpB9B,aAAU;gBAMVoB,YAAS;gBAUF,kBAAkB;;;mCAaxBW,QAAK;0BAKLA,QAAK;gCAILC,SAAM;4BAOND,QAAK;2BAKLA,QAAK;4BAILA,QAAK;iCAILA,QAAK;oCACLA,QAAK;yBAILA,QAAK;6BAgBLA,QAAK;wBAKLA,QAAK;0BAMLC,SAAM;2BAKNA,SAAM;8BAGND,QAAK,SAAC,aAAa;6BAQnBA,QAAK,SAAC,kBAAkB;0BAOxBA,QAAK,SAAC,eAAe;0BAarBA,QAAK,SAAC,eAAe;gCAarBA,QAAK,SAAC,qBAAqB;mCAiB3BA,QAAK;8BAGLA,QAAK,SAAC,cAAc;kCAMpBA,QAAK,SAAC,gBAAgB;qCAOtBA,QAAK,SAAC,mBAAmB;sCAOzBA,QAAK;kCAGLA,QAAK,SAAC,gBAAgB;sCAatBC,SAAM;;IA/JP;QAHC,QAAQ,EAAE;qDAGwB;;;QC1BrC;;QACS,qBAAO,GAAd;YACE,OAAO;gBACL,QAAQ,EAAE,aAAa;gBACvB,SAAS,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;aACxD,CAAC;SACH;;;;gBAZFS,WAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,mBAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;oBAC3D,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,eAAe,EAAE,CAAC,yBAAyB,CAAC;iBAC7C;;;;QCSD;;;;;gBAnBCvB,YAAS,SAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,kdAeT;iBACF;;;;QCdD;;;;;gBAJCA,YAAS,SAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gEAA8D;iBACzE;;;wBAEEY,QAAK;;;;QCAR;YA0BY,aAAQ,GAAG,IAAId,eAAY,EAAiB,CAAC;YAEvD,gBAAW,GAAQ,IAAI,CAAC;SAUzB;QARC,qDAAgB,GAAhB,UAAiB,KAAoB;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,+CAAU,GAAV;YAAA,iBAEC;YADC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,KAAK,KAAK,KAAI,CAAC,aAAa,GAAA,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;SACzG;;;;gBApCFE,YAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE,ugBAiBT;oBACD,eAAe,EAAEoB,0BAAuB,CAAC,MAAM;iBAChD;;;yBAEER,QAAK;gCACLA,QAAK;mCACLA,QAAK;2BACLC,SAAM;;;;QCHP,4CACU,OAA4B,EAC5B,MAAkB,EAClB,SAAoB;YAFpB,YAAO,GAAP,OAAO,CAAqB;YAC5B,WAAM,GAAN,MAAM,CAAY;YAClB,cAAS,GAAT,SAAS,CAAW;SACzB;QAEL,qDAAQ,GAAR;YAAA,iBAYC;YAXC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACrE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;aACnF;YAED,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;gBAC9C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;qBAC9B,MAAM,CAAC,UAAC,SAAiB,IAAK,OAAA,SAAS,GAAA,CAAC;qBACxC,OAAO,CAAC,UAAC,SAAiB;oBACzB,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;iBAC/D,CAAC,CAAC;aACN;SACF;;;;gBApCFb,YAAS,SAAC;oBACT,QAAQ,EAAE,6BAA6B;oBACvC,eAAe,EAAEoB,0BAAuB,CAAC,MAAM;oBAC/C,IAAI,EAAE;wBACJ,kBAAkB,EAAE,gBAAgB;wBACpC,wBAAwB,EAAE,eAAe;wBACzC,wBAAwB,EAAE,kBAAkB;wBAC5C,+BAA+B,EAAE,yBAAyB;wBAC1D,kBAAkB,EAAE,eAAe;wBACnC,sBAAsB,EAAE,sBAAsB;wBAC9C,oBAAoB,EAAE,oBAAoB;wBAC1C,kBAAkB,EAAE,gBAAgB;qBACrC;oBACD,QAAQ,EAAE,iBAAiB;iBAC5B;;;gBAjBQ,mBAAmB;gBAN1BvC,aAAU;gBAGVoB,YAAS;;;sBAsBRW,QAAK;;;ICuFR;IACA;IACA;IACA,IAAY,qBAGX;IAHD,WAAY,qBAAqB;QAC/B,6DAAE,CAAA;QACF,iEAAI,CAAA;IACN,CAAC,EAHW,qBAAqB,KAArB,qBAAqB;;;QCzGjC;YA4CY,eAAU,GAAG,IAAId,eAAY,EAAyB,CAAC;YACvD,eAAU,GAAG,IAAIA,eAAY,EAAyB,CAAC;SAWlE;QATC,oDAAK,GAAL,UAAM,IAAa;YACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,GAAG,qBAAqB,CAAC,IAAI,GAAG,qBAAqB,CAAC,EAAE,CAC7D,CAAC;SACH;QAED,mDAAI,GAAJ,UAAK,QAA+B;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;;;;gBAvDFE,YAAS,SAAC;oBACT,QAAQ,EAAE,gCAAgC;oBAC1C,eAAe,EAAEoB,0BAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,y3CAoCT;iBACF;;;2BAEER,QAAK;6BAELC,SAAM;6BACNA,SAAM;;;;QCqCP,sCAAoB,OAA4B;YAA5B,YAAO,GAAP,OAAO,CAAqB;YAXtC,eAAU,GAAG,IAAIf,eAAY,EAAqB,CAAC;YACnD,eAAU,GAAG,IAAIA,eAAY,EAAyB,CAAC;YAEvD,aAAQ,GAAG,IAAIA,eAAY,EAAgB,CAAC;YAC5C,YAAO,GAAG,IAAIA,eAAY,EAAkB,CAAC;YAC7C,gBAAW,GAAG,IAAIA,eAAY,EAAiB,CAAC;YAOxD,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;iBACtD,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;SACF;QAED,iDAAU,GAAV,UAAW,KAA4B;YACrC,IAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;SACjD;QAED,qDAAc,GAAd,UAAe,KAA4B;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;QAED,gDAAS,GAAT,UAAU,KAAmB;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,iDAAU,GAAV,UAAW,IAAmB;YAA9B,iBAoCC;YAnCC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACjE,OAAO;aACR;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;mBACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;mBACxB,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBAEtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjC,OAAO;aACV;YAED,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAiB;gBACnD,OAAO,KAAI,CAAC,OAAO,CAAC,oBAAoB;sBACpC,CAAC,GAAG,CAAC,UAAU;sBACf,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;aAC1C,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEhC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACpC,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAC,GAAiB;oBAC3D,OAAO,KAAI,CAAC,OAAO,CAAC,oBAAoB;0BACpC,CAAC,GAAG,CAAC,UAAU;0BACf,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;iBAC1C,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC;SACF;QAED,uDAAgB,GAAhB,UAAiB,IAAmB,EAAE,SAAkB;YAAxD,iBAgBC;YAfC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACjE,OAAO;aACR;YAED,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAiB;gBACrD,OAAO,KAAI,CAAC,OAAO,CAAC,oBAAoB;sBACpC,CAAC,GAAG,CAAC,UAAU;sBACf,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;aAC1C,CAAC,CAAC;YAEH,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B;SACF;QAED,+CAAQ,GAAR,UAAS,IAAkB,EAAE,SAAkB;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC1D,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;aACtC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,QAAmC;oBAExE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;wBACvC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;wBAExC,OAAO;qBACR;iBACF,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;SACxC;;;;gBAzKFE,YAAS,SAAC;oBACT,QAAQ,EAAE,wBAAwB;;oBAElC,QAAQ,EAAE,2xEAsDT;iBACF;;;gBA5DQ,mBAAmB;;;2BA8DzBY,QAAK;0BACLA,QAAK;6BAELC,SAAM;6BACNA,SAAM;2BAENA,SAAM;0BACNA,SAAM;8BACNA,SAAM;;;;QC/ET;YA8BY,eAAU,GAAG,IAAIf,eAAY,EAAqB,CAAC;YACnD,eAAU,GAAG,IAAIA,eAAY,EAAyB,CAAC;YAEvD,aAAQ,GAAG,IAAIA,eAAY,EAAyB,CAAC;YACrD,YAAO,GAAG,IAAIA,eAAY,EAAkB,CAAC;SAkBxD;QAhBC,iDAAU,GAAV,UAAW,KAA4B;YACrC,IAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;SAChD;QAED,gDAAS,GAAT,UAAU,KAA4B;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,iDAAU,GAAV,UAAW,IAA2B,EAAE,SAAkB;YACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;SACxC;QAED,qDAAc,GAAd,UAAe,KAA4B;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;;;;gBAnDFE,YAAS,SAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,QAAQ,EAAE,g2BAuBT;iBACF;;;2BAEEY,QAAK;6BAELC,SAAM;6BACNA,SAAM;2BAENA,SAAM;0BACNA,SAAM;;;IC5CT;;QAGA;YAuBE,SAAI,GAAG,IAAI,CAAC;YACZ,UAAK,GAAG,CAAC,CAAC;YACV,YAAO,GAAG,CAAC,CAAC;SACb;;;;gBA1BAb,YAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,qvCAkBT;iBACF;;;;QCbD;YA8BY,eAAU,GAAG,IAAIF,eAAY,EAAqB,CAAC;YACnD,eAAU,GAAG,IAAIA,eAAY,EAAyB,CAAC;YAEvD,aAAQ,GAAG,IAAIA,eAAY,EAAyB,CAAC;YACrD,YAAO,GAAG,IAAIA,eAAY,EAAkB,CAAC;SAkBxD;QAhBC,iDAAU,GAAV,UAAW,KAA4B;YACrC,IAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,EAAE,CAAC,CAAC;SACnE;QAED,+CAAQ,GAAR,UAAS,IAA2B;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B;QAED,gDAAS,GAAT,UAAU,IAA2B,EAAE,SAAkB;YACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;SACxC;QAED,qDAAc,GAAd,UAAe,KAA4B;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;;;;gBAnDFE,YAAS,SAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,QAAQ,EAAE,m1BAuBT;iBACF;;;2BAEEY,QAAK;6BAELC,SAAM;6BACNA,SAAM;2BAENA,SAAM;0BACNA,SAAM;;;;QC2CT;;QACS,2BAAO,GAAd;YACE,OAAO;gBACL,QAAQ,EAAE,mBAAmB;gBAC7B,SAAS,EAAE;oBACT,sBAAsB;oBACtB,kBAAkB;oBAClB,kBAAkB;oBAClB,oBAAoB;oBACpB,oBAAoB;oBACpB,eAAe;oBACf,mBAAmB;oBACnB,wBAAwB;iBACzB;aACF,CAAC;SACH;;;;gBAlEFS,WAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,mBAAY,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC;oBAChD,YAAY,EAAE;wBACZ,yBAAyB;wBACzB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,kCAAkC;wBAClC,oCAAoC;wBACpC,4BAA4B;wBAC5B,4BAA4B;wBAC5B,yBAAyB;wBACzB,4BAA4B;wBAC5B,+BAA+B;wBAC/B,sBAAsB;wBACtB,qCAAqC;wBACrC,4BAA4B;wBAC5B,2BAA2B;wBAC3B,oCAAoC;wBACpC,2BAA2B;wBAC3B,0CAA0C;wBAC1C,iCAAiC;wBACjC,gCAAgC;qBACjC;oBACD,eAAe,EAAE;wBACf,+BAA+B;wBAC/B,oCAAoC;wBACpC,qCAAqC;wBACrC,0CAA0C;qBAC3C;oBACD,OAAO,EAAE;wBACP,yBAAyB;wBACzB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,kCAAkC;wBAClC,oCAAoC;wBACpC,4BAA4B;wBAC5B,4BAA4B;wBAC5B,yBAAyB;wBACzB,4BAA4B;wBAC5B,+BAA+B;wBAC/B,sBAAsB;wBACtB,qCAAqC;wBACrC,4BAA4B;wBAC5B,2BAA2B;wBAC3B,oCAAoC;wBACpC,2BAA2B;wBAC3B,0CAA0C;wBAC1C,iCAAiC;wBACjC,gCAAgC;qBACjC;iBACF;;;;QCrFD;SAIC;QAHC,8BAAM,GAAN,UAAO,IAAU,EAAE,MAAc,EAAE,MAAc;YAC/C,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACzC;4BACF;KAAA;;ICND;;QAcA;YAmCY,kBAAa,GAAuB,IAAIzB,eAAY,CAAO,SAAS,CAAC,CAAC;YACtE,WAAM,GAAuB,IAAIA,eAAY,CAAO,KAAK,CAAC,CAAC;YAC3D,qBAAgB,GAAuB,IAAIA,eAAY,CAAO,SAAS,CAAC,CAAC;;YAGnF,YAAO,GAAQ,EAAE,CAAC;;YAElB,cAAS,GAAQ,EAAE,CAAC;;YAEpB,aAAQ,GAAQ,EAAE,CAAC;YAIT,UAAK,GAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,kBAAa,GAAkB,IAAI,aAAa,EAAE,CAAC;SAqU9D;QAzTC,sBACI,gDAAU;iBADd;gBAEE,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;iBAED,UAAe,KAAW;gBACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;;;WAJA;;QAOD,2CAAQ,GAAR;;YAEE,IAAI,CAAC,QAAQ,GAAI,iBAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAG,CAAC;YAEpE,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAChC,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACnC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;gBACxC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;aAC9B;SACF;;;QAID,8CAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACtD;;;QAID,8DAA2B,GAA3B,UAA4B,UAAe;YACzC,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;gBACzC,IAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;gBAC/C,IACE,aAAa;oBACb,aAAa,YAAY,IAAI;oBAC7B,aAAa,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,EAC7D;oBACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC7C;aACF;SACF;QAED,oDAAiB,GAAjB,UAAkB,OAAiB,EAAE,IAAY;YAC/C,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;aAClC;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;aACpC;YAED,IAAI,IAAI,KAAK,MAAM,EAAE;gBACnB,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;aACnC;SACF;QAED,0CAAO,GAAP,UAAQ,KAAW,EAAE,KAAW;YAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE;gBAC9C,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC3D,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC7C;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC/D,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC9C;YAED,OAAO,KAAK,CAAC,CAAC;SACf;QAED,wDAAqB,GAArB,UAAsB,OAAiB,EAAE,IAAY;YACnD,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;aACtC;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;aACxC;YAED,IAAI,IAAI,KAAK,MAAM,EAAE;gBACnB,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;aACvC;SACF;QAED,8CAAW,GAAX;YACE,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC/D,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBACnE,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBACjE,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC/B;SACF;QAED,6CAAU,GAAV,UAAW,IAAU,EAAE,MAAc;YACnC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7D;;QAGD,2CAAQ,GAAR,UAAS,UAAe;YACtB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACxD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC;gBAEnC,OAAO,IAAI,CAAC;aACb;YAED,OAAO,KAAK,CAAC;SACd;;QAGD,mDAAgB,GAAhB,UAAiB,IAAU,EAAE,MAAc;;YAEzC,IAAM,UAAU,GAAQ,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;YACF,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpD,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1D,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAErE,OAAO,UAAU,CAAC;SACnB;;QAGD,wCAAK,GAAL,UAAM,GAAU,EAAE,IAAY;;YAE5B,IAAM,MAAM,GAAU,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aAClC;YAED,OAAO,MAAM,CAAC;SACf;;;;;;;QAQD,8CAAW,GAAX,UAAY,IAAU;YACpB,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE9B,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAC7B,CAAC;SACH;QAED,yCAAM,GAAN,UAAO,IAAU,EAAE,QAAe;YAAf,yBAAA,EAAA,eAAe;YAChC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,EAAE;gBACxC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACjD;gBAED,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;gBACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,QAAQ,EAAE;oBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC1C;aACF;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;gBACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,QAAQ,EAAE;oBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAC5C,CAAC;iBACH;aACF;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAED,uCAAI,GAAJ,UAAK,SAAiB;;YAEpB,IAAI,YAAiB,CAAC;YACtB,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;gBACjC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;aAC7B;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE;gBACnC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE;gBAClC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC9B;YAED,IAAI,YAAY,EAAE;gBAChB,IAAM,IAAI,GACR,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACxE,IAAM,KAAK,GACT,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAE3C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C;SACF;QAED,6CAAU,GAAV,UAAW,UAAkB;YAC3B,IAAM,SAAS,GAAG,UAAU,IAAI,CAAC,CAAC;YAElC,IACE,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,CAAC;iBACvD,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,EAC1D;gBACA,OAAO;aACR;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS,CACpD,CAAC;YACF,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAES,wDAAqB,GAArB,UAAsB,IAAU;YAAhC,iBAkBT;YAjBC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO,EAAE,CAAC;aACX;;YAED,IAAM,iBAAiB,GAKnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAC,WAAgB;gBACzC,QACE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;oBAC7C,WAAW,CAAC,IAAI,KAAK,KAAI,CAAC,cAAc,EACxC;aACH,EAAE,IAAI,CAAC,CAAC;YAET,OAAO,iBAAiB,KAAK,SAAS,GAAG,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC;SACvE;QAES,sDAAmB,GAAnB,UACR,aAA2C,EAC3C,KAAW;YAEX,IAAI,aAAa,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE;gBACtD,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1D,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC1D;YAED,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC9D,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC5D;YAED,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC5D,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC3D;YAED,OAAO,SAAS,CAAC;SAClB;QAES,6CAAU,GAAV,UAAW,IAAU;YAArB,iBAuBT;YAtBC,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CACvB,UAAC,YAA0C;oBACzC,IAAI,KAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;wBACtD,cAAc,GAAG,IAAI,CAAC;qBACvB;iBACF,CACF,CAAC;aACH;YAED,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,cAAc;oBACZ,cAAc;wBACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aAChD;YAED,QACE,cAAc;iBACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACrD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACtD;SACH;;;;gBArXFE,YAAS,SAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,wNAKT;iBACF;;;yBAEEY,QAAK;iCACLA,QAAK;8BACLA,QAAK;4BACLA,QAAK;0BAELA,QAAK;0BACLA,QAAK;0BACLA,QAAK;0BACLA,QAAK;4BACLA,QAAK;4BACLA,QAAK;8BACLA,QAAK;6BACLA,QAAK;kCACLA,QAAK;iCACLA,QAAK;mCACLA,QAAK;mCACLA,QAAK;sCACLA,QAAK;8BACLA,QAAK;gCACLA,QAAK;+BACLA,QAAK;+BACLA,QAAK;8BACLA,QAAK;2BACLA,QAAK;gCAELC,SAAM;yBACNA,SAAM;mCACNA,SAAM;6BAwBND,QAAK;;;;QCzER;YAIE,WAAM,GAAG,IAAI,CAAC;YACd,mBAAc,GAAG,KAAK,CAAC;YACvB,gBAAW,GAAG,CAAC,CAAC;YAChB,cAAS,GAAG,EAAE,CAAC;YACf,YAAO,GAAG,KAAK,CAAC;YAChB,YAAO,GAAG,MAAM,CAAC;YACjB,cAAS,GAAG,IAAI,CAAC;YACjB,cAAS,GAAG,IAAI,CAAC;YACjB,gBAAW,GAAG,MAAM,CAAC;YACrB,eAAU,GAAG,MAAM,CAAC;YACpB,oBAAe,GAAG,IAAI,CAAC;YACvB,mBAAc,GAAG,WAAW,CAAC;YAC7B,qBAAgB,GAAG,MAAM,CAAC;YAC1B,qBAAgB,GAAG,KAAK,CAAC;YACzB,kBAAa,GAAG,CAAC,CAAC;YAClB,iBAAY,GAAG,CAAC,CAAC;YACjB,wBAAmB,GAAG,KAAK,CAAC;SAC7B;;;;;gBArBA7D,aAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;QCSY,iCAAiC,GAAa;QACzD,OAAO,EAAE+D,yBAAiB;;QAE1B,WAAW,EAAEC,aAAU,CAAC,cAAM,OAAA,mBAAmB,GAAA,CAAC;QAClD,KAAK,EAAE,IAAI;MACX;IAEF;IAsCA;;QA+EE,6BAAY,MAAwB;;YA5E3B,mBAAc,GAAG,KAAK,CAAC;;YAYvB,cAAS,GAAG,IAAI,CAAC;YA2C1B,kBAAa,GAAuB,IAAIjB,eAAY,CAAO,SAAS,CAAC,CAAC;;YAItE,qBAAgB,GAAuB,IAAIA,eAAY,CACrD,SAAS,CACV,CAAC;;YAMF,aAAQ,GAAQ,QAAQ,CAAC,SAAS,CAAC;;YAEnC,cAAS,GAAQ,QAAQ,CAAC,SAAS,CAAC;YAI1B,SAAI,GAAS,IAAI,IAAI,EAAE,CAAC;YAIhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QAlCD,sBACI,2CAAU;;iBADd;gBAEE,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;aACtC;iBAED,UAAe,KAAW;gBACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;;;WAJA;QAiCD,8CAAgB,GAAhB;YACE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,sCAAQ,GAAR,UAAS,KAAW;YAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,6CAAe,GAAf,UAAgB,KAAW;YACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,gDAAkB,GAAlB,UAAmB,KAAW;YAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;;;QAGD,wCAAU,GAAV,UAAW,KAAU;YACnB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;gBAC3D,OAAO;aACR;YACD,IAAI,KAAK,IAAI,KAAK,YAAY,IAAI,EAAE;gBAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAEtC,OAAO;aACR;YAED,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;SACpD;QAED,8CAAgB,GAAhB,UAAiB,EAAc;YAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;QAED,+CAAiB,GAAjB,UAAkB,EAAc;YAC9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;;;;gBA/JFE,YAAS,SAAC;oBACT,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,knDAgCP;oBACH,SAAS,EAAE,CAAC,iCAAiC,CAAC;iBAC/C;;;gBA9CQ,gBAAgB;;;iCAkDtBY,QAAK;2BAELA,QAAK;0BAELA,QAAK;0BAELA,QAAK;0BAELA,QAAK;0BAELA,QAAK;4BAELA,QAAK;4BAELA,QAAK;8BAELA,QAAK;6BAELA,QAAK;kCAELA,QAAK;iCAELA,QAAK;mCAELA,QAAK;8BAELA,QAAK;4BAELA,QAAK;mCAELA,QAAK;sCAELA,QAAK;gCAELA,QAAK;+BAELA,QAAK;8BAELA,QAAK;+BAELA,QAAK;8BAELA,QAAK;6BAGLA,QAAK;gCASLC,SAAM;mCAINA,SAAM;8BAKNW,YAAS,SAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;IC5HvD;;QA8FE,4BAAY,UAAoC;YANhD,WAAM,GAAU,EAAE,CAAC;YAEnB,SAAI,GAAU,EAAE,CAAC;YACjB,gBAAW,GAAa,EAAE,CAAC;YAIzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;QAED,sBAAI,qCAAK;iBAAT;gBACE,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;;;WAAA;;;;;QAMD,qCAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAExC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;gBACpC,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACzC,IAAM,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACjD,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC/D,IAAM,6BAA6B,GACjC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC;gBAChD,IAAM,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEtD,IAAI,6BAA6B,GAAG,CAAC,EAAE;oBACrC,SAAS,CAAC,OAAO,CAAC,CAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC;iBACvD;;gBAGD,IAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACnD,IAAM,IAAI,GAAU,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;oBAC3B,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpE,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC;oBACtD,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;oBAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;iBACvB;gBAED,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;gBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CACnC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EACZ,IAAI,CAAC,eAAe,CACrB,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7D;gBAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAEhC,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;oBACtB,IAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;oBACrD,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;oBAClC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;wBACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAClE,CAAC;qBACH;iBACF;aACF,EAAE,KAAK,CAAC,CAAC;YAEV,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAChC,KAAW,EACX,KAAW;gBAEX,IAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,IAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;aACpC,EAAE,KAAK,CAAC,CAAC;YAEV,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC/B;QAES,qCAAQ,GAAR,UAAS,SAAe,EAAE,CAAS;YAC3C,IAAM,KAAK,GAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,IAAU,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,EAAE;gBACZ,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBAClB,OAAO,GAAG,IAAI,IAAI,CAChB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CACnB,CAAC;aACH;YACD,OAAO,KAAK,CAAC;SACd;QAES,iDAAoB,GAApB,UAAqB,IAAU;YACvC,IAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;YAE3C,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACvE,IAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;;YAEjC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACvE;SACH;;;;gBAlMFxB,YAAS,SAAC;oBACT,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,mpGAiET;6BAEC,sMASD;iBAEF;;;gBAlFQ,wBAAwB;;;ICJjC;;QA2DE,8BAAY,UAAoC;YAJhD,SAAI,GAAU,EAAE,CAAC;YAKf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;QAED,sBAAI,uCAAK;iBAAT;gBACE,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;;;WAAA;QAED,uCAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAEzC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;gBACpC,IAAM,MAAM,GAAU,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAM,IAAI,GAAW,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACnD,IAAI,IAAU,CAAC;gBAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;oBAC3B,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;iBACzC;gBAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAC/D,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAChC,KAAW,EACX,KAAW;gBAEX,IAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,IAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;aACpC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC/B;;;;gBA3FFA,YAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,QAAQ,EAAE,20DAmCT;6BAEC,iFAID;iBAEF;;;gBA/CQ,wBAAwB;;;ICLjC;;QA2DE,6BAAY,UAAoC;YAFhD,SAAI,GAAU,EAAE,CAAC;YAGf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;QAED,sBAAI,sCAAK;iBAAT;gBACE,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;;;WAAA;QAED,sCAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAEhE,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;gBACpC,IAAM,KAAK,GAAU,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,IAAU,CAAC;gBACf,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;gBAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;oBACvC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxD,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;iBACxC;gBAED,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACjE,KAAK,CACN,CAAC;gBACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aAC7D,EAAE,MAAM,CAAC,CAAC;YAEX,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAChC,KAAW,EACX,KAAW;gBAEX,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;aAClD,EAAE,MAAM,CAAC,CAAC;YAEX,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC/B;QAES,6CAAe,GAAf,UAAgB,IAAY;;YAEpC,QACE,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EACtE;SACH;;;;gBAlGFA,YAAS,SAAC;oBACT,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,w1DAoCT;6BAEC,iFAID;iBAEF;;;gBAhDQ,wBAAwB;;;;QCwBjC;;QACS,wBAAO,GAAd;YACE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;SACtE;;;;gBArBFsB,WAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,mBAAY,EAAEE,mBAAW,CAAC;oBACpC,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,wBAAwB;wBACxB,kBAAkB;wBAClB,oBAAoB;wBACpB,mBAAmB;qBACpB;oBACD,OAAO,EAAE;wBACP,mBAAmB;wBACnB,wBAAwB;wBACxB,kBAAkB;wBAClB,oBAAoB;wBACpB,mBAAmB;qBACpB;oBACD,eAAe,EAAE,CAAC,mBAAmB,CAAC;iBACvC;;;IC5BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|