ngx-tethys 18.2.5 → 18.2.6
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/CHANGELOG.md +14 -0
- package/carousel/carousel.component.d.ts +2 -2
- package/date-picker/date-picker.config.d.ts +1 -1
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -2
- package/date-picker/lib/date/date-table.component.d.ts +2 -2
- package/date-picker/lib/popups/date-popup.component.d.ts +3 -2
- package/date-picker/lib/popups/inner-popup.component.d.ts +1 -1
- package/date-picker/picker.util.d.ts +3 -3
- package/date-range/date-range.component.d.ts +1 -1
- package/esm2022/action/action.component.mjs +4 -4
- package/esm2022/action/action.module.mjs +5 -5
- package/esm2022/action/actions.component.mjs +4 -4
- package/esm2022/affix/affix.component.mjs +4 -4
- package/esm2022/affix/affix.module.mjs +5 -5
- package/esm2022/alert/alert.component.mjs +4 -4
- package/esm2022/alert/alert.directive.mjs +4 -4
- package/esm2022/alert/alert.module.mjs +5 -5
- package/esm2022/anchor/anchor-link.component.mjs +4 -4
- package/esm2022/anchor/anchor.component.mjs +4 -4
- package/esm2022/anchor/anchor.module.mjs +5 -5
- package/esm2022/arrow-switcher/arrow-switcher.component.mjs +4 -4
- package/esm2022/arrow-switcher/module.mjs +5 -5
- package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +4 -4
- package/esm2022/autocomplete/module.mjs +5 -5
- package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +4 -4
- package/esm2022/autocomplete/overlay/autocomplete.service.mjs +4 -4
- package/esm2022/avatar/avatar-list/avatar-list.component.mjs +4 -4
- package/esm2022/avatar/avatar.component.mjs +4 -4
- package/esm2022/avatar/avatar.module.mjs +5 -5
- package/esm2022/avatar/avatar.pipe.mjs +10 -10
- package/esm2022/avatar/avatar.service.mjs +4 -4
- package/esm2022/back-top/back-top.component.mjs +4 -4
- package/esm2022/back-top/back-top.module.mjs +5 -5
- package/esm2022/badge/badge.component.mjs +4 -4
- package/esm2022/badge/badge.module.mjs +5 -5
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +4 -4
- package/esm2022/breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/breadcrumb/module.mjs +5 -5
- package/esm2022/button/button-group.component.mjs +4 -4
- package/esm2022/button/button-icon.component.mjs +4 -4
- package/esm2022/button/button.component.mjs +4 -4
- package/esm2022/button/button.module.mjs +5 -5
- package/esm2022/calendar/calendar-cells.mjs +7 -7
- package/esm2022/calendar/calendar-header.component.mjs +17 -17
- package/esm2022/calendar/calendar.component.mjs +6 -6
- package/esm2022/calendar/module.mjs +5 -5
- package/esm2022/card/card.component.mjs +4 -4
- package/esm2022/card/card.module.mjs +5 -5
- package/esm2022/card/content.component.mjs +4 -4
- package/esm2022/card/header.component.mjs +4 -4
- package/esm2022/carousel/carousel-item.directive.mjs +4 -4
- package/esm2022/carousel/carousel.component.mjs +13 -13
- package/esm2022/carousel/carousel.service.mjs +4 -4
- package/esm2022/carousel/module.mjs +5 -5
- package/esm2022/cascader/cascader-li.component.mjs +4 -4
- package/esm2022/cascader/cascader-search-option.component.mjs +4 -4
- package/esm2022/cascader/cascader.component.mjs +4 -4
- package/esm2022/cascader/cascader.service.mjs +4 -4
- package/esm2022/cascader/module.mjs +5 -5
- package/esm2022/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/checkbox/module.mjs +5 -5
- package/esm2022/collapse/collapse-item.component.mjs +4 -4
- package/esm2022/collapse/collapse.component.mjs +4 -4
- package/esm2022/collapse/module.mjs +5 -5
- package/esm2022/color-picker/color-picker-custom-panel.component.mjs +4 -4
- package/esm2022/color-picker/color-picker-panel.component.mjs +4 -4
- package/esm2022/color-picker/color-picker.component.mjs +4 -4
- package/esm2022/color-picker/coordinates.directive.mjs +4 -4
- package/esm2022/color-picker/module.mjs +5 -5
- package/esm2022/color-picker/parts/alpha/alpha.component.mjs +4 -4
- package/esm2022/color-picker/parts/hue/hue.component.mjs +4 -4
- package/esm2022/color-picker/parts/indicator/indicator.component.mjs +4 -4
- package/esm2022/color-picker/parts/inputs/inputs.component.mjs +4 -4
- package/esm2022/color-picker/parts/saturation/saturation.component.mjs +4 -4
- package/esm2022/comment/comment-actions.directive.mjs +4 -4
- package/esm2022/comment/comment-content.directive.mjs +4 -4
- package/esm2022/comment/comment.component.mjs +4 -4
- package/esm2022/comment/comment.module.mjs +5 -5
- package/esm2022/copy/copy.directive.mjs +4 -4
- package/esm2022/copy/module.mjs +5 -5
- package/esm2022/core/click-positioner.mjs +4 -4
- package/esm2022/core/overlay/portal-directives.mjs +4 -4
- package/esm2022/core/request-animation.mjs +3 -2
- package/esm2022/core/scroll.mjs +4 -4
- package/esm2022/core/store/store.mjs +4 -4
- package/esm2022/core/theme/store.mjs +4 -4
- package/esm2022/core/translate.mjs +4 -4
- package/esm2022/core/update-host-class.service.mjs +4 -4
- package/esm2022/date-picker/abstract-picker.component.mjs +4 -4
- package/esm2022/date-picker/abstract-picker.directive.mjs +4 -4
- package/esm2022/date-picker/base-picker.component.mjs +4 -4
- package/esm2022/date-picker/date-helper.service.mjs +4 -4
- package/esm2022/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/date-picker/date-picker.config.mjs +12 -13
- package/esm2022/date-picker/date-picker.directive.mjs +4 -4
- package/esm2022/date-picker/date-picker.module.mjs +5 -5
- package/esm2022/date-picker/date-picker.service.mjs +4 -4
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +9 -9
- package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +4 -4
- package/esm2022/date-picker/lib/date/date-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +4 -4
- package/esm2022/date-picker/lib/date/date-table.component.mjs +10 -9
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +4 -4
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/decade/decade-table.component.mjs +4 -4
- package/esm2022/date-picker/lib/lib-packer.module.mjs +5 -5
- package/esm2022/date-picker/lib/month/month-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/month/month-table.component.mjs +4 -4
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +21 -18
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +6 -6
- package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +4 -4
- package/esm2022/date-picker/lib/year/year-header.component.mjs +4 -4
- package/esm2022/date-picker/lib/year/year-table.component.mjs +4 -4
- package/esm2022/date-picker/month-picker.component.mjs +4 -4
- package/esm2022/date-picker/picker.component.mjs +8 -8
- package/esm2022/date-picker/picker.pipes.mjs +13 -13
- package/esm2022/date-picker/picker.util.mjs +8 -6
- package/esm2022/date-picker/picker.validators.mjs +7 -7
- package/esm2022/date-picker/quarter-picker.component.mjs +4 -4
- package/esm2022/date-picker/range-picker.component.mjs +4 -4
- package/esm2022/date-picker/range-picker.directive.mjs +4 -4
- package/esm2022/date-picker/week-picker.component.mjs +4 -4
- package/esm2022/date-picker/year-picker.component.mjs +4 -4
- package/esm2022/date-range/date-range.component.mjs +15 -16
- package/esm2022/date-range/module.mjs +5 -5
- package/esm2022/date-range/optional-dates/optional-dates.component.mjs +4 -4
- package/esm2022/dialog/body/dialog-body.component.mjs +4 -4
- package/esm2022/dialog/confirm/confirm.component.mjs +4 -4
- package/esm2022/dialog/dialog-container.component.mjs +4 -4
- package/esm2022/dialog/dialog.module.mjs +5 -5
- package/esm2022/dialog/dialog.service.mjs +4 -4
- package/esm2022/dialog/footer/dialog-footer.component.mjs +4 -4
- package/esm2022/dialog/header/dialog-header.component.mjs +4 -4
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/divider/divider.module.mjs +5 -5
- package/esm2022/dot/dot.component.mjs +4 -4
- package/esm2022/dot/dot.module.mjs +5 -5
- package/esm2022/drag-drop/drag-content.directive.mjs +4 -4
- package/esm2022/drag-drop/drag-drop.service.mjs +4 -4
- package/esm2022/drag-drop/drag-handle.directive.mjs +4 -4
- package/esm2022/drag-drop/drag.directive.mjs +4 -4
- package/esm2022/drag-drop/drop-container.directive.mjs +4 -4
- package/esm2022/drag-drop/module.mjs +5 -5
- package/esm2022/dropdown/dropdown-active.directive.mjs +4 -4
- package/esm2022/dropdown/dropdown-menu-item.directive.mjs +22 -22
- package/esm2022/dropdown/dropdown-menu.component.mjs +13 -13
- package/esm2022/dropdown/dropdown-submenu.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.directive.mjs +4 -4
- package/esm2022/dropdown/module.mjs +5 -5
- package/esm2022/empty/empty.component.mjs +4 -4
- package/esm2022/empty/empty.config.mjs +4 -4
- package/esm2022/empty/empty.module.mjs +5 -5
- package/esm2022/flexible-text/flexible-text.component.mjs +4 -4
- package/esm2022/flexible-text/flexible-text.module.mjs +5 -5
- package/esm2022/form/form-group-error/form-group-error.component.mjs +4 -4
- package/esm2022/form/form-group-label.directive.mjs +4 -4
- package/esm2022/form/form-group.component.mjs +4 -4
- package/esm2022/form/form-submit.directive.mjs +4 -4
- package/esm2022/form/form-validator-loader.mjs +4 -4
- package/esm2022/form/form-validator.service.mjs +4 -4
- package/esm2022/form/form.directive.mjs +4 -4
- package/esm2022/form/from-group-footer/form-group-footer.component.mjs +4 -4
- package/esm2022/form/module.mjs +5 -5
- package/esm2022/form/validator/confirm-validator.directive.mjs +4 -4
- package/esm2022/form/validator/max-validator.directive.mjs +4 -4
- package/esm2022/form/validator/min-validator.directive.mjs +4 -4
- package/esm2022/form/validator/unique-validator.directive.mjs +4 -4
- package/esm2022/fullscreen/fullscreen-launch.directive.mjs +4 -4
- package/esm2022/fullscreen/fullscreen.component.mjs +4 -4
- package/esm2022/fullscreen/fullscreen.module.mjs +5 -5
- package/esm2022/fullscreen/fullscreen.service.mjs +4 -4
- package/esm2022/grid/flex.mjs +13 -13
- package/esm2022/grid/module.mjs +5 -5
- package/esm2022/grid/thy-col.directive.mjs +4 -4
- package/esm2022/grid/thy-grid-item.component.mjs +4 -4
- package/esm2022/grid/thy-grid.component.mjs +7 -7
- package/esm2022/grid/thy-row.directive.mjs +4 -4
- package/esm2022/guider/guider-hint/guider-hint.component.mjs +4 -4
- package/esm2022/guider/guider-manager.mjs +4 -4
- package/esm2022/guider/guider.directive.mjs +4 -4
- package/esm2022/guider/guider.module.mjs +5 -5
- package/esm2022/guider/guider.service.mjs +4 -4
- package/esm2022/i18n/i18n.service.mjs +4 -4
- package/esm2022/icon/icon-registry.mjs +5 -5
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +6 -7
- package/esm2022/image/image-group.component.mjs +4 -4
- package/esm2022/image/image.directive.mjs +4 -4
- package/esm2022/image/image.service.mjs +4 -4
- package/esm2022/image/module.mjs +5 -5
- package/esm2022/image/preview/image-preview.component.mjs +4 -4
- package/esm2022/input/input-count.component.mjs +4 -4
- package/esm2022/input/input-group.component.mjs +4 -4
- package/esm2022/input/input-search.component.mjs +4 -4
- package/esm2022/input/input.component.mjs +4 -4
- package/esm2022/input/input.directive.mjs +4 -4
- package/esm2022/input/module.mjs +5 -5
- package/esm2022/input-number/input-number.component.mjs +4 -4
- package/esm2022/input-number/module.mjs +5 -5
- package/esm2022/layout/content-main.component.mjs +7 -7
- package/esm2022/layout/content-section.component.mjs +7 -7
- package/esm2022/layout/content.component.mjs +7 -7
- package/esm2022/layout/header.component.mjs +7 -7
- package/esm2022/layout/layout.component.mjs +7 -7
- package/esm2022/layout/layout.module.mjs +5 -5
- package/esm2022/layout/sidebar-content.component.mjs +7 -7
- package/esm2022/layout/sidebar-footer.component.mjs +7 -7
- package/esm2022/layout/sidebar-header.component.mjs +7 -7
- package/esm2022/layout/sidebar.component.mjs +7 -7
- package/esm2022/list/list-item-meta.component.mjs +4 -4
- package/esm2022/list/list-item.component.mjs +4 -4
- package/esm2022/list/list.component.mjs +4 -4
- package/esm2022/list/list.module.mjs +5 -5
- package/esm2022/list/selection/selection-list.mjs +4 -4
- package/esm2022/loading/loading.component.mjs +4 -4
- package/esm2022/loading/loading.module.mjs +5 -5
- package/esm2022/mention/mention.directive.mjs +4 -4
- package/esm2022/mention/mention.module.mjs +5 -5
- package/esm2022/mention/suggestions/suggestions.component.mjs +4 -4
- package/esm2022/menu/divider/menu-divider.component.mjs +4 -4
- package/esm2022/menu/group/menu-group.component.mjs +4 -4
- package/esm2022/menu/item/action/menu-item-action.component.mjs +4 -4
- package/esm2022/menu/item/icon/menu-item-icon.component.mjs +4 -4
- package/esm2022/menu/item/menu-item.component.mjs +4 -4
- package/esm2022/menu/item/name/menu-item-name.component.mjs +4 -4
- package/esm2022/menu/menu.component.mjs +4 -4
- package/esm2022/menu/menu.module.mjs +5 -5
- package/esm2022/message/abstract/abstract-message-container.component.mjs +4 -4
- package/esm2022/message/abstract/abstract-message.component.mjs +4 -4
- package/esm2022/message/message-container.component.mjs +4 -4
- package/esm2022/message/message-queue.service.mjs +4 -4
- package/esm2022/message/message.component.mjs +4 -4
- package/esm2022/message/message.service.mjs +4 -4
- package/esm2022/message/module.mjs +5 -5
- package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +4 -4
- package/esm2022/nav/icon-nav/icon-nav.component.mjs +4 -4
- package/esm2022/nav/nav-ink-bar.directive.mjs +4 -4
- package/esm2022/nav/nav-item.directive.mjs +4 -4
- package/esm2022/nav/nav.component.mjs +4 -4
- package/esm2022/nav/nav.module.mjs +5 -5
- package/esm2022/nav/nav.pipe.mjs +4 -4
- package/esm2022/notify/module.mjs +5 -5
- package/esm2022/notify/notify-container.component.mjs +4 -4
- package/esm2022/notify/notify-queue.service.mjs +4 -4
- package/esm2022/notify/notify.component.mjs +4 -4
- package/esm2022/notify/notify.service.mjs +4 -4
- package/esm2022/pagination/pagination.component.mjs +4 -4
- package/esm2022/pagination/pagination.module.mjs +5 -5
- package/esm2022/pagination/pagination.pipe.mjs +7 -7
- package/esm2022/popover/body/popover-body.component.mjs +4 -4
- package/esm2022/popover/header/popover-header.component.mjs +4 -4
- package/esm2022/popover/module.mjs +5 -5
- package/esm2022/popover/popover-container.component.mjs +4 -4
- package/esm2022/popover/popover.directive.mjs +4 -4
- package/esm2022/popover/popover.service.mjs +4 -4
- package/esm2022/progress/progress-circle.component.mjs +4 -4
- package/esm2022/progress/progress-strip.component.mjs +4 -4
- package/esm2022/progress/progress.component.mjs +4 -4
- package/esm2022/progress/progress.module.mjs +5 -5
- package/esm2022/property/module.mjs +5 -5
- package/esm2022/property/properties.component.mjs +4 -4
- package/esm2022/property/property-item.component.mjs +4 -4
- package/esm2022/property-operation/group/property-operation-group.component.mjs +4 -4
- package/esm2022/property-operation/module.mjs +5 -5
- package/esm2022/property-operation/property-operation.component.mjs +4 -4
- package/esm2022/radio/button/radio-button.component.mjs +4 -4
- package/esm2022/radio/group/radio-group.component.mjs +4 -4
- package/esm2022/radio/module.mjs +5 -5
- package/esm2022/radio/radio.component.mjs +4 -4
- package/esm2022/rate/module.mjs +5 -5
- package/esm2022/rate/rate-item.component.mjs +4 -4
- package/esm2022/rate/rate.component.mjs +4 -4
- package/esm2022/resizable/module.mjs +5 -5
- package/esm2022/resizable/resizable.directive.mjs +4 -4
- package/esm2022/resizable/resizable.service.mjs +4 -4
- package/esm2022/resizable/resize-handle.component.mjs +4 -4
- package/esm2022/resizable/resize-handles.component.mjs +4 -4
- package/esm2022/result/result.component.mjs +4 -4
- package/esm2022/result/result.module.mjs +5 -5
- package/esm2022/segment/segment-item.component.mjs +4 -4
- package/esm2022/segment/segment.component.mjs +4 -4
- package/esm2022/segment/segment.module.mjs +5 -5
- package/esm2022/select/custom-select/custom-select.component.mjs +4 -4
- package/esm2022/select/module.mjs +5 -5
- package/esm2022/select/native-select/native-select.component.mjs +4 -4
- package/esm2022/shared/base-form-check.component.mjs +4 -4
- package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-autofocus.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-contextmenu.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-drag-drop.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-enter.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-scroll.directive.mjs +4 -4
- package/esm2022/shared/directives/thy-show.mjs +4 -4
- package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +4 -4
- package/esm2022/shared/directives/view-outlet.directive.mjs +4 -4
- package/esm2022/shared/ng-transclude.directive.mjs +4 -4
- package/esm2022/shared/option/group/option-group.component.mjs +4 -4
- package/esm2022/shared/option/list-option/list-option.component.mjs +4 -4
- package/esm2022/shared/option/module.mjs +5 -5
- package/esm2022/shared/option/option-group.component.mjs +4 -4
- package/esm2022/shared/option/option.component.mjs +4 -4
- package/esm2022/shared/option/options-container.component.mjs +4 -4
- package/esm2022/shared/select/module.mjs +5 -5
- package/esm2022/shared/select/select-control/select-control.component.mjs +4 -4
- package/esm2022/shared/shared.module.mjs +5 -5
- package/esm2022/skeleton/module.mjs +5 -5
- package/esm2022/skeleton/skeleton-circle.component.mjs +4 -4
- package/esm2022/skeleton/skeleton-rectangle.component.mjs +4 -4
- package/esm2022/skeleton/skeleton.component.mjs +4 -4
- package/esm2022/skeleton/stylized/bullet-list.component.mjs +4 -4
- package/esm2022/skeleton/stylized/list.component.mjs +4 -4
- package/esm2022/skeleton/stylized/paragraph.component.mjs +4 -4
- package/esm2022/slide/drawer/drawer-container.directive.mjs +4 -4
- package/esm2022/slide/slide-body/slide-body-section.component.mjs +4 -4
- package/esm2022/slide/slide-body/slide-body.component.mjs +4 -4
- package/esm2022/slide/slide-container.component.mjs +4 -4
- package/esm2022/slide/slide-footer/slide-footer.component.mjs +4 -4
- package/esm2022/slide/slide-header/slide-header.component.mjs +4 -4
- package/esm2022/slide/slide-layout/slide-layout.component.mjs +4 -4
- package/esm2022/slide/slide-ref.service.mjs +4 -4
- package/esm2022/slide/slide.module.mjs +5 -5
- package/esm2022/slide/slide.service.mjs +4 -4
- package/esm2022/slider/slider.component.mjs +4 -4
- package/esm2022/slider/slider.module.mjs +5 -5
- package/esm2022/space/space.component.mjs +7 -7
- package/esm2022/space/space.module.mjs +5 -5
- package/esm2022/statistic/statistic.component.mjs +4 -4
- package/esm2022/statistic/statistic.module.mjs +5 -5
- package/esm2022/stepper/step-header.component.mjs +4 -4
- package/esm2022/stepper/step.component.mjs +4 -4
- package/esm2022/stepper/stepper-button.directive.mjs +7 -7
- package/esm2022/stepper/stepper.component.mjs +4 -4
- package/esm2022/stepper/stepper.module.mjs +5 -5
- package/esm2022/strength/strength.component.mjs +4 -4
- package/esm2022/strength/strength.module.mjs +5 -5
- package/esm2022/switch/switch.component.mjs +4 -4
- package/esm2022/switch/switch.module.mjs +5 -5
- package/esm2022/table/pipes/drag.pipe.mjs +4 -4
- package/esm2022/table/pipes/table.pipe.mjs +4 -4
- package/esm2022/table/table-column.component.mjs +4 -4
- package/esm2022/table/table-skeleton.component.mjs +4 -4
- package/esm2022/table/table.component.mjs +4 -4
- package/esm2022/table/table.module.mjs +5 -5
- package/esm2022/tabs/tab-content.component.mjs +4 -4
- package/esm2022/tabs/tab.component.mjs +4 -4
- package/esm2022/tabs/tabs.component.mjs +4 -4
- package/esm2022/tabs/tabs.module.mjs +5 -5
- package/esm2022/tag/tag.component.mjs +4 -4
- package/esm2022/tag/tag.module.mjs +5 -5
- package/esm2022/tag/tags.component.mjs +4 -4
- package/esm2022/time-picker/inner/inner-time-picker.component.mjs +5 -5
- package/esm2022/time-picker/inner/inner-time-picker.config.mjs +4 -4
- package/esm2022/time-picker/inner/inner-time-picker.store.mjs +12 -9
- package/esm2022/time-picker/time-picker-panel.component.mjs +11 -12
- package/esm2022/time-picker/time-picker.component.mjs +17 -19
- package/esm2022/time-picker/time-picker.module.mjs +5 -5
- package/esm2022/time-picker/time-picker.utils.mjs +14 -8
- package/esm2022/timeline/timeline-item.component.mjs +4 -4
- package/esm2022/timeline/timeline.component.mjs +4 -4
- package/esm2022/timeline/timeline.module.mjs +5 -5
- package/esm2022/timeline/timeline.service.mjs +4 -4
- package/esm2022/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/tooltip/tooltip.module.mjs +5 -5
- package/esm2022/tooltip/tooltip.service.mjs +4 -4
- package/esm2022/transfer/transfer-list.component.mjs +4 -4
- package/esm2022/transfer/transfer.component.mjs +4 -4
- package/esm2022/transfer/transfer.module.mjs +5 -5
- package/esm2022/tree/tree-node.component.mjs +4 -4
- package/esm2022/tree/tree.component.mjs +4 -4
- package/esm2022/tree/tree.module.mjs +5 -5
- package/esm2022/tree/tree.pipe.mjs +4 -4
- package/esm2022/tree/tree.service.mjs +4 -4
- package/esm2022/tree-select/module.mjs +5 -5
- package/esm2022/tree-select/tree-select.component.mjs +7 -7
- package/esm2022/typography/bg-color.directive.mjs +4 -4
- package/esm2022/typography/module.mjs +5 -5
- package/esm2022/typography/text/text.component.mjs +4 -4
- package/esm2022/typography/text-color.directive.mjs +4 -4
- package/esm2022/upload/file-drop.directive.mjs +4 -4
- package/esm2022/upload/file-select-base.mjs +4 -4
- package/esm2022/upload/file-select.component.mjs +4 -4
- package/esm2022/upload/module.mjs +6 -7
- package/esm2022/upload/upload.service.mjs +11 -11
- package/esm2022/util/date/functions.mjs +26 -1
- package/esm2022/util/date/tiny-date.mjs +78 -34
- package/esm2022/util/index.mjs +9 -9
- package/esm2022/version.mjs +2 -2
- package/esm2022/vote/vote.component.mjs +4 -4
- package/esm2022/vote/vote.module.mjs +5 -5
- package/esm2022/watermark/watermark.directive.mjs +4 -4
- package/esm2022/watermark/watermark.module.mjs +5 -5
- package/fesm2022/ngx-tethys-action.mjs +10 -10
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +7 -7
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-alert.mjs +10 -10
- package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +10 -10
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +16 -16
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +22 -22
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +7 -7
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +7 -7
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +13 -13
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +26 -26
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +13 -13
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +84 -84
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +16 -16
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +10 -10
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +31 -31
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-comment.mjs +13 -13
- package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +7 -7
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +23 -23
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +242 -235
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +17 -18
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +22 -22
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +7 -7
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +7 -7
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +19 -19
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +46 -46
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +10 -10
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +7 -7
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +40 -40
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +13 -13
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +31 -31
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +16 -16
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +3 -3
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +13 -13
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +16 -16
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +7 -7
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +19 -19
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +58 -58
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +16 -16
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +7 -7
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +10 -10
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +25 -25
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +22 -22
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +22 -22
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +16 -16
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +13 -13
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +19 -19
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +13 -13
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +10 -10
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +10 -10
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +13 -13
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +10 -10
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +16 -16
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-result.mjs +7 -7
- package/fesm2022/ngx-tethys-result.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +10 -10
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +10 -10
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +66 -66
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +22 -22
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +31 -31
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +7 -7
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +10 -10
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +7 -7
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +19 -19
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +7 -7
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +7 -7
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +19 -19
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +13 -13
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +10 -10
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +46 -40
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +13 -13
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +13 -13
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +10 -10
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +10 -10
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +16 -16
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +13 -13
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +23 -24
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +107 -38
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +7 -7
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +7 -7
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +3 -2
- package/schematics/ng-add/index.js +2 -3
- package/schematics/ng-add/index.spec.js +21 -22
- package/schematics/ng-update/update-18/index.spec.js +7 -8
- package/schematics/testing/test-app.js +2 -5
- package/schematics/testing/test-project.js +7 -10
- package/schematics/testing/test-workspace.d.ts +1 -0
- package/schematics/testing/test-workspace.js +14 -15
- package/schematics/tsconfig.json +1 -1
- package/schematics/utils/get-workspace-tsconfig.js +8 -9
- package/schematics/utils/package-config.js +1 -2
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/time-picker/inner/inner-time-picker.store.d.ts +1 -1
- package/util/date/functions.d.ts +25 -0
- package/util/date/tiny-date.d.ts +20 -4
- package/util/index.d.ts +8 -8
|
@@ -796,8 +796,8 @@ export class ThyTable {
|
|
|
796
796
|
ngOnDestroy() {
|
|
797
797
|
this._destroyInvalidAttribute();
|
|
798
798
|
}
|
|
799
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
800
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
799
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyTable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
800
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThyTable, isStandalone: true, selector: "thy-table", inputs: { thyMode: "thyMode", thyGroupBy: "thyGroupBy", thyRowKey: "thyRowKey", thyGroups: "thyGroups", thyModel: "thyModel", thyTheme: "thyTheme", thySize: "thySize", thyMinWidth: "thyMinWidth", thyLayoutFixed: ["thyLayoutFixed", "thyLayoutFixed", coerceBooleanProperty], thyHeaderFixed: ["thyHeaderFixed", "thyHeaderFixed", coerceBooleanProperty], thyHeight: "thyHeight", thyClassName: "thyClassName", thyRowClassName: "thyRowClassName", thyLoadingDone: ["thyLoadingDone", "thyLoadingDone", coerceBooleanProperty], thyLoadingText: "thyLoadingText", thyEmptyOptions: "thyEmptyOptions", thyDraggable: ["thyDraggable", "thyDraggable", coerceBooleanProperty], thyPageIndex: ["thyPageIndex", "thyPageIndex", numberAttribute], thyPageSize: ["thyPageSize", "thyPageSize", numberAttribute], thyPageTotal: ["thyPageTotal", "thyPageTotal", numberAttribute], thyWholeRowSelect: ["thyWholeRowSelect", "thyWholeRowSelect", coerceBooleanProperty], thyHeadless: ["thyHeadless", "thyHeadless", coerceBooleanProperty], thyShowHeader: ["thyShowHeader", "thyShowHeader", coerceBooleanProperty], showTotal: ["thyShowTotal", "showTotal", coerceBooleanProperty], showSizeChanger: ["thyShowSizeChanger", "showSizeChanger", coerceBooleanProperty], pageSizeOptions: ["thyPageSizeOptions", "pageSizeOptions"], thyIndent: ["thyIndent", "thyIndent", numberAttribute], thyChildrenKey: "thyChildrenKey", thyHoverDisplayOperation: ["thyHoverDisplayOperation", "thyHoverDisplayOperation", coerceBooleanProperty], thyDragDisabledPredicate: "thyDragDisabledPredicate", thyColumnSkeletonTypes: "thyColumnSkeletonTypes" }, outputs: { thyOnSwitchChange: "thyOnSwitchChange", thyOnPageChange: "thyOnPageChange", thyOnPageIndexChange: "thyOnPageIndexChange", thyOnPageSizeChange: "thyOnPageSizeChange", thyOnMultiSelectChange: "thyOnMultiSelectChange", thyOnRadioSelectChange: "thyOnRadioSelectChange", thyOnDraggableChange: "thyOnDraggableChange", thyOnRowClick: "thyOnRowClick", thySortChange: "thySortChange", thyOnRowContextMenu: "thyOnRowContextMenu" }, host: { properties: { "class.thy-table-bordered": "theme === 'bordered'", "class.thy-table-boxed": "theme === 'boxed'", "class.thy-table-fixed-header": "thyHeaderFixed", "style.height": "this.thyHeight", "class.thy-table-hover-display-operation": "this.thyHoverDisplayOperation" }, classAttribute: "thy-table" }, providers: [
|
|
801
801
|
{
|
|
802
802
|
provide: THY_TABLE_COLUMN_PARENT_COMPONENT,
|
|
803
803
|
useExisting: ThyTable
|
|
@@ -813,7 +813,7 @@ __decorate([
|
|
|
813
813
|
InputCssPixel(),
|
|
814
814
|
__metadata("design:type", String)
|
|
815
815
|
], ThyTable.prototype, "thyHeight", void 0);
|
|
816
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
816
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyTable, decorators: [{
|
|
817
817
|
type: Component,
|
|
818
818
|
args: [{ selector: 'thy-table', providers: [
|
|
819
819
|
{
|
|
@@ -963,4 +963,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
963
963
|
type: ContentChildren,
|
|
964
964
|
args: [ThyTableColumnComponent]
|
|
965
965
|
}] } });
|
|
966
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBeUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLGVBQWUsRUFDZixNQUFNLEVBQ04sZUFBZSxFQUlmLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFrQyxpQ0FBaUMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RJLE9BQU8sRUFXSCxxQkFBcUIsRUFFeEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQVFyRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQ3pCLGtDQUFhLENBQUE7SUFDYixvQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCO0FBU0QsTUFBTSxhQUFhLEdBQUc7SUFDbEIsT0FBTyxFQUFFLGVBQWU7SUFDeEIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixLQUFLLEVBQUUsYUFBYTtDQUN2QixDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUc7SUFDZixLQUFLLEVBQUUsT0FBTztJQUNkLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sR0FBRyxHQUFHO0lBQ1IsU0FBUyxFQUFFLGdCQUFnQjtJQUMzQixlQUFlLEVBQUUsdUJBQXVCO0lBQ3hDLGdCQUFnQixFQUFFLHdCQUF3QjtJQUMxQyxpQkFBaUIsRUFBRSx5QkFBeUI7Q0FDL0MsQ0FBQztBQUVGLE1BQU0sMkJBQTJCLEdBQUcsK0JBQStCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUV2Rjs7OztHQUlHO0FBc0NILE1BQU0sT0FBTyxRQUFRO0lBK0RqQixJQUFZLGtCQUFrQjtRQUMxQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7SUFDakcsQ0FBQztJQUVELElBQVksT0FBTztRQUNmLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFhLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQVlEOzs7O09BSUc7SUFDSCxJQUNJLE9BQU8sQ0FBQyxLQUFtQjtRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksVUFBVSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksU0FBUyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFjO1FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ0ksUUFBUSxDQUFDLEtBQW9CO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDSSxPQUFPLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQTZCRDs7T0FFRztJQUNILElBQ0ksWUFBWSxDQUFDLEtBQWE7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksZUFBZSxDQUFDLEtBQXdCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLGNBQWMsQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLGNBQWMsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksZUFBZSxDQUFDLEtBQTJCO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksWUFBWSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFdBQVcsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxpQkFBaUIsQ0FBQyxLQUFjO1FBQ2hDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsU0FBUyxJQUFJLGNBQWMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQVFEOzs7T0FHRztJQUNILElBQ0ksYUFBYSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBWUQ7OztPQUdHO0lBQ0gsSUFDSSxlQUFlLENBQUMsS0FBZTtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQStFRCxJQUNJLHNCQUFzQixDQUFDLFVBQThDO1FBQ3JFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDL0YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQztJQWFEO1FBaGFBLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QywyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4RCxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV2QixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFFeEIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUVyQixXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUU3QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBSWYsU0FBSSxHQUFpQixNQUFNLENBQUM7UUFFNUIsVUFBSyxHQUFrQixTQUFTLENBQUM7UUFFakMsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLFNBQUksR0FBaUIsSUFBSSxDQUFDO1FBSTFCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSW5CLGlCQUFZLEdBQXlCLEVBQUUsQ0FBQztRQUV4QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUVqQyxlQUFVLEdBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFJbkYsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsbUJBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUVuQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLFlBQU8sR0FBOEIsRUFBRSxDQUFDO1FBSXZDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUV0QixvQkFBZSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUE2TjlDOzs7V0FHRztRQUMwQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVdqRTs7V0FFRztRQUNpRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXRGOztXQUVHO1FBQ3VFLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBV2xHOztXQUVHO1FBQ29DLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFdEQ7OztXQUdHO1FBQ00sbUJBQWMsR0FBRyxVQUFVLENBQUM7UUFVNUIsNkJBQXdCLEdBQStCLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUU1RTs7O1dBR0c7UUFDTSwyQkFBc0IsR0FBaUM7WUFDNUQsMEJBQTBCLENBQUMsS0FBSztZQUNoQywwQkFBMEIsQ0FBQyxNQUFNO1lBQ2pDLDBCQUEwQixDQUFDLE9BQU87U0FDckMsQ0FBQztRQUVGOztXQUVHO1FBQ08sc0JBQWlCLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRS9GOztXQUVHO1FBQ08sb0JBQWUsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFakc7O1dBRUc7UUFDTyx5QkFBb0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV4RSx3QkFBbUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRjs7V0FFRztRQUNPLDJCQUFzQixHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUU5Rzs7V0FFRztRQUNPLDJCQUFzQixHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUU5Rzs7V0FFRztRQUNPLHlCQUFvQixHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUVsSDs7V0FFRztRQUNPLGtCQUFhLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRS9GOztXQUVHO1FBQ08sa0JBQWEsR0FBb0MsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFFdkYsd0JBQW1CLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBaUIvRixZQUFZO1FBQ0wsb0JBQWUsR0FBd0IsRUFBRSxDQUFDO1FBRTFDLDJCQUFzQixHQUF3QixFQUFFLENBQUM7UUFFaEQscUNBQWdDLEdBQXdCLEVBQUUsQ0FBQztRQUVuRSxxQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQztRQUVyQyxvQkFBZSxHQUE2QixFQUFFLENBQUM7UUEwUnRELDJCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLElBQWEsRUFBRSxJQUFpQixFQUFFLEVBQUU7WUFDekUsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3RSxDQUFDLENBQUM7UUF6UkUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5RSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTywrQkFBK0I7UUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUYsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxNQUErQjtRQUNuRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsR0FBVyxFQUFFLE1BQStCO1FBQ3pFLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEdBQVk7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFpQztRQUN2RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBcUMsRUFBRSxFQUFFO2dCQUMvRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBeUIsS0FBYSxFQUFFLEdBQVk7WUFDakUsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVPLHdCQUF3QjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLO1FBQzNCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxHQUFXLEVBQUUsVUFBbUI7UUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQVk7UUFDN0IsT0FBTyxHQUFHLFlBQVksV0FBVyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBWSxFQUFFLElBQVk7UUFDM0MsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxHQUFZLEVBQUUsS0FBYTtRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFRLElBQUksQ0FBQyxZQUF5QixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxHQUFZLEVBQUUsTUFBK0I7UUFDOUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBWTtRQUNqQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBdUI7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxHQUFZLEVBQUUsTUFBK0I7UUFDakUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQVksRUFBRSxHQUFZLEVBQUUsTUFBK0I7UUFDbEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxnQkFBZ0IsR0FBd0I7WUFDMUMsS0FBSyxFQUFFLEtBQUs7WUFDWixHQUFHLEVBQUUsR0FBRztZQUNSLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBWSxFQUFFLEdBQVk7UUFDakQsTUFBTSxnQkFBZ0IsR0FBd0I7WUFDMUMsS0FBSyxFQUFFLEtBQUs7WUFDWixHQUFHLEVBQUUsR0FBRztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFZLEVBQUUsR0FBWSxFQUFFLE1BQWU7UUFDN0QsTUFBTSxXQUFXLEdBQW1CO1lBQ2hDLEtBQUssRUFBRSxLQUFLO1lBQ1osR0FBRyxFQUFFLEdBQUc7WUFDUixPQUFPLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRTtnQkFDeEIsS0FBSyxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUM7Z0JBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFZO1FBQ25CLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLE1BQWU7UUFDM0MsT0FBTztZQUNILElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUk7WUFDeEIsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSTtZQUMxQixRQUFRLEVBQUUsVUFBVTtZQUNwQixXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSTtTQUN2RCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFZO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQTRCO1FBQzNDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDM0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUEwQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQTJCO1FBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsYUFBYTtZQUNiLE1BQU0sU0FBUyxHQUEyQjtnQkFDdEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDN0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxZQUFZO2FBQy9CLENBQUM7WUFDRixlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ0osc0JBQXNCO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQ1osS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNYLE1BQU0sU0FBUyxHQUEyQjtnQkFDdEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNqQixNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYSxHQUFHLFVBQVU7Z0JBQzFDLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxHQUFHLFVBQVU7YUFDNUMsQ0FBQztZQUNGLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBNEI7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsTUFBTSxXQUFXLEdBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxDQUFDO1lBQzVGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtvQkFDMUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxJQUFJLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBTU8sa0JBQWtCLENBQUMsS0FBMkI7UUFDbEQsTUFBTSxTQUFTLEdBQTJCO1lBQ3RDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDbEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWTtTQUMvQixDQUFDO1FBQ0YsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQTJCO1FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFZLEVBQUUsTUFBK0I7UUFDN0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQ3BELElBQUksU0FBUyxDQUFDO1lBQ2QsSUFBSSxhQUFhLEtBQUsscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xELFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxJQUFJLGFBQWEsS0FBSyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osU0FBUyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztZQUM5QyxDQUFDO1lBQ0QsTUFBTSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7WUFDakMsTUFBTSxTQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNuRCxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVksRUFBRSxHQUFZO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDO2dCQUMvRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDakQsQ0FBQztvQkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO3dCQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN6QyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUc7Z0JBQ2IsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osR0FBRyxFQUFFLEdBQUc7YUFDWCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQ0FBaUMsQ0FBQyxLQUFZLEVBQUUsR0FBWTtRQUNoRSxJQUFLLEtBQUssQ0FBQyxNQUFrQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQVksRUFBRSxHQUFZO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQWtCO1lBQ3BDLEtBQUssRUFBRSxLQUFLO1lBQ1osR0FBRyxFQUFFLEdBQUc7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxlQUFlO1FBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDeEMsT0FBTztnQkFDSCxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUzthQUNqQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXLENBQUMsWUFBcUI7UUFDckMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sS0FBSyxHQUFrQixFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFFL0UsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFhLENBQUMsTUFBTSxDQUFDO1lBQ25FLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxVQUFVO1FBQ2QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBb0I7UUFDbkMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZLENBQUMsTUFBdUI7UUFDeEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUF1QjtRQUN0QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDNUUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUN6QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxhQUFhLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4RCxJQUFJLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDaEQsQ0FBQztpQkFBTSxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQy9DLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXhCLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDbEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUErQixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3BFLE1BQU0sSUFBSSxHQUFHO2dCQUNULElBQUksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksMEJBQTBCLENBQUMsT0FBTztnQkFDOUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTTthQUNoQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTzthQUNaLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNwQixTQUFTLENBQ0wsR0FBRyxFQUFFLENBQ0QsSUFBSSxVQUFVLENBQVEsVUFBVSxDQUFDLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDL0IsS0FBSyxDQUNELEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDbkIsU0FBUyxDQUNMLEdBQUcsQ0FBQyxhQUFhO1FBQ2pCLGtGQUFrRjtRQUNsRixvRkFBb0Y7UUFDcEYsc0dBQXNHO1FBQ3RHLHdHQUF3RztRQUN4RyxpR0FBaUc7UUFDakcsb0dBQW9HO1FBQ3BHLHNGQUFzRjtRQUN0RixNQUFNLENBQUMsWUFBWTtZQUNmLENBQUMsQ0FBQyxhQUFhO1lBQ2YsQ0FBQyxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsYUFBYTtnQkFDbkMsQ0FBQyxDQUFDLFlBQVk7Z0JBQ2QsQ0FBQyxDQUFDLFdBQVc7UUFDbkIsa0ZBQWtGO1FBQ2xGLDhEQUE4RDtRQUM5RCwrRUFBK0U7UUFDdEQsMkJBQTJCLENBQ3ZELENBQ0osQ0FDSixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FDMUIsQ0FDSixDQUNSLEVBQ0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsV0FBVyxDQUFDLGFBQTRCO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDekMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxVQUFVLElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUM7UUFDdEUsSUFBSSxXQUFXLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzhHQTc3QlEsUUFBUTtrR0FBUixRQUFRLHNTQXFLRyxxQkFBcUIsd0RBTXJCLHFCQUFxQixrSkF1Q3JCLHFCQUFxQix3SEEwQnJCLHFCQUFxQixrREFZckIsZUFBZSwrQ0FTZixlQUFlLGtEQVFmLGVBQWUsaUVBU2YscUJBQXFCLCtDQVlyQixxQkFBcUIscURBTXJCLHFCQUFxQiw0Q0FRRSxxQkFBcUIsOERBS2YscUJBQXFCLHFHQWNsRCxlQUFlLHdIQWFmLHFCQUFxQixrMkJBOVc5QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQ0FBaUM7Z0JBQzFDLFdBQVcsRUFBRSxRQUFRO2FBQ3hCO1lBQ0Qsc0JBQXNCO1NBQ3pCLGlRQXFhZ0IsdUJBQXVCLGtNQTFUVixVQUFVLGtEQ3ZPNUMscTdaQXlTQSw0Q0RuS1EsYUFBYSw4RUFDYixPQUFPLG9GQUNQLGdCQUFnQixvSkFDaEIsT0FBTyxzTUFDUCxvQkFBb0IsMERBQ3BCLFdBQVcsOGZBQ1gsT0FBTyx3Y0FDUCx1QkFBdUIsMEZBQ3ZCLE9BQU8sMEVBQ1AsV0FBVyxtL0JBQ1gsU0FBUyw0SUFDVCxRQUFRLDhUQUNSLGdCQUFnQiw0UUFDaEIsYUFBYSxpYUFDYiwwQkFBMEIscURBQzFCLHdCQUF3Qjs7QUFrSzVCO0lBREMsYUFBYSxFQUFFOzs2Q0FDYTtBQW9CN0I7SUFEQyxhQUFhLEVBQUU7OzJDQUNFOzJGQW5MVCxRQUFRO2tCQXJDcEIsU0FBUzsrQkFDSSxXQUFXLGFBRVY7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlDQUFpQzs0QkFDMUMsV0FBVyxVQUFVO3lCQUN4Qjt3QkFDRCxzQkFBc0I7cUJBQ3pCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLFdBQVc7d0JBQ2xCLDRCQUE0QixFQUFFLHNCQUFzQjt3QkFDcEQseUJBQXlCLEVBQUUsbUJBQW1CO3dCQUM5QyxnQ0FBZ0MsRUFBRSxnQkFBZ0I7cUJBQ3JELGNBQ1csSUFBSSxXQUNQO3dCQUNMLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1Asb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLE9BQU87d0JBQ1AsdUJBQXVCO3dCQUN2QixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDM0I7d0RBNkVzQixhQUFhO3NCQUFuQyxZQUFZO3VCQUFDLE9BQU87Z0JBRWlCLGVBQWU7c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFUSxJQUFJO3NCQUEvQyxZQUFZO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBUXRDLE9BQU87c0JBRFYsS0FBSztnQkFTRixVQUFVO3NCQURiLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO2dCQVNGLFNBQVM7c0JBRFosS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBaUJGLFFBQVE7c0JBRFgsS0FBSztnQkFZRixPQUFPO3NCQURWLEtBQUs7Z0JBV04sV0FBVztzQkFGVixLQUFLO2dCQVF1QyxjQUFjO3NCQUExRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQU1FLGNBQWM7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBUTNDLFNBQVM7c0JBSFIsV0FBVzt1QkFBQyxjQUFjOztzQkFDMUIsS0FBSztnQkFRRixZQUFZO3NCQURmLEtBQUs7Z0JBa0JGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBVUYsY0FBYztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFVdkMsY0FBYztzQkFEakIsS0FBSztnQkFTRixlQUFlO3NCQURsQixLQUFLO2dCQVVGLFlBQVk7c0JBRGYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFhdkMsWUFBWTtzQkFEZixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFVakMsV0FBVztzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFTakMsWUFBWTtzQkFEZixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFVakMsaUJBQWlCO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQVlFLFdBQVc7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBT3ZDLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBUXlCLFNBQVM7c0JBQTVFLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFLUSxlQUFlO3NCQUF4RixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFPcEUsZUFBZTtzQkFEbEIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBUVksU0FBUztzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBTTVCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUU4sd0JBQXdCO3NCQUZ2QixXQUFXO3VCQUFDLHlDQUF5Qzs7c0JBQ3JELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBR2xDLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFNRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBU0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUtHLGVBQWU7c0JBQXhCLE1BQU07Z0JBS0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFLRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBS0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUtHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFLRyxhQUFhO3NCQUF0QixNQUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVrQyxhQUFhO3NCQUFyRCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR25DLHNCQUFzQjtzQkFEekIsZUFBZTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dENzc1BpeGVsLCBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIFNhZmVBbnkgfSBmcm9tICduZ3gtdGV0aHlzL3R5cGVzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgZ2V0LCBoZWxwZXJzLCBpc1N0cmluZywga2V5QnksIHNldCB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBFTVBUWSwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbmQsIENka0RyYWdTdGFydCwgQ2RrRHJvcExpc3QsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IG5vcm1hbGl6ZVBhc3NpdmVMaXN0ZW5lck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1TZXJ2ZXIsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgTmdab25lLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElUaHlUYWJsZUNvbHVtblBhcmVudENvbXBvbmVudCwgVEhZX1RBQkxFX0NPTFVNTl9QQVJFTlRfQ09NUE9ORU5ULCBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIFBhZ2VDaGFuZ2VkRXZlbnQsXG4gICAgVGh5TXVsdGlTZWxlY3RFdmVudCxcbiAgICBUaHlQYWdlLFxuICAgIFRoeVJhZGlvU2VsZWN0RXZlbnQsXG4gICAgVGh5U3dpdGNoRXZlbnQsXG4gICAgVGh5VGFibGVTa2VsZXRvbkNvbHVtbixcbiAgICBUaHlUYWJsZURyYWdnYWJsZUV2ZW50LFxuICAgIFRoeVRhYmxlRW1wdHlPcHRpb25zLFxuICAgIFRoeVRhYmxlRXZlbnQsXG4gICAgVGh5VGFibGVSb3dFdmVudCxcbiAgICBUaHlUYWJsZVNvcnREaXJlY3Rpb24sXG4gICAgVGh5VGFibGVTb3J0RXZlbnRcbn0gZnJvbSAnLi90YWJsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVSb3dEcmFnRGlzYWJsZWRQaXBlIH0gZnJvbSAnLi9waXBlcy9kcmFnLnBpcGUnO1xuaW1wb3J0IHsgVGFibGVJc1ZhbGlkTW9kZWxWYWx1ZVBpcGUgfSBmcm9tICcuL3BpcGVzL3RhYmxlLnBpcGUnO1xuaW1wb3J0IHsgVGh5UGFnaW5hdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUaHlUYWJsZVNrZWxldG9uIH0gZnJvbSAnLi90YWJsZS1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5RW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL2VtcHR5JztcbmltcG9ydCB7IFRoeVN3aXRjaCB9IGZyb20gJ25neC10ZXRoeXMvc3dpdGNoJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5RHJhZ0Ryb3BEaXJlY3RpdmUsIFRoeUNvbnRleHRNZW51RGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBUaHlUYWJsZUNvbHVtblNrZWxldG9uVHlwZSB9IGZyb20gJy4vZW51bXMnO1xuXG5leHBvcnQgdHlwZSBUaHlUYWJsZVRoZW1lID0gJ2RlZmF1bHQnIHwgJ2JvcmRlcmVkJyB8ICdib3hlZCc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhYmxlTW9kZSA9ICdsaXN0JyB8ICdncm91cCcgfCAndHJlZSc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhYmxlU2l6ZSA9ICdtZCcgfCAnc20nIHwgJ3hzJyB8ICdsZycgfCAneGxnJyB8ICdkZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGh5Rml4ZWREaXJlY3Rpb24ge1xuICAgIGxlZnQgPSAnbGVmdCcsXG4gICAgcmlnaHQgPSAncmlnaHQnXG59XG5cbmludGVyZmFjZSBUaHlUYWJsZUdyb3VwPFQgPSB1bmtub3duPiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgZXhwYW5kPzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbj86IG9iamVjdFtdO1xuICAgIG9yaWdpbj86IFQ7XG59XG5cbmNvbnN0IHRhYmxlVGhlbWVNYXAgPSB7XG4gICAgZGVmYXVsdDogJ3RhYmxlLWRlZmF1bHQnLFxuICAgIGJvcmRlcmVkOiAndGFibGUtYm9yZGVyZWQnLFxuICAgIGJveGVkOiAndGFibGUtYm94ZWQnXG59O1xuXG5jb25zdCBjdXN0b21UeXBlID0ge1xuICAgIGluZGV4OiAnaW5kZXgnLFxuICAgIGNoZWNrYm94OiAnY2hlY2tib3gnLFxuICAgIHJhZGlvOiAncmFkaW8nLFxuICAgIHN3aXRjaDogJ3N3aXRjaCdcbn07XG5cbmNvbnN0IGNzcyA9IHtcbiAgICB0YWJsZUJvZHk6ICd0aHktdGFibGUtYm9keScsXG4gICAgdGFibGVTY3JvbGxMZWZ0OiAndGh5LXRhYmxlLXNjcm9sbC1sZWZ0JyxcbiAgICB0YWJsZVNjcm9sbFJpZ2h0OiAndGh5LXRhYmxlLXNjcm9sbC1yaWdodCcsXG4gICAgdGFibGVTY3JvbGxNaWRkbGU6ICd0aHktdGFibGUtc2Nyb2xsLW1pZGRsZSdcbn07XG5cbmNvbnN0IHBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9ucyA9IG5vcm1hbGl6ZVBhc3NpdmVMaXN0ZW5lck9wdGlvbnMoeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG4vKipcbiAqIOihqOagvOe7hOS7tlxuICogQG5hbWUgdGh5LXRhYmxlXG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIWV9UQUJMRV9DT0xVTU5fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaHlUYWJsZVxuICAgICAgICB9LFxuICAgICAgICBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktdGFibGUnLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJsZS1ib3JkZXJlZF0nOiBgdGhlbWUgPT09ICdib3JkZXJlZCdgLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJsZS1ib3hlZF0nOiBgdGhlbWUgPT09ICdib3hlZCdgLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJsZS1maXhlZC1oZWFkZXJdJzogJ3RoeUhlYWRlckZpeGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeURyYWdEcm9wRGlyZWN0aXZlLFxuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgVGh5Q29udGV4dE1lbnVEaXJlY3RpdmUsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBUaHlTd2l0Y2gsXG4gICAgICAgIFRoeUVtcHR5LFxuICAgICAgICBUaHlUYWJsZVNrZWxldG9uLFxuICAgICAgICBUaHlQYWdpbmF0aW9uLFxuICAgICAgICBUYWJsZUlzVmFsaWRNb2RlbFZhbHVlUGlwZSxcbiAgICAgICAgVGFibGVSb3dEcmFnRGlzYWJsZWRQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIElUaHlUYWJsZUNvbHVtblBhcmVudENvbXBvbmVudCB7XG4gICAgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIF9kaWZmZXJzID0gaW5qZWN0KEl0ZXJhYmxlRGlmZmVycyk7XG4gICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyID0gaW5qZWN0KFZpZXdwb3J0UnVsZXIpO1xuICAgIHByaXZhdGUgdXBkYXRlSG9zdENsYXNzU2VydmljZSA9IGluamVjdChVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlKTtcbiAgICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIHB1YmxpYyBjdXN0b21UeXBlID0gY3VzdG9tVHlwZTtcblxuICAgIHB1YmxpYyBtb2RlbDogb2JqZWN0W10gPSBbXTtcblxuICAgIHB1YmxpYyBncm91cHM6IFRoeVRhYmxlR3JvdXBbXSA9IFtdO1xuXG4gICAgcHVibGljIHJvd0tleSA9ICdfaWQnO1xuXG4gICAgcHVibGljIGdyb3VwQnk6IHN0cmluZztcblxuICAgIHB1YmxpYyBtb2RlOiBUaHlUYWJsZU1vZGUgPSAnbGlzdCc7XG5cbiAgICBwdWJsaWMgdGhlbWU6IFRoeVRhYmxlVGhlbWUgPSAnZGVmYXVsdCc7XG5cbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gJyc7XG5cbiAgICBwdWJsaWMgc2l6ZTogVGh5VGFibGVTaXplID0gJ21kJztcblxuICAgIHB1YmxpYyByb3dDbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uO1xuXG4gICAgcHVibGljIGxvYWRpbmdEb25lID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsb2FkaW5nVGV4dDogc3RyaW5nO1xuXG4gICAgcHVibGljIGVtcHR5T3B0aW9uczogVGh5VGFibGVFbXB0eU9wdGlvbnMgPSB7fTtcblxuICAgIHB1YmxpYyBkcmFnZ2FibGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFJhZGlvUm93OiBTYWZlQW55ID0gbnVsbDtcblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uOiBUaHlQYWdlID0geyBpbmRleDogMSwgc2l6ZTogMjAsIHRvdGFsOiAwLCBzaXplT3B0aW9uczogWzIwLCA1MCwgMTAwXSB9O1xuXG4gICAgcHVibGljIHRyYWNrQnlGbjogU2FmZUFueTtcblxuICAgIHB1YmxpYyB3aG9sZVJvd1NlbGVjdCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGZpeGVkRGlyZWN0aW9uID0gVGh5Rml4ZWREaXJlY3Rpb247XG5cbiAgICBwdWJsaWMgaGFzRml4ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb2x1bW5zOiBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudFtdID0gW107XG5cbiAgICBwcml2YXRlIF9kaWZmOiBJdGVyYWJsZURpZmZlcjxTYWZlQW55PjtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX29sZFRoeUNsYXNzTmFtZSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBzY3JvbGxDbGFzc05hbWUgPSBjc3MudGFibGVTY3JvbGxMZWZ0O1xuXG4gICAgcHJpdmF0ZSBnZXQgdGFibGVTY3JvbGxFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY3NzLnRhYmxlQm9keSlbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgc2Nyb2xsJCgpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHRoaXMudGFibGVTY3JvbGxFbGVtZW50ID8gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudGFibGVTY3JvbGxFbGVtZW50LCAnc2Nyb2xsJykgOiBFTVBUWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5pWw5o2u5Li656m65pe25bGV56S655qE5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eScpIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8U2FmZUFueT47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdyb3dzJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHJvd3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICAvKipcbiAgICAgKiDooajmoLzlsZXnpLrmlrnlvI/vvIzliJfooagv5YiG57uEL+agkVxuICAgICAqIEB0eXBlIGxpc3QgfCBncm91cCB8IHRyZWVcbiAgICAgKiBAZGVmYXVsdCBsaXN0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TW9kZSh2YWx1ZTogVGh5VGFibGVNb2RlKSB7XG4gICAgICAgIHRoaXMubW9kZSA9IHZhbHVlIHx8IHRoaXMubW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aHlNb2Rl55qE5YC85Li6IGBncm91cGAg5pe25YiG57uE55qEIEtleVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUdyb3VwQnkodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3VwQnkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mr4/ooYzmlbDmja7nmoTllK/kuIDmoIfor4blsZ7mgKflkI1cbiAgICAgKiBAZGVmYXVsdCBfaWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlSb3dLZXkodmFsdWU6IFNhZmVBbnkpIHtcbiAgICAgICAgdGhpcy5yb3dLZXkgPSB2YWx1ZSB8fCB0aGlzLnJvd0tleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDliIbnu4TmlbDmja7mupBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlHcm91cHModmFsdWU6IFNhZmVBbnkpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3Vwcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlbDmja7mupBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlNb2RlbCh2YWx1ZTogU2FmZUFueSkge1xuICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWUgfHwgW107XG4gICAgICAgIHRoaXMuX2RpZmYgPSB0aGlzLl9kaWZmZXJzLmZpbmQodGhpcy5tb2RlbCkuY3JlYXRlKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVEYXRhTW9kZWwoKTtcblxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOihqOagvOeahOaYvuekuumjjuagvO+8jGBib3JkZXJlZGAg5pe25aS06YOo5pyJ6IOM5pmv6Imy5LiU5YiG5Ymy57q/5Yy65Yir5piO5pi+XG4gICAgICogQHR5cGUgZGVmYXVsdCB8IGJvcmRlcmVkIHwgYm94ZWRcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VGhlbWUodmFsdWU6IFRoeVRhYmxlVGhlbWUpIHtcbiAgICAgICAgdGhpcy50aGVtZSA9IHZhbHVlIHx8IHRoaXMudGhlbWU7XG4gICAgICAgIHRoaXMuX3NldENsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6KGo5qC855qE5aSn5bCPXG4gICAgICogQHR5cGUgeHMgfCBzbSB8IG1kIHwgbGcgfCB4bGcgfCBkZWZhdWx0XG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlTaXplKHZhbHVlOiBUaHlUYWJsZVNpemUpIHtcbiAgICAgICAgdGhpcy5zaXplID0gdmFsdWUgfHwgdGhpcy5zaXplO1xuICAgICAgICB0aGlzLl9zZXRDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruihqOagvOacgOWwj+WuveW6pu+8jOS4gOiIrOaYr+mAgueUqOS6juiuvue9ruWIl+WuveS4uueZvuWIhuS5i+aIlmF1dG/ml7bpmZDliLbooajmoLzmnIDlsI/lrr3luqYnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRDc3NQaXhlbCgpXG4gICAgdGh5TWluV2lkdGg6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruS4uiBmaXhlZCDluIPlsYDooajmoLzvvIzorr7nva4gZml4ZWQg5ZCO77yM5YiX5a695bCG5Lil5qC85oyJ54Wn6K6+572u5a695bqm5bGV56S677yM5YiX5a695bCG5LiN5Lya5qC55o2u6KGo5qC85YaF5a656Ieq5Yqo6LCD5pW0XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlMYXlvdXRGaXhlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuihqOWktOWbuuWumu+8jOiLpeiuvue9ruS4uiB0cnVl77yMIOmcgOimgeWQjOatpeiuvue9riB0aHlIZWlnaHRcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUhlYWRlckZpeGVkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC855qE6auY5bqmXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Q3NzUGl4ZWwoKVxuICAgIHRoeUhlaWdodDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u6KGo5qC855qE5qC35byPXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuY2xhc3NOYW1lLnNwbGl0KCcgJykuZmlsdGVyKGEgPT4gYS50cmltKCkpO1xuICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gbGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLl9vbGRUaHlDbGFzc05hbWUpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGlzdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbGRUaHlDbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBsaXN0LmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ooajmoLzooYznmoTmoLflvI/vvIzkvKDlhaXlh73mlbDvvIzmlK/mjIEgcm9344CBaW5kZXhcbiAgICAgKiBAdHlwZSBzdHJpbmcgfCAocm93LCBpbmRleCkgPT4gc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Um93Q2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLnJvd0NsYXNzTmFtZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWKoOi9veeKtuaAgVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlMb2FkaW5nRG9uZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmxvYWRpbmdEb25lID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5Yqg6L295pe25pi+56S655qE5paH5pys77yM5bey5bqf5byDXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlMb2FkaW5nVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1RleHQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDphY3nva7nqbrnirbmgIHnu4Tku7ZcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlFbXB0eU9wdGlvbnModmFsdWU6IFRoeVRhYmxlRW1wdHlPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZW1wdHlPcHRpb25zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byA5ZCv6KGM5ouW5ou9XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlEcmFnZ2FibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kcmFnZ2FibGUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKCh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHRoaXMuZHJhZ2dhYmxlICYmIHRoaXMubW9kZSA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyZWUgbW9kZSBzb3J0aW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruW9k+WJjemhteeggVxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24uaW5kZXggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mr4/pobXmmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCAyMFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnNpemUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mgLvpobXmlbBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlVG90YWwodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24udG90YWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDpgInkuK3lvZPliY3ooYzmmK/lkKboh6rliqjpgInkuK0gQ2hlY2tib3jvvIzkuI3lvIDlkK/ml7blj6rmnInngrnlh7sgQ2hlY2tib3gg5YiX5pe25omN5Lya6Kem5Y+R6YCJ5LitXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlXaG9sZVJvd1NlbGVjdCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lICs9ICcgdGFibGUtaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2hvbGVSb3dTZWxlY3QgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrooajmoLzlpLRcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUhlYWRsZXNzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrooajmoLzlpLTvvIzlt7Llup/lvIPvvIzor7fkvb/nlKggdGh5SGVhZGxlc3NcbiAgICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIHRoeUhlYWRsZXNzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgdGh5U2hvd0hlYWRlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRoeUhlYWRsZXNzID0gIXZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW3puS+pyBUb3RhbFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5U2hvd1RvdGFsJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgc2hvd1RvdGFsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrosIPmlbTmr4/pobXmmL7npLrmnaHmlbDkuIvmi4nmoYZcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeVNob3dTaXplQ2hhbmdlcicsIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHNob3dTaXplQ2hhbmdlciA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5q+P6aG15pi+56S65p2h5pWw5LiL5ouJ5qGG5Y+v6YCJ6aG5XG4gICAgICogQHR5cGUgbnVtYmVyW11cbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVBhZ2VTaXplT3B0aW9ucycpXG4gICAgc2V0IHBhZ2VTaXplT3B0aW9ucyh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnNpemVPcHRpb25zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdGh5TW9kZSDkuLogdHJlZSDml7bvvIzorr7nva4gVHJlZSDmoJHnirbmlbDmja7lsZXnpLrml7bnmoTnvKnov5tcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0aHlJbmRlbnQgPSAyMDtcblxuICAgIC8qKlxuICAgICAqIHRoeU1vZGUg5Li6IHRyZWUg5pe277yM6K6+572uIFRyZWUg5qCR54q25pWw5o2u5a+56LGh5Lit55qE5a2Q6IqC54K5IEtleVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNoaWxkcmVuS2V5ID0gJ2NoaWxkcmVuJztcblxuICAgIC8qKlxuICAgICAqIOW8gOWQryBIb3ZlciDlkI7mmL7npLrmk43kvZzvvIzpu5jorqTkuI3mmL7npLrmk43kvZzljLrlhoXlrrnvvIzpvKDmoIcgSG92ZXIg5pe25bGV56S6XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS10YWJsZS1ob3Zlci1kaXNwbGF5LW9wZXJhdGlvbicpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlIb3ZlckRpc3BsYXlPcGVyYXRpb246IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0aHlEcmFnRGlzYWJsZWRQcmVkaWNhdGU6IChpdGVtOiBTYWZlQW55KSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDooajmoLzliJfnmoTpqqjmnrbnsbvlnotcbiAgICAgKiBAdHlwZSBUaHlUYWJsZUNvbHVtblNrZWxldG9uVHlwZVtdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Q29sdW1uU2tlbGV0b25UeXBlczogVGh5VGFibGVDb2x1bW5Ta2VsZXRvblR5cGVbXSA9IFtcbiAgICAgICAgVGh5VGFibGVDb2x1bW5Ta2VsZXRvblR5cGUudGl0bGUsXG4gICAgICAgIFRoeVRhYmxlQ29sdW1uU2tlbGV0b25UeXBlLm1lbWJlcixcbiAgICAgICAgVGh5VGFibGVDb2x1bW5Ta2VsZXRvblR5cGUuZGVmYXVsdFxuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiDliIfmjaLnu4Tku7blm57osIPkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25Td2l0Y2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlTd2l0Y2hFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVN3aXRjaEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC85YiG6aG15Zue6LCD5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlQ2hhbmdlZEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC85YiG6aG15b2T5YmN6aG15pS55Y+Y5Zue6LCD5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUGFnZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpIHRoeU9uUGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlpJrpgInlm57osIPkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25NdWx0aVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPFRoeU11bHRpU2VsZWN0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlNdWx0aVNlbGVjdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog5Y2V6YCJ5Zue6LCD5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUmFkaW9TZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlSYWRpb1NlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5UmFkaW9TZWxlY3RFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOaLluWKqOS/ruaUueS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkRyYWdnYWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPFRoeVRhYmxlRHJhZ2dhYmxlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUYWJsZURyYWdnYWJsZUV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC86KGM54K55Ye76Kem5Y+R5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxUaHlUYWJsZVJvd0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VGFibGVSb3dFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOWIl+aOkuW6j+S/ruaUueS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5VGFibGVTb3J0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUYWJsZVNvcnRFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSB0aHlPblJvd0NvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8VGh5VGFibGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRhYmxlRXZlbnQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKCdncm91cCcsIHsgc3RhdGljOiB0cnVlIH0pIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgICBzZXQgbGlzdE9mQ29sdW1uQ29tcG9uZW50cyhjb21wb25lbnRzOiBRdWVyeUxpc3Q8VGh5VGFibGVDb2x1bW5Db21wb25lbnQ+KSB7XG4gICAgICAgIGlmIChjb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBjb21wb25lbnRzLnRvQXJyYXkoKTtcbiAgICAgICAgICAgIHRoaXMuaGFzRml4ZWQgPSAhIXRoaXMuY29sdW1ucy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZpeGVkID09PSB0aGlzLmZpeGVkRGlyZWN0aW9uLmxlZnQgfHwgaXRlbS5maXhlZCA9PT0gdGhpcy5maXhlZERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5idWlsZFNrZWxldG9uQ29sdW1ucygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbHVtbnMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVEYXRhTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOaVsOaNrueahOaKmOWPoOWxleW8gOeKtuaAgVxuICAgIHB1YmxpYyBleHBhbmRTdGF0dXNNYXA6IERpY3Rpb25hcnk8Ym9vbGVhbj4gPSB7fTtcblxuICAgIHB1YmxpYyBleHBhbmRTdGF0dXNNYXBPZkdyb3VwOiBEaWN0aW9uYXJ5PGJvb2xlYW4+ID0ge307XG5cbiAgICBwcml2YXRlIGV4cGFuZFN0YXR1c01hcE9mR3JvdXBCZWZvcmVEcmFnOiBEaWN0aW9uYXJ5PGJvb2xlYW4+ID0ge307XG5cbiAgICBkcmFnUHJldmlld0NsYXNzID0gJ3RoeS10YWJsZS1kcmFnLXByZXZpZXcnO1xuXG4gICAgcHVibGljIHNrZWxldG9uQ29sdW1uczogVGh5VGFibGVTa2VsZXRvbkNvbHVtbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fYmluZFRyYWNrRm4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ29sdW1ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbnMuc29tZShpdGVtID0+IGl0ZW0uZXhwYW5kID09PSB0cnVlKSAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zWzBdLmV4cGFuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbHVtbkZpeGVkUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUNvbHVtbkZpeGVkUG9zaXRpb25zKCkge1xuICAgICAgICBjb25zdCBsZWZ0Rml4ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+IGl0ZW0uZml4ZWQgPT09IFRoeUZpeGVkRGlyZWN0aW9uLmxlZnQpO1xuICAgICAgICBsZWZ0Rml4ZWRDb2x1bW5zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IGxlZnRGaXhlZENvbHVtbnNbaW5kZXggLSAxXTtcbiAgICAgICAgICAgIGl0ZW0ubGVmdCA9IHByZXZpb3VzID8gcHJldmlvdXMubGVmdCArIHBhcnNlSW50KHByZXZpb3VzLndpZHRoLnRvU3RyaW5nKCksIDEwKSA6IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByaWdodEZpeGVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmZpeGVkID09PSBUaHlGaXhlZERpcmVjdGlvbi5yaWdodCkucmV2ZXJzZSgpO1xuICAgICAgICByaWdodEZpeGVkQ29sdW1ucy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXMgPSByaWdodEZpeGVkQ29sdW1uc1tpbmRleCAtIDFdO1xuICAgICAgICAgICAgaXRlbS5yaWdodCA9IHByZXZpb3VzID8gcHJldmlvdXMucmlnaHQgKyBwYXJzZUludChwcmV2aW91cy53aWR0aC50b1N0cmluZygpLCAxMCkgOiAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRGF0YU1vZGVsKCkge1xuICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbFNlbGVjdGlvbnMocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxDdXN0b21Nb2RlbFZhbHVlKHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsU2VsZWN0aW9ucyhyb3c6IG9iamVjdCwgY29sdW1uOiBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICBpZiAoY29sdW1uLnNlbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgIHJvd1tjb2x1bW4ua2V5XSA9IGNvbHVtbi5zZWxlY3Rpb25zLmluY2x1ZGVzKHJvd1t0aGlzLnJvd0tleV0pO1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLnNlbGVjdGlvbnMuaW5jbHVkZXMocm93W3RoaXMucm93S2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvUm93ID0gcm93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRpYWxDdXN0b21Nb2RlbFZhbHVlKHJvdzogb2JqZWN0LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5zd2l0Y2gpIHtcbiAgICAgICAgICAgIHJvd1tjb2x1bW4ua2V5XSA9IGdldChyb3csIGNvbHVtbi5tb2RlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWZyZXNoQ3VzdG9tTW9kZWxWYWx1ZShyb3c6IFNhZmVBbnkpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxDdXN0b21Nb2RlbFZhbHVlKHJvdywgY29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHlEaWZmQ2hhbmdlcyhjaGFuZ2VzOiBJdGVyYWJsZUNoYW5nZXM8U2FmZUFueT4pIHtcbiAgICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxTYWZlQW55PikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hDdXN0b21Nb2RlbFZhbHVlKHJlY29yZC5pdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmluZFRyYWNrRm4oKSB7XG4gICAgICAgIHRoaXMudHJhY2tCeUZuID0gZnVuY3Rpb24gKHRoaXM6IFNhZmVBbnksIGluZGV4OiBudW1iZXIsIHJvdzogU2FmZUFueSk6IFNhZmVBbnkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdyAmJiB0aGlzLnJvd0tleSA/IHJvd1t0aGlzLnJvd0tleV0gOiBpbmRleDtcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rlc3Ryb3lJbnZhbGlkQXR0cmlidXRlKCkge1xuICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJvdykge1xuICAgICAgICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ1skJGNvbHVtbl0nKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcm93W2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDbGFzcyhmaXJzdCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghZmlyc3QgJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zaXplKSB7XG4gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goYHRhYmxlLSR7dGhpcy5zaXplfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZVRoZW1lTWFwW3RoaXMudGhlbWVdKSB7XG4gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2godGFibGVUaGVtZU1hcFt0aGlzLnRoZW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UudXBkYXRlQ2xhc3MoY2xhc3NOYW1lcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUNvbHVtblNlbGVjdGlvbnMoa2V5OiBzdHJpbmcsIHNlbGVjdGlvbnM6IFNhZmVBbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsU2VsZWN0aW9ucyhyb3csIGNvbHVtbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1RlbXBsYXRlUmVmKHJlZjogU2FmZUFueSkge1xuICAgICAgICByZXR1cm4gcmVmIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGVsVmFsdWUocm93OiBTYWZlQW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGdldChyb3csIHBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJSb3dDbGFzc05hbWUocm93OiBTYWZlQW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpcy5yb3dDbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cmluZyh0aGlzLnJvd0NsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvd0NsYXNzTmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5yb3dDbGFzc05hbWUgYXMgRnVuY3Rpb24pKHJvdywgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2Uocm93OiBTYWZlQW55LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb2x1bW4ubW9kZWwpIHtcbiAgICAgICAgICAgIHNldChyb3csIGNvbHVtbi5tb2RlbCwgcm93W2NvbHVtbi5rZXldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMud2hvbGVSb3dTZWxlY3QpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUGFnZUNoYW5nZShldmVudDogUGFnZUNoYW5nZWRFdmVudCkge1xuICAgICAgICB0aGlzLnRoeU9uUGFnZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QYWdlSW5kZXhDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRoeU9uUGFnZUluZGV4Q2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50aHlPblBhZ2VTaXplQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKHJvdzogU2FmZUFueSwgY29sdW1uOiBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uocm93LCBjb2x1bW4pO1xuICAgICAgICB0aGlzLm9uTXVsdGlTZWxlY3RDaGFuZ2UobnVsbCwgcm93LCBjb2x1bW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk11bHRpU2VsZWN0Q2hhbmdlKGV2ZW50OiBFdmVudCwgcm93OiBTYWZlQW55LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLm1vZGVsLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtW2NvbHVtbi5rZXldO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbXVsdGlTZWxlY3RFdmVudDogVGh5TXVsdGlTZWxlY3RFdmVudCA9IHtcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgcm93czogcm93c1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRoeU9uTXVsdGlTZWxlY3RDaGFuZ2UuZW1pdChtdWx0aVNlbGVjdEV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SYWRpb1NlbGVjdENoYW5nZShldmVudDogRXZlbnQsIHJvdzogU2FmZUFueSkge1xuICAgICAgICBjb25zdCByYWRpb1NlbGVjdEV2ZW50OiBUaHlSYWRpb1NlbGVjdEV2ZW50ID0ge1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgcm93OiByb3dcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aHlPblJhZGlvU2VsZWN0Q2hhbmdlLmVtaXQocmFkaW9TZWxlY3RFdmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3dpdGNoQ2hhbmdlKGV2ZW50OiBFdmVudCwgcm93OiBTYWZlQW55LCBjb2x1bW46IFNhZmVBbnkpIHtcbiAgICAgICAgY29uc3Qgc3dpdGNoRXZlbnQ6IFRoeVN3aXRjaEV2ZW50ID0ge1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICByZWZyZXNoOiAodmFsdWU6IFNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIHx8IHJvdztcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVbY29sdW1uLmtleV0gPSBnZXQodmFsdWUsIGNvbHVtbi5tb2RlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGh5T25Td2l0Y2hDaGFuZ2UuZW1pdChzd2l0Y2hFdmVudCk7XG4gICAgfVxuXG4gICAgc2hvd0V4cGFuZChyb3c6IFNhZmVBbnkpIHtcbiAgICAgICAgcmV0dXJuIHJvd1t0aGlzLnRoeUNoaWxkcmVuS2V5XSAmJiByb3dbdGhpcy50aHlDaGlsZHJlbktleV0ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc0V4cGFuZGVkKHJvdzogU2FmZUFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRTdGF0dXNNYXBbcm93W3RoaXMucm93S2V5XV07XG4gICAgfVxuXG4gICAgaWNvbkluZGVudENvbXB1dGVkKGxldmVsOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgICByZXR1cm4gbGV2ZWwgKiB0aGlzLnRoeUluZGVudCAtIDU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZEluZGVudENvbXB1dGVkKGxldmVsOiBudW1iZXIsIGNvbHVtbjogU2FmZUFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogYCR7Y29sdW1uLmxlZnR9cHhgLFxuICAgICAgICAgICAgcmlnaHQ6IGAke2NvbHVtbi5yaWdodH1weGAsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBgJHsobGV2ZWwgKyAxKSAqIHRoaXMudGh5SW5kZW50IC0gNX1weGBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBleHBhbmRDaGlsZHJlbihyb3c6IFNhZmVBbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZChyb3cpKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFN0YXR1c01hcFtyb3dbdGhpcy5yb3dLZXldXSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRTdGF0dXNNYXBbcm93W3RoaXMucm93S2V5XV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnR3JvdXBTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQ8dW5rbm93bj4pIHtcbiAgICAgICAgdGhpcy5leHBhbmRTdGF0dXNNYXBPZkdyb3VwQmVmb3JlRHJhZyA9IHsgLi4udGhpcy5leHBhbmRTdGF0dXNNYXBPZkdyb3VwIH07XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcihncm91cCA9PiBncm91cC5leHBhbmQpO1xuICAgICAgICB0aGlzLmZvbGRHcm91cHMoZ3JvdXBzKTtcbiAgICAgICAgdGhpcy5vbkRyYWdTdGFydGVkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uRHJhZ0dyb3VwRW5kKGV2ZW50OiBDZGtEcmFnRW5kPHVua25vd24+KSB7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcihncm91cCA9PiB0aGlzLmV4cGFuZFN0YXR1c01hcE9mR3JvdXBCZWZvcmVEcmFnW2dyb3VwLmlkXSk7XG4gICAgICAgIHRoaXMuZXhwYW5kR3JvdXBzKGdyb3Vwcyk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRHJhZ0dyb3VwRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8dW5rbm93bj4pIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwcy5maW5kKGdyb3VwID0+IHtcbiAgICAgICAgICAgIHJldHVybiBldmVudC5pdGVtLmRhdGEuaWQgPT09IGdyb3VwLmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICAvLyBkcmFnIGdyb3VwXG4gICAgICAgICAgICBjb25zdCBkcmFnRXZlbnQ6IFRoeVRhYmxlRHJhZ2dhYmxlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgbW9kZWw6IGV2ZW50Lml0ZW0sXG4gICAgICAgICAgICAgICAgbW9kZWxzOiB0aGlzLmdyb3VwcyxcbiAgICAgICAgICAgICAgICBvbGRJbmRleDogZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgICAgICBuZXdJbmRleDogZXZlbnQuY3VycmVudEluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgdGhpcy50aHlPbkRyYWdnYWJsZUNoYW5nZS5lbWl0KGRyYWdFdmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBkcmFnIGdyb3VwIGNoaWxkcmVuXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBzLmZpbmQoZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5pdGVtLmRhdGFbdGhpcy5ncm91cEJ5XSA9PT0gZ3JvdXAuaWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPVxuICAgICAgICAgICAgICAgIGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpLmZpbmRJbmRleChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGF0YS5pZCA9PT0gZXZlbnQuaXRlbS5kYXRhW3RoaXMuZ3JvdXBCeV07XG4gICAgICAgICAgICAgICAgfSkgKyAxO1xuICAgICAgICAgICAgY29uc3QgZHJhZ0V2ZW50OiBUaHlUYWJsZURyYWdnYWJsZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG1vZGVsOiBldmVudC5pdGVtLFxuICAgICAgICAgICAgICAgIG1vZGVsczogZ3JvdXAuY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgb2xkSW5kZXg6IGV2ZW50LnByZXZpb3VzSW5kZXggLSBncm91cEluZGV4LFxuICAgICAgICAgICAgICAgIG5ld0luZGV4OiBldmVudC5jdXJyZW50SW5kZXggLSBncm91cEluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGdyb3VwLmNoaWxkcmVuLCBkcmFnRXZlbnQub2xkSW5kZXgsIGRyYWdFdmVudC5uZXdJbmRleCk7XG4gICAgICAgICAgICB0aGlzLnRoeU9uRHJhZ2dhYmxlQ2hhbmdlLmVtaXQoZHJhZ0V2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydDx1bmtub3duPikge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlldyA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdQcmV2aWV3Q2xhc3MpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGRzOiBIVE1MQ29sbGVjdGlvbiA9IGV2ZW50LnNvdXJjZS5fZHJhZ1JlZi5nZXRQbGFjZWhvbGRlckVsZW1lbnQoKT8uY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShwcmV2aWV3Py5jaGlsZHJlbikuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtvcmlnaW5hbFRkc1tpbmRleF0/LmNsaWVudFdpZHRofXB4YDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkcm9wTGlzdEVudGVyUHJlZGljYXRlID0gKGluZGV4OiBudW1iZXIsIGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KSA9PiB7XG4gICAgICAgIHJldHVybiBkcm9wLmdldFNvcnRlZEl0ZW1zKClbaW5kZXhdLmRhdGEuZ3JvdXBfaWQgPT09IGRyYWcuZGF0YS5ncm91cF9pZDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbkRyYWdNb2RlbERyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPHVua25vd24+KSB7XG4gICAgICAgIGNvbnN0IGRyYWdFdmVudDogVGh5VGFibGVEcmFnZ2FibGVFdmVudCA9IHtcbiAgICAgICAgICAgIG1vZGVsOiBldmVudC5pdGVtLFxuICAgICAgICAgICAgbW9kZWxzOiB0aGlzLm1vZGVsLFxuICAgICAgICAgICAgb2xkSW5kZXg6IGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICBuZXdJbmRleDogZXZlbnQuY3VycmVudEluZGV4XG4gICAgICAgIH07XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm1vZGVsLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB0aGlzLnRoeU9uRHJhZ2dhYmxlQ2hhbmdlLmVtaXQoZHJhZ0V2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDx1bmtub3duPikge1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICB0aGlzLm9uRHJhZ0dyb3VwRHJvcHBlZChldmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnbGlzdCcpIHtcbiAgICAgICAgICAgIHRoaXMub25EcmFnTW9kZWxEcm9wcGVkKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29sdW1uSGVhZGVyQ2xpY2soZXZlbnQ6IEV2ZW50LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc29ydERpcmVjdGlvbiwgbW9kZWwsIHNvcnRDaGFuZ2UgfSA9IGNvbHVtbjtcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb247XG4gICAgICAgICAgICBpZiAoc29ydERpcmVjdGlvbiA9PT0gVGh5VGFibGVTb3J0RGlyZWN0aW9uLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBUaHlUYWJsZVNvcnREaXJlY3Rpb24uZGVzYztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PT0gVGh5VGFibGVTb3J0RGlyZWN0aW9uLmRlc2MpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBUaHlUYWJsZVNvcnREaXJlY3Rpb24uYXNjO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBUaHlUYWJsZVNvcnREaXJlY3Rpb24uZGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbi5zb3J0RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgY29uc3Qgc29ydEV2ZW50ID0geyBldmVudCwga2V5OiBtb2RlbCwgZGlyZWN0aW9uIH07XG4gICAgICAgICAgICBzb3J0Q2hhbmdlLmVtaXQoc29ydEV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMudGh5U29ydENoYW5nZS5lbWl0KHNvcnRFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Sb3dDbGljayhldmVudDogRXZlbnQsIHJvdzogU2FmZUFueSkge1xuICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy5vblJvd0NsaWNrUHJvcGFnYXRpb25FdmVudEhhbmRsZXIoZXZlbnQsIHJvdyk7XG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy53aG9sZVJvd1NlbGVjdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS50eXBlID09PSBjdXN0b21UeXBlLmNoZWNrYm94IHx8IGl0ZW0udHlwZSA9PT0gY3VzdG9tVHlwZS5yYWRpbztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uICYmICFjb2x1bW4uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSBjdXN0b21UeXBlLmNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dbY29sdW1uLmtleV0gPSAhcm93W2NvbHVtbi5rZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25NdWx0aVNlbGVjdENoYW5nZShldmVudCwgcm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5yYWRpbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvUm93ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJhZGlvU2VsZWN0Q2hhbmdlKGV2ZW50LCByb3cpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgcm93RXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHJvdzogcm93XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50aHlPblJvd0NsaWNrLmVtaXQocm93RXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvd0NsaWNrUHJvcGFnYXRpb25FdmVudEhhbmRsZXIoZXZlbnQ6IEV2ZW50LCByb3c6IFNhZmVBbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnLnRyZWUtZXhwYW5kLWljb24nKSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRDaGlsZHJlbihyb3cpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvd0NvbnRleHRNZW51KGV2ZW50OiBFdmVudCwgcm93OiBTYWZlQW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRNZW51RXZlbnQ6IFRoeVRhYmxlRXZlbnQgPSB7XG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICByb3c6IHJvd1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRoeU9uUm93Q29udGV4dE1lbnUuZW1pdChjb250ZXh0TWVudUV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWZyZXNoQ29sdW1ucygpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRoaXMuY29sdW1ucyB8fCBbXTtcbiAgICAgICAgY29uc3QgX2NvbHVtbnMgPSBjb21wb25lbnRzLm1hcChjb21wb25lbnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY29tcG9uZW50LndpZHRoLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY29tcG9uZW50LmNsYXNzTmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKG4sIGkpID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obiwgX2NvbHVtbnNbaV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkR3JvdXBzKG9yaWdpbkdyb3VwczogU2FmZUFueSkge1xuICAgICAgICBjb25zdCBvcmlnaW5Hcm91cHNNYXAgPSBoZWxwZXJzLmtleUJ5KG9yaWdpbkdyb3VwcywgJ2lkJyk7XG4gICAgICAgIHRoaXMuZ3JvdXBzID0gW107XG4gICAgICAgIG9yaWdpbkdyb3Vwcy5mb3JFYWNoKChvcmlnaW46IFNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBUaHlUYWJsZUdyb3VwID0geyBpZDogb3JpZ2luW3RoaXMucm93S2V5XSwgY2hpbGRyZW46IFtdLCBvcmlnaW4gfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kU3RhdHVzTWFwT2ZHcm91cC5oYXNPd25Qcm9wZXJ0eShncm91cC5pZCkpIHtcbiAgICAgICAgICAgICAgICBncm91cC5leHBhbmQgPSB0aGlzLmV4cGFuZFN0YXR1c01hcE9mR3JvdXBbZ3JvdXAuaWRdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cC5leHBhbmQgPSAhIShvcmlnaW5Hcm91cHNNYXBbZ3JvdXAuaWRdIGFzIFNhZmVBbnkpLmV4cGFuZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRNb2RlbCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzTWFwID0ga2V5QnkodGhpcy5ncm91cHMsICdpZCcpO1xuICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzTWFwW3Jvd1t0aGlzLmdyb3VwQnldXTtcbiAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICAgIGdyb3VwLmNoaWxkcmVuLnB1c2gocm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cGFuZEdyb3VwKGdyb3VwOiBUaHlUYWJsZUdyb3VwKSB7XG4gICAgICAgIGdyb3VwLmV4cGFuZCA9ICFncm91cC5leHBhbmQ7XG4gICAgICAgIHRoaXMuZXhwYW5kU3RhdHVzTWFwT2ZHcm91cFtncm91cC5pZF0gPSBncm91cC5leHBhbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBhbmRHcm91cHMoZ3JvdXBzOiBUaHlUYWJsZUdyb3VwW10pIHtcbiAgICAgICAgZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRHcm91cChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9sZEdyb3Vwcyhncm91cHM6IFRoeVRhYmxlR3JvdXBbXSkge1xuICAgICAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZEdyb3VwKGdyb3VwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxDbGFzcygpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMudGFibGVTY3JvbGxFbGVtZW50O1xuICAgICAgICBjb25zdCBtYXhTY3JvbGxMZWZ0ID0gc2Nyb2xsRWxlbWVudC5zY3JvbGxXaWR0aCAtIHNjcm9sbEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IHNjcm9sbFggPSBzY3JvbGxFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IGxhc3RTY3JvbGxDbGFzc05hbWUgPSB0aGlzLnNjcm9sbENsYXNzTmFtZTtcbiAgICAgICAgdGhpcy5zY3JvbGxDbGFzc05hbWUgPSAnJztcbiAgICAgICAgaWYgKHNjcm9sbEVsZW1lbnQuc2Nyb2xsV2lkdGggPiBzY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsWCA+PSBtYXhTY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDbGFzc05hbWUgPSBjc3MudGFibGVTY3JvbGxSaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2Nyb2xsWCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ2xhc3NOYW1lID0gY3NzLnRhYmxlU2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDbGFzc05hbWUgPSBjc3MudGFibGVTY3JvbGxNaWRkbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhc3RTY3JvbGxDbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZVNjcm9sbEVsZW1lbnQsIGxhc3RTY3JvbGxDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbENsYXNzTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYmxlU2Nyb2xsRWxlbWVudCwgdGhpcy5zY3JvbGxDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSG9zdENsYXNzU2VydmljZS5pbml0aWFsaXplRWxlbWVudCh0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fc2V0Q2xhc3ModHJ1ZSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIG1lcmdlKHRoaXMudmlld3BvcnRSdWxlci5jaGFuZ2UoMjAwKSwgb2YobnVsbCkucGlwZShkZWxheSgyMDApKSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaENvbHVtbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbENsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGwkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxDbGFzcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRTa2VsZXRvbkNvbHVtbnMoKSB7XG4gICAgICAgIHRoaXMuc2tlbGV0b25Db2x1bW5zID0gW107XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogVGh5VGFibGVDb2x1bW5Db21wb25lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogdGhpcy50aHlDb2x1bW5Ta2VsZXRvblR5cGVzW2luZGV4XSB8fCBUaHlUYWJsZUNvbHVtblNrZWxldG9uVHlwZS5kZWZhdWx0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGggfHwgJ2F1dG8nXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5za2VsZXRvbkNvbHVtbnMgPSBbLi4udGhpcy5za2VsZXRvbkNvbHVtbnMsIGl0ZW1dO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm93cy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5yb3dzKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZTxFdmVudD4oc3Vic2NyaWJlciA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5yb3dzLm1hcChyb3cgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB0aGVyZSdzIG5vIG5lZWQgdG8gYWRkIHRvdWNoLCBwb2ludGVyIGFuZCBtb3VzZSBldmVudCBsaXN0ZW5lcnMgdG9nZXRoZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGNhbiBiZSBhbnkgbnVtYmVyIG9mIHJvd3MsIHdoaWNoIHdpbGwgbGVhZCB0byBhZGRpbmcgTiAqIDMgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wb2ludGVyZXZlbnRzLyNleGFtcGxlcyksIHdlIGNhbiB1c2UgZmVhdHVyZSBkZXRlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIGlmIHBvaW50ZXIgZXZlbnRzIGFyZSBhdmFpbGFibGUuIElmIHBvaW50ZXIgZXZlbnRzIGFyZSBhdmFpbGFibGUsIHdlIGhhdmUgdG8gbGlzdGVuIG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIGBwb2ludGVyZG93bmAgZXZlbnQuIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgd2UncmUgb24gYSB0b3VjaCBkZXZpY2Ugb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3VjaCBldmVudHMgYXJlIGhhbmRsZWQgZWFybGllciB0aGFuIG1vdXNlIGV2ZW50cywgdGhvIG5vdCBhbGwgdXNlciBhZ2VudHMgZGlzcGF0Y2ggbW91c2UgZXZlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIHRvdWNoIGV2ZW50cy4gU2VlIHRoZSBzcGVjOiBodHRwczovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzLyNtb3VzZS1ldmVudHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5Qb2ludGVyRXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BvaW50ZXJkb3duJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnb250b3VjaHN0YXJ0JyBpbiByb3cubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0b3VjaHN0YXJ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdtb3VzZWRvd24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBzaW5jZSBDaHJvbWUgNTYgZGVmYXVsdHMgZG9jdW1lbnQgbGV2ZWwgYHRvdWNoc3RhcnRgIGxpc3RlbmVyIHRvIHBhc3NpdmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50IGB0b3VjaHN0YXJ0YCBsaXN0ZW5lciBpcyBub3QgcGFzc2l2ZSBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5ldmVyIGNhbGwgYHByZXZlbnREZWZhdWx0KClgIG9uIGl0LCBzbyB3ZSdyZSBzYWZlIG1ha2luZyBpdCBwYXNzaXZlIHRvby5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zPnBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG1vZGVDaGFuZ2UgPSBzaW1wbGVDaGFuZ2VzLnRoeU1vZGU7XG4gICAgICAgIGNvbnN0IHRoeUdyb3Vwc0NoYW5nZSA9IHNpbXBsZUNoYW5nZXMudGh5R3JvdXBzO1xuICAgICAgICBjb25zdCBpc0dyb3VwTW9kZSA9IG1vZGVDaGFuZ2UgJiYgbW9kZUNoYW5nZS5jdXJyZW50VmFsdWUgPT09ICdncm91cCc7XG4gICAgICAgIGlmIChpc0dyb3VwTW9kZSAmJiB0aHlHcm91cHNDaGFuZ2UgJiYgdGh5R3JvdXBzQ2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkR3JvdXBzKHRoeUdyb3Vwc0NoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5idWlsZE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlmZikge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmYuZGlmZih0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5RGlmZkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUludmFsaWRBdHRyaWJ1dGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGh5LXRhYmxlLWJvZHlcIlxuICBjZGtTY3JvbGxhYmxlXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAndGh5LXRhYmxlLWZpeGVkJzogaGFzRml4ZWQsXG4gICAgJ3RoeS10YWJsZS1ib3JkZXJlZC10aGVtZSc6IHRoZW1lID09PSAnYm9yZGVyZWQnICYmIGhhc0ZpeGVkLFxuICAgICd0aHktdGFibGUtYm9keS1lbXB0eSc6IGxvYWRpbmdEb25lICYmIG1vZGVsPy5sZW5ndGggPT09IDAgJiYgZ3JvdXBzPy5sZW5ndGggPT09IDBcbiAgfVwiPlxuICA8dGFibGVcbiAgICAjdGFibGVcbiAgICBjbGFzcz1cInRhYmxlXCJcbiAgICBbbmdDbGFzc109XCJbY2xhc3NOYW1lXVwiXG4gICAgW2NsYXNzLnRhYmxlLWZpeGVkXT1cInRoeUxheW91dEZpeGVkXCJcbiAgICBbY2xhc3MudGFibGUtZHJhZ2dhYmxlXT1cImRyYWdnYWJsZVwiXG4gICAgW2NsYXNzLnRhYmxlLWdyb3VwXT1cIm1vZGUgPT09ICdncm91cCdcIlxuICAgIFtuZ1N0eWxlXT1cInsgJ21pbi13aWR0aCc6IHRoeU1pbldpZHRoIH1cIj5cbiAgICA8Y29sZ3JvdXA+XG4gICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxjb2wgW3dpZHRoXT1cImNvbHVtbi53aWR0aFwiIFtuZ1N0eWxlXT1cInsgbWluV2lkdGg6IGhhc0ZpeGVkID8gY29sdW1uLndpZHRoIDogY29sdW1uLm1pbldpZHRoIH1cIiAvPlxuICAgICAgfVxuICAgIDwvY29sZ3JvdXA+XG5cbiAgICBAaWYgKCF0aHlIZWFkbGVzcykge1xuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDbGFzc05hbWVcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWNvbHVtbi1zb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWZpeGVkLWNvbHVtbi1sZWZ0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ubGVmdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy50aHktdGFibGUtZml4ZWQtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ucmlnaHRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IGNvbHVtbi5sZWZ0ICsgJ3B4JywgcmlnaHQ6IGNvbHVtbi5yaWdodCArICdweCcgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNvbHVtbkhlYWRlckNsaWNrKCRldmVudCwgY29sdW1uKVwiPlxuICAgICAgICAgICAgICBAaWYgKCFjb2x1bW4uaGVhZGVyVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaGVhZGVyVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgICAgICAgICAgICA8dGh5LWljb24gW25nQ2xhc3NdPVwiWyd0aHktdGFibGUtY29sdW1uLXNvcnRhYmxlLWljb24nLCAncHgtMScsIGNvbHVtbi5zb3J0RGlyZWN0aW9uXVwiIHRoeUljb25OYW1lPVwic29ydC12ZXJ0aWNhbC10dFwiPlxuICAgICAgICAgICAgICAgIDwvdGh5LWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICB9XG5cbiAgICBAaWYgKGxvYWRpbmdEb25lKSB7XG4gICAgICA8dGJvZHlcbiAgICAgICAgdGh5RHJhZ0Ryb3BcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWRyYWdnYWJsZVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdFNvcnRQcmVkaWNhdGVdPVwiZHJvcExpc3RFbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25EcmFnRHJvcHBlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gZ3JvdXAgLS0+XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGdyb3VwczsgdHJhY2sgZ3JvdXAuaWQpIHtcbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICBjbGFzcz1cInRoeS10YWJsZS1ncm91cFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleHBhbmRHcm91cChncm91cClcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnUHJldmlld0NsYXNzXT1cImRyYWdQcmV2aWV3Q2xhc3NcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImdyb3VwIHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZVwiXG4gICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdHcm91cFN0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnR3JvdXBFbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHktdGFibGUtZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGRyYWdnYWJsZSAmJiAhKGdyb3VwIHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwidGFibGUtZHJhZ2dhYmxlLWljb25cIiB0aHlJY29uTmFtZT1cImRyYWdcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwiZXhwYW5kLWljb25cIiBbdGh5SWNvbk5hbWVdPVwiZ3JvdXAuZXhwYW5kID8gJ2FuZ2xlLWRvd24nIDogJ2FuZ2xlLXJpZ2h0J1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICBAaWYgKGdyb3VwVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBncm91cC5vcmlnaW4sIGdyb3VwOiBncm91cC5vcmlnaW4gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgQGlmIChncm91cC5jaGlsZHJlbj8ubGVuZ3RoICYmIGdyb3VwLmV4cGFuZCkge1xuICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZ3JvdXAuY2hpbGRyZW47IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogMFxuICAgICAgICAgICAgICAgICAgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBsaXN05qih5byP5LiL5rKh5pyJ55u05o6l5L2/55SoaXRlbeaooeadv++8jOaYr+WboOS4uuS9v+eUqOS6huaooeadv+W9seWTjeS6hkFuZ3VsYXLnmoTkvp3otZbmoJHvvIzlr7zoh7RDZGtEcmFnRHJvcOaOkuW6j+WkseaViO+8jOebruWJjei/meagt+S/ruaUueWPr+S7peaaguaXtuino+WGs+e6v+S4iuS4jeiDveaOkuW6j+eahOmXrumimO+8jFRyZWXmqKHlvI/nmoTmjpLluo/mmoLml7bkuI3mlK/mjIEgLS0+XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ2xpc3QnKSB7XG4gICAgICAgICAgQGZvciAocm93IG9mIG1vZGVsOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgI3Jvd3NcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0aHktc29ydGFibGUtaXRlbVwiXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgW2Nka0RyYWdQcmV2aWV3Q2xhc3NdPVwiZHJhZ1ByZXZpZXdDbGFzc1wiXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cInJvdyB8IHRhYmxlUm93RHJhZ0Rpc2FibGVkOiB0aHlEcmFnRGlzYWJsZWRQcmVkaWNhdGVcIlxuICAgICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicmVuZGVyUm93Q2xhc3NOYW1lKHJvdywgaSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgICAodGh5Q29udGV4dE1lbnUpPVwib25Sb3dDb250ZXh0TWVudSgkZXZlbnQsIHJvdylcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgbGV2ZWw6IDBcbiAgICAgICAgICAgICAgICB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgQGZvciAocm93IG9mIG1vZGVsOyB0cmFjayB0cmFja0J5Rm4oaSwgcm93KTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0clRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIGluZGV4OiBpLCBsZXZlbDogMCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0clRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImluZGV4XCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgICNyb3dzXG4gICAgICAgICAgICBjbGFzcz1cInRoeS1zb3J0YWJsZS1pdGVtXCJcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIFtjZGtEcmFnUHJldmlld0NsYXNzXT1cImRyYWdQcmV2aWV3Q2xhc3NcIlxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwicm93IHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJyZW5kZXJSb3dDbGFzc05hbWUocm93LCBpKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgKHRoeUNvbnRleHRNZW51KT1cIm9uUm93Q29udGV4dE1lbnUoJGV2ZW50LCByb3cpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbCArIDFcbiAgICAgICAgICAgICAgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICBAaWYgKG1vZGUgPT09ICd0cmVlJyAmJiBpc0V4cGFuZGVkKHJvdykpIHtcbiAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIHJvd1t0aHlDaGlsZHJlbktleV07IHRyYWNrIHRyYWNrQnlGbihqLCBjaGlsZCk7IGxldCBqID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogY2hpbGQsIGluZGV4OiBqLCBsZXZlbDogbGV2ZWwgKyAxIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZHNUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJpbmRleFwiIGxldC1sZXZlbD1cImxldmVsXCI+XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleDsgbGV0IGogPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2xhc3NOYW1lXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRoeS1vcGVyYXRpb24tbGlua3NdPVwiISFjb2x1bW4ub3BlcmF0aW9uYWxcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWNvbHVtbi1zZWNvbmRhcnldPVwiISFjb2x1bW4uc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRoeS10YWJsZS1jaGVja2JveC1jb2x1bW5dPVwiY29sdW1uLnR5cGUgPT09IGN1c3RvbVR5cGUuY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWZpeGVkLWNvbHVtbi1sZWZ0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ubGVmdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy50aHktdGFibGUtZml4ZWQtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ucmlnaHRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICBtb2RlID09PSAndHJlZScgJiYgY29sdW1uLmV4cGFuZFxuICAgICAgICAgICAgICAgICAgPyB0ZEluZGVudENvbXB1dGVkKGxldmVsLCBjb2x1bW4pXG4gICAgICAgICAgICAgICAgICA6IHsgbGVmdDogY29sdW1uLmxlZnQgKyAncHgnLCByaWdodDogY29sdW1uLnJpZ2h0ICsgJ3B4JyB9XG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICBAaWYgKGogPT09IDAgJiYgZHJhZ2dhYmxlICYmICEocm93IHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJ0YWJsZS1kcmFnZ2FibGUtaWNvblwiIHRoeUljb25OYW1lPVwiZHJhZ1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLXRlbXBsYXRlLS0+XG4gICAgICAgICAgICAgIEBpZiAoaXNUZW1wbGF0ZVJlZihjb2x1bW4uY2VsbFRlbXBsYXRlUmVmKSkge1xuICAgICAgICAgICAgICAgIEBpZiAobW9kZSA9PT0gJ3RyZWUnICYmIGNvbHVtbi5leHBhbmQpIHtcbiAgICAgICAgICAgICAgICAgIDx0aHktaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtZXhwYW5kLWljb24gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdGh5SWNvbk5hbWVdPVwiaXNFeHBhbmRlZChyb3cpID8gJ2FuZ2xlLWRvd24nIDogJ2FuZ2xlLXJpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cInNob3dFeHBhbmQocm93KSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiaWNvbkluZGVudENvbXB1dGVkKGxldmVsKVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uY2VsbFRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3cgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLW5vdCB0ZW1wbGF0ZS0tPlxuICAgICAgICAgICAgICBAaWYgKCFpc1RlbXBsYXRlUmVmKGNvbHVtbi5jZWxsVGVtcGxhdGVSZWYpKSB7XG4gICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLm1vZGVsICYmICFjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgICAgQGlmIChtb2RlID09PSAndHJlZScgJiYgY29sdW1uLmV4cGFuZCkge1xuICAgICAgICAgICAgICAgICAgICA8dGh5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtZXhwYW5kLWljb24gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJpc0V4cGFuZGVkKHJvdykgPyAnYW5nbGUtZG93bicgOiAnYW5nbGUtcmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJzaG93RXhwYW5kKHJvdykgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbkxlZnQucHhdPVwiaWNvbkluZGVudENvbXB1dGVkKGxldmVsKVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGdldE1vZGVsVmFsdWUocm93LCBjb2x1bW4ubW9kZWwpIHwgaXNWYWxpZE1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0TW9kZWxWYWx1ZShyb3csIGNvbHVtbi5tb2RlbCkgfX1cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5kZWZhdWx0VGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5kZWZhdWx0VGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmRlZmF1bHRUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLmRlZmF1bHRUZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gaW5kZXggLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5pbmRleCkge1xuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSBjaGVja2JveCAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi50eXBlID09PSBjdXN0b21UeXBlLmNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmtleV1cIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gcmFkaW8gLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5yYWRpbykge1xuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSYWRpb1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3RvcFByb3BhZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9TZWxlY3RDaGFuZ2UoJGV2ZW50LCByb3cpXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSBzd2l0Y2ggLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5zd2l0Y2gpIHtcbiAgICAgICAgICAgICAgICAgIDx0aHktc3dpdGNoXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5rZXldXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKHRoeUNoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQsIHJvdywgY29sdW1uKVwiPjwvdGh5LXN3aXRjaD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC90Ym9keT5cbiAgICB9XG4gIDwvdGFibGU+XG5cbiAgQGlmIChsb2FkaW5nRG9uZSAmJiBtb2RlbC5sZW5ndGggPT09IDAgJiYgZ3JvdXBzLmxlbmd0aCA9PT0gMCkge1xuICAgIDxkaXYgY2xhc3M9XCJ0aHktdGFibGUtZW1wdHkgY2xlYXItaG92ZXJcIj5cbiAgICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRoeS1lbXB0eVxuICAgICAgICAgIFt0aHlNZXNzYWdlXT1cImVtcHR5T3B0aW9ucy5tZXNzYWdlXCJcbiAgICAgICAgICBbdGh5VHJhbnNsYXRpb25LZXldPVwiZW1wdHlPcHRpb25zLnRyYW5zbGF0aW9uS2V5XCJcbiAgICAgICAgICBbdGh5VHJhbnNsYXRpb25WYWx1ZXNdPVwiZW1wdHlPcHRpb25zLnRyYW5zbGF0aW9uVmFsdWVzXCJcbiAgICAgICAgICBbdGh5RW50aXR5TmFtZV09XCJlbXB0eU9wdGlvbnMuZW50aXR5TmFtZVwiXG4gICAgICAgICAgW3RoeUVudGl0eU5hbWVUcmFuc2xhdGVLZXldPVwiZW1wdHlPcHRpb25zLmVudGl0eU5hbWVUcmFuc2xhdGVLZXlcIlxuICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJlbXB0eU9wdGlvbnMuaWNvbk5hbWVcIlxuICAgICAgICAgIFt0aHlTaXplXT1cImVtcHR5T3B0aW9ucy5zaXplXCJcbiAgICAgICAgICBbdGh5TWFyZ2luVG9wXT1cImVtcHR5T3B0aW9ucy5tYXJnaW5Ub3BcIlxuICAgICAgICAgIFt0aHlUb3BBdXRvXT1cImVtcHR5T3B0aW9ucy50b3BBdXRvXCJcbiAgICAgICAgICBbdGh5Q29udGFpbmVyXT1cImVtcHR5T3B0aW9ucy5jb250YWluZXJcIj48L3RoeS1lbXB0eT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBpZiAoIWxvYWRpbmdEb25lKSB7XG4gICAgPHRoeS10YWJsZS1za2VsZXRvblxuICAgICAgW3RoeVJvd0NvdW50XT1cIjZcIlxuICAgICAgW3RoeUhlYWRsZXNzXT1cInRydWVcIlxuICAgICAgW3RoeVRoZW1lXT1cInRoZW1lXCJcbiAgICAgIFt0aHlTaXplXT1cInNpemVcIlxuICAgICAgW3RoeU1pbldpZHRoXT1cInRoeU1pbldpZHRoXCJcbiAgICAgIFt0aHlDb2x1bW5zXT1cInNrZWxldG9uQ29sdW1uc1wiPlxuICAgIDwvdGh5LXRhYmxlLXNrZWxldG9uPlxuICB9XG5cbiAgQGlmIChwYWdpbmF0aW9uLnRvdGFsID4gcGFnaW5hdGlvbi5zaXplKSB7XG4gICAgPGRpdiBjbGFzcz1cInRoeS10YWJsZS1mb290ZXJcIiBbY2xhc3MudGh5LXRhYmxlLWZvb3Rlci1oYXMtcGFkZGluZ109XCJ0aGVtZSA9PT0gJ2RlZmF1bHQnXCI+XG4gICAgICA8dGh5LXBhZ2luYXRpb25cbiAgICAgICAgW3RoeVBhZ2VJbmRleF09XCJwYWdpbmF0aW9uLmluZGV4XCJcbiAgICAgICAgW3RoeVRvdGFsXT1cInBhZ2luYXRpb24udG90YWxcIlxuICAgICAgICBbdGh5UGFnZVNpemVdPVwicGFnaW5hdGlvbi5zaXplXCJcbiAgICAgICAgW3RoeVBhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uLnNpemVPcHRpb25zXCJcbiAgICAgICAgW3RoeVNob3dTaXplQ2hhbmdlcl09XCJzaG93U2l6ZUNoYW5nZXJcIlxuICAgICAgICBbdGh5U2hvd1RvdGFsXT1cInNob3dUb3RhbFwiXG4gICAgICAgICh0aHlQYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICh0aHlQYWdlSW5kZXhDaGFuZ2UpPVwib25QYWdlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICh0aHlQYWdlU2l6ZUNoYW5nZWQpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC90aHktcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
966
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBeUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLGVBQWUsRUFDZixNQUFNLEVBQ04sZUFB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S0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUtHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFLRyxhQUFhO3NCQUF0QixNQUFNO2dCQUtHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVrQyxhQUFhO3NCQUFyRCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR25DLHNCQUFzQjtzQkFEekIsZUFBZTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dENzc1BpeGVsLCBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIFNhZmVBbnkgfSBmcm9tICduZ3gtdGV0aHlzL3R5cGVzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgZ2V0LCBoZWxwZXJzLCBpc1N0cmluZywga2V5QnksIHNldCB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBFTVBUWSwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbmQsIENka0RyYWdTdGFydCwgQ2RrRHJvcExpc3QsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IG5vcm1hbGl6ZVBhc3NpdmVMaXN0ZW5lck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1TZXJ2ZXIsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgTmdab25lLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElUaHlUYWJsZUNvbHVtblBhcmVudENvbXBvbmVudCwgVEhZX1RBQkxFX0NPTFVNTl9QQVJFTlRfQ09NUE9ORU5ULCBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIFBhZ2VDaGFuZ2VkRXZlbnQsXG4gICAgVGh5TXVsdGlTZWxlY3RFdmVudCxcbiAgICBUaHlQYWdlLFxuICAgIFRoeVJhZGlvU2VsZWN0RXZlbnQsXG4gICAgVGh5U3dpdGNoRXZlbnQsXG4gICAgVGh5VGFibGVTa2VsZXRvbkNvbHVtbixcbiAgICBUaHlUYWJsZURyYWdnYWJsZUV2ZW50LFxuICAgIFRoeVRhYmxlRW1wdHlPcHRpb25zLFxuICAgIFRoeVRhYmxlRXZlbnQsXG4gICAgVGh5VGFibGVSb3dFdmVudCxcbiAgICBUaHlUYWJsZVNvcnREaXJlY3Rpb24sXG4gICAgVGh5VGFibGVTb3J0RXZlbnRcbn0gZnJvbSAnLi90YWJsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVSb3dEcmFnRGlzYWJsZWRQaXBlIH0gZnJvbSAnLi9waXBlcy9kcmFnLnBpcGUnO1xuaW1wb3J0IHsgVGFibGVJc1ZhbGlkTW9kZWxWYWx1ZVBpcGUgfSBmcm9tICcuL3BpcGVzL3RhYmxlLnBpcGUnO1xuaW1wb3J0IHsgVGh5UGFnaW5hdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUaHlUYWJsZVNrZWxldG9uIH0gZnJvbSAnLi90YWJsZS1za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5RW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL2VtcHR5JztcbmltcG9ydCB7IFRoeVN3aXRjaCB9IGZyb20gJ25neC10ZXRoeXMvc3dpdGNoJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5RHJhZ0Ryb3BEaXJlY3RpdmUsIFRoeUNvbnRleHRNZW51RGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBUaHlUYWJsZUNvbHVtblNrZWxldG9uVHlwZSB9IGZyb20gJy4vZW51bXMnO1xuXG5leHBvcnQgdHlwZSBUaHlUYWJsZVRoZW1lID0gJ2RlZmF1bHQnIHwgJ2JvcmRlcmVkJyB8ICdib3hlZCc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhYmxlTW9kZSA9ICdsaXN0JyB8ICdncm91cCcgfCAndHJlZSc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhYmxlU2l6ZSA9ICdtZCcgfCAnc20nIHwgJ3hzJyB8ICdsZycgfCAneGxnJyB8ICdkZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGh5Rml4ZWREaXJlY3Rpb24ge1xuICAgIGxlZnQgPSAnbGVmdCcsXG4gICAgcmlnaHQgPSAncmlnaHQnXG59XG5cbmludGVyZmFjZSBUaHlUYWJsZUdyb3VwPFQgPSB1bmtub3duPiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgZXhwYW5kPzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbj86IG9iamVjdFtdO1xuICAgIG9yaWdpbj86IFQ7XG59XG5cbmNvbnN0IHRhYmxlVGhlbWVNYXAgPSB7XG4gICAgZGVmYXVsdDogJ3RhYmxlLWRlZmF1bHQnLFxuICAgIGJvcmRlcmVkOiAndGFibGUtYm9yZGVyZWQnLFxuICAgIGJveGVkOiAndGFibGUtYm94ZWQnXG59O1xuXG5jb25zdCBjdXN0b21UeXBlID0ge1xuICAgIGluZGV4OiAnaW5kZXgnLFxuICAgIGNoZWNrYm94OiAnY2hlY2tib3gnLFxuICAgIHJhZGlvOiAncmFkaW8nLFxuICAgIHN3aXRjaDogJ3N3aXRjaCdcbn07XG5cbmNvbnN0IGNzcyA9IHtcbiAgICB0YWJsZUJvZHk6ICd0aHktdGFibGUtYm9keScsXG4gICAgdGFibGVTY3JvbGxMZWZ0OiAndGh5LXRhYmxlLXNjcm9sbC1sZWZ0JyxcbiAgICB0YWJsZVNjcm9sbFJpZ2h0OiAndGh5LXRhYmxlLXNjcm9sbC1yaWdodCcsXG4gICAgdGFibGVTY3JvbGxNaWRkbGU6ICd0aHktdGFibGUtc2Nyb2xsLW1pZGRsZSdcbn07XG5cbmNvbnN0IHBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9ucyA9IG5vcm1hbGl6ZVBhc3NpdmVMaXN0ZW5lck9wdGlvbnMoeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG4vKipcbiAqIOihqOagvOe7hOS7tlxuICogQG5hbWUgdGh5LXRhYmxlXG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIWV9UQUJMRV9DT0xVTU5fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaHlUYWJsZVxuICAgICAgICB9LFxuICAgICAgICBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktdGFibGUnLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJsZS1ib3JkZXJlZF0nOiBgdGhlbWUgPT09ICdib3JkZXJlZCdgLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJsZS1ib3hlZF0nOiBgdGhlbWUgPT09ICdib3hlZCdgLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJsZS1maXhlZC1oZWFkZXJdJzogJ3RoeUhlYWRlckZpeGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeURyYWdEcm9wRGlyZWN0aXZlLFxuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgVGh5Q29udGV4dE1lbnVEaXJlY3RpdmUsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBUaHlTd2l0Y2gsXG4gICAgICAgIFRoeUVtcHR5LFxuICAgICAgICBUaHlUYWJsZVNrZWxldG9uLFxuICAgICAgICBUaHlQYWdpbmF0aW9uLFxuICAgICAgICBUYWJsZUlzVmFsaWRNb2RlbFZhbHVlUGlwZSxcbiAgICAgICAgVGFibGVSb3dEcmFnRGlzYWJsZWRQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIElUaHlUYWJsZUNvbHVtblBhcmVudENvbXBvbmVudCB7XG4gICAgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIF9kaWZmZXJzID0gaW5qZWN0KEl0ZXJhYmxlRGlmZmVycyk7XG4gICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyID0gaW5qZWN0KFZpZXdwb3J0UnVsZXIpO1xuICAgIHByaXZhdGUgdXBkYXRlSG9zdENsYXNzU2VydmljZSA9IGluamVjdChVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlKTtcbiAgICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIHB1YmxpYyBjdXN0b21UeXBlID0gY3VzdG9tVHlwZTtcblxuICAgIHB1YmxpYyBtb2RlbDogb2JqZWN0W10gPSBbXTtcblxuICAgIHB1YmxpYyBncm91cHM6IFRoeVRhYmxlR3JvdXBbXSA9IFtdO1xuXG4gICAgcHVibGljIHJvd0tleSA9ICdfaWQnO1xuXG4gICAgcHVibGljIGdyb3VwQnk6IHN0cmluZztcblxuICAgIHB1YmxpYyBtb2RlOiBUaHlUYWJsZU1vZGUgPSAnbGlzdCc7XG5cbiAgICBwdWJsaWMgdGhlbWU6IFRoeVRhYmxlVGhlbWUgPSAnZGVmYXVsdCc7XG5cbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gJyc7XG5cbiAgICBwdWJsaWMgc2l6ZTogVGh5VGFibGVTaXplID0gJ21kJztcblxuICAgIHB1YmxpYyByb3dDbGFzc05hbWU6IHN0cmluZyB8IEZ1bmN0aW9uO1xuXG4gICAgcHVibGljIGxvYWRpbmdEb25lID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBsb2FkaW5nVGV4dDogc3RyaW5nO1xuXG4gICAgcHVibGljIGVtcHR5T3B0aW9uczogVGh5VGFibGVFbXB0eU9wdGlvbnMgPSB7fTtcblxuICAgIHB1YmxpYyBkcmFnZ2FibGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFJhZGlvUm93OiBTYWZlQW55ID0gbnVsbDtcblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uOiBUaHlQYWdlID0geyBpbmRleDogMSwgc2l6ZTogMjAsIHRvdGFsOiAwLCBzaXplT3B0aW9uczogWzIwLCA1MCwgMTAwXSB9O1xuXG4gICAgcHVibGljIHRyYWNrQnlGbjogU2FmZUFueTtcblxuICAgIHB1YmxpYyB3aG9sZVJvd1NlbGVjdCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGZpeGVkRGlyZWN0aW9uID0gVGh5Rml4ZWREaXJlY3Rpb247XG5cbiAgICBwdWJsaWMgaGFzRml4ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb2x1bW5zOiBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudFtdID0gW107XG5cbiAgICBwcml2YXRlIF9kaWZmOiBJdGVyYWJsZURpZmZlcjxTYWZlQW55PjtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX29sZFRoeUNsYXNzTmFtZSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBzY3JvbGxDbGFzc05hbWUgPSBjc3MudGFibGVTY3JvbGxMZWZ0O1xuXG4gICAgcHJpdmF0ZSBnZXQgdGFibGVTY3JvbGxFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY3NzLnRhYmxlQm9keSlbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgc2Nyb2xsJCgpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKHRoaXMudGFibGVTY3JvbGxFbGVtZW50ID8gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudGFibGVTY3JvbGxFbGVtZW50LCAnc2Nyb2xsJykgOiBFTVBUWSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5pWw5o2u5Li656m65pe25bGV56S655qE5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eScpIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8U2FmZUFueT47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdyb3dzJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHJvd3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICAvKipcbiAgICAgKiDooajmoLzlsZXnpLrmlrnlvI/vvIzliJfooagv5YiG57uEL+agkVxuICAgICAqIEB0eXBlIGxpc3QgfCBncm91cCB8IHRyZWVcbiAgICAgKiBAZGVmYXVsdCBsaXN0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TW9kZSh2YWx1ZTogVGh5VGFibGVNb2RlKSB7XG4gICAgICAgIHRoaXMubW9kZSA9IHZhbHVlIHx8IHRoaXMubW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aHlNb2Rl55qE5YC85Li6IGBncm91cGAg5pe25YiG57uE55qEIEtleVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUdyb3VwQnkodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3VwQnkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mr4/ooYzmlbDmja7nmoTllK/kuIDmoIfor4blsZ7mgKflkI1cbiAgICAgKiBAZGVmYXVsdCBfaWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlSb3dLZXkodmFsdWU6IFNhZmVBbnkpIHtcbiAgICAgICAgdGhpcy5yb3dLZXkgPSB2YWx1ZSB8fCB0aGlzLnJvd0tleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDliIbnu4TmlbDmja7mupBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlHcm91cHModmFsdWU6IFNhZmVBbnkpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3Vwcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlbDmja7mupBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlNb2RlbCh2YWx1ZTogU2FmZUFueSkge1xuICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWUgfHwgW107XG4gICAgICAgIHRoaXMuX2RpZmYgPSB0aGlzLl9kaWZmZXJzLmZpbmQodGhpcy5tb2RlbCkuY3JlYXRlKCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVEYXRhTW9kZWwoKTtcblxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOihqOagvOeahOaYvuekuumjjuagvO+8jGBib3JkZXJlZGAg5pe25aS06YOo5pyJ6IOM5pmv6Imy5LiU5YiG5Ymy57q/5Yy65Yir5piO5pi+XG4gICAgICogQHR5cGUgZGVmYXVsdCB8IGJvcmRlcmVkIHwgYm94ZWRcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VGhlbWUodmFsdWU6IFRoeVRhYmxlVGhlbWUpIHtcbiAgICAgICAgdGhpcy50aGVtZSA9IHZhbHVlIHx8IHRoaXMudGhlbWU7XG4gICAgICAgIHRoaXMuX3NldENsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6KGo5qC855qE5aSn5bCPXG4gICAgICogQHR5cGUgeHMgfCBzbSB8IG1kIHwgbGcgfCB4bGcgfCBkZWZhdWx0XG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlTaXplKHZhbHVlOiBUaHlUYWJsZVNpemUpIHtcbiAgICAgICAgdGhpcy5zaXplID0gdmFsdWUgfHwgdGhpcy5zaXplO1xuICAgICAgICB0aGlzLl9zZXRDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruihqOagvOacgOWwj+WuveW6pu+8jOS4gOiIrOaYr+mAgueUqOS6juiuvue9ruWIl+WuveS4uueZvuWIhuS5i+aIlmF1dG/ml7bpmZDliLbooajmoLzmnIDlsI/lrr3luqYnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRDc3NQaXhlbCgpXG4gICAgdGh5TWluV2lkdGg6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruS4uiBmaXhlZCDluIPlsYDooajmoLzvvIzorr7nva4gZml4ZWQg5ZCO77yM5YiX5a695bCG5Lil5qC85oyJ54Wn6K6+572u5a695bqm5bGV56S677yM5YiX5a695bCG5LiN5Lya5qC55o2u6KGo5qC85YaF5a656Ieq5Yqo6LCD5pW0XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlMYXlvdXRGaXhlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuihqOWktOWbuuWumu+8jOiLpeiuvue9ruS4uiB0cnVl77yMIOmcgOimgeWQjOatpeiuvue9riB0aHlIZWlnaHRcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUhlYWRlckZpeGVkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC855qE6auY5bqmXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Q3NzUGl4ZWwoKVxuICAgIHRoeUhlaWdodDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u6KGo5qC855qE5qC35byPXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuY2xhc3NOYW1lLnNwbGl0KCcgJykuZmlsdGVyKGEgPT4gYS50cmltKCkpO1xuICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gbGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLl9vbGRUaHlDbGFzc05hbWUpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGlzdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbGRUaHlDbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBsaXN0LmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ooajmoLzooYznmoTmoLflvI/vvIzkvKDlhaXlh73mlbDvvIzmlK/mjIEgcm9344CBaW5kZXhcbiAgICAgKiBAdHlwZSBzdHJpbmcgfCAocm93LCBpbmRleCkgPT4gc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Um93Q2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLnJvd0NsYXNzTmFtZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWKoOi9veeKtuaAgVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlMb2FkaW5nRG9uZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmxvYWRpbmdEb25lID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5Yqg6L295pe25pi+56S655qE5paH5pys77yM5bey5bqf5byDXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlMb2FkaW5nVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1RleHQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDphY3nva7nqbrnirbmgIHnu4Tku7ZcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlFbXB0eU9wdGlvbnModmFsdWU6IFRoeVRhYmxlRW1wdHlPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZW1wdHlPcHRpb25zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byA5ZCv6KGM5ouW5ou9XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlEcmFnZ2FibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kcmFnZ2FibGUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKCh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIHRoaXMuZHJhZ2dhYmxlICYmIHRoaXMubW9kZSA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyZWUgbW9kZSBzb3J0aW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruW9k+WJjemhteeggVxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24uaW5kZXggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mr4/pobXmmL7npLrmlbDph49cbiAgICAgKiBAZGVmYXVsdCAyMFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgc2V0IHRoeVBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnNpemUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mgLvpobXmlbBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICAgIHNldCB0aHlQYWdlVG90YWwodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24udG90YWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDpgInkuK3lvZPliY3ooYzmmK/lkKboh6rliqjpgInkuK0gQ2hlY2tib3jvvIzkuI3lvIDlkK/ml7blj6rmnInngrnlh7sgQ2hlY2tib3gg5YiX5pe25omN5Lya6Kem5Y+R6YCJ5LitXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlXaG9sZVJvd1NlbGVjdCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lICs9ICcgdGFibGUtaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2hvbGVSb3dTZWxlY3QgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrooajmoLzlpLRcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUhlYWRsZXNzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrooajmoLzlpLTvvIzlt7Llup/lvIPvvIzor7fkvb/nlKggdGh5SGVhZGxlc3NcbiAgICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIHRoeUhlYWRsZXNzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBzZXQgdGh5U2hvd0hlYWRlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRoeUhlYWRsZXNzID0gIXZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW3puS+pyBUb3RhbFxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAndGh5U2hvd1RvdGFsJywgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgc2hvd1RvdGFsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrosIPmlbTmr4/pobXmmL7npLrmnaHmlbDkuIvmi4nmoYZcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3RoeVNob3dTaXplQ2hhbmdlcicsIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHNob3dTaXplQ2hhbmdlciA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5q+P6aG15pi+56S65p2h5pWw5LiL5ouJ5qGG5Y+v6YCJ6aG5XG4gICAgICogQHR5cGUgbnVtYmVyW11cbiAgICAgKi9cbiAgICBASW5wdXQoJ3RoeVBhZ2VTaXplT3B0aW9ucycpXG4gICAgc2V0IHBhZ2VTaXplT3B0aW9ucyh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnNpemVPcHRpb25zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdGh5TW9kZSDkuLogdHJlZSDml7bvvIzorr7nva4gVHJlZSDmoJHnirbmlbDmja7lsZXnpLrml7bnmoTnvKnov5tcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0aHlJbmRlbnQgPSAyMDtcblxuICAgIC8qKlxuICAgICAqIHRoeU1vZGUg5Li6IHRyZWUg5pe277yM6K6+572uIFRyZWUg5qCR54q25pWw5o2u5a+56LGh5Lit55qE5a2Q6IqC54K5IEtleVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNoaWxkcmVuS2V5ID0gJ2NoaWxkcmVuJztcblxuICAgIC8qKlxuICAgICAqIOW8gOWQryBIb3ZlciDlkI7mmL7npLrmk43kvZzvvIzpu5jorqTkuI3mmL7npLrmk43kvZzljLrlhoXlrrnvvIzpvKDmoIcgSG92ZXIg5pe25bGV56S6XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS10YWJsZS1ob3Zlci1kaXNwbGF5LW9wZXJhdGlvbicpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlIb3ZlckRpc3BsYXlPcGVyYXRpb246IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0aHlEcmFnRGlzYWJsZWRQcmVkaWNhdGU6IChpdGVtOiBTYWZlQW55KSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDooajmoLzliJfnmoTpqqjmnrbnsbvlnotcbiAgICAgKiBAdHlwZSBUaHlUYWJsZUNvbHVtblNrZWxldG9uVHlwZVtdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Q29sdW1uU2tlbGV0b25UeXBlczogVGh5VGFibGVDb2x1bW5Ta2VsZXRvblR5cGVbXSA9IFtcbiAgICAgICAgVGh5VGFibGVDb2x1bW5Ta2VsZXRvblR5cGUudGl0bGUsXG4gICAgICAgIFRoeVRhYmxlQ29sdW1uU2tlbGV0b25UeXBlLm1lbWJlcixcbiAgICAgICAgVGh5VGFibGVDb2x1bW5Ta2VsZXRvblR5cGUuZGVmYXVsdFxuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiDliIfmjaLnu4Tku7blm57osIPkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25Td2l0Y2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlTd2l0Y2hFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVN3aXRjaEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC85YiG6aG15Zue6LCD5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlQ2hhbmdlZEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC85YiG6aG15b2T5YmN6aG15pS55Y+Y5Zue6LCD5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUGFnZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpIHRoeU9uUGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlpJrpgInlm57osIPkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25NdWx0aVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPFRoeU11bHRpU2VsZWN0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlNdWx0aVNlbGVjdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog5Y2V6YCJ5Zue6LCD5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUmFkaW9TZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlSYWRpb1NlbGVjdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5UmFkaW9TZWxlY3RFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOaLluWKqOS/ruaUueS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkRyYWdnYWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPFRoeVRhYmxlRHJhZ2dhYmxlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUYWJsZURyYWdnYWJsZUV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6KGo5qC86KGM54K55Ye76Kem5Y+R5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxUaHlUYWJsZVJvd0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VGFibGVSb3dFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOWIl+aOkuW6j+S/ruaUueS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5VGFibGVTb3J0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUYWJsZVNvcnRFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSB0aHlPblJvd0NvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8VGh5VGFibGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRhYmxlRXZlbnQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKCdncm91cCcsIHsgc3RhdGljOiB0cnVlIH0pIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgICBzZXQgbGlzdE9mQ29sdW1uQ29tcG9uZW50cyhjb21wb25lbnRzOiBRdWVyeUxpc3Q8VGh5VGFibGVDb2x1bW5Db21wb25lbnQ+KSB7XG4gICAgICAgIGlmIChjb21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBjb21wb25lbnRzLnRvQXJyYXkoKTtcbiAgICAgICAgICAgIHRoaXMuaGFzRml4ZWQgPSAhIXRoaXMuY29sdW1ucy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZpeGVkID09PSB0aGlzLmZpeGVkRGlyZWN0aW9uLmxlZnQgfHwgaXRlbS5maXhlZCA9PT0gdGhpcy5maXhlZERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5idWlsZFNrZWxldG9uQ29sdW1ucygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbHVtbnMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVEYXRhTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOaVsOaNrueahOaKmOWPoOWxleW8gOeKtuaAgVxuICAgIHB1YmxpYyBleHBhbmRTdGF0dXNNYXA6IERpY3Rpb25hcnk8Ym9vbGVhbj4gPSB7fTtcblxuICAgIHB1YmxpYyBleHBhbmRTdGF0dXNNYXBPZkdyb3VwOiBEaWN0aW9uYXJ5PGJvb2xlYW4+ID0ge307XG5cbiAgICBwcml2YXRlIGV4cGFuZFN0YXR1c01hcE9mR3JvdXBCZWZvcmVEcmFnOiBEaWN0aW9uYXJ5PGJvb2xlYW4+ID0ge307XG5cbiAgICBkcmFnUHJldmlld0NsYXNzID0gJ3RoeS10YWJsZS1kcmFnLXByZXZpZXcnO1xuXG4gICAgcHVibGljIHNrZWxldG9uQ29sdW1uczogVGh5VGFibGVTa2VsZXRvbkNvbHVtbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fYmluZFRyYWNrRm4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ29sdW1ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbnMuc29tZShpdGVtID0+IGl0ZW0uZXhwYW5kID09PSB0cnVlKSAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zWzBdLmV4cGFuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUNvbHVtbkZpeGVkUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUNvbHVtbkZpeGVkUG9zaXRpb25zKCkge1xuICAgICAgICBjb25zdCBsZWZ0Rml4ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+IGl0ZW0uZml4ZWQgPT09IFRoeUZpeGVkRGlyZWN0aW9uLmxlZnQpO1xuICAgICAgICBsZWZ0Rml4ZWRDb2x1bW5zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IGxlZnRGaXhlZENvbHVtbnNbaW5kZXggLSAxXTtcbiAgICAgICAgICAgIGl0ZW0ubGVmdCA9IHByZXZpb3VzID8gcHJldmlvdXMubGVmdCArIHBhcnNlSW50KHByZXZpb3VzLndpZHRoLnRvU3RyaW5nKCksIDEwKSA6IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByaWdodEZpeGVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmZpeGVkID09PSBUaHlGaXhlZERpcmVjdGlvbi5yaWdodCkucmV2ZXJzZSgpO1xuICAgICAgICByaWdodEZpeGVkQ29sdW1ucy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXMgPSByaWdodEZpeGVkQ29sdW1uc1tpbmRleCAtIDFdO1xuICAgICAgICAgICAgaXRlbS5yaWdodCA9IHByZXZpb3VzID8gcHJldmlvdXMucmlnaHQgKyBwYXJzZUludChwcmV2aW91cy53aWR0aC50b1N0cmluZygpLCAxMCkgOiAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRGF0YU1vZGVsKCkge1xuICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbFNlbGVjdGlvbnMocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxDdXN0b21Nb2RlbFZhbHVlKHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsU2VsZWN0aW9ucyhyb3c6IG9iamVjdCwgY29sdW1uOiBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICBpZiAoY29sdW1uLnNlbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgIHJvd1tjb2x1bW4ua2V5XSA9IGNvbHVtbi5zZWxlY3Rpb25zLmluY2x1ZGVzKHJvd1t0aGlzLnJvd0tleV0pO1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uLnNlbGVjdGlvbnMuaW5jbHVkZXMocm93W3RoaXMucm93S2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvUm93ID0gcm93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRpYWxDdXN0b21Nb2RlbFZhbHVlKHJvdzogb2JqZWN0LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5zd2l0Y2gpIHtcbiAgICAgICAgICAgIHJvd1tjb2x1bW4ua2V5XSA9IGdldChyb3csIGNvbHVtbi5tb2RlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWZyZXNoQ3VzdG9tTW9kZWxWYWx1ZShyb3c6IFNhZmVBbnkpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxDdXN0b21Nb2RlbFZhbHVlKHJvdywgY29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHlEaWZmQ2hhbmdlcyhjaGFuZ2VzOiBJdGVyYWJsZUNoYW5nZXM8U2FmZUFueT4pIHtcbiAgICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxTYWZlQW55PikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hDdXN0b21Nb2RlbFZhbHVlKHJlY29yZC5pdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYmluZFRyYWNrRm4oKSB7XG4gICAgICAgIHRoaXMudHJhY2tCeUZuID0gZnVuY3Rpb24gKHRoaXM6IFNhZmVBbnksIGluZGV4OiBudW1iZXIsIHJvdzogU2FmZUFueSk6IFNhZmVBbnkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdyAmJiB0aGlzLnJvd0tleSA/IHJvd1t0aGlzLnJvd0tleV0gOiBpbmRleDtcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rlc3Ryb3lJbnZhbGlkQXR0cmlidXRlKCkge1xuICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJvdykge1xuICAgICAgICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ1skJGNvbHVtbl0nKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcm93W2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDbGFzcyhmaXJzdCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghZmlyc3QgJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5zaXplKSB7XG4gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goYHRhYmxlLSR7dGhpcy5zaXplfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZVRoZW1lTWFwW3RoaXMudGhlbWVdKSB7XG4gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2godGFibGVUaGVtZU1hcFt0aGlzLnRoZW1lXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UudXBkYXRlQ2xhc3MoY2xhc3NOYW1lcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUNvbHVtblNlbGVjdGlvbnMoa2V5OiBzdHJpbmcsIHNlbGVjdGlvbnM6IFNhZmVBbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsU2VsZWN0aW9ucyhyb3csIGNvbHVtbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1RlbXBsYXRlUmVmKHJlZjogU2FmZUFueSkge1xuICAgICAgICByZXR1cm4gcmVmIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGVsVmFsdWUocm93OiBTYWZlQW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGdldChyb3csIHBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJSb3dDbGFzc05hbWUocm93OiBTYWZlQW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICghdGhpcy5yb3dDbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cmluZyh0aGlzLnJvd0NsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvd0NsYXNzTmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5yb3dDbGFzc05hbWUgYXMgRnVuY3Rpb24pKHJvdywgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2Uocm93OiBTYWZlQW55LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb2x1bW4ubW9kZWwpIHtcbiAgICAgICAgICAgIHNldChyb3csIGNvbHVtbi5tb2RlbCwgcm93W2NvbHVtbi5rZXldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMud2hvbGVSb3dTZWxlY3QpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUGFnZUNoYW5nZShldmVudDogUGFnZUNoYW5nZWRFdmVudCkge1xuICAgICAgICB0aGlzLnRoeU9uUGFnZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QYWdlSW5kZXhDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRoeU9uUGFnZUluZGV4Q2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy50aHlPblBhZ2VTaXplQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKHJvdzogU2FmZUFueSwgY29sdW1uOiBUaHlUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uocm93LCBjb2x1bW4pO1xuICAgICAgICB0aGlzLm9uTXVsdGlTZWxlY3RDaGFuZ2UobnVsbCwgcm93LCBjb2x1bW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk11bHRpU2VsZWN0Q2hhbmdlKGV2ZW50OiBFdmVudCwgcm93OiBTYWZlQW55LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLm1vZGVsLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtW2NvbHVtbi5rZXldO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbXVsdGlTZWxlY3RFdmVudDogVGh5TXVsdGlTZWxlY3RFdmVudCA9IHtcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgcm93czogcm93c1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRoeU9uTXVsdGlTZWxlY3RDaGFuZ2UuZW1pdChtdWx0aVNlbGVjdEV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SYWRpb1NlbGVjdENoYW5nZShldmVudDogRXZlbnQsIHJvdzogU2FmZUFueSkge1xuICAgICAgICBjb25zdCByYWRpb1NlbGVjdEV2ZW50OiBUaHlSYWRpb1NlbGVjdEV2ZW50ID0ge1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgcm93OiByb3dcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aHlPblJhZGlvU2VsZWN0Q2hhbmdlLmVtaXQocmFkaW9TZWxlY3RFdmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3dpdGNoQ2hhbmdlKGV2ZW50OiBFdmVudCwgcm93OiBTYWZlQW55LCBjb2x1bW46IFNhZmVBbnkpIHtcbiAgICAgICAgY29uc3Qgc3dpdGNoRXZlbnQ6IFRoeVN3aXRjaEV2ZW50ID0ge1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICByZWZyZXNoOiAodmFsdWU6IFNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIHx8IHJvdztcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVbY29sdW1uLmtleV0gPSBnZXQodmFsdWUsIGNvbHVtbi5tb2RlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGh5T25Td2l0Y2hDaGFuZ2UuZW1pdChzd2l0Y2hFdmVudCk7XG4gICAgfVxuXG4gICAgc2hvd0V4cGFuZChyb3c6IFNhZmVBbnkpIHtcbiAgICAgICAgcmV0dXJuIHJvd1t0aGlzLnRoeUNoaWxkcmVuS2V5XSAmJiByb3dbdGhpcy50aHlDaGlsZHJlbktleV0ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc0V4cGFuZGVkKHJvdzogU2FmZUFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRTdGF0dXNNYXBbcm93W3RoaXMucm93S2V5XV07XG4gICAgfVxuXG4gICAgaWNvbkluZGVudENvbXB1dGVkKGxldmVsOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgICByZXR1cm4gbGV2ZWwgKiB0aGlzLnRoeUluZGVudCAtIDU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZEluZGVudENvbXB1dGVkKGxldmVsOiBudW1iZXIsIGNvbHVtbjogU2FmZUFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogYCR7Y29sdW1uLmxlZnR9cHhgLFxuICAgICAgICAgICAgcmlnaHQ6IGAke2NvbHVtbi5yaWdodH1weGAsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBgJHsobGV2ZWwgKyAxKSAqIHRoaXMudGh5SW5kZW50IC0gNX1weGBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBleHBhbmRDaGlsZHJlbihyb3c6IFNhZmVBbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZChyb3cpKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFN0YXR1c01hcFtyb3dbdGhpcy5yb3dLZXldXSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRTdGF0dXNNYXBbcm93W3RoaXMucm93S2V5XV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnR3JvdXBTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQ8dW5rbm93bj4pIHtcbiAgICAgICAgdGhpcy5leHBhbmRTdGF0dXNNYXBPZkdyb3VwQmVmb3JlRHJhZyA9IHsgLi4udGhpcy5leHBhbmRTdGF0dXNNYXBPZkdyb3VwIH07XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcihncm91cCA9PiBncm91cC5leHBhbmQpO1xuICAgICAgICB0aGlzLmZvbGRHcm91cHMoZ3JvdXBzKTtcbiAgICAgICAgdGhpcy5vbkRyYWdTdGFydGVkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uRHJhZ0dyb3VwRW5kKGV2ZW50OiBDZGtEcmFnRW5kPHVua25vd24+KSB7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcihncm91cCA9PiB0aGlzLmV4cGFuZFN0YXR1c01hcE9mR3JvdXBCZWZvcmVEcmFnW2dyb3VwLmlkXSk7XG4gICAgICAgIHRoaXMuZXhwYW5kR3JvdXBzKGdyb3Vwcyk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRHJhZ0dyb3VwRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8dW5rbm93bj4pIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwcy5maW5kKGdyb3VwID0+IHtcbiAgICAgICAgICAgIHJldHVybiBldmVudC5pdGVtLmRhdGEuaWQgPT09IGdyb3VwLmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICAvLyBkcmFnIGdyb3VwXG4gICAgICAgICAgICBjb25zdCBkcmFnRXZlbnQ6IFRoeVRhYmxlRHJhZ2dhYmxlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgbW9kZWw6IGV2ZW50Lml0ZW0sXG4gICAgICAgICAgICAgICAgbW9kZWxzOiB0aGlzLmdyb3VwcyxcbiAgICAgICAgICAgICAgICBvbGRJbmRleDogZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgICAgICBuZXdJbmRleDogZXZlbnQuY3VycmVudEluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZ3JvdXBzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgdGhpcy50aHlPbkRyYWdnYWJsZUNoYW5nZS5lbWl0KGRyYWdFdmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBkcmFnIGdyb3VwIGNoaWxkcmVuXG4gICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBzLmZpbmQoZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5pdGVtLmRhdGFbdGhpcy5ncm91cEJ5XSA9PT0gZ3JvdXAuaWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPVxuICAgICAgICAgICAgICAgIGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpLmZpbmRJbmRleChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGF0YS5pZCA9PT0gZXZlbnQuaXRlbS5kYXRhW3RoaXMuZ3JvdXBCeV07XG4gICAgICAgICAgICAgICAgfSkgKyAxO1xuICAgICAgICAgICAgY29uc3QgZHJhZ0V2ZW50OiBUaHlUYWJsZURyYWdnYWJsZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG1vZGVsOiBldmVudC5pdGVtLFxuICAgICAgICAgICAgICAgIG1vZGVsczogZ3JvdXAuY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgb2xkSW5kZXg6IGV2ZW50LnByZXZpb3VzSW5kZXggLSBncm91cEluZGV4LFxuICAgICAgICAgICAgICAgIG5ld0luZGV4OiBldmVudC5jdXJyZW50SW5kZXggLSBncm91cEluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGdyb3VwLmNoaWxkcmVuLCBkcmFnRXZlbnQub2xkSW5kZXgsIGRyYWdFdmVudC5uZXdJbmRleCk7XG4gICAgICAgICAgICB0aGlzLnRoeU9uRHJhZ2dhYmxlQ2hhbmdlLmVtaXQoZHJhZ0V2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydDx1bmtub3duPikge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlldyA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLmRyYWdQcmV2aWV3Q2xhc3MpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGRzOiBIVE1MQ29sbGVjdGlvbiA9IGV2ZW50LnNvdXJjZS5fZHJhZ1JlZi5nZXRQbGFjZWhvbGRlckVsZW1lbnQoKT8uY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuZnJvbShwcmV2aWV3Py5jaGlsZHJlbikuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtvcmlnaW5hbFRkc1tpbmRleF0/LmNsaWVudFdpZHRofXB4YDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkcm9wTGlzdEVudGVyUHJlZGljYXRlID0gKGluZGV4OiBudW1iZXIsIGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KSA9PiB7XG4gICAgICAgIHJldHVybiBkcm9wLmdldFNvcnRlZEl0ZW1zKClbaW5kZXhdLmRhdGEuZ3JvdXBfaWQgPT09IGRyYWcuZGF0YS5ncm91cF9pZDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbkRyYWdNb2RlbERyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPHVua25vd24+KSB7XG4gICAgICAgIGNvbnN0IGRyYWdFdmVudDogVGh5VGFibGVEcmFnZ2FibGVFdmVudCA9IHtcbiAgICAgICAgICAgIG1vZGVsOiBldmVudC5pdGVtLFxuICAgICAgICAgICAgbW9kZWxzOiB0aGlzLm1vZGVsLFxuICAgICAgICAgICAgb2xkSW5kZXg6IGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICBuZXdJbmRleDogZXZlbnQuY3VycmVudEluZGV4XG4gICAgICAgIH07XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm1vZGVsLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB0aGlzLnRoeU9uRHJhZ2dhYmxlQ2hhbmdlLmVtaXQoZHJhZ0V2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDx1bmtub3duPikge1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICB0aGlzLm9uRHJhZ0dyb3VwRHJvcHBlZChldmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnbGlzdCcpIHtcbiAgICAgICAgICAgIHRoaXMub25EcmFnTW9kZWxEcm9wcGVkKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29sdW1uSGVhZGVyQ2xpY2soZXZlbnQ6IEV2ZW50LCBjb2x1bW46IFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc29ydERpcmVjdGlvbiwgbW9kZWwsIHNvcnRDaGFuZ2UgfSA9IGNvbHVtbjtcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb247XG4gICAgICAgICAgICBpZiAoc29ydERpcmVjdGlvbiA9PT0gVGh5VGFibGVTb3J0RGlyZWN0aW9uLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBUaHlUYWJsZVNvcnREaXJlY3Rpb24uZGVzYztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PT0gVGh5VGFibGVTb3J0RGlyZWN0aW9uLmRlc2MpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBUaHlUYWJsZVNvcnREaXJlY3Rpb24uYXNjO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBUaHlUYWJsZVNvcnREaXJlY3Rpb24uZGVmYXVsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbHVtbi5zb3J0RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgY29uc3Qgc29ydEV2ZW50ID0geyBldmVudCwga2V5OiBtb2RlbCwgZGlyZWN0aW9uIH07XG4gICAgICAgICAgICBzb3J0Q2hhbmdlLmVtaXQoc29ydEV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMudGh5U29ydENoYW5nZS5lbWl0KHNvcnRFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Sb3dDbGljayhldmVudDogRXZlbnQsIHJvdzogU2FmZUFueSkge1xuICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy5vblJvd0NsaWNrUHJvcGFnYXRpb25FdmVudEhhbmRsZXIoZXZlbnQsIHJvdyk7XG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy53aG9sZVJvd1NlbGVjdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS50eXBlID09PSBjdXN0b21UeXBlLmNoZWNrYm94IHx8IGl0ZW0udHlwZSA9PT0gY3VzdG9tVHlwZS5yYWRpbztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uICYmICFjb2x1bW4uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSBjdXN0b21UeXBlLmNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dbY29sdW1uLmtleV0gPSAhcm93W2NvbHVtbi5rZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25NdWx0aVNlbGVjdENoYW5nZShldmVudCwgcm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5yYWRpbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvUm93ID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJhZGlvU2VsZWN0Q2hhbmdlKGV2ZW50LCByb3cpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgcm93RXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIHJvdzogcm93XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50aHlPblJvd0NsaWNrLmVtaXQocm93RXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvd0NsaWNrUHJvcGFnYXRpb25FdmVudEhhbmRsZXIoZXZlbnQ6IEV2ZW50LCByb3c6IFNhZmVBbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnLnRyZWUtZXhwYW5kLWljb24nKSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRDaGlsZHJlbihyb3cpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvd0NvbnRleHRNZW51KGV2ZW50OiBFdmVudCwgcm93OiBTYWZlQW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRNZW51RXZlbnQ6IFRoeVRhYmxlRXZlbnQgPSB7XG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICByb3c6IHJvd1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRoeU9uUm93Q29udGV4dE1lbnUuZW1pdChjb250ZXh0TWVudUV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWZyZXNoQ29sdW1ucygpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRoaXMuY29sdW1ucyB8fCBbXTtcbiAgICAgICAgY29uc3QgX2NvbHVtbnMgPSBjb21wb25lbnRzLm1hcChjb21wb25lbnQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY29tcG9uZW50LndpZHRoLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY29tcG9uZW50LmNsYXNzTmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKG4sIGkpID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obiwgX2NvbHVtbnNbaV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkR3JvdXBzKG9yaWdpbkdyb3VwczogU2FmZUFueSkge1xuICAgICAgICBjb25zdCBvcmlnaW5Hcm91cHNNYXAgPSBoZWxwZXJzLmtleUJ5KG9yaWdpbkdyb3VwcywgJ2lkJyk7XG4gICAgICAgIHRoaXMuZ3JvdXBzID0gW107XG4gICAgICAgIG9yaWdpbkdyb3Vwcy5mb3JFYWNoKChvcmlnaW46IFNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBUaHlUYWJsZUdyb3VwID0geyBpZDogb3JpZ2luW3RoaXMucm93S2V5XSwgY2hpbGRyZW46IFtdLCBvcmlnaW4gfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kU3RhdHVzTWFwT2ZHcm91cC5oYXNPd25Qcm9wZXJ0eShncm91cC5pZCkpIHtcbiAgICAgICAgICAgICAgICBncm91cC5leHBhbmQgPSB0aGlzLmV4cGFuZFN0YXR1c01hcE9mR3JvdXBbZ3JvdXAuaWRdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cC5leHBhbmQgPSAhIShvcmlnaW5Hcm91cHNNYXBbZ3JvdXAuaWRdIGFzIFNhZmVBbnkpLmV4cGFuZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRNb2RlbCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzTWFwID0ga2V5QnkodGhpcy5ncm91cHMsICdpZCcpO1xuICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzTWFwW3Jvd1t0aGlzLmdyb3VwQnldXTtcbiAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICAgIGdyb3VwLmNoaWxkcmVuLnB1c2gocm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cGFuZEdyb3VwKGdyb3VwOiBUaHlUYWJsZUdyb3VwKSB7XG4gICAgICAgIGdyb3VwLmV4cGFuZCA9ICFncm91cC5leHBhbmQ7XG4gICAgICAgIHRoaXMuZXhwYW5kU3RhdHVzTWFwT2ZHcm91cFtncm91cC5pZF0gPSBncm91cC5leHBhbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHBhbmRHcm91cHMoZ3JvdXBzOiBUaHlUYWJsZUdyb3VwW10pIHtcbiAgICAgICAgZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRHcm91cChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9sZEdyb3Vwcyhncm91cHM6IFRoeVRhYmxlR3JvdXBbXSkge1xuICAgICAgICBncm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZEdyb3VwKGdyb3VwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxDbGFzcygpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IHRoaXMudGFibGVTY3JvbGxFbGVtZW50O1xuICAgICAgICBjb25zdCBtYXhTY3JvbGxMZWZ0ID0gc2Nyb2xsRWxlbWVudC5zY3JvbGxXaWR0aCAtIHNjcm9sbEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IHNjcm9sbFggPSBzY3JvbGxFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IGxhc3RTY3JvbGxDbGFzc05hbWUgPSB0aGlzLnNjcm9sbENsYXNzTmFtZTtcbiAgICAgICAgdGhpcy5zY3JvbGxDbGFzc05hbWUgPSAnJztcbiAgICAgICAgaWYgKHNjcm9sbEVsZW1lbnQuc2Nyb2xsV2lkdGggPiBzY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsWCA+PSBtYXhTY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDbGFzc05hbWUgPSBjc3MudGFibGVTY3JvbGxSaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2Nyb2xsWCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ2xhc3NOYW1lID0gY3NzLnRhYmxlU2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDbGFzc05hbWUgPSBjc3MudGFibGVTY3JvbGxNaWRkbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhc3RTY3JvbGxDbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZVNjcm9sbEVsZW1lbnQsIGxhc3RTY3JvbGxDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbENsYXNzTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRhYmxlU2Nyb2xsRWxlbWVudCwgdGhpcy5zY3JvbGxDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSG9zdENsYXNzU2VydmljZS5pbml0aWFsaXplRWxlbWVudCh0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fc2V0Q2xhc3ModHJ1ZSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIG1lcmdlKHRoaXMudmlld3BvcnRSdWxlci5jaGFuZ2UoMjAwKSwgb2YobnVsbCkucGlwZShkZWxheSgyMDApKSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaENvbHVtbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbENsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGwkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxDbGFzcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRTa2VsZXRvbkNvbHVtbnMoKSB7XG4gICAgICAgIHRoaXMuc2tlbGV0b25Db2x1bW5zID0gW107XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogVGh5VGFibGVDb2x1bW5Db21wb25lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogdGhpcy50aHlDb2x1bW5Ta2VsZXRvblR5cGVzW2luZGV4XSB8fCBUaHlUYWJsZUNvbHVtblNrZWxldG9uVHlwZS5kZWZhdWx0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGggfHwgJ2F1dG8nXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5za2VsZXRvbkNvbHVtbnMgPSBbLi4udGhpcy5za2VsZXRvbkNvbHVtbnMsIGl0ZW1dO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm93cy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5yb3dzKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZTxFdmVudD4oc3Vic2NyaWJlciA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5yb3dzLm1hcChyb3cgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB0aGVyZSdzIG5vIG5lZWQgdG8gYWRkIHRvdWNoLCBwb2ludGVyIGFuZCBtb3VzZSBldmVudCBsaXN0ZW5lcnMgdG9nZXRoZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGNhbiBiZSBhbnkgbnVtYmVyIG9mIHJvd3MsIHdoaWNoIHdpbGwgbGVhZCB0byBhZGRpbmcgTiAqIDMgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wb2ludGVyZXZlbnRzLyNleGFtcGxlcyksIHdlIGNhbiB1c2UgZmVhdHVyZSBkZXRlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIGlmIHBvaW50ZXIgZXZlbnRzIGFyZSBhdmFpbGFibGUuIElmIHBvaW50ZXIgZXZlbnRzIGFyZSBhdmFpbGFibGUsIHdlIGhhdmUgdG8gbGlzdGVuIG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIGBwb2ludGVyZG93bmAgZXZlbnQuIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgd2UncmUgb24gYSB0b3VjaCBkZXZpY2Ugb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3VjaCBldmVudHMgYXJlIGhhbmRsZWQgZWFybGllciB0aGFuIG1vdXNlIGV2ZW50cywgdGhvIG5vdCBhbGwgdXNlciBhZ2VudHMgZGlzcGF0Y2ggbW91c2UgZXZlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIHRvdWNoIGV2ZW50cy4gU2VlIHRoZSBzcGVjOiBodHRwczovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzLyNtb3VzZS1ldmVudHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5Qb2ludGVyRXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BvaW50ZXJkb3duJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnb250b3VjaHN0YXJ0JyBpbiByb3cubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0b3VjaHN0YXJ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdtb3VzZWRvd24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBzaW5jZSBDaHJvbWUgNTYgZGVmYXVsdHMgZG9jdW1lbnQgbGV2ZWwgYHRvdWNoc3RhcnRgIGxpc3RlbmVyIHRvIHBhc3NpdmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50IGB0b3VjaHN0YXJ0YCBsaXN0ZW5lciBpcyBub3QgcGFzc2l2ZSBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5ldmVyIGNhbGwgYHByZXZlbnREZWZhdWx0KClgIG9uIGl0LCBzbyB3ZSdyZSBzYWZlIG1ha2luZyBpdCBwYXNzaXZlIHRvby5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zPnBhc3NpdmVFdmVudExpc3RlbmVyT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG1vZGVDaGFuZ2UgPSBzaW1wbGVDaGFuZ2VzLnRoeU1vZGU7XG4gICAgICAgIGNvbnN0IHRoeUdyb3Vwc0NoYW5nZSA9IHNpbXBsZUNoYW5nZXMudGh5R3JvdXBzO1xuICAgICAgICBjb25zdCBpc0dyb3VwTW9kZSA9IG1vZGVDaGFuZ2UgJiYgbW9kZUNoYW5nZS5jdXJyZW50VmFsdWUgPT09ICdncm91cCc7XG4gICAgICAgIGlmIChpc0dyb3VwTW9kZSAmJiB0aHlHcm91cHNDaGFuZ2UgJiYgdGh5R3JvdXBzQ2hhbmdlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkR3JvdXBzKHRoeUdyb3Vwc0NoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5idWlsZE1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlmZikge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmYuZGlmZih0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5RGlmZkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUludmFsaWRBdHRyaWJ1dGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidGh5LXRhYmxlLWJvZHlcIlxuICBjZGtTY3JvbGxhYmxlXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAndGh5LXRhYmxlLWZpeGVkJzogaGFzRml4ZWQsXG4gICAgJ3RoeS10YWJsZS1ib3JkZXJlZC10aGVtZSc6IHRoZW1lID09PSAnYm9yZGVyZWQnICYmIGhhc0ZpeGVkLFxuICAgICd0aHktdGFibGUtYm9keS1lbXB0eSc6IGxvYWRpbmdEb25lICYmIG1vZGVsPy5sZW5ndGggPT09IDAgJiYgZ3JvdXBzPy5sZW5ndGggPT09IDBcbiAgfVwiPlxuICA8dGFibGVcbiAgICAjdGFibGVcbiAgICBjbGFzcz1cInRhYmxlXCJcbiAgICBbbmdDbGFzc109XCJbY2xhc3NOYW1lXVwiXG4gICAgW2NsYXNzLnRhYmxlLWZpeGVkXT1cInRoeUxheW91dEZpeGVkXCJcbiAgICBbY2xhc3MudGFibGUtZHJhZ2dhYmxlXT1cImRyYWdnYWJsZVwiXG4gICAgW2NsYXNzLnRhYmxlLWdyb3VwXT1cIm1vZGUgPT09ICdncm91cCdcIlxuICAgIFtuZ1N0eWxlXT1cInsgJ21pbi13aWR0aCc6IHRoeU1pbldpZHRoIH1cIj5cbiAgICA8Y29sZ3JvdXA+XG4gICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxjb2wgW3dpZHRoXT1cImNvbHVtbi53aWR0aFwiIFtuZ1N0eWxlXT1cInsgbWluV2lkdGg6IGhhc0ZpeGVkID8gY29sdW1uLndpZHRoIDogY29sdW1uLm1pbldpZHRoIH1cIiAvPlxuICAgICAgfVxuICAgIDwvY29sZ3JvdXA+XG5cbiAgICBAaWYgKCF0aHlIZWFkbGVzcykge1xuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDbGFzc05hbWVcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWNvbHVtbi1zb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWZpeGVkLWNvbHVtbi1sZWZ0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ubGVmdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy50aHktdGFibGUtZml4ZWQtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ucmlnaHRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IGNvbHVtbi5sZWZ0ICsgJ3B4JywgcmlnaHQ6IGNvbHVtbi5yaWdodCArICdweCcgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNvbHVtbkhlYWRlckNsaWNrKCRldmVudCwgY29sdW1uKVwiPlxuICAgICAgICAgICAgICBAaWYgKCFjb2x1bW4uaGVhZGVyVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaGVhZGVyVGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgICAgICAgICAgICA8dGh5LWljb24gW25nQ2xhc3NdPVwiWyd0aHktdGFibGUtY29sdW1uLXNvcnRhYmxlLWljb24nLCAncHgtMScsIGNvbHVtbi5zb3J0RGlyZWN0aW9uXVwiIHRoeUljb25OYW1lPVwic29ydC12ZXJ0aWNhbC10dFwiPlxuICAgICAgICAgICAgICAgIDwvdGh5LWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICB9XG5cbiAgICBAaWYgKGxvYWRpbmdEb25lKSB7XG4gICAgICA8dGJvZHlcbiAgICAgICAgdGh5RHJhZ0Ryb3BcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWRyYWdnYWJsZVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdFNvcnRQcmVkaWNhdGVdPVwiZHJvcExpc3RFbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25EcmFnRHJvcHBlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gZ3JvdXAgLS0+XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGdyb3VwczsgdHJhY2sgZ3JvdXAuaWQpIHtcbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICBjbGFzcz1cInRoeS10YWJsZS1ncm91cFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleHBhbmRHcm91cChncm91cClcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnUHJldmlld0NsYXNzXT1cImRyYWdQcmV2aWV3Q2xhc3NcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImdyb3VwIHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZVwiXG4gICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdHcm91cFN0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnR3JvdXBFbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHktdGFibGUtZ3JvdXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGRyYWdnYWJsZSAmJiAhKGdyb3VwIHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwidGFibGUtZHJhZ2dhYmxlLWljb25cIiB0aHlJY29uTmFtZT1cImRyYWdcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwiZXhwYW5kLWljb25cIiBbdGh5SWNvbk5hbWVdPVwiZ3JvdXAuZXhwYW5kID8gJ2FuZ2xlLWRvd24nIDogJ2FuZ2xlLXJpZ2h0J1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICBAaWYgKGdyb3VwVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBncm91cC5vcmlnaW4sIGdyb3VwOiBncm91cC5vcmlnaW4gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgQGlmIChncm91cC5jaGlsZHJlbj8ubGVuZ3RoICYmIGdyb3VwLmV4cGFuZCkge1xuICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZ3JvdXAuY2hpbGRyZW47IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogMFxuICAgICAgICAgICAgICAgICAgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBsaXN05qih5byP5LiL5rKh5pyJ55u05o6l5L2/55SoaXRlbeaooeadv++8jOaYr+WboOS4uuS9v+eUqOS6huaooeadv+W9seWTjeS6hkFuZ3VsYXLnmoTkvp3otZbmoJHvvIzlr7zoh7RDZGtEcmFnRHJvcOaOkuW6j+WkseaViO+8jOebruWJjei/meagt+S/ruaUueWPr+S7peaaguaXtuino+WGs+e6v+S4iuS4jeiDveaOkuW6j+eahOmXrumimO+8jFRyZWXmqKHlvI/nmoTmjpLluo/mmoLml7bkuI3mlK/mjIEgLS0+XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ2xpc3QnKSB7XG4gICAgICAgICAgQGZvciAocm93IG9mIG1vZGVsOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgI3Jvd3NcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0aHktc29ydGFibGUtaXRlbVwiXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgW2Nka0RyYWdQcmV2aWV3Q2xhc3NdPVwiZHJhZ1ByZXZpZXdDbGFzc1wiXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJyb3dcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cInJvdyB8IHRhYmxlUm93RHJhZ0Rpc2FibGVkOiB0aHlEcmFnRGlzYWJsZWRQcmVkaWNhdGVcIlxuICAgICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicmVuZGVyUm93Q2xhc3NOYW1lKHJvdywgaSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgICAodGh5Q29udGV4dE1lbnUpPVwib25Sb3dDb250ZXh0TWVudSgkZXZlbnQsIHJvdylcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgbGV2ZWw6IDBcbiAgICAgICAgICAgICAgICB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ3RyZWUnKSB7XG4gICAgICAgICAgQGZvciAocm93IG9mIG1vZGVsOyB0cmFjayB0cmFja0J5Rm4oaSwgcm93KTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0clRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIGluZGV4OiBpLCBsZXZlbDogMCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0clRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImluZGV4XCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgICNyb3dzXG4gICAgICAgICAgICBjbGFzcz1cInRoeS1zb3J0YWJsZS1pdGVtXCJcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIFtjZGtEcmFnUHJldmlld0NsYXNzXT1cImRyYWdQcmV2aWV3Q2xhc3NcIlxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInJvd1wiXG4gICAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwicm93IHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJyZW5kZXJSb3dDbGFzc05hbWUocm93LCBpKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgKHRoeUNvbnRleHRNZW51KT1cIm9uUm93Q29udGV4dE1lbnUoJGV2ZW50LCByb3cpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbCArIDFcbiAgICAgICAgICAgICAgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICBAaWYgKG1vZGUgPT09ICd0cmVlJyAmJiBpc0V4cGFuZGVkKHJvdykpIHtcbiAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIHJvd1t0aHlDaGlsZHJlbktleV07IHRyYWNrIHRyYWNrQnlGbihqLCBjaGlsZCk7IGxldCBqID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogY2hpbGQsIGluZGV4OiBqLCBsZXZlbDogbGV2ZWwgKyAxIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZHNUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJpbmRleFwiIGxldC1sZXZlbD1cImxldmVsXCI+XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleDsgbGV0IGogPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uY2xhc3NOYW1lXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRoeS1vcGVyYXRpb24tbGlua3NdPVwiISFjb2x1bW4ub3BlcmF0aW9uYWxcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWNvbHVtbi1zZWNvbmRhcnldPVwiISFjb2x1bW4uc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRoeS10YWJsZS1jaGVja2JveC1jb2x1bW5dPVwiY29sdW1uLnR5cGUgPT09IGN1c3RvbVR5cGUuY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2xhc3MudGh5LXRhYmxlLWZpeGVkLWNvbHVtbi1sZWZ0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ubGVmdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy50aHktdGFibGUtZml4ZWQtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi5maXhlZCA9PT0gZml4ZWREaXJlY3Rpb24ucmlnaHRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICBtb2RlID09PSAndHJlZScgJiYgY29sdW1uLmV4cGFuZFxuICAgICAgICAgICAgICAgICAgPyB0ZEluZGVudENvbXB1dGVkKGxldmVsLCBjb2x1bW4pXG4gICAgICAgICAgICAgICAgICA6IHsgbGVmdDogY29sdW1uLmxlZnQgKyAncHgnLCByaWdodDogY29sdW1uLnJpZ2h0ICsgJ3B4JyB9XG4gICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICBAaWYgKGogPT09IDAgJiYgZHJhZ2dhYmxlICYmICEocm93IHwgdGFibGVSb3dEcmFnRGlzYWJsZWQ6IHRoeURyYWdEaXNhYmxlZFByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJ0YWJsZS1kcmFnZ2FibGUtaWNvblwiIHRoeUljb25OYW1lPVwiZHJhZ1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLXRlbXBsYXRlLS0+XG4gICAgICAgICAgICAgIEBpZiAoaXNUZW1wbGF0ZVJlZihjb2x1bW4uY2VsbFRlbXBsYXRlUmVmKSkge1xuICAgICAgICAgICAgICAgIEBpZiAobW9kZSA9PT0gJ3RyZWUnICYmIGNvbHVtbi5leHBhbmQpIHtcbiAgICAgICAgICAgICAgICAgIDx0aHktaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtZXhwYW5kLWljb24gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdGh5SWNvbk5hbWVdPVwiaXNFeHBhbmRlZChyb3cpID8gJ2FuZ2xlLWRvd24nIDogJ2FuZ2xlLXJpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cInNob3dFeHBhbmQocm93KSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiaWNvbkluZGVudENvbXB1dGVkKGxldmVsKVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uY2VsbFRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3cgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLW5vdCB0ZW1wbGF0ZS0tPlxuICAgICAgICAgICAgICBAaWYgKCFpc1RlbXBsYXRlUmVmKGNvbHVtbi5jZWxsVGVtcGxhdGVSZWYpKSB7XG4gICAgICAgICAgICAgICAgPCEtLSBkZWZhdWx0IC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLm1vZGVsICYmICFjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgICAgQGlmIChtb2RlID09PSAndHJlZScgJiYgY29sdW1uLmV4cGFuZCkge1xuICAgICAgICAgICAgICAgICAgICA8dGh5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtZXhwYW5kLWljb24gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJpc0V4cGFuZGVkKHJvdykgPyAnYW5nbGUtZG93bicgOiAnYW5nbGUtcmlnaHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJzaG93RXhwYW5kKHJvdykgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbkxlZnQucHhdPVwiaWNvbkluZGVudENvbXB1dGVkKGxldmVsKVwiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGdldE1vZGVsVmFsdWUocm93LCBjb2x1bW4ubW9kZWwpIHwgaXNWYWxpZE1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0TW9kZWxWYWx1ZShyb3csIGNvbHVtbi5tb2RlbCkgfX1cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5kZWZhdWx0VGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5kZWZhdWx0VGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmRlZmF1bHRUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLmRlZmF1bHRUZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gaW5kZXggLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5pbmRleCkge1xuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSBjaGVja2JveCAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi50eXBlID09PSBjdXN0b21UeXBlLmNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmtleV1cIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gcmFkaW8gLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5yYWRpbykge1xuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSYWRpb1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3RvcFByb3BhZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9TZWxlY3RDaGFuZ2UoJGV2ZW50LCByb3cpXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSBzd2l0Y2ggLS0+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4udHlwZSA9PT0gY3VzdG9tVHlwZS5zd2l0Y2gpIHtcbiAgICAgICAgICAgICAgICAgIDx0aHktc3dpdGNoXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5rZXldXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKHRoeUNoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQsIHJvdywgY29sdW1uKVwiPjwvdGh5LXN3aXRjaD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC90Ym9keT5cbiAgICB9XG4gIDwvdGFibGU+XG5cbiAgQGlmIChsb2FkaW5nRG9uZSAmJiBtb2RlbC5sZW5ndGggPT09IDAgJiYgZ3JvdXBzLmxlbmd0aCA9PT0gMCkge1xuICAgIDxkaXYgY2xhc3M9XCJ0aHktdGFibGUtZW1wdHkgY2xlYXItaG92ZXJcIj5cbiAgICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHRoeS1lbXB0eVxuICAgICAgICAgIFt0aHlNZXNzYWdlXT1cImVtcHR5T3B0aW9ucy5tZXNzYWdlXCJcbiAgICAgICAgICBbdGh5VHJhbnNsYXRpb25LZXldPVwiZW1wdHlPcHRpb25zLnRyYW5zbGF0aW9uS2V5XCJcbiAgICAgICAgICBbdGh5VHJhbnNsYXRpb25WYWx1ZXNdPVwiZW1wdHlPcHRpb25zLnRyYW5zbGF0aW9uVmFsdWVzXCJcbiAgICAgICAgICBbdGh5RW50aXR5TmFtZV09XCJlbXB0eU9wdGlvbnMuZW50aXR5TmFtZVwiXG4gICAgICAgICAgW3RoeUVudGl0eU5hbWVUcmFuc2xhdGVLZXldPVwiZW1wdHlPcHRpb25zLmVudGl0eU5hbWVUcmFuc2xhdGVLZXlcIlxuICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJlbXB0eU9wdGlvbnMuaWNvbk5hbWVcIlxuICAgICAgICAgIFt0aHlTaXplXT1cImVtcHR5T3B0aW9ucy5zaXplXCJcbiAgICAgICAgICBbdGh5TWFyZ2luVG9wXT1cImVtcHR5T3B0aW9ucy5tYXJnaW5Ub3BcIlxuICAgICAgICAgIFt0aHlUb3BBdXRvXT1cImVtcHR5T3B0aW9ucy50b3BBdXRvXCJcbiAgICAgICAgICBbdGh5Q29udGFpbmVyXT1cImVtcHR5T3B0aW9ucy5jb250YWluZXJcIj48L3RoeS1lbXB0eT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBpZiAoIWxvYWRpbmdEb25lKSB7XG4gICAgPHRoeS10YWJsZS1za2VsZXRvblxuICAgICAgW3RoeVJvd0NvdW50XT1cIjZcIlxuICAgICAgW3RoeUhlYWRsZXNzXT1cInRydWVcIlxuICAgICAgW3RoeVRoZW1lXT1cInRoZW1lXCJcbiAgICAgIFt0aHlTaXplXT1cInNpemVcIlxuICAgICAgW3RoeU1pbldpZHRoXT1cInRoeU1pbldpZHRoXCJcbiAgICAgIFt0aHlDb2x1bW5zXT1cInNrZWxldG9uQ29sdW1uc1wiPlxuICAgIDwvdGh5LXRhYmxlLXNrZWxldG9uPlxuICB9XG5cbiAgQGlmIChwYWdpbmF0aW9uLnRvdGFsID4gcGFnaW5hdGlvbi5zaXplKSB7XG4gICAgPGRpdiBjbGFzcz1cInRoeS10YWJsZS1mb290ZXJcIiBbY2xhc3MudGh5LXRhYmxlLWZvb3Rlci1oYXMtcGFkZGluZ109XCJ0aGVtZSA9PT0gJ2RlZmF1bHQnXCI+XG4gICAgICA8dGh5LXBhZ2luYXRpb25cbiAgICAgICAgW3RoeVBhZ2VJbmRleF09XCJwYWdpbmF0aW9uLmluZGV4XCJcbiAgICAgICAgW3RoeVRvdGFsXT1cInBhZ2luYXRpb24udG90YWxcIlxuICAgICAgICBbdGh5UGFnZVNpemVdPVwicGFnaW5hdGlvbi5zaXplXCJcbiAgICAgICAgW3RoeVBhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uLnNpemVPcHRpb25zXCJcbiAgICAgICAgW3RoeVNob3dTaXplQ2hhbmdlcl09XCJzaG93U2l6ZUNoYW5nZXJcIlxuICAgICAgICBbdGh5U2hvd1RvdGFsXT1cInNob3dUb3RhbFwiXG4gICAgICAgICh0aHlQYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICh0aHlQYWdlSW5kZXhDaGFuZ2UpPVwib25QYWdlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICh0aHlQYWdlU2l6ZUNoYW5nZWQpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC90aHktcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -17,8 +17,8 @@ import { ThyTable } from './table.component';
|
|
|
17
17
|
import { ThyTableSkeleton } from './table-skeleton.component';
|
|
18
18
|
import * as i0 from "@angular/core";
|
|
19
19
|
export class ThyTableModule {
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
21
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
21
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ThyTableModule, imports: [CommonModule,
|
|
22
22
|
FormsModule,
|
|
23
23
|
ThyPaginationModule,
|
|
24
24
|
ThySwitchModule,
|
|
@@ -34,7 +34,7 @@ export class ThyTableModule {
|
|
|
34
34
|
TableIsValidModelValuePipe,
|
|
35
35
|
TableRowDragDisabledPipe,
|
|
36
36
|
ThyTableSkeleton], exports: [ThyTable, ThyTableColumnComponent, ThyTableSkeleton] }); }
|
|
37
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
37
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyTableModule, imports: [CommonModule,
|
|
38
38
|
FormsModule,
|
|
39
39
|
ThyPaginationModule,
|
|
40
40
|
ThySwitchModule,
|
|
@@ -48,7 +48,7 @@ export class ThyTableModule {
|
|
|
48
48
|
ThyTable,
|
|
49
49
|
ThyTableSkeleton] }); }
|
|
50
50
|
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyTableModule, decorators: [{
|
|
52
52
|
type: NgModule,
|
|
53
53
|
args: [{
|
|
54
54
|
imports: [
|
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
72
72
|
exports: [ThyTable, ThyTableColumnComponent, ThyTableSkeleton]
|
|
73
73
|
}]
|
|
74
74
|
}] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXVCOUQsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLFlBbkJuQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixjQUFjO1lBQ2QsZUFBZTtZQUNmLFFBQVE7WUFDUix1QkFBdUI7WUFDdkIsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QixnQkFBZ0IsYUFFVixRQUFRLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCO2dIQUVwRCxjQUFjLFlBbkJuQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixjQUFjO1lBQ2QsZUFBZTtZQUNmLFFBQVE7WUFJUixnQkFBZ0I7OzRGQUlYLGNBQWM7a0JBckIxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsUUFBUTt3QkFDUix1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDakUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlFbXB0eU1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5SWNvbk1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlMb2FkaW5nTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9sb2FkaW5nJztcbmltcG9ydCB7IFRoeVBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgVGh5U2hhcmVkTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5U3dpdGNoTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9zd2l0Y2gnO1xuaW1wb3J0IHsgVGh5U2tlbGV0b25Nb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3NrZWxldG9uJztcblxuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVGFibGVSb3dEcmFnRGlzYWJsZWRQaXBlIH0gZnJvbSAnLi9waXBlcy9kcmFnLnBpcGUnO1xuaW1wb3J0IHsgVGFibGVJc1ZhbGlkTW9kZWxWYWx1ZVBpcGUgfSBmcm9tICcuL3BpcGVzL3RhYmxlLnBpcGUnO1xuaW1wb3J0IHsgVGh5VGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5VGFibGUgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlUYWJsZVNrZWxldG9uIH0gZnJvbSAnLi90YWJsZS1za2VsZXRvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgVGh5UGFnaW5hdGlvbk1vZHVsZSxcbiAgICAgICAgVGh5U3dpdGNoTW9kdWxlLFxuICAgICAgICBUaHlMb2FkaW5nTW9kdWxlLFxuICAgICAgICBUaHlFbXB0eU1vZHVsZSxcbiAgICAgICAgVGh5U2hhcmVkTW9kdWxlLFxuICAgICAgICBUaHlTa2VsZXRvbk1vZHVsZSxcbiAgICAgICAgVGh5SWNvbk1vZHVsZSxcbiAgICAgICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICAgICAgVGh5VGFibGUsXG4gICAgICAgIFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgICBUYWJsZUlzVmFsaWRNb2RlbFZhbHVlUGlwZSxcbiAgICAgICAgVGFibGVSb3dEcmFnRGlzYWJsZWRQaXBlLFxuICAgICAgICBUaHlUYWJsZVNrZWxldG9uXG4gICAgXSxcbiAgICBleHBvcnRzOiBbVGh5VGFibGUsIFRoeVRhYmxlQ29sdW1uQ29tcG9uZW50LCBUaHlUYWJsZVNrZWxldG9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUYWJsZU1vZHVsZSB7fVxuIl19
|