raise-common-lib 0.0.196 → 0.0.198

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 (59) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +99 -44
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/dialog/common-dialog/index.component.js +12 -3
  7. package/esm2015/lib/dialog/new-action-notification/new-action-notification.component.js +1 -1
  8. package/esm2015/lib/form/drawer-form/drawer-form.component.js +72 -39
  9. package/esm2015/lib/form/richtexteditor/index.component.js +1 -1
  10. package/esm2015/lib/layout/drawer/index.component.js +1 -1
  11. package/esm2015/lib/layout/page-tab/index.component.js +1 -1
  12. package/esm5/lib/dialog/common-dialog/index.component.js +12 -3
  13. package/esm5/lib/dialog/new-action-notification/new-action-notification.component.js +1 -1
  14. package/esm5/lib/form/drawer-form/drawer-form.component.js +85 -39
  15. package/esm5/lib/form/richtexteditor/index.component.js +1 -1
  16. package/esm5/lib/layout/drawer/index.component.js +1 -1
  17. package/esm5/lib/layout/page-tab/index.component.js +1 -1
  18. package/fesm2015/raise-common-lib.js +86 -44
  19. package/fesm2015/raise-common-lib.js.map +1 -1
  20. package/fesm5/raise-common-lib.js +99 -44
  21. package/fesm5/raise-common-lib.js.map +1 -1
  22. package/lib/dialog/common-dialog/index.component.d.ts +1 -0
  23. package/lib/form/drawer-form/drawer-form.component.d.ts +7 -1
  24. package/package.json +1 -1
  25. package/raise-common-lib.metadata.json +1 -1
  26. package/src/assets/img/arrow_right.svg +4 -4
  27. package/src/assets/img/calendar-disabled.svg +6 -6
  28. package/src/assets/img/calendar.svg +6 -6
  29. package/src/assets/img/calendar_arrow_left.svg +3 -3
  30. package/src/assets/img/calendar_arrow_right.svg +3 -3
  31. package/src/assets/img/checked-vector.svg +3 -3
  32. package/src/assets/img/dialog-close.svg +4 -4
  33. package/src/assets/img/dialog-grow.svg +6 -6
  34. package/src/assets/img/dialog-shrink.svg +6 -6
  35. package/src/assets/img/plus.svg +4 -4
  36. package/src/assets/img/search.svg +4 -4
  37. package/src/assets/img/shrink-icon.svg +6 -6
  38. package/src/assets/img/time-disabled.svg +4 -4
  39. package/src/assets/img/time.svg +4 -4
  40. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  41. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  42. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  43. package/src/assets/img/toolbar-action-combine.svg +4 -4
  44. package/src/assets/img/toolbar-action-edit.svg +4 -4
  45. package/src/assets/img/toolbar-action-expand.svg +7 -7
  46. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  47. package/src/assets/img/toolbar-action-lock.svg +6 -6
  48. package/src/assets/img/toolbar-action-preview.svg +7 -7
  49. package/src/assets/img/toolbar-action-publish.svg +5 -5
  50. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  51. package/src/assets/img/toolbar-action-rename.svg +7 -7
  52. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  53. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  54. package/src/assets/img/toolbar-action-settle.svg +7 -7
  55. package/src/assets/img/toolbar-action-share.svg +5 -5
  56. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  57. package/src/assets/img/toolbar-action-sync.svg +4 -4
  58. package/src/assets/img/toolbar-action-template.svg +6 -6
  59. package/src/assets/img/toolbar-action-workflow.svg +9 -9
@@ -224,7 +224,7 @@ DrawerComponent.decorators = [
224
224
  { type: Component, args: [{
225
225
  selector: "rs-drawer",
226
226
  template: "<div #element id=\"rs-drawer-container\" class=\"rs-drawer-container\">\r\n <div class=\"rs-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n #drawer\r\n class=\"rs-drawer\"\r\n [attr.data-mode]=\"config.mode\"\r\n [attr.data-opened]=\"isOpened ? 'yes' : 'no'\"\r\n [attr.data-animation]=\"useAnimation\"\r\n [hidden]=\"hiddenDrawer\"\r\n (animationend)=\"onAnimationEnd()\"\r\n >\r\n <div class=\"drawer-header\" #header>\r\n <button class=\"drawer-return-button\" (click)=\"hide()\">\r\n <span class=\"drawer-sub-title\" *ngIf=\"config.subTitle\">\r\n {{ config.subTitle }}\r\n </span>\r\n </button>\r\n <div class=\"drawer-title\">{{ config.title }}</div>\r\n <div class=\"drawer-header-slot\" #headerSlot></div>\r\n </div>\r\n <div class=\"drawer-top-slot\" #topSlot></div>\r\n <div class=\"drawer-content-box\">\r\n <div class=\"drawer-content\" #content>\r\n <div class=\"drawer-content-container\">\r\n <ng-template #dynamicComponentContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"drawer-toolbar-slot\" #toolbarSlot></div>\r\n </div>\r\n</div>\r\n",
227
- styles: [":host{display:block;height:100%}#rs-drawer-container{height:100%}.rs-drawer-container{height:100%;background-color:transparent;overflow:hidden;position:relative}.rs-drawer-container .rs-drawer-content{width:100%;height:100%;overflow:auto;margin-right:0!important}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar{width:5px;height:5px;background:#fff;position:static;z-index:999;border-radius:10px}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar-thumb{background:#eaedf0}.rs-drawer-container .rs-drawer{width:100%;height:100%;border-left:none;background-color:transparent;overflow:visible;pointer-events:none;opacity:0;display:flex;flex-flow:column nowrap;position:absolute;z-index:2;top:0;left:100%}.rs-drawer-container .rs-drawer[data-opened=yes]{left:0;opacity:1}.rs-drawer-container .rs-drawer[data-animation=yes][data-opened=yes]{-webkit-animation:.5s ease-in-out drawer-open;animation:.5s ease-in-out drawer-open}@-webkit-keyframes drawer-open{from{left:100%;opacity:0}to{left:0;opacity:1}}@keyframes drawer-open{from{left:100%;opacity:0}to{left:0;opacity:1}}.rs-drawer-container .rs-drawer[data-animation=yes][data-opened=no]{-webkit-animation:.5s ease-in-out drawer-close;animation:.5s ease-in-out drawer-close}@-webkit-keyframes drawer-close{from{left:0;opacity:1}to{left:100%;opacity:0}}@keyframes drawer-close{from{left:0;opacity:1}to{left:100%;opacity:0}}.rs-drawer-container .rs-drawer[hidden]{display:none}.rs-drawer-container .rs-drawer .drawer-header{flex:none;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;box-sizing:content-box;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button{flex:none;display:flex;flex-flow:row nowrap;align-items:center;padding:0;border:none;background-color:transparent;cursor:pointer}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button::before{content:url(../../../assets/img/drawer-back.svg);width:24px;height:24px;margin-right:8px;transition:transform 125ms ease-in-out}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button:hover::before{transform:translateX(-2px)}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button .drawer-sub-title{margin-right:12px;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title{flex:none;min-height:14px;padding:0 12px;border-left:1px solid #bdc4ca;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title:empty{padding:0}.rs-drawer-container .rs-drawer .drawer-content-box{flex:auto;height:0;background-color:#f7fafb;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-content{height:100%;padding:0 20px;border:1px solid #ebedf0;border-radius:15px;background-color:#fff;display:flex;flex-flow:column nowrap}.rs-drawer-container .rs-drawer .drawer-content .drawer-content-container{flex:auto;overflow:hidden auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot{flex:none;height:32px;margin-left:auto;display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot:empty{display:none}.rs-drawer-container .rs-drawer .drawer-top-slot{flex:none;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-top-slot:empty{height:var(--drawer-top,0);pointer-events:none}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header{height:46px;padding:0 12px 0 8px;background-color:#f7fafb}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-title{color:#1f3f5c;font-size:15px;font-weight:700;line-height:18px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content{padding-bottom:20px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-top-slot:empty+.drawer-content-box{padding-top:calc((var(--drawer-top,0) + 1) * 16px)}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header{height:24px;padding:6px 0;border-bottom:1px solid #eaedf0}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{color:#44566c;font-size:12px;line-height:14px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{font-weight:700}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px;padding-left:8px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot{width:100%;padding:16px 0;box-sizing:content-box;border-top:1px solid #eaedf0}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar]{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:12px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:6px;min-width:80px;height:32px;padding:0 12px;border:1px solid #adb5bd;border-radius:4px;background-color:#fff;cursor:pointer;color:#44566c;font-size:13px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:hover{border-color:#6c7c90}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:disabled{opacity:1!important;border-color:#6c7c9066;color:#44566c66;cursor:unset}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary{border:none;background-color:#1364b3;color:#fff}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:hover{background-color:#176bca}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:disabled{background-color:#1364b366}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button img{width:16px;height:16px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=outer] .drawer-toolbar-slot [drawer-toolbar] button{height:26px;font-size:12px;line-height:14px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot [drawer-toolbar] button img{display:none}"]
227
+ styles: [":host{display:block;height:100%}#rs-drawer-container{height:100%}.rs-drawer-container{height:100%;background-color:transparent;overflow:hidden;position:relative}.rs-drawer-container .rs-drawer-content{width:100%;height:100%;overflow:auto;margin-right:0!important}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar{width:5px;height:5px;background:#fff;position:static;z-index:999;border-radius:10px}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar-thumb{background:#eaedf0}.rs-drawer-container .rs-drawer{width:100%;height:100%;border-left:none;background-color:transparent;overflow:visible;pointer-events:none;opacity:0;display:flex;flex-flow:column nowrap;position:absolute;z-index:2;top:0;left:100%}.rs-drawer-container .rs-drawer[data-opened=yes]{left:0;opacity:1}.rs-drawer-container .rs-drawer[data-animation=yes][data-opened=yes]{-webkit-animation:.5s ease-in-out drawer-open;animation:.5s ease-in-out drawer-open}@-webkit-keyframes drawer-open{from{left:100%;opacity:0}to{left:0;opacity:1}}@keyframes drawer-open{from{left:100%;opacity:0}to{left:0;opacity:1}}.rs-drawer-container .rs-drawer[data-animation=yes][data-opened=no]{-webkit-animation:.5s ease-in-out drawer-close;animation:.5s ease-in-out drawer-close}@-webkit-keyframes drawer-close{from{left:0;opacity:1}to{left:100%;opacity:0}}@keyframes drawer-close{from{left:0;opacity:1}to{left:100%;opacity:0}}.rs-drawer-container .rs-drawer[hidden]{display:none}.rs-drawer-container .rs-drawer .drawer-header{flex:none;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;box-sizing:content-box;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button{flex:none;display:flex;flex-flow:row nowrap;align-items:center;padding:0;border:none;background-color:transparent;cursor:pointer}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button::before{content:url(../../assets/img/drawer-back.svg);width:24px;height:24px;margin-right:8px;transition:transform 125ms ease-in-out}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button:hover::before{transform:translateX(-2px)}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button .drawer-sub-title{margin-right:12px;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title{flex:none;min-height:14px;padding:0 12px;border-left:1px solid #bdc4ca;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title:empty{padding:0}.rs-drawer-container .rs-drawer .drawer-content-box{flex:auto;height:0;background-color:#f7fafb;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-content{height:100%;padding:0 20px;border:1px solid #ebedf0;border-radius:15px;background-color:#fff;display:flex;flex-flow:column nowrap}.rs-drawer-container .rs-drawer .drawer-content .drawer-content-container{flex:auto;overflow:hidden auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot{flex:none;height:32px;margin-left:auto;display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot:empty{display:none}.rs-drawer-container .rs-drawer .drawer-top-slot{flex:none;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-top-slot:empty{height:var(--drawer-top,0);pointer-events:none}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header{height:46px;padding:0 12px 0 8px;background-color:#f7fafb}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-title{color:#1f3f5c;font-size:15px;font-weight:700;line-height:18px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content{padding-bottom:20px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-top-slot:empty+.drawer-content-box{padding-top:calc((var(--drawer-top,0) + 1) * 16px)}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header{height:24px;padding:6px 0;border-bottom:1px solid #eaedf0}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{color:#44566c;font-size:12px;line-height:14px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{font-weight:700}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px;padding-left:8px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot{width:100%;padding:16px 0;box-sizing:content-box;border-top:1px solid #eaedf0}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar]{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:12px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:6px;min-width:80px;height:32px;padding:0 12px;border:1px solid #adb5bd;border-radius:4px;background-color:#fff;cursor:pointer;color:#44566c;font-size:13px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:hover{border-color:#6c7c90}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:disabled{opacity:1!important;border-color:#6c7c9066;color:#44566c66;cursor:unset}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary{border:none;background-color:#1364b3;color:#fff}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:hover{background-color:#176bca}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:disabled{background-color:#1364b366}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button img{width:16px;height:16px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=outer] .drawer-toolbar-slot [drawer-toolbar] button{height:26px;font-size:12px;line-height:14px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot [drawer-toolbar] button img{display:none}"]
228
228
  }] }
229
229
  ];
230
230
  /** @nocollapse */
@@ -66,7 +66,7 @@ RsPageTabComponent.decorators = [
66
66
  { type: Component, args: [{
67
67
  selector: "rs-page-tab",
68
68
  template: "<div class=\"rs-page-list-wrap\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</div>\r\n </ng-template>\r\n <ejs-tab\r\n class=\"rs-tab\"\r\n #tabObj\r\n (selected)=\"onTabClick($event)\"\r\n [animation]=\"animation\"\r\n\t overflowMode=\"Popup\"\r\n heightAdjustMode=\"None\"\r\n [selectedItem]=\"selectedItemIndex\"\r\n >\r\n <e-tabitems>\r\n <e-tabitem *ngFor=\"let item of tabList\">\r\n <ng-template #headerText>\r\n <div>{{ item.title }}</div>\r\n </ng-template>\r\n </e-tabitem>\r\n </e-tabitems>\r\n </ejs-tab>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[tabContentSlot]\"></ng-content>\r\n </div>\r\n</div>\r\n",
69
- styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-tab{padding:0 20px}.rs-page-list-wrap .rs-tab .e-tab-header::before{display:none}.rs-page-list-wrap .rs-tab .e-toolbar-items{gap:32px;min-height:36px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item{border:0}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-wrap{padding:0;border:0;position:relative;height:36px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-wrap::before{content:\" \";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:transparent}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-text{color:#5f6f81;font-family:Arial;font-size:13px;font-style:normal;font-weight:400;line-height:16px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item.e-active .e-tab-wrap::before{background-color:#1f7bff}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item.e-active .e-tab-text{color:#44566c}.rs-page-list-wrap .rs-tab .e-hor-nav{width:24px;height:24px;min-height:24px;top:3px;border-radius:4px;background-color:transparent!important;border:1px solid #eaedf0!important}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons{box-shadow:none;background-color:transparent!important;border-color:transparent!important;background-image:url(../../../assets/img/icon-more.svg);background-size:14px 3px;background-repeat:no-repeat;background-position:4px 14px}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons::before{display:none}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons:hover{background-color:#eff5fb!important;border-color:#b1d0fc!important;background-image:url(../../../assets/img/icon-more-active.svg)}.rs-page-list-wrap .rs-tab .e-toolbar-pop{min-width:160px;border-radius:10px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25);padding:8px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap{padding:0 8px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap .e-tab-text{color:#44566c;font-family:Arial;font-size:13px;font-weight:400;line-height:16px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap:hover{border-radius:6px;background:rgba(31,123,255,.05)}.rs-page-list-wrap .rs-grid-wrap{flex:1;height:0}"]
69
+ styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-tab{padding:0 20px}.rs-page-list-wrap .rs-tab .e-tab-header::before{display:none}.rs-page-list-wrap .rs-tab .e-toolbar-items{gap:32px;min-height:36px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item{border:0}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-wrap{padding:0;border:0;position:relative;height:36px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-wrap::before{content:\" \";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:transparent}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item .e-tab-text{color:#5f6f81;font-family:Arial;font-size:13px;font-style:normal;font-weight:400;line-height:16px}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item.e-active .e-tab-wrap::before{background-color:#1f7bff}.rs-page-list-wrap .rs-tab .e-toolbar-items .e-toolbar-item.e-active .e-tab-text{color:#44566c}.rs-page-list-wrap .rs-tab .e-hor-nav{width:24px;height:24px;min-height:24px;top:3px;border-radius:4px;background-color:transparent!important;border:1px solid #eaedf0!important}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons{box-shadow:none;background-color:transparent!important;border-color:transparent!important;background-image:url(../../assets/img/icon-more.svg);background-size:14px 3px;background-repeat:no-repeat;background-position:4px 14px}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons::before{display:none}.rs-page-list-wrap .rs-tab .e-hor-nav .e-icons:hover{background-color:#eff5fb!important;border-color:#b1d0fc!important;background-image:url(../../assets/img/icon-more-active.svg)}.rs-page-list-wrap .rs-tab .e-toolbar-pop{min-width:160px;border-radius:10px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25);padding:8px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap{padding:0 8px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap .e-tab-text{color:#44566c;font-family:Arial;font-size:13px;font-weight:400;line-height:16px}.rs-page-list-wrap .rs-tab .e-toolbar-pop .e-toolbar-item .e-tab-wrap:hover{border-radius:6px;background:rgba(31,123,255,.05)}.rs-page-list-wrap .rs-grid-wrap{flex:1;height:0}"]
70
70
  }] }
71
71
  ];
72
72
  RsPageTabComponent.propDecorators = {
@@ -13,12 +13,13 @@ var CommonDialogComponent = /** @class */ (function () {
13
13
  this.hideCloseIcon = false;
14
14
  this.hideCloseBtn = false;
15
15
  this.hideSaveBtn = false;
16
- this.hideDiscardBtn = false;
16
+ this.hideDiscardBtn = true;
17
17
  this.saveBtnLabel = "";
18
18
  this.cancelBtnLabel = "";
19
19
  this.discardBtnLabel = "";
20
20
  this.showErrorIcon = false;
21
21
  this.showZoomBtn = false;
22
+ this.customSave = false;
22
23
  // 显示相关属性
23
24
  this.dialogStyle = {};
24
25
  this.size = "";
@@ -91,7 +92,12 @@ var CommonDialogComponent = /** @class */ (function () {
91
92
  * @return {?}
92
93
  */
93
94
  function () {
94
- this.dialogRef.close("save");
95
+ if (this.customSave) {
96
+ this.saveEmit.emit();
97
+ }
98
+ else {
99
+ this.dialogRef.close("save");
100
+ }
95
101
  };
96
102
  /**
97
103
  * @return {?}
@@ -139,6 +145,7 @@ var CommonDialogComponent = /** @class */ (function () {
139
145
  discardBtnLabel: [{ type: Input }],
140
146
  showErrorIcon: [{ type: Input }],
141
147
  showZoomBtn: [{ type: Input }],
148
+ customSave: [{ type: Input }],
142
149
  onCloseRequest: [{ type: Input }],
143
150
  dialogStyle: [{ type: Input }],
144
151
  size: [{ type: Input }],
@@ -175,6 +182,8 @@ if (false) {
175
182
  /** @type {?} */
176
183
  CommonDialogComponent.prototype.showZoomBtn;
177
184
  /** @type {?} */
185
+ CommonDialogComponent.prototype.customSave;
186
+ /** @type {?} */
178
187
  CommonDialogComponent.prototype.onCloseRequest;
179
188
  /** @type {?} */
180
189
  CommonDialogComponent.prototype.dialogStyle;
@@ -197,4 +206,4 @@ if (false) {
197
206
  /** @type {?} */
198
207
  CommonDialogComponent.prototype.dialogRef;
199
208
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kaWFsb2cvY29tbW9uLWRpYWxvZy9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQ7SUFnQ0UsK0JBQW1CLFNBQThDO1FBQTlDLGNBQVMsR0FBVCxTQUFTLENBQXFDOztRQXZCeEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixnQkFBVyxHQUFHLEtBQUssQ0FBQzs7UUFNcEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFVBQUssR0FBRyxRQUFRLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGFBQVEsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNoRSxjQUFTLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFFM0UsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFLekIsaUJBQVksR0FBWSxLQUFLLENBQUM7SUFKc0MsQ0FBQzs7OztJQUtyRSxrREFBa0I7OztJQUFsQjtRQUNFLElBQUksQ0FBQyxZQUFZLEdB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clxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZGlhbG9nXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICAvLyDpmpDol4/lhYPntKDnm7jlhbPlsZ7mgKdcclxuICBASW5wdXQoKSBoaWRlSGVhZGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZUNsb3NlSWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVDbG9zZUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVTYXZlQnRuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZURpc2NhcmRCdG4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzYXZlQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGNhbmNlbEJ0bkxhYmVsID0gXCJcIjtcclxuICBASW5wdXQoKSBkaXNjYXJkQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dFcnJvckljb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Wm9vbUJ0biA9IGZhbHNlO1xyXG5cclxuICAvLyDlhbPpl63liY3nmoTlm57osIPlh73mlbBcclxuICBASW5wdXQoKSBvbkNsb3NlUmVxdWVzdDogRnVuY3Rpb247XHJcblxyXG4gIC8vIOaYvuekuuebuOWFs+WxnuaAp1xyXG4gIEBJbnB1dCgpIGRpYWxvZ1N0eWxlID0ge307XHJcbiAgQElucHV0KCkgc2l6ZSA9IFwiXCI7XHJcbiAgQElucHV0KCkgdGl0bGUgPSBcIkRpYWxvZ1wiO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgc2F2ZUVtaXQ6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZ1bmN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUVtaXQ6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZ1bmN0aW9uPigpO1xyXG5cclxuICBkZWZhdWx0U2l6ZTogc3RyaW5nID0gXCJcIjtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29tbW9uRGlhbG9nQ29tcG9uZW50Pikge31cclxuXHJcbiAgLy8g5o6n5Yi25bqV6YOo5o+S5qe95pyJ5YaF5a655pe26ZqQ6JeP6buY6K6k5oyJ6ZKuXHJcbiAgQENvbnRlbnRDaGlsZChcImZvb3RlclNsb3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGZvb3RlckNvbnRlbnQ6IGFueTtcclxuICBjdXN0b21Gb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLmN1c3RvbUZvb3RlciA9ICEhdGhpcy5mb290ZXJDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICBpZiAodGhpcy5vbkNsb3NlUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLm9uQ2xvc2VSZXF1ZXN0KCkudGhlbigoY29uZmlybWVkKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpcm1lZCkge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJjbG9zZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJjbG9zZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uWm9vbSgpIHtcclxuICAgIGlmICh0aGlzLnNpemUgPT09IFwibGFyZ2VzdFwiKSB7XHJcbiAgICAgIHRoaXMuc2l6ZSA9IHRoaXMuZGVmYXVsdFNpemU7IC8vIOaBouWkjeWIsOWOn+Wni+Wkp+Wwj1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaXplID0gXCJsYXJnZXN0XCI7IC8vIOiuvue9ruS4uuacgOWkp+WMllxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TYXZlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJzYXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25EaXNjYXJkKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJkaXNjYXJkXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJbmZvKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSkgfHwge307XHJcbiAgICB0aGlzLnNhdmVCdG5MYWJlbCA9IHRoaXMuc2F2ZUJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uU0FWRSB8fCBcIi5TQVZFXCI7XHJcbiAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsID1cclxuICAgICAgdGhpcy5jYW5jZWxCdG5MYWJlbCB8fCB0aGlzLnRyYW5zbGF0aW9uLkNBTkNFTCB8fCBcIi5DQU5DRUxcIjtcclxuICAgIHRoaXMuZGVmYXVsdFNpemUgPSB0aGlzLnNpemU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kaWFsb2cvY29tbW9uLWRpYWxvZy9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQ7SUFpQ0UsK0JBQW1CLFNBQThDO1FBQTlDLGNBQVMsR0FBVCxTQUFTLENBQXFDOztRQXhCeEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsS0FBSyxDQUFDOztRQU1uQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsYUFBUSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2hFLGNBQVMsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUUzRSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUt6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztJQUp1QyxDQUFDOzs7O0lBS3RFLGtEQUFrQjs7O0lB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Q25CLHNDQUEwQjs7SUFDMUIsd0NBQXlCOztJQUN6Qix5Q0FBMEU7O0lBQzFFLDBDQUEyRTs7SUFFM0UsNENBQXlCOztJQUl6Qiw4Q0FBa0U7O0lBQ2xFLDZDQUE4Qjs7SUFKbEIsMENBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZGlhbG9nXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICAvLyDpmpDol4/lhYPntKDnm7jlhbPlsZ7mgKdcclxuICBASW5wdXQoKSBoaWRlSGVhZGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZUNsb3NlSWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVDbG9zZUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVTYXZlQnRuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZURpc2NhcmRCdG4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNhdmVCdG5MYWJlbCA9IFwiXCI7XHJcbiAgQElucHV0KCkgY2FuY2VsQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGRpc2NhcmRCdG5MYWJlbCA9IFwiXCI7XHJcbiAgQElucHV0KCkgc2hvd0Vycm9ySWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dab29tQnRuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tU2F2ZSA9IGZhbHNlO1xyXG5cclxuICAvLyDlhbPpl63liY3nmoTlm57osIPlh73mlbBcclxuICBASW5wdXQoKSBvbkNsb3NlUmVxdWVzdDogRnVuY3Rpb247XHJcblxyXG4gIC8vIOaYvuekuuebuOWFs+WxnuaAp1xyXG4gIEBJbnB1dCgpIGRpYWxvZ1N0eWxlID0ge307XHJcbiAgQElucHV0KCkgc2l6ZSA9IFwiXCI7XHJcbiAgQElucHV0KCkgdGl0bGUgPSBcIkRpYWxvZ1wiO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgc2F2ZUVtaXQ6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZ1bmN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUVtaXQ6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZ1bmN0aW9uPigpO1xyXG5cclxuICBkZWZhdWx0U2l6ZTogc3RyaW5nID0gXCJcIjtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29tbW9uRGlhbG9nQ29tcG9uZW50PikgeyB9XHJcblxyXG4gIC8vIOaOp+WItuW6lemDqOaPkuanveacieWGheWuueaXtumakOiXj+m7mOiupOaMiemSrlxyXG4gIEBDb250ZW50Q2hpbGQoXCJmb290ZXJTbG90XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBmb290ZXJDb250ZW50OiBhbnk7XHJcbiAgY3VzdG9tRm9vdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21Gb290ZXIgPSAhIXRoaXMuZm9vdGVyQ29udGVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMub25DbG9zZVJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5vbkNsb3NlUmVxdWVzdCgpLnRoZW4oKGNvbmZpcm1lZCkgPT4ge1xyXG4gICAgICAgIGlmIChjb25maXJtZWQpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKFwiY2xvc2VcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKFwiY2xvc2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblpvb20oKSB7XHJcbiAgICBpZiAodGhpcy5zaXplID09PSBcImxhcmdlc3RcIikge1xyXG4gICAgICB0aGlzLnNpemUgPSB0aGlzLmRlZmF1bHRTaXplOyAvLyDmgaLlpI3liLDljp/lp4vlpKflsI9cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2l6ZSA9IFwibGFyZ2VzdFwiOyAvLyDorr7nva7kuLrmnIDlpKfljJZcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVNhdmUpIHtcclxuICAgICAgdGhpcy5zYXZlRW1pdC5lbWl0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcInNhdmVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRpc2NhcmQoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcImRpc2NhcmRcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKSB8fCB7fTtcclxuICAgIHRoaXMuc2F2ZUJ0bkxhYmVsID0gdGhpcy5zYXZlQnRuTGFiZWwgfHwgdGhpcy50cmFuc2xhdGlvbi5TQVZFIHx8IFwiLlNBVkVcIjtcclxuICAgIHRoaXMuY2FuY2VsQnRuTGFiZWwgPVxyXG4gICAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uQ0FOQ0VMIHx8IFwiLkNBTkNFTFwiO1xyXG4gICAgdGhpcy5kZWZhdWx0U2l6ZSA9IHRoaXMuc2l6ZTtcclxuICB9XHJcbn1cclxuIl19
@@ -89,7 +89,7 @@ var NewActionNotificationComponent = /** @class */ (function () {
89
89
  { type: Component, args: [{
90
90
  selector: "kt-new-action-notification",
91
91
  template: "<div class=\"new-action-notification-container\" [attr.data-collapse]=\"collapsed\">\r\n\t<span\r\n\t\tclass=\"notification-icon\"\r\n\t\t[attr.data-type]=\"config.type === 'Loading' ? 'loading' : 'default'\"\r\n\t\t[attr.data-status]=\"config.status?.toLowerCase()\"\r\n\t\t(click)=\"expandNotification()\"\r\n\t></span>\r\n\t<span\r\n\t\tclass=\"notification-icon notification-loading\"\r\n\t\t*ngIf=\"config.type === 'Progress'\"\r\n\t></span>\r\n\t<div class=\"notification-content\">\r\n\t\t<span *ngIf=\"config.type === 'Detail'\" class=\"notification-title\">\r\n\t\t\t{{ config.title }}\r\n\t\t</span>\r\n\t\t<span class=\"notification-text\">{{ config.message }}</span>\r\n\t\t<a *ngIf=\"config.type === 'Detail'\" class=\"notification-link\">View</a>\r\n\t</div>\r\n\t<button\r\n\t\ttype=\"button\"\r\n\t\tclass=\"notification-close\"\r\n\t\t[attr.data-type]=\"config.type === 'Loading' ? 'loading' : 'default'\"\r\n\t\t(click)=\"closeNotification()\"\r\n\t></button>\r\n</div>\r\n",
92
- styles: ["::ng-deep .new-action-notification{margin:0;padding:64px 12px;background-color:transparent!important;background-image:none!important;box-shadow:none}::ng-deep .mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:none;background-color:transparent}.new-action-notification-container{min-width:320px;max-width:400px;padding:12px;border-radius:10px;background-color:#fff;box-shadow:0 0 8px 0 #00000033;display:flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-end}.new-action-notification-container .notification-icon{flex:none;width:24px;height:24px;margin-right:8px}.new-action-notification-container .notification-icon[data-type=default][data-status=success]::before{content:url(../../../assets/img/notification-status-success.svg)}.new-action-notification-container .notification-icon[data-type=default][data-status=warning]::before{content:url(../../../assets/img/notification-status-warning.svg)}.new-action-notification-container .notification-icon[data-type=default][data-status=error]::before{content:url(../../../assets/img/notification-status-error.svg)}.new-action-notification-container .notification-icon[data-type=loading]{-webkit-animation:2s linear infinite rotate;animation:2s linear infinite rotate}@-webkit-keyframes rotate{from{transform:rotate(360deg)}to{transform:rotate(0)}}@keyframes rotate{from{transform:rotate(360deg)}to{transform:rotate(0)}}.new-action-notification-container .notification-icon[data-type=loading]::before{content:url(../../../assets/img/notification-status-loading.svg)}.new-action-notification-container .notification-close{flex:none;height:24px;margin-left:24px;padding:0;border:none;background-color:transparent}.new-action-notification-container .notification-close[data-type=default]::before{content:url(../../../assets/img/notification-close.svg)}.new-action-notification-container .notification-close[data-type=loading]::before{content:url(../../../assets/img/notification-collapse.svg)}.new-action-notification-container .notification-content{flex:auto;min-height:24px;padding-top:4px;display:flex;flex-flow:column nowrap}.new-action-notification-container .notification-content .notification-title{margin-bottom:8px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:19px}.new-action-notification-container .notification-content .notification-text{color:#1f3f5c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.new-action-notification-container .notification-content .notification-link{margin-top:6px;cursor:pointer;color:#1364b3;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}.new-action-notification-container[data-collapse=true]{padding:0;background-color:transparent;box-shadow:none}.new-action-notification-container[data-collapse=true] .notification-icon{cursor:pointer}.new-action-notification-container[data-collapse=true] .notification-close,.new-action-notification-container[data-collapse=true] .notification-content{display:none}"]
92
+ styles: ["::ng-deep .new-action-notification{margin:0;padding:64px 12px;background-color:transparent!important;background-image:none!important;box-shadow:none}::ng-deep .mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:none;background-color:transparent}.new-action-notification-container{min-width:320px;max-width:400px;padding:12px;border-radius:10px;background-color:#fff;box-shadow:0 0 8px 0 #00000033;display:flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-end}.new-action-notification-container .notification-icon{flex:none;width:24px;height:24px;margin-right:8px}.new-action-notification-container .notification-icon[data-type=default][data-status=success]::before{content:url(../../assets/img/notification-status-success.svg)}.new-action-notification-container .notification-icon[data-type=default][data-status=warning]::before{content:url(../../assets/img/notification-status-warning.svg)}.new-action-notification-container .notification-icon[data-type=default][data-status=error]::before{content:url(../../assets/img/notification-status-error.svg)}.new-action-notification-container .notification-icon[data-type=loading]{-webkit-animation:2s linear infinite rotate;animation:2s linear infinite rotate}@-webkit-keyframes rotate{from{transform:rotate(360deg)}to{transform:rotate(0)}}@keyframes rotate{from{transform:rotate(360deg)}to{transform:rotate(0)}}.new-action-notification-container .notification-icon[data-type=loading]::before{content:url(../../assets/img/notification-status-loading.svg)}.new-action-notification-container .notification-close{flex:none;height:24px;margin-left:24px;padding:0;border:none;background-color:transparent}.new-action-notification-container .notification-close[data-type=default]::before{content:url(../../assets/img/notification-close.svg)}.new-action-notification-container .notification-close[data-type=loading]::before{content:url(../../assets/img/notification-collapse.svg)}.new-action-notification-container .notification-content{flex:auto;min-height:24px;padding-top:4px;display:flex;flex-flow:column nowrap}.new-action-notification-container .notification-content .notification-title{margin-bottom:8px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:19px}.new-action-notification-container .notification-content .notification-text{color:#1f3f5c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.new-action-notification-container .notification-content .notification-link{margin-top:6px;cursor:pointer;color:#1364b3;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}.new-action-notification-container[data-collapse=true]{padding:0;background-color:transparent;box-shadow:none}.new-action-notification-container[data-collapse=true] .notification-icon{cursor:pointer}.new-action-notification-container[data-collapse=true] .notification-close,.new-action-notification-container[data-collapse=true] .notification-content{display:none}"]
93
93
  }] }
94
94
  ];
95
95
  /** @nocollapse */
@@ -29,6 +29,8 @@ var DrawerFormComponent = /** @class */ (function () {
29
29
  this.formChange = new EventEmitter();
30
30
  this.fieldChange = new EventEmitter();
31
31
  this.sections = [];
32
+ this.fieldTypeMap = {};
33
+ this.formFieldMap = {};
32
34
  this.form = {};
33
35
  this.fieldValidMap = {};
34
36
  // 存储 datepicker 的值
@@ -55,14 +57,15 @@ var DrawerFormComponent = /** @class */ (function () {
55
57
  function (changes) {
56
58
  if (changes._sections) {
57
59
  this.sections = filterShowSection(changes._sections.currentValue);
58
- this.form = this.getFormProxy(this.formatForm(this.sections, tslib_1.__assign({}, this.form)));
59
- this.syncFormField();
60
+ this.formatFieldMap();
61
+ this.setForm(tslib_1.__assign({}, this.form, this._form));
60
62
  }
61
63
  if (changes._form) {
62
64
  if (!changes._form.currentValue[FORM_PROXY_TAG]) {
63
- this.form = this.getFormProxy(this.formatForm(this.sections, changes._form.currentValue));
64
- this.syncFormField();
65
- this.formChange.emit(this.form);
65
+ this.setForm(changes._form.currentValue);
66
+ }
67
+ else {
68
+ this.form = changes._form.currentValue;
66
69
  }
67
70
  if (!changes._form.firstChange) {
68
71
  this.checkFormChange(changes._form.previousValue, changes._form.currentValue);
@@ -95,6 +98,13 @@ var DrawerFormComponent = /** @class */ (function () {
95
98
  _this.sectionContainers = containers;
96
99
  _this.customSectionRender(containers);
97
100
  }));
101
+ this.dropdowns.changes.subscribe((/**
102
+ * @param {?} dropdowns
103
+ * @return {?}
104
+ */
105
+ function (dropdowns) {
106
+ _this.dropdowns = dropdowns;
107
+ }));
98
108
  if (this.showAnchor) {
99
109
  this.initAnchorScrollHandler();
100
110
  }
@@ -111,22 +121,7 @@ var DrawerFormComponent = /** @class */ (function () {
111
121
  var _this = this;
112
122
  if (this.customTemplate && containers.length > 0) {
113
123
  /** @type {?} */
114
- var customFields_1 = [];
115
- this.sections.forEach((/**
116
- * @param {?} section
117
- * @return {?}
118
- */
119
- function (section) {
120
- section.fields.forEach((/**
121
- * @param {?} field
122
- * @return {?}
123
- */
124
- function (field) {
125
- if (field.fieldFormType === "Custom") {
126
- customFields_1.push(field);
127
- }
128
- }));
129
- }));
124
+ var customFields_1 = this.fieldTypeMap.Custom || [];
130
125
  containers.forEach((/**
131
126
  * @param {?} container
132
127
  * @param {?} index
@@ -172,6 +167,47 @@ var DrawerFormComponent = /** @class */ (function () {
172
167
  }));
173
168
  }
174
169
  };
170
+ /**
171
+ * @return {?}
172
+ */
173
+ DrawerFormComponent.prototype.formatFieldMap = /**
174
+ * @return {?}
175
+ */
176
+ function () {
177
+ var _this = this;
178
+ this.fieldTypeMap = {};
179
+ this.formFieldMap = {};
180
+ this.sections.forEach((/**
181
+ * @param {?} section
182
+ * @return {?}
183
+ */
184
+ function (section) {
185
+ section.fields.forEach((/**
186
+ * @param {?} field
187
+ * @return {?}
188
+ */
189
+ function (field) {
190
+ if (!_this.fieldTypeMap[field.fieldFormType]) {
191
+ _this.fieldTypeMap[field.fieldFormType] = [];
192
+ }
193
+ _this.fieldTypeMap[field.fieldFormType].push(field);
194
+ _this.formFieldMap[field.formKey] = field;
195
+ }));
196
+ }));
197
+ };
198
+ /**
199
+ * @param {?} form
200
+ * @return {?}
201
+ */
202
+ DrawerFormComponent.prototype.setForm = /**
203
+ * @param {?} form
204
+ * @return {?}
205
+ */
206
+ function (form) {
207
+ this.form = this.getFormProxy(this.formatForm(this.sections, form));
208
+ this.syncFormField();
209
+ this.formChange.emit(this.form);
210
+ };
175
211
  /**
176
212
  * @param {?} value
177
213
  * @param {?} compareValue
@@ -474,21 +510,7 @@ var DrawerFormComponent = /** @class */ (function () {
474
510
  * @return {?}
475
511
  */
476
512
  function (formKey) {
477
- /** @type {?} */
478
- var fieldItem = null;
479
- this.sections.find((/**
480
- * @param {?} section
481
- * @return {?}
482
- */
483
- function (section) {
484
- fieldItem = section.fields.find((/**
485
- * @param {?} field
486
- * @return {?}
487
- */
488
- function (field) { return field.formKey === formKey; }));
489
- return fieldItem;
490
- }));
491
- return fieldItem;
513
+ return this.formFieldMap[formKey] || null;
492
514
  };
493
515
  /**
494
516
  * @private
@@ -630,6 +652,23 @@ var DrawerFormComponent = /** @class */ (function () {
630
652
  }
631
653
  event.updateData(this.getOptions(field), query);
632
654
  };
655
+ /**
656
+ * @param {?} event
657
+ * @param {?} field
658
+ * @return {?}
659
+ */
660
+ DrawerFormComponent.prototype.onDropdownDataBound = /**
661
+ * @param {?} event
662
+ * @param {?} field
663
+ * @return {?}
664
+ */
665
+ function (event, field) {
666
+ /** @type {?} */
667
+ var index = this.fieldTypeMap[field.fieldFormType].indexOf(field);
668
+ if (event.items.length > 0 && index !== -1) {
669
+ this.dropdowns.toArray()[index].value = this.form[field.formKey];
670
+ }
671
+ };
633
672
  /**
634
673
  * @param {?} field
635
674
  * @return {?}
@@ -766,8 +805,8 @@ var DrawerFormComponent = /** @class */ (function () {
766
805
  DrawerFormComponent.decorators = [
767
806
  { type: Component, args: [{
768
807
  selector: "rs-drawer-form",
769
- template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format || numberFormat\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [ngModel]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showDropDownIcon]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n >\r\n </ejs-multiselect>\r\n <!-- Datepicker -->\r\n <ejs-datepicker\r\n *ngIf=\"field.fieldFormType === 'Datepicker'\"\r\n [(value)]=\"dateForm[field.formKey]\"\r\n [format]=\"field.format || dateFormat\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"\r\n fieldValidMap[field.formKey] === false ||\r\n dateValidMap[field.formKey] === false\r\n \"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onDatePickerBlur($event, field)\"\r\n ></ejs-datepicker>\r\n <ng-template\r\n #customTemplateContainer\r\n *ngIf=\"field.fieldFormType === 'Custom'\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"section.customKey\">\r\n <ng-template #customSectionContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"sections.length > 1 && showAnchor\" class=\"anchor-container\">\r\n <div\r\n class=\"anchor-item\"\r\n *ngFor=\"let section of sections; let index = index\"\r\n [style.display]=\"section.title ? 'block' : 'none'\"\r\n [attr.data-active]=\"scrollIndex === index ? 'yes' : 'no'\"\r\n [attr.data-content]=\"section.title\"\r\n (click)=\"onClickAnchor(index)\"\r\n ></div>\r\n </div>\r\n</div>\r\n",
770
- styles: [":host{display:block;margin-top:16px}.rs-drawer-form-container{display:flex;flex-flow:row nowrap;align-items:flex-start;gap:32px}.rs-drawer-form-container .section-container{flex:auto;display:flex;flex-flow:column nowrap;max-width:1576px}.rs-drawer-form-container .section-item{position:relative}.rs-drawer-form-container .section-item:not(:first-child){border-top:1px solid #eaedf0}.rs-drawer-form-container .section-expand-checkbox{display:block;width:100%;height:28px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:absolute;top:0;left:0}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title::before{transform:rotate(-90deg)}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title+.section-form{max-height:0;overflow:hidden}.rs-drawer-form-container .section-title{padding:6px 0;margin-bottom:12px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:16px;display:flex;flex-flow:row nowrap;align-items:center;pointer-events:none}.rs-drawer-form-container .section-title::before{content:url(../../../assets/img/down-arrow.svg);display:block;height:16px;width:16px;margin-right:8px}.rs-drawer-form-container .section-form{display:flex;flex-flow:row wrap;justify-content:space-between;gap:12px 56px;max-width:1576px;padding:0 24px;margin-bottom:20px}.rs-drawer-form-container .section-form .form-item{min-height:28px;min-width:400px;max-width:700px;width:calc((100% - 56px)/ 2);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:flex-start}.rs-drawer-form-container .section-form .form-item[data-required=yes] .form-label>span:first-child::after{content:\"*\";color:var(--rs-input-require-label-color)}.rs-drawer-form-container .section-form .form-item .form-label{flex:none;width:144px;height:28px;margin-right:16px;color:#43566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;display:flex;flex-flow:row nowrap;align-items:center}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip{margin-left:4px}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip .tooltip-icon::before{content:\" \";display:block;width:14px;height:14px;background-image:url(../../../assets/img/tooltip-icon.svg);background-size:contain;cursor:pointer}.rs-drawer-form-container .section-form .form-item .form-content{flex:auto}@media (max-width:1420px){.rs-drawer-form-container .section-form .form-item{width:100%}}.rs-drawer-form-container .anchor-container{flex:none;display:flex;flex-flow:column nowrap;gap:4px;min-width:120px;height:auto;position:-webkit-sticky;position:sticky;top:56px}.rs-drawer-form-container .anchor-item{min-width:120px;padding:4px 12px;border-left:1px solid #eaedf0;cursor:pointer;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:16px;position:relative}.rs-drawer-form-container .anchor-item::before{content:attr(data-content);color:#44566c;font-weight:400;position:absolute;left:12px}.rs-drawer-form-container .anchor-item::after{content:attr(data-content);visibility:hidden;color:#1364b3;font-weight:700}.rs-drawer-form-container .anchor-item[data-active=yes]{border-color:#1f7bff}.rs-drawer-form-container .anchor-item[data-active=yes]::before{visibility:hidden}.rs-drawer-form-container .anchor-item[data-active=yes]::after{visibility:visible}.rs-drawer-tooltip.e-tooltip-wrap{border:none;background-color:#44566c}.rs-drawer-tooltip.e-tooltip-wrap .e-arrow-tip{height:4px;visibility:hidden}"]
808
+ template: "<div #drawerFormEl class=\"rs-drawer-form-container\">\r\n <div class=\"section-container\">\r\n <div #sectionEl class=\"section-item\" *ngFor=\"let section of sections\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"section-expand-checkbox\"\r\n *ngIf=\"section.title\"\r\n />\r\n <div class=\"section-title\" *ngIf=\"section.title\">\r\n <span>{{ section.title }}</span>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"!section.customKey\">\r\n <div\r\n class=\"form-item\"\r\n *ngFor=\"let field of section.fields\"\r\n [attr.data-required]=\"field.required ? 'yes' : 'no'\"\r\n [attr.data-disabled]=\"field.disabled || formDisabled ? 'yes' : 'no'\"\r\n [attr.data-error]=\"\r\n fieldValidMap[field.formKey] === false ? 'yes' : 'no'\r\n \"\r\n >\r\n <div class=\"form-label\">\r\n <span>{{ field.label }}</span>\r\n <ejs-tooltip\r\n class=\"form-tooltip\"\r\n cssClass=\"rs-drawer-tooltip\"\r\n *ngIf=\"field.tooltip\"\r\n position=\"RightCenter\"\r\n [content]=\"field.tooltip\"\r\n >\r\n <span class=\"tooltip-icon\"></span>\r\n </ejs-tooltip>\r\n </div>\r\n <div class=\"form-content\">\r\n <!-- Radio -->\r\n <rs-radio-group\r\n *ngIf=\"field.fieldFormType === 'Radio'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-radio-group>\r\n <!-- Checkbox -->\r\n <rs-checkbox-group\r\n *ngIf=\"field.fieldFormType === 'Checkbox'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-checkbox-group>\r\n <!-- Switch -->\r\n <rs-switch-input\r\n *ngIf=\"field.fieldFormType === 'Switch'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n (valueChange)=\"onChange($event, field)\"\r\n ></rs-switch-input>\r\n <!-- Input -->\r\n <input\r\n class=\"e-input\"\r\n *ngIf=\"\r\n field.fieldFormType === 'Text' ||\r\n field.fieldFormType === 'Email'\r\n \"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n />\r\n <!-- Textarea -->\r\n <textarea\r\n class=\"e-input\"\r\n *ngIf=\"field.fieldFormType === 'Textarea'\"\r\n [value]=\"form[field.formKey]\"\r\n [disabled]=\"getDisabled(field)\"\r\n [required]=\"field.required\"\r\n [attr.maxlength]=\"field.maxlength\"\r\n [attr.minlength]=\"field.minlength\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (input)=\"onInput($event.target.value, field)\"\r\n (change)=\"onChange($event.target.value, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n autocomplete=\"off\"\r\n rows=\"3\"\r\n ></textarea>\r\n <!-- Number Input -->\r\n <ejs-numerictextbox\r\n *ngIf=\"field.fieldFormType === 'Number'\"\r\n [value]=\"form[field.formKey]\"\r\n [max]=\"field.max\"\r\n [min]=\"field.min\"\r\n [step]=\"field.step\"\r\n [decimals]=\"field.decimals\"\r\n [format]=\"field.format || numberFormat\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-numerictextbox>\r\n <!-- Tags Input -->\r\n <rs-tag-input\r\n *ngIf=\"field.fieldFormType === 'Tags'\"\r\n [value]=\"form[field.formKey]\"\r\n [fields]=\"getOptionFields(field)\"\r\n [inputMaxlength]=\"field.maxlength\"\r\n [inputMinlength]=\"field.minlength\"\r\n [disabled]=\"getDisabled(field)\"\r\n [error]=\"fieldValidMap[field.formKey] === false\"\r\n (valueChange)=\"onChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></rs-tag-input>\r\n <!-- AutoComplete -->\r\n <ejs-autocomplete\r\n *ngIf=\"field.fieldFormType === 'AutoComplete'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-autocomplete>\r\n <!-- Dropdown -->\r\n <ejs-dropdownlist\r\n #dropdown\r\n *ngIf=\"field.fieldFormType === 'Dropdown'\"\r\n [value]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showClearButton]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (dataBound)=\"onDropdownDataBound($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n ></ejs-dropdownlist>\r\n <!-- MultiSelect -->\r\n <ejs-multiselect\r\n *ngIf=\"field.fieldFormType === 'MultiSelect'\"\r\n mode=\"CheckBox\"\r\n [ngModel]=\"form[field.formKey]\"\r\n [dataSource]=\"getOptions(field)\"\r\n [fields]=\"getOptionFields(field)\"\r\n [allowFiltering]=\"true\"\r\n [showDropDownIcon]=\"true\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"fieldValidMap[field.formKey] === false\"\r\n (filtering)=\"onFiltering($event, field)\"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onBlur(field)\"\r\n >\r\n </ejs-multiselect>\r\n <!-- Datepicker -->\r\n <ejs-datepicker\r\n *ngIf=\"field.fieldFormType === 'Datepicker'\"\r\n [(value)]=\"dateForm[field.formKey]\"\r\n [format]=\"field.format || dateFormat\"\r\n [enabled]=\"!getDisabled(field)\"\r\n [class.error]=\"\r\n fieldValidMap[field.formKey] === false ||\r\n dateValidMap[field.formKey] === false\r\n \"\r\n (change)=\"onComponentChange($event, field)\"\r\n (focus)=\"onFocus(field)\"\r\n (blur)=\"onDatePickerBlur($event, field)\"\r\n ></ejs-datepicker>\r\n <ng-template\r\n #customTemplateContainer\r\n *ngIf=\"field.fieldFormType === 'Custom'\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"section-form\" *ngIf=\"section.customKey\">\r\n <ng-template #customSectionContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"sections.length > 1 && showAnchor\" class=\"anchor-container\">\r\n <div\r\n class=\"anchor-item\"\r\n *ngFor=\"let section of sections; let index = index\"\r\n [style.display]=\"section.title ? 'block' : 'none'\"\r\n [attr.data-active]=\"scrollIndex === index ? 'yes' : 'no'\"\r\n [attr.data-content]=\"section.title\"\r\n (click)=\"onClickAnchor(index)\"\r\n ></div>\r\n </div>\r\n</div>\r\n",
809
+ styles: [":host{display:block;margin-top:16px}.rs-drawer-form-container{display:flex;flex-flow:row nowrap;align-items:flex-start;gap:32px}.rs-drawer-form-container .section-container{flex:auto;display:flex;flex-flow:column nowrap;max-width:1576px}.rs-drawer-form-container .section-item{position:relative}.rs-drawer-form-container .section-item:not(:first-child){border-top:1px solid #eaedf0}.rs-drawer-form-container .section-expand-checkbox{display:block;width:100%;height:28px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;position:absolute;top:0;left:0}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title::before{transform:rotate(-90deg)}.rs-drawer-form-container .section-expand-checkbox:checked+.section-title+.section-form{max-height:0;overflow:hidden}.rs-drawer-form-container .section-title{padding:6px 0;margin-bottom:12px;color:#44566c;font-family:Arial;font-size:13px;font-style:normal;font-weight:700;line-height:16px;display:flex;flex-flow:row nowrap;align-items:center;pointer-events:none}.rs-drawer-form-container .section-title::before{content:url(../../assets/img/down-arrow.svg);display:block;height:16px;width:16px;margin-right:8px}.rs-drawer-form-container .section-form{display:flex;flex-flow:row wrap;justify-content:space-between;gap:12px 56px;max-width:1576px;padding:0 24px;margin-bottom:20px}.rs-drawer-form-container .section-form .form-item{min-height:28px;min-width:400px;max-width:700px;width:calc((100% - 56px)/ 2);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:flex-start}.rs-drawer-form-container .section-form .form-item[data-required=yes] .form-label>span:first-child::after{content:\"*\";color:var(--rs-input-require-label-color)}.rs-drawer-form-container .section-form .form-item .form-label{flex:none;width:144px;height:28px;margin-right:16px;color:#43566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;display:flex;flex-flow:row nowrap;align-items:center}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip{margin-left:4px}.rs-drawer-form-container .section-form .form-item .form-label .form-tooltip .tooltip-icon::before{content:\" \";display:block;width:14px;height:14px;background-image:url(../../assets/img/tooltip-icon.svg);background-size:contain;cursor:pointer}.rs-drawer-form-container .section-form .form-item .form-content{flex:auto}@media (max-width:1420px){.rs-drawer-form-container .section-form .form-item{width:100%}}.rs-drawer-form-container .anchor-container{flex:none;display:flex;flex-flow:column nowrap;gap:4px;min-width:120px;height:auto;position:-webkit-sticky;position:sticky;top:56px}.rs-drawer-form-container .anchor-item{min-width:120px;padding:4px 12px;border-left:1px solid #eaedf0;cursor:pointer;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:16px;position:relative}.rs-drawer-form-container .anchor-item::before{content:attr(data-content);color:#44566c;font-weight:400;position:absolute;left:12px}.rs-drawer-form-container .anchor-item::after{content:attr(data-content);visibility:hidden;color:#1364b3;font-weight:700}.rs-drawer-form-container .anchor-item[data-active=yes]{border-color:#1f7bff}.rs-drawer-form-container .anchor-item[data-active=yes]::before{visibility:hidden}.rs-drawer-form-container .anchor-item[data-active=yes]::after{visibility:visible}.rs-drawer-tooltip.e-tooltip-wrap{border:none;background-color:#44566c}.rs-drawer-tooltip.e-tooltip-wrap .e-arrow-tip{height:4px;visibility:hidden}"]
771
810
  }] }
772
811
  ];
773
812
  /** @nocollapse */
@@ -791,6 +830,7 @@ var DrawerFormComponent = /** @class */ (function () {
791
830
  rootEl: [{ type: ViewChild, args: ["drawerFormEl", { static: false },] }],
792
831
  containers: [{ type: ViewChildren, args: ["customTemplateContainer", { read: ViewContainerRef },] }],
793
832
  sectionContainers: [{ type: ViewChildren, args: ["customSectionContainer", { read: ViewContainerRef },] }],
833
+ dropdowns: [{ type: ViewChildren, args: ["dropdown",] }],
794
834
  sectionEls: [{ type: ViewChildren, args: ["sectionEl",] }]
795
835
  };
796
836
  return DrawerFormComponent;
@@ -836,8 +876,14 @@ if (false) {
836
876
  */
837
877
  DrawerFormComponent.prototype.sectionContainers;
838
878
  /** @type {?} */
879
+ DrawerFormComponent.prototype.dropdowns;
880
+ /** @type {?} */
839
881
  DrawerFormComponent.prototype.sections;
840
882
  /** @type {?} */
883
+ DrawerFormComponent.prototype.fieldTypeMap;
884
+ /** @type {?} */
885
+ DrawerFormComponent.prototype.formFieldMap;
886
+ /** @type {?} */
841
887
  DrawerFormComponent.prototype.form;
842
888
  /** @type {?} */
843
889
  DrawerFormComponent.prototype.fieldValidMap;
@@ -857,4 +903,4 @@ if (false) {
857
903
  */
858
904
  DrawerFormComponent.prototype.ref;
859
905
  }
860
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDOztJQUVmLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztBQUUvQztJQWlERSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzQzNCLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFLaEIsaUJBQVksR0FBRztZQUNwQyxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ3lCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUU1QixlQUFVLEdBQUcsWUFBWSxDQUFDO1FBRXpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElB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SyxTQUFDLGNBQWM7NkJBQ3BCLEtBQUssU0FBQyxZQUFZOzZCQUVsQixNQUFNLFNBQUMsWUFBWTs4QkFDbkIsTUFBTSxTQUFDLGFBQWE7eUJBS3BCLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzZCQUkzQyxZQUFZLFNBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7b0NBRWxFLFlBQVksU0FBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTs2QkE0VmpFLFlBQVksU0FBQyxXQUFXOztJQTREM0IsMEJBQUM7Q0FBQSxBQTliRCxJQThiQztTQXpiWSxtQkFBbUI7OztJQUM5QixvQ0FBK0M7O0lBQy9DLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUM1RCwyQ0FBd0M7O0lBRXhDLHlDQUF1Qzs7SUFDdkMsNkNBQTBEOztJQUMxRCxvREFDd0Q7O0lBRXhELDJDQUtFOztJQUNGLCtDQUFpRDs7SUFDakQsMkNBQTRDOztJQUM1Qyx5Q0FBK0M7O0lBRS9DLHlDQUEyRTs7SUFDM0UsMENBR0s7O0lBRUwscUNBQ21DOzs7OztJQUduQyx5Q0FDZ0Q7Ozs7O0lBQ2hELGdEQUN1RDs7SUFFdkQsdUNBQTZCOztJQUM3QixtQ0FBK0I7O0lBQy9CLDRDQUE0Qzs7SUFHNUMsdUNBQW9DOztJQUNwQywyQ0FBMkM7O0lBbVYzQyx5Q0FDa0Q7O0lBQ2xELDBDQUFnQjs7SUFDaEIsNENBQXNCOzs7OztJQXBWVixrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJpbmdFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1kYXRhXCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQge1xyXG4gIEVtYWlsUGF0dGVybixcclxuICBGaWVsZEl0ZW0sXHJcbiAgZmlsdGVyU2hvd1NlY3Rpb24sXHJcbiAgU2VjdGlvbkl0ZW0sXHJcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5jb25zdCBGT1JNX1BST1hZX1RBRyA9IFN5bWJvbC5mb3IoXCJmb3JtLXByb3h5XCIpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtZHJhd2VyLWZvcm1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2RyYXdlci1mb3JtLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2RyYXdlci1mb3JtLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd2VyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoXCJmb3JtXCIpIF9mb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgQElucHV0KFwic2VjdGlvbnNcIikgX3NlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgQElucHV0KFwib3B0aW9uc01hcFwiKSBvcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuICBASW5wdXQoXCJkaXNhYmxlZFwiKSBmb3JtRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KFwic2hvd0FuY2hvclwiKSBzaG93QW5jaG9yID0gdHJ1ZTtcclxuICBASW5wdXQoXCJjdXN0b21UZW1wbGF0ZVwiKSBjdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoXCJjdXN0b21TZWN0aW9uVGVtcGxhdGVcIilcclxuICBjdXN0b21TZWN0aW9uVGVtcGxhdGU6IFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICBASW5wdXQoXCJvcHRpb25GaWVsZHNcIikgb3B0aW9uRmllbGRzID0ge1xyXG4gICAgdGV4dDogXCJ0ZXh0XCIsXHJcbiAgICB2YWx1ZTogXCJjb2RlXCIsXHJcbiAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxyXG4gICAgZ3JvdXBCeTogbnVsbCxcclxuICB9O1xyXG4gIEBJbnB1dChcInNob3dGaWx0ZXJOdW1iZXJcIikgc2hvd0ZpbHRlck51bWJlciA9IDEwO1xyXG4gIEBJbnB1dChcIm51bWJlckZvcm1hdFwiKSBudW1iZXJGb3JtYXQ6IHN0cmluZztcclxuICBASW5wdXQoXCJkYXRlRm9ybWF0XCIpIGRhdGVGb3JtYXQgPSBcInl5eXktTU0tZGRcIjtcclxuXHJcbiAgQE91dHB1dChcImZvcm1DaGFuZ2VcIikgZm9ybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPHN0cmluZywgYW55Pj4oKTtcclxuICBAT3V0cHV0KFwiZmllbGRDaGFuZ2VcIikgZmllbGRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGZpZWxkOiBGaWVsZEl0ZW07XHJcbiAgICB2YWx1ZTogYW55O1xyXG4gIH0+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkcmF3ZXJGb3JtRWxcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcm9vdEVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8g6Ieq5a6a5LmJIGZpZWxkIOaooeadv+WSjOiHquWumuS5iSBzZWN0aW9uIOaooeadv+eahOWuueWZqFxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21UZW1wbGF0ZUNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tU2VjdGlvbkNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIHNlY3Rpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgZm9ybTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIGZpZWxkVmFsaWRNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcblxyXG4gIC8vIOWtmOWCqCBkYXRlcGlja2VyIOeahOWAvFxyXG4gIGRhdGVGb3JtOiBSZWNvcmQ8c3RyaW5nLCBEYXRlPiA9IHt9O1xyXG4gIGRhdGVWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLl9zZWN0aW9ucykge1xyXG4gICAgICB0aGlzLnNlY3Rpb25zID0gZmlsdGVyU2hvd1NlY3Rpb24oY2hhbmdlcy5fc2VjdGlvbnMuY3VycmVudFZhbHVlKTtcclxuICAgICAgdGhpcy5mb3JtID0gdGhpcy5nZXRGb3JtUHJveHkoXHJcbiAgICAgICAgdGhpcy5mb3JtYXRGb3JtKHRoaXMuc2VjdGlvbnMsIHsgLi4udGhpcy5mb3JtIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc3luY0Zvcm1GaWVsZCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuX2Zvcm0pIHtcclxuICAgICAgaWYgKCFjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZVtGT1JNX1BST1hZX1RBR10pIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmdldEZvcm1Qcm94eShcclxuICAgICAgICAgIHRoaXMuZm9ybWF0Rm9ybSh0aGlzLnNlY3Rpb25zLCBjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc3luY0Zvcm1GaWVsZCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybUNoYW5nZS5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjaGFuZ2VzLl9mb3JtLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja0Zvcm1DaGFuZ2UoXHJcbiAgICAgICAgICBjaGFuZ2VzLl9mb3JtLnByZXZpb3VzVmFsdWUsXHJcbiAgICAgICAgICBjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVSZW5kZXIodGhpcy5jb250YWluZXJzKTtcclxuICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcih0aGlzLnNlY3Rpb25Db250YWluZXJzKTtcclxuICAgIHRoaXMuY29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVycyA9IGNvbnRhaW5lcnM7XHJcbiAgICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMuY2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pID0+IHtcclxuICAgICAgICB0aGlzLnNlY3Rpb25Db250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVycyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5zaG93QW5jaG9yKSB7XHJcbiAgICAgIHRoaXMuaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbUZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiQ3VzdG9tXCIpIHtcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgY29udGFpbmVycy5mb3JFYWNoKChjb250YWluZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVRlbXBsYXRlLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbUZpZWxkc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tU2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAoc2VjdGlvbikgPT4gc2VjdGlvbi5jdXN0b21LZXlcclxuICAgICAgKTtcclxuICAgICAgY29udGFpbmVycy5mb3JFYWNoKChjb250YWluZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tS2V5ID0gY3VzdG9tU2VjdGlvbnNbaW5kZXhdLmN1c3RvbUtleTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlW2N1c3RvbUtleV0sIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tU2VjdGlvbnNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVxdWFsKHZhbHVlOiBhbnksIGNvbXBhcmVWYWx1ZTogYW55KSB7XHJcbiAgICAvLyDlj6rlr7nmlbDnu4Tov5vooYznibnmrorliKTmlq1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KGNvbXBhcmVWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB2YWx1ZS5sZW5ndGggPT09IGNvbXBhcmVWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICB2YWx1ZS5ldmVyeSgoaSwgaW5kZXgpID0+IGkgPT09IGNvbXBhcmVWYWx1ZVtpbmRleF0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmlzKHZhbHVlLCBjb21wYXJlVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5lcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGtleSk7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkOiBGaWVsZEl0ZW0sIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHZhbHVlKTtcclxuICAgICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpID8gZGF0ZS50b0RhdGUoKSA6IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN5bmNGb3JtRmllbGQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb246IFNlY3Rpb25JdGVtKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiRGF0ZXBpY2tlclwiOlxyXG4gICAgICAgICAgICB0aGlzLnN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZCwgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSwgZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkRm9ybVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgIGNhc2UgXCJUZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICBpZiAoZm9ybVtmaWVsZC5mb3JtS2V5XSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgY2FzZSBcIk11bHRpU2VsZWN0XCI6XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmb3JtW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiU3dpdGNoXCI6XHJcbiAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSAhIWZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChmb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBmb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVByb3h5KGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIC8vIOeOsOWcqOS4jeaUr+aMgeW1jOWllyBmb3JtIOWxnuaAp++8jOWPquWvuea1heWxgui/m+ihjOWkhOeQhlxyXG4gICAgY29uc3QgcHJveHlGb3JtID0gbmV3IFByb3h5KGZvcm0sIHtcclxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKHByb3ApO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5Rm9ybSwgRk9STV9QUk9YWV9UQUcsIHtcclxuICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm94eUZvcm07XHJcbiAgfVxyXG5cclxuICAvLyDooajljZXmj5DkuqTliY3kvJrop6blj5Hov5nkuKrlh73mlbBcclxuICB1cGRhdGVGb3JtKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IHZhbHVlO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGZpZWxkSXRlbTogRmllbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMuZmluZCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBmaWVsZEl0ZW0gPSBzZWN0aW9uLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuZm9ybUtleSA9PT0gZm9ybUtleSk7XHJcbiAgICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSAhPT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShldmVudC52YWx1ZSwgZmllbGQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZVwiLCBldmVudCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlID8gbW9tZW50KGV2ZW50LnZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpIDogbnVsbDtcclxuICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBldmVudC52YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgJGlucHV0ID0gZXZlbnQubW9kZWwuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XHJcbiAgICAgIGlmICgkaW5wdXQgJiYgJGlucHV0LnZhbHVlICYmICF0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25Gb2N1cywgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uQmx1ciwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJpbmcoZXZlbnQ6IEZpbHRlcmluZ0V2ZW50QXJncywgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgUXVlcnkoKTtcclxuICAgIGlmIChldmVudC50ZXh0KSB7XHJcbiAgICAgIHF1ZXJ5LndoZXJlKHRoaXMub3B0aW9uRmllbGRzLnRleHQsIFwiY29udGFpbnNcIiwgZXZlbnQudGV4dCwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBldmVudC51cGRhdGVEYXRhKHRoaXMuZ2V0T3B0aW9ucyhmaWVsZCksIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbnMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNNYXBbZmllbGQub3B0aW9uS2V5XTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9uc01hcFtmaWVsZC5mb3JtS2V5XSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01hcFtmaWVsZC5mb3JtS2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIGdldERpc2FibGVkKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmICh0aGlzLmZvcm1EaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgZmllbGQuZGlzYWJsZWQgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbkZpZWxkcyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoW1wiRHJvcGRvd25cIiwgXCJBdXRvQ29tcGxldGVcIl0uaW5jbHVkZXMoZmllbGQuZmllbGRGb3JtVHlwZSkpIHtcclxuICAgICAgcmV0dXJuIHsgLi4udGhpcy5vcHRpb25GaWVsZHMsIGdyb3VwQnk6IGZpZWxkLmdyb3VwS2V5IHx8IG51bGwgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9wdGlvbkZpZWxkcztcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJzZWN0aW9uRWxcIilcclxuICBzZWN0aW9uRWxzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xyXG4gIHNjcm9sbEluZGV4ID0gMDtcclxuICBpc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcblxyXG4gIG9uQ2xpY2tBbmNob3IoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3Qgc2VjdGlvbkl0ZW1zID0gdGhpcy5zZWN0aW9uRWxzLnRvQXJyYXkoKTtcclxuICAgIHNlY3Rpb25JdGVtc1tpbmRleF0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTtcclxuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuaXNDbGlja0FuY2hvciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBmaW5kU2Nyb2xsVmlld0VsKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcclxuICAgIGlmIChlbCA9PT0gZG9jdW1lbnQuYm9keSkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICBpZiAoZWwuc2Nyb2xsSGVpZ2h0ICYmIGVsLnNjcm9sbEhlaWdodCAhPT0gZWwub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgIHJldHVybiBlbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpbmRTY3JvbGxWaWV3RWwoZWwucGFyZW50RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpIHtcclxuICAgIGNvbnN0IHNjcm9sbFZpZXdFbCA9IHRoaXMuZmluZFNjcm9sbFZpZXdFbCh0aGlzLnJvb3RFbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIGNvbnN0IHNjcm9sbEhlaWdodCA9IHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQgLSBzY3JvbGxWaWV3RWwub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3Qgc2VjdGlvblZpZXdSYXRpbyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCkubWFwKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJhdGlvID1cclxuICAgICAgICBzZWN0aW9uLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gc2Nyb2xsVmlld0VsLnNjcm9sbEhlaWdodDtcclxuICAgICAgcmV0dXJuIHNjcm9sbEhlaWdodCAqIHJhdGlvO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzQ2xpY2tBbmNob3IpIHtcclxuICAgICAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cclxuICAgICAgICBzY3JvbGxWaWV3RWwuc2Nyb2xsVG9wID4gc2Nyb2xsSGVpZ2h0XHJcbiAgICAgICAgICA/IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgOiBzY3JvbGxWaWV3RWwuc2Nyb2xsVG9wO1xyXG4gICAgICBsZXQgcmFkaW9TY3JvbGxIZWlnaHQgPSAwO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc2VjdGlvblZpZXdSYXRpby5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICByYWRpb1Njcm9sbEhlaWdodCArPSBzZWN0aW9uVmlld1JhdGlvW2luZGV4XTtcclxuICAgICAgICBpZiAocmFkaW9TY3JvbGxIZWlnaHQgPj0gc2Nyb2xsVG9wKSB7XHJcbiAgICAgICAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKFxyXG4gICAgICAgIHRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0gJiZcclxuICAgICAgICAhdGhpcy5zZWN0aW9uc1t0aGlzLnNjcm9sbEluZGV4XS50aXRsZVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNjcm9sbEluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIG9uU2Nyb2xsKCk7XHJcbiAgICBzY3JvbGxWaWV3RWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
906
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDOztJQUVmLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztBQUUvQztJQXVERSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFqRDNCLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFLaEIsaUJBQVksR0FBRztZQUNwQyxJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxNQUFNO1lBQ2IsUUFBUSxFQUFFLFVBQVU7WUFDcEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ3lCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUU1QixlQUFVLEdBQUcsWUFBWSxDQUFDO1FBRXpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElB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LElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzRCQUdqRSxZQUFZLFNBQUMsVUFBVTs2QkErV3ZCLFlBQVksU0FBQyxXQUFXOztJQTREM0IsMEJBQUM7Q0FBQSxBQXBkRCxJQW9kQztTQS9jWSxtQkFBbUI7OztJQUM5QixvQ0FBK0M7O0lBQy9DLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUM1RCwyQ0FBd0M7O0lBRXhDLHlDQUF1Qzs7SUFDdkMsNkNBQTBEOztJQUMxRCxvREFDd0Q7O0lBRXhELDJDQUtFOztJQUNGLCtDQUFpRDs7SUFDakQsMkNBQTRDOztJQUM1Qyx5Q0FBK0M7O0lBRS9DLHlDQUEyRTs7SUFDM0UsMENBR0s7O0lBRUwscUNBQ21DOzs7OztJQUduQyx5Q0FDZ0Q7Ozs7O0lBQ2hELGdEQUN1RDs7SUFFdkQsd0NBQzRDOztJQUU1Qyx1Q0FBNkI7O0lBQzdCLDJDQUE0RTs7SUFDNUUsMkNBQTZDOztJQUU3QyxtQ0FBK0I7O0lBQy9CLDRDQUE0Qzs7SUFHNUMsdUNBQW9DOztJQUNwQywyQ0FBMkM7O0lBbVczQyx5Q0FDa0Q7O0lBQ2xELDBDQUFnQjs7SUFDaEIsNENBQXNCOzs7OztJQXBXVixrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIERyb3BEb3duTGlzdENvbXBvbmVudCxcclxuICBGaWx0ZXJpbmdFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHtcclxuICBFbWFpbFBhdHRlcm4sXHJcbiAgRmllbGRJdGVtLFxyXG4gIGZpbHRlclNob3dTZWN0aW9uLFxyXG4gIFNlY3Rpb25JdGVtLFxyXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5cclxuY29uc3QgRk9STV9QUk9YWV9UQUcgPSBTeW1ib2wuZm9yKFwiZm9ybS1wcm94eVwiKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwiZm9ybVwiKSBfZm9ybTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIEBJbnB1dChcInNlY3Rpb25zXCIpIF9zZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dChcIm9wdGlvbnNNYXBcIikgb3B0aW9uc01hcDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dChcInNob3dBbmNob3JcIikgc2hvd0FuY2hvciA9IHRydWU7XHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwib3B0aW9uRmllbGRzXCIpIG9wdGlvbkZpZWxkcyA9IHtcclxuICAgIHRleHQ6IFwidGV4dFwiLFxyXG4gICAgdmFsdWU6IFwiY29kZVwiLFxyXG4gICAgZGlzYWJsZWQ6IFwiZGlzYWJsZWRcIixcclxuICAgIGdyb3VwQnk6IG51bGwsXHJcbiAgfTtcclxuICBASW5wdXQoXCJzaG93RmlsdGVyTnVtYmVyXCIpIHNob3dGaWx0ZXJOdW1iZXIgPSAxMDtcclxuICBASW5wdXQoXCJudW1iZXJGb3JtYXRcIikgbnVtYmVyRm9ybWF0OiBzdHJpbmc7XHJcbiAgQElucHV0KFwiZGF0ZUZvcm1hdFwiKSBkYXRlRm9ybWF0ID0gXCJ5eXl5LU1NLWRkXCI7XHJcblxyXG4gIEBPdXRwdXQoXCJmb3JtQ2hhbmdlXCIpIGZvcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIGFueT4+KCk7XHJcbiAgQE91dHB1dChcImZpZWxkQ2hhbmdlXCIpIGZpZWxkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWVsZDogRmllbGRJdGVtO1xyXG4gICAgdmFsdWU6IGFueTtcclxuICB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiZHJhd2VyRm9ybUVsXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHJvb3RFbDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIC8vIOiHquWumuS5iSBmaWVsZCDmqKHmnb/lkozoh6rlrprkuYkgc2VjdGlvbiDmqKHmnb/nmoTlrrnlmahcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tVGVtcGxhdGVDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVNlY3Rpb25Db250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBzZWN0aW9uQ29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFwiZHJvcGRvd25cIilcclxuICBkcm9wZG93bnM6IFF1ZXJ5TGlzdDxEcm9wRG93bkxpc3RDb21wb25lbnQ+O1xyXG5cclxuICBzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIGZpZWxkVHlwZU1hcDogUGFydGlhbDxSZWNvcmQ8RmllbGRJdGVtW1wiZmllbGRGb3JtVHlwZVwiXSwgRmllbGRJdGVtW10+PiA9IHt9O1xyXG4gIGZvcm1GaWVsZE1hcDogUmVjb3JkPHN0cmluZywgRmllbGRJdGVtPiA9IHt9O1xyXG5cclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZpZWxkTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybSh7IC4uLnRoaXMuZm9ybSwgLi4udGhpcy5fZm9ybSB9KTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLl9mb3JtKSB7XHJcbiAgICAgIGlmICghY2hhbmdlcy5fZm9ybS5jdXJyZW50VmFsdWVbRk9STV9QUk9YWV9UQUddKSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSBjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuZHJvcGRvd25zLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoZHJvcGRvd25zOiBRdWVyeUxpc3Q8RHJvcERvd25MaXN0Q29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25zID0gZHJvcGRvd25zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB0aGlzLmZpZWxkVHlwZU1hcC5DdXN0b20gfHwgW107XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGaWVsZE1hcCgpIHtcclxuICAgIHRoaXMuZmllbGRUeXBlTWFwID0ge307XHJcbiAgICB0aGlzLmZvcm1GaWVsZE1hcCA9IHt9O1xyXG4gICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkVHlwZU1hcFtmaWVsZC5maWVsZEZvcm1UeXBlXSkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZFR5cGVNYXBbZmllbGQuZmllbGRGb3JtVHlwZV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVNYXBbZmllbGQuZmllbGRGb3JtVHlwZV0ucHVzaChmaWVsZCk7XHJcbiAgICAgICAgdGhpcy5mb3JtRmllbGRNYXBbZmllbGQuZm9ybUtleV0gPSBmaWVsZDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEZvcm0oZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5nZXRGb3JtUHJveHkodGhpcy5mb3JtYXRGb3JtKHRoaXMuc2VjdGlvbnMsIGZvcm0pKTtcclxuICAgIHRoaXMuc3luY0Zvcm1GaWVsZCgpO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG4gIGVxdWFsKHZhbHVlOiBhbnksIGNvbXBhcmVWYWx1ZTogYW55KSB7XHJcbiAgICAvLyDlj6rlr7nmlbDnu4Tov5vooYznibnmrorliKTmlq1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KGNvbXBhcmVWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB2YWx1ZS5sZW5ndGggPT09IGNvbXBhcmVWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICB2YWx1ZS5ldmVyeSgoaSwgaW5kZXgpID0+IGkgPT09IGNvbXBhcmVWYWx1ZVtpbmRleF0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmlzKHZhbHVlLCBjb21wYXJlVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5lcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGtleSk7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkOiBGaWVsZEl0ZW0sIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHZhbHVlKTtcclxuICAgICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpID8gZGF0ZS50b0RhdGUoKSA6IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN5bmNGb3JtRmllbGQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb246IFNlY3Rpb25JdGVtKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiRGF0ZXBpY2tlclwiOlxyXG4gICAgICAgICAgICB0aGlzLnN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZCwgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSwgZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkRm9ybVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgIGNhc2UgXCJUZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICBpZiAoZm9ybVtmaWVsZC5mb3JtS2V5XSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgY2FzZSBcIk11bHRpU2VsZWN0XCI6XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmb3JtW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiU3dpdGNoXCI6XHJcbiAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSAhIWZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChmb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBmb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVByb3h5KGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIC8vIOeOsOWcqOS4jeaUr+aMgeW1jOWllyBmb3JtIOWxnuaAp++8jOWPquWvuea1heWxgui/m+ihjOWkhOeQhlxyXG4gICAgY29uc3QgcHJveHlGb3JtID0gbmV3IFByb3h5KGZvcm0sIHtcclxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKHByb3ApO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5Rm9ybSwgRk9STV9QUk9YWV9UQUcsIHtcclxuICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm94eUZvcm07XHJcbiAgfVxyXG5cclxuICAvLyDooajljZXmj5DkuqTliY3kvJrop6blj5Hov5nkuKrlh73mlbBcclxuICB1cGRhdGVGb3JtKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IHZhbHVlO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkTWFwW2Zvcm1LZXldIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSAhPT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShldmVudC52YWx1ZSwgZmllbGQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZVwiLCBldmVudCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlID8gbW9tZW50KGV2ZW50LnZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpIDogbnVsbDtcclxuICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBldmVudC52YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgJGlucHV0ID0gZXZlbnQubW9kZWwuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XHJcbiAgICAgIGlmICgkaW5wdXQgJiYgJGlucHV0LnZhbHVlICYmICF0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25Gb2N1cywgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uQmx1ciwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJpbmcoZXZlbnQ6IEZpbHRlcmluZ0V2ZW50QXJncywgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgUXVlcnkoKTtcclxuICAgIGlmIChldmVudC50ZXh0KSB7XHJcbiAgICAgIHF1ZXJ5LndoZXJlKHRoaXMub3B0aW9uRmllbGRzLnRleHQsIFwiY29udGFpbnNcIiwgZXZlbnQudGV4dCwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBldmVudC51cGRhdGVEYXRhKHRoaXMuZ2V0T3B0aW9ucyhmaWVsZCksIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIG9uRHJvcGRvd25EYXRhQm91bmQoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkVHlwZU1hcFtmaWVsZC5maWVsZEZvcm1UeXBlXS5pbmRleE9mKGZpZWxkKTtcclxuICAgIGlmIChldmVudC5pdGVtcy5sZW5ndGggPiAwICYmIGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3ducy50b0FycmF5KClbaW5kZXhdLnZhbHVlID0gdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnNNYXBbZmllbGQub3B0aW9uS2V5XSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01hcFtmaWVsZC5vcHRpb25LZXldO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zTWFwW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zTWFwW2ZpZWxkLmZvcm1LZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlzYWJsZWQoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKHRoaXMuZm9ybURpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBmaWVsZC5kaXNhYmxlZCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9uRmllbGRzKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChbXCJEcm9wZG93blwiLCBcIkF1dG9Db21wbGV0ZVwiXS5pbmNsdWRlcyhmaWVsZC5maWVsZEZvcm1UeXBlKSkge1xyXG4gICAgICByZXR1cm4geyAuLi50aGlzLm9wdGlvbkZpZWxkcywgZ3JvdXBCeTogZmllbGQuZ3JvdXBLZXkgfHwgbnVsbCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9uRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcInNlY3Rpb25FbFwiKVxyXG4gIHNlY3Rpb25FbHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XHJcbiAgc2Nyb2xsSW5kZXggPSAwO1xyXG4gIGlzQ2xpY2tBbmNob3IgPSBmYWxzZTtcclxuXHJcbiAgb25DbGlja0FuY2hvcihpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBzZWN0aW9uSXRlbXMgPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpO1xyXG4gICAgc2VjdGlvbkl0ZW1zW2luZGV4XS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUpO1xyXG4gICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGZpbmRTY3JvbGxWaWV3RWwoZWw6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xyXG4gICAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5KSB7XHJcbiAgICAgIHJldHVybiBlbDtcclxuICAgIH1cclxuICAgIGlmIChlbC5zY3JvbGxIZWlnaHQgJiYgZWwuc2Nyb2xsSGVpZ2h0ICE9PSBlbC5vZmZzZXRIZWlnaHQpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmluZFNjcm9sbFZpZXdFbChlbC5wYXJlbnRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVmlld0VsID0gdGhpcy5maW5kU2Nyb2xsVmlld0VsKHRoaXMucm9vdEVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gc2Nyb2xsVmlld0VsLnNjcm9sbEhlaWdodCAtIHNjcm9sbFZpZXdFbC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBzZWN0aW9uVmlld1JhdGlvID0gdGhpcy5zZWN0aW9uRWxzLnRvQXJyYXkoKS5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgY29uc3QgcmF0aW8gPVxyXG4gICAgICAgIHNlY3Rpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLyBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICByZXR1cm4gc2Nyb2xsSGVpZ2h0ICogcmF0aW87XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBvblNjcm9sbCA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNDbGlja0FuY2hvcikge1xyXG4gICAgICAgIHRoaXMuaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxyXG4gICAgICAgIHNjcm9sbFZpZXdFbC5zY3JvbGxUb3AgPiBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgID8gc2Nyb2xsSGVpZ2h0XHJcbiAgICAgICAgICA6IHNjcm9sbFZpZXdFbC5zY3JvbGxUb3A7XHJcbiAgICAgIGxldCByYWRpb1Njcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzZWN0aW9uVmlld1JhdGlvLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHJhZGlvU2Nyb2xsSGVpZ2h0ICs9IHNlY3Rpb25WaWV3UmF0aW9baW5kZXhdO1xyXG4gICAgICAgIGlmIChyYWRpb1Njcm9sbEhlaWdodCA+PSBzY3JvbGxUb3ApIHtcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoXHJcbiAgICAgICAgdGhpcy5zZWN0aW9uc1t0aGlzLnNjcm9sbEluZGV4XSAmJlxyXG4gICAgICAgICF0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdLnRpdGxlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsSW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH07XHJcblxyXG4gICAgb25TY3JvbGwoKTtcclxuICAgIHNjcm9sbFZpZXdFbC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIG9uU2Nyb2xsKTtcclxuICB9XHJcbn1cclxuIl19