@ptsecurity/mosaic 14.7.2 → 14.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/_theming.scss +22 -9
  2. package/_visual.scss +8 -3
  3. package/button/button.component.d.ts +11 -4
  4. package/button/button.module.d.ts +2 -1
  5. package/core/pop-up/constants.d.ts +2 -1
  6. package/design-tokens/legacy-2017/tokens/components/link.json5 +8 -2
  7. package/design-tokens/legacy-2017/tokens/components/markdown.json5 +2 -2
  8. package/design-tokens/legacy-2017/tokens/components/modal.json5 +1 -1
  9. package/design-tokens/legacy-2017/tokens/components/popover.json5 +1 -1
  10. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +5 -0
  11. package/design-tokens/legacy-2017/tokens.d.ts +8 -3
  12. package/design-tokens/pt-2022/tokens/components/link.json5 +8 -2
  13. package/design-tokens/pt-2022/tokens/components/markdown.json5 +2 -2
  14. package/design-tokens/pt-2022/tokens/components/modal.json5 +1 -1
  15. package/design-tokens/pt-2022/tokens/components/popover.json5 +1 -1
  16. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +5 -0
  17. package/design-tokens/pt-2022/tokens.d.ts +8 -3
  18. package/esm2020/autocomplete/autocomplete.component.mjs +3 -3
  19. package/esm2020/button/button.component.mjs +47 -38
  20. package/esm2020/button/button.module.mjs +8 -4
  21. package/esm2020/core/pop-up/constants.mjs +4 -2
  22. package/esm2020/core/pop-up/pop-up-trigger.mjs +2 -1
  23. package/esm2020/core/version.mjs +2 -2
  24. package/esm2020/datepicker/calendar-header.component.mjs +2 -2
  25. package/esm2020/design-tokens/legacy-2017/tokens.mjs +9 -4
  26. package/esm2020/design-tokens/pt-2022/tokens.mjs +9 -4
  27. package/esm2020/input/input-number.mjs +6 -1
  28. package/esm2020/link/link.component.mjs +12 -2
  29. package/esm2020/modal/modal.component.mjs +4 -4
  30. package/esm2020/modal/modal.type.mjs +4 -2
  31. package/esm2020/popover/popover-confirm.component.mjs +2 -2
  32. package/esm2020/popover/popover.component.mjs +6 -6
  33. package/esm2020/select/select.component.mjs +15 -14
  34. package/esm2020/select/select.module.mjs +8 -4
  35. package/esm2020/sidepanel/sidepanel-config.mjs +8 -1
  36. package/esm2020/sidepanel/sidepanel-container.component.mjs +7 -3
  37. package/esm2020/sidepanel/sidepanel-directives.mjs +3 -3
  38. package/esm2020/tags/tag-input.mjs +3 -3
  39. package/esm2020/timezone/timezone-select.component.mjs +3 -3
  40. package/esm2020/toast/toast-container.component.mjs +2 -2
  41. package/esm2020/tooltip/tooltip.animations.mjs +4 -4
  42. package/esm2020/tooltip/tooltip.component.mjs +9 -6
  43. package/esm2020/tree-select/tree-select.component.mjs +39 -38
  44. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +2 -2
  45. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  46. package/fesm2015/ptsecurity-mosaic-button.mjs +52 -37
  47. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  48. package/fesm2015/ptsecurity-mosaic-core.mjs +5 -2
  49. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  50. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2 -2
  51. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  52. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +25 -10
  53. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  54. package/fesm2015/ptsecurity-mosaic-input.mjs +6 -0
  55. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  56. package/fesm2015/ptsecurity-mosaic-link.mjs +11 -1
  57. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
  58. package/fesm2015/ptsecurity-mosaic-modal.mjs +6 -4
  59. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  60. package/fesm2015/ptsecurity-mosaic-popover.mjs +7 -7
  61. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  62. package/fesm2015/ptsecurity-mosaic-select.mjs +21 -16
  63. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  64. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +16 -5
  65. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  66. package/fesm2015/ptsecurity-mosaic-tags.mjs +2 -2
  67. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  68. package/fesm2015/ptsecurity-mosaic-timezone.mjs +2 -2
  69. package/fesm2015/ptsecurity-mosaic-timezone.mjs.map +1 -1
  70. package/fesm2015/ptsecurity-mosaic-toast.mjs +2 -2
  71. package/fesm2015/ptsecurity-mosaic-toast.mjs.map +1 -1
  72. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +11 -8
  73. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  74. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +39 -37
  75. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  76. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +2 -2
  77. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  78. package/fesm2020/ptsecurity-mosaic-button.mjs +50 -37
  79. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  80. package/fesm2020/ptsecurity-mosaic-core.mjs +5 -2
  81. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  82. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2 -2
  83. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  84. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +25 -10
  85. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  86. package/fesm2020/ptsecurity-mosaic-input.mjs +5 -0
  87. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  88. package/fesm2020/ptsecurity-mosaic-link.mjs +11 -1
  89. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
  90. package/fesm2020/ptsecurity-mosaic-modal.mjs +6 -4
  91. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  92. package/fesm2020/ptsecurity-mosaic-popover.mjs +7 -7
  93. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  94. package/fesm2020/ptsecurity-mosaic-select.mjs +21 -16
  95. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  96. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +16 -5
  97. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  98. package/fesm2020/ptsecurity-mosaic-tags.mjs +2 -2
  99. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  100. package/fesm2020/ptsecurity-mosaic-timezone.mjs +2 -2
  101. package/fesm2020/ptsecurity-mosaic-timezone.mjs.map +1 -1
  102. package/fesm2020/ptsecurity-mosaic-toast.mjs +2 -2
  103. package/fesm2020/ptsecurity-mosaic-toast.mjs.map +1 -1
  104. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +11 -8
  105. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  106. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +38 -37
  107. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  108. package/link/link.component.d.ts +4 -1
  109. package/modal/modal.type.d.ts +2 -1
  110. package/package.json +13 -4
  111. package/prebuilt-themes/dark-theme.css +1 -1
  112. package/prebuilt-themes/default-theme.css +1 -1
  113. package/select/select.component.d.ts +5 -1
  114. package/select/select.module.d.ts +1 -1
  115. package/sidepanel/sidepanel-config.d.ts +6 -0
  116. package/sidepanel/sidepanel-container.component.d.ts +1 -0
  117. package/tooltip/tooltip.component.d.ts +1 -0
  118. package/tree-select/tree-select.component.d.ts +2 -0
package/_theming.scss CHANGED
@@ -1416,10 +1416,12 @@ $link-dark-color-scheme-state-hover-text: #4187ff;
1416
1416
  $link-dark-color-scheme-state-hover-border-bottom: rgba(#4187ff, 0.32);
1417
1417
  $link-dark-color-scheme-state-active: #0374eb;
1418
1418
  $link-dark-color-scheme-state-focused-outline: #4187ff;
1419
- $link-size-icon-margin: 4px;
1420
1419
  $link-size-state-focused-outline-offset: 2px;
1421
1420
  $link-size-state-focused-outline-width: 2px;
1421
+ $link-size-default-icon-margin: 4px;
1422
+ $link-size-caption-icon-margin: 2px;
1422
1423
  $link-font-default: body;
1424
+ $link-font-caption: caption;
1423
1425
  $list-size-horizontal-padding: 12px;
1424
1426
  $list-size-icon-right-margin: 8px;
1425
1427
  $list-size-item-height: 32px;
@@ -1571,7 +1573,7 @@ $modal-dark-color-scheme-body-top-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16);
1571
1573
  $modal-dark-color-scheme-body-bottom-shadow: 0 -2px 4px 0 rgba(0, 0, 0, 0.16);
1572
1574
  $modal-dark-color-scheme-background-mask: rgba(0, 0, 0, 0.5);
1573
1575
  $modal-size-small: 400px;
1574
- $modal-size-normal: 640px;
1576
+ $modal-size-medium: 640px;
1575
1577
  $modal-size-large: 960px;
1576
1578
  $modal-size-top: 48px;
1577
1579
  $modal-size-close-width: 56px;
@@ -1643,7 +1645,7 @@ $popover-size-border-width: 1px;
1643
1645
  $popover-size-arrow-size: 12px;
1644
1646
  $popover-size-trigger-margin: 9px;
1645
1647
  $popover-size-small-width: 200px;
1646
- $popover-size-normal-width: 400px;
1648
+ $popover-size-medium-width: 400px;
1647
1649
  $popover-size-large-width: 640px;
1648
1650
  $popover-font-default: body;
1649
1651
  $popover-header-light-color-scheme-border: #d7dee4;
@@ -1739,6 +1741,9 @@ $select-panel-size-border-radius: 4px;
1739
1741
  $select-panel-font-default: body;
1740
1742
  $sidepanel-light-color-scheme-border: #bdc7d1;
1741
1743
  $sidepanel-dark-color-scheme-border: #19252f;
1744
+ $sidepanel-size-small: 400px;
1745
+ $sidepanel-size-medium: 640px;
1746
+ $sidepanel-size-large: 960px;
1742
1747
  $sidepanel-font-default: body;
1743
1748
  $sidepanel-header-light-color-scheme-border: #d7dee4;
1744
1749
  $sidepanel-header-dark-color-scheme-border: mix(#515e69, transparent, 50%);
@@ -3771,6 +3776,7 @@ $md-typography: (
3771
3776
 
3772
3777
  $datepicker: (
3773
3778
  state-today-color: $datepicker-body-light-color-scheme-states-today-color,
3779
+ state-today-background: $datepicker-body-light-color-scheme-states-today-background,
3774
3780
  state-selected-color: $datepicker-body-light-color-scheme-states-selected-color,
3775
3781
  state-selected-background: $datepicker-body-light-color-scheme-states-selected-background
3776
3782
  );
@@ -4483,7 +4489,8 @@ $md-typography: (
4483
4489
  );
4484
4490
 
4485
4491
  $datepicker: (
4486
- state-selected-today-color: $datepicker-body-dark-color-scheme-states-today-color,
4492
+ state-today-color: $datepicker-body-dark-color-scheme-states-today-color,
4493
+ state-today-background: $datepicker-body-dark-color-scheme-states-today-background,
4487
4494
  state-selected-color: $datepicker-body-dark-color-scheme-states-selected-color,
4488
4495
  state-selected-background: $datepicker-body-dark-color-scheme-states-selected-background
4489
4496
  );
@@ -5205,7 +5212,8 @@ $md-typography: (
5205
5212
  );
5206
5213
 
5207
5214
  $datepicker: (
5208
- state-selected-today-color: map-get($tokens, 'datepicker-body-#{$scheme}-states-selected-today-color'),
5215
+ state-today-color: map-get($tokens, 'datepicker-body-#{$scheme}-states-today-color'),
5216
+ state-today-background: map-get($tokens, 'datepicker-body-#{$scheme}-states-today-background'),
5209
5217
  state-selected-color: map-get($tokens, 'datepicker-body-#{$scheme}-states-selected-color'),
5210
5218
  state-selected-background: map-get($tokens, 'datepicker-body-#{$scheme}-states-selected-background')
5211
5219
  );
@@ -7120,7 +7128,8 @@ $mc-datepicker-today-fade-amount: 0.2;
7120
7128
 
7121
7129
  .mc-calendar__body-today {
7122
7130
  color: map-get($datepicker, state-today-color);
7123
- background-color: map-get($datepicker, state-today-background);
7131
+ // now tokens have wrong color for dark theme
7132
+ //background-color: map-get($datepicker, state-today-background);
7124
7133
  }
7125
7134
 
7126
7135
  .mc-calendar__body_disabled > .mc-calendar__body-today:not(.mc-selected) {
@@ -7128,8 +7137,8 @@ $mc-datepicker-today-fade-amount: 0.2;
7128
7137
  }
7129
7138
 
7130
7139
  .mc-calendar__body-cell-content.mc-selected {
7131
- background: map-get($datepicker, state-selected-background);
7132
7140
  color: map-get($datepicker, state-selected-color);
7141
+ background: map-get($datepicker, state-selected-background);
7133
7142
  }
7134
7143
 
7135
7144
  .mc-calendar__body_disabled > .mc-selected {
@@ -7516,11 +7525,11 @@ $mc-datepicker-today-fade-amount: 0.2;
7516
7525
 
7517
7526
  &.mc-text-with-icon .mc-link__text {
7518
7527
  &:not(:first-child) {
7519
- margin-left: $link-size-icon-margin;
7528
+ margin-left: $link-size-default-icon-margin;
7520
7529
  }
7521
7530
 
7522
7531
  &:not(:last-child) {
7523
- margin-right: $link-size-icon-margin;
7532
+ margin-right: $link-size-default-icon-margin;
7524
7533
  }
7525
7534
  }
7526
7535
 
@@ -7626,6 +7635,10 @@ $mc-datepicker-today-fade-amount: 0.2;
7626
7635
  .mc-link {
7627
7636
  @include mc-typography-level-to-styles($config, $link-font-default);
7628
7637
  }
7638
+
7639
+ .mc-link.mc-link_caption {
7640
+ @include mc-typography-level-to-styles($config, $link-font-caption);
7641
+ }
7629
7642
  }
7630
7643
 
7631
7644
 
package/_visual.scss CHANGED
@@ -1150,10 +1150,12 @@ $link-dark-color-scheme-state-hover-text: #4187ff;
1150
1150
  $link-dark-color-scheme-state-hover-border-bottom: rgba(#4187ff, 0.32);
1151
1151
  $link-dark-color-scheme-state-active: #0374eb;
1152
1152
  $link-dark-color-scheme-state-focused-outline: #4187ff;
1153
- $link-size-icon-margin: 4px;
1154
1153
  $link-size-state-focused-outline-offset: 2px;
1155
1154
  $link-size-state-focused-outline-width: 2px;
1155
+ $link-size-default-icon-margin: 4px;
1156
+ $link-size-caption-icon-margin: 2px;
1156
1157
  $link-font-default: body;
1158
+ $link-font-caption: caption;
1157
1159
  $list-size-horizontal-padding: 12px;
1158
1160
  $list-size-icon-right-margin: 8px;
1159
1161
  $list-size-item-height: 32px;
@@ -1305,7 +1307,7 @@ $modal-dark-color-scheme-body-top-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16);
1305
1307
  $modal-dark-color-scheme-body-bottom-shadow: 0 -2px 4px 0 rgba(0, 0, 0, 0.16);
1306
1308
  $modal-dark-color-scheme-background-mask: rgba(0, 0, 0, 0.5);
1307
1309
  $modal-size-small: 400px;
1308
- $modal-size-normal: 640px;
1310
+ $modal-size-medium: 640px;
1309
1311
  $modal-size-large: 960px;
1310
1312
  $modal-size-top: 48px;
1311
1313
  $modal-size-close-width: 56px;
@@ -1377,7 +1379,7 @@ $popover-size-border-width: 1px;
1377
1379
  $popover-size-arrow-size: 12px;
1378
1380
  $popover-size-trigger-margin: 9px;
1379
1381
  $popover-size-small-width: 200px;
1380
- $popover-size-normal-width: 400px;
1382
+ $popover-size-medium-width: 400px;
1381
1383
  $popover-size-large-width: 640px;
1382
1384
  $popover-font-default: body;
1383
1385
  $popover-header-light-color-scheme-border: #d7dee4;
@@ -1473,6 +1475,9 @@ $select-panel-size-border-radius: 4px;
1473
1475
  $select-panel-font-default: body;
1474
1476
  $sidepanel-light-color-scheme-border: #bdc7d1;
1475
1477
  $sidepanel-dark-color-scheme-border: #19252f;
1478
+ $sidepanel-size-small: 400px;
1479
+ $sidepanel-size-medium: 640px;
1480
+ $sidepanel-size-large: 960px;
1476
1481
  $sidepanel-font-default: body;
1477
1482
  $sidepanel-header-light-color-scheme-border: #d7dee4;
1478
1483
  $sidepanel-header-dark-color-scheme-border: mix(#515e69, transparent, 50%);
@@ -1,17 +1,22 @@
1
1
  import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { ElementRef, OnDestroy, Renderer2, QueryList, AfterContentInit } from '@angular/core';
2
+ import { ChangeDetectorRef, ElementRef, OnDestroy, Renderer2, QueryList, AfterContentInit } from '@angular/core';
3
3
  import { CanColor, CanDisable, CanColorCtor, HasTabIndexCtor } from '@ptsecurity/mosaic/core';
4
4
  import { McIcon } from '@ptsecurity/mosaic/icon';
5
5
  import * as i0 from "@angular/core";
6
+ export declare const leftIconClassName = "mc-icon_left";
7
+ export declare const rightIconClassName = "mc-icon_right";
8
+ export declare const buttonLeftIconClassName = "mc-icon-button_left";
9
+ export declare const buttonRightIconClassName = "mc-icon-button_right";
6
10
  export declare class McButtonCssStyler implements AfterContentInit {
7
11
  private renderer;
12
+ private cdr;
8
13
  icons: QueryList<McIcon>;
9
14
  nativeElement: HTMLElement;
10
15
  isIconButton: boolean;
11
- constructor(elementRef: ElementRef, renderer: Renderer2);
16
+ constructor(elementRef: ElementRef, renderer: Renderer2, cdr: ChangeDetectorRef);
12
17
  ngAfterContentInit(): void;
13
18
  updateClassModifierForIcons(): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<McButtonCssStyler, never>;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<McButtonCssStyler, [null, null, { skipSelf: true; }]>;
15
20
  static ɵdir: i0.ɵɵDirectiveDeclaration<McButtonCssStyler, "[mc-button]", never, {}, {}, ["icons"], never, false>;
16
21
  }
17
22
  /** @docs-private */
@@ -23,11 +28,12 @@ export declare class McButtonBase {
23
28
  export declare const McButtonMixinBase: HasTabIndexCtor & CanColorCtor & typeof McButtonBase;
24
29
  export declare class McButton extends McButtonMixinBase implements OnDestroy, CanDisable, CanColor {
25
30
  private focusMonitor;
31
+ private styler;
26
32
  hasFocus: boolean;
27
33
  get disabled(): any;
28
34
  set disabled(value: any);
29
35
  private _disabled;
30
- constructor(elementRef: ElementRef, focusMonitor: FocusMonitor);
36
+ constructor(elementRef: ElementRef, focusMonitor: FocusMonitor, styler: McButtonCssStyler);
31
37
  ngOnDestroy(): void;
32
38
  onFocus($event: any): void;
33
39
  onBlur(): void;
@@ -35,6 +41,7 @@ export declare class McButton extends McButtonMixinBase implements OnDestroy, Ca
35
41
  focus(): void;
36
42
  focusViaKeyboard(): void;
37
43
  haltDisabledEvents(event: Event): void;
44
+ projectContentChanged(): void;
38
45
  private runFocusMonitor;
39
46
  private stopFocusMonitor;
40
47
  static ɵfac: i0.ɵɵFactoryDeclaration<McButton, never>;
@@ -3,8 +3,9 @@ import * as i1 from "./button.component";
3
3
  import * as i2 from "@angular/common";
4
4
  import * as i3 from "@angular/cdk/a11y";
5
5
  import * as i4 from "@angular/cdk/platform";
6
+ import * as i5 from "@angular/cdk/observers";
6
7
  export declare class McButtonModule {
7
8
  static ɵfac: i0.ɵɵFactoryDeclaration<McButtonModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<McButtonModule, [typeof i1.McButton, typeof i1.McButtonCssStyler], [typeof i2.CommonModule, typeof i3.A11yModule, typeof i4.PlatformModule], [typeof i1.McButton, typeof i1.McButtonCssStyler]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<McButtonModule, [typeof i1.McButton, typeof i1.McButtonCssStyler], [typeof i2.CommonModule, typeof i3.A11yModule, typeof i4.PlatformModule, typeof i5.ObserversModule], [typeof i1.McButton, typeof i1.McButtonCssStyler]>;
9
10
  static ɵinj: i0.ɵɵInjectorDeclaration<McButtonModule>;
10
11
  }
@@ -24,6 +24,7 @@ export declare enum PopUpTriggers {
24
24
  }
25
25
  export declare enum PopUpSizes {
26
26
  Small = "small",
27
- Normal = "normal",
27
+ Medium = "medium",
28
+ Normal = "medium",
28
29
  Large = "large"
29
30
  }
@@ -37,14 +37,20 @@
37
37
  }
38
38
  },
39
39
  size: {
40
- 'icon-margin': { value: '{size.xxs}' },
41
40
  'state-focused': {
42
41
  'outline-offset': { value: '2px' },
43
42
  'outline-width': { value: '2px' }
43
+ },
44
+ default: {
45
+ 'icon-margin': { value: '{size.xxs}' },
46
+ },
47
+ caption: {
48
+ 'icon-margin': { value: '{size.3xs}' }
44
49
  }
45
50
  },
46
51
  font: {
47
- default: { value: 'body' }
52
+ default: { value: 'body' },
53
+ caption: { value: 'caption' }
48
54
  }
49
55
  }
50
56
  }
@@ -222,7 +222,7 @@
222
222
  }
223
223
  },
224
224
  size: {
225
- 'icon-margin': { value: '{link.size.icon-margin}' },
225
+ 'icon-margin': { value: '{link.size.default.icon-margin}' },
226
226
  'state-focused': {
227
227
  'outline-offset': { value: '{link.size.state-focused.outline-offset}' },
228
228
  'outline-width': { value: '{link.size.state-focused.outline-width}' }
@@ -291,4 +291,4 @@
291
291
  default: { value: 'md-body' }
292
292
  }
293
293
  }
294
- }
294
+ }
@@ -26,7 +26,7 @@
26
26
  },
27
27
  size: {
28
28
  small: { value: '400px' },
29
- normal: { value: '640px' },
29
+ medium: { value: '640px' },
30
30
  large: { value: '960px' },
31
31
 
32
32
  top: { value: '48px' },
@@ -22,7 +22,7 @@
22
22
  'trigger-margin': { value: '9px' },
23
23
 
24
24
  'small-width': { value: '200px' },
25
- 'normal-width': { value: '400px' },
25
+ 'medium-width': { value: '400px' },
26
26
  'large-width': { value: '640px' }
27
27
  },
28
28
  font: {
@@ -6,6 +6,11 @@
6
6
  'dark-color-scheme': {
7
7
  border: { value: '{dark-color-scheme.second.palette.value.800}' }
8
8
  },
9
+ size: {
10
+ small: { value: '400px' },
11
+ medium: { value: '640px' },
12
+ large: { value: '960px' },
13
+ },
9
14
  font: {
10
15
  default: { value: 'body' }
11
16
  }
@@ -7949,10 +7949,12 @@ export declare const LinkDarkColorSchemeStateHoverText = "#7FBAE1";
7949
7949
  export declare const LinkDarkColorSchemeStateHoverBorderBottom = "rgba(#7FBAE1, 0.32)";
7950
7950
  export declare const LinkDarkColorSchemeStateActive = "#7FBAE1";
7951
7951
  export declare const LinkDarkColorSchemeStateFocusedOutline = "#57A4D7";
7952
- export declare const LinkSizeIconMargin = "4px";
7953
7952
  export declare const LinkSizeStateFocusedOutlineOffset = "2px";
7954
7953
  export declare const LinkSizeStateFocusedOutlineWidth = "2px";
7954
+ export declare const LinkSizeDefaultIconMargin = "4px";
7955
+ export declare const LinkSizeCaptionIconMargin = "2px";
7955
7956
  export declare const LinkFontDefault = "body";
7957
+ export declare const LinkFontCaption = "caption";
7956
7958
  export declare const ListSizeHorizontalPadding = "12px";
7957
7959
  export declare const ListSizeIconRightMargin = "8px";
7958
7960
  export declare const ListSizeItemHeight = "32px";
@@ -8104,7 +8106,7 @@ export declare const ModalDarkColorSchemeBodyTopShadow = "0 2px 4px 0 rgba(0, 0,
8104
8106
  export declare const ModalDarkColorSchemeBodyBottomShadow = "0 -2px 4px 0 rgba(0, 0, 0, 0.16)";
8105
8107
  export declare const ModalDarkColorSchemeBackgroundMask = "rgba(0, 0, 0, 0.5)";
8106
8108
  export declare const ModalSizeSmall = "400px";
8107
- export declare const ModalSizeNormal = "640px";
8109
+ export declare const ModalSizeMedium = "640px";
8108
8110
  export declare const ModalSizeLarge = "960px";
8109
8111
  export declare const ModalSizeTop = "48px";
8110
8112
  export declare const ModalSizeCloseWidth = "56px";
@@ -8176,7 +8178,7 @@ export declare const PopoverSizeBorderWidth = "1px";
8176
8178
  export declare const PopoverSizeArrowSize = "12px";
8177
8179
  export declare const PopoverSizeTriggerMargin = "9px";
8178
8180
  export declare const PopoverSizeSmallWidth = "200px";
8179
- export declare const PopoverSizeNormalWidth = "400px";
8181
+ export declare const PopoverSizeMediumWidth = "400px";
8180
8182
  export declare const PopoverSizeLargeWidth = "640px";
8181
8183
  export declare const PopoverFontDefault = "body";
8182
8184
  export declare const PopoverHeaderLightColorSchemeBorder = "#E6E6E6";
@@ -8272,6 +8274,9 @@ export declare const SelectPanelSizeBorderRadius = "4px";
8272
8274
  export declare const SelectPanelFontDefault = "body";
8273
8275
  export declare const SidepanelLightColorSchemeBorder = "#B3B3B3";
8274
8276
  export declare const SidepanelDarkColorSchemeBorder = "#333333";
8277
+ export declare const SidepanelSizeSmall = "400px";
8278
+ export declare const SidepanelSizeMedium = "640px";
8279
+ export declare const SidepanelSizeLarge = "960px";
8275
8280
  export declare const SidepanelFontDefault = "body";
8276
8281
  export declare const SidepanelHeaderLightColorSchemeBorder = "#E6E6E6";
8277
8282
  export declare const SidepanelHeaderDarkColorSchemeBorder = "#666666";
@@ -37,14 +37,20 @@
37
37
  }
38
38
  },
39
39
  size: {
40
- 'icon-margin': { value: '{size.xxs}' },
41
40
  'state-focused': {
42
41
  'outline-offset': { value: '2px' },
43
42
  'outline-width': { value: '2px' }
43
+ },
44
+ default: {
45
+ 'icon-margin': { value: '{size.xxs}' },
46
+ },
47
+ caption: {
48
+ 'icon-margin': { value: '{size.3xs}' }
44
49
  }
45
50
  },
46
51
  font: {
47
- default: { value: 'body' }
52
+ default: { value: 'body' },
53
+ caption: { value: 'caption' }
48
54
  }
49
55
  }
50
56
  }
@@ -222,7 +222,7 @@
222
222
  }
223
223
  },
224
224
  size: {
225
- 'icon-margin': { value: '{link.size.icon-margin}' },
225
+ 'icon-margin': { value: '{link.size.default.icon-margin}' },
226
226
  'state-focused': {
227
227
  'outline-offset': { value: '{link.size.state-focused.outline-offset}' },
228
228
  'outline-width': { value: '{link.size.state-focused.outline-width}' }
@@ -291,4 +291,4 @@
291
291
  default: { value: 'md-body' }
292
292
  }
293
293
  }
294
- }
294
+ }
@@ -26,7 +26,7 @@
26
26
  },
27
27
  size: {
28
28
  small: { value: '400px' },
29
- normal: { value: '640px' },
29
+ medium: { value: '640px' },
30
30
  large: { value: '960px' },
31
31
 
32
32
  top: { value: '48px' },
@@ -22,7 +22,7 @@
22
22
  'trigger-margin': { value: '9px' },
23
23
 
24
24
  'small-width': { value: '200px' },
25
- 'normal-width': { value: '400px' },
25
+ 'medium-width': { value: '400px' },
26
26
  'large-width': { value: '640px' }
27
27
  },
28
28
  font: {
@@ -6,6 +6,11 @@
6
6
  'dark-color-scheme': {
7
7
  border: { value: '{dark-color-scheme.second.palette.value.900}' }
8
8
  },
9
+ size: {
10
+ small: { value: '400px' },
11
+ medium: { value: '640px' },
12
+ large: { value: '960px' },
13
+ },
9
14
  font: {
10
15
  default: { value: 'body' }
11
16
  }
@@ -9278,10 +9278,12 @@ export declare const LinkDarkColorSchemeStateHoverText = "#4187ff";
9278
9278
  export declare const LinkDarkColorSchemeStateHoverBorderBottom = "rgba(#4187ff, 0.32)";
9279
9279
  export declare const LinkDarkColorSchemeStateActive = "#0374eb";
9280
9280
  export declare const LinkDarkColorSchemeStateFocusedOutline = "#4187ff";
9281
- export declare const LinkSizeIconMargin = "4px";
9282
9281
  export declare const LinkSizeStateFocusedOutlineOffset = "2px";
9283
9282
  export declare const LinkSizeStateFocusedOutlineWidth = "2px";
9283
+ export declare const LinkSizeDefaultIconMargin = "4px";
9284
+ export declare const LinkSizeCaptionIconMargin = "2px";
9284
9285
  export declare const LinkFontDefault = "body";
9286
+ export declare const LinkFontCaption = "caption";
9285
9287
  export declare const ListSizeHorizontalPadding = "12px";
9286
9288
  export declare const ListSizeIconRightMargin = "8px";
9287
9289
  export declare const ListSizeItemHeight = "32px";
@@ -9433,7 +9435,7 @@ export declare const ModalDarkColorSchemeBodyTopShadow = "0 2px 4px 0 rgba(0, 0,
9433
9435
  export declare const ModalDarkColorSchemeBodyBottomShadow = "0 -2px 4px 0 rgba(0, 0, 0, 0.16)";
9434
9436
  export declare const ModalDarkColorSchemeBackgroundMask = "rgba(0, 0, 0, 0.5)";
9435
9437
  export declare const ModalSizeSmall = "400px";
9436
- export declare const ModalSizeNormal = "640px";
9438
+ export declare const ModalSizeMedium = "640px";
9437
9439
  export declare const ModalSizeLarge = "960px";
9438
9440
  export declare const ModalSizeTop = "48px";
9439
9441
  export declare const ModalSizeCloseWidth = "56px";
@@ -9505,7 +9507,7 @@ export declare const PopoverSizeBorderWidth = "1px";
9505
9507
  export declare const PopoverSizeArrowSize = "12px";
9506
9508
  export declare const PopoverSizeTriggerMargin = "9px";
9507
9509
  export declare const PopoverSizeSmallWidth = "200px";
9508
- export declare const PopoverSizeNormalWidth = "400px";
9510
+ export declare const PopoverSizeMediumWidth = "400px";
9509
9511
  export declare const PopoverSizeLargeWidth = "640px";
9510
9512
  export declare const PopoverFontDefault = "body";
9511
9513
  export declare const PopoverHeaderLightColorSchemeBorder = "#d7dee4";
@@ -9601,6 +9603,9 @@ export declare const SelectPanelSizeBorderRadius = "4px";
9601
9603
  export declare const SelectPanelFontDefault = "body";
9602
9604
  export declare const SidepanelLightColorSchemeBorder = "#bdc7d1";
9603
9605
  export declare const SidepanelDarkColorSchemeBorder = "#19252f";
9606
+ export declare const SidepanelSizeSmall = "400px";
9607
+ export declare const SidepanelSizeMedium = "640px";
9608
+ export declare const SidepanelSizeLarge = "960px";
9604
9609
  export declare const SidepanelFontDefault = "body";
9605
9610
  export declare const SidepanelHeaderLightColorSchemeBorder = "#d7dee4";
9606
9611
  export declare const SidepanelHeaderDarkColorSchemeBorder = "mix(#515e69, transparent, 50%)";
@@ -109,14 +109,14 @@ export class McAutocomplete {
109
109
  /** @nocollapse */ McAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: McAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MC_AUTOCOMPLETE_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
110
110
  /** @nocollapse */ McAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: McAutocomplete, selector: "mc-autocomplete", inputs: { displayWith: "displayWith", panelWidth: "panelWidth", classList: ["class", "classList"], autoActiveFirstOption: "autoActiveFirstOption", openOnFocus: "openOnFocus" }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed" }, host: { classAttribute: "mc-autocomplete" }, providers: [{
111
111
  provide: MC_OPTION_PARENT_COMPONENT, useExisting: McAutocomplete
112
- }], queries: [{ propertyName: "options", predicate: McOption, descendants: true }, { propertyName: "optionGroups", predicate: McOptgroup }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], exportAs: ["mcAutocomplete"], ngImport: i0, template: "<ng-template>\n <div class=\"mc-autocomplete-panel\" role=\"listbox\" [id]=\"id\" [ngClass]=\"classList\" #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-autocomplete-trigger{text-overflow:ellipsis}.mc-autocomplete-panel{visibility:hidden;position:relative;overflow:auto;-webkit-overflow-scrolling:touch;margin-top:-1px;min-width:100%;width:100%;max-width:none;max-height:256px;max-height:var(--mc-autocomplete-size-panel-max-height, 256px);border-width:1px;border-style:solid;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);padding:4px 0;padding:var(--mc-autocomplete-size-panel-padding, 4px 0)}.mc-autocomplete-panel.mc-autocomplete_visible{visibility:visible}.mc-autocomplete-panel.mc-autocomplete_hidden{visibility:hidden}.mc-autocomplete-panel-above .mc-autocomplete-panel{border-radius:4px 4px 0 0;border-radius:var(--mc-autocomplete-size-panel-border-radius, 4px) var(--mc-autocomplete-size-panel-border-radius, 4px) 0 0}.mc-autocomplete-panel .mc-divider-horizontal{margin-top:-1px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
112
+ }], queries: [{ propertyName: "options", predicate: McOption, descendants: true }, { propertyName: "optionGroups", predicate: McOptgroup }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], exportAs: ["mcAutocomplete"], ngImport: i0, template: "<ng-template>\n <div class=\"mc-autocomplete-panel mc-scrollbar\" role=\"listbox\" [id]=\"id\" [ngClass]=\"classList\" #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-autocomplete-trigger{text-overflow:ellipsis}.mc-autocomplete-panel{visibility:hidden;position:relative;overflow:hidden auto;-webkit-overflow-scrolling:touch;margin-top:-1px;min-width:100%;width:100%;max-width:none;max-height:256px;max-height:var(--mc-autocomplete-size-panel-max-height, 256px);border-width:1px;border-style:solid;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);padding:4px 0;padding:var(--mc-autocomplete-size-panel-padding, 4px 0)}.mc-autocomplete-panel.mc-autocomplete_visible{visibility:visible}.mc-autocomplete-panel.mc-autocomplete_hidden{visibility:hidden}.mc-autocomplete-panel-above .mc-autocomplete-panel{border-radius:4px 4px 0 0;border-radius:var(--mc-autocomplete-size-panel-border-radius, 4px) var(--mc-autocomplete-size-panel-border-radius, 4px) 0 0}.mc-autocomplete-panel .mc-divider-horizontal{margin-top:-1px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
113
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: McAutocomplete, decorators: [{
114
114
  type: Component,
115
115
  args: [{ selector: 'mc-autocomplete', exportAs: 'mcAutocomplete', host: {
116
116
  class: 'mc-autocomplete'
117
117
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{
118
118
  provide: MC_OPTION_PARENT_COMPONENT, useExisting: McAutocomplete
119
- }], template: "<ng-template>\n <div class=\"mc-autocomplete-panel\" role=\"listbox\" [id]=\"id\" [ngClass]=\"classList\" #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-autocomplete-trigger{text-overflow:ellipsis}.mc-autocomplete-panel{visibility:hidden;position:relative;overflow:auto;-webkit-overflow-scrolling:touch;margin-top:-1px;min-width:100%;width:100%;max-width:none;max-height:256px;max-height:var(--mc-autocomplete-size-panel-max-height, 256px);border-width:1px;border-style:solid;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);padding:4px 0;padding:var(--mc-autocomplete-size-panel-padding, 4px 0)}.mc-autocomplete-panel.mc-autocomplete_visible{visibility:visible}.mc-autocomplete-panel.mc-autocomplete_hidden{visibility:hidden}.mc-autocomplete-panel-above .mc-autocomplete-panel{border-radius:4px 4px 0 0;border-radius:var(--mc-autocomplete-size-panel-border-radius, 4px) var(--mc-autocomplete-size-panel-border-radius, 4px) 0 0}.mc-autocomplete-panel .mc-divider-horizontal{margin-top:-1px}\n"] }]
119
+ }], template: "<ng-template>\n <div class=\"mc-autocomplete-panel mc-scrollbar\" role=\"listbox\" [id]=\"id\" [ngClass]=\"classList\" #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-autocomplete-trigger{text-overflow:ellipsis}.mc-autocomplete-panel{visibility:hidden;position:relative;overflow:hidden auto;-webkit-overflow-scrolling:touch;margin-top:-1px;min-width:100%;width:100%;max-width:none;max-height:256px;max-height:var(--mc-autocomplete-size-panel-max-height, 256px);border-width:1px;border-style:solid;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mc-autocomplete-size-panel-border-radius, 4px);padding:4px 0;padding:var(--mc-autocomplete-size-panel-padding, 4px 0)}.mc-autocomplete-panel.mc-autocomplete_visible{visibility:visible}.mc-autocomplete-panel.mc-autocomplete_hidden{visibility:hidden}.mc-autocomplete-panel-above .mc-autocomplete-panel{border-radius:4px 4px 0 0;border-radius:var(--mc-autocomplete-size-panel-border-radius, 4px) var(--mc-autocomplete-size-panel-border-radius, 4px) 0 0}.mc-autocomplete-panel .mc-divider-horizontal{margin-top:-1px}\n"] }]
120
120
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
121
121
  type: Inject,
122
122
  args: [MC_AUTOCOMPLETE_DEFAULT_OPTIONS]
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
150
150
  }], openOnFocus: [{
151
151
  type: Input
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRzNGOzs7R0FHRztBQUNILElBQUksMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBRXBDLE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsWUFBbUIsTUFBc0IsRUFBUyxNQUFnQjtRQUEvQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVU7SUFBRyxDQUFDO0NBQ3pFO0FBUUQsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUN4QyxJQUFJLGNBQWMsQ0FBK0IsaUNBQWlDLEVBQUU7SUFDaEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHVDQUF1QztDQUNuRCxDQUFDLENBQUM7QUFFUCxNQUFNLFVBQVUsdUNBQXVDO0lBQ25ELE9BQU8sRUFB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O3NCQUF6QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRWUsT0FBTztzQkFBeEQsZUFBZTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUVuQixZQUFZO3NCQUF4QyxlQUFlO3VCQUFDLFVBQVU7Z0JBR2xCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFHYSxjQUFjO3NCQUFoQyxNQUFNO2dCQUlZLE1BQU07c0JBQXhCLE1BQU07Z0JBR1ksTUFBTTtzQkFBeEIsTUFBTTtnQkFPSCxTQUFTO3NCQURaLEtBQUs7dUJBQUMsT0FBTztnQkFxQlYscUJBQXFCO3NCQUR4QixLQUFLO2dCQXNCRixXQUFXO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAcHRzZWN1cml0eS9jZGsvYTExeSc7XG5pbXBvcnQgeyBNQ19PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCwgTWNPcHRncm91cCwgTWNPcHRpb24gfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvY29yZSc7XG5cblxuLyoqXG4gKiBBdXRvY29tcGxldGUgSURzIG5lZWQgdG8gYmUgdW5pcXVlIGFjcm9zcyBjb21wb25lbnRzLCBzbyB0aGlzIGNvdW50ZXIgZXhpc3RzIG91dHNpZGUgb2ZcbiAqIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAqL1xubGV0IHVuaXF1ZUF1dG9jb21wbGV0ZUlkQ291bnRlciA9IDA7XG5cbmV4cG9ydCBjbGFzcyBNY0F1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzb3VyY2U6IE1jQXV0b2NvbXBsZXRlLCBwdWJsaWMgb3B0aW9uOiBNY09wdGlvbikge31cbn1cblxuLyoqIERlZmF1bHQgYG1jLWF1dG9jb21wbGV0ZWAgb3B0aW9ucyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNY0F1dG9jb21wbGV0ZURlZmF1bHRPcHRpb25zIHtcbiAgICAvKiogV2hldGhlciB0aGUgZmlyc3Qgb3B0aW9uIHNob3VsZCBiZSBoaWdobGlnaHRlZCB3aGVuIGFuIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBvcGVuZWQuICovXG4gICAgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB0byBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIGBtYy1hdXRvY29tcGxldGVgLiAqL1xuZXhwb3J0IGNvbnN0IE1DX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxNY0F1dG9jb21wbGV0ZURlZmF1bHRPcHRpb25zPignbWMtYXV0b2NvbXBsZXRlLWRlZmF1bHQtb3B0aW9ucycsIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgICBmYWN0b3J5OiBNQ19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TX0ZBQ1RPUllcbiAgICB9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIE1DX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSgpOiBNY0F1dG9jb21wbGV0ZURlZmF1bHRPcHRpb25zIHtcbiAgICByZXR1cm4geyBhdXRvQWN0aXZlRmlyc3RPcHRpb246IHRydWUgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtYy1hdXRvY29tcGxldGUnLFxuICAgIGV4cG9ydEFzOiAnbWNBdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnYXV0b2NvbXBsZXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydhdXRvY29tcGxldGUuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdtYy1hdXRvY29tcGxldGUnXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgICAgcHJvdmlkZTogTUNfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsIHVzZUV4aXN0aW5nOiBNY0F1dG9jb21wbGV0ZVxuICAgIH1dXG59KVxuZXhwb3J0IGNsYXNzIE1jQXV0b2NvbXBsZXRlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqIFVuaXF1ZSBJRCB0byBiZSB1c2VkIGJ5IGF1dG9jb21wbGV0ZSB0cmlnZ2VyJ3MgXCJhcmlhLW93bnNcIiBwcm9wZXJ0eS4gKi9cbiAgICBpZDogc3RyaW5nID0gYG1jLWF1dG9jb21wbGV0ZS0ke3VuaXF1ZUF1dG9jb21wbGV0ZUlkQ291bnRlcisrfWA7XG5cbiAgICAvKiogTWFuYWdlcyBhY3RpdmUgaXRlbSBpbiBvcHRpb24gbGlzdCBiYXNlZCBvbiBrZXkgZXZlbnRzLiAqL1xuICAgIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE1jT3B0aW9uPjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgcGFuZWwgc2hvdWxkIGJlIHZpc2libGUsIGRlcGVuZGluZyBvbiBvcHRpb24gbGVuZ3RoLiAqL1xuICAgIHNob3dQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgncGFuZWwnLCB7c3RhdGljOiBmYWxzZX0pIHBhbmVsOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihNY09wdGlvbiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBvcHRpb25zOiBRdWVyeUxpc3Q8TWNPcHRpb24+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihNY09wdGdyb3VwKSBvcHRpb25Hcm91cHM6IFF1ZXJ5TGlzdDxNY09wdGdyb3VwPjtcblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IG1hcHMgYW4gb3B0aW9uJ3MgY29udHJvbCB2YWx1ZSB0byBpdHMgZGlzcGxheSB2YWx1ZSBpbiB0aGUgdHJpZ2dlci4gKi9cbiAgICBASW5wdXQoKSBkaXNwbGF5V2l0aDogKCh2YWx1ZTogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsLiAgQ2FuIGJlIGFueSBDU1Mgc2l6aW5nIHZhbHVlLCBvdGhlcndpc2UgaXQgd2lsbFxuICAgICAqIG1hdGNoIHRoZSB3aWR0aCBvZiBpdHMgaG9zdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW5ldmVyIGFuIG9wdGlvbiBmcm9tIHRoZSBsaXN0IGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPE1jQXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE1jQXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsIGlzIG9wZW5lZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogVGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWMtYXV0b2NvbXBsZXRlIGVsZW1lbnQgYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgcGFuZWxcbiAgICAgKiBpbnNpZGUgdGhlIG92ZXJsYXkgY29udGFpbmVyIHRvIGFsbG93IGZvciBlYXN5IHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KCdjbGFzcycpXG4gICAgZ2V0IGNsYXNzTGlzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTGlzdDtcbiAgICB9XG5cbiAgICBzZXQgY2xhc3NMaXN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFsdWUuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChjbGFzc05hbWUpID0+IHRoaXMuX2NsYXNzTGlzdFtjbGFzc05hbWUudHJpbSgpXSA9IHRydWUpO1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NsYXNzTGlzdDogYW55ID0ge307XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmaXJzdCBvcHRpb24gc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdoZW4gdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBvcGVuZWQuXG4gICAgICogQ2FuIGJlIGNvbmZpZ3VyZWQgZ2xvYmFsbHkgdGhyb3VnaCB0aGUgYE1DX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNgIHRva2VuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbjtcbiAgICB9XG5cbiAgICBzZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuO1xuXG4gICAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzT3BlbiAmJiB0aGlzLnNob3dQYW5lbDtcbiAgICB9XG5cbiAgICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgb3Blbk9uRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuT25Gb2N1cztcbiAgICB9XG5cbiAgICBzZXQgb3Blbk9uRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3Blbk9uRm9jdXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vcGVuT25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoTUNfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUykgZGVmYXVsdHM6IE1jQXV0b2NvbXBsZXRlRGVmYXVsdE9wdGlvbnNcbiAgICApIHtcbiAgICAgICAgdGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9uID0gISFkZWZhdWx0cy5hdXRvQWN0aXZlRmlyc3RPcHRpb247XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8TWNPcHRpb24+KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eSgpO1xuICAgIH1cblxuICAgIHNldFNjcm9sbFRvcChzY3JvbGxUb3A6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYW5lbCkge1xuICAgICAgICAgICAgdGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNjcm9sbFRvcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCA/IHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgOiAwO1xuICAgIH1cblxuICAgIHNldFZpc2liaWxpdHkoKSB7XG4gICAgICAgIHRoaXMuc2hvd1BhbmVsID0gISF0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9jbGFzc0xpc3RbJ21jLWF1dG9jb21wbGV0ZV92aXNpYmxlJ10gPSB0aGlzLnNob3dQYW5lbDtcbiAgICAgICAgdGhpcy5fY2xhc3NMaXN0WydtYy1hdXRvY29tcGxldGVfaGlkZGVuJ10gPSAhdGhpcy5zaG93UGFuZWw7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBlbWl0U2VsZWN0RXZlbnQob3B0aW9uOiBNY09wdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBNY0F1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQodGhpcywgb3B0aW9uKTtcblxuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGFueSB7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgIH1cbn1cblxuIiwiPG5nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtYy1hdXRvY29tcGxldGUtcGFuZWxcIiByb2xlPVwibGlzdGJveFwiIFtpZF09XCJpZFwiIFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiICNwYW5lbD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRzNGOzs7R0FHRztBQUNILElBQUksMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBRXBDLE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsWUFBbUIsTUFBc0IsRUFBUyxNQUFnQjtRQUEvQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVU7SUFBRyxDQUFDO0NBQ3pFO0FBUUQsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUN4QyxJQUFJLGNBQWMsQ0FBK0IsaUNBQWlDLEVBQUU7SUFDaEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHVDQUF1QztDQUNuRCxDQUFDLENBQUM7QUFFUCxNQUFNLFVBQVUsdUNBQXVDO0lBQ25ELE9BQU8sRUFB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O3NCQUF6QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRWUsT0FBTztzQkFBeEQsZUFBZTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUVuQixZQUFZO3NCQUF4QyxlQUFlO3VCQUFDLFVBQVU7Z0JBR2xCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFHYSxjQUFjO3NCQUFoQyxNQUFNO2dCQUlZLE1BQU07c0JBQXhCLE1BQU07Z0JBR1ksTUFBTTtzQkFBeEIsTUFBTTtnQkFPSCxTQUFTO3NCQURaLEtBQUs7dUJBQUMsT0FBTztnQkFxQlYscUJBQXFCO3NCQUR4QixLQUFLO2dCQXNCRixXQUFXO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAcHRzZWN1cml0eS9jZGsvYTExeSc7XG5pbXBvcnQgeyBNQ19PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCwgTWNPcHRncm91cCwgTWNPcHRpb24gfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvY29yZSc7XG5cblxuLyoqXG4gKiBBdXRvY29tcGxldGUgSURzIG5lZWQgdG8gYmUgdW5pcXVlIGFjcm9zcyBjb21wb25lbnRzLCBzbyB0aGlzIGNvdW50ZXIgZXhpc3RzIG91dHNpZGUgb2ZcbiAqIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAqL1xubGV0IHVuaXF1ZUF1dG9jb21wbGV0ZUlkQ291bnRlciA9IDA7XG5cbmV4cG9ydCBjbGFzcyBNY0F1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzb3VyY2U6IE1jQXV0b2NvbXBsZXRlLCBwdWJsaWMgb3B0aW9uOiBNY09wdGlvbikge31cbn1cblxuLyoqIERlZmF1bHQgYG1jLWF1dG9jb21wbGV0ZWAgb3B0aW9ucyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNY0F1dG9jb21wbGV0ZURlZmF1bHRPcHRpb25zIHtcbiAgICAvKiogV2hldGhlciB0aGUgZmlyc3Qgb3B0aW9uIHNob3VsZCBiZSBoaWdobGlnaHRlZCB3aGVuIGFuIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBvcGVuZWQuICovXG4gICAgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB0byBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIGBtYy1hdXRvY29tcGxldGVgLiAqL1xuZXhwb3J0IGNvbnN0IE1DX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxNY0F1dG9jb21wbGV0ZURlZmF1bHRPcHRpb25zPignbWMtYXV0b2NvbXBsZXRlLWRlZmF1bHQtb3B0aW9ucycsIHtcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgICBmYWN0b3J5OiBNQ19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TX0ZBQ1RPUllcbiAgICB9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIE1DX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSgpOiBNY0F1dG9jb21wbGV0ZURlZmF1bHRPcHRpb25zIHtcbiAgICByZXR1cm4geyBhdXRvQWN0aXZlRmlyc3RPcHRpb246IHRydWUgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtYy1hdXRvY29tcGxldGUnLFxuICAgIGV4cG9ydEFzOiAnbWNBdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnYXV0b2NvbXBsZXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydhdXRvY29tcGxldGUuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdtYy1hdXRvY29tcGxldGUnXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgICAgcHJvdmlkZTogTUNfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsIHVzZUV4aXN0aW5nOiBNY0F1dG9jb21wbGV0ZVxuICAgIH1dXG59KVxuZXhwb3J0IGNsYXNzIE1jQXV0b2NvbXBsZXRlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqIFVuaXF1ZSBJRCB0byBiZSB1c2VkIGJ5IGF1dG9jb21wbGV0ZSB0cmlnZ2VyJ3MgXCJhcmlhLW93bnNcIiBwcm9wZXJ0eS4gKi9cbiAgICBpZDogc3RyaW5nID0gYG1jLWF1dG9jb21wbGV0ZS0ke3VuaXF1ZUF1dG9jb21wbGV0ZUlkQ291bnRlcisrfWA7XG5cbiAgICAvKiogTWFuYWdlcyBhY3RpdmUgaXRlbSBpbiBvcHRpb24gbGlzdCBiYXNlZCBvbiBrZXkgZXZlbnRzLiAqL1xuICAgIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE1jT3B0aW9uPjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgcGFuZWwgc2hvdWxkIGJlIHZpc2libGUsIGRlcGVuZGluZyBvbiBvcHRpb24gbGVuZ3RoLiAqL1xuICAgIHNob3dQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwge3N0YXRpYzogdHJ1ZX0pIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgncGFuZWwnLCB7c3RhdGljOiBmYWxzZX0pIHBhbmVsOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihNY09wdGlvbiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBvcHRpb25zOiBRdWVyeUxpc3Q8TWNPcHRpb24+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihNY09wdGdyb3VwKSBvcHRpb25Hcm91cHM6IFF1ZXJ5TGlzdDxNY09wdGdyb3VwPjtcblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IG1hcHMgYW4gb3B0aW9uJ3MgY29udHJvbCB2YWx1ZSB0byBpdHMgZGlzcGxheSB2YWx1ZSBpbiB0aGUgdHJpZ2dlci4gKi9cbiAgICBASW5wdXQoKSBkaXNwbGF5V2l0aDogKCh2YWx1ZTogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsLiAgQ2FuIGJlIGFueSBDU1Mgc2l6aW5nIHZhbHVlLCBvdGhlcndpc2UgaXQgd2lsbFxuICAgICAqIG1hdGNoIHRoZSB3aWR0aCBvZiBpdHMgaG9zdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW5ldmVyIGFuIG9wdGlvbiBmcm9tIHRoZSBsaXN0IGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPE1jQXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE1jQXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsIGlzIG9wZW5lZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogVGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWMtYXV0b2NvbXBsZXRlIGVsZW1lbnQgYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgcGFuZWxcbiAgICAgKiBpbnNpZGUgdGhlIG92ZXJsYXkgY29udGFpbmVyIHRvIGFsbG93IGZvciBlYXN5IHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KCdjbGFzcycpXG4gICAgZ2V0IGNsYXNzTGlzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTGlzdDtcbiAgICB9XG5cbiAgICBzZXQgY2xhc3NMaXN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFsdWUuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChjbGFzc05hbWUpID0+IHRoaXMuX2NsYXNzTGlzdFtjbGFzc05hbWUudHJpbSgpXSA9IHRydWUpO1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NsYXNzTGlzdDogYW55ID0ge307XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBmaXJzdCBvcHRpb24gc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdoZW4gdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBvcGVuZWQuXG4gICAgICogQ2FuIGJlIGNvbmZpZ3VyZWQgZ2xvYmFsbHkgdGhyb3VnaCB0aGUgYE1DX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNgIHRva2VuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbjtcbiAgICB9XG5cbiAgICBzZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuO1xuXG4gICAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzT3BlbiAmJiB0aGlzLnNob3dQYW5lbDtcbiAgICB9XG5cbiAgICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgb3Blbk9uRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuT25Gb2N1cztcbiAgICB9XG5cbiAgICBzZXQgb3Blbk9uRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3Blbk9uRm9jdXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vcGVuT25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoTUNfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUykgZGVmYXVsdHM6IE1jQXV0b2NvbXBsZXRlRGVmYXVsdE9wdGlvbnNcbiAgICApIHtcbiAgICAgICAgdGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9uID0gISFkZWZhdWx0cy5hdXRvQWN0aXZlRmlyc3RPcHRpb247XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8TWNPcHRpb24+KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eSgpO1xuICAgIH1cblxuICAgIHNldFNjcm9sbFRvcChzY3JvbGxUb3A6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYW5lbCkge1xuICAgICAgICAgICAgdGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNjcm9sbFRvcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCA/IHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgOiAwO1xuICAgIH1cblxuICAgIHNldFZpc2liaWxpdHkoKSB7XG4gICAgICAgIHRoaXMuc2hvd1BhbmVsID0gISF0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9jbGFzc0xpc3RbJ21jLWF1dG9jb21wbGV0ZV92aXNpYmxlJ10gPSB0aGlzLnNob3dQYW5lbDtcbiAgICAgICAgdGhpcy5fY2xhc3NMaXN0WydtYy1hdXRvY29tcGxldGVfaGlkZGVuJ10gPSAhdGhpcy5zaG93UGFuZWw7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBlbWl0U2VsZWN0RXZlbnQob3B0aW9uOiBNY09wdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBNY0F1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQodGhpcywgb3B0aW9uKTtcblxuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGFueSB7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgIH1cbn1cblxuIiwiPG5nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtYy1hdXRvY29tcGxldGUtcGFuZWwgbWMtc2Nyb2xsYmFyXCIgcm9sZT1cImxpc3Rib3hcIiBbaWRdPVwiaWRcIiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIiAjcGFuZWw+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=