@eo-sdk/client 10.0.0-beta.2 → 10.0.0-beta.3

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.
Files changed (168) hide show
  1. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +7 -3
  2. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  3. package/app/eo-framework/app-shell/app-shell.module.d.ts +2 -1
  4. package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
  5. package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts.map +1 -1
  6. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +3 -1
  7. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
  8. package/app/eo-framework/form-elements/date/date.component.d.ts +2 -0
  9. package/app/eo-framework/form-elements/date/date.component.d.ts.map +1 -1
  10. package/app/eo-framework/form-elements/date/year-range/year-range.directive.d.ts.map +1 -0
  11. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +3 -1
  12. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  13. package/app/eo-framework/form-elements/form-elements.module.d.ts +37 -39
  14. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  15. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
  16. package/app/eo-framework/form-elements/index.d.ts +1 -3
  17. package/app/eo-framework/form-elements/index.d.ts.map +1 -1
  18. package/app/eo-framework/form-elements/reference/reference.component.d.ts.map +1 -1
  19. package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts +3 -2
  20. package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts.map +1 -1
  21. package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts +1 -5
  22. package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts.map +1 -1
  23. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +4 -7
  24. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
  25. package/app/eo-framework/grid/grid.module.d.ts +4 -3
  26. package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
  27. package/app/eo-framework/inbox-details/inbox-details.component.d.ts +2 -7
  28. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  29. package/app/eo-framework/index.d.ts +0 -1
  30. package/app/eo-framework/index.d.ts.map +1 -1
  31. package/app/eo-framework/object-details/object-details.component.d.ts +2 -7
  32. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  33. package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
  34. package/app/eo-framework/object-form/object-form/object-form.component.d.ts +6 -59
  35. package/app/eo-framework/object-form/object-form/object-form.component.d.ts.map +1 -1
  36. package/app/eo-framework/object-form/object-form-helper.service.d.ts +86 -2
  37. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  38. package/app/eo-framework/object-state-details/object-state-details.component.d.ts +3 -11
  39. package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
  40. package/app/eo-framework/plugins/plugin.component.d.ts +0 -2
  41. package/app/eo-framework/plugins/plugin.component.d.ts.map +1 -1
  42. package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
  43. package/app/eo-framework/process/details/process-details.component.d.ts +2 -7
  44. package/app/eo-framework/process/details/process-details.component.d.ts.map +1 -1
  45. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +2 -7
  46. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts.map +1 -1
  47. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +2 -1
  48. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  49. package/assets/_default/i18n/de.json +2 -0
  50. package/assets/_default/i18n/en.json +4 -2
  51. package/esm2020/app/eo-client/about-state/about-state.component.mjs +5 -5
  52. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +3 -3
  53. package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +1 -1
  54. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +3 -3
  55. package/esm2020/app/eo-client/login/login.component.mjs +1 -1
  56. package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +1 -1
  57. package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +3 -3
  58. package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +1 -1
  59. package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +3 -3
  60. package/esm2020/app/eo-client/settings/settings.component.mjs +3 -3
  61. package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +1 -1
  62. package/esm2020/app/eo-client/version-state/version-state.component.mjs +1 -1
  63. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +3 -3
  64. package/esm2020/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +1 -1
  65. package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +1 -1
  66. package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +1 -1
  67. package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +2 -2
  68. package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +1 -1
  69. package/esm2020/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +1 -1
  70. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +32 -20
  71. package/esm2020/app/eo-framework/app-shell/app-shell.module.mjs +8 -4
  72. package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +1 -4
  73. package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +9 -3
  74. package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +9 -24
  75. package/esm2020/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +44 -0
  76. package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +2 -2
  77. package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +9 -3
  78. package/esm2020/app/eo-framework/form-elements/form-elements.module.mjs +3 -13
  79. package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +7 -7
  80. package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +2 -2
  81. package/esm2020/app/eo-framework/form-elements/index.mjs +2 -4
  82. package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +1 -1
  83. package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
  84. package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +5 -5
  85. package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +7 -2
  86. package/esm2020/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +9 -17
  87. package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +2 -2
  88. package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +9 -27
  89. package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +2 -2
  90. package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +2 -2
  91. package/esm2020/app/eo-framework/grid/grid.component.mjs +2 -2
  92. package/esm2020/app/eo-framework/grid/grid.module.mjs +5 -8
  93. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +8 -15
  94. package/esm2020/app/eo-framework/index.mjs +1 -2
  95. package/esm2020/app/eo-framework/media/media.component.mjs +2 -2
  96. package/esm2020/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +1 -1
  97. package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +1 -1
  98. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +10 -15
  99. package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +1 -2
  100. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +4 -4
  101. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +1 -1
  102. package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +18 -494
  103. package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +1 -1
  104. package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +506 -7
  105. package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +19 -27
  106. package/esm2020/app/eo-framework/plugins/plugin.component.mjs +5 -7
  107. package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +3 -4
  108. package/esm2020/app/eo-framework/process/details/process-details.component.mjs +10 -16
  109. package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +7 -16
  110. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +1 -1
  111. package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +6 -3
  112. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +3 -3
  113. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +6 -1
  114. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +5 -0
  115. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  116. package/fesm2015/eo-sdk-client.mjs +3736 -4528
  117. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  118. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +5 -0
  119. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  120. package/fesm2020/eo-sdk-client.mjs +3739 -4531
  121. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  122. package/package.json +4 -4
  123. package/projects/eo-sdk/core/lib/util/utils.d.ts +1 -0
  124. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +1 -1
  125. package/scss/_eo-variables.scss +68 -40
  126. package/scss/_form.scss +6 -0
  127. package/scss/_main.scss +1 -1
  128. package/scss/_theme-dark.scss +22 -0
  129. package/scss/_yuuvis-components.scss +12 -2
  130. package/styles.css +51 -24
  131. package/styles.scss +5 -10
  132. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.d.ts +0 -67
  133. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.d.ts.map +0 -1
  134. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.interface.d.ts +0 -21
  135. package/app/eo-framework/form-elements/datetime/datepicker/datepicker.interface.d.ts.map +0 -1
  136. package/app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service.d.ts +0 -33
  137. package/app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service.d.ts.map +0 -1
  138. package/app/eo-framework/form-elements/datetime/datetime.component.d.ts +0 -51
  139. package/app/eo-framework/form-elements/datetime/datetime.component.d.ts.map +0 -1
  140. package/app/eo-framework/form-elements/datetime/year-range/year-range.directive.d.ts.map +0 -1
  141. package/app/eo-framework/tab-container/index.d.ts +0 -6
  142. package/app/eo-framework/tab-container/index.d.ts.map +0 -1
  143. package/app/eo-framework/tab-container/tab-container.component.d.ts +0 -62
  144. package/app/eo-framework/tab-container/tab-container.component.d.ts.map +0 -1
  145. package/app/eo-framework/tab-container/tab-container.module.d.ts +0 -18
  146. package/app/eo-framework/tab-container/tab-container.module.d.ts.map +0 -1
  147. package/app/eo-framework/tab-container/tab-panel/tab-panel.component.d.ts +0 -13
  148. package/app/eo-framework/tab-container/tab-panel/tab-panel.component.d.ts.map +0 -1
  149. package/app/eo-framework/tab-container/tab-view/tab-view.component.d.ts +0 -19
  150. package/app/eo-framework/tab-container/tab-view/tab-view.component.d.ts.map +0 -1
  151. package/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.d.ts +0 -11
  152. package/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.d.ts.map +0 -1
  153. package/esm2020/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.mjs +0 -239
  154. package/esm2020/app/eo-framework/form-elements/datetime/datepicker/datepicker.interface.mjs +0 -2
  155. package/esm2020/app/eo-framework/form-elements/datetime/datepicker/service/datepicker.service.mjs +0 -109
  156. package/esm2020/app/eo-framework/form-elements/datetime/datetime.component.mjs +0 -142
  157. package/esm2020/app/eo-framework/form-elements/datetime/year-range/year-range.directive.mjs +0 -44
  158. package/esm2020/app/eo-framework/tab-container/index.mjs +0 -6
  159. package/esm2020/app/eo-framework/tab-container/tab-container.component.mjs +0 -184
  160. package/esm2020/app/eo-framework/tab-container/tab-container.module.mjs +0 -47
  161. package/esm2020/app/eo-framework/tab-container/tab-panel/tab-panel.component.mjs +0 -26
  162. package/esm2020/app/eo-framework/tab-container/tab-view/tab-view.component.mjs +0 -61
  163. package/esm2020/app/eo-framework/tab-container/tab-view-nav/tab-view-nav.component.mjs +0 -25
  164. package/scss/_eo-inverted.scss +0 -73
  165. package/scss/_eo-pink-theme.scss +0 -73
  166. package/scss/_eo-theme.scss +0 -81
  167. package/scss/_eo-vars.scss +0 -3
  168. /package/app/eo-framework/form-elements/{datetime → date}/year-range/year-range.directive.d.ts +0 -0
@@ -250,10 +250,10 @@ export class MediaComponent extends UnsubscribeOnDestroy {
250
250
  MediaComponent.VIDEO_VIEWER = 'viewer/view/api/video/?path=${path}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}';
251
251
  MediaComponent.PDF_VIEWER = 'viewer/view/api/pdf/web/viewer.html?file=&path=${path}&pathPdf=${pathPdf}&mimeType=${mimeType}&fileExtension=${fileExtension}&lang=${lang}&theme=${theme}&css=%23toolbarViewerRight%20%23print%7Bdisplay%3Ablock!important%3B%7D';
252
252
  MediaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MediaComponent, deps: [{ token: i1.TranslateService }, { token: i1.DmsService }, { token: i0.Renderer2 }, { token: i1.SystemService }, { token: i1.Config }, { token: i2.PluginsService }], target: i0.ɵɵFactoryTarget.Component });
253
- MediaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: MediaComponent, selector: "eo-media", inputs: { undockDisabled: "undockDisabled", enableCloseBtn: "enableCloseBtn", useVersion: "useVersion", setAttachments: ["attachments", "setAttachments"], setSearchTerm: ["searchTerm", "setSearchTerm"], previewUri: "previewUri", previewFile: "previewFile", dmsObject: "dmsObject" }, host: { properties: { "class.open": "this.open" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout [triggerPosition]=\"popoutTriggerPosition\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:300}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .button.undock{position:absolute;opacity:.2;right:var(--app-pane-padding);bottom:var(--app-pane-padding);background-color:rgba(var(--color-primary-rgb),.6)}:host .button.undock:hover{opacity:.5}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / 2)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.OutsideClickDirective, selector: "[eoOutsideClick]", outputs: ["eoOutsideClick"] }, { kind: "component", type: i6.PopoutComponent, selector: "yvc-popout", inputs: ["triggerPosition", "triggerTooltip", "windowTitle", "disabled"], outputs: ["popOut", "popIn"] }] });
253
+ MediaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: MediaComponent, selector: "eo-media", inputs: { undockDisabled: "undockDisabled", enableCloseBtn: "enableCloseBtn", useVersion: "useVersion", setAttachments: ["attachments", "setAttachments"], setSearchTerm: ["searchTerm", "setSearchTerm"], previewUri: "previewUri", previewFile: "previewFile", dmsObject: "dmsObject" }, host: { properties: { "class.open": "this.open" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout [triggerPosition]=\"popoutTriggerPosition\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:100}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / 2)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.OutsideClickDirective, selector: "[eoOutsideClick]", outputs: ["eoOutsideClick"] }, { kind: "component", type: i6.PopoutComponent, selector: "yvc-popout", inputs: ["triggerPosition", "triggerTooltip", "windowTitle", "disabled"], outputs: ["popOut", "popIn"] }] });
254
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MediaComponent, decorators: [{
255
255
  type: Component,
256
- args: [{ selector: 'eo-media', providers: [ContentPreviewService], template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout [triggerPosition]=\"popoutTriggerPosition\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:300}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .button.undock{position:absolute;opacity:.2;right:var(--app-pane-padding);bottom:var(--app-pane-padding);background-color:rgba(var(--color-primary-rgb),.6)}:host .button.undock:hover{opacity:.5}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / 2)}\n"] }]
256
+ args: [{ selector: 'eo-media', providers: [ContentPreviewService], template: "<div [hidden]=\"!open\">\n <!-- attachments overlay -->\n <div class=\"attachments\" *ngIf=\"attachments?.length\"\n [ngClass]=\"{notmain: latestUri !== previewUri && !attachmentsShown, active: attachmentsShown}\"\n (eoOutsideClick)=\"attachmentsShown = false\">\n <div class=\"attachments-list\" *ngIf=\"attachmentsShown\">\n <div class=\"attachment main\" (click)=\"selectAttachment(null)\" [ngClass]=\"{current: latestUri === previewUri}\">{{dmsObjectTitle}}</div>\n <div class=\"attachment\" *ngFor=\"let a of attachments\" (click)=\"selectAttachment(a)\" [ngClass]=\"{current: latestUri === a.previewUri}\">\n {{a.name}}\n </div>\n </div>\n\n <eo-icon class=\"button\" [badge]=\"attachments?.length\" (click)=\"attachmentsShown = !attachmentsShown\"\n [iconSrc]=\"attachmentsShown ? 'assets/_default/svg/ic_clear.svg' : 'assets/_default/svg/ic_attachment.svg'\"></eo-icon>\n </div>\n\n <yvc-popout [triggerPosition]=\"popoutTriggerPosition\" [disabled]=\"undockDisabled\">\n\n <div class=\"preview-container\" [style.overflow]=\"'hidden'\">\n <iframe [hidden]=\"isUndocked || loading\" #iframe height=\"100%\" width=\"100%\" frameborder=\"0\"></iframe>\n <div class=\"slide\" *ngIf=\"isUndocked\">\n <eo-icon *ngIf=\"mediaType\" [objectType]=\"mediaType\"></eo-icon>\n </div>\n </div>\n </yvc-popout>\n</div>\n\n<div [hidden]=\"open\" class=\"empty-container\">\n <eo-icon class=\"nofile\" [iconSrc]=\"'assets/_default/svg/ic_no-file.svg'\"></eo-icon>\n</div>\n", styles: [":host>div{height:100%}:host ::ng-deep .popoutWrapper{height:100%}:host ::ng-deep .popoutWrapper button.trigger{z-index:100}:host .empty-container{display:flex;justify-content:center;align-items:center;height:100%}:host .empty-container .nofile{width:128px;height:128px;opacity:.09}:host .preview-container{position:absolute;inset:0;overflow:hidden}:host .preview-container .slide{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;height:100%;align-items:center;justify-content:center}:host .preview-container .slide .large-content{position:absolute;top:0;cursor:pointer;display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;justify-content:center;width:100%;padding:var(--app-pane-padding);color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.5)}:host .preview-container .slide .large-content.not-supported,:host .preview-container .slide .large-content:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .preview-container .slide .large-content.not-supported{cursor:inherit}:host .preview-container .slide img{padding:var(--app-pane-padding);width:100%}:host .preview-container .slide eo-icon{width:128px;height:128px;opacity:.2}:host .attachments{position:absolute;z-index:5;color:var(--color-white);background-color:rgba(var(--color-primary-rgb),.6);right:calc(var(--app-pane-padding) / 2);bottom:calc(var(--app-pane-padding) * 3);display:flex;flex-flow:row;align-items:flex-end;border-radius:2px;max-width:calc(100% - 16px)}:host .attachments:hover{background-color:rgba(var(--color-primary-rgb),.9)}:host .attachments eo-icon{flex:0 0 auto;margin:calc(var(--app-pane-padding) / 2)}:host .attachments .attachments-list{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;overflow:auto;max-height:150px;padding:calc(var(--app-pane-padding) / 2);flex-flow:wrap}:host .attachments .attachments-list .attachment{border-radius:4px;background-color:rgba(var(--color-white-rgb),.1);padding:calc(var(--app-pane-padding) / 4);margin:calc(var(--app-pane-padding) / 8);cursor:pointer;border:1px solid rgba(var(--color-white-rgb),0);transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .attachments .attachments-list .attachment:hover{border-color:rgba(var(--color-white-rgb),.5)}:host .attachments .attachments-list .attachment.current{background-color:var(--color-accent)}:host .attachments .attachments-list .attachment.main{background-color:var(--color-primary);order:100;flex:1 1 100%}:host .attachments .attachments-list .attachment:not(.main){font-style:italic}:host .attachments.notmain{background-color:var(--color-accent)}:host .attachments.active{background-color:rgba(var(--color-primary-rgb),.9);align-items:center;bottom:calc(var(--app-pane-padding) / 2)}\n"] }]
257
257
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i1.DmsService }, { type: i0.Renderer2 }, { type: i1.SystemService }, { type: i1.Config }, { type: i2.PluginsService }]; }, propDecorators: { undockDisabled: [{
258
258
  type: Input
259
259
  }], enableCloseBtn: [{
@@ -40,7 +40,7 @@ export class EditIconComponent {
40
40
  }
41
41
  }
42
42
  EditIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditIconComponent, deps: [{ token: i1.UserService }, { token: i2.AgentService }], target: i0.ɵɵFactoryTarget.Component });
43
- EditIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: EditIconComponent, selector: "eo-edit-icon", inputs: { item: "item" }, ngImport: i0, template: "<eo-icon class=\"button favorite\"\n [iconTitle]=\"('eo.action.menu.edit.document.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"agentAlwayslock === 'ask' && !item.lock ? toggle($event) : editOriginalContent()\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.action.menu.edit.document.label' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\">\n\n <eo-open-document *ngIf=\"display\" [selection]=\"[item]\" (finished)=\"fetchAgentAlwayslock(); display = false\" (canceled)=\"display = false\"></eo-open-document>\n</eo-dialog>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i6.OpenDocumentComponent, selector: "eo-open-document", inputs: ["selection"], outputs: ["finished", "canceled"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
43
+ EditIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: EditIconComponent, selector: "eo-edit-icon", inputs: { item: "item" }, ngImport: i0, template: "<eo-icon class=\"button favorite\"\n [iconTitle]=\"('eo.action.menu.edit.document.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"agentAlwayslock === 'ask' && !item.lock ? toggle($event) : editOriginalContent()\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.action.menu.edit.document.label' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\">\n\n <eo-open-document *ngIf=\"display\" [selection]=\"[item]\" (finished)=\"fetchAgentAlwayslock(); display = false\" (canceled)=\"display = false\"></eo-open-document>\n</eo-dialog>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i6.OpenDocumentComponent, selector: "eo-open-document", inputs: ["selection"], outputs: ["finished", "canceled"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditIconComponent, decorators: [{
45
45
  type: Component,
46
46
  args: [{ selector: 'eo-edit-icon', template: "<eo-icon class=\"button favorite\"\n [iconTitle]=\"('eo.action.menu.edit.document.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"agentAlwayslock === 'ask' && !item.lock ? toggle($event) : editOriginalContent()\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.action.menu.edit.document.label' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\">\n\n <eo-open-document *ngIf=\"display\" [selection]=\"[item]\" (finished)=\"fetchAgentAlwayslock(); display = false\" (canceled)=\"display = false\"></eo-open-document>\n</eo-dialog>\n" }]
@@ -86,7 +86,7 @@ export class FavoriteIconComponent extends UnsubscribeOnDestroy {
86
86
  }
87
87
  }
88
88
  FavoriteIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FavoriteIconComponent, deps: [{ token: i1.UserService }, { token: i1.EventService }, { token: i1.NotificationsService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
89
- FavoriteIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FavoriteIconComponent, selector: "eo-favorite-icon", inputs: { item: "item" }, viewQueries: [{ propertyName: "favNameInputElement", first: true, predicate: ["favName"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.favorite.icon.dialog.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:white!important}::ng-deep .favorite-form__dialog .eo-dialog-content{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i7.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
89
+ FavoriteIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FavoriteIconComponent, selector: "eo-favorite-icon", inputs: { item: "item" }, viewQueries: [{ propertyName: "favNameInputElement", first: true, predicate: ["favName"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.favorite.icon.dialog.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:white!important}::ng-deep .favorite-form__dialog .eo-dialog-content{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i7.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
90
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FavoriteIconComponent, decorators: [{
91
91
  type: Component,
92
92
  args: [{ selector: 'eo-favorite-icon', template: "<eo-icon class=\"button favorite\"\n [ngClass]=\"{active: item.isFavorite}\"\n [iconTitle]=\"tooltip\"\n [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\n (click)=\"toggle($event)\">\n</eo-icon>\n\n<eo-dialog\n [title]=\"('eo.favorite.icon.dialog.title' | translate)\"\n [(visible)]=\"display\"\n [minWidth]=\"400\"\n [styleClass]=\"'favorite-form__dialog'\">\n\n <form name=\"favoriteForm\" (ngSubmit)=\"save()\">\n <eo-form-input [label]=\" 'eo.favorite.icon.dialog.input.label' | translate\">\n <input [(ngModel)]=\"value\" maxlength=\"250\" [ngModelOptions]=\"{standalone: true}\" #favName />\n </eo-form-input>\n <div class=\"action-buttons favorite-form__dialog--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"toggle($event, true)\" translate>eo.favorite.icon.dialog.cancel</button>\n <button type=\"submit\" [disabled]=\"!value\" class=\"button primary\" translate>eo.favorite.icon.dialog.save</button>\n </div>\n </form>\n</eo-dialog>\n", styles: [":host eo-icon.active{color:var(--color-favorite)}::ng-deep .favorite-form__dialog{padding:8px;min-height:unset!important}::ng-deep .favorite-form__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:white!important}::ng-deep .favorite-form__dialog .eo-dialog-content{overflow:hidden}\n"] }]
@@ -1,13 +1,11 @@
1
- import { Component, ContentChildren, EventEmitter, HostBinding, Input, Output, QueryList, ViewChild, } from '@angular/core';
1
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { EnaioEvent, SubscriptionMode, UploadTarget, Utils, } from '@eo-sdk/core';
3
3
  import { of } from 'rxjs';
4
4
  import { map, takeUntil } from 'rxjs/operators';
5
5
  import { EmptyStateService } from '../../eo-framework-core/empty-state/empty-state.service';
6
6
  import { LocaleDatePipe } from '../../eo-framework-core/pipes/locale-date.pipe';
7
7
  import { ContentPreviewService } from '../media/content-preview.service';
8
- import { TabPluginComponent } from '../plugins/plugin.component';
9
8
  import { Shortcut } from '../shortcuts/shortcut.interface';
10
- import { TabPanelComponent } from '../tab-container/tab-panel/tab-panel.component';
11
9
  import { UnsubscribeOnDestroy } from '../util/unsubscribe/unsubscribe.component';
12
10
  import * as i0 from "@angular/core";
13
11
  import * as i1 from "@angular/router";
@@ -118,7 +116,10 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
118
116
  this.enableDiff = true;
119
117
  this.enableSync = true;
120
118
  this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
121
- this.externalPanels = new QueryList();
119
+ // externalPanels = new QueryList<TabPanelComponent>();
120
+ // @ContentChildren(TabPanelComponent) tabPanels: QueryList<TabPanelComponent>;
121
+ // @ContentChildren(TabPluginComponent)
122
+ // tabPlugins: QueryList<TabPluginComponent>;
122
123
  this.preventClickThrough = false;
123
124
  // shortcut actions
124
125
  this.shortcuts = {
@@ -342,16 +343,16 @@ export class ObjectDetailsComponent extends UnsubscribeOnDestroy {
342
343
  });
343
344
  }
344
345
  ngAfterViewInit() {
345
- let panels = this.tabPanels.toArray();
346
- this.tabPlugins.forEach(p => panels = panels.concat(p.tabPanels.toArray()));
347
- this.externalPanels.reset(panels);
346
+ // let panels = this.tabPanels.toArray();
347
+ // this.tabPlugins.forEach(p => panels = panels.concat(p.tabPanels.toArray()));
348
+ // this.externalPanels.reset(panels);
348
349
  }
349
350
  ngOnDestroy() {
350
351
  this.uploadRegistry.unregister(this.uploadTarget.id);
351
352
  }
352
353
  }
353
354
  ObjectDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.SystemService }, { token: i3.EmptyStateService }, { token: i4.AgentService }, { token: i2.BackendService }, { token: i2.DmsService }, { token: i5.SelectionService }, { token: i6.ActionService }, { token: i2.CapabilitiesService }, { token: i2.UploadRegistryService }, { token: i2.EventService }, { token: i2.Config }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
354
- ObjectDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], queries: [{ propertyName: "tabPanels", predicate: TabPanelComponent }, { propertyName: "tabPlugins", predicate: TabPluginComponent }], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\" [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\" [ngClass]=\"{'enabled': enableSync}\"\n [iconSrc]=\"'assets/_default/svg/ic_link.svg'\" [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\"\n (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n \n \n \n \n \n \n \n <!-- <yvc-split-view [layoutSettingsID]=\"'yvc.spltview.test.one'\">\n <ng-template yvcSplitArea [size]=\"50\">\n <yvc-tabs #firstTabContainer (tabSplit)=\"onTabSplit($event)\"\n [tabSplitEnabled]=\"firstTabContainer.tabs.length > 1\" [cacheViews]=\"cacheViews\">\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\" [visible]=\"split\">\n <yvc-tabs #splitTabContainer (tabRemove)=\"onTabRemove($event)\"></yvc-tabs>\n </ng-template>\n </yvc-split-view> -->\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i21.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i22.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i23.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
355
+ ObjectDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { reference: "reference", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"], applySelection: "applySelection", parseDmsParams: "parseDmsParams" }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\" [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\" [ngClass]=\"{'enabled': enableSync}\"\n [iconSrc]=\"'assets/_default/svg/ic_link.svg'\" [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\"\n (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n \n \n \n \n \n \n \n <!-- <yvc-split-view [layoutSettingsID]=\"'yvc.spltview.test.one'\">\n <ng-template yvcSplitArea [size]=\"50\">\n <yvc-tabs #firstTabContainer (tabSplit)=\"onTabSplit($event)\"\n [tabSplitEnabled]=\"firstTabContainer.tabs.length > 1\" [cacheViews]=\"cacheViews\">\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\" [visible]=\"split\">\n <yvc-tabs #splitTabContainer (tabRemove)=\"onTabRemove($event)\"></yvc-tabs>\n </ng-template>\n </yvc-split-view> -->\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["indexdata", "dmsObject", "baseparams", "enableVersions", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i21.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i22.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i23.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
355
356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
356
357
  type: Component,
357
358
  args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container *ngIf=\"!isReference; else tplHeadReference\">\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\" [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\" [ngClass]=\"{'enabled': enableSync}\"\n [iconSrc]=\"'assets/_default/svg/ic_link.svg'\" [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\"\n (click)=\"enableSync = !enableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"!enableCompare && item.content\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\" [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\" *ngIf=\"!enableCompare && !recyclebinTabs && item.content && item.rights.edit && (agentIsConnected$ | async) && !item.isFinalized\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n <ng-template #tplHeadReference>\n <a class=\"button reference primary\"\n [title]=\"('eo.object.reference.tooltip' | translate:{title:referenceTitle})\"\n [routerLink]=\"['/object', item.id]\"\n [queryParams]=\"{type: item.typeName}\">{{'eo.object.reference.open'|translate}}</a>\n </ng-template>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"cacheLayout\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-split-tabs>\n \n \n \n \n \n \n \n <!-- <yvc-split-view [layoutSettingsID]=\"'yvc.spltview.test.one'\">\n <ng-template yvcSplitArea [size]=\"50\">\n <yvc-tabs #firstTabContainer (tabSplit)=\"onTabSplit($event)\"\n [tabSplitEnabled]=\"firstTabContainer.tabs.length > 1\" [cacheViews]=\"cacheViews\">\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare || isReference\"></eo-object-form-edit>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\"\n [searchTerm]=\"searchTerm\" #viewer></eo-media>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n </yvc-tabs>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\" [visible]=\"split\">\n <yvc-tabs #splitTabContainer (tabRemove)=\"onTabRemove($event)\"></yvc-tabs>\n </ng-template>\n </yvc-split-view> -->\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;-moz-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .eo-header-status-icons>eo-icon.lock.myLock{background:var(--state-orange)!important}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
@@ -389,12 +390,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
389
390
  }], dmsObject2: [{
390
391
  type: Input,
391
392
  args: ['item2']
392
- }], tabPanels: [{
393
- type: ContentChildren,
394
- args: [TabPanelComponent]
395
- }], tabPlugins: [{
396
- type: ContentChildren,
397
- args: [TabPluginComponent]
398
393
  }], applySelection: [{
399
394
  type: Input
400
395
  }], parseDmsParams: [{
@@ -405,4 +400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
405
400
  type: HostBinding,
406
401
  args: ['attr.data-type']
407
402
  }] } });
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQVNMLFVBQVUsRUFFVixnQkFBZ0IsRUFJaEIsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFqRixNQUFN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QUNFLG1CQUFtQixhQUdsQixDQUFDLHFCQUFxQixDQUFDO3VkQUtiLE9BQU87c0JBQTNCLFNBQVM7dUJBQUMsUUFBUTtnQkFjYSxXQUFXO3NCQUExQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFFakIsU0FBUztzQkFBckIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFPRixVQUFVO3NCQURiLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBWVgsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBU1osU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBOEJULFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQVVzQixTQUFTO3NCQUE1QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFFbEMsVUFBVTtzQkFEVCxlQUFlO3VCQUFDLGtCQUFrQjtnQkFtQzFCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUU0QixRQUFRO3NCQUExQyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCYWNrZW5kU2VydmljZSxcbiAgQmFzZVBhcmFtcyxcbiAgQ2FwYWJpbGl0aWVzLFxuICBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBDb25maWcsXG4gIERtc09iamVjdCxcbiAgRG1zUGFyYW1zLFxuICBEbXNTZXJ2aWNlLFxuICBFbmFpb0V2ZW50LFxuICBFdmVudFNlcnZpY2UsXG4gIFN1YnNjcmlwdGlvbk1vZGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFVwbG9hZFJlZ2lzdHJ5U2VydmljZSxcbiAgVXBsb2FkVGFyZ2V0LFxuICBVdGlscyxcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWdlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlIH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVtcHR5U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbGVEYXRlUGlwZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29uZmlnLCBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbi1zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRQcmV2aWV3U2VydmljZSB9IGZyb20gJy4uL21lZGlhL2NvbnRlbnQtcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lZGlhQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVkaWEvbWVkaWEuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYlBsdWdpbkNvbXBvbmVudCB9IGZyb20gJy4uL3BsdWdpbnMvcGx1Z2luLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCB9IGZyb20gJy4uL3Nob3J0Y3V0cy9nbG9iYWwtc2hvcnRjdXQtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTaG9ydGN1dCB9IGZyb20gJy4uL3Nob3J0Y3V0cy9zaG9ydGN1dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi90YWItY29udGFpbmVyL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEluZGV4RGF0YSB9IGZyb20gJy4uL3VpL2luZGV4ZGF0YS1zdW1tYXJ5L2luZGV4ZGF0YS1zdW1tYXJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVbnN1YnNjcmliZU9uRGVzdHJveSB9IGZyb20gJy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tb2JqZWN0LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtDb250ZW50UHJldmlld1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdERldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCd2aWV3ZXInKSBwcmV2aWV3OiBNZWRpYUNvbXBvbmVudDtcbiAgLy8gZ2VuZXJhdGUgdW5pcXVlIGlkIHRvIHBhc3MgdG8gdXBsb2FkIHJlZ2lzdHJ5XG4gIHByaXZhdGUgdXBsb2FkVGFyZ2V0ID0gbmV3IFVwbG9hZFRhcmdldChVdGlscy51dWlkKCksIFVwbG9hZFRhcmdldC5PQkpFQ1QpO1xuICBpdGVtOiBEbXNPYmplY3Q7XG4gIGluZGV4RGF0YVByZXZpZXc6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczogQmFzZVBhcmFtcztcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgbG9ja1Rvb2x0aXA6IHN0cmluZztcbiAgbm9kbXNvYmplY3QgPSBmYWxzZTtcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuICBwYW5lbE9yZGVyID0geydtYXN0ZXInOiBbJ3N1bW1hcnknLCAnaW5kZXhkYXRhJywgJ2hpc3RvcnknLCAnbGlua3MnLCAnc2lnbmF0dXJlJ10sICdzbGF2ZSc6IFsncHJldmlldyddfTtcbiAgYWdlbnRJc0Nvbm5lY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQ7XG4gIHN1YnNjcmlwdGlvbkljb25Ub29sdGlwOiBzdHJpbmc7XG4gIHNwbGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVmZXJlbmNlJykgaXNSZWZlcmVuY2U6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2V0IHJlZmVyZW5jZShpc1JlZjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNSZWZlcmVuY2UgPSBpc1JlZjtcbiAgfVxuICBASW5wdXQoKSBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVuYWJsZUNvbXBhcmUgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVjeWNsZWJpblRhYnMgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlRGlmZiA9IHRydWU7XG4gIEBJbnB1dCgpIGVuYWJsZVN5bmMgPSB0cnVlO1xuICBASW5wdXQoKSBjYWNoZUxheW91dDogYW55O1xuICBpdGVtMjogRG1zT2JqZWN0O1xuICBpbmRleERhdGFQcmV2aWV3MjogSW5kZXhEYXRhO1xuICBiYXNlcGFyYW1zMjogQmFzZVBhcmFtcztcbiAgcHJpdmF0ZSBfZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG5cbiAgQElucHV0KClcbiAgc2V0IGVtcHR5U3RhdGUoZTogRW1wdHlTdGF0ZSkge1xuICAgIHRoaXMuX2VtcHR5U3RhdGUgPSBlIHx8IEVtcHR5U3RhdGVTZXJ2aWNlLmRlZmF1bHRFbXB0eVN0YXRlKCk7XG4gIH1cblxuICBnZXQgZW1wdHlTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW1wdHlTdGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zJylcbiAgc2V0IGRtc1BhcmFtcyhwYXJhbXM6IERtc1BhcmFtcykge1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXM7XG4gICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICB9LFxuICAgICAgVXRpbHMudGhyb3coKCkgPT4gdGhpcy5vbkhhc0Vycm9yKHRydWUsIHRydWUsIGZhbHNlKSlcbiAgICApO1xuICB9XG5cbiAgQElucHV0KCdwYXJhbXMyJylcbiAgc2V0IGRtc1BhcmFtczIocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICB0aGlzLmxvYWREbXNPYmplY3QocGFyYW1zKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgdGhpcy5kbXNPYmplY3QyID0gcmVzO1xuICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4gdGhpcy5vbkhhc0Vycm9yKHRydWUsIHRydWUsIGZhbHNlKSkpO1xuICB9XG5cbiAgQElucHV0KCdpdGVtJylcbiAgc2V0IGRtc09iamVjdCh2OiBEbXNPYmplY3QpIHtcbiAgICB0aGlzLml0ZW0gPSB2O1xuICAgIHRoaXMub25IYXNFcnJvcigpO1xuICAgIC8vIHByZXBhcmUgaW5kZXhkYXRhIHByZXZpZXdcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9MT0FERUQsIHRoaXMuaXRlbSk7XG5cbiAgICBpZiAodGhpcy5pdGVtKSB7XG4gICAgICBpZiAodGhpcy5pdGVtLmlzQWN0aXZlVmVyc2lvbiAmJiAhdGhpcy5lbmFibGVDb21wYXJlKSB7XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0LnJlZmVyZW5jZU9iamVjdCA9IHRoaXMuaXRlbTtcbiAgICAgICAgdGhpcy51cGxvYWRUYXJnZXQub25VcGxvYWRTdWNjZXNzID0gKCkgPT4gdGhpcy5kbXNQYXJhbXMgPSB7aWQ6IHYuaWQsIHR5cGU6IHYudHlwZU5hbWV9O1xuICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXRlbS5sb2NrKSB7XG4gICAgICAgIHRoaXMubG9ja1Rvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QubG9jaycpICsgJyAnXG4gICAgICAgICAgKyAobmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0odGhpcy5pdGVtLmxvY2sub24pKVxuICAgICAgICAgICsgJywgJyArIHRoaXMuaXRlbS5sb2NrLmJ5LmxhYmVsICsgJyAoJyArIHRoaXMuaXRlbS5sb2NrLmJ5Lm5hbWUgKyAnKSc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZSgwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pdGVtPy5zdWJzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25JY29uVG9vbHRpcCA9IHRoaXMuY3JlYXRlU3Vic2NyaXB0aW9uSWNvblRvb2x0aXAodGhpcy5pdGVtKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2l0ZW0yJylcbiAgc2V0IGRtc09iamVjdDIodjogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5pdGVtMiA9IHY7XG4gICAgdGhpcy5vbkhhc0Vycm9yKCk7XG4gICAgdGhpcy5vbkluZGV4RGF0YVNhdmVkKG51bGwsIHRoaXMuaXRlbTIpO1xuICB9XG5cbiAgY2FwYWJpbGl0aWVzOiBDYXBhYmlsaXRpZXM7XG4gIGV4dGVybmFsUGFuZWxzID0gbmV3IFF1ZXJ5TGlzdDxUYWJQYW5lbENvbXBvbmVudD4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYlBhbmVsQ29tcG9uZW50KSB0YWJQYW5lbHM6IFF1ZXJ5TGlzdDxUYWJQYW5lbENvbXBvbmVudD47XG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGx1Z2luQ29tcG9uZW50KVxuICB0YWJQbHVnaW5zOiBRdWVyeUxpc3Q8VGFiUGx1Z2luQ29tcG9uZW50PjtcbiAgcHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuXG4gIC8vIHNob3J0Y3V0IGFjdGlvbnNcbiAgc2hvcnRjdXRzOiBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCA9IHtcbiAgICBpZDogJ2VvLm9iamVjdC1kZXRhaWxzJyxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyksXG4gICAgbGFiZWxLZXk6ICdlby5zaG9ydGN1dHMuZW8tb2JqZWN0LWRldGFpbHMudGl0bGUnLFxuICAgIGFjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2hvcnRjdXRzLmFjdGlvbi5vcGVuLmNvbnRleHQnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5hY3Rpb24ub3Blbi5jb250ZXh0JyxcbiAgICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnTycsIGZhbHNlLCBmYWxzZSksXG4gICAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk9iamVjdCh0aGlzLml0ZW0uaWQsIHRoaXMuaXRlbS50eXBlTmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyksXG4gICAgICAgIG5hbWVLZXk6ICdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyxcbiAgICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnQScsIGZhbHNlLCBmYWxzZSksXG4gICAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0FjdGlvbnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcbiAgQElucHV0KCkgcGFyc2VEbXNQYXJhbXM6IChkYXRhKSA9PiB7fSA9IHRoaXMuZ2V0RG1zUGFyYW1zO1xuICBAT3V0cHV0KCkgaGFzQ29udGVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlTmFtZSA6ICdub25lJztcbiAgfVxuXG4gIHVuZG9ja1dpbkFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbXB0eTogRW1wdHlTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXR5U2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIHVwbG9hZFJlZ2lzdHJ5OiBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZyxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnBhbmVsT3JkZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdvYmplY3REZXRhaWxzVGFicycpIHx8IHRoaXMucGFuZWxPcmRlcjtcbiAgICB0aGlzLnVuZG9ja1dpbkFjdGl2ZSA9IENvbnRlbnRQcmV2aWV3U2VydmljZS51bmRvY2tXaW5BY3RpdmUoKTtcblxuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNldEFnZW50U3RhdHVzKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2Nvbm5lY3RhZ2VudCddKS5zdWJzY3JpYmUoKGhhc1N0YXR1czogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKGhhc1N0YXR1cykge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge3F1ZXJ5UGFyYW1zOiB7Y29ubmVjdGFnZW50OiBudWxsfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICAvLyBvblRhYlNwbGl0KGU6IFRhYlNwbGl0RXZlbnQpIHtcbiAgLy8gICB0aGlzLnNwbGl0VGFiQ29udGFpbmVyPy5hZGRUYWIoZS50YWIsIHRydWUsIGUudmlldyk7XG4gIC8vICAgdGhpcy5zcGxpdCA9ICEhdGhpcy5zcGxpdFRhYkNvbnRhaW5lci50YWJzPy5sZW5ndGg7XG4gIC8vIH1cbiAgLy8gb25UYWJSZW1vdmUoZTogVGFiU3BsaXRFdmVudCkge1xuICAvLyAgIHRoaXMuZmlyc3RUYWJDb250YWluZXI/LmFkZFRhYihlLnRhYiwgdHJ1ZSwgZS52aWV3KTtcbiAgLy8gICB0aGlzLnNwbGl0ID0gISF0aGlzLnNwbGl0VGFiQ29udGFpbmVyLnRhYnM/Lmxlbmd0aDtcbiAgLy8gfVxuXG4gIHByaXZhdGUgZ2V0RG1zUGFyYW1zKGRhdGE6IGFueSk6IERtc1BhcmFtcyB7XG4gICAgcmV0dXJuIGRhdGEgPyB7Li4uZGF0YSwgdHlwZTogZGF0YS50eXBlTmFtZSB8fCBkYXRhLnR5cGV9IDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29udGVudCgpIHtcblxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5lbmFibGVDb21wYXJlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgICAuc2VsZWN0aW9uJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSB0aGlzLnBhcnNlRG1zUGFyYW1zKHJlc1swXSkgYXMgRG1zUGFyYW1zO1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMyID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMV0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAgIC5mb2N1cyRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWREbXNPYmplY3QodGhpcy5wYXJzZURtc1BhcmFtcyhyZXMpIGFzIERtc1BhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAvLyByZWZyZXNoaW5nIG9iamVjdCBkZXRhaWxzIG1heSByZXN1bHQgaW4gYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3RcbiAgICAgICAgICAgICAgLy8gc28gd2UnbGwgdXNlIHRoaXMgdHJpZ2dlciB0byBhbHNvIGVtaXR0IHRob3NlIGNoYW5nZXMgdG8gb3RoZXIgbGlzdGVuaW5nIGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiByZXMgJiYgKHRoaXMuaXRlbS5pZCA9PT0gcmVzLmlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIHJlcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXM7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgVXRpbHMudGhyb3coKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS51bnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0LmlkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vbkhhc0Vycm9yKHRydWUsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWZyZXNoQ29udGVudCgpIHtcbiAgICBpZiAoIXRoaXMucHJldmVudENsaWNrVGhyb3VnaCkge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlSW5kZXhEYXRhUHJldmlldyhpdGVtOiBEbXNPYmplY3QsIGZvcm1EYXRhPzogYW55KSB7XG4gICAgY29uc3Qge2lkLCBkYXRhLCB0eXBlLCBjcmVhdGVkLCBtb2RpZmllZCwgY29udGVudCwgY29udGVudEZpbGVOYW1lLCBjb250ZW50RmlsZVNpemUsIHZlcnNpb259ID0gaXRlbTtcblxuICAgIHJldHVybiB0aGlzLnN5c3RlbVxuICAgICAgLmdldE9iamVjdFR5cGVGb3JtKHR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtID0+IHtcbiAgICAgICAgICBsZXQgaW5kZXhEYXRhUHJldmlldyA9IHtcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICBkYXRhOiBmb3JtRGF0YSB8fCBkYXRhXG4gICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgYmFzZXBhcmFtczogQmFzZVBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgY3JlYXRlZE9uOiBuZXcgRGF0ZShjcmVhdGVkLm9uKSxcbiAgICAgICAgICAgIG1vZGlmaWVkT246IG5ldyBEYXRlKG1vZGlmaWVkLm9uKSxcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogYCR7Y3JlYXRlZC5ieS50aXRsZX0gKCR7Y3JlYXRlZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgbW9kaWZpZWRCeTogYCR7bW9kaWZpZWQuYnkudGl0bGV9ICgke21vZGlmaWVkLmJ5Lm5hbWV9KWAsXG4gICAgICAgICAgICBjb250ZW50RmlsZU5hbWU6IGNvbnRlbnRGaWxlTmFtZSA/IGNvbnRlbnRGaWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50RmlsZVNpemU6IGNvbnRlbnRGaWxlU2l6ZSA/IE51bWJlcihjb250ZW50RmlsZVNpemUpIDogbnVsbCxcbiAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgMCxcbiAgICAgICAgICAgIG1pbWVHcm91cDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLm1pbWVncm91cCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgZGlnZXN0OiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0uZGlnZXN0IDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50SWQ6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5pZCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgbWltZVR5cGU6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1ldHlwZSA6IG51bGwgOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtpbmRleERhdGFQcmV2aWV3LCBiYXNlcGFyYW1zfTtcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhhc0Vycm9yKGhhc0Vycm9yID0gZmFsc2UsIG5vZG1zb2JqZWN0ID0gZmFsc2UsIHNob3dMb2FkZXIgPSBmYWxzZSkge1xuICAgIHRoaXMuaGFzRXJyb3IgPSBoYXNFcnJvcjtcbiAgICB0aGlzLm5vZG1zb2JqZWN0ID0gbm9kbXNvYmplY3Q7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gc2hvd0xvYWRlcjtcbiAgICB0aGlzLmhhc0NvbnRlbnQuZW1pdCghaGFzRXJyb3IpO1xuICB9XG5cbiAgbG9hZERtc09iamVjdChwYXJhbXM6IERtc1BhcmFtcykge1xuICAgIGlmICghdGhpcy5lbmFibGVDb21wYXJlICYmIHBhcmFtcykge1xuICAgICAgZGVsZXRlIHBhcmFtcy52ZXJzaW9uO1xuICAgIH1cbiAgICAvLyBjaGVjayBmb3IgdmFsaWQgaWRcbiAgICByZXR1cm4gcGFyYW1zPy5pZD8ubGVuZ3RoID09PSAzMiA/IHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3RCeVBhcmFtcyhwYXJhbXMpIDogb2YobnVsbCk7XG4gIH1cblxuICBkb3dubG9hZE9yaWdpbmFsQ29udGVudCgpIHtcbiAgICB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KFt0aGlzLml0ZW1dKTtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKCkge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBbdGhpcy5pdGVtLCB0aGlzLml0ZW0yXS5maWx0ZXIodiA9PiB2KTtcbiAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMoYWN0aW9ucywgJ0RNU19PQkpFQ1QnKTtcbiAgfVxuXG4gIG9wZW5PYmplY3QoaWQsIF90eXBlPykge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiBfdHlwZX19O1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBpZF0sIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8vIGV4ZWN1dGVkIHdoZW4gdGhlIGRtcyBvYmplY3QgY2hhbmdlZCBkdWUgdG8gc2F2aW5nIGl0cyBpbmRleGRhdGFcbiAgb25JbmRleERhdGFTYXZlZChmb3JtRGF0YSwgaXRlbSkge1xuICAgIGlmICghdGhpcy5pdGVtKSB7XG4gICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcgPSBudWxsO1xuICAgICAgdGhpcy5iYXNlcGFyYW1zID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLml0ZW0yKSB7XG4gICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtczIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5wcmVwYXJlSW5kZXhEYXRhUHJldmlldyhpdGVtLCBmb3JtRGF0YSlcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSA9PT0gdGhpcy5pdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcgPSBkYXRhLmluZGV4RGF0YVByZXZpZXc7XG4gICAgICAgICAgICB0aGlzLmJhc2VwYXJhbXMgPSBkYXRhLmJhc2VwYXJhbXM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhEYXRhUHJldmlldzIgPSBkYXRhLmluZGV4RGF0YVByZXZpZXc7XG4gICAgICAgICAgICB0aGlzLmJhc2VwYXJhbXMyID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlZmVyZW5jZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbS5jb250ZXh0Rm9sZGVyID8gdGhpcy5pdGVtLmNvbnRleHRGb2xkZXIudGl0bGUgOiB0aGlzLml0ZW0udGl0bGU7XG4gIH1cblxuICBpc0pvdXJuYWxPYmplY3QoaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnR5cGUuc3VwZXJ0eXBlcy5maW5kKHNUID0+IHNUID09PSAnc3lzam91cm5hbG9iamVjdCcpO1xuICB9XG5cbiAgaGFzU2lnbmluZ09iamVjdFR5cGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZXMoKS5maW5kKG9iamVjdFR5cGUgPT4gb2JqZWN0VHlwZS5zdXBlcnR5cGVzLmluY2x1ZGVzKCd5dXZzaWduaW5nJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdWJzY3JpcHRpb25JY29uVG9vbHRpcChpdGVtOiBEbXNPYmplY3QpOiBzdHJpbmcge1xuICAgIGxldCB0b29sdGlwID0gJyc7XG4gICAgY29uc3QgbW9kZXMgPSB0aGlzLml0ZW0uc3Vic2NyaXB0aW9ucy5tYXAoc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi5tb2RlKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9BbGxDaGFuZ2VzID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpIHx8IChtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEKSAmJiBtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKSk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvTWV0YUNoYW5nZXNPbmx5ID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLkRNU19PQkpFQ1RfQ0hBTkdFRCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvQ29udGVudENoYW5nZXNPbmx5ID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLkRNU19PQkpFQ1RfQ0hBTkdFRCk7XG4gICAgaWYgKHN1YnNjcmliZWRUb0FsbENoYW5nZXMpIHtcbiAgICAgIHRvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3Quc3Vic2NyaXB0aW9uLmljb24udG9vbHRpcC5hbGxDaGFuZ2VzJyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLm1ldGEnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3Vic2NyaWJlZFRvQ29udGVudENoYW5nZXNPbmx5KSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LnN1YnNjcmlwdGlvbi5pY29uLnRvb2x0aXAuY29udGVudCcpO1xuICAgIH1cbiAgICByZXR1cm4gdG9vbHRpcDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXR5U2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcblxuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbS5pZCA9PT0gZXZlbnQuZGF0YS5pZCkge1xuICAgICAgICAgIHRoaXMuZG1zT2JqZWN0ID0gdGhpcy5kbXNTZXJ2aWNlLmNyZWF0ZUxvY2FsQ29weU9mRE1TT2JqZWN0KGV2ZW50LmRhdGEpO1xuICAgICAgICAgIGlmICh0aGlzLnByZXZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlldy5yZWZyZXNoKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5JTkJPWF9JVEVNX0NPTkZJUk1FRClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLml0ZW0gJiYgdGhpcy5pdGVtLmlkID09PSBldmVudC5kYXRhLnRhcmdldC5pZCkge1xuICAgICAgICAgIHRoaXMuZG1zUGFyYW1zID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgbGV0IHBhbmVscyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcbiAgICB0aGlzLnRhYlBsdWdpbnMuZm9yRWFjaChwID0+IHBhbmVscyA9IHBhbmVscy5jb25jYXQocC50YWJQYW5lbHMudG9BcnJheSgpKSk7XG4gICAgdGhpcy5leHRlcm5hbFBhbmVscy5yZXNldChwYW5lbHMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51cGxvYWRSZWdpc3RyeS51bnJlZ2lzdGVyKHRoaXMudXBsb2FkVGFyZ2V0LmlkKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxvYWRlci1vdmVybGF5X19tYXNrXCIgKm5nSWY9XCJzaG93TG9hZGVyXCI+XG4gIDxlby1sb2FkaW5nLXNwaW5uZXIgY2xhc3M9XCJvYmplY3QtZGV0YWlsX19sb2FkZXJcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0gJiYgIWhhc0Vycm9yOyBlbHNlIG5vSXRlbVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJlby1oZWFkIGVvLWhlYWQtdGFic1wiIFtlb1Nob3J0Y3V0c109XCJzaG9ydGN1dHNcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwiZW8taGVhZGVyXCI+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW29iamVjdFR5cGVdPVwiaXRlbS50eXBlXCIgW2ljb25UaXRsZV09XCJpdGVtLnR5cGUubGFiZWxcIj48L2VvLWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3tpdGVtLnRpdGxlfX08L2gyPlxuICAgICAgICA8aDMgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj57e2l0ZW0uZGVzY3JpcHRpb259fTwvaDM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVmZXJlbmNlOyBlbHNlIHRwbEhlYWRSZWZlcmVuY2VcIj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHJlZnJlc2gtYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIlxuICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUtcmVmcmVzaCc6IHByZXZlbnRDbGlja1Rocm91Z2h9XCIgKGNsaWNrKT1cInJlZnJlc2hDb250ZW50KClcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBzeW5jLXRhYi1idG5cIiAqbmdJZj1cImVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzXCIgW25nQ2xhc3NdPVwieydlbmFibGVkJzogZW5hYmxlU3luY31cIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19saW5rLnN2ZydcIiBbaWNvblRpdGxlXT1cIidlby52ZXJzaW9ucy5kZXRhaWwuZ2x1ZS50b29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJlbmFibGVTeW5jID0gIWVuYWJsZVN5bmNcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZmF2b3JpdGUtaWNvbiBbaXRlbV09XCJpdGVtXCIgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiAhcmVjeWNsZWJpblRhYnMgJiYgY2FwYWJpbGl0aWVzLmZhdm9yaXRlcyAmJiAhaXNKb3VybmFsT2JqZWN0KGl0ZW0pXCI+XG4gICAgICAgICAgICA8L2VvLWZhdm9yaXRlLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBvYy1idXR0b25cIiAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmIGl0ZW0uY29udGVudFwiIChjbGljayk9XCJkb3dubG9hZE9yaWdpbmFsQ29udGVudCgpXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmFjdGlvbi5kb3dubG9hZC5kbXMub2JqZWN0LmNvbnRlbnQubGFiZWwnIHwgdHJhbnNsYXRlKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgIDxlby1lZGl0LWljb24gW2l0ZW1dPVwiaXRlbVwiICpuZ0lmPVwiIWVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzICYmIGl0ZW0uY29udGVudCAmJiBpdGVtLnJpZ2h0cy5lZGl0ICYmIChhZ2VudElzQ29ubmVjdGVkJCB8IGFzeW5jKSAmJiAhaXRlbS5pc0ZpbmFsaXplZFwiPlxuICAgICAgICAgICAgPC9lby1lZGl0LWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBhbS1idXR0b25cIiAqbmdJZj1cIiFyZWN5Y2xlYmluVGFic1wiIChjbGljayk9XCJzaG93QWN0aW9ucygpXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX21vcmUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdHBsSGVhZFJlZmVyZW5jZT5cbiAgICAgICAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIHJlZmVyZW5jZSBwcmltYXJ5XCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIignZW8ub2JqZWN0LnJlZmVyZW5jZS50b29sdGlwJyB8IHRyYW5zbGF0ZTp7dGl0bGU6cmVmZXJlbmNlVGl0bGV9KVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL29iamVjdCcsIGl0ZW0uaWRdXCJcbiAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiBpdGVtLnR5cGVOYW1lfVwiPnt7J2VvLm9iamVjdC5yZWZlcmVuY2Uub3Blbid8dHJhbnNsYXRlfX08L2E+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXN0YXR1cy1pY29uc1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiY29udGVudC1saW5rXCIgW3RpdGxlXT1cIidlby5vYmplY3QuY29udGVudGxpbmsudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAqbmdJZj1cIml0ZW0uY29udGVudD8ubGlua2VkXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIicvb2JqZWN0LycgKyBpdGVtLmNvbnRlbnQuaWRcIiBbcXVlcnlQYXJhbXNdPVwie3R5cGU6IGl0ZW0uY29udGVudC50eXBlfVwiPlxuICAgICAgICAgICAgPHNwYW4+e3snZW8ub2JqZWN0LmNvbnRlbnRsaW5rJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInN1YnNjcmlwdGlvbi1pY29uXCIgKm5nSWY9XCJpdGVtLnN1YnNjcmlwdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3N1YnNjcmlwdGlvbi5zdmcnXCIgW2ljb25UaXRsZV09XCJzdWJzY3JpcHRpb25JY29uVG9vbHRpcFwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInJlc3VibWlzc2lvbi1pY29uXCIgKm5nSWY9XCJpdGVtLnJlc3VibWlzc2lvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3Jlc3VibWlzc2lvbi5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5yZXN1Ym1pc3Npb24udG9vbHRpcCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaGFyZWQtaWNvblwiICpuZ0lmPVwiaXRlbS5hZGRpdGlvbmFsdmlzaWJpbGl0eS5sZW5ndGggJiYgIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaGFyZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2hhcmVkLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwibG9ja1wiIFtuZ0NsYXNzXT1cInsnbXlMb2NrJzogaXRlbS5sb2NrLmJ5Lm1lfVwiICpuZ0lmPVwiaXRlbS5sb2NrXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2xvY2suc3ZnJ1wiIFtpY29uVGl0bGVdPVwibG9ja1Rvb2x0aXBcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJmaW5hbGl6ZWQtaWNvblwiICpuZ0lmPVwiaXRlbS5pc0ZpbmFsaXplZFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ZpbmFsaXplZC5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5maW5hbGl6ZWQudG9vbHRpcCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBpbnByb2Nlc3NcIiAqbmdJZj1cIml0ZW0uZGF0YS55dXZzaWdzdGF0dXMgPT09ICdpbnByb2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaWduYXR1cmUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLmlucHJvY2VzcycgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBzaWduZWRcIiAqbmdJZj1cIml0ZW0uZGF0YS55dXZzaWdzdGF0dXMgPT09ICdzaWduZWQnXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaWduYXR1cmUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLnNpZ25lZCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuXG4gICAgPHl2Yy1zcGxpdC10YWJzIFtsYXlvdXRTZXR0aW5nc0lEXT1cImNhY2hlTGF5b3V0XCI+XG4gICAgICA8IS0tIHN1bW1hcnkgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdzdW1tYXJ5JywgbGFiZWw6ICdlby5vYmplY3Quc3VtbWFyeS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbaW5kZXhkYXRhXT1cImluZGV4RGF0YVByZXZpZXdcIiBbYmFzZXBhcmFtc109XCJiYXNlcGFyYW1zXCIgW2Rtc09iamVjdF09XCJpdGVtXCJcbiAgICAgICAgICBbZW5hYmxlVmVyc2lvbnNdPVwiIWVuYWJsZUNvbXBhcmVcIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gbWV0YWRhdGEgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdpbmRleGRhdGEnLCBsYWJlbDogJ2VvLm9iamVjdC5pbmRleGRhdGEudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWZvcm0tZWRpdCBbZG1zT2JqZWN0XT1cIml0ZW1cIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleERhdGFTYXZlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICBbZm9ybURpc2FibGVkXT1cImVuYWJsZUNvbXBhcmUgfHwgaXNSZWZlcmVuY2VcIj48L2VvLW9iamVjdC1mb3JtLWVkaXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBwcmV2aWV3IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAncHJldmlldycsIGxhYmVsOiAnZW8ub2JqZWN0LmNvbnRlbnQudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tbWVkaWEgW2Rtc09iamVjdF09XCJpdGVtXCIgW3VzZVZlcnNpb25dPVwiaXRlbS5pZCA9PT0gaXRlbS5jb250ZW50Py5pZFwiXG4gICAgICAgICAgW3NlYXJjaFRlcm1dPVwic2VhcmNoVGVybVwiICN2aWV3ZXI+PC9lby1tZWRpYT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIGhpc3RvcnkgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdoaXN0b3J5JywgbGFiZWw6ICdlby5vYmplY3QuaGlzdG9yeS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1vYmplY3QtaGlzdG9yeSBbcGFyYW1zXT1cIntpZDogaXRlbS5pZCwgdHlwZTogaXRlbS50eXBlPy5xbmFtZX1cIj5cbiAgICAgICAgPC9lby1vYmplY3QtaGlzdG9yeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIGxpbmtzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnbGlua3MnLCBsYWJlbDogJ2VvLm9iamVjdC5saW5rcy50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1vYmplY3QtbGlua3MgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1vYmplY3QtbGlua3M+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBzaWduYXR1cmUgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdzaWduYXR1cmUnLCBsYWJlbDogJ2VvLm9iamVjdC5zaWduYXR1cmUtdGFiLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLXNpZ25hdHVyZS10YWIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1zaWduYXR1cmUtdGFiPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3l2Yy1zcGxpdC10YWJzPlxuICAgIFxuICAgIFxuICAgIFxuICAgIFxuICAgIFxuICAgIFxuICAgIFxuICAgIDwhLS0gPHl2Yy1zcGxpdC12aWV3IFtsYXlvdXRTZXR0aW5nc0lEXT1cIid5dmMuc3BsdHZpZXcudGVzdC5vbmUnXCI+XG4gICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjUwXCI+XG4gICAgICAgIDx5dmMtdGFicyAjZmlyc3RUYWJDb250YWluZXIgKHRhYlNwbGl0KT1cIm9uVGFiU3BsaXQoJGV2ZW50KVwiXG4gICAgICAgICAgW3RhYlNwbGl0RW5hYmxlZF09XCJmaXJzdFRhYkNvbnRhaW5lci50YWJzLmxlbmd0aCA+IDFcIiBbY2FjaGVWaWV3c109XCJjYWNoZVZpZXdzXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc3VtbWFyeScsIGxhYmVsOiAnZW8ub2JqZWN0LnN1bW1hcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLWluZGV4ZGF0YS1zdW1tYXJ5IFtpbmRleGRhdGFdPVwiaW5kZXhEYXRhUHJldmlld1wiIFtiYXNlcGFyYW1zXT1cImJhc2VwYXJhbXNcIiBbZG1zT2JqZWN0XT1cIml0ZW1cIlxuICAgICAgICAgICAgICBbZW5hYmxlVmVyc2lvbnNdPVwiIWVuYWJsZUNvbXBhcmVcIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaW5kZXhkYXRhJywgbGFiZWw6ICdlby5vYmplY3QuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICAgIDxlby1vYmplY3QtZm9ybS1lZGl0IFtkbXNPYmplY3RdPVwiaXRlbVwiIChpbmRleERhdGFTYXZlZCk9XCJvbkluZGV4RGF0YVNhdmVkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICBbZm9ybURpc2FibGVkXT1cImVuYWJsZUNvbXBhcmUgfHwgaXNSZWZlcmVuY2VcIj48L2VvLW9iamVjdC1mb3JtLWVkaXQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdwcmV2aWV3JywgbGFiZWw6ICdlby5vYmplY3QuY29udGVudC50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICA8ZW8tbWVkaWEgW2Rtc09iamVjdF09XCJpdGVtXCIgW3VzZVZlcnNpb25dPVwiaXRlbS5pZCA9PT0gaXRlbS5jb250ZW50Py5pZFwiXG4gICAgICAgICAgICAgIFtzZWFyY2hUZXJtXT1cInNlYXJjaFRlcm1cIiAjdmlld2VyPjwvZW8tbWVkaWE+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdoaXN0b3J5JywgbGFiZWw6ICdlby5vYmplY3QuaGlzdG9yeS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICA8ZW8tb2JqZWN0LWhpc3RvcnkgW3BhcmFtc109XCJ7aWQ6IGl0ZW0uaWQsIHR5cGU6IGl0ZW0udHlwZT8ucW5hbWV9XCI+XG4gICAgICAgICAgICA8L2VvLW9iamVjdC1oaXN0b3J5PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnbGlua3MnLCBsYWJlbDogJ2VvLm9iamVjdC5saW5rcy50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICA8ZW8tb2JqZWN0LWxpbmtzIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tb2JqZWN0LWxpbmtzPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc2lnbmF0dXJlJywgbGFiZWw6ICdlby5vYmplY3Quc2lnbmF0dXJlLXRhYi50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICA8ZW8tc2lnbmF0dXJlLXRhYiBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLXNpZ25hdHVyZS10YWI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC95dmMtdGFicz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjUwXCIgW3Zpc2libGVdPVwic3BsaXRcIj5cbiAgICAgICAgPHl2Yy10YWJzICNzcGxpdFRhYkNvbnRhaW5lciAodGFiUmVtb3ZlKT1cIm9uVGFiUmVtb3ZlKCRldmVudClcIj48L3l2Yy10YWJzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3l2Yy1zcGxpdC12aWV3PiAtLT5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI25vSXRlbT5cbiAgPHNwYW4gY2xhc3M9XCJub3QtZm91bmRcIiAqbmdJZj1cIm5vZG1zb2JqZWN0XCIgdHJhbnNsYXRlPmVvLmJwbS5ub2Rtc29iamVjdDwvc3Bhbj5cbiAgPGVvLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhc2hvd0xvYWRlclwiXG4gICAgW2VtcHR5U3RhdGVdPVwie2ljb246IGVtcHR5U3RhdGUuaWNvbiwgdGV4dDogZW1wdHlTdGF0ZS50ZXh0LCBjbGFzc05hbWU6IGVtcHR5U3RhdGUuY2xhc3NOYW1lfVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9lby1lcnJvci1tZXNzYWdlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFTTCxVQUFVLEVBRVYsZ0JBQWdCLEVBSWhCLFlBQVksRUFDWixLQUFLLEdBQ04sTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUdoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRakYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG9CQUFvQjtJQW1COUQsSUFBYSxTQUFTLENBQUMsS0FBYztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBWUQsSUFDSSxVQUFVLENBQUMsQ0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksU0FBUyxDQUFDLE1BQWlCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBYyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQyxFQUNDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsTUFBaUI7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7YUFDdkIsU0FBUyxDQUFDLENBQUMsR0FBYyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDeEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFDSSxTQUFTLENBQUMsQ0FBWTtRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFDLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRDtZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHO3NCQUM3RCxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7c0JBQ2pFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUMxRTtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDbkMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUU7SUFDSCxDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsQ0FBWTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBNkNELElBQW1DLFFBQVE7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFJRCxZQUFvQixNQUFjLEVBQ3hCLEtBQXFCLEVBQ3JCLE1BQXFCLEVBQ3JCLEtBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLE9BQXVCLEVBQ3ZCLFVBQXNCLEVBQ3RCLFNBQTJCLEVBQzNCLGFBQTRCLEVBQzVCLGlCQUFzQyxFQUN0QyxjQUFxQyxFQUNyQyxZQUEwQixFQUMxQixhQUFxQixFQUNyQixTQUEyQjtRQUNuQyxLQUFLLEVBQUUsQ0FBQztRQWRVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0pyQyxnREFBZ0Q7UUFDeEMsaUJBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSTNFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsRUFBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUMsQ0FBQztRQUN6RyxzQkFBaUIsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFFeEUsVUFBSyxHQUFZLEtBQUssQ0FBQztRQU9kLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUtuQixnQkFBVyxHQUFlLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBQyxDQUFDO1FBbUVwRix1REFBdUQ7UUFFdkQsK0VBQStFO1FBQy9FLHVDQUF1QztRQUN2Qyw2Q0FBNkM7UUFDN0Msd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLG1CQUFtQjtRQUNuQixjQUFTLEdBQTRCO1lBQ25DLEVBQUUsRUFBRSxtQkFBbUI7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDO1lBQ3JFLFFBQVEsRUFBRSxzQ0FBc0M7WUFDaEQsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQztvQkFDaEUsT0FBTyxFQUFFLGtDQUFrQztvQkFDM0MsUUFBUSxFQUFFLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUN6QyxlQUFlLEVBQUUsR0FBRyxFQUFFO3dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BELENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO2lCQUNGO2dCQUNEO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDL0QsT0FBTyxFQUFFLGlDQUFpQztvQkFDMUMsUUFBUSxFQUFFLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUN6QyxlQUFlLEVBQUUsR0FBRyxFQUFFO3dCQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDYixPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBR08sbUJBQWMsR0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNoRCxlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFNMUUsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFrQnRCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3BGLElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBa0IsRUFBRSxFQUFFO1lBQ2pILElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFDLFdBQVcsRUFBRSxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO2FBQzdGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsaUNBQWlDO0lBQ2pDLHlEQUF5RDtJQUN6RCx3REFBd0Q7SUFDeEQsSUFBSTtJQUNKLGtDQUFrQztJQUNsQyx5REFBeUQ7SUFDekQsd0RBQXdEO0lBQ3hELElBQUk7SUFFSSxZQUFZLENBQUMsSUFBUztRQUM1QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRSxDQUFDO0lBRU8sYUFBYTtRQUVuQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLENBQUMsU0FBUztxQkFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7cUJBQzVCLFVBQVU7cUJBQ1YsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FDcEM7cUJBQ0EsU0FBUyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBYyxDQUFDO2dCQUM3RCxDQUFDLENBQUMsQ0FBQztnQkFDTCxPQUFPO2FBQ1I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVM7cUJBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO3FCQUM1QixNQUFNO3FCQUNOLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQ3BDO3FCQUNBLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBYyxFQUFFLEVBQUU7d0JBQ3JGLDJFQUEyRTt3QkFDM0Usc0ZBQXNGO3dCQUN0RixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFOzRCQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUM7eUJBQy9EO3dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO3dCQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDMUIsQ0FBQyxFQUNDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVDLENBQUMsQ0FBQyxDQUNILENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7YUFFTjtTQUNGO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLHVCQUF1QixDQUFDLElBQWUsRUFBRSxRQUFjO1FBQzdELE1BQU0sRUFBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQztRQUVyRyxPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2YsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDcEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksZ0JBQWdCLEdBQUc7Z0JBQ3JCLElBQUk7Z0JBQ0osSUFBSSxFQUFFLFFBQVEsSUFBSSxJQUFJO2FBQ3ZCLENBQUM7WUFDRixJQUFJLFVBQVUsR0FBZTtnQkFDM0IsRUFBRTtnQkFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRztnQkFDckQsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUc7Z0JBQ3hELGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDekQsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNqRSxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQ3JCLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ25GLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzdFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDaEUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNsRixDQUFDO1lBQ0YsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRU8sVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSztRQUMxRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksTUFBTSxFQUFFO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUN2QjtRQUNELHFCQUFxQjtRQUNyQixPQUFPLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQU07UUFDbkIsTUFBTSxXQUFXLEdBQXFCLEVBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxFQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7aUJBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2lCQUNuQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO29CQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ3BDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuRixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUk7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssa0JBQWtCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRU8sNkJBQTZCLENBQUMsSUFBZTtRQUNuRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdFLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO1FBQ25OLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hOLE1BQU0sOEJBQThCLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNOLElBQUksc0JBQXNCLEVBQUU7WUFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDcEY7YUFDSSxJQUFJLDJCQUEyQixFQUFFO1lBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQzlFO2FBQ0ksSUFBSSw4QkFBOEIsRUFBRTtZQUN2QyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsQ0FBQztTQUNqRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxZQUFZO2FBQ2QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQzthQUNqQyxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUNwQzthQUNBLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDeEI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFlBQVk7YUFDZCxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDO2FBQ25DLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQ3BDO2FBQ0EsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtRQUNiLHlDQUF5QztRQUN6QywrRUFBK0U7UUFDL0UscUNBQXFDO0lBQ3ZDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOzttSEF4WVUsc0JBQXNCO3VHQUF0QixzQkFBc0IsdW5CQUZ0QixDQUFDLHFCQUFxQixDQUFDLG9KQ3REcEMsdXpSQXNKQTsyRkQ5RmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG1CQUFtQixhQUdsQixDQUFDLHFCQUFxQixDQUFDO3VkQUtiLE9BQU87c0JBQTNCLFNBQVM7dUJBQUMsUUFBUTtnQkFjYSxXQUFXO3NCQUExQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFFakIsU0FBUztzQkFBckIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFPRixVQUFVO3NCQURiLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBWVgsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFNBQVM7Z0JBU1osU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBOEJULFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQThDTCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFNEIsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmFja2VuZFNlcnZpY2UsXG4gIEJhc2VQYXJhbXMsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBEbXNPYmplY3QsXG4gIERtc1BhcmFtcyxcbiAgRG1zU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25Nb2RlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gIFVwbG9hZFRhcmdldCxcbiAgVXRpbHMsXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb24tc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50UHJldmlld1NlcnZpY2UgfSBmcm9tICcuLi9tZWRpYS9jb250ZW50LXByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRpYUNvbXBvbmVudCB9IGZyb20gJy4uL21lZGlhL21lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJQbHVnaW5Db21wb25lbnQgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgfSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2hvcnRjdXQgfSBmcm9tICcuLi9zaG9ydGN1dHMvc2hvcnRjdXQuaW50ZXJmYWNlJztcbi8vIGltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFiLWNvbnRhaW5lci90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmRleERhdGEgfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgfSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3REZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3lcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgndmlld2VyJykgcHJldmlldzogTWVkaWFDb21wb25lbnQ7XG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB0byBwYXNzIHRvIHVwbG9hZCByZWdpc3RyeVxuICBwcml2YXRlIHVwbG9hZFRhcmdldCA9IG5ldyBVcGxvYWRUYXJnZXQoVXRpbHMudXVpZCgpLCBVcGxvYWRUYXJnZXQuT0JKRUNUKTtcbiAgaXRlbTogRG1zT2JqZWN0O1xuICBpbmRleERhdGFQcmV2aWV3OiBJbmRleERhdGE7XG4gIGJhc2VwYXJhbXM6IEJhc2VQYXJhbXM7XG4gIGhhc0Vycm9yID0gZmFsc2U7XG4gIGxvY2tUb29sdGlwOiBzdHJpbmc7XG4gIG5vZG1zb2JqZWN0ID0gZmFsc2U7XG4gIHNob3dMb2FkZXIgPSBmYWxzZTtcbiAgcGFuZWxPcmRlciA9IHsnbWFzdGVyJzogWydzdW1tYXJ5JywgJ2luZGV4ZGF0YScsICdoaXN0b3J5JywgJ2xpbmtzJywgJ3NpZ25hdHVyZSddLCAnc2xhdmUnOiBbJ3ByZXZpZXcnXX07XG4gIGFnZW50SXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkO1xuICBzdWJzY3JpcHRpb25JY29uVG9vbHRpcDogc3RyaW5nO1xuICBzcGxpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlZmVyZW5jZScpIGlzUmVmZXJlbmNlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHNldCByZWZlcmVuY2UoaXNSZWY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVmZXJlbmNlID0gaXNSZWY7XG4gIH1cbiAgQElucHV0KCkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVDb21wYXJlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY3ljbGViaW5UYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZURpZmYgPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVTeW5jID0gdHJ1ZTtcbiAgQElucHV0KCkgY2FjaGVMYXlvdXQ6IGFueTtcbiAgaXRlbTI6IERtc09iamVjdDtcbiAgaW5kZXhEYXRhUHJldmlldzI6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczI6IEJhc2VQYXJhbXM7XG4gIHByaXZhdGUgX2VtcHR5U3RhdGU6IEVtcHR5U3RhdGUgPSB7aWNvbjogJ2ljX25vLWZpbGUuc3ZnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBlbXB0eVN0YXRlKGU6IEVtcHR5U3RhdGUpIHtcbiAgICB0aGlzLl9lbXB0eVN0YXRlID0gZSB8fCBFbXB0eVN0YXRlU2VydmljZS5kZWZhdWx0RW1wdHlTdGF0ZSgpO1xuICB9XG5cbiAgZ2V0IGVtcHR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VtcHR5U3RhdGU7XG4gIH1cblxuICBASW5wdXQoJ3BhcmFtcycpXG4gIHNldCBkbXNQYXJhbXMocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMubG9hZERtc09iamVjdChwYXJhbXMpLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgIHRoaXMuZG1zT2JqZWN0ID0gcmVzO1xuICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICAgIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zMicpXG4gIHNldCBkbXNQYXJhbXMyKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcylcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0MiA9IHJlcztcbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpKTtcbiAgfVxuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBkbXNPYmplY3QodjogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5pdGVtID0gdjtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICAvLyBwcmVwYXJlIGluZGV4ZGF0YSBwcmV2aWV3XG4gICAgdGhpcy5vbkluZGV4RGF0YVNhdmVkKG51bGwsIHRoaXMuaXRlbSk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfTE9BREVELCB0aGlzLml0ZW0pO1xuXG4gICAgaWYgKHRoaXMuaXRlbSkge1xuICAgICAgaWYgKHRoaXMuaXRlbS5pc0FjdGl2ZVZlcnNpb24gJiYgIXRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QgPSB0aGlzLml0ZW07XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMuZG1zUGFyYW1zID0ge2lkOiB2LmlkLCB0eXBlOiB2LnR5cGVOYW1lfTtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW0ubG9jaykge1xuICAgICAgICB0aGlzLmxvY2tUb29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmxvY2snKSArICcgJ1xuICAgICAgICAgICsgKG5ldyBMb2NhbGVEYXRlUGlwZSh0aGlzLnRyYW5zbGF0ZSkudHJhbnNmb3JtKHRoaXMuaXRlbS5sb2NrLm9uKSlcbiAgICAgICAgICArICcsICcgKyB0aGlzLml0ZW0ubG9jay5ieS5sYWJlbCArICcgKCcgKyB0aGlzLml0ZW0ubG9jay5ieS5uYW1lICsgJyknO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXRlbT8uc3Vic2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWNvblRvb2x0aXAgPSB0aGlzLmNyZWF0ZVN1YnNjcmlwdGlvbkljb25Ub29sdGlwKHRoaXMuaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdpdGVtMicpXG4gIHNldCBkbXNPYmplY3QyKHY6IERtc09iamVjdCkge1xuICAgIHRoaXMuaXRlbTIgPSB2O1xuICAgIHRoaXMub25IYXNFcnJvcigpO1xuICAgIHRoaXMub25JbmRleERhdGFTYXZlZChudWxsLCB0aGlzLml0ZW0yKTtcbiAgfVxuXG4gIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzO1xuICAvLyBleHRlcm5hbFBhbmVscyA9IG5ldyBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+KCk7XG5cbiAgLy8gQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lbENvbXBvbmVudCkgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xuICAvLyBAQ29udGVudENoaWxkcmVuKFRhYlBsdWdpbkNvbXBvbmVudClcbiAgLy8gdGFiUGx1Z2luczogUXVlcnlMaXN0PFRhYlBsdWdpbkNvbXBvbmVudD47XG4gIHByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5vYmplY3QtZGV0YWlscycsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScpLFxuICAgIGxhYmVsS2V5OiAnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyxcbiAgICBhY3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5hY3Rpb24ub3Blbi5jb250ZXh0JyksXG4gICAgICAgIG5hbWVLZXk6ICdlby5zaG9ydGN1dHMuYWN0aW9uLm9wZW4uY29udGV4dCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ08nLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5PYmplY3QodGhpcy5pdGVtLmlkLCB0aGlzLml0ZW0udHlwZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScpLFxuICAgICAgICBuYW1lS2V5OiAnZW8ub2JqZWN0LmRldGFpbHMuYWN0aW9ucy50aXRsZScsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0EnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dBY3Rpb25zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XG4gIEBJbnB1dCgpIHBhcnNlRG1zUGFyYW1zOiAoZGF0YSkgPT4ge30gPSB0aGlzLmdldERtc1BhcmFtcztcbiAgQE91dHB1dCgpIGhhc0NvbnRlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW0gPyB0aGlzLml0ZW0udHlwZU5hbWUgOiAnbm9uZSc7XG4gIH1cblxuICB1bmRvY2tXaW5BY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIGRtc1NlcnZpY2U6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0eVNlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRSZWdpc3RyeTogVXBsb2FkUmVnaXN0cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWcsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5wYW5lbE9yZGVyID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldFJhdygnb2JqZWN0RGV0YWlsc1RhYnMnKSB8fCB0aGlzLnBhbmVsT3JkZXI7XG4gICAgdGhpcy51bmRvY2tXaW5BY3RpdmUgPSBDb250ZW50UHJldmlld1NlcnZpY2UudW5kb2NrV2luQWN0aXZlKCk7XG5cbiAgICB0aGlzLmFnZW50U2VydmljZS5zZXRBZ2VudFN0YXR1cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb25uZWN0YWdlbnQnXSkuc3Vic2NyaWJlKChoYXNTdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtxdWVyeVBhcmFtczoge2Nvbm5lY3RhZ2VudDogbnVsbH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgLy8gb25UYWJTcGxpdChlOiBUYWJTcGxpdEV2ZW50KSB7XG4gIC8vICAgdGhpcy5zcGxpdFRhYkNvbnRhaW5lcj8uYWRkVGFiKGUudGFiLCB0cnVlLCBlLnZpZXcpO1xuICAvLyAgIHRoaXMuc3BsaXQgPSAhIXRoaXMuc3BsaXRUYWJDb250YWluZXIudGFicz8ubGVuZ3RoO1xuICAvLyB9XG4gIC8vIG9uVGFiUmVtb3ZlKGU6IFRhYlNwbGl0RXZlbnQpIHtcbiAgLy8gICB0aGlzLmZpcnN0VGFiQ29udGFpbmVyPy5hZGRUYWIoZS50YWIsIHRydWUsIGUudmlldyk7XG4gIC8vICAgdGhpcy5zcGxpdCA9ICEhdGhpcy5zcGxpdFRhYkNvbnRhaW5lci50YWJzPy5sZW5ndGg7XG4gIC8vIH1cblxuICBwcml2YXRlIGdldERtc1BhcmFtcyhkYXRhOiBhbnkpOiBEbXNQYXJhbXMge1xuICAgIHJldHVybiBkYXRhID8gey4uLmRhdGEsIHR5cGU6IGRhdGEudHlwZU5hbWUgfHwgZGF0YS50eXBlfSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XG5cbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pXG4gICAgICAgICAgLnNlbGVjdGlvbiRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG1zUGFyYW1zID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMF0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICAgIHRoaXMuZG1zUGFyYW1zMiA9IHRoaXMucGFyc2VEbXNQYXJhbXMocmVzWzFdKSBhcyBEbXNQYXJhbXM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgICAuZm9jdXMkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkRG1zT2JqZWN0KHRoaXMucGFyc2VEbXNQYXJhbXMocmVzKSBhcyBEbXNQYXJhbXMpLnN1YnNjcmliZSgocmVzOiBEbXNPYmplY3QpID0+IHtcbiAgICAgICAgICAgICAgLy8gcmVmcmVzaGluZyBvYmplY3QgZGV0YWlscyBtYXkgcmVzdWx0IGluIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0XG4gICAgICAgICAgICAgIC8vIHNvIHdlJ2xsIHVzZSB0aGlzIHRyaWdnZXIgdG8gYWxzbyBlbWl0dCB0aG9zZSBjaGFuZ2VzIHRvIG90aGVyIGxpc3RlbmluZyBjb21wb25lbnRzXG4gICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0gJiYgcmVzICYmICh0aGlzLml0ZW0uaWQgPT09IHJlcy5pZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCByZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuZG1zT2JqZWN0ID0gcmVzO1xuICAgICAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFV0aWxzLnRocm93KChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaENvbnRlbnQoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDbGlja1Rocm91Z2gpIHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IHRydWU7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcbiAgICB9LCA1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbTogRG1zT2JqZWN0LCBmb3JtRGF0YT86IGFueSkge1xuICAgIGNvbnN0IHtpZCwgZGF0YSwgdHlwZSwgY3JlYXRlZCwgbW9kaWZpZWQsIGNvbnRlbnQsIGNvbnRlbnRGaWxlTmFtZSwgY29udGVudEZpbGVTaXplLCB2ZXJzaW9ufSA9IGl0ZW07XG5cbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1cbiAgICAgIC5nZXRPYmplY3RUeXBlRm9ybSh0eXBlLm5hbWUsICdFRElUJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZm9ybSA9PiB7XG4gICAgICAgICAgbGV0IGluZGV4RGF0YVByZXZpZXcgPSB7XG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgZGF0YTogZm9ybURhdGEgfHwgZGF0YVxuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IGJhc2VwYXJhbXM6IEJhc2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUubmFtZSxcbiAgICAgICAgICAgIGNyZWF0ZWRPbjogbmV3IERhdGUoY3JlYXRlZC5vbiksXG4gICAgICAgICAgICBtb2RpZmllZE9uOiBuZXcgRGF0ZShtb2RpZmllZC5vbiksXG4gICAgICAgICAgICBjcmVhdGVkQnk6IGAke2NyZWF0ZWQuYnkudGl0bGV9ICgke2NyZWF0ZWQuYnkubmFtZX0pYCxcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6IGAke21vZGlmaWVkLmJ5LnRpdGxlfSAoJHttb2RpZmllZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgY29udGVudEZpbGVOYW1lOiBjb250ZW50RmlsZU5hbWUgPyBjb250ZW50RmlsZU5hbWUgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudEZpbGVTaXplOiBjb250ZW50RmlsZVNpemUgPyBOdW1iZXIoY29udGVudEZpbGVTaXplKSA6IG51bGwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IDAsXG4gICAgICAgICAgICBtaW1lR3JvdXA6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1lZ3JvdXAgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIGRpZ2VzdDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLmRpZ2VzdCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudElkOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuaWQgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0ubWltZXR5cGUgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7aW5kZXhEYXRhUHJldmlldywgYmFzZXBhcmFtc307XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgb25IYXNFcnJvcihoYXNFcnJvciA9IGZhbHNlLCBub2Rtc29iamVjdCA9IGZhbHNlLCBzaG93TG9hZGVyID0gZmFsc2UpIHtcbiAgICB0aGlzLmhhc0Vycm9yID0gaGFzRXJyb3I7XG4gICAgdGhpcy5ub2Rtc29iamVjdCA9IG5vZG1zb2JqZWN0O1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHNob3dMb2FkZXI7XG4gICAgdGhpcy5oYXNDb250ZW50LmVtaXQoIWhhc0Vycm9yKTtcbiAgfVxuXG4gIGxvYWREbXNPYmplY3QocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICBpZiAoIXRoaXMuZW5hYmxlQ29tcGFyZSAmJiBwYXJhbXMpIHtcbiAgICAgIGRlbGV0ZSBwYXJhbXMudmVyc2lvbjtcbiAgICB9XG4gICAgLy8gY2hlY2sgZm9yIHZhbGlkIGlkXG4gICAgcmV0dXJuIHBhcmFtcz8uaWQ/Lmxlbmd0aCA9PT0gMzIgPyB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0QnlQYXJhbXMocGFyYW1zKSA6IG9mKG51bGwpO1xuICB9XG5cbiAgZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKSB7XG4gICAgdGhpcy5iYWNrZW5kLmRvd25sb2FkQ29udGVudChbdGhpcy5pdGVtXSk7XG4gIH1cblxuICBzaG93QWN0aW9ucygpIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW3RoaXMuaXRlbSwgdGhpcy5pdGVtMl0uZmlsdGVyKHYgPT4gdik7XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNob3dBY3Rpb25zKGFjdGlvbnMsICdETVNfT0JKRUNUJyk7XG4gIH1cblxuICBvcGVuT2JqZWN0KGlkLCBfdHlwZT8pIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczogeyd0eXBlJzogX3R5cGV9fTtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgaWRdLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvLyBleGVjdXRlZCB3aGVuIHRoZSBkbXMgb2JqZWN0IGNoYW5nZWQgZHVlIHRvIHNhdmluZyBpdHMgaW5kZXhkYXRhXG4gIG9uSW5kZXhEYXRhU2F2ZWQoZm9ybURhdGEsIGl0ZW0pIHtcbiAgICBpZiAoIXRoaXMuaXRlbSkge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5pdGVtMikge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3MiA9IG51bGw7XG4gICAgICB0aGlzLmJhc2VwYXJhbXMyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbSwgZm9ybURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zMiA9IGRhdGEuYmFzZXBhcmFtcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCByZWZlcmVuY2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLml0ZW0uY29udGV4dEZvbGRlciA/IHRoaXMuaXRlbS5jb250ZXh0Rm9sZGVyLnRpdGxlIDogdGhpcy5pdGVtLnRpdGxlO1xuICB9XG5cbiAgaXNKb3VybmFsT2JqZWN0KGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS50eXBlLnN1cGVydHlwZXMuZmluZChzVCA9PiBzVCA9PT0gJ3N5c2pvdXJuYWxvYmplY3QnKTtcbiAgfVxuXG4gIGhhc1NpZ25pbmdPYmplY3RUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGVzKCkuZmluZChvYmplY3RUeXBlID0+IG9iamVjdFR5cGUuc3VwZXJ0eXBlcy5pbmNsdWRlcygneXV2c2lnbmluZycpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3Vic2NyaXB0aW9uSWNvblRvb2x0aXAoaXRlbTogRG1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgdG9vbHRpcCA9ICcnO1xuICAgIGNvbnN0IG1vZGVzID0gdGhpcy5pdGVtLnN1YnNjcmlwdGlvbnMubWFwKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24ubW9kZSk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcyA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKSB8fCAobW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQpICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKSAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpO1xuICAgIGlmIChzdWJzY3JpYmVkVG9BbGxDaGFuZ2VzKSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LnN1YnNjcmlwdGlvbi5pY29uLnRvb2x0aXAuYWxsQ2hhbmdlcycpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdWJzY3JpYmVkVG9NZXRhQ2hhbmdlc09ubHkpIHtcbiAgICAgIHRvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3Quc3Vic2NyaXB0aW9uLmljb24udG9vbHRpcC5tZXRhJyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmNvbnRlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5pZCA9PT0gZXZlbnQuZGF0YS50YXJnZXQuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc1BhcmFtcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIGxldCBwYW5lbHMgPSB0aGlzLnRhYlBhbmVscy50b0FycmF5KCk7XG4gICAgLy8gdGhpcy50YWJQbHVnaW5zLmZvckVhY2gocCA9PiBwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpO1xuICAgIC8vIHRoaXMuZXh0ZXJuYWxQYW5lbHMucmVzZXQocGFuZWxzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwib2JqZWN0LWRldGFpbF9fbG9hZGVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICYmICFoYXNFcnJvcjsgZWxzZSBub0l0ZW1cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZCBlby1oZWFkLXRhYnNcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtvYmplY3RUeXBlXT1cIml0ZW0udHlwZVwiIFtpY29uVGl0bGVdPVwiaXRlbS50eXBlLmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JlZmVyZW5jZTsgZWxzZSB0cGxIZWFkUmVmZXJlbmNlXCI+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiICpuZ0lmPVwiIXJlY3ljbGViaW5UYWJzXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlLXJlZnJlc2gnOiBwcmV2ZW50Q2xpY2tUaHJvdWdofVwiIChjbGljayk9XCJyZWZyZXNoQ29udGVudCgpXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gc3luYy10YWItYnRuXCIgKm5nSWY9XCJlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFic1wiIFtuZ0NsYXNzXT1cInsnZW5hYmxlZCc6IGVuYWJsZVN5bmN9XCJcbiAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbGluay5zdmcnXCIgW2ljb25UaXRsZV09XCInZW8udmVyc2lvbnMuZGV0YWlsLmdsdWUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZW5hYmxlU3luYyA9ICFlbmFibGVTeW5jXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgPGVvLWZhdm9yaXRlLWljb24gW2l0ZW1dPVwiaXRlbVwiICpuZ0lmPVwiIWVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzICYmIGNhcGFiaWxpdGllcy5mYXZvcml0ZXMgJiYgIWlzSm91cm5hbE9iamVjdChpdGVtKVwiPlxuICAgICAgICAgICAgPC9lby1mYXZvcml0ZS1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gb2MtYnV0dG9uXCIgKm5nSWY9XCIhZW5hYmxlQ29tcGFyZSAmJiBpdGVtLmNvbnRlbnRcIiAoY2xpY2spPVwiZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZWRpdC1pY29uIFtpdGVtXT1cIml0ZW1cIiAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBpdGVtLmNvbnRlbnQgJiYgaXRlbS5yaWdodHMuZWRpdCAmJiAoYWdlbnRJc0Nvbm5lY3RlZCQgfCBhc3luYykgJiYgIWl0ZW0uaXNGaW5hbGl6ZWRcIj5cbiAgICAgICAgICAgIDwvZW8tZWRpdC1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYW0tYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RwbEhlYWRSZWZlcmVuY2U+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbiByZWZlcmVuY2UgcHJpbWFyeVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCIoJ2VvLm9iamVjdC5yZWZlcmVuY2UudG9vbHRpcCcgfCB0cmFuc2xhdGU6e3RpdGxlOnJlZmVyZW5jZVRpdGxlfSlcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9vYmplY3QnLCBpdGVtLmlkXVwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7dHlwZTogaXRlbS50eXBlTmFtZX1cIj57eydlby5vYmplY3QucmVmZXJlbmNlLm9wZW4nfHRyYW5zbGF0ZX19PC9hPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1zdGF0dXMtaWNvbnNcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImNvbnRlbnQtbGlua1wiIFt0aXRsZV09XCInZW8ub2JqZWN0LmNvbnRlbnRsaW5rLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJpdGVtLmNvbnRlbnQ/LmxpbmtlZFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCInL29iamVjdC8nICsgaXRlbS5jb250ZW50LmlkXCIgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiBpdGVtLmNvbnRlbnQudHlwZX1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7J2VvLm9iamVjdC5jb250ZW50bGluaycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdWJzY3JpcHRpb24taWNvblwiICpuZ0lmPVwiaXRlbS5zdWJzY3JpcHRpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zdWJzY3JpcHRpb24uc3ZnJ1wiIFtpY29uVGl0bGVdPVwic3Vic2NyaXB0aW9uSWNvblRvb2x0aXBcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJyZXN1Ym1pc3Npb24taWNvblwiICpuZ0lmPVwiaXRlbS5yZXN1Ym1pc3Npb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZXN1Ym1pc3Npb24uc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QucmVzdWJtaXNzaW9uLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2hhcmVkLWljb25cIiAqbmdJZj1cIml0ZW0uYWRkaXRpb25hbHZpc2liaWxpdHkubGVuZ3RoICYmICFyZWN5Y2xlYmluVGFic1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2hhcmUuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNoYXJlZC50b29sdGlwJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImxvY2tcIiBbbmdDbGFzc109XCJ7J215TG9jayc6IGl0ZW0ubG9jay5ieS5tZX1cIiAqbmdJZj1cIml0ZW0ubG9ja1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19sb2NrLnN2ZydcIiBbaWNvblRpdGxlXT1cImxvY2tUb29sdGlwXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiZmluYWxpemVkLWljb25cIiAqbmdJZj1cIml0ZW0uaXNGaW5hbGl6ZWRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maW5hbGl6ZWQuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QuZmluYWxpemVkLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gaW5wcm9jZXNzXCIgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnaW5wcm9jZXNzJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5pbnByb2Nlc3MnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gc2lnbmVkXCIgKm5nSWY9XCJpdGVtLmRhdGEueXV2c2lnc3RhdHVzID09PSAnc2lnbmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5zaWduZWQnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cblxuICAgIDx5dmMtc3BsaXQtdGFicyBbbGF5b3V0U2V0dGluZ3NJRF09XCJjYWNoZUxheW91dFwiPlxuICAgICAgPCEtLSBzdW1tYXJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc3VtbWFyeScsIGxhYmVsOiAnZW8ub2JqZWN0LnN1bW1hcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleERhdGFQcmV2aWV3XCIgW2Jhc2VwYXJhbXNdPVwiYmFzZXBhcmFtc1wiIFtkbXNPYmplY3RdPVwiaXRlbVwiXG4gICAgICAgICAgW2VuYWJsZVZlcnNpb25zXT1cIiFlbmFibGVDb21wYXJlXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIG1ldGFkYXRhIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaW5kZXhkYXRhJywgbGFiZWw6ICdlby5vYmplY3QuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1mb3JtLWVkaXQgW2Rtc09iamVjdF09XCJpdGVtXCIgKGluZGV4RGF0YVNhdmVkKT1cIm9uSW5kZXhEYXRhU2F2ZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlIHx8IGlzUmVmZXJlbmNlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gcHJldmlldyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3ByZXZpZXcnLCBsYWJlbDogJ2VvLm9iamVjdC5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwiaXRlbVwiIFt1c2VWZXJzaW9uXT1cIml0ZW0uaWQgPT09IGl0ZW0uY29udGVudD8uaWRcIlxuICAgICAgICAgIFtzZWFyY2hUZXJtXT1cInNlYXJjaFRlcm1cIiAjdmlld2VyPjwvZW8tbWVkaWE+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBoaXN0b3J5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ub2JqZWN0Lmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWhpc3RvcnkgW3BhcmFtc109XCJ7aWQ6IGl0ZW0uaWQsIHR5cGU6IGl0ZW0udHlwZT8ucW5hbWV9XCI+XG4gICAgICAgIDwvZW8tb2JqZWN0LWhpc3Rvcnk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBsaW5rcyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2xpbmtzJywgbGFiZWw6ICdlby5vYmplY3QubGlua3MudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWxpbmtzIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tb2JqZWN0LWxpbmtzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gc2lnbmF0dXJlIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc2lnbmF0dXJlJywgbGFiZWw6ICdlby5vYmplY3Quc2lnbmF0dXJlLXRhYi50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1zaWduYXR1cmUtdGFiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tc2lnbmF0dXJlLXRhYj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC95dmMtc3BsaXQtdGFicz5cbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICBcbiAgICA8IS0tIDx5dmMtc3BsaXQtdmlldyBbbGF5b3V0U2V0dGluZ3NJRF09XCIneXZjLnNwbHR2aWV3LnRlc3Qub25lJ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuICAgICAgICA8eXZjLXRhYnMgI2ZpcnN0VGFiQ29udGFpbmVyICh0YWJTcGxpdCk9XCJvblRhYlNwbGl0KCRldmVudClcIlxuICAgICAgICAgIFt0YWJTcGxpdEVuYWJsZWRdPVwiZmlyc3RUYWJDb250YWluZXIudGFicy5sZW5ndGggPiAxXCIgW2NhY2hlVmlld3NdPVwiY2FjaGVWaWV3c1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbaW5kZXhkYXRhXT1cImluZGV4RGF0YVByZXZpZXdcIiBbYmFzZXBhcmFtc109XCJiYXNlcGFyYW1zXCIgW2Rtc09iamVjdF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgW2VuYWJsZVZlcnNpb25zXT1cIiFlbmFibGVDb21wYXJlXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2luZGV4ZGF0YScsIGxhYmVsOiAnZW8ub2JqZWN0LmluZGV4ZGF0YS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICA8ZW8tb2JqZWN0LWZvcm0tZWRpdCBbZG1zT2JqZWN0XT1cIml0ZW1cIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleERhdGFTYXZlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlIHx8IGlzUmVmZXJlbmNlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAncHJldmlldycsIGxhYmVsOiAnZW8ub2JqZWN0LmNvbnRlbnQudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwiaXRlbVwiIFt1c2VWZXJzaW9uXT1cIml0ZW0uaWQgPT09IGl0ZW0uY29udGVudD8uaWRcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCIgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ub2JqZWN0Lmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW9iamVjdC1oaXN0b3J5IFtwYXJhbXNdPVwie2lkOiBpdGVtLmlkLCB0eXBlOiBpdGVtLnR5cGU/LnFuYW1lfVwiPlxuICAgICAgICAgICAgPC9lby1vYmplY3QtaGlzdG9yeT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2xpbmtzJywgbGFiZWw6ICdlby5vYmplY3QubGlua3MudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW9iamVjdC1saW5rcyBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLW9iamVjdC1saW5rcz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3NpZ25hdHVyZScsIGxhYmVsOiAnZW8ub2JqZWN0LnNpZ25hdHVyZS10YWIudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLXNpZ25hdHVyZS10YWIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1zaWduYXR1cmUtdGFiPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXRhYnM+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiIFt2aXNpYmxlXT1cInNwbGl0XCI+XG4gICAgICAgIDx5dmMtdGFicyAjc3BsaXRUYWJDb250YWluZXIgKHRhYlJlbW92ZSk9XCJvblRhYlJlbW92ZSgkZXZlbnQpXCI+PC95dmMtdGFicz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC95dmMtc3BsaXQtdmlldz4gLS0+XG5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxzcGFuIGNsYXNzPVwibm90LWZvdW5kXCIgKm5nSWY9XCJub2Rtc29iamVjdFwiIHRyYW5zbGF0ZT5lby5icG0ubm9kbXNvYmplY3Q8L3NwYW4+XG4gIDxlby1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIXNob3dMb2FkZXJcIlxuICAgIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=