@bizdoc/core 2.1.13 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/admin/admin-dismiss.service.mjs +5 -5
- package/esm2022/lib/admin/admin-menu.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +5 -5
- package/esm2022/lib/admin/architecture/designer-element.component.mjs +23 -23
- package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/designer.base.mjs +16 -16
- package/esm2022/lib/admin/architecture/designer.component.mjs +7 -6
- package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +8 -7
- package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/control.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/cube.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +8 -7
- package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/folder.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/form.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/guide.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/job.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/node.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/policy.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/report.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/role.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/rule.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/type.component.mjs +6 -6
- package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +6 -5
- package/esm2022/lib/admin/architecture/elements/utility.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/view.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/elements/widget.component.mjs +4 -4
- package/esm2022/lib/admin/architecture/icon-picker.component.mjs +6 -6
- package/esm2022/lib/admin/core/ace.input.mjs +6 -6
- package/esm2022/lib/admin/core/color-picker.input.mjs +6 -6
- package/esm2022/lib/admin/core/localized-string.component.mjs +6 -6
- package/esm2022/lib/admin/core/search.input.mjs +26 -10
- package/esm2022/lib/admin/diff/configuration-diff.component.mjs +8 -7
- package/esm2022/lib/admin/document-trace/document-trace.component.mjs +8 -7
- package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +6 -6
- package/esm2022/lib/admin/document-trace/trace-element.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/box-designer.component.mjs +12 -11
- package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/section.component.mjs +5 -5
- package/esm2022/lib/admin/form/designer/settings.component.mjs +6 -6
- package/esm2022/lib/admin/form/form.resolve.service.mjs +5 -5
- package/esm2022/lib/admin/form/workflow/node.component.mjs +5 -5
- package/esm2022/lib/admin/form/workflow/role-node.component.mjs +8 -7
- package/esm2022/lib/admin/form/workflow/workflow.component.mjs +5 -5
- package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +8 -7
- package/esm2022/lib/admin/patterns/patterns.component.mjs +8 -7
- package/esm2022/lib/admin/permissions/permissions.component.mjs +8 -7
- package/esm2022/lib/admin/positions/positions-popup.component.mjs +6 -6
- package/esm2022/lib/admin/positions/positions.component.mjs +8 -7
- package/esm2022/lib/admin/profiler/outofoffice.component.mjs +7 -7
- package/esm2022/lib/admin/profiler/profiler.component.mjs +8 -7
- package/esm2022/lib/admin/system.service.mjs +5 -5
- package/esm2022/lib/admin/utility-wrapper.component.mjs +5 -5
- package/esm2022/lib/admin/utility.pane.component.mjs +5 -5
- package/esm2022/lib/app.component.mjs +8 -8
- package/esm2022/lib/bizdoc.module.mjs +5 -5
- package/esm2022/lib/browse/browse-items.component.mjs +6 -6
- package/esm2022/lib/browse/browse.mobile.component.mjs +5 -5
- package/esm2022/lib/browse/browse.pane.component.mjs +5 -5
- package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +5 -5
- package/esm2022/lib/browse/filter/filter.component.mjs +6 -6
- package/esm2022/lib/browse/folders-menu.component.mjs +5 -5
- package/esm2022/lib/chat/chat-info.mjs +6 -6
- package/esm2022/lib/chat/chat.mobile.component.mjs +4 -4
- package/esm2022/lib/chat/chat.service.mjs +5 -5
- package/esm2022/lib/chat/contacts.component.mjs +8 -8
- package/esm2022/lib/chat/contacts.pane.component.mjs +5 -5
- package/esm2022/lib/chat/conversation.component.mjs +6 -6
- package/esm2022/lib/chat/conversation.pane.component.mjs +5 -5
- package/esm2022/lib/compose/action/action-picker.component.mjs +6 -6
- package/esm2022/lib/compose/action/action.dialog.mjs +6 -6
- package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +5 -5
- package/esm2022/lib/compose/action/assign-action.component.mjs +7 -6
- package/esm2022/lib/compose/action/moveto-action.component.mjs +7 -6
- package/esm2022/lib/compose/action/return-action.component.mjs +7 -6
- package/esm2022/lib/compose/attachments/attachments.component.mjs +5 -5
- package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +6 -6
- package/esm2022/lib/compose/attachments/progress-button.directive.mjs +5 -5
- package/esm2022/lib/compose/box/box.component.mjs +7 -6
- package/esm2022/lib/compose/box/control.component.mjs +6 -6
- package/esm2022/lib/compose/box/row.component.mjs +5 -5
- package/esm2022/lib/compose/can-deactivate-changes.service.mjs +5 -5
- package/esm2022/lib/compose/comments/comment.component.mjs +6 -6
- package/esm2022/lib/compose/comments/comments.component.mjs +6 -6
- package/esm2022/lib/compose/comments/comments.pane.component.mjs +5 -5
- package/esm2022/lib/compose/comments/edit-comment.component.mjs +6 -6
- package/esm2022/lib/compose/comments/edits.component.mjs +6 -6
- package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +6 -6
- package/esm2022/lib/compose/comments/votes.component.mjs +6 -6
- package/esm2022/lib/compose/compose-resolve.service.mjs +9 -9
- package/esm2022/lib/compose/compose.mobile.component.mjs +6 -6
- package/esm2022/lib/compose/compose.pane.component.mjs +6 -6
- package/esm2022/lib/compose/copy/copy.dialog.mjs +5 -5
- package/esm2022/lib/compose/dismiss.service.mjs +5 -5
- package/esm2022/lib/compose/document-resolver.service.mjs +5 -5
- package/esm2022/lib/compose/document.component.mjs +5 -5
- package/esm2022/lib/compose/document.mobile.component.mjs +5 -5
- package/esm2022/lib/compose/document.pane.component.mjs +5 -5
- package/esm2022/lib/compose/events/events.component.mjs +5 -5
- package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +5 -5
- package/esm2022/lib/compose/form.component.mjs +5 -5
- package/esm2022/lib/compose/new-menu.component.mjs +5 -5
- package/esm2022/lib/compose/privilage.directive.mjs +11 -11
- package/esm2022/lib/compose/recipient-resolver.service.mjs +5 -5
- package/esm2022/lib/compose/state.component.mjs +5 -5
- package/esm2022/lib/compose/tag/tags.component.mjs +6 -6
- package/esm2022/lib/compose/trace/flow.component.mjs +5 -5
- package/esm2022/lib/compose/trace/people.component.mjs +5 -5
- package/esm2022/lib/compose/trace/trace.base.mjs +5 -5
- package/esm2022/lib/compose/trace/trace.component.mjs +5 -5
- package/esm2022/lib/compose/trace/trace.pane.component.mjs +5 -5
- package/esm2022/lib/compose/version-compare/version-compare.component.mjs +5 -5
- package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +16 -16
- package/esm2022/lib/compose/version-compare/version.pane.component.mjs +5 -5
- package/esm2022/lib/core/account.service.mjs +5 -5
- package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +5 -5
- package/esm2022/lib/core/avatar/avatar.component.mjs +5 -5
- package/esm2022/lib/core/checkbox.mjs +4 -4
- package/esm2022/lib/core/component-factory-resolver.mjs +5 -5
- package/esm2022/lib/core/datasource.service.mjs +5 -5
- package/esm2022/lib/core/fields/address.designer.mjs +7 -6
- package/esm2022/lib/core/fields/address.field.mjs +6 -5
- package/esm2022/lib/core/fields/autocomplete.field.mjs +14 -12
- package/esm2022/lib/core/fields/checkbox.designer.mjs +7 -6
- package/esm2022/lib/core/fields/checkbox.field.mjs +7 -6
- package/esm2022/lib/core/fields/checklist.designer.mjs +8 -7
- package/esm2022/lib/core/fields/checklist.field.mjs +6 -5
- package/esm2022/lib/core/fields/date-range.designer.mjs +7 -6
- package/esm2022/lib/core/fields/date-range.field.mjs +7 -6
- package/esm2022/lib/core/fields/date.designer.mjs +7 -6
- package/esm2022/lib/core/fields/date.field.mjs +6 -5
- package/esm2022/lib/core/fields/expression.field.mjs +11 -9
- package/esm2022/lib/core/fields/file.designer.mjs +8 -7
- package/esm2022/lib/core/fields/file.field.mjs +6 -5
- package/esm2022/lib/core/fields/html.designer.mjs +7 -6
- package/esm2022/lib/core/fields/html.field.mjs +6 -5
- package/esm2022/lib/core/fields/input.designer.mjs +7 -6
- package/esm2022/lib/core/fields/input.field.mjs +6 -5
- package/esm2022/lib/core/fields/localized-string.field.mjs +11 -9
- package/esm2022/lib/core/fields/numeric.designer.mjs +7 -6
- package/esm2022/lib/core/fields/numeric.field.mjs +6 -5
- package/esm2022/lib/core/fields/options.base.mjs +9 -9
- package/esm2022/lib/core/fields/options.component.mjs +5 -5
- package/esm2022/lib/core/fields/radio-button.designer.mjs +7 -6
- package/esm2022/lib/core/fields/radio-button.field.mjs +7 -6
- package/esm2022/lib/core/fields/select.designer.mjs +8 -7
- package/esm2022/lib/core/fields/select.field.mjs +6 -5
- package/esm2022/lib/core/fields/signature.designer.mjs +7 -6
- package/esm2022/lib/core/fields/signature.field.mjs +7 -6
- package/esm2022/lib/core/fields/switch.field.mjs +10 -18
- package/esm2022/lib/core/fields/textarea.designer.mjs +7 -6
- package/esm2022/lib/core/fields/textarea.field.mjs +6 -5
- package/esm2022/lib/core/fields/time.designer.mjs +7 -6
- package/esm2022/lib/core/fields/time.field.mjs +6 -5
- package/esm2022/lib/core/fields/timespan.field.mjs +11 -9
- package/esm2022/lib/core/fields/yesno.designer.mjs +8 -7
- package/esm2022/lib/core/fields/yesno.field.mjs +8 -7
- package/esm2022/lib/core/guide/guide.component.mjs +6 -6
- package/esm2022/lib/core/guide/guide.service.mjs +6 -6
- package/esm2022/lib/core/guide/help-tip.component.mjs +6 -6
- package/esm2022/lib/core/http.interceptor.mjs +6 -6
- package/esm2022/lib/core/hub.service.mjs +5 -5
- package/esm2022/lib/core/identity/identity.component.mjs +6 -6
- package/esm2022/lib/core/info/attachment-info.service.mjs +5 -5
- package/esm2022/lib/core/info/document-info.service.mjs +5 -5
- package/esm2022/lib/core/info/location-info.component.mjs +6 -6
- package/esm2022/lib/core/info/map-info.mjs +5 -5
- package/esm2022/lib/core/inputs/address.input.mjs +7 -7
- package/esm2022/lib/core/inputs/auto-complete.input.mjs +7 -7
- package/esm2022/lib/core/inputs/combination-picker-body.mjs +6 -6
- package/esm2022/lib/core/inputs/combination-picker.mjs +6 -6
- package/esm2022/lib/core/inputs/combination-pool.mjs +5 -5
- package/esm2022/lib/core/inputs/file.input.mjs +6 -6
- package/esm2022/lib/core/inputs/select.input.mjs +7 -7
- package/esm2022/lib/core/inputs/signature.input.mjs +6 -6
- package/esm2022/lib/core/inputs/time-picker.mjs +6 -6
- package/esm2022/lib/core/inputs/timespan.input.mjs +6 -6
- package/esm2022/lib/core/layout.component.mjs +5 -5
- package/esm2022/lib/core/lottie-animation.mjs +5 -5
- package/esm2022/lib/core/mailbox.service.mjs +5 -5
- package/esm2022/lib/core/none.component.mjs +4 -4
- package/esm2022/lib/core/pipes/action.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/calendar.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/date-format.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/daterange.pipe.mjs +8 -8
- package/esm2022/lib/core/pipes/difference.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/duration-format.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/duration.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/form.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/join.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/localized-string.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/role.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/sort.pipe.mjs +7 -7
- package/esm2022/lib/core/pipes/state.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/time-ago.pipe.mjs +9 -9
- package/esm2022/lib/core/pipes/translate.pipe.mjs +13 -13
- package/esm2022/lib/core/pipes/type-value.pipe.mjs +5 -5
- package/esm2022/lib/core/pipes/user-name.pipe.mjs +5 -5
- package/esm2022/lib/core/popup/popup.component.mjs +6 -6
- package/esm2022/lib/core/popup/popup.service.mjs +5 -5
- package/esm2022/lib/core/popup/tooltip.directive.mjs +10 -10
- package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +6 -6
- package/esm2022/lib/core/prompt/mask/mask.component.mjs +6 -6
- package/esm2022/lib/core/prompt.service.mjs +5 -5
- package/esm2022/lib/core/router.mjs +9 -9
- package/esm2022/lib/core/save-changes.dialog.mjs +4 -4
- package/esm2022/lib/core/session.service.mjs +6 -6
- package/esm2022/lib/core/slots/router.directive.mjs +5 -5
- package/esm2022/lib/core/slots/router.service.mjs +5 -5
- package/esm2022/lib/core/slots/slots.component.mjs +6 -6
- package/esm2022/lib/core/tagging/documents.component.mjs +5 -5
- package/esm2022/lib/core/tagging/edit-input.component.mjs +5 -5
- package/esm2022/lib/core/tagging/emoji.component.mjs +5 -5
- package/esm2022/lib/core/tagging/tagging-item.directive.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging.component-base.mjs +4 -4
- package/esm2022/lib/core/tagging/tagging.directive.mjs +6 -6
- package/esm2022/lib/core/tagging/tagging.pipe.mjs +5 -5
- package/esm2022/lib/core/tagging/users.component.mjs +5 -5
- package/esm2022/lib/core/translate.service.mjs +5 -5
- package/esm2022/lib/core/window-title.service.mjs +6 -6
- package/esm2022/lib/cube/accum/accum.component.mjs +5 -5
- package/esm2022/lib/cube/chart/chart.component.mjs +5 -5
- package/esm2022/lib/cube/cube-info.service.mjs +5 -5
- package/esm2022/lib/cube/cube-menu.component.mjs +5 -5
- package/esm2022/lib/cube/cube-view.component.mjs +5 -5
- package/esm2022/lib/cube/cube.service.mjs +6 -6
- package/esm2022/lib/cube/explore/document-item.component.mjs +8 -7
- package/esm2022/lib/cube/explore/explore-item.component.mjs +5 -5
- package/esm2022/lib/cube/explore/explore-items.component.mjs +5 -5
- package/esm2022/lib/cube/explore/explore.pane.component.mjs +5 -5
- package/esm2022/lib/cube/explore/item-resolver.service.mjs +9 -9
- package/esm2022/lib/cube/explore/item.pane.component.mjs +5 -5
- package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +5 -5
- package/esm2022/lib/cube/filter/filter.component.mjs +5 -5
- package/esm2022/lib/cube/grid/grid.component.mjs +5 -5
- package/esm2022/lib/cube/grid/spreadsheet.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/matrix.base.mjs +5 -5
- package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +5 -5
- package/esm2022/lib/cube/matrix/popup.component.mjs +6 -6
- package/esm2022/lib/cube/matrix/table.component.mjs +5 -5
- package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
- package/esm2022/lib/cube/pivot/pivot.component.mjs +5 -5
- package/esm2022/lib/cube/sum/sum.component.mjs +5 -5
- package/esm2022/lib/cube/view-base.mjs +5 -5
- package/esm2022/lib/cube/view.mobile.component.mjs +5 -5
- package/esm2022/lib/cube/view.pane.component.mjs +5 -5
- package/esm2022/lib/dashboard/actions/actions.widget.mjs +8 -7
- package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +5 -5
- package/esm2022/lib/dashboard/cube/compare.widget.mjs +7 -6
- package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +5 -5
- package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +7 -6
- package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +5 -5
- package/esm2022/lib/dashboard/cube/document-state.widget.mjs +7 -6
- package/esm2022/lib/dashboard/cube/documents.widget.mjs +7 -6
- package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +7 -6
- package/esm2022/lib/dashboard/dashboard.component.mjs +6 -6
- package/esm2022/lib/dashboard/dashboard.pane.component.mjs +5 -5
- package/esm2022/lib/dashboard/recents/recents.widget.mjs +8 -7
- package/esm2022/lib/dashboard/score/activity.widget.mjs +7 -6
- package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +7 -6
- package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +7 -6
- package/esm2022/lib/dashboard/score/pending-results.widget.mjs +7 -6
- package/esm2022/lib/dashboard/score/personal-score.widget.mjs +7 -6
- package/esm2022/lib/dashboard/widget-item.component.mjs +5 -5
- package/esm2022/lib/designer.module.mjs +5 -5
- package/esm2022/lib/desktop.module.mjs +5 -5
- package/esm2022/lib/home/about/about.dialog.mjs +5 -5
- package/esm2022/lib/home/home-base.component.mjs +5 -5
- package/esm2022/lib/home/home.desktop.component.mjs +7 -7
- package/esm2022/lib/home/home.mobile.component.mjs +6 -6
- package/esm2022/lib/home/notifications/notifications.component.mjs +5 -5
- package/esm2022/lib/home/options/options.component.mjs +6 -6
- package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +6 -6
- package/esm2022/lib/home/sign/sign.component.mjs +6 -6
- package/esm2022/lib/home/tools.component.mjs +6 -6
- package/esm2022/lib/impersonate/impersonate.component.mjs +5 -5
- package/esm2022/lib/mobile.module.mjs +5 -5
- package/esm2022/lib/modules/chart.module.mjs +5 -5
- package/esm2022/lib/modules/circular-gauge.module.mjs +5 -5
- package/esm2022/lib/modules/date.adapter.mjs +3 -3
- package/esm2022/lib/modules/datepicker.intl.mjs +5 -5
- package/esm2022/lib/modules/dayjs.module.mjs +5 -5
- package/esm2022/lib/modules/diagram.module.mjs +5 -5
- package/esm2022/lib/modules/gantt.module.mjs +5 -5
- package/esm2022/lib/modules/grid.module.mjs +5 -5
- package/esm2022/lib/modules/linear-gauge.module.mjs +5 -5
- package/esm2022/lib/modules/material.module.mjs +5 -5
- package/esm2022/lib/modules/paginator.intl.mjs +5 -5
- package/esm2022/lib/modules/pivot.module.mjs +5 -5
- package/esm2022/lib/modules/schedule.module.mjs +5 -5
- package/esm2022/lib/modules/spreadsheet.module.mjs +5 -5
- package/esm2022/lib/modules/stepper.intl.mjs +5 -5
- package/esm2022/lib/modules/texteditor.module.mjs +5 -5
- package/esm2022/lib/notifications/filter.component.mjs +5 -5
- package/esm2022/lib/notifications/notifications-table.component.mjs +5 -5
- package/esm2022/lib/notifications/notifications.mobile.component.mjs +5 -5
- package/esm2022/lib/notifications/notifications.pane.component.mjs +5 -5
- package/esm2022/lib/notifications/notifications.service.mjs +5 -5
- package/esm2022/lib/notifications/types/commented.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/escalated.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/invite.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/liked.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/long-running-task.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/notification-base.mjs +5 -5
- package/esm2022/lib/notifications/types/nudge.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/state-changed.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/tagged.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/text.notification.mjs +6 -6
- package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +6 -6
- package/esm2022/lib/options/options.component.mjs +6 -6
- package/esm2022/lib/options/options.service.mjs +5 -5
- package/esm2022/lib/reports/arguments-component.mjs +5 -5
- package/esm2022/lib/reports/cube/documents.component.mjs +7 -6
- package/esm2022/lib/reports/cube/grid-documents.component.mjs +5 -5
- package/esm2022/lib/reports/cube/role-performance.component.mjs +7 -6
- package/esm2022/lib/reports/cube/table-documents.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage-args.component.mjs +7 -6
- package/esm2022/lib/reports/cube/usage-base.mjs +5 -5
- package/esm2022/lib/reports/cube/usage-chart.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage-pivot.component.mjs +5 -5
- package/esm2022/lib/reports/cube/usage.component.mjs +7 -6
- package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
- package/esm2022/lib/reports/report.mobile.component.mjs +5 -5
- package/esm2022/lib/reports/report.pane.component.mjs +5 -5
- package/esm2022/lib/reports/reports-menu.component.mjs +5 -5
- package/esm2022/lib/reports/substitution/substitution.component.mjs +6 -5
- package/esm2022/lib/reports/table/table-view.component.mjs +4 -4
- package/esm2022/lib/reports/tasks/tasks.component.mjs +7 -6
- package/esm2022/lib/scheduler/schedule.component.mjs +5 -5
- package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +5 -5
- package/esm2022/lib/scheduler/scheduler.pane.component.mjs +5 -5
- package/esm2022/lib/search/cube.component.mjs +7 -6
- package/esm2022/lib/search/document.component.mjs +7 -6
- package/esm2022/lib/search/guide.component.mjs +5 -5
- package/esm2022/lib/search/path.component.mjs +7 -6
- package/esm2022/lib/search/search.service.mjs +5 -5
- package/esm2022/lib/shared.module.mjs +5 -5
- package/esm2022/lib/system.module.mjs +5 -5
- package/esm2022/lib/views/cube/chart.component.mjs +7 -6
- package/esm2022/lib/views/cube/cube-base.mjs +5 -5
- package/esm2022/lib/views/cube/explore.component.mjs +7 -6
- package/esm2022/lib/views/cube/matrix.component.mjs +7 -6
- package/esm2022/lib/views/cube/parallel.component.mjs +7 -6
- package/esm2022/lib/views/cube/pivot.component.mjs +7 -6
- package/esm2022/lib/views/cube/sum.component.mjs +7 -6
- package/esm2022/lib/views/cube/view.component.mjs +7 -6
- package/esm2022/lib/views/timeline/timeline.component.exp.mjs +9 -7
- package/esm2022/lib/views/view-item.component.mjs +5 -5
- package/esm2022/lib/views/views.component.mjs +5 -5
- package/esm2022/lib/views/views.mobile.component.mjs +5 -5
- package/esm2022/lib/views/views.pane.component.mjs +5 -5
- package/fesm2022/bizdoc-core.mjs +1673 -1666
- package/fesm2022/bizdoc-core.mjs.map +1 -1
- package/lib/core/fields/switch.field.d.ts +1 -0
- package/lib/core/fields/yesno.field.d.ts +1 -1
- package/lib/modules/date.adapter.d.ts +1 -2
- package/package.json +13 -13
@@ -480,16 +480,16 @@ export class CubePivotComponent {
|
|
480
480
|
this._destroy.next();
|
481
481
|
this._destroy.complete();
|
482
482
|
}
|
483
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
484
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
483
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CubePivotComponent, deps: [{ token: i1.CubeService }, { token: i2.SessionService }, { token: i3.TranslateService }, { token: i4.PromptService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
484
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: CubePivotComponent, selector: "bizdoc-cube-pivot", inputs: { width: "width", height: "height", cube: "cube", xAxis: "xAxis", yAxis: "yAxis", series: "series", indices: "indices", filters: "filters", chartType: "chartType", indicesChartType: "indicesChartType", palettes: "palettes", loading: "loading" }, outputs: { explore: "explore", loadingChange: "loadingChange" }, host: { properties: { "style.direction": "dir", "id": "this.id" }, classAttribute: "cube-view" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":host ::ng-deep .e-cellvalue{cursor:pointer}\n"] }); }
|
485
485
|
}
|
486
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CubePivotComponent, decorators: [{
|
487
487
|
type: Component,
|
488
488
|
args: [{ selector: 'bizdoc-cube-pivot', template: '', host: {
|
489
489
|
class: 'cube-view',
|
490
490
|
'[style.direction]': 'dir'
|
491
491
|
}, styles: [":host ::ng-deep .e-cellvalue{cursor:pointer}\n"] }]
|
492
|
-
}], ctorParameters:
|
492
|
+
}], ctorParameters: () => [{ type: i1.CubeService }, { type: i2.SessionService }, { type: i3.TranslateService }, { type: i4.PromptService }, { type: i0.ElementRef }], propDecorators: { width: [{
|
493
493
|
type: Input
|
494
494
|
}], height: [{
|
495
495
|
type: Input
|
@@ -520,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
520
520
|
}], id: [{
|
521
521
|
type: HostBinding
|
522
522
|
}] } });
|
523
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3Bpdm90L3Bpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQXlCLFdBQVcsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRzdJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBc0IsU0FBUyxFQUEwRyxNQUFNLDJCQUEyQixDQUFDO0FBS2xMLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQTBCLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUt6RixNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQVduQyxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QixJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQ1csS0FBSyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FB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QU8sRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0FwZlUsa0JBQWtCO21HQUFsQixrQkFBa0IsK2VBUm5CLEVBQUU7OzRGQVFELGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkIsRUFBRSxRQUVOO3dCQUNKLEtBQUssRUFBRSxXQUFXO3dCQUNsQixtQkFBbUIsRUFBRSxLQUFLO3FCQUMzQjttTkFLRCxLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQU9LLE1BQU07c0JBRGhCLEtBQUs7Z0JBU0ssT0FBTztzQkFEakIsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBSWEsT0FBTztzQkFBekIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2EsYUFBYTtzQkFBL0IsTUFBTTtnQkFHRSxFQUFFO3NCQURWLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBPdXRwdXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpc3BsYXlPcHRpb25Nb2RlbCwgUGl2b3RWaWV3LCBDaGFydFNlcmllc1R5cGUsIENlbGxDbGlja0V2ZW50QXJncywgSUNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MsIElGaWVsZE9wdGlvbnMsIElGb3JtYXRTZXR0aW5ncywgSVNvcnQgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3JztcclxuaW1wb3J0IHsgQ2hhcnRTZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldy9zcmMvcGl2b3R2aWV3L21vZGVsL2NoYXJ0c2V0dGluZ3MtbW9kZWwnO1xyXG5pbXBvcnQgeyBHcmlkU2V0dGluZ3NNb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvZ3JpZHNldHRpbmdzLW1vZGVsXCI7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VTZXR0aW5nc01vZGVsIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcvc3JjL21vZGVsL2RhdGFzb3VyY2VzZXR0aW5ncy1tb2RlbFwiO1xyXG5pbXBvcnQgeyBDaGFydCwgSVBvaW50RXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb24gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYmFzZSc7XHJcbmltcG9ydCB7IE11bHRpTGV2ZWxMYWJlbENsaWNrRXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcGl2b3R2aWV3JztcclxuaW1wb3J0IHsgV29ya2Jvb2ssIFdvcmtzaGVldCwgUm93LCBDb2x1bW4gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1wb3B1cHMnO1xyXG5pbXBvcnQgeyBnZXRXYXJuLCBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ2hhcnRUeXBlLCBDdWJlLCBZQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBERUZBVUxUX0NVUlJFTkNZLCBDTERSX0ZJTEVTLCBlcnJSZXNvdXJjZSB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IFBJVk9UX0hFQURFUl9ERUxJTUlURVIgPSAnfCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXBpdm90JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVzOiBbJzpob3N0IDo6bmctZGVlcCAuZS1jZWxsdmFsdWUgeyBjdXJzb3I6IHBvaW50ZXIgfSddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3JyxcclxuICAgICdbc3R5bGUuZGlyZWN0aW9uXSc6ICdkaXInXHJcbiAgfVxyXG59KVxyXG4vKiogcGl2b3QgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEN1YmVQaXZvdENvbXBvbmVudCBpbXBsZW1lbnRzIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICB0b29sdGlwOiBUb29sdGlwO1xyXG4gIHB1YmxpYyBnZXQgeEF4aXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3hBeGlzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgeEF4aXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLl94QXhpcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHlBeGlzPzogWUF4aXM7XHJcbiAgcHJpdmF0ZSBfc2VyaWVzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBzZXJpZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlcmllcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5fc2VyaWVzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IGluZGljZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGljZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmRpY2VzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQElucHV0KClcclxuICBjaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgQElucHV0KClcclxuICBpbmRpY2VzQ2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3BhbGV0dGVzID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gIHB1YmxpYyBnZXQgcGFsZXR0ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFsZXR0ZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYWxldHRlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fcGFsZXR0ZXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQEhvc3RCaW5kaW5nKClcclxuICByZWFkb25seSBpZCA9IGBjdWJlLXBpdm90dmlldy0ke0N1YmVQaXZvdENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG4gIHBpdm90OiBQaXZvdFZpZXc7XHJcbiAgZGlzcGxheU9wdGlvbjogRGlzcGxheU9wdGlvbk1vZGVsO1xyXG4gIGNoYXJ0U2V0dGluZ3M6IENoYXJ0U2V0dGluZ3NNb2RlbDtcclxuICBkYXRhU291cmNlOiBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgZm9ybWF0U2V0dGluZ3M6IElGb3JtYXRTZXR0aW5nc1tdID0gW3tcclxuICAgIG5hbWU6ICd2YWx1ZScsXHJcbiAgfV07XHJcbiAgdmFsdWVzOiBJRmllbGRPcHRpb25zW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb25kaXRpb25hbEZvcm1hdFNldHRpbmdzOiBJQ29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nc1tdID0gW3tcclxuICAgIGNvbmRpdGlvbnM6ICdMZXNzVGhhbicsXHJcbiAgICB2YWx1ZTE6IDAsXHJcbiAgICBtZWFzdXJlOiAndmFsdWUnLFxyXG4gICAgYXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgIHN0eWxlOiB7IGNvbG9yOiBnZXRXYXJuKCkgfVxyXG4gIH1dO1xyXG4gIHJlYWRvbmx5IGdyaWRTZXR0aW5nczogR3JpZFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICByb3dIZWlnaHQ6IDM2LFxyXG4gICAgYWxsb3dTZWxlY3Rpb246IGZhbHNlXHJcbiAgfTtcclxuICBkaXI6IERpcmVjdGlvbjtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHByaXZhdGUgX2RhdGE6IHsgdmFsdWU6IG51bWJlciB9W107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5Q2VsbHNUZXh0Q29udGVudCA9IHRoaXMuX2ludGwuZm9ybWF0TnVtYmVyKDAsIHt9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqIHBpdm90IGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnBpdm90LmNoYXJ0KSB7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICAgIHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzLmZvckVhY2goZiA9PiBmLnN0eWxlLmNvbG9yID0gZ2V0V2FybigpKTtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuY3VycmVuY3lDb2RlID0gdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICB0aGlzLmRpciA9IHRoaXMuY2hhcnRUeXBlID8gJ2x0cicgOiB0aGlzLl9zZXNzaW9uLmRpcmVjdGlvbjtcclxuICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5Q29kZTtcclxuICAgIGlmICh0aGlzLl9jdWJlLnlBeGlzKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fY3ViZS55QXhpcy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTnVtYmVyJzpcclxuICAgICAgICBjYXNlICdDb3VudCc6XHJcbiAgICAgICAgICB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmZvcm1hdCA9ICduJyArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5mb3JtYXRTZXR0aW5nc1swXS5mb3JtYXQgPSAodGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicpICsgdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0cztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uZm9ybWF0ID0gKHRoaXMuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nKSArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICBpZiAodGhpcy5jaGFydFR5cGUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9uID0ge1xyXG4gICAgICAgIHZpZXc6ICdDaGFydCcsXHJcbiAgICAgICAgcHJpbWFyeTogJ0NoYXJ0J1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgcG9pbnRDbGljazogdGhpcy5wb2ludENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgY2hhcnRTZXJpZXM6IHsgdHlwZTogdGhpcy5jaGFydFR5cGUgYXMgQ2hhcnRTZXJpZXNUeXBlIH0sXHJcbiAgICAgICAgLy9pc1RyYW5zcG9zZWQ6IHRydWUsICAgICAgICBcclxuICAgICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgICAgY2hhcnRBcmVhOiB7XHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFsZXR0ZXM6IHRoaXMucGFsZXR0ZXMsXHJcbiAgICAgICAgdGhlbWU6IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJyxcclxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgIHByaW1hcnlYQXhpczoge1xyXG4gICAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHpvb21TZXR0aW5nczoge1xyXG4gICAgICAgICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICAgICAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICAgICAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgICAgICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICAgICAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJvcmRlcjogeyB3aWR0aDogMCB9LFxyXG4gICAgICAgIGxlZ2VuZFNldHRpbmdzOiB7XHJcbiAgICAgICAgICBpc0ludmVyc2VkOiB0aGlzLl9zZXNzaW9uLmludmVyc2UsXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgIGVuYWJsZUFuaW1hdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfSxcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN1YlRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZXMgPSBbe1xyXG4gICAgICBuYW1lOiAndmFsdWUnLFxyXG4gICAgICBjYXB0aW9uOiAodGhpcy55QXhpcyA/IHRoaXMueUF4aXMudGl0bGUgOiBudWxsKSB8fCB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpXHJcbiAgICB9XTtcclxuICAgIHRoaXMuX2luZGljZXMgJiZcclxuICAgICAgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy5wdXNoKHtcclxuICAgICAgICAgIGNvbmRpdGlvbnM6ICdMZXNzVGhhbicsXHJcbiAgICAgICAgICB2YWx1ZTE6IDAsXHJcbiAgICAgICAgICBhcHBseUdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgICAgICAgbWVhc3VyZTogaSxcclxuICAgICAgICAgIHN0eWxlOiB7IGNvbG9yOiBnZXRXYXJuKCkgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudmFsdWVzLlxyXG4gICAgICAgICAgcHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IGksXHJcbiAgICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEluZGV4VGl0bGUoaSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3MuXHJcbiAgICAgICAgICBwdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmZvcm1hdCxcclxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEluZGV4VGl0bGUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jdWJlLmluZGljZXMuZmluZChpID0+IGkubmFtZSA9PT0gbmFtZSkudGl0bGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEF4aXNUaXRsZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICByZXR1cm4gYXhpcy50aXRsZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSAmJiAhY2hhbmdlc1snZmlsdGVycyddLmZpcnN0Q2hhbmdlKVxyXG4gICAgICB0aGlzLmV4ZWN1dGUoKTtcclxuICAgIGVsc2VcclxuICAgICAgaWYgKGNoYW5nZXNbJ2hlaWdodCddIHx8IGNoYW5nZXNbJ3dpZHRoJ10pXHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICB9XHJcbiAgZXhlY3V0ZSgpIHtcclxuICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycyk7XHJcbiAgICAvLyByZW1vdmUgZmlsdGVyaW5nIGZyb20gcGl2b3QgYXhlc1xyXG4gICAgbGV0IHhBeGlzMiA9IHRoaXMuX3hBeGlzLnNsaWNlKCksIHNlcmllczIgPSB0aGlzLl9zZXJpZXMuc2xpY2UoKTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoeEF4aXMyLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgeEF4aXMyID0geEF4aXMyLmZpbHRlcih4ID0+IGtleXMuaW5kZXhPZih4KSA8IDApO1xyXG4gICAgICBpZiAoc2VyaWVzMi5sZW5ndGggPiAxKVxyXG4gICAgICAgIHNlcmllczIgPSBzZXJpZXMyLmZpbHRlcih4ID0+IGtleXMuaW5kZXhPZih4KSA8IDApO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzZXJpZXMyLmxlbmd0aCkgc2VyaWVzMiA9IHRoaXMuX3Nlcmllcy5zbGljZSgtMSk7XHJcbiAgICBpZiAoIXhBeGlzMi5sZW5ndGgpIHhBeGlzMiA9IHRoaXMuX3hBeGlzLnNsaWNlKC0xKTtcclxuICAgIC8vIGNvbHVtbnNcclxuICAgIGNvbnN0IGNvbHVtbnMgPSB4QXhpczIuY29uY2F0KHNlcmllczIpO1xyXG4gICAgLy8gcXVlcnlcclxuICAgIHRoaXMuX3NlcnZpY2UudGFibGUodGhpcy5fY3ViZS5uYW1lLCBjb2x1bW5zLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5pbmRpY2VzIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHIgPT4ge1xyXG4gICAgICAgIHRoaXMuX3ByZXNldHMoeEF4aXMyLCBzZXJpZXMyLCByKTtcclxuICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9LCBlcnJvcjogKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZXJyUmVzb3VyY2UoZSkpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0geEF4aXNcclxuICAgKiBAcGFyYW0gc2VyaWVzXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIF9wcmVzZXRzKHhBeGlzOiBzdHJpbmdbXSwgc2VyaWVzOiBzdHJpbmdbXSwgZGF0YTogeyB2YWx1ZTogbnVtYmVyIH1bXSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHhBeGlzLm1hcCh4ID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogeCxcclxuICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEF4aXNUaXRsZSh4KVxyXG4gICAgICAgIH0gYXMgSUZpZWxkT3B0aW9ucztcclxuICAgICAgfSksXHJcbiAgICAgIHJvd3M6IHNlcmllcy5tYXAocyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHMsXHJcbiAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRBeGlzVGl0bGUocylcclxuICAgICAgICB9IGFzIElGaWVsZE9wdGlvbnM7XHJcbiAgICAgIH0pLFxyXG4gICAgICB2YWx1ZVNvcnRTZXR0aW5nczogeyBoZWFkZXJEZWxpbWl0ZXI6IFBJVk9UX0hFQURFUl9ERUxJTUlURVIsIH0sXHJcbiAgICAgIHZhbHVlczogdGhpcy52YWx1ZXMsXHJcbiAgICAgIHNvcnRTZXR0aW5nczogeEF4aXMubWFwKHggPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiAnXycgKyB4LFxyXG4gICAgICAgIH0gYXMgSVNvcnQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICAvL2NvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3M6IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuICAgICAgYWx3YXlzU2hvd1ZhbHVlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dNZW1iZXJGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBhbGxvd1ZhbHVlRmlsdGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dMYWJlbEZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGRhdGFTb3VyY2U6IGRhdGEsXHJcbiAgICAgIGVtcHR5Q2VsbHNUZXh0Q29udGVudDogdGhpcy5lbXB0eUNlbGxzVGV4dENvbnRlbnQsXHJcbiAgICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxyXG4gICAgICBmb3JtYXRTZXR0aW5nczogdGhpcy5mb3JtYXRTZXR0aW5nc1xyXG4gICAgfSBhcyBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuICB9XHJcbiAgbXVsdGlMZXZlbExhYmVsQ2xpY2soZXZ0OiBNdWx0aUxldmVsTGFiZWxDbGlja0V2ZW50QXJncykge1xyXG4gICAgY29uc3QgeyBjb2x1bW5IZWFkZXJzLCByb3dIZWFkZXJzLCBhY3R1YWxWYWx1ZSwgYXhpcywgdmFsdWVTb3J0LCBhY3R1YWxUZXh0LCBpc0dyYW5kU3VtIH0gPSBldnQuY2VsbDtcclxuICAgIGlmIChhY3R1YWxWYWx1ZSA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGF4ZXMsIGluZGV4O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgfHwgcm93SGVhZGVycylcclxuICAgICAgYXhlcyA9IHRoaXMuX3BhcnNlQXhlcyhjb2x1bW5IZWFkZXJzIGFzIHN0cmluZywgcm93SGVhZGVycyBhcyBzdHJpbmcpO1xyXG4gICAgZWxzZSBpZiAoYXhpcyA9PT0gJ3JvdycpXHJcbiAgICAgIGF4ZXMgPSB0aGlzLl9wYXJzZUF4ZXMoJycsICh2YWx1ZVNvcnQgYXMgYW55KS5sZXZlbE5hbWUpO1xyXG4gICAgZWxzZSBpZiAoYXhpcyA9PT0gJ2NvbHVtbicpXHJcbiAgICAgIGF4ZXMgPSB0aGlzLl9wYXJzZUF4ZXMoKHZhbHVlU29ydCBhcyBhbnkpLmxldmVsTmFtZSwgJycpO1xyXG4gICAgZWxzZSBpZiAoaXNHcmFuZFN1bSkgcmV0dXJuO1xyXG4gICAgaWYgKGFjdHVhbFRleHQgIT09ICd2YWx1ZScpIGluZGV4ID0gYWN0dWFsVGV4dDtcclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZXZ0XHJcbiAgICovXHJcbiAgY2VsbENsaWNrKGV2dDogQ2VsbENsaWNrRXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbkhlYWRlcnMsIHJvd0hlYWRlcnMsIGFjdHVhbFRleHQsIGFjdHVhbFZhbHVlLCBheGlzLCB2YWx1ZVNvcnQsIGlzR3JhbmRTdW0gfSA9IGV2dC5kYXRhIGFzIGFueTtcclxuICAgIGlmIChhY3R1YWxWYWx1ZSA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGF4ZXMsIGluZGV4O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgfHwgcm93SGVhZGVycylcclxuICAgICAgYXhlcyA9IHRoaXMuX3BhcnNlQXhlcyhjb2x1bW5IZWFkZXJzLCByb3dIZWFkZXJzKTtcclxuICAgIGVsc2UgaWYgKGF4aXMgPT09ICdyb3cnKVxyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKCcnLCB2YWx1ZVNvcnQubGV2ZWxOYW1lKTtcclxuICAgIGVsc2UgaWYgKGF4aXMgPT09ICdjb2x1bW4nKVxyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKHZhbHVlU29ydC5sZXZlbE5hbWUsICcnKTtcclxuICAgIGVsc2UgaWYgKGlzR3JhbmRTdW0pIHJldHVybjtcclxuICAgIGlmIChhY3R1YWxUZXh0ICE9PSAndmFsdWUnKSBpbmRleCA9IGFjdHVhbFRleHQ7XHJcbiAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMsIGluZGV4IH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBheGVzIGZyb20gaGVhZGVyc1xyXG4gICAqIEBwYXJhbSBjb2x1bW5IZWFkZXJzXHJcbiAgICogQHBhcmFtIHJvd0hlYWRlcnNcclxuICAgKi9cclxuICBwcml2YXRlIF9wYXJzZUF4ZXMoY29sdW1uSGVhZGVyczogc3RyaW5nLCByb3dIZWFkZXJzOiBzdHJpbmcpOiBBeGVzTWFwIHtcclxuICAgIGNvbnN0IGF4ZXM6IEF4ZXNNYXAgPSB7fTtcclxuICAgIGlmIChjb2x1bW5IZWFkZXJzICE9PSAnJylcclxuICAgICAgY29sdW1uSGVhZGVycy5zcGxpdChQSVZPVF9IRUFERVJfREVMSU1JVEVSKS5mb3JFYWNoKChjLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5kYXRhU291cmNlLmNvbHVtbnNbaV0ubmFtZSxcclxuICAgICAgICAgIC8vIGZpbmQgYW55IHJvdyB3aXRoIGhlYWRlclxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXS50b1N0cmluZygpID09PSBjKTtcclxuICAgICAgICAvLyB0cmFuc2xhdGUgYmFjayB0byBrZXlcclxuICAgICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50W2BfJHtjb2x1bW59YF07XHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHJvd0hlYWRlcnMgIT09ICcnKVxyXG4gICAgICByb3dIZWFkZXJzLnNwbGl0KFBJVk9UX0hFQURFUl9ERUxJTUlURVIpLmZvckVhY2goKHIsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0gcik7XHJcbiAgICAgICAgYXhlc1tjb2x1bW5dID0gZWxlbWVudFtgXyR7Y29sdW1ufWBdO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBheGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBjaGFydFxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgcG9pbnRDbGljayhlOiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgcG9pbnQ6IHsgeCB9LCBzZXJpZXM6IHsgbmFtZSB9IH0gPSBlO1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgIC8vIHNldCBheGVzIGZyb20geCBsYWJlbChzKVxyXG4gICAgKHggYXMgc3RyaW5nKS5zcGxpdCgnIC0gJykuZm9yRWFjaCgoeCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IHgpO1xyXG4gICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50ID8gZWxlbWVudFtgXyR7Y29sdW1ufWBdIDogeDtcclxuICAgIH0pO1xyXG4gICAgLy8gc2V0IGF4ZXMgZnJvbSBzZXJpZXMgbGFiZWxcclxuICAgIGlmIChuYW1lICE9PSAnJykge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2UuY29sdW1uc1swXS5uYW1lLFxyXG4gICAgICAgIC8vIGZpbmQgYW55IHJvdyB3aXRoIGhlYWRlclxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IG5hbWUpO1xyXG4gICAgICAvLyB0cmFuc2xhdGUgYmFjayB0byBrZXlcclxuICAgICAgYXhlc1tjb2x1bW5dID0gZWxlbWVudCA/IGVsZW1lbnRbYF8ke2NvbHVtbn1gXSA6IG5hbWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIGV4cG9ydFRvRXhjZWwodGl0bGU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY3VycmVuY3lDb2RlICYmIHRoaXMuY3VycmVuY3lDb2RlICE9PSBERUZBVUxUX0NVUlJFTkNZKVxyXG4gICAgICBhd2FpdCB0aGlzLl90cmFuc2xhdGUuY2xkcih0aGlzLl9zZXNzaW9uLmxhbmd1YWdlLCBDTERSX0ZJTEVTKTtcclxuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSlcclxuICAgICAgdGhpcy5fZXhwb3J0RXhjZWwodGl0bGUpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnBpdm90LmV4Y2VsRXhwb3J0KHsgZmlsZU5hbWU6IGAke3RpdGxlfS54bHN4YCwgaGllcmFyY2h5RXhwb3J0TW9kZTogJ0FsbCcsIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9leHBvcnRFeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXQgPSB0aGlzLl9zZXJ2aWNlLm51bWJlckZvcm1hdCwgY29sdW1ucyA9IHRoaXMuX2N1YmUuYXhlcy5maWx0ZXIoYSA9PiB0aGlzLl94QXhpcy5pbmRleE9mKGEubmFtZSkgPiAtMSB8fFxyXG4gICAgICB0aGlzLl9zZXJpZXMuaW5kZXhPZihhLm5hbWUpID4gLTEpLCByb3dzID0gW3tcclxuICAgICAgICBpbmRleDogMSxcclxuICAgICAgICBjZWxsczogY29sdW1ucy5tYXAoKGMsIGkpID0+ICh7XHJcbiAgICAgICAgICBpbmRleDogaSArIDEsIHZhbHVlOiBjLnRpdGxlLFxyXG4gICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgYm9sZDogdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gYXMgQ2VsbCkpXHJcbiAgICAgIH1dIGFzIFJvd1tdO1xyXG4gICAgcm93c1swXS5jZWxscy5wdXNoKHtcclxuICAgICAgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgMSxcclxuICAgICAgdmFsdWU6IHRoaXMueUF4aXMgPyB0aGlzLnlBeGlzLnRpdGxlIDpcclxuICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpLFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2luZGljZXMuZm9yRWFjaCgoeCwgaSkgPT4gcm93c1swXS5jZWxscy5wdXNoKHtcclxuICAgICAgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgaSArIDIsXHJcbiAgICAgIHZhbHVlOiB0aGlzLl9nZXRJbmRleFRpdGxlKHgpLFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKChyLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gY29sdW1ucy5tYXAoKGMsIGopID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW5kZXg6IGogKyAxLCB2YWx1ZTogcltjLm5hbWVdLFxyXG4gICAgICAgICAgc3R5bGU6IHt9XHJcbiAgICAgICAgfSBhcyBDZWxsO1xyXG4gICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIDEsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgIGhBbGlnbjogJ3JpZ2h0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmFsdWU6IHJbJ3ZhbHVlJ11cclxuICAgICAgfSBhcyBDZWxsKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goKHgsIGkpID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIGkgKyAyLFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBudW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlOiByW3hdXHJcbiAgICAgIH0gYXMgQ2VsbClcclxuICAgICAgKTtcclxuICAgICAgcm93cy5wdXNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGluZGV4OiBpICsgMixcclxuICAgICAgICAgIGNlbGxzXHJcbiAgICAgICAgfSBhcyBSb3cpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBib29rID0gbmV3IFdvcmtib29rKFxyXG4gICAgICB7XHJcbiAgICAgICAgd29ya3NoZWV0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbmFibGVSdGw6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSxcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU2hlZXROJywgMSksXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5jb2x1bW5zLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMjUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgIHsgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgMSB9LFxyXG4gICAgICAgICAgICAuLi4odGhpcy5faW5kaWNlcyA/IHRoaXMuX2luZGljZXMubWFwKChfLCBpKSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIGkgKyAyXHJcbiAgICAgICAgICAgIH0pKSA6IFtdKVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICByb3dzXHJcbiAgICAgICAgICB9IGFzIFdvcmtzaGVldFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgICd4bHN4J1xyXG4gICAgKTtcclxuICAgIGJvb2suc2F2ZShgJHt0aXRsZX0ueGxzeGApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMucGl2b3QgJiYgdGhpcy5waXZvdC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnBpdm90ID0gbmV3IFBpdm90Vmlldyh7XHJcbiAgICAgIHNwaW5uZXJUZW1wbGF0ZTogJycsXHJcbiAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgZGlzcGxheU9wdGlvbjogdGhpcy5kaXNwbGF5T3B0aW9uLFxyXG4gICAgICBkYXRhU291cmNlU2V0dGluZ3M6IHRoaXMuZGF0YVNvdXJjZSxcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgICBlbmFibGVWYWx1ZVNvcnRpbmc6IGZhbHNlLFxyXG4gICAgICBzaG93VG9vbHRpcDogZmFsc2UsXHJcbiAgICAgIGFsbG93Q29uZGl0aW9uYWxGb3JtYXR0aW5nOiB0cnVlLFxyXG4gICAgICBhbGxvd0V4Y2VsRXhwb3J0OiB0cnVlLFxyXG4gICAgICBncmlkU2V0dGluZ3M6IHRoaXMuZ3JpZFNldHRpbmdzLFxyXG4gICAgICBjZWxsQ2xpY2s6IHRoaXMuY2VsbENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIGN1cnJlbmN5Q29kZTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIG11bHRpTGV2ZWxMYWJlbENsaWNrOiB0aGlzLm11bHRpTGV2ZWxMYWJlbENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIGRhdGFCb3VuZDogdGhpcy5kYXRhQm91bmQuYmluZCh0aGlzKVxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgZGF0YUJvdW5kKF86IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoe1xyXG4gICAgICB0YXJnZXQ6ICcuZS1pY29ucycsXHJcbiAgICAgIGNzc0NsYXNzOiAnZS1jdXN0b20tdG9vbHRpcCcsXHJcbiAgICAgIHBvc2l0aW9uOiAnQm90dG9tQ2VudGVyJyxcclxuICAgICAgb2Zmc2V0WTogMTUsXHJcbiAgICAgIGVuYWJsZVJ0bDogdGhpcy5waXZvdC5lbmFibGVSdGwsXHJcbiAgICAgIGxvY2FsZTogdGhpcy5waXZvdC5sb2NhbGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbHRpcC5hcHBlbmRUbyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICByZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5waXZvdCkge1xyXG4gICAgICAvL3RoaXMucGl2b3QuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgIHRoaXMucGl2b3Qud2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICBpZiAodGhpcy5jaGFydFNldHRpbmdzKVxyXG4gICAgICAgIHRoaXMucGl2b3QuY2hhcnQgJiYgKHRoaXMucGl2b3QuY2hhcnQgYXMgQ2hhcnQpLmNoYXJ0UmVzaXplKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBpdm90Lm9uV2luZG93UmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnBpdm90ICYmIHRoaXMucGl2b3QuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBDZWxsIHsgfVxyXG4iXX0=
|
523
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3Bpdm90L3Bpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQXlCLFdBQVcsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRzdJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBc0IsU0FBUyxFQUEwRyxNQUFNLDJCQUEyQixDQUFDO0FBS2xMLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQTBCLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUt6RixNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQVduQyxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QixJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQ1csS0FBSyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FB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QU8sRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0FwZlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsK2VBUm5CLEVBQUU7OzJGQVFELGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkIsRUFBRSxRQUVOO3dCQUNKLEtBQUssRUFBRSxXQUFXO3dCQUNsQixtQkFBbUIsRUFBRSxLQUFLO3FCQUMzQjtpTUFLRCxLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQU9LLE1BQU07c0JBRGhCLEtBQUs7Z0JBU0ssT0FBTztzQkFEakIsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBSWEsT0FBTztzQkFBekIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2EsYUFBYTtzQkFBL0IsTUFBTTtnQkFHRSxFQUFFO3NCQURWLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBPdXRwdXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpc3BsYXlPcHRpb25Nb2RlbCwgUGl2b3RWaWV3LCBDaGFydFNlcmllc1R5cGUsIENlbGxDbGlja0V2ZW50QXJncywgSUNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MsIElGaWVsZE9wdGlvbnMsIElGb3JtYXRTZXR0aW5ncywgSVNvcnQgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3JztcclxuaW1wb3J0IHsgQ2hhcnRTZXR0aW5nc01vZGVsIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLXBpdm90dmlldy9zcmMvcGl2b3R2aWV3L21vZGVsL2NoYXJ0c2V0dGluZ3MtbW9kZWwnO1xyXG5pbXBvcnQgeyBHcmlkU2V0dGluZ3NNb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItcGl2b3R2aWV3L3NyYy9waXZvdHZpZXcvbW9kZWwvZ3JpZHNldHRpbmdzLW1vZGVsXCI7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VTZXR0aW5nc01vZGVsIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1waXZvdHZpZXcvc3JjL21vZGVsL2RhdGFzb3VyY2VzZXR0aW5ncy1tb2RlbFwiO1xyXG5pbXBvcnQgeyBDaGFydCwgSVBvaW50RXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb24gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYmFzZSc7XHJcbmltcG9ydCB7IE11bHRpTGV2ZWxMYWJlbENsaWNrRXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcGl2b3R2aWV3JztcclxuaW1wb3J0IHsgV29ya2Jvb2ssIFdvcmtzaGVldCwgUm93LCBDb2x1bW4gfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1wb3B1cHMnO1xyXG5pbXBvcnQgeyBnZXRXYXJuLCBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGT05UX0ZBTUlMWSB9IGZyb20gJy4uLy4uL2NvcmUvY29sb3JzJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ2hhcnRUeXBlLCBDdWJlLCBZQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBERUZBVUxUX0NVUlJFTkNZLCBDTERSX0ZJTEVTLCBlcnJSZXNvdXJjZSB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IFBJVk9UX0hFQURFUl9ERUxJTUlURVIgPSAnfCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXBpdm90JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVzOiBbJzpob3N0IDo6bmctZGVlcCAuZS1jZWxsdmFsdWUgeyBjdXJzb3I6IHBvaW50ZXIgfSddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnY3ViZS12aWV3JyxcclxuICAgICdbc3R5bGUuZGlyZWN0aW9uXSc6ICdkaXInXHJcbiAgfVxyXG59KVxyXG4vKiogcGl2b3QgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEN1YmVQaXZvdENvbXBvbmVudCBpbXBsZW1lbnRzIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICB0b29sdGlwOiBUb29sdGlwO1xyXG4gIHB1YmxpYyBnZXQgeEF4aXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3hBeGlzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgeEF4aXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLl94QXhpcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHlBeGlzPzogWUF4aXM7XHJcbiAgcHJpdmF0ZSBfc2VyaWVzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBzZXJpZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlcmllcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5fc2VyaWVzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IGluZGljZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGljZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmRpY2VzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQElucHV0KClcclxuICBjaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgQElucHV0KClcclxuICBpbmRpY2VzQ2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3BhbGV0dGVzID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gIHB1YmxpYyBnZXQgcGFsZXR0ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFsZXR0ZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYWxldHRlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fcGFsZXR0ZXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQEhvc3RCaW5kaW5nKClcclxuICByZWFkb25seSBpZCA9IGBjdWJlLXBpdm90dmlldy0ke0N1YmVQaXZvdENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG4gIHBpdm90OiBQaXZvdFZpZXc7XHJcbiAgZGlzcGxheU9wdGlvbjogRGlzcGxheU9wdGlvbk1vZGVsO1xyXG4gIGNoYXJ0U2V0dGluZ3M6IENoYXJ0U2V0dGluZ3NNb2RlbDtcclxuICBkYXRhU291cmNlOiBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgZm9ybWF0U2V0dGluZ3M6IElGb3JtYXRTZXR0aW5nc1tdID0gW3tcclxuICAgIG5hbWU6ICd2YWx1ZScsXHJcbiAgfV07XHJcbiAgdmFsdWVzOiBJRmllbGRPcHRpb25zW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb25kaXRpb25hbEZvcm1hdFNldHRpbmdzOiBJQ29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nc1tdID0gW3tcclxuICAgIGNvbmRpdGlvbnM6ICdMZXNzVGhhbicsXHJcbiAgICB2YWx1ZTE6IDAsXHJcbiAgICBtZWFzdXJlOiAndmFsdWUnLFxyXG4gICAgYXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgIHN0eWxlOiB7IGNvbG9yOiBnZXRXYXJuKCkgfVxyXG4gIH1dO1xyXG4gIHJlYWRvbmx5IGdyaWRTZXR0aW5nczogR3JpZFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICByb3dIZWlnaHQ6IDM2LFxyXG4gICAgYWxsb3dTZWxlY3Rpb246IGZhbHNlXHJcbiAgfTtcclxuICBkaXI6IERpcmVjdGlvbjtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHByaXZhdGUgX2RhdGE6IHsgdmFsdWU6IG51bWJlciB9W107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5Q2VsbHNUZXh0Q29udGVudCA9IHRoaXMuX2ludGwuZm9ybWF0TnVtYmVyKDAsIHt9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqIHBpdm90IGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLl9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnBpdm90LmNoYXJ0KSB7XHJcbiAgICAgICAgdGhpcy5jaGFydFNldHRpbmdzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICAgIHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbEZvcm1hdFNldHRpbmdzLmZvckVhY2goZiA9PiBmLnN0eWxlLmNvbG9yID0gZ2V0V2FybigpKTtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuY3VycmVuY3lDb2RlID0gdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICB0aGlzLmRpciA9IHRoaXMuY2hhcnRUeXBlID8gJ2x0cicgOiB0aGlzLl9zZXNzaW9uLmRpcmVjdGlvbjtcclxuICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5Q29kZTtcclxuICAgIGlmICh0aGlzLl9jdWJlLnlBeGlzKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fY3ViZS55QXhpcy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTnVtYmVyJzpcclxuICAgICAgICBjYXNlICdDb3VudCc6XHJcbiAgICAgICAgICB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmZvcm1hdCA9ICduJyArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5mb3JtYXRTZXR0aW5nc1swXS5mb3JtYXQgPSAodGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicpICsgdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0cztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3NbMF0uZm9ybWF0ID0gKHRoaXMuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nKSArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICBpZiAodGhpcy5jaGFydFR5cGUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5T3B0aW9uID0ge1xyXG4gICAgICAgIHZpZXc6ICdDaGFydCcsXHJcbiAgICAgICAgcHJpbWFyeTogJ0NoYXJ0J1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgcG9pbnRDbGljazogdGhpcy5wb2ludENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgY2hhcnRTZXJpZXM6IHsgdHlwZTogdGhpcy5jaGFydFR5cGUgYXMgQ2hhcnRTZXJpZXNUeXBlIH0sXHJcbiAgICAgICAgLy9pc1RyYW5zcG9zZWQ6IHRydWUsICAgICAgICBcclxuICAgICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgICAgY2hhcnRBcmVhOiB7XHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFsZXR0ZXM6IHRoaXMucGFsZXR0ZXMsXHJcbiAgICAgICAgdGhlbWU6IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJyxcclxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgIHByaW1hcnlYQXhpczoge1xyXG4gICAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHpvb21TZXR0aW5nczoge1xyXG4gICAgICAgICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IHRydWUsXHJcbiAgICAgICAgICBlbmFibGVQaW5jaFpvb21pbmc6IHRydWUsXHJcbiAgICAgICAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgICAgICAgZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsXHJcbiAgICAgICAgICBlbmFibGVTY3JvbGxiYXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJvcmRlcjogeyB3aWR0aDogMCB9LFxyXG4gICAgICAgIGxlZ2VuZFNldHRpbmdzOiB7XHJcbiAgICAgICAgICBpc0ludmVyc2VkOiB0aGlzLl9zZXNzaW9uLmludmVyc2UsXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgIGVuYWJsZUFuaW1hdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICBib3JkZXI6IHsgd2lkdGg6IDAgfSxcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGl0bGVTdHlsZToge1xyXG4gICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN1YlRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgICAgIHRpdGxlU3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZXMgPSBbe1xyXG4gICAgICBuYW1lOiAndmFsdWUnLFxyXG4gICAgICBjYXB0aW9uOiAodGhpcy55QXhpcyA/IHRoaXMueUF4aXMudGl0bGUgOiBudWxsKSB8fCB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpXHJcbiAgICB9XTtcclxuICAgIHRoaXMuX2luZGljZXMgJiZcclxuICAgICAgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy5wdXNoKHtcclxuICAgICAgICAgIGNvbmRpdGlvbnM6ICdMZXNzVGhhbicsXHJcbiAgICAgICAgICB2YWx1ZTE6IDAsXHJcbiAgICAgICAgICBhcHBseUdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgICAgICAgbWVhc3VyZTogaSxcclxuICAgICAgICAgIHN0eWxlOiB7IGNvbG9yOiBnZXRXYXJuKCkgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudmFsdWVzLlxyXG4gICAgICAgICAgcHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IGksXHJcbiAgICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEluZGV4VGl0bGUoaSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0U2V0dGluZ3MuXHJcbiAgICAgICAgICBwdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLmZvcm1hdFNldHRpbmdzWzBdLmZvcm1hdCxcclxuICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEluZGV4VGl0bGUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jdWJlLmluZGljZXMuZmluZChpID0+IGkubmFtZSA9PT0gbmFtZSkudGl0bGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2dldEF4aXNUaXRsZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICByZXR1cm4gYXhpcy50aXRsZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSAmJiAhY2hhbmdlc1snZmlsdGVycyddLmZpcnN0Q2hhbmdlKVxyXG4gICAgICB0aGlzLmV4ZWN1dGUoKTtcclxuICAgIGVsc2VcclxuICAgICAgaWYgKGNoYW5nZXNbJ2hlaWdodCddIHx8IGNoYW5nZXNbJ3dpZHRoJ10pXHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICB9XHJcbiAgZXhlY3V0ZSgpIHtcclxuICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycyk7XHJcbiAgICAvLyByZW1vdmUgZmlsdGVyaW5nIGZyb20gcGl2b3QgYXhlc1xyXG4gICAgbGV0IHhBeGlzMiA9IHRoaXMuX3hBeGlzLnNsaWNlKCksIHNlcmllczIgPSB0aGlzLl9zZXJpZXMuc2xpY2UoKTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoeEF4aXMyLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgeEF4aXMyID0geEF4aXMyLmZpbHRlcih4ID0+IGtleXMuaW5kZXhPZih4KSA8IDApO1xyXG4gICAgICBpZiAoc2VyaWVzMi5sZW5ndGggPiAxKVxyXG4gICAgICAgIHNlcmllczIgPSBzZXJpZXMyLmZpbHRlcih4ID0+IGtleXMuaW5kZXhPZih4KSA8IDApO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzZXJpZXMyLmxlbmd0aCkgc2VyaWVzMiA9IHRoaXMuX3Nlcmllcy5zbGljZSgtMSk7XHJcbiAgICBpZiAoIXhBeGlzMi5sZW5ndGgpIHhBeGlzMiA9IHRoaXMuX3hBeGlzLnNsaWNlKC0xKTtcclxuICAgIC8vIGNvbHVtbnNcclxuICAgIGNvbnN0IGNvbHVtbnMgPSB4QXhpczIuY29uY2F0KHNlcmllczIpO1xyXG4gICAgLy8gcXVlcnlcclxuICAgIHRoaXMuX3NlcnZpY2UudGFibGUodGhpcy5fY3ViZS5uYW1lLCBjb2x1bW5zLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5pbmRpY2VzIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHIgPT4ge1xyXG4gICAgICAgIHRoaXMuX3ByZXNldHMoeEF4aXMyLCBzZXJpZXMyLCByKTtcclxuICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9LCBlcnJvcjogKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZXJyUmVzb3VyY2UoZSkpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0geEF4aXNcclxuICAgKiBAcGFyYW0gc2VyaWVzXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKi9cclxuICBwcml2YXRlIF9wcmVzZXRzKHhBeGlzOiBzdHJpbmdbXSwgc2VyaWVzOiBzdHJpbmdbXSwgZGF0YTogeyB2YWx1ZTogbnVtYmVyIH1bXSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHhBeGlzLm1hcCh4ID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogeCxcclxuICAgICAgICAgIGNhcHRpb246IHRoaXMuX2dldEF4aXNUaXRsZSh4KVxyXG4gICAgICAgIH0gYXMgSUZpZWxkT3B0aW9ucztcclxuICAgICAgfSksXHJcbiAgICAgIHJvd3M6IHNlcmllcy5tYXAocyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHMsXHJcbiAgICAgICAgICBjYXB0aW9uOiB0aGlzLl9nZXRBeGlzVGl0bGUocylcclxuICAgICAgICB9IGFzIElGaWVsZE9wdGlvbnM7XHJcbiAgICAgIH0pLFxyXG4gICAgICB2YWx1ZVNvcnRTZXR0aW5nczogeyBoZWFkZXJEZWxpbWl0ZXI6IFBJVk9UX0hFQURFUl9ERUxJTUlURVIsIH0sXHJcbiAgICAgIHZhbHVlczogdGhpcy52YWx1ZXMsXHJcbiAgICAgIHNvcnRTZXR0aW5nczogeEF4aXMubWFwKHggPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiAnXycgKyB4LFxyXG4gICAgICAgIH0gYXMgSVNvcnQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICAvL2NvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3M6IHRoaXMuY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuICAgICAgYWx3YXlzU2hvd1ZhbHVlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dNZW1iZXJGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICBhbGxvd1ZhbHVlRmlsdGVyOiBmYWxzZSxcclxuICAgICAgYWxsb3dMYWJlbEZpbHRlcjogZmFsc2UsXHJcbiAgICAgIGRhdGFTb3VyY2U6IGRhdGEsXHJcbiAgICAgIGVtcHR5Q2VsbHNUZXh0Q29udGVudDogdGhpcy5lbXB0eUNlbGxzVGV4dENvbnRlbnQsXHJcbiAgICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxyXG4gICAgICBmb3JtYXRTZXR0aW5nczogdGhpcy5mb3JtYXRTZXR0aW5nc1xyXG4gICAgfSBhcyBEYXRhU291cmNlU2V0dGluZ3NNb2RlbDtcclxuICB9XHJcbiAgbXVsdGlMZXZlbExhYmVsQ2xpY2soZXZ0OiBNdWx0aUxldmVsTGFiZWxDbGlja0V2ZW50QXJncykge1xyXG4gICAgY29uc3QgeyBjb2x1bW5IZWFkZXJzLCByb3dIZWFkZXJzLCBhY3R1YWxWYWx1ZSwgYXhpcywgdmFsdWVTb3J0LCBhY3R1YWxUZXh0LCBpc0dyYW5kU3VtIH0gPSBldnQuY2VsbDtcclxuICAgIGlmIChhY3R1YWxWYWx1ZSA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGF4ZXMsIGluZGV4O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgfHwgcm93SGVhZGVycylcclxuICAgICAgYXhlcyA9IHRoaXMuX3BhcnNlQXhlcyhjb2x1bW5IZWFkZXJzIGFzIHN0cmluZywgcm93SGVhZGVycyBhcyBzdHJpbmcpO1xyXG4gICAgZWxzZSBpZiAoYXhpcyA9PT0gJ3JvdycpXHJcbiAgICAgIGF4ZXMgPSB0aGlzLl9wYXJzZUF4ZXMoJycsICh2YWx1ZVNvcnQgYXMgYW55KS5sZXZlbE5hbWUpO1xyXG4gICAgZWxzZSBpZiAoYXhpcyA9PT0gJ2NvbHVtbicpXHJcbiAgICAgIGF4ZXMgPSB0aGlzLl9wYXJzZUF4ZXMoKHZhbHVlU29ydCBhcyBhbnkpLmxldmVsTmFtZSwgJycpO1xyXG4gICAgZWxzZSBpZiAoaXNHcmFuZFN1bSkgcmV0dXJuO1xyXG4gICAgaWYgKGFjdHVhbFRleHQgIT09ICd2YWx1ZScpIGluZGV4ID0gYWN0dWFsVGV4dDtcclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZXZ0XHJcbiAgICovXHJcbiAgY2VsbENsaWNrKGV2dDogQ2VsbENsaWNrRXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbkhlYWRlcnMsIHJvd0hlYWRlcnMsIGFjdHVhbFRleHQsIGFjdHVhbFZhbHVlLCBheGlzLCB2YWx1ZVNvcnQsIGlzR3JhbmRTdW0gfSA9IGV2dC5kYXRhIGFzIGFueTtcclxuICAgIGlmIChhY3R1YWxWYWx1ZSA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGF4ZXMsIGluZGV4O1xyXG4gICAgaWYgKGNvbHVtbkhlYWRlcnMgfHwgcm93SGVhZGVycylcclxuICAgICAgYXhlcyA9IHRoaXMuX3BhcnNlQXhlcyhjb2x1bW5IZWFkZXJzLCByb3dIZWFkZXJzKTtcclxuICAgIGVsc2UgaWYgKGF4aXMgPT09ICdyb3cnKVxyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKCcnLCB2YWx1ZVNvcnQubGV2ZWxOYW1lKTtcclxuICAgIGVsc2UgaWYgKGF4aXMgPT09ICdjb2x1bW4nKVxyXG4gICAgICBheGVzID0gdGhpcy5fcGFyc2VBeGVzKHZhbHVlU29ydC5sZXZlbE5hbWUsICcnKTtcclxuICAgIGVsc2UgaWYgKGlzR3JhbmRTdW0pIHJldHVybjtcclxuICAgIGlmIChhY3R1YWxUZXh0ICE9PSAndmFsdWUnKSBpbmRleCA9IGFjdHVhbFRleHQ7XHJcbiAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMsIGluZGV4IH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBheGVzIGZyb20gaGVhZGVyc1xyXG4gICAqIEBwYXJhbSBjb2x1bW5IZWFkZXJzXHJcbiAgICogQHBhcmFtIHJvd0hlYWRlcnNcclxuICAgKi9cclxuICBwcml2YXRlIF9wYXJzZUF4ZXMoY29sdW1uSGVhZGVyczogc3RyaW5nLCByb3dIZWFkZXJzOiBzdHJpbmcpOiBBeGVzTWFwIHtcclxuICAgIGNvbnN0IGF4ZXM6IEF4ZXNNYXAgPSB7fTtcclxuICAgIGlmIChjb2x1bW5IZWFkZXJzICE9PSAnJylcclxuICAgICAgY29sdW1uSGVhZGVycy5zcGxpdChQSVZPVF9IRUFERVJfREVMSU1JVEVSKS5mb3JFYWNoKChjLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5kYXRhU291cmNlLmNvbHVtbnNbaV0ubmFtZSxcclxuICAgICAgICAgIC8vIGZpbmQgYW55IHJvdyB3aXRoIGhlYWRlclxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXS50b1N0cmluZygpID09PSBjKTtcclxuICAgICAgICAvLyB0cmFuc2xhdGUgYmFjayB0byBrZXlcclxuICAgICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50W2BfJHtjb2x1bW59YF07XHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHJvd0hlYWRlcnMgIT09ICcnKVxyXG4gICAgICByb3dIZWFkZXJzLnNwbGl0KFBJVk9UX0hFQURFUl9ERUxJTUlURVIpLmZvckVhY2goKHIsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgICAgZWxlbWVudCA9IHRoaXMuX2RhdGEuZmluZChlID0+IGVbY29sdW1uXSA9PT0gcik7XHJcbiAgICAgICAgYXhlc1tjb2x1bW5dID0gZWxlbWVudFtgXyR7Y29sdW1ufWBdO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBheGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBjaGFydFxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgcG9pbnRDbGljayhlOiBJUG9pbnRFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgcG9pbnQ6IHsgeCB9LCBzZXJpZXM6IHsgbmFtZSB9IH0gPSBlO1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgIC8vIHNldCBheGVzIGZyb20geCBsYWJlbChzKVxyXG4gICAgKHggYXMgc3RyaW5nKS5zcGxpdCgnIC0gJykuZm9yRWFjaCgoeCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2Uucm93c1tpXS5uYW1lLFxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IHgpO1xyXG4gICAgICBheGVzW2NvbHVtbl0gPSBlbGVtZW50ID8gZWxlbWVudFtgXyR7Y29sdW1ufWBdIDogeDtcclxuICAgIH0pO1xyXG4gICAgLy8gc2V0IGF4ZXMgZnJvbSBzZXJpZXMgbGFiZWxcclxuICAgIGlmIChuYW1lICE9PSAnJykge1xyXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmRhdGFTb3VyY2UuY29sdW1uc1swXS5uYW1lLFxyXG4gICAgICAgIC8vIGZpbmQgYW55IHJvdyB3aXRoIGhlYWRlclxyXG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLl9kYXRhLmZpbmQoZSA9PiBlW2NvbHVtbl0gPT09IG5hbWUpO1xyXG4gICAgICAvLyB0cmFuc2xhdGUgYmFjayB0byBrZXlcclxuICAgICAgYXhlc1tjb2x1bW5dID0gZWxlbWVudCA/IGVsZW1lbnRbYF8ke2NvbHVtbn1gXSA6IG5hbWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIGV4cG9ydFRvRXhjZWwodGl0bGU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY3VycmVuY3lDb2RlICYmIHRoaXMuY3VycmVuY3lDb2RlICE9PSBERUZBVUxUX0NVUlJFTkNZKVxyXG4gICAgICBhd2FpdCB0aGlzLl90cmFuc2xhdGUuY2xkcih0aGlzLl9zZXNzaW9uLmxhbmd1YWdlLCBDTERSX0ZJTEVTKTtcclxuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSlcclxuICAgICAgdGhpcy5fZXhwb3J0RXhjZWwodGl0bGUpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnBpdm90LmV4Y2VsRXhwb3J0KHsgZmlsZU5hbWU6IGAke3RpdGxlfS54bHN4YCwgaGllcmFyY2h5RXhwb3J0TW9kZTogJ0FsbCcsIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9leHBvcnRFeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXQgPSB0aGlzLl9zZXJ2aWNlLm51bWJlckZvcm1hdCwgY29sdW1ucyA9IHRoaXMuX2N1YmUuYXhlcy5maWx0ZXIoYSA9PiB0aGlzLl94QXhpcy5pbmRleE9mKGEubmFtZSkgPiAtMSB8fFxyXG4gICAgICB0aGlzLl9zZXJpZXMuaW5kZXhPZihhLm5hbWUpID4gLTEpLCByb3dzID0gW3tcclxuICAgICAgICBpbmRleDogMSxcclxuICAgICAgICBjZWxsczogY29sdW1ucy5tYXAoKGMsIGkpID0+ICh7XHJcbiAgICAgICAgICBpbmRleDogaSArIDEsIHZhbHVlOiBjLnRpdGxlLFxyXG4gICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgYm9sZDogdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gYXMgQ2VsbCkpXHJcbiAgICAgIH1dIGFzIFJvd1tdO1xyXG4gICAgcm93c1swXS5jZWxscy5wdXNoKHtcclxuICAgICAgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgMSxcclxuICAgICAgdmFsdWU6IHRoaXMueUF4aXMgPyB0aGlzLnlBeGlzLnRpdGxlIDpcclxuICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpLFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2luZGljZXMuZm9yRWFjaCgoeCwgaSkgPT4gcm93c1swXS5jZWxscy5wdXNoKHtcclxuICAgICAgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgaSArIDIsXHJcbiAgICAgIHZhbHVlOiB0aGlzLl9nZXRJbmRleFRpdGxlKHgpLFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKChyLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNlbGxzID0gY29sdW1ucy5tYXAoKGMsIGopID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW5kZXg6IGogKyAxLCB2YWx1ZTogcltjLm5hbWVdLFxyXG4gICAgICAgICAgc3R5bGU6IHt9XHJcbiAgICAgICAgfSBhcyBDZWxsO1xyXG4gICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIDEsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgIGhBbGlnbjogJ3JpZ2h0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmFsdWU6IHJbJ3ZhbHVlJ11cclxuICAgICAgfSBhcyBDZWxsKTtcclxuICAgICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLl9pbmRpY2VzLmZvckVhY2goKHgsIGkpID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIGkgKyAyLFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBudW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlOiByW3hdXHJcbiAgICAgIH0gYXMgQ2VsbClcclxuICAgICAgKTtcclxuICAgICAgcm93cy5wdXNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGluZGV4OiBpICsgMixcclxuICAgICAgICAgIGNlbGxzXHJcbiAgICAgICAgfSBhcyBSb3cpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBib29rID0gbmV3IFdvcmtib29rKFxyXG4gICAgICB7XHJcbiAgICAgICAgd29ya3NoZWV0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbmFibGVSdGw6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSxcclxuICAgICAgICAgICAgbmFtZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU2hlZXROJywgMSksXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5jb2x1bW5zLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMjUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgIHsgaW5kZXg6IGNvbHVtbnMubGVuZ3RoICsgMSB9LFxyXG4gICAgICAgICAgICAuLi4odGhpcy5faW5kaWNlcyA/IHRoaXMuX2luZGljZXMubWFwKChfLCBpKSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4OiBjb2x1bW5zLmxlbmd0aCArIGkgKyAyXHJcbiAgICAgICAgICAgIH0pKSA6IFtdKVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICByb3dzXHJcbiAgICAgICAgICB9IGFzIFdvcmtzaGVldFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgICd4bHN4J1xyXG4gICAgKTtcclxuICAgIGJvb2suc2F2ZShgJHt0aXRsZX0ueGxzeGApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMucGl2b3QgJiYgdGhpcy5waXZvdC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnBpdm90ID0gbmV3IFBpdm90Vmlldyh7XHJcbiAgICAgIHNwaW5uZXJUZW1wbGF0ZTogJycsXHJcbiAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgZGlzcGxheU9wdGlvbjogdGhpcy5kaXNwbGF5T3B0aW9uLFxyXG4gICAgICBkYXRhU291cmNlU2V0dGluZ3M6IHRoaXMuZGF0YVNvdXJjZSxcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgICBlbmFibGVWYWx1ZVNvcnRpbmc6IGZhbHNlLFxyXG4gICAgICBzaG93VG9vbHRpcDogZmFsc2UsXHJcbiAgICAgIGFsbG93Q29uZGl0aW9uYWxGb3JtYXR0aW5nOiB0cnVlLFxyXG4gICAgICBhbGxvd0V4Y2VsRXhwb3J0OiB0cnVlLFxyXG4gICAgICBncmlkU2V0dGluZ3M6IHRoaXMuZ3JpZFNldHRpbmdzLFxyXG4gICAgICBjZWxsQ2xpY2s6IHRoaXMuY2VsbENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIGN1cnJlbmN5Q29kZTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIG11bHRpTGV2ZWxMYWJlbENsaWNrOiB0aGlzLm11bHRpTGV2ZWxMYWJlbENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIGRhdGFCb3VuZDogdGhpcy5kYXRhQm91bmQuYmluZCh0aGlzKVxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgZGF0YUJvdW5kKF86IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoe1xyXG4gICAgICB0YXJnZXQ6ICcuZS1pY29ucycsXHJcbiAgICAgIGNzc0NsYXNzOiAnZS1jdXN0b20tdG9vbHRpcCcsXHJcbiAgICAgIHBvc2l0aW9uOiAnQm90dG9tQ2VudGVyJyxcclxuICAgICAgb2Zmc2V0WTogMTUsXHJcbiAgICAgIGVuYWJsZVJ0bDogdGhpcy5waXZvdC5lbmFibGVSdGwsXHJcbiAgICAgIGxvY2FsZTogdGhpcy5waXZvdC5sb2NhbGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMudG9vbHRpcC5hcHBlbmRUbyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICByZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5waXZvdCkge1xyXG4gICAgICAvL3RoaXMucGl2b3QuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgIHRoaXMucGl2b3Qud2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICBpZiAodGhpcy5jaGFydFNldHRpbmdzKVxyXG4gICAgICAgIHRoaXMucGl2b3QuY2hhcnQgJiYgKHRoaXMucGl2b3QuY2hhcnQgYXMgQ2hhcnQpLmNoYXJ0UmVzaXplKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBpdm90Lm9uV2luZG93UmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnBpdm90ICYmIHRoaXMucGl2b3QuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmludGVyZmFjZSBDZWxsIHsgfVxyXG4iXX0=
|
@@ -365,21 +365,21 @@ export class CubeSumComponent {
|
|
365
365
|
axes[this.parentAxis] = level.scope;
|
366
366
|
this.onExplore.emit({ axes, index });
|
367
367
|
}
|
368
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
369
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
368
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CubeSumComponent, deps: [{ token: i1.DatasourceService }, { token: i2.CubeService }, { token: i3.PromptService }, { token: i4.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
369
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: CubeSumComponent, selector: "bizdoc-cube-sum", inputs: { xAxis: "xAxis", periodPolicy: "periodPolicy", parentAxis: "parentAxis", filters: "filters", cube: "cube", indices: "indices", scope: "scope" }, outputs: { onExplore: "explore" }, usesOnChanges: true, ngImport: i0, template: " <!-- levels -->\r\n<div class=\"row\">\r\n <div *ngIf=\"prev\" class=\"level prev-level\">\r\n <div class=\"level-header row\">\r\n <mat-icon class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"goprev()\" *ngIf=\"back\">keyboard_arrow_left</mat-icon>\r\n <div div class=\"mat-h1 title\">\r\n {{'PrevLevel'| translate}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon *ngIf=\"forward\" class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"gonext()\">keyboard_arrow_right</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: prev}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"current\" class=\"level current-level\">\r\n <div class=\"level-header row\">\r\n <div div class=\"mat-h1 title\">\r\n {{'CurrentLevel'| translate : primaryAxis.title}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon [bizdocTooltip]=\"help\" *ngIf=\"help\" [inline]=\"true\">help_outline</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: current}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"next\" class=\"level next-level\">\r\n <div class=\"level-header\">\r\n <div div class=\"mat-h1 title\">\r\n {{'NextLevel'| translate}}\r\n </div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: next}\"></ng-container>\r\n </div>\r\n</div>\r\n<!-- level -->\r\n<ng-template #level let-use=\"use\" let-help=\"help\">\r\n <div>\r\n <h2 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.title}}</h2>\r\n <div class=\"row\">\r\n <h3 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.value | currency : currencyCode : 'symbol' : digitsInfo}}</h3>\r\n <span class=\"divider\"></span>\r\n <div *ngIf=\"use.chain && use.value !== use.chain.value\">\r\n <span *ngIf=\"use.value !== 0 && use.chain.value !== 0\">{{Math.round(use.value / use.chain.value * 100) }}%</span>\r\n <mat-icon>{{use.value > use.chain.value ? 'trending_up':'trending_down' }}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- -->\r\n <div class=\"row\">\r\n <div *ngFor=\"let i of use.indices\" class=\"index\">\r\n <h4 class=\"mat-h3 title\">{{i.title}}</h4>\r\n <h5 class=\"mat-h3\" [class.cliclable]=\"i.value !== 0\" (click)=\"explore(use, i.name)\">{{i.value | currency : currencyCode : 'symbol' : digitsInfo}}</h5>\r\n </div>\r\n </div>\r\n <div class=\"bar\" *ngIf=\"use.indices.length\" [class.available]=\"use.percent < 100\">\r\n <div class=\"value\" [style.flexBasis]=\"Math.round(use.percent < 100 ?\r\n 100 - use.percent :\r\n 100 / use.percent * 100) + '%'\"\r\n [@bar]=\"use.animation\"></div>\r\n <div class=\"overflow\" *ngIf=\"use.percent > 0\"></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{padding:0 8px}.level{border-width:thin;border-radius:3px;padding:8px;margin:3px;flex:1 1 0;border-style:solid}.level .cliclable{cursor:pointer}.level.next-level{border-style:dashed}.level .level-header{align-items:center}.level .level-header .title{margin:0;line-height:22px;font-size:inherit;font-variant-caps:all-petite-caps}.level h3{margin:0;font-size:x-large}.level h2{font-weight:400;font-size:larger;margin:0}.level .percent{display:flex;align-items:center}.level .index{padding:0 4px}.level .index h5,.level .index h4{margin:0}.level .bar{display:flex}.level .bar .value,.level .bar .overflow{height:12px}.level .bar .value{flex:0 0 0%}.level .bar .overflow{flex:1 1 0%;box-sizing:border-box}.level .bar.available .overflow{border-width:1px;border-style:dashed}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i5.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], animations: [trigger('bar', [
|
370
370
|
transition('*<=>*', [style({
|
371
371
|
flexBasis: '{{startWidth}}%'
|
372
372
|
}), animate('500ms ease')], { params: { startWidth: 100 } }),
|
373
373
|
])] }); }
|
374
374
|
}
|
375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: CubeSumComponent, decorators: [{
|
376
376
|
type: Component,
|
377
377
|
args: [{ selector: 'bizdoc-cube-sum', animations: [trigger('bar', [
|
378
378
|
transition('*<=>*', [style({
|
379
379
|
flexBasis: '{{startWidth}}%'
|
380
380
|
}), animate('500ms ease')], { params: { startWidth: 100 } }),
|
381
381
|
])], template: " <!-- levels -->\r\n<div class=\"row\">\r\n <div *ngIf=\"prev\" class=\"level prev-level\">\r\n <div class=\"level-header row\">\r\n <mat-icon class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"goprev()\" *ngIf=\"back\">keyboard_arrow_left</mat-icon>\r\n <div div class=\"mat-h1 title\">\r\n {{'PrevLevel'| translate}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon *ngIf=\"forward\" class=\"cliclable mat-icon-rtl-mirror\" [inline]=true (click)=\"gonext()\">keyboard_arrow_right</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: prev}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"current\" class=\"level current-level\">\r\n <div class=\"level-header row\">\r\n <div div class=\"mat-h1 title\">\r\n {{'CurrentLevel'| translate : primaryAxis.title}}\r\n </div>\r\n <span class=\"divider\"></span>\r\n <mat-icon [bizdocTooltip]=\"help\" *ngIf=\"help\" [inline]=\"true\">help_outline</mat-icon>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: current}\"></ng-container>\r\n </div>\r\n <div *ngIf=\"next\" class=\"level next-level\">\r\n <div class=\"level-header\">\r\n <div div class=\"mat-h1 title\">\r\n {{'NextLevel'| translate}}\r\n </div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"level; context: {use: next}\"></ng-container>\r\n </div>\r\n</div>\r\n<!-- level -->\r\n<ng-template #level let-use=\"use\" let-help=\"help\">\r\n <div>\r\n <h2 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.title}}</h2>\r\n <div class=\"row\">\r\n <h3 class=\"mat-h1\" [class.cliclable]=\"use.value !== 0\" (click)=\"explore(use)\">{{use.value | currency : currencyCode : 'symbol' : digitsInfo}}</h3>\r\n <span class=\"divider\"></span>\r\n <div *ngIf=\"use.chain && use.value !== use.chain.value\">\r\n <span *ngIf=\"use.value !== 0 && use.chain.value !== 0\">{{Math.round(use.value / use.chain.value * 100) }}%</span>\r\n <mat-icon>{{use.value > use.chain.value ? 'trending_up':'trending_down' }}</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- -->\r\n <div class=\"row\">\r\n <div *ngFor=\"let i of use.indices\" class=\"index\">\r\n <h4 class=\"mat-h3 title\">{{i.title}}</h4>\r\n <h5 class=\"mat-h3\" [class.cliclable]=\"i.value !== 0\" (click)=\"explore(use, i.name)\">{{i.value | currency : currencyCode : 'symbol' : digitsInfo}}</h5>\r\n </div>\r\n </div>\r\n <div class=\"bar\" *ngIf=\"use.indices.length\" [class.available]=\"use.percent < 100\">\r\n <div class=\"value\" [style.flexBasis]=\"Math.round(use.percent < 100 ?\r\n 100 - use.percent :\r\n 100 / use.percent * 100) + '%'\"\r\n [@bar]=\"use.animation\"></div>\r\n <div class=\"overflow\" *ngIf=\"use.percent > 0\"></div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{padding:0 8px}.level{border-width:thin;border-radius:3px;padding:8px;margin:3px;flex:1 1 0;border-style:solid}.level .cliclable{cursor:pointer}.level.next-level{border-style:dashed}.level .level-header{align-items:center}.level .level-header .title{margin:0;line-height:22px;font-size:inherit;font-variant-caps:all-petite-caps}.level h3{margin:0;font-size:x-large}.level h2{font-weight:400;font-size:larger;margin:0}.level .percent{display:flex;align-items:center}.level .index{padding:0 4px}.level .index h5,.level .index h4{margin:0}.level .bar{display:flex}.level .bar .value,.level .bar .overflow{height:12px}.level .bar .value{flex:0 0 0%}.level .bar .overflow{flex:1 1 0%;box-sizing:border-box}.level .bar.available .overflow{border-width:1px;border-style:dashed}\n"] }]
|
382
|
-
}], ctorParameters:
|
382
|
+
}], ctorParameters: () => [{ type: i1.DatasourceService }, { type: i2.CubeService }, { type: i3.PromptService }, { type: i4.SessionService }], propDecorators: { xAxis: [{
|
383
383
|
type: Input
|
384
384
|
}], periodPolicy: [{
|
385
385
|
type: Input
|
@@ -397,4 +397,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
397
397
|
type: Output,
|
398
398
|
args: ['explore']
|
399
399
|
}] } });
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9zdW0vc3VtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9zdW0vc3VtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBZSxXQUFXLEVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUkzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFhL0MsTUFBTSxPQUFPLGdCQUFnQjtJQWlDM0IsWUFDVSxHQUFzQixFQUN0QixRQUFxQixFQUNyQixHQUFrQixFQUNsQixRQUF3QjtRQUh4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFyQnpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN0RCxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osWUFBTyxHQUFHLEtBQUssQ0FBQztRQVNQLFNBQUksR0FBRyxJQUFJLENBQUM7SUFXckIsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFnQjtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxPQUFPLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxN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O2dCQUdHLFNBQVM7c0JBRGpCLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIGVyclJlc291cmNlLCBTZXJpZXMgfSBmcm9tIFwiLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEF4aXNWYWx1ZSwgQ3ViZSwgQ3ViZUF4aXMgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXN1bScsXHJcbiAgdGVtcGxhdGVVcmw6ICdzdW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydzdW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbdHJpZ2dlcignYmFyJywgW1xyXG4gICAgdHJhbnNpdGlvbignKjw9PionLCBbc3R5bGUoe1xyXG4gICAgICBmbGV4QmFzaXM6ICd7e3N0YXJ0V2lkdGh9fSUnXHJcbiAgICB9KSwgYW5pbWF0ZSgnNTAwbXMgZWFzZScpXSwgeyBwYXJhbXM6IHsgc3RhcnRXaWR0aDogMTAwIH0gfSksXHJcbiAgXSldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlU3VtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKVxyXG4gIHhBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGVyaW9kUG9saWN5PzogJ1N0cmljdCcgfCAnRmlzaCc7XHJcbiAgQElucHV0KClcclxuICBwYXJlbnRBeGlzOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzITogQXhlc01hcDtcclxuICBASW5wdXQoKVxyXG4gIGN1YmU6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGluZGljZXM6IHN0cmluZ1tdIHwgc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBAT3V0cHV0KCdleHBsb3JlJylcclxuICByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV4cGxvcmVFdmVudD4oKTtcclxuICBiYWNrID0gdHJ1ZTtcclxuICBmb3J3YXJkID0gZmFsc2U7XHJcbiAgcHJpbWFyeUF4aXM6IEN1YmVBeGlzO1xyXG4gIG5leHQ6IExldmVsO1xyXG4gIGN1cnJlbnQ6IExldmVsO1xyXG4gIHByZXY6IExldmVsO1xyXG4gIGhlbHA6IHN0cmluZztcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBkaWdpdHNJbmZvOiBzdHJpbmc7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICByZWFkb25seSBNYXRoID0gTWF0aDtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHByaXZhdGUgX3BhcmVudEF4aXM6IEN1YmVBeGlzO1xyXG4gIHByaXZhdGUgX3Jlc3VsdHM6IFNlcmllc1tdO1xyXG4gIHByaXZhdGUgX3Njb3BlcmVzdWx0czogU2VyaWVzW107XHJcbiAgcHJpdmF0ZSBfc2NvcGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSkgfHwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5jdXJyZW5jeUNvZGUgPSB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZTtcclxuICAgIHRoaXMuZGlnaXRzSW5mbyA9IHRoaXMuX3NlcnZpY2UuZGlnaXRzSW5mbztcclxuICAgIHRoaXMucHJpbWFyeUF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy54QXhpcyk7XHJcbiAgICBpZiAoIXRoaXMucHJpbWFyeUF4aXMpIHRocm93ICd4QXhpcyc7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRBeGlzKSB0aGlzLl9wYXJlbnRBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMucGFyZW50QXhpcyk7XHJcbiAgICBpZiAoIXRoaXMuaW5kaWNlcykgdGhpcy5pbmRpY2VzID0gdGhpcy5fY3ViZS5pbmRpY2VzLm1hcChpID0+IGkubmFtZSk7XHJcbiAgICBlbHNlIGlmICghaXNBcnJheSh0aGlzLmluZGljZXMpKSB0aGlzLmluZGljZXMgPSBbdGhpcy5pbmRpY2VzXTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmZpbHRlcnNbdGhpcy54QXhpc107XHJcbiAgICBjb25zdCBheGlzID0gaXNBcnJheShvcmlnaW5hbFZhbHVlKSA/IG9yaWdpbmFsVmFsdWVbMF0gOiBvcmlnaW5hbFZhbHVlO1xyXG4gICAgaWYgKHRoaXMucGVyaW9kUG9saWN5ID09PSAnU3RyaWN0JylcclxuICAgICAgdGhpcy5fc3RyaWN0KGF4aXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9maXNoKGF4aXMpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9zdHJpY3QoYXhpczogQXhpc1ZhbHVlKSB7XHJcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZHMua2V5cyh0aGlzLnByaW1hcnlBeGlzLmRhdGFUeXBlKSksIGtleUluZGV4ID0ga2V5cy5pbmRleE9mKGF4aXMgYXMgc3RyaW5nKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMgfTtcclxuICAgIGNvbnN0IGF4ZXMgPSBbYXhpc107XHJcbiAgICBpZiAoa2V5SW5kZXggPiAwKVxyXG4gICAgICBheGVzLnB1c2goa2V5c1trZXlJbmRleCAtIDFdKTtcclxuICAgIGlmIChrZXlJbmRleCA9PT0ga2V5cy5sZW5ndGggLSAxKVxyXG4gICAgICBheGVzLnB1c2goa2V5c1trZXlJbmRleCArIDFdKTtcclxuICAgIGZpbHRlcnNbdGhpcy5wcmltYXJ5QXhpcy5uYW1lXSA9IGF4aXM7XHJcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnByaW1hcnlBeGlzLm5hbWUsIHtcclxuICAgICAgaW5kaWNlczogdGhpcy5pbmRpY2VzLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZSxcclxuICAgICAgZmlsdGVyc1xyXG4gICAgfSkpLmNhdGNoKHRoaXMuX2hhbmRsZUVyci5iaW5kKHRoaXMpKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCB7IGluZGV4LCB0aXRsZSwgcG9pbnRzIH0gPSByZXN1bHRzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGxldCBwb2ludCA9IHBvaW50c1tqXSxcclxuICAgICAgICAgIHsgeCwgeSwgbmFtZTogYXhpcyB9ID0gcG9pbnQ7XHJcbiAgICAgICAgaWYgKHggPT09IGF4aXMpIHtcclxuICAgICAgICAgIGlmIChpbmRleClcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHkgfSk7XHJcblxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB7IGF4aXM6IHgsIG5hbWU6IGF4aXMsIHZhbHVlOiB5LCBpbmRpY2VzOiBbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh4ID09PSBrZXlzW2tleUluZGV4IC0gMV0pIHtcclxuICAgICAgICAgIGlmICghdGhpcy5wcmV2KVxyXG4gICAgICAgICAgICB0aGlzLnByZXYgPSB7IGF4aXM6IHgsIG5hbWU6IGF4aXMsIHZhbHVlOiAwLCBpbmRpY2VzOiBbXSB9O1xyXG4gICAgICAgICAgaWYgKGluZGV4KVxyXG4gICAgICAgICAgICB0aGlzLnByZXYuaW5kaWNlcy5wdXNoKHsgbmFtZTogaW5kZXgsIHRpdGxlLCB2YWx1ZTogeSB9KTtcclxuXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMucHJldi52YWx1ZSA9IHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHggPT09IGtleXNba2V5SW5kZXggKyAxXSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLm5leHQpXHJcbiAgICAgICAgICAgIHRoaXMubmV4dCA9IHsgYXhpczogeCwgbmFtZTogYXhpcywgdmFsdWU6IDAsIGluZGljZXM6IFtdIH07XHJcbiAgICAgICAgICBpZiAoaW5kZXgpXHJcbiAgICAgICAgICAgIHRoaXMubmV4dC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiB5IH0pO1xyXG5cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5uZXh0LnZhbHVlID0geTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHBhcmFsbGVsID0gYXN5bmMgKGRpcmVjdGlvbjogMSB8IC0xKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmVudEtleSA9IHRoaXMuZmlsdGVyc1t0aGlzLnBhcmVudEF4aXNdO1xyXG4gICAgICBjb25zdCBwYXJlbnRLZXlzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZHMua2V5cyh0aGlzLl9wYXJlbnRBeGlzLmRhdGFUeXBlKSk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50S2V5cy5pbmRleE9mKChpc0FycmF5KHBhcmVudEtleSkgPyBwYXJlbnRLZXlbMF0gOiBwYXJlbnRLZXkpIGFzIHN0cmluZyksIHNjb3BlID0gcGFyZW50S2V5c1tpbmRleCArIGRpcmVjdGlvbl07XHJcbiAgICAgIGlmICghc2NvcGUpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBmaWx0ZXJzW3RoaXMucGFyZW50QXhpc10gPSBzY29wZTtcclxuICAgICAgY29uc3QgYXhpcyA9IGtleXNba2V5cy5sZW5ndGggKyBkaXJlY3Rpb25dO1xyXG4gICAgICBmaWx0ZXJzW3RoaXMucHJpbWFyeUF4aXMubmFtZV0gPSBheGlzO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnByaW1hcnlBeGlzLm5hbWUsIHtcclxuICAgICAgICBpbmRpY2VzOiB0aGlzLmluZGljZXMsXHJcbiAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUsXHJcbiAgICAgICAgZmlsdGVyc1xyXG4gICAgICB9KSkuY2F0Y2godGhpcy5faGFuZGxlRXJyLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgY29uc3QgbGV2ZWw6IExldmVsID0geyBheGlzLCBpbmRpY2VzOiBbXSwgc2NvcGUgfSBhcyBhbnk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIHRpdGxlLCBwb2ludHMgfSA9IHJlc3VsdHNbaV07XHJcbiAgICAgICAgaWYgKCFwb2ludHMubGVuZ3RoKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgY29uc3QgW3BvaW50XSA9IHBvaW50cztcclxuICAgICAgICBpZiAoaW5kZXggPT09ICdJbmRleCcpXHJcbiAgICAgICAgICBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55IH0pO1xyXG5cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBsZXZlbC50aXRsZSA9IHBvaW50Lm5hbWUsIGxldmVsLnZhbHVlID0gcG9pbnQueTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbGV2ZWw7XHJcbiAgICB9O1xyXG4gICAgaWYgKGtleUluZGV4ID09PSAwICYmIHRoaXMucGFyZW50QXhpcylcclxuICAgICAgdGhpcy5wcmV2ID0gYXdhaXQgcGFyYWxsZWwoLTEpO1xyXG4gICAgZWxzZSBpZiAoa2V5SW5kZXggPT09IGtleXMubGVuZ3RoIC0gMSlcclxuICAgICAgdGhpcy5uZXh0ID0gYXdhaXQgcGFyYWxsZWwoMSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hhbmRsZUVycihyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIHRoaXMuX3NiLmVycm9yKGVyclJlc291cmNlKHJlc3BvbnNlKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX2Zpc2goYXhpczogQXhpc1ZhbHVlKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcbiAgICAgIGRlbGV0ZSBmaWx0ZXJzW3RoaXMueEF4aXNdO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5fcmVzdWx0cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3NlcnZpY2Uuc2VyaWVzKHRoaXMuX2N1YmUubmFtZSwgdGhpcy54QXhpcywge1xyXG4gICAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcywgZmlsdGVycyxcclxuICAgICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgICB9KSkuY2F0Y2godGhpcy5faGFuZGxlRXJyLmJpbmQodGhpcykpO1xyXG4gICAgICB0aGlzLmN1cnJlbnQgPSB7XHJcbiAgICAgICAgYXhpcyxcclxuICAgICAgICB2YWx1ZTogMCxcclxuICAgICAgICBpbmRpY2VzOiBbXVxyXG4gICAgICB9IGFzIExldmVsO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlc3VsdHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBsZXQgeyBwb2ludHMsIGluZGV4LCB0aXRsZSB9ID0gcmVzdWx0c1tqXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHBvaW50ID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKHBvaW50LnggPT09IGF4aXMpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4KVxyXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55IH0pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50LnRpdGxlID0gcG9pbnQubmFtZSxcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudC52YWx1ZSA9IHBvaW50Lnk7XHJcbiAgICAgICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW2kgLSAxXTtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMucHJldilcclxuICAgICAgICAgICAgICAgIHRoaXMucHJldiA9IHtcclxuICAgICAgICAgICAgICAgICAgYXhpczogcG9pbnQueCxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IHBvaW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICBpbmRpY2VzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSBhcyBMZXZlbDtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBxID0gaTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChxID4gMCAmJiBwb2ludC54ICE9PSB0aGlzLnByZXYuYXhpcylcclxuICAgICAgICAgICAgICAgICAgcG9pbnQgPSBwb2ludHNbcS0tXTtcclxuXHJcbiAgICAgICAgICAgICAgICBwb2ludC54ID09PSB0aGlzLnByZXYuYXhpcyAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByZXYuaW5kaWNlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHRoaXMucHJldi52YWx1ZSA9IHBvaW50Lnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgPCBwb2ludHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW2kgKyAxXTtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMubmV4dClcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IHtcclxuICAgICAgICAgICAgICAgICAgYXhpczogcG9pbnQueCxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IHBvaW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICBpbmRpY2VzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSBhcyBMZXZlbDtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBxID0gaTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChxIDwgcG9pbnRzLmxlbmd0aCAtIDEgJiYgcG9pbnQueCAhPT0gdGhpcy5uZXh0LmF4aXMpXHJcbiAgICAgICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW3ErK107XHJcbiAgICAgICAgICAgICAgICBwb2ludC54ID09PSB0aGlzLm5leHQuYXhpcyAmJiB0aGlzLm5leHQuaW5kaWNlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogaW5kZXgsIHRpdGxlLCB2YWx1ZTogcG9pbnQueVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dC52YWx1ZSA9IHBvaW50Lnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLm5leHQgJiYgcG9pbnQueCA9PSB0aGlzLm5leHQuYXhpcylcclxuICAgICAgICAgICAgdGhpcy5uZXh0LmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLnByZXYgJiYgcG9pbnQueCA9PSB0aGlzLnByZXYuYXhpcylcclxuICAgICAgICAgICAgdGhpcy5wcmV2LmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2NhbGN1bGF0ZSh0aGlzLmN1cnJlbnQpO1xyXG4gICAgICB0aGlzLmN1cnJlbnQuY2hhaW4gPSB0aGlzLnByZXY7XHJcbiAgICAgIHRoaXMuaGVscCA9IGF3YWl0IHRoaXMuZ2V0QWdncmVnYXRlTGFiZWwoKTtcclxuICAgICAgaWYgKCF0aGlzLnByZXYpXHJcbiAgICAgICAgdGhpcy5wcmV2ID0gYXdhaXQgdGhpcy5fcGFyYWxsZWwoLTEsIHRoaXMuZmlsdGVyc1t0aGlzLnBhcmVudEF4aXNdKTtcclxuICAgICAgaWYgKCF0aGlzLm5leHQpXHJcbiAgICAgICAgdGhpcy5uZXh0ID0gYXdhaXQgdGhpcy5fcGFyYWxsZWwoMSwgdGhpcy5maWx0ZXJzW3RoaXMucGFyZW50QXhpc10pO1xyXG4gICAgICB0aGlzLm5leHQgJiYgdGhpcy5fY2FsY3VsYXRlKHRoaXMubmV4dCk7XHJcbiAgICAgIHRoaXMucHJldiAmJiB0aGlzLl9jYWxjdWxhdGUodGhpcy5wcmV2KTtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgZ2V0QWdncmVnYXRlTGFiZWwoKSB7XHJcbiAgICBjb25zdCBheGVzID0geyAuLi50aGlzLmZpbHRlcnMgfTtcclxuICAgIGRlbGV0ZSBheGVzW3RoaXMueEF4aXNdO1xyXG4gICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3NlcnZpY2UubmFtZU9mKGF4ZXMsIHRoaXMuX2N1YmUubmFtZSkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWxjdWxhdGUobGV2ZWw6IExldmVsKSB7XHJcbiAgICBjb25zdCBpbmRpY2VzID0gbGV2ZWwuaW5kaWNlc1xyXG4gICAgICAuZmlsdGVyKGkgPT4gdGhpcy5fY3ViZS5pbmRpY2VzLmZpbmQobSA9PiBtLm5hbWUgPT09IGkubmFtZSAmJiBtLmFjY3VtdWxhdGUgIT09IGZhbHNlKSlcclxuICAgICAgLnN1bShpID0+IGkudmFsdWUpO1xyXG4gICAgY29uc3QgcGVyY2VudCA9IGluZGljZXMgIT09IDAgP1xyXG4gICAgICBNYXRoLnJvdW5kKGxldmVsLnZhbHVlIC8gaW5kaWNlcyAqIDEwMCkgOiAwO1xyXG4gICAgbGV2ZWwucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICBsZXZlbC5hbmltYXRpb24gPSB7XHJcbiAgICAgIHZhbHVlOiBwZXJjZW50LFxyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBzdGFydFdpZHRoOiBwZXJjZW50IDwgMTAwID9cclxuICAgICAgICAgIDEwMCA6XHJcbiAgICAgICAgICAxMDBcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbiAgYXN5bmMgZ29wcmV2KCkge1xyXG4gICAgbGV0IGFsdGVybmF0ZTogTGV2ZWw7XHJcbiAgICBpZiAoIXRoaXMucHJldi5zY29wZSlcclxuICAgICAgYWx0ZXJuYXRlID0gdGhpcy5fc2Vlayh0aGlzLnByZXYuYXhpcywgdGhpcy5fcmVzdWx0cywgLTEpO1xyXG4gICAgaWYgKCFhbHRlcm5hdGUpIHtcclxuICAgICAgaWYgKHRoaXMuX3Njb3BlID09PSB0aGlzLnByZXYuc2NvcGUpXHJcbiAgICAgICAgYWx0ZXJuYXRlID0gdGhpcy5fc2Vlayh0aGlzLnByZXYuYXhpcywgdGhpcy5fc2NvcGVyZXN1bHRzLCAtMSk7XHJcbiAgICAgIGlmICghYWx0ZXJuYXRlKVxyXG4gICAgICAgIGFsdGVybmF0ZSA9IGF3YWl0IHRoaXMuX3BhcmFsbGVsKC0xLCB0aGlzLnByZXYuc2NvcGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGFsdGVybmF0ZSkge1xyXG4gICAgICB0aGlzLl9jYWxjdWxhdGUoYWx0ZXJuYXRlKTtcclxuICAgICAgYWx0ZXJuYXRlLmFuaW1hdGlvbi5wYXJhbXMuc3RhcnRXaWR0aCA9IHRoaXMucHJldi5wZXJjZW50O1xyXG4gICAgICB0aGlzLnByZXYgPSBhbHRlcm5hdGU7XHJcbiAgICAgIHRoaXMuZm9yd2FyZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmJhY2sgPSBmYWxzZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2VlayhheGlzOiBzdHJpbmcsIHJlc3VsdHM6IFNlcmllc1tdLCBkaXJlY3Rpb246IDEgfCAtMSkge1xyXG4gICAgbGV0IGxldmVsOiBMZXZlbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgeyBpbmRleCwgcG9pbnRzLCB0aXRsZSB9ID0gcmVzdWx0c1tpXSwgaiA9IDA7XHJcbiAgICAgIHdoaWxlIChqIDwgcG9pbnRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBsZXQgcG9pbnQgPSBwb2ludHNbal07XHJcbiAgICAgICAgaWYgKHBvaW50LnggPT09IGF4aXMpIHtcclxuICAgICAgICAgIGlmICgoZGlyZWN0aW9uID4gMCAmJiBqID09PSBwb2ludHMubGVuZ3RoIC0gMSkgfHwgKGRpcmVjdGlvbiA8IDAgJiYgaiA9PT0gMCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgcG9pbnQgPSBwb2ludHNbaiArIGRpcmVjdGlvbl07XHJcbiAgICAgICAgICBpZiAoIWxldmVsKVxyXG4gICAgICAgICAgICBsZXZlbCA9IHtcclxuICAgICAgICAgICAgICBheGlzOiBwb2ludC54LFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBwb2ludC5uYW1lLFxyXG4gICAgICAgICAgICAgIGluZGljZXM6IFtdXHJcbiAgICAgICAgICAgIH0gYXMgTGV2ZWw7XHJcbiAgICAgICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICAgICAgbGV0IHEgPSBqO1xyXG4gICAgICAgICAgICB3aGlsZSAocG9pbnQgJiYgcG9pbnQueCAhPT0gbGV2ZWwuYXhpcylcclxuICAgICAgICAgICAgICBwb2ludCA9IHBvaW50c1txICs9IGRpcmVjdGlvbl07XHJcbiAgICAgICAgICAgIHBvaW50ICYmIGxldmVsLmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICAgIGlmIChsZXZlbC52YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIGxldmVsLnZhbHVlID0gMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGxldmVsLnZhbHVlID0gcG9pbnQueTtcclxuICAgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwICYmIGogPCBwb2ludHMubGVuZ3RoIC0gMiAmJiBwb2ludHNbaiArIDJdLnggIT09IHRoaXMuY3VycmVudC5heGlzKVxyXG4gICAgICAgICAgICB0aGlzLmZvcndhcmQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluZGV4ICYmIGxldmVsICYmIGxldmVsLmF4aXMgPT09IHBvaW50LngpXHJcbiAgICAgICAgICBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55IH0pO1xyXG4gICAgICAgIGorKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuICBhc3luYyBnb25leHQoKSB7XHJcbiAgICBsZXQgYWx0ZXJuYXRlOiBMZXZlbDtcclxuICAgIHRoaXMuZm9yd2FyZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMucHJldi5zY29wZSlcclxuICAgICAgYWx0ZXJuYXRlID0gdGhpcy5fc2Vlayh0aGlzLnByZXYuYXhpcywgdGhpcy5fc2NvcGVyZXN1bHRzLCAxKTtcclxuICAgIGlmICghYWx0ZXJuYXRlKVxyXG4gICAgICBhbHRlcm5hdGUgPSB0aGlzLl9zZWVrKHRoaXMucHJldi5heGlzLCB0aGlzLl9yZXN1bHRzLCAxKTtcclxuICAgIGlmIChhbHRlcm5hdGUpIHtcclxuICAgICAgdGhpcy5fY2FsY3VsYXRlKGFsdGVybmF0ZSk7XHJcbiAgICAgIGFsdGVybmF0ZS5hbmltYXRpb24ucGFyYW1zLnN0YXJ0V2lkdGggPSB0aGlzLnByZXYucGVyY2VudDtcclxuICAgICAgdGhpcy5wcmV2ID0gYWx0ZXJuYXRlO1xyXG4gICAgICB0aGlzLmJhY2sgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5mb3J3YXJkID0gZmFsc2U7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3BhcmFsbGVsKGRpcmVjdGlvbjogMSB8IC0xLCBwYXJlbnRLZXk6IEF4aXNWYWx1ZSkge1xyXG4gICAgaWYgKCF0aGlzLl9wYXJlbnRBeGlzKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjb25zdCBwYXJlbnRLZXlzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZHMua2V5cyh0aGlzLl9wYXJlbnRBeGlzLmRhdGFUeXBlKSk7XHJcbiAgICBjb25zdFxyXG4gICAgICBrZXlJbmRleCA9IHBhcmVudEtleXMuaW5kZXhPZigoaXNBcnJheShwYXJlbnRLZXkpID8gcGFyZW50S2V5WzBdIDogcGFyZW50S2V5KSBhcyBzdHJpbmcpLCBzY29wZSA9IHBhcmVudEtleXNba2V5SW5kZXggKyBkaXJlY3Rpb25dO1xyXG4gICAgaWYgKCFzY29wZSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH0gYXMgQXhlc01hcDtcclxuICAgIGZpbHRlcnNbdGhpcy5wYXJlbnRBeGlzXSA9IHNjb3BlO1xyXG4gICAgZGVsZXRlIGZpbHRlcnNbdGhpcy54QXhpc107XHJcbiAgICBjb25zdCByZXN1bHRzID0gdGhpcy5fc2NvcGVyZXN1bHRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnhBeGlzLCB7XHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcywgZmlsdGVycyxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVcclxuICAgIH0pKS5jYXRjaCh0aGlzLl9oYW5kbGVFcnIuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9zY29wZSA9IHNjb3BlO1xyXG4gICAgaWYgKCFyZXN1bHRzLnNvbWUocyA9PiBzLnBvaW50cy5sZW5ndGgpKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjb25zdCBsZXZlbDogTGV2ZWwgPSB7XHJcbiAgICAgIHNjb3BlLFxyXG4gICAgICBpbmRpY2VzOiBbXVxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBwYXJlbnRUaXRsZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2RzLmdldCh0aGlzLl9wYXJlbnRBeGlzLmRhdGFUeXBlLCBzY29wZSkpO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXN1bHRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIGxldCB7IGluZGV4LCB0aXRsZSwgcG9pbnRzLCBuYW1lIH0gPSByZXN1bHRzW2pdLCBxID0gZGlyZWN0aW9uID4gMCA/IDAgOiBwb2ludHMubGVuZ3RoIC0gMSwgcG9pbnQgPSBwb2ludHNbcV07XHJcbiAgICAgIGlmIChpbmRleCkge1xyXG4gICAgICAgIGlmIChsZXZlbC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBsZXZlbC52YWx1ZSA9IDAsXHJcbiAgICAgICAgICAgIGxldmVsLnRpdGxlID0gYCR7cG9pbnQubmFtZX0gJHtwYXJlbnRUaXRsZX1gO1xyXG4gICAgICAgICAgbGV2ZWwuaW5kaWNlcy5wdXNoKHsgbmFtZTogaW5kZXgsIHRpdGxlLCB2YWx1ZTogcG9pbnQueSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkge1xyXG4gICAgICAgICAgICB3aGlsZSAocSA+IDAgJiYgcG9pbnQueCAhPT0gbGV2ZWwuYXhpcylcclxuICAgICAgICAgICAgICBwb2ludCA9IHBvaW50c1txLS1dO1xyXG4gICAgICAgICAgICBxID4gMCAmJiBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lLCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgd2hpbGUgKHEgPCBwb2ludHMubGVuZ3RoIC0gMSAmJiBwb2ludC54ICE9PSBsZXZlbC5heGlzKVxyXG4gICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW3ErK107XHJcbiAgICAgICAgICAgIHEgPCBwb2ludHMubGVuZ3RoIC0gMSAmJiBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lLCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgbGV2ZWwuYXhpcyA9IHBvaW50LngsXHJcbiAgICAgICAgICBsZXZlbC52YWx1ZSA9IHBvaW50LnksXHJcbiAgICAgICAgICBsZXZlbC50aXRsZSA9IGAke3BvaW50Lm5hbWV9ICR7cGFyZW50VGl0bGV9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBsZXZlbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGxldmVsXHJcbiAgICogQHBhcmFtIGluZGV4XHJcbiAgICovXHJcbiAgZXhwbG9yZShsZXZlbDogTGV2ZWwsIGluZGV4Pzogc3RyaW5nKSB7XHJcbiAgICBpZiAoKCFpbmRleCAmJiBsZXZlbC52YWx1ZSA9PT0gMCkgfHxcclxuICAgICAgKGluZGV4ICYmIGxldmVsLmluZGljZXMuZmluZChpID0+IGkubmFtZSA9PT0gaW5kZXgpLnZhbHVlID09PSAwKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgYXhlcyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcbiAgICBheGVzW3RoaXMueEF4aXNdID0gbGV2ZWwuYXhpcztcclxuICAgIGlmIChsZXZlbC5zY29wZSlcclxuICAgICAgYXhlc1t0aGlzLnBhcmVudEF4aXNdID0gbGV2ZWwuc2NvcGU7XHJcbiAgICB0aGlzLm9uRXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhwbG9yZUV2ZW50IHtcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG59XHJcbmRlY2xhcmUgdHlwZSBMZXZlbCA9IHtcclxuICBpbmRpY2VzPzoge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHZhbHVlOiBudW1iZXI7XHJcbiAgfVtdLFxyXG4gIHZhbHVlOiBudW1iZXIsXHJcbiAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGF4aXM6IHN0cmluZ1xyXG4gIC8qKiBwYXJlbnQgYXhpcyAqL1xyXG4gIHNjb3BlPzogc3RyaW5nLFxyXG4gIGFuaW1hdGlvbj86IHtcclxuICAgIHZhbHVlOiBudW1iZXIsXHJcbiAgICBwYXJhbXM6IHtcclxuICAgICAgc3RhcnRXaWR0aDogbnVtYmVyXHJcbiAgICB9XHJcbiAgfTtcclxuICBjaGFpbj86IExldmVsO1xyXG4gIHBlcmNlbnQ/OiBudW1iZXI7XHJcbn07XHJcbiIsIiAgPCEtLSBsZXZlbHMgLS0+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2ICpuZ0lmPVwicHJldlwiIGNsYXNzPVwibGV2ZWwgcHJldi1sZXZlbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxldmVsLWhlYWRlciByb3dcIj5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xpY2xhYmxlIG1hdC1pY29uLXJ0bC1taXJyb3JcIiBbaW5saW5lXT10cnVlIChjbGljayk9XCJnb3ByZXYoKVwiICpuZ0lmPVwiYmFja1wiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICA8ZGl2IGRpdiBjbGFzcz1cIm1hdC1oMSB0aXRsZVwiPlxyXG4gICAgICAgIHt7J1ByZXZMZXZlbCd8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZvcndhcmRcIiBjbGFzcz1cImNsaWNsYWJsZSBtYXQtaWNvbi1ydGwtbWlycm9yXCIgW2lubGluZV09dHJ1ZSAoY2xpY2spPVwiZ29uZXh0KClcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsZXZlbDsgY29udGV4dDoge3VzZTogcHJldn1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiY3VycmVudFwiIGNsYXNzPVwibGV2ZWwgY3VycmVudC1sZXZlbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxldmVsLWhlYWRlciByb3dcIj5cclxuICAgICAgPGRpdiBkaXYgY2xhc3M9XCJtYXQtaDEgdGl0bGVcIj5cclxuICAgICAgICB7eydDdXJyZW50TGV2ZWwnfCB0cmFuc2xhdGUgOiBwcmltYXJ5QXhpcy50aXRsZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtaWNvbiBbYml6ZG9jVG9vbHRpcF09XCJoZWxwXCIgKm5nSWY9XCJoZWxwXCIgW2lubGluZV09XCJ0cnVlXCI+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxldmVsOyBjb250ZXh0OiB7dXNlOiBjdXJyZW50fVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJuZXh0XCIgY2xhc3M9XCJsZXZlbCBuZXh0LWxldmVsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGV2ZWwtaGVhZGVyXCI+XHJcbiAgICAgIDxkaXYgZGl2IGNsYXNzPVwibWF0LWgxIHRpdGxlXCI+XHJcbiAgICAgICAge3snTmV4dExldmVsJ3wgdHJhbnNsYXRlfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsZXZlbDsgY29udGV4dDoge3VzZTogbmV4dH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gbGV2ZWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbGV2ZWwgbGV0LXVzZT1cInVzZVwiIGxldC1oZWxwPVwiaGVscFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8aDIgY2xhc3M9XCJtYXQtaDFcIiBbY2xhc3MuY2xpY2xhYmxlXT1cInVzZS52YWx1ZSAhPT0gMFwiIChjbGljayk9XCJleHBsb3JlKHVzZSlcIj57e3VzZS50aXRsZX19PC9oMj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGgzIGNsYXNzPVwibWF0LWgxXCIgW2NsYXNzLmNsaWNsYWJsZV09XCJ1c2UudmFsdWUgIT09IDBcIiAoY2xpY2spPVwiZXhwbG9yZSh1c2UpXCI+e3t1c2UudmFsdWUgfCBjdXJyZW5jeSA6IGN1cnJlbmN5Q29kZSA6ICdzeW1ib2wnIDogZGlnaXRzSW5mb319PC9oMz5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidXNlLmNoYWluICYmIHVzZS52YWx1ZSAhPT0gdXNlLmNoYWluLnZhbHVlXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2UudmFsdWUgIT09IDAgJiYgdXNlLmNoYWluLnZhbHVlICE9PSAwXCI+e3tNYXRoLnJvdW5kKHVzZS52YWx1ZSAvIHVzZS5jaGFpbi52YWx1ZSAqIDEwMCkgfX0lPC9zcGFuPlxyXG4gICAgICAgIDxtYXQtaWNvbj57e3VzZS52YWx1ZSA+IHVzZS5jaGFpbi52YWx1ZSA/ICd0cmVuZGluZ191cCc6J3RyZW5kaW5nX2Rvd24nIH19PC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGkgb2YgdXNlLmluZGljZXNcIiBjbGFzcz1cImluZGV4XCI+XHJcbiAgICAgIDxoNCBjbGFzcz1cIm1hdC1oMyB0aXRsZVwiPnt7aS50aXRsZX19PC9oND5cclxuICAgICAgPGg1IGNsYXNzPVwibWF0LWgzXCIgW2NsYXNzLmNsaWNsYWJsZV09XCJpLnZhbHVlICE9PSAwXCIgKGNsaWNrKT1cImV4cGxvcmUodXNlLCBpLm5hbWUpXCI+e3tpLnZhbHVlIHwgY3VycmVuY3kgOiBjdXJyZW5jeUNvZGUgOiAnc3ltYm9sJyA6IGRpZ2l0c0luZm99fTwvaDU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYmFyXCIgKm5nSWY9XCJ1c2UuaW5kaWNlcy5sZW5ndGhcIiBbY2xhc3MuYXZhaWxhYmxlXT1cInVzZS5wZXJjZW50IDwgMTAwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIiBbc3R5bGUuZmxleEJhc2lzXT1cIk1hdGgucm91bmQodXNlLnBlcmNlbnQgPCAxMDAgP1xyXG4gICAgICAgICAgICAxMDAgLSB1c2UucGVyY2VudCA6XHJcbiAgICAgICAgICAgIDEwMCAvIHVzZS5wZXJjZW50ICogMTAwKSArICclJ1wiXHJcbiAgICAgICAgIFtAYmFyXT1cInVzZS5hbmltYXRpb25cIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvd1wiICpuZ0lmPVwidXNlLnBlcmNlbnQgPiAwXCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
400
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9zdW0vc3VtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9zdW0vc3VtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBZSxXQUFXLEVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUkzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFhL0MsTUFBTSxPQUFPLGdCQUFnQjtJQWlDM0IsWUFDVSxHQUFzQixFQUN0QixRQUFxQixFQUNyQixHQUFrQixFQUNsQixRQUF3QjtRQUh4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFyQnpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN0RCxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osWUFBTyxHQUFHLEtBQUssQ0FBQztRQVNQLFNBQUksR0FBRyxJQUFJLENBQUM7SUFXckIsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFnQjtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxPQUFPLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxN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O2dCQUdHLFNBQVM7c0JBRGpCLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIGVyclJlc291cmNlLCBTZXJpZXMgfSBmcm9tIFwiLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEF4aXNWYWx1ZSwgQ3ViZSwgQ3ViZUF4aXMgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9jb25maWd1cmF0aW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXN1bScsXHJcbiAgdGVtcGxhdGVVcmw6ICdzdW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydzdW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbdHJpZ2dlcignYmFyJywgW1xyXG4gICAgdHJhbnNpdGlvbignKjw9PionLCBbc3R5bGUoe1xyXG4gICAgICBmbGV4QmFzaXM6ICd7e3N0YXJ0V2lkdGh9fSUnXHJcbiAgICB9KSwgYW5pbWF0ZSgnNTAwbXMgZWFzZScpXSwgeyBwYXJhbXM6IHsgc3RhcnRXaWR0aDogMTAwIH0gfSksXHJcbiAgXSldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlU3VtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKVxyXG4gIHhBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGVyaW9kUG9saWN5PzogJ1N0cmljdCcgfCAnRmlzaCc7XHJcbiAgQElucHV0KClcclxuICBwYXJlbnRBeGlzOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzITogQXhlc01hcDtcclxuICBASW5wdXQoKVxyXG4gIGN1YmU6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGluZGljZXM6IHN0cmluZ1tdIHwgc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBAT3V0cHV0KCdleHBsb3JlJylcclxuICByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV4cGxvcmVFdmVudD4oKTtcclxuICBiYWNrID0gdHJ1ZTtcclxuICBmb3J3YXJkID0gZmFsc2U7XHJcbiAgcHJpbWFyeUF4aXM6IEN1YmVBeGlzO1xyXG4gIG5leHQ6IExldmVsO1xyXG4gIGN1cnJlbnQ6IExldmVsO1xyXG4gIHByZXY6IExldmVsO1xyXG4gIGhlbHA6IHN0cmluZztcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBkaWdpdHNJbmZvOiBzdHJpbmc7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICByZWFkb25seSBNYXRoID0gTWF0aDtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHByaXZhdGUgX3BhcmVudEF4aXM6IEN1YmVBeGlzO1xyXG4gIHByaXZhdGUgX3Jlc3VsdHM6IFNlcmllc1tdO1xyXG4gIHByaXZhdGUgX3Njb3BlcmVzdWx0czogU2VyaWVzW107XHJcbiAgcHJpdmF0ZSBfc2NvcGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSkgfHwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5jdXJyZW5jeUNvZGUgPSB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZTtcclxuICAgIHRoaXMuZGlnaXRzSW5mbyA9IHRoaXMuX3NlcnZpY2UuZGlnaXRzSW5mbztcclxuICAgIHRoaXMucHJpbWFyeUF4aXMgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy54QXhpcyk7XHJcbiAgICBpZiAoIXRoaXMucHJpbWFyeUF4aXMpIHRocm93ICd4QXhpcyc7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRBeGlzKSB0aGlzLl9wYXJlbnRBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMucGFyZW50QXhpcyk7XHJcbiAgICBpZiAoIXRoaXMuaW5kaWNlcykgdGhpcy5pbmRpY2VzID0gdGhpcy5fY3ViZS5pbmRpY2VzLm1hcChpID0+IGkubmFtZSk7XHJcbiAgICBlbHNlIGlmICghaXNBcnJheSh0aGlzLmluZGljZXMpKSB0aGlzLmluZGljZXMgPSBbdGhpcy5pbmRpY2VzXTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmZpbHRlcnNbdGhpcy54QXhpc107XHJcbiAgICBjb25zdCBheGlzID0gaXNBcnJheShvcmlnaW5hbFZhbHVlKSA/IG9yaWdpbmFsVmFsdWVbMF0gOiBvcmlnaW5hbFZhbHVlO1xyXG4gICAgaWYgKHRoaXMucGVyaW9kUG9saWN5ID09PSAnU3RyaWN0JylcclxuICAgICAgdGhpcy5fc3RyaWN0KGF4aXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9maXNoKGF4aXMpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9zdHJpY3QoYXhpczogQXhpc1ZhbHVlKSB7XHJcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZHMua2V5cyh0aGlzLnByaW1hcnlBeGlzLmRhdGFUeXBlKSksIGtleUluZGV4ID0ga2V5cy5pbmRleE9mKGF4aXMgYXMgc3RyaW5nKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMgfTtcclxuICAgIGNvbnN0IGF4ZXMgPSBbYXhpc107XHJcbiAgICBpZiAoa2V5SW5kZXggPiAwKVxyXG4gICAgICBheGVzLnB1c2goa2V5c1trZXlJbmRleCAtIDFdKTtcclxuICAgIGlmIChrZXlJbmRleCA9PT0ga2V5cy5sZW5ndGggLSAxKVxyXG4gICAgICBheGVzLnB1c2goa2V5c1trZXlJbmRleCArIDFdKTtcclxuICAgIGZpbHRlcnNbdGhpcy5wcmltYXJ5QXhpcy5uYW1lXSA9IGF4aXM7XHJcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnByaW1hcnlBeGlzLm5hbWUsIHtcclxuICAgICAgaW5kaWNlczogdGhpcy5pbmRpY2VzLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZSxcclxuICAgICAgZmlsdGVyc1xyXG4gICAgfSkpLmNhdGNoKHRoaXMuX2hhbmRsZUVyci5iaW5kKHRoaXMpKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCB7IGluZGV4LCB0aXRsZSwgcG9pbnRzIH0gPSByZXN1bHRzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGxldCBwb2ludCA9IHBvaW50c1tqXSxcclxuICAgICAgICAgIHsgeCwgeSwgbmFtZTogYXhpcyB9ID0gcG9pbnQ7XHJcbiAgICAgICAgaWYgKHggPT09IGF4aXMpIHtcclxuICAgICAgICAgIGlmIChpbmRleClcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHkgfSk7XHJcblxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB7IGF4aXM6IHgsIG5hbWU6IGF4aXMsIHZhbHVlOiB5LCBpbmRpY2VzOiBbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh4ID09PSBrZXlzW2tleUluZGV4IC0gMV0pIHtcclxuICAgICAgICAgIGlmICghdGhpcy5wcmV2KVxyXG4gICAgICAgICAgICB0aGlzLnByZXYgPSB7IGF4aXM6IHgsIG5hbWU6IGF4aXMsIHZhbHVlOiAwLCBpbmRpY2VzOiBbXSB9O1xyXG4gICAgICAgICAgaWYgKGluZGV4KVxyXG4gICAgICAgICAgICB0aGlzLnByZXYuaW5kaWNlcy5wdXNoKHsgbmFtZTogaW5kZXgsIHRpdGxlLCB2YWx1ZTogeSB9KTtcclxuXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMucHJldi52YWx1ZSA9IHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHggPT09IGtleXNba2V5SW5kZXggKyAxXSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLm5leHQpXHJcbiAgICAgICAgICAgIHRoaXMubmV4dCA9IHsgYXhpczogeCwgbmFtZTogYXhpcywgdmFsdWU6IDAsIGluZGljZXM6IFtdIH07XHJcbiAgICAgICAgICBpZiAoaW5kZXgpXHJcbiAgICAgICAgICAgIHRoaXMubmV4dC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiB5IH0pO1xyXG5cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5uZXh0LnZhbHVlID0geTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHBhcmFsbGVsID0gYXN5bmMgKGRpcmVjdGlvbjogMSB8IC0xKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmVudEtleSA9IHRoaXMuZmlsdGVyc1t0aGlzLnBhcmVudEF4aXNdO1xyXG4gICAgICBjb25zdCBwYXJlbnRLZXlzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZHMua2V5cyh0aGlzLl9wYXJlbnRBeGlzLmRhdGFUeXBlKSk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50S2V5cy5pbmRleE9mKChpc0FycmF5KHBhcmVudEtleSkgPyBwYXJlbnRLZXlbMF0gOiBwYXJlbnRLZXkpIGFzIHN0cmluZyksIHNjb3BlID0gcGFyZW50S2V5c1tpbmRleCArIGRpcmVjdGlvbl07XHJcbiAgICAgIGlmICghc2NvcGUpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBmaWx0ZXJzW3RoaXMucGFyZW50QXhpc10gPSBzY29wZTtcclxuICAgICAgY29uc3QgYXhpcyA9IGtleXNba2V5cy5sZW5ndGggKyBkaXJlY3Rpb25dO1xyXG4gICAgICBmaWx0ZXJzW3RoaXMucHJpbWFyeUF4aXMubmFtZV0gPSBheGlzO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnByaW1hcnlBeGlzLm5hbWUsIHtcclxuICAgICAgICBpbmRpY2VzOiB0aGlzLmluZGljZXMsXHJcbiAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUsXHJcbiAgICAgICAgZmlsdGVyc1xyXG4gICAgICB9KSkuY2F0Y2godGhpcy5faGFuZGxlRXJyLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgY29uc3QgbGV2ZWw6IExldmVsID0geyBheGlzLCBpbmRpY2VzOiBbXSwgc2NvcGUgfSBhcyBhbnk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIHRpdGxlLCBwb2ludHMgfSA9IHJlc3VsdHNbaV07XHJcbiAgICAgICAgaWYgKCFwb2ludHMubGVuZ3RoKVxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgY29uc3QgW3BvaW50XSA9IHBvaW50cztcclxuICAgICAgICBpZiAoaW5kZXggPT09ICdJbmRleCcpXHJcbiAgICAgICAgICBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55IH0pO1xyXG5cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBsZXZlbC50aXRsZSA9IHBvaW50Lm5hbWUsIGxldmVsLnZhbHVlID0gcG9pbnQueTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbGV2ZWw7XHJcbiAgICB9O1xyXG4gICAgaWYgKGtleUluZGV4ID09PSAwICYmIHRoaXMucGFyZW50QXhpcylcclxuICAgICAgdGhpcy5wcmV2ID0gYXdhaXQgcGFyYWxsZWwoLTEpO1xyXG4gICAgZWxzZSBpZiAoa2V5SW5kZXggPT09IGtleXMubGVuZ3RoIC0gMSlcclxuICAgICAgdGhpcy5uZXh0ID0gYXdhaXQgcGFyYWxsZWwoMSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hhbmRsZUVycihyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIHRoaXMuX3NiLmVycm9yKGVyclJlc291cmNlKHJlc3BvbnNlKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX2Zpc2goYXhpczogQXhpc1ZhbHVlKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcbiAgICAgIGRlbGV0ZSBmaWx0ZXJzW3RoaXMueEF4aXNdO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5fcmVzdWx0cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3NlcnZpY2Uuc2VyaWVzKHRoaXMuX2N1YmUubmFtZSwgdGhpcy54QXhpcywge1xyXG4gICAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcywgZmlsdGVycyxcclxuICAgICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgICB9KSkuY2F0Y2godGhpcy5faGFuZGxlRXJyLmJpbmQodGhpcykpO1xyXG4gICAgICB0aGlzLmN1cnJlbnQgPSB7XHJcbiAgICAgICAgYXhpcyxcclxuICAgICAgICB2YWx1ZTogMCxcclxuICAgICAgICBpbmRpY2VzOiBbXVxyXG4gICAgICB9IGFzIExldmVsO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlc3VsdHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBsZXQgeyBwb2ludHMsIGluZGV4LCB0aXRsZSB9ID0gcmVzdWx0c1tqXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHBvaW50ID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKHBvaW50LnggPT09IGF4aXMpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4KVxyXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55IH0pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50LnRpdGxlID0gcG9pbnQubmFtZSxcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudC52YWx1ZSA9IHBvaW50Lnk7XHJcbiAgICAgICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW2kgLSAxXTtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMucHJldilcclxuICAgICAgICAgICAgICAgIHRoaXMucHJldiA9IHtcclxuICAgICAgICAgICAgICAgICAgYXhpczogcG9pbnQueCxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IHBvaW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICBpbmRpY2VzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSBhcyBMZXZlbDtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBxID0gaTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChxID4gMCAmJiBwb2ludC54ICE9PSB0aGlzLnByZXYuYXhpcylcclxuICAgICAgICAgICAgICAgICAgcG9pbnQgPSBwb2ludHNbcS0tXTtcclxuXHJcbiAgICAgICAgICAgICAgICBwb2ludC54ID09PSB0aGlzLnByZXYuYXhpcyAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByZXYuaW5kaWNlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHRoaXMucHJldi52YWx1ZSA9IHBvaW50Lnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGkgPCBwb2ludHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW2kgKyAxXTtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMubmV4dClcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IHtcclxuICAgICAgICAgICAgICAgICAgYXhpczogcG9pbnQueCxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IHBvaW50Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxyXG4gICAgICAgICAgICAgICAgICBpbmRpY2VzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSBhcyBMZXZlbDtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBxID0gaTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChxIDwgcG9pbnRzLmxlbmd0aCAtIDEgJiYgcG9pbnQueCAhPT0gdGhpcy5uZXh0LmF4aXMpXHJcbiAgICAgICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW3ErK107XHJcbiAgICAgICAgICAgICAgICBwb2ludC54ID09PSB0aGlzLm5leHQuYXhpcyAmJiB0aGlzLm5leHQuaW5kaWNlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogaW5kZXgsIHRpdGxlLCB2YWx1ZTogcG9pbnQueVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dC52YWx1ZSA9IHBvaW50Lnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLm5leHQgJiYgcG9pbnQueCA9PSB0aGlzLm5leHQuYXhpcylcclxuICAgICAgICAgICAgdGhpcy5uZXh0LmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLnByZXYgJiYgcG9pbnQueCA9PSB0aGlzLnByZXYuYXhpcylcclxuICAgICAgICAgICAgdGhpcy5wcmV2LmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2NhbGN1bGF0ZSh0aGlzLmN1cnJlbnQpO1xyXG4gICAgICB0aGlzLmN1cnJlbnQuY2hhaW4gPSB0aGlzLnByZXY7XHJcbiAgICAgIHRoaXMuaGVscCA9IGF3YWl0IHRoaXMuZ2V0QWdncmVnYXRlTGFiZWwoKTtcclxuICAgICAgaWYgKCF0aGlzLnByZXYpXHJcbiAgICAgICAgdGhpcy5wcmV2ID0gYXdhaXQgdGhpcy5fcGFyYWxsZWwoLTEsIHRoaXMuZmlsdGVyc1t0aGlzLnBhcmVudEF4aXNdKTtcclxuICAgICAgaWYgKCF0aGlzLm5leHQpXHJcbiAgICAgICAgdGhpcy5uZXh0ID0gYXdhaXQgdGhpcy5fcGFyYWxsZWwoMSwgdGhpcy5maWx0ZXJzW3RoaXMucGFyZW50QXhpc10pO1xyXG4gICAgICB0aGlzLm5leHQgJiYgdGhpcy5fY2FsY3VsYXRlKHRoaXMubmV4dCk7XHJcbiAgICAgIHRoaXMucHJldiAmJiB0aGlzLl9jYWxjdWxhdGUodGhpcy5wcmV2KTtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgZ2V0QWdncmVnYXRlTGFiZWwoKSB7XHJcbiAgICBjb25zdCBheGVzID0geyAuLi50aGlzLmZpbHRlcnMgfTtcclxuICAgIGRlbGV0ZSBheGVzW3RoaXMueEF4aXNdO1xyXG4gICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3NlcnZpY2UubmFtZU9mKGF4ZXMsIHRoaXMuX2N1YmUubmFtZSkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWxjdWxhdGUobGV2ZWw6IExldmVsKSB7XHJcbiAgICBjb25zdCBpbmRpY2VzID0gbGV2ZWwuaW5kaWNlc1xyXG4gICAgICAuZmlsdGVyKGkgPT4gdGhpcy5fY3ViZS5pbmRpY2VzLmZpbmQobSA9PiBtLm5hbWUgPT09IGkubmFtZSAmJiBtLmFjY3VtdWxhdGUgIT09IGZhbHNlKSlcclxuICAgICAgLnN1bShpID0+IGkudmFsdWUpO1xyXG4gICAgY29uc3QgcGVyY2VudCA9IGluZGljZXMgIT09IDAgP1xyXG4gICAgICBNYXRoLnJvdW5kKGxldmVsLnZhbHVlIC8gaW5kaWNlcyAqIDEwMCkgOiAwO1xyXG4gICAgbGV2ZWwucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICBsZXZlbC5hbmltYXRpb24gPSB7XHJcbiAgICAgIHZhbHVlOiBwZXJjZW50LFxyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBzdGFydFdpZHRoOiBwZXJjZW50IDwgMTAwID9cclxuICAgICAgICAgIDEwMCA6XHJcbiAgICAgICAgICAxMDBcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbiAgYXN5bmMgZ29wcmV2KCkge1xyXG4gICAgbGV0IGFsdGVybmF0ZTogTGV2ZWw7XHJcbiAgICBpZiAoIXRoaXMucHJldi5zY29wZSlcclxuICAgICAgYWx0ZXJuYXRlID0gdGhpcy5fc2Vlayh0aGlzLnByZXYuYXhpcywgdGhpcy5fcmVzdWx0cywgLTEpO1xyXG4gICAgaWYgKCFhbHRlcm5hdGUpIHtcclxuICAgICAgaWYgKHRoaXMuX3Njb3BlID09PSB0aGlzLnByZXYuc2NvcGUpXHJcbiAgICAgICAgYWx0ZXJuYXRlID0gdGhpcy5fc2Vlayh0aGlzLnByZXYuYXhpcywgdGhpcy5fc2NvcGVyZXN1bHRzLCAtMSk7XHJcbiAgICAgIGlmICghYWx0ZXJuYXRlKVxyXG4gICAgICAgIGFsdGVybmF0ZSA9IGF3YWl0IHRoaXMuX3BhcmFsbGVsKC0xLCB0aGlzLnByZXYuc2NvcGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGFsdGVybmF0ZSkge1xyXG4gICAgICB0aGlzLl9jYWxjdWxhdGUoYWx0ZXJuYXRlKTtcclxuICAgICAgYWx0ZXJuYXRlLmFuaW1hdGlvbi5wYXJhbXMuc3RhcnRXaWR0aCA9IHRoaXMucHJldi5wZXJjZW50O1xyXG4gICAgICB0aGlzLnByZXYgPSBhbHRlcm5hdGU7XHJcbiAgICAgIHRoaXMuZm9yd2FyZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmJhY2sgPSBmYWxzZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2VlayhheGlzOiBzdHJpbmcsIHJlc3VsdHM6IFNlcmllc1tdLCBkaXJlY3Rpb246IDEgfCAtMSkge1xyXG4gICAgbGV0IGxldmVsOiBMZXZlbDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgeyBpbmRleCwgcG9pbnRzLCB0aXRsZSB9ID0gcmVzdWx0c1tpXSwgaiA9IDA7XHJcbiAgICAgIHdoaWxlIChqIDwgcG9pbnRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBsZXQgcG9pbnQgPSBwb2ludHNbal07XHJcbiAgICAgICAgaWYgKHBvaW50LnggPT09IGF4aXMpIHtcclxuICAgICAgICAgIGlmICgoZGlyZWN0aW9uID4gMCAmJiBqID09PSBwb2ludHMubGVuZ3RoIC0gMSkgfHwgKGRpcmVjdGlvbiA8IDAgJiYgaiA9PT0gMCkpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgcG9pbnQgPSBwb2ludHNbaiArIGRpcmVjdGlvbl07XHJcbiAgICAgICAgICBpZiAoIWxldmVsKVxyXG4gICAgICAgICAgICBsZXZlbCA9IHtcclxuICAgICAgICAgICAgICBheGlzOiBwb2ludC54LFxyXG4gICAgICAgICAgICAgIHRpdGxlOiBwb2ludC5uYW1lLFxyXG4gICAgICAgICAgICAgIGluZGljZXM6IFtdXHJcbiAgICAgICAgICAgIH0gYXMgTGV2ZWw7XHJcbiAgICAgICAgICBpZiAoaW5kZXgpIHtcclxuICAgICAgICAgICAgbGV0IHEgPSBqO1xyXG4gICAgICAgICAgICB3aGlsZSAocG9pbnQgJiYgcG9pbnQueCAhPT0gbGV2ZWwuYXhpcylcclxuICAgICAgICAgICAgICBwb2ludCA9IHBvaW50c1txICs9IGRpcmVjdGlvbl07XHJcbiAgICAgICAgICAgIHBvaW50ICYmIGxldmVsLmluZGljZXMucHVzaCh7IG5hbWU6IGluZGV4LCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICAgIGlmIChsZXZlbC52YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgIGxldmVsLnZhbHVlID0gMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGxldmVsLnZhbHVlID0gcG9pbnQueTtcclxuICAgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwICYmIGogPCBwb2ludHMubGVuZ3RoIC0gMiAmJiBwb2ludHNbaiArIDJdLnggIT09IHRoaXMuY3VycmVudC5heGlzKVxyXG4gICAgICAgICAgICB0aGlzLmZvcndhcmQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGluZGV4ICYmIGxldmVsICYmIGxldmVsLmF4aXMgPT09IHBvaW50LngpXHJcbiAgICAgICAgICBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lOiBpbmRleCwgdGl0bGUsIHZhbHVlOiBwb2ludC55IH0pO1xyXG4gICAgICAgIGorKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuICBhc3luYyBnb25leHQoKSB7XHJcbiAgICBsZXQgYWx0ZXJuYXRlOiBMZXZlbDtcclxuICAgIHRoaXMuZm9yd2FyZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMucHJldi5zY29wZSlcclxuICAgICAgYWx0ZXJuYXRlID0gdGhpcy5fc2Vlayh0aGlzLnByZXYuYXhpcywgdGhpcy5fc2NvcGVyZXN1bHRzLCAxKTtcclxuICAgIGlmICghYWx0ZXJuYXRlKVxyXG4gICAgICBhbHRlcm5hdGUgPSB0aGlzLl9zZWVrKHRoaXMucHJldi5heGlzLCB0aGlzLl9yZXN1bHRzLCAxKTtcclxuICAgIGlmIChhbHRlcm5hdGUpIHtcclxuICAgICAgdGhpcy5fY2FsY3VsYXRlKGFsdGVybmF0ZSk7XHJcbiAgICAgIGFsdGVybmF0ZS5hbmltYXRpb24ucGFyYW1zLnN0YXJ0V2lkdGggPSB0aGlzLnByZXYucGVyY2VudDtcclxuICAgICAgdGhpcy5wcmV2ID0gYWx0ZXJuYXRlO1xyXG4gICAgICB0aGlzLmJhY2sgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5mb3J3YXJkID0gZmFsc2U7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3BhcmFsbGVsKGRpcmVjdGlvbjogMSB8IC0xLCBwYXJlbnRLZXk6IEF4aXNWYWx1ZSkge1xyXG4gICAgaWYgKCF0aGlzLl9wYXJlbnRBeGlzKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjb25zdCBwYXJlbnRLZXlzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fZHMua2V5cyh0aGlzLl9wYXJlbnRBeGlzLmRhdGFUeXBlKSk7XHJcbiAgICBjb25zdFxyXG4gICAgICBrZXlJbmRleCA9IHBhcmVudEtleXMuaW5kZXhPZigoaXNBcnJheShwYXJlbnRLZXkpID8gcGFyZW50S2V5WzBdIDogcGFyZW50S2V5KSBhcyBzdHJpbmcpLCBzY29wZSA9IHBhcmVudEtleXNba2V5SW5kZXggKyBkaXJlY3Rpb25dO1xyXG4gICAgaWYgKCFzY29wZSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH0gYXMgQXhlc01hcDtcclxuICAgIGZpbHRlcnNbdGhpcy5wYXJlbnRBeGlzXSA9IHNjb3BlO1xyXG4gICAgZGVsZXRlIGZpbHRlcnNbdGhpcy54QXhpc107XHJcbiAgICBjb25zdCByZXN1bHRzID0gdGhpcy5fc2NvcGVyZXN1bHRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnhBeGlzLCB7XHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcywgZmlsdGVycyxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVcclxuICAgIH0pKS5jYXRjaCh0aGlzLl9oYW5kbGVFcnIuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLl9zY29wZSA9IHNjb3BlO1xyXG4gICAgaWYgKCFyZXN1bHRzLnNvbWUocyA9PiBzLnBvaW50cy5sZW5ndGgpKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjb25zdCBsZXZlbDogTGV2ZWwgPSB7XHJcbiAgICAgIHNjb3BlLFxyXG4gICAgICBpbmRpY2VzOiBbXVxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBwYXJlbnRUaXRsZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2RzLmdldCh0aGlzLl9wYXJlbnRBeGlzLmRhdGFUeXBlLCBzY29wZSkpO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCByZXN1bHRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIGxldCB7IGluZGV4LCB0aXRsZSwgcG9pbnRzLCBuYW1lIH0gPSByZXN1bHRzW2pdLCBxID0gZGlyZWN0aW9uID4gMCA/IDAgOiBwb2ludHMubGVuZ3RoIC0gMSwgcG9pbnQgPSBwb2ludHNbcV07XHJcbiAgICAgIGlmIChpbmRleCkge1xyXG4gICAgICAgIGlmIChsZXZlbC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBsZXZlbC52YWx1ZSA9IDAsXHJcbiAgICAgICAgICAgIGxldmVsLnRpdGxlID0gYCR7cG9pbnQubmFtZX0gJHtwYXJlbnRUaXRsZX1gO1xyXG4gICAgICAgICAgbGV2ZWwuaW5kaWNlcy5wdXNoKHsgbmFtZTogaW5kZXgsIHRpdGxlLCB2YWx1ZTogcG9pbnQueSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkge1xyXG4gICAgICAgICAgICB3aGlsZSAocSA+IDAgJiYgcG9pbnQueCAhPT0gbGV2ZWwuYXhpcylcclxuICAgICAgICAgICAgICBwb2ludCA9IHBvaW50c1txLS1dO1xyXG4gICAgICAgICAgICBxID4gMCAmJiBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lLCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgd2hpbGUgKHEgPCBwb2ludHMubGVuZ3RoIC0gMSAmJiBwb2ludC54ICE9PSBsZXZlbC5heGlzKVxyXG4gICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRzW3ErK107XHJcbiAgICAgICAgICAgIHEgPCBwb2ludHMubGVuZ3RoIC0gMSAmJiBsZXZlbC5pbmRpY2VzLnB1c2goeyBuYW1lLCB0aXRsZSwgdmFsdWU6IHBvaW50LnkgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgbGV2ZWwuYXhpcyA9IHBvaW50LngsXHJcbiAgICAgICAgICBsZXZlbC52YWx1ZSA9IHBvaW50LnksXHJcbiAgICAgICAgICBsZXZlbC50aXRsZSA9IGAke3BvaW50Lm5hbWV9ICR7cGFyZW50VGl0bGV9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBsZXZlbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGxldmVsXHJcbiAgICogQHBhcmFtIGluZGV4XHJcbiAgICovXHJcbiAgZXhwbG9yZShsZXZlbDogTGV2ZWwsIGluZGV4Pzogc3RyaW5nKSB7XHJcbiAgICBpZiAoKCFpbmRleCAmJiBsZXZlbC52YWx1ZSA9PT0gMCkgfHxcclxuICAgICAgKGluZGV4ICYmIGxldmVsLmluZGljZXMuZmluZChpID0+IGkubmFtZSA9PT0gaW5kZXgpLnZhbHVlID09PSAwKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgYXhlcyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcbiAgICBheGVzW3RoaXMueEF4aXNdID0gbGV2ZWwuYXhpcztcclxuICAgIGlmIChsZXZlbC5zY29wZSlcclxuICAgICAgYXhlc1t0aGlzLnBhcmVudEF4aXNdID0gbGV2ZWwuc2NvcGU7XHJcbiAgICB0aGlzLm9uRXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhwbG9yZUV2ZW50IHtcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG59XHJcbmRlY2xhcmUgdHlwZSBMZXZlbCA9IHtcclxuICBpbmRpY2VzPzoge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHZhbHVlOiBudW1iZXI7XHJcbiAgfVtdLFxyXG4gIHZhbHVlOiBudW1iZXIsXHJcbiAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGF4aXM6IHN0cmluZ1xyXG4gIC8qKiBwYXJlbnQgYXhpcyAqL1xyXG4gIHNjb3BlPzogc3RyaW5nLFxyXG4gIGFuaW1hdGlvbj86IHtcclxuICAgIHZhbHVlOiBudW1iZXIsXHJcbiAgICBwYXJhbXM6IHtcclxuICAgICAgc3RhcnRXaWR0aDogbnVtYmVyXHJcbiAgICB9XHJcbiAgfTtcclxuICBjaGFpbj86IExldmVsO1xyXG4gIHBlcmNlbnQ/OiBudW1iZXI7XHJcbn07XHJcbiIsIiAgPCEtLSBsZXZlbHMgLS0+XHJcbjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2ICpuZ0lmPVwicHJldlwiIGNsYXNzPVwibGV2ZWwgcHJldi1sZXZlbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxldmVsLWhlYWRlciByb3dcIj5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xpY2xhYmxlIG1hdC1pY29uLXJ0bC1taXJyb3JcIiBbaW5saW5lXT10cnVlIChjbGljayk9XCJnb3ByZXYoKVwiICpuZ0lmPVwiYmFja1wiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICA8ZGl2IGRpdiBjbGFzcz1cIm1hdC1oMSB0aXRsZVwiPlxyXG4gICAgICAgIHt7J1ByZXZMZXZlbCd8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZvcndhcmRcIiBjbGFzcz1cImNsaWNsYWJsZSBtYXQtaWNvbi1ydGwtbWlycm9yXCIgW2lubGluZV09dHJ1ZSAoY2xpY2spPVwiZ29uZXh0KClcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsZXZlbDsgY29udGV4dDoge3VzZTogcHJldn1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiY3VycmVudFwiIGNsYXNzPVwibGV2ZWwgY3VycmVudC1sZXZlbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxldmVsLWhlYWRlciByb3dcIj5cclxuICAgICAgPGRpdiBkaXYgY2xhc3M9XCJtYXQtaDEgdGl0bGVcIj5cclxuICAgICAgICB7eydDdXJyZW50TGV2ZWwnfCB0cmFuc2xhdGUgOiBwcmltYXJ5QXhpcy50aXRsZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtaWNvbiBbYml6ZG9jVG9vbHRpcF09XCJoZWxwXCIgKm5nSWY9XCJoZWxwXCIgW2lubGluZV09XCJ0cnVlXCI+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxldmVsOyBjb250ZXh0OiB7dXNlOiBjdXJyZW50fVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJuZXh0XCIgY2xhc3M9XCJsZXZlbCBuZXh0LWxldmVsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGV2ZWwtaGVhZGVyXCI+XHJcbiAgICAgIDxkaXYgZGl2IGNsYXNzPVwibWF0LWgxIHRpdGxlXCI+XHJcbiAgICAgICAge3snTmV4dExldmVsJ3wgdHJhbnNsYXRlfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsZXZlbDsgY29udGV4dDoge3VzZTogbmV4dH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gbGV2ZWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbGV2ZWwgbGV0LXVzZT1cInVzZVwiIGxldC1oZWxwPVwiaGVscFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8aDIgY2xhc3M9XCJtYXQtaDFcIiBbY2xhc3MuY2xpY2xhYmxlXT1cInVzZS52YWx1ZSAhPT0gMFwiIChjbGljayk9XCJleHBsb3JlKHVzZSlcIj57e3VzZS50aXRsZX19PC9oMj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGgzIGNsYXNzPVwibWF0LWgxXCIgW2NsYXNzLmNsaWNsYWJsZV09XCJ1c2UudmFsdWUgIT09IDBcIiAoY2xpY2spPVwiZXhwbG9yZSh1c2UpXCI+e3t1c2UudmFsdWUgfCBjdXJyZW5jeSA6IGN1cnJlbmN5Q29kZSA6ICdzeW1ib2wnIDogZGlnaXRzSW5mb319PC9oMz5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidXNlLmNoYWluICYmIHVzZS52YWx1ZSAhPT0gdXNlLmNoYWluLnZhbHVlXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2UudmFsdWUgIT09IDAgJiYgdXNlLmNoYWluLnZhbHVlICE9PSAwXCI+e3tNYXRoLnJvdW5kKHVzZS52YWx1ZSAvIHVzZS5jaGFpbi52YWx1ZSAqIDEwMCkgfX0lPC9zcGFuPlxyXG4gICAgICAgIDxtYXQtaWNvbj57e3VzZS52YWx1ZSA+IHVzZS5jaGFpbi52YWx1ZSA/ICd0cmVuZGluZ191cCc6J3RyZW5kaW5nX2Rvd24nIH19PC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGkgb2YgdXNlLmluZGljZXNcIiBjbGFzcz1cImluZGV4XCI+XHJcbiAgICAgIDxoNCBjbGFzcz1cIm1hdC1oMyB0aXRsZVwiPnt7aS50aXRsZX19PC9oND5cclxuICAgICAgPGg1IGNsYXNzPVwibWF0LWgzXCIgW2NsYXNzLmNsaWNsYWJsZV09XCJpLnZhbHVlICE9PSAwXCIgKGNsaWNrKT1cImV4cGxvcmUodXNlLCBpLm5hbWUpXCI+e3tpLnZhbHVlIHwgY3VycmVuY3kgOiBjdXJyZW5jeUNvZGUgOiAnc3ltYm9sJyA6IGRpZ2l0c0luZm99fTwvaDU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYmFyXCIgKm5nSWY9XCJ1c2UuaW5kaWNlcy5sZW5ndGhcIiBbY2xhc3MuYXZhaWxhYmxlXT1cInVzZS5wZXJjZW50IDwgMTAwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIiBbc3R5bGUuZmxleEJhc2lzXT1cIk1hdGgucm91bmQodXNlLnBlcmNlbnQgPCAxMDAgP1xyXG4gICAgICAgICAgICAxMDAgLSB1c2UucGVyY2VudCA6XHJcbiAgICAgICAgICAgIDEwMCAvIHVzZS5wZXJjZW50ICogMTAwKSArICclJ1wiXHJcbiAgICAgICAgIFtAYmFyXT1cInVzZS5hbmltYXRpb25cIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvd1wiICpuZ0lmPVwidXNlLnBlcmNlbnQgPiAwXCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
@@ -65,10 +65,10 @@ export class ViewBase {
|
|
65
65
|
evt && evt.preventDefault();
|
66
66
|
}
|
67
67
|
}
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
69
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ViewBase, deps: [{ token: i1.SessionService }, { token: i2.RouterImpl }, { token: i3.CubeService }, { token: i4.GuideService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
69
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: ViewBase, ngImport: i0 }); }
|
70
70
|
}
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ViewBase, decorators: [{
|
72
72
|
type: Directive
|
73
|
-
}], ctorParameters:
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
73
|
+
}], ctorParameters: () => [{ type: i1.SessionService }, { type: i2.RouterImpl }, { type: i3.CubeService }, { type: i4.GuideService }] });
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3ZpZXctYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFTMUMsTUFBTSxPQUFnQixRQUFRO0lBSzVCLElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsS0FBVztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxLQUFlO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN0RSxDQUFDLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUtELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQWM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQXNCLFFBQXdCLEVBQ2xDLE9BQW1CLEVBQ25CLFFBQXFCLEVBQ3ZCLE1BQW9CO1FBSFIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWM7UUF2QnRCLFVBQUssR0FBWSxFQUFFLENBQUM7SUF3QjVCLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBZ0I7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUc7WUFDWCxHQUFHLE9BQU8sQ0FBQyxJQUFJO1NBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxRQUFRLENBQUMsV0FBVztRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsR0FBVztRQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs4R0F0RW1CLFFBQVE7a0dBQVIsUUFBUTs7MkZBQVIsUUFBUTtrQkFEN0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlLCBDdWJlVmlldyB9IGZyb20gJy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIFBhdHRlcm4gfSBmcm9tICcuL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHdWlkZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2d1aWRlL2d1aWRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdWJlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY3ViZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlckltcGwgfSBmcm9tICcuLi9jb3JlL3JvdXRlcic7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZpZXdCYXNlIHtcclxuICBhYnN0cmFjdCB2aWV3UGFuZTogQ3ViZVZpZXdDb21wb25lbnQ7XHJcbiAgcGF0dGVybnM6IFBhdHRlcm5bXTtcclxuICBwYXR0ZXJuOiBQYXR0ZXJuO1xyXG4gIHByaXZhdGUgX2N1YmU6IEN1YmU7XHJcbiAgcHVibGljIGdldCBjdWJlKCk6IEN1YmUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1YmU7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgY3ViZSh2YWx1ZTogQ3ViZSkge1xyXG4gICAgdGhpcy5fY3ViZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc2VydmljZS5wYXR0ZXJucyh2YWx1ZS5uYW1lKS5zdWJzY3JpYmUocCA9PiB0aGlzLnBhdHRlcm5zID0gcCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZpZXc6IEN1YmVWaWV3O1xyXG4gIHB1YmxpYyBnZXQgdmlldygpOiBDdWJlVmlldyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlldztcclxuICB9XHJcbiAgcHVibGljIHNldCB2aWV3KHZhbHVlOiBDdWJlVmlldykge1xyXG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xyXG4gICAgdGhpcy5leGNsdWRlID0gdmFsdWUuc2VyaWVzID8gWy4uLnZhbHVlLnhBeGlzLCAuLi52YWx1ZS5zZXJpZXNdIDogWy4uLnZhbHVlLnhBeGlzXTtcclxuICAgIHRoaXMuYW55QXhlcyA9IHRoaXMuY3ViZS5heGVzLnNvbWUoYSA9PiB0aGlzLmV4Y2x1ZGUuaW5kZXhPZihhLm5hbWUpIDwgMCAmJlxyXG4gICAgICBhLnNlbGVjdGlvbk1vZGUgIT09ICdOb25lJyk7XHJcbiAgfVxyXG4gIGV4Y2x1ZGU6IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX2F4ZXM6IEF4ZXNNYXAgPSB7fTtcclxuICBwdWJsaWMgZ2V0IGF4ZXMoKTogQXhlc01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXhlcztcclxuICB9XHJcbiAgcHVibGljIHNldCBheGVzKHZhbHVlOiBBeGVzTWFwKSB7XHJcbiAgICB0aGlzLl9heGVzID0gdmFsdWU7XHJcbiAgICB0aGlzLmFueUZpbHRlcnMgPSBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID4gMDtcclxuICB9XHJcbiAgYW55QXhlczogYm9vbGVhbjtcclxuICBhbnlGaWx0ZXJzOiBib29sZWFuO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfb3JpZ2luYWxBeGVzOiBBeGVzTWFwO1xyXG4gIHB1YmxpYyBnZXQgb3JpZ2luYWxBeGVzKCk6IEF4ZXNNYXAge1xyXG4gICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsQXhlcztcclxuICB9XHJcbiAgcHVibGljIHNldCBvcmlnaW5hbEF4ZXModmFsdWU6IEF4ZXNNYXApIHtcclxuICAgIHRoaXMuX29yaWdpbmFsQXhlcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5heGVzID0geyAuLi52YWx1ZSB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJvdGVjdGVkIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2d1aWRlOiBHdWlkZVNlcnZpY2UpIHtcclxuICB9XHJcbiAgcGF0dGVybkNoYW5nZShwYXR0ZXJuOiBQYXR0ZXJuKSB7XHJcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xyXG4gICAgY29uc3QgYXhlcyA9IHtcclxuICAgICAgLi4ucGF0dGVybi5heGVzXHJcbiAgICB9O1xyXG4gICAgdGhpcy5fc2VydmljZS5iYXNlKHRoaXMuY3ViZS5uYW1lLCBheGVzLCB0aGlzLm9yaWdpbmFsQXhlcyk7XHJcbiAgICB0aGlzLm5hdmlnYXRlKGF4ZXMpO1xyXG4gIH1cclxuICBjbGVhckZpbHRlcigpIHtcclxuICAgIHRoaXMubmF2aWdhdGUoe30pO1xyXG4gICAgdGhpcy5wYXR0ZXJuID0gbnVsbDtcclxuICB9XHJcbiAgbmF2aWdhdGUocXVlcnlQYXJhbXMpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICBxdWVyeVBhcmFtc1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGd1aWRlKGV2dD86IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy52aWV3Lmd1aWRlKSB7XHJcbiAgICAgIHRoaXMuX2d1aWRlLnN0YXJ0KHRoaXMudmlldy5ndWlkZSk7XHJcbiAgICAgIGV2dCAmJiBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|