@wizishop/angular-components 15.1.118 → 15.1.120

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 (42) hide show
  1. package/angular-components.scss +210 -107
  2. package/esm2020/lib/components/border-picker/border-picker.component.mjs +36 -34
  3. package/esm2020/lib/components/grid/grid.component.mjs +28 -0
  4. package/esm2020/lib/components/header-page/header-page.component.mjs +1 -1
  5. package/esm2020/lib/components/hn/h1/h1.component.mjs +12 -3
  6. package/esm2020/lib/components/hn/h2/h2.component.mjs +16 -6
  7. package/esm2020/lib/components/hn/h3/h3.component.mjs +12 -3
  8. package/esm2020/lib/components/hn/h4/h4.component.mjs +12 -3
  9. package/esm2020/lib/components/menu-tile/menu-tile.component.mjs +65 -0
  10. package/esm2020/lib/components/multiple-search-plus/multiple-search-plus.component.mjs +1 -1
  11. package/esm2020/lib/components/radio-legacy/radio-group-legacy.directive.mjs +34 -0
  12. package/esm2020/lib/components/radio-legacy/radio-legacy-directive.mjs +22 -0
  13. package/esm2020/lib/components/row/row.component.mjs +8 -4
  14. package/esm2020/lib/components/shared-components.module.mjs +14 -6
  15. package/esm2020/lib/components/slide-in/slide-in.component.mjs +32 -3
  16. package/esm2020/lib/components/text/text.component.mjs +14 -3
  17. package/esm2020/lib/directives/shared-directives.module.mjs +9 -9
  18. package/esm2020/public-api.mjs +5 -3
  19. package/fesm2015/wizishop-angular-components.mjs +248 -75
  20. package/fesm2015/wizishop-angular-components.mjs.map +1 -1
  21. package/fesm2020/wizishop-angular-components.mjs +248 -75
  22. package/fesm2020/wizishop-angular-components.mjs.map +1 -1
  23. package/lib/components/border-picker/border-picker.component.d.ts +6 -10
  24. package/lib/components/grid/grid.component.d.ts +13 -0
  25. package/lib/components/hn/h1/h1.component.d.ts +4 -1
  26. package/lib/components/hn/h2/h2.component.d.ts +4 -1
  27. package/lib/components/hn/h3/h3.component.d.ts +4 -1
  28. package/lib/components/hn/h4/h4.component.d.ts +4 -1
  29. package/lib/components/menu-tile/menu-tile.component.d.ts +23 -0
  30. package/lib/components/radio-legacy/{radio-group.directive.d.ts → radio-group-legacy.directive.d.ts} +3 -3
  31. package/lib/components/radio-legacy/{radio-directive.d.ts → radio-legacy-directive.d.ts} +3 -3
  32. package/lib/components/row/row.component.d.ts +3 -1
  33. package/lib/components/shared-components.module.d.ts +117 -115
  34. package/lib/components/slide-in/slide-in.component.d.ts +14 -1
  35. package/lib/components/text/text.component.d.ts +4 -1
  36. package/lib/directives/shared-directives.module.d.ts +3 -3
  37. package/package.json +1 -1
  38. package/public-api.d.ts +4 -2
  39. package/wizishop-angular-components-15.1.120.tgz +0 -0
  40. package/esm2020/lib/components/radio-legacy/radio-directive.mjs +0 -22
  41. package/esm2020/lib/components/radio-legacy/radio-group.directive.mjs +0 -34
  42. package/wizishop-angular-components-15.1.118.tgz +0 -0
@@ -954,20 +954,22 @@ wac-block {
954
954
  }
955
955
 
956
956
  .w-input {
957
- width: 210px;
957
+ width: 100%;
958
+ min-width: 305px;
958
959
  height: 40px;
959
960
  display: flex;
960
961
  align-items: center;
961
962
  gap: 10px;
962
- padding: 5px;
963
+ padding: 8px;
963
964
  border: 1px solid #dee2ed;
964
965
  border-radius: 3px;
965
966
  position: relative;
966
967
 
967
968
  .border-preview {
968
969
  position: relative;
969
- width: 30px;
970
- height: 30px;
970
+ width: 100%;
971
+ max-width: 24px;
972
+ height: 24px;
971
973
  border: 2px solid #1d2a3b;
972
974
  border-radius: 3px;
973
975
 
@@ -981,17 +983,99 @@ wac-block {
981
983
 
982
984
  .mask1 {
983
985
  width: 30px;
984
- height: 14px;
986
+ height: 5px;
985
987
  }
986
988
 
987
989
  .mask2 {
988
- width: 14px;
990
+ width: 5px;
989
991
  height: 30px;
990
992
  }
993
+
991
994
  }
992
-
995
+
996
+ .bp-range {
997
+ width: 100%;
998
+ max-width: 202px;
999
+ height: 4px;
1000
+ background: transparent;
1001
+ -webkit-appearance: none;
1002
+ appearance: none;
1003
+ margin: 0;
1004
+ cursor: pointer;
1005
+
1006
+ &::-webkit-slider-runnable-track {
1007
+ height: 4px;
1008
+ background: #dee2ed;
1009
+ border-radius: 20px;
1010
+ }
1011
+
1012
+ &::-moz-range-track {
1013
+ height: 4px;
1014
+ background: #dee2ed;
1015
+ border-radius: 20px;
1016
+ }
1017
+
1018
+ &::-ms-track {
1019
+ height: 4px;
1020
+ background: #dee2ed;
1021
+ border-radius: 20px;
1022
+ border-color: transparent;
1023
+ color: transparent;
1024
+ }
1025
+
1026
+ // Thumb style
1027
+ &::-webkit-slider-thumb {
1028
+ -webkit-appearance: none;
1029
+ width: 16px;
1030
+ height: 16px;
1031
+ border-radius: 50%;
1032
+ background: #3BA6EC;
1033
+ margin-top: -6px; // Centrer verticalement (height of track - height of thumb) / 2
1034
+ border: 2px solid white;
1035
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2);
1036
+ transition: all 0.2s ease;
1037
+ }
1038
+
1039
+ &::-moz-range-thumb {
1040
+ width: 16px;
1041
+ height: 16px;
1042
+ border-radius: 50%;
1043
+ background: #3BA6EC;
1044
+ border: 2px solid white;
1045
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2);
1046
+ transition: all 0.2s ease;
1047
+ }
1048
+
1049
+ &::-ms-thumb {
1050
+ width: 16px;
1051
+ height: 16px;
1052
+ border-radius: 50%;
1053
+ background: #3BA6EC;
1054
+ border: 2px solid white;
1055
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2);
1056
+ transition: all 0.2s ease;
1057
+ }
1058
+
1059
+ // Active/hover state
1060
+ &:active::-webkit-slider-thumb,
1061
+ &:hover::-webkit-slider-thumb {
1062
+ transform: scale(1.1);
1063
+ }
1064
+
1065
+ &:active::-moz-range-thumb,
1066
+ &:hover::-moz-range-thumb {
1067
+ transform: scale(1.1);
1068
+ }
1069
+
1070
+ // Fill color before thumb (optional)
1071
+ &::-webkit-slider-runnable-track {
1072
+ background: linear-gradient(to right, #3BA6EC 0%, #3BA6EC var(--slider-percentage, 0%), #dee2ed var(--slider-percentage, 0%), #dee2ed 100%);
1073
+ }
1074
+ }
1075
+
993
1076
  .bp-input {
994
- width: 70%;
1077
+ width: 100%;
1078
+ max-width: 45px;
995
1079
  height: 100%;
996
1080
  border: none;
997
1081
  font-size: 14px;
@@ -999,101 +1083,6 @@ wac-block {
999
1083
  font-weight: 400;
1000
1084
  }
1001
1085
 
1002
- .slider-popup {
1003
- display: flex;
1004
- flex-direction: column;
1005
- gap: 10px;
1006
- position: absolute;
1007
- top: 50px;
1008
- left: 0;
1009
- min-width: 270px;
1010
- background: white;
1011
- border: 1px solid #dee2ed;
1012
- padding: 10px;
1013
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
1014
- z-index: 10;
1015
- display: flex;
1016
- align-items: center;
1017
- gap: 10px;
1018
-
1019
- &::before {
1020
- content: '';
1021
- position: absolute;
1022
- top: -20px;
1023
- left: 8px;
1024
- border: 10px solid transparent;
1025
- border-bottom-color: #dee2ed;
1026
- }
1027
-
1028
- .slider {
1029
- width: 100%;
1030
- display: flex;
1031
- align-items: center;
1032
- gap: 10px;
1033
-
1034
- input[type="range"] {
1035
- -webkit-appearance: none;
1036
- width: 100%;
1037
- height: 8px;
1038
- background: #dee2ed;
1039
- border-radius: 5px;
1040
- outline: none;
1041
- opacity: 0.7;
1042
- transition: opacity .2s;
1043
-
1044
- &:hover {
1045
- opacity: 1;
1046
- }
1047
-
1048
- &::-webkit-slider-thumb {
1049
- -webkit-appearance: none;
1050
- appearance: none;
1051
- width: 20px;
1052
- height: 20px;
1053
- background: #52aecd;
1054
- cursor: pointer;
1055
- border-radius: 50%;
1056
- box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
1057
- }
1058
-
1059
- &::-moz-range-thumb {
1060
- width: 20px;
1061
- height: 20px;
1062
- background: #52aecd;
1063
- cursor: pointer;
1064
- border-radius: 50%;
1065
- box-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
1066
- }
1067
- }
1068
- }
1069
-
1070
- .preset-buttons {
1071
- display: flex;
1072
- gap: 10px;
1073
- align-items: center;
1074
-
1075
- button {
1076
- border: 1px solid #dee2ed;
1077
- background-color: #f5f5f5;
1078
- color: #1d2a3b;
1079
- font-size: 14px;
1080
- border-radius: 12px;
1081
- padding: 5px 15px;
1082
- cursor: pointer;
1083
- transition: background-color 0.3s, box-shadow 0.3s;
1084
-
1085
- &:hover {
1086
- background-color: #e0e0e0;
1087
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
1088
- }
1089
-
1090
- &:active {
1091
- background-color: #d0d0d0;
1092
- box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.2);
1093
- }
1094
- }
1095
- }
1096
- }
1097
1086
  }
1098
1087
  }.wac-breadcrumbs {
1099
1088
  width: 100%;
@@ -4689,7 +4678,13 @@ wac-calendar {
4689
4678
  margin: 0;
4690
4679
  }
4691
4680
  }
4692
- .wac-header-page {
4681
+ wac-grid {
4682
+ width: 100%;
4683
+
4684
+ .wac-grid {
4685
+ display: grid;
4686
+ }
4687
+ }.wac-header-page {
4693
4688
  width: 100%;
4694
4689
  background-color: transparent;
4695
4690
  position: relative;
@@ -5038,6 +5033,71 @@ wac-calendar {
5038
5033
  }
5039
5034
  }
5040
5035
  }
5036
+ :host {
5037
+ position: relative;
5038
+
5039
+ @for $i from 1 through 12 {
5040
+ &.wac-menu-tile--col-#{$i} {
5041
+ grid-column: span $i;
5042
+ }
5043
+ }
5044
+
5045
+ }
5046
+
5047
+ .wac-menu-tile {
5048
+ &__new {
5049
+ position: absolute;
5050
+ background-color: #59D0CF;
5051
+ color: #ffffff;
5052
+ font-weight: 500;
5053
+ font-size: 12px;
5054
+ padding: 6px;
5055
+ top: 0;
5056
+ left: 15px;
5057
+ }
5058
+
5059
+ &__content {
5060
+ display: flex;
5061
+ flex-direction: column;
5062
+ justify-content: center;
5063
+ align-items: center;
5064
+ gap: 15px;
5065
+ height: 100%;
5066
+ background: #ffffff;
5067
+ width: 100%;
5068
+ padding: 20px;
5069
+ border: 1px solid #ffffff;
5070
+ border-radius: 3px;
5071
+ box-shadow: 0px 2px 6px #0000000d;
5072
+ transition: border-color 0.3s ease-in-out;
5073
+
5074
+ &:hover,
5075
+ &:active,
5076
+ &:focus {
5077
+ border-color: #3BA6EC;
5078
+ transition: border-color 0.3s ease-in-out;
5079
+ }
5080
+
5081
+ img {
5082
+ width: auto;
5083
+ height: 40px;
5084
+ max-height: 40px;
5085
+ margin: 10px 0;
5086
+ }
5087
+
5088
+ .w-text {
5089
+ display: flex;
5090
+ flex-direction: column;
5091
+ align-items: center;
5092
+ gap: 10px;
5093
+ text-align: center;
5094
+ }
5095
+ }
5096
+
5097
+ a {
5098
+ cursor: pointer;
5099
+ }
5100
+ }
5041
5101
  .wac-mosaic {
5042
5102
  height: 450px;
5043
5103
  position: relative;
@@ -7161,8 +7221,8 @@ wac-optional-disable-container {
7161
7221
  &__panel {
7162
7222
  position: fixed;
7163
7223
  top: 0;
7164
- right: -550px;
7165
- width: 550px;
7224
+ right: -100%;
7225
+ width: 25%;
7166
7226
  height: 100%;
7167
7227
  background-color: #fff;
7168
7228
  box-shadow: -2px 0 10px rgba(0, 0, 0, 0.2);
@@ -7170,6 +7230,16 @@ wac-optional-disable-container {
7170
7230
  transition: right 0.3s ease;
7171
7231
  display: flex;
7172
7232
  flex-direction: column;
7233
+
7234
+ @include media('<1440px') {
7235
+ width: 40%;
7236
+ }
7237
+ @include media('<desktop') {
7238
+ width: 50%;
7239
+ }
7240
+ @include media('<tablet') {
7241
+ width: 85%;
7242
+ }
7173
7243
 
7174
7244
  &.is-open {
7175
7245
  right: 0;
@@ -7206,6 +7276,15 @@ wac-optional-disable-container {
7206
7276
  flex: 1;
7207
7277
  overflow-y: auto;
7208
7278
  }
7279
+
7280
+ &__footer {
7281
+ display: flex;
7282
+ justify-content: space-between;
7283
+ align-items: center;
7284
+ padding: 30px;
7285
+ gap: 15px;
7286
+ background-color: #F5F8FA;
7287
+ }
7209
7288
  }
7210
7289
  }
7211
7290
 
@@ -7860,7 +7939,7 @@ wac-optional-disable-container {
7860
7939
  opacity: 0;
7861
7940
  z-index: -1;
7862
7941
  transition: opacity 0.3s ease-in-out, visibility 0s linear 0.3s,
7863
- z-index 0s linear 0.3s;
7942
+ z-index 0s linear 0.3s;
7864
7943
 
7865
7944
  &.open {
7866
7945
  visibility: initial;
@@ -8347,6 +8426,11 @@ wac-optional-disable-container {
8347
8426
  line-height: rem(25);
8348
8427
  color: $wac-main-text;
8349
8428
  margin: 0 0 rem(30);
8429
+
8430
+ &.no-margin {
8431
+ margin: 0 !important;
8432
+ }
8433
+
8350
8434
  &.grey {
8351
8435
  color: $wac-second-color;
8352
8436
  * {
@@ -8897,14 +8981,21 @@ h1.wac-h1 {
8897
8981
  line-height: rem(35);
8898
8982
  font-weight: 600;
8899
8983
  color: $wac-main-text;
8984
+
8900
8985
  @include media('<desktop') {
8901
8986
  font-size: rem(22);
8902
8987
  line-height: rem(30);
8903
8988
  }
8989
+
8990
+ &.no-margin {
8991
+ margin: 0 !important;
8992
+ }
8993
+
8904
8994
  &.with-img {
8905
8995
  display: flex;
8906
8996
  align-items: center;
8907
8997
  }
8998
+
8908
8999
  &.center {
8909
9000
  text-align: center;
8910
9001
  }
@@ -8922,11 +9013,20 @@ h2.wac-h2 {
8922
9013
  line-height: rem(21);
8923
9014
  font-weight: 500;
8924
9015
  color: $wac-main-text;
9016
+
9017
+ &.no-margin {
9018
+ margin: 0 !important;
9019
+ }
8925
9020
  }h3.wac-h3 {
8926
9021
  font-size: rem(16);
8927
9022
  line-height: rem(19);
8928
9023
  font-weight: 500;
8929
9024
  color: $wac-main-text;
9025
+
9026
+ &.no-margin {
9027
+ margin: 0 !important;
9028
+ }
9029
+
8930
9030
  &.grey {
8931
9031
  color: $wac-second-color;
8932
9032
  }
@@ -8936,6 +9036,9 @@ h4.wac-h4 {
8936
9036
  line-height: rem(16);
8937
9037
  font-weight: 500;
8938
9038
  color: $wac-main-text;
9039
+ &.no-margin {
9040
+ margin: 0 !important;
9041
+ }
8939
9042
  &.grey {
8940
9043
  color: $wac-second-color;
8941
9044
  }
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from "@angular/common";
2
- import { Component, EventEmitter, Input, Output, HostListener, forwardRef } from "@angular/core";
2
+ import { Component, EventEmitter, Input, Output, forwardRef } from "@angular/core";
3
3
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
@@ -8,19 +8,22 @@ export class BorderPickerComponent {
8
8
  constructor() {
9
9
  this.gap = '12px';
10
10
  this.fontSize = '14px';
11
- this.borderRadius = '0px';
12
- this.firstBtnOption = 'Small';
13
- this.secondBtnOption = 'Medium';
14
- this.thirdBtnOption = 'Full';
15
11
  this.disabled = false;
16
- this.value = '';
12
+ this.value = '0%';
17
13
  this.blurred = new EventEmitter();
18
14
  this.borderRadiusChange = new EventEmitter();
19
- this.showSlider = false;
20
15
  this.sliderValue = 0;
21
16
  this.onChange = () => { };
22
17
  this.onTouched = () => { };
23
18
  }
19
+ ngOnInit() {
20
+ if (this.value) {
21
+ const numericValue = parseInt(this.value.replace('%', ''), 10);
22
+ if (!isNaN(numericValue)) {
23
+ this.sliderValue = numericValue;
24
+ }
25
+ }
26
+ }
24
27
  writeValue(value) {
25
28
  if (value !== undefined) {
26
29
  this.value = value;
@@ -34,39 +37,49 @@ export class BorderPickerComponent {
34
37
  }
35
38
  setValue(event) {
36
39
  this.value = event.target.value;
40
+ const numericValue = parseInt(this.value.replace('%', ''), 10);
41
+ if (!isNaN(numericValue)) {
42
+ this.sliderValue = numericValue;
43
+ this.updateSliderPercentage();
44
+ }
37
45
  this.onChange(this.value);
38
46
  this.borderRadiusChange.emit(this.value);
39
47
  }
40
- onFocusOut() {
48
+ updateSliderPercentage() {
49
+ const slider = document.querySelector('.bp-range');
50
+ if (slider) {
51
+ slider.style.setProperty('--slider-percentage', `${this.sliderValue}%`);
52
+ }
53
+ }
54
+ ngAfterViewInit() {
55
+ this.updateSliderPercentage();
41
56
  }
42
- openSlider() {
43
- this.showSlider = true;
44
- this.sliderValue = parseInt(this.value.replace('px', ''), 10) || 0;
57
+ onFocusOut() {
58
+ if (!this.value.endsWith('%') && this.value) {
59
+ this.value = this.value + '%';
60
+ this.onChange(this.value);
61
+ this.borderRadiusChange.emit(this.value);
62
+ }
45
63
  }
46
64
  updateBorderRadius(value) {
47
- this.value = value + 'px';
48
- this.onChange(this.value); // Notifie Angular du changement
65
+ this.value = value + '%';
66
+ this.updateSliderPercentage();
67
+ this.onChange(this.value);
49
68
  this.borderRadiusChange.emit(this.value);
50
69
  }
51
70
  setBorderRadius(value) {
52
71
  this.sliderValue = value;
53
72
  this.updateBorderRadius(value);
54
73
  }
55
- onClickOutside(event) {
56
- const target = event.target;
57
- if (!target.closest('.w-input')) {
58
- this.showSlider = false;
59
- }
60
- }
61
74
  }
62
75
  BorderPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BorderPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- BorderPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: BorderPickerComponent, isStandalone: true, selector: "wac-border-picker", inputs: { label: "label", gap: "gap", fontSize: "fontSize", borderRadius: "borderRadius", firstBtnOption: "firstBtnOption", secondBtnOption: "secondBtnOption", thirdBtnOption: "thirdBtnOption", disabled: "disabled", value: "value" }, outputs: { blurred: "blurred", borderRadiusChange: "borderRadiusChange" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, providers: [
76
+ BorderPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: BorderPickerComponent, isStandalone: true, selector: "wac-border-picker", inputs: { label: "label", gap: "gap", fontSize: "fontSize", disabled: "disabled", value: "value" }, outputs: { blurred: "blurred", borderRadiusChange: "borderRadiusChange" }, providers: [
64
77
  {
65
78
  provide: NG_VALUE_ACCESSOR,
66
79
  useExisting: forwardRef(() => BorderPickerComponent),
67
80
  multi: true
68
81
  }
69
- ], ngImport: i0, template: "<div class=\"w-border-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"bp-label\" for=\"borderPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div class=\"border-preview\" [ngStyle]=\"{'border-radius': value}\">\r\n <div class=\"mask1\"></div>\r\n <div class=\"mask2\"></div>\r\n </div>\r\n\r\n <input\r\n class=\"bp-input\"\r\n id=\"borderPicker\"\r\n placeholder=\"8px\"\r\n maxlength=\"5\"\r\n [(ngModel)]=\"value\"\r\n (focus)=\"openSlider()\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"disabled\"\r\n (focusout)=\"onFocusOut()\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n <div class=\"slider-popup\" *ngIf=\"showSlider\">\r\n\r\n <div class=\"slider\">\r\n <input\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n [(ngModel)]=\"sliderValue\"\r\n (ngModelChange)=\"updateBorderRadius($event)\"\r\n />\r\n <span>{{ sliderValue }}px</span>\r\n </div>\r\n\r\n <div class=\"preset-buttons\">\r\n <button (click)=\"setBorderRadius(4)\">{{ firstBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(8)\">{{ secondBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(100)\">{{ thirdBtnOption }}</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-border-picker{display:flex;flex-direction:column}.w-border-picker .bp-label{font-weight:500}.w-border-picker .w-input{width:210px;height:40px;display:flex;align-items:center;gap:10px;padding:5px;border:1px solid #dee2ed;border-radius:3px;position:relative}.w-border-picker .w-input .border-preview{position:relative;width:30px;height:30px;border:2px solid #1d2a3b;border-radius:3px}.w-border-picker .w-input .border-preview .mask1,.w-border-picker .w-input .border-preview .mask2{background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.w-border-picker .w-input .border-preview .mask1{width:30px;height:14px}.w-border-picker .w-input .border-preview .mask2{width:14px;height:30px}.w-border-picker .w-input .bp-input{width:70%;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}.w-border-picker .w-input .slider-popup{flex-direction:column;position:absolute;top:50px;left:0;min-width:270px;background:white;border:1px solid #dee2ed;padding:10px;box-shadow:0 2px 10px #0000001a;z-index:10;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup:before{content:\"\";position:absolute;top:-20px;left:8px;border:10px solid transparent;border-bottom-color:#dee2ed}.w-border-picker .w-input .slider-popup .slider{width:100%;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup .slider input[type=range]{-webkit-appearance:none;width:100%;height:8px;background:#dee2ed;border-radius:5px;outline:none;opacity:.7;transition:opacity .2s}.w-border-picker .w-input .slider-popup .slider input[type=range]:hover{opacity:1}.w-border-picker .w-input .slider-popup .slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .slider input[type=range]::-moz-range-thumb{width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .preset-buttons{display:flex;gap:10px;align-items:center}.w-border-picker .w-input .slider-popup .preset-buttons button{border:1px solid #dee2ed;background-color:#f5f5f5;color:#1d2a3b;font-size:14px;border-radius:12px;padding:5px 15px;cursor:pointer;transition:background-color .3s,box-shadow .3s}.w-border-picker .w-input .slider-popup .preset-buttons button:hover{background-color:#e0e0e0;box-shadow:0 2px 5px #0000001a}.w-border-picker .w-input .slider-popup .preset-buttons button:active{background-color:#d0d0d0;box-shadow:inset 0 2px 5px #0003}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
82
+ ], ngImport: i0, template: "<div class=\"w-border-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"bp-label\" for=\"borderPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div class=\"border-preview\" [ngStyle]=\"{'border-radius': value}\">\r\n <div class=\"mask1\"></div>\r\n <div class=\"mask2\"></div>\r\n </div>\r\n\r\n <input\r\n class=\"bp-range\"\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n [(ngModel)]=\"sliderValue\"\r\n (ngModelChange)=\"updateBorderRadius($event)\"\r\n />\r\n\r\n <input\r\n class=\"bp-input\"\r\n id=\"borderPicker\"\r\n [placeholder]=\"sliderValue\"\r\n maxlength=\"5\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\"\r\n (focusout)=\"onFocusOut()\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-border-picker{display:flex;flex-direction:column}.w-border-picker .bp-label{font-weight:500}.w-border-picker .w-input{width:100%;min-width:305px;height:40px;display:flex;align-items:center;gap:10px;padding:8px;border:1px solid #dee2ed;border-radius:3px;position:relative}.w-border-picker .w-input .border-preview{position:relative;width:100%;max-width:24px;height:24px;border:2px solid #1d2a3b;border-radius:3px}.w-border-picker .w-input .border-preview .mask1,.w-border-picker .w-input .border-preview .mask2{background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.w-border-picker .w-input .border-preview .mask1{width:30px;height:5px}.w-border-picker .w-input .border-preview .mask2{width:5px;height:30px}.w-border-picker .w-input .bp-range{width:100%;max-width:202px;height:4px;background:transparent;-webkit-appearance:none;appearance:none;margin:0;cursor:pointer}.w-border-picker .w-input .bp-range::-webkit-slider-runnable-track{height:4px;background:#dee2ed;border-radius:20px}.w-border-picker .w-input .bp-range::-moz-range-track{height:4px;background:#dee2ed;border-radius:20px}.w-border-picker .w-input .bp-range::-ms-track{height:4px;background:#dee2ed;border-radius:20px;border-color:transparent;color:transparent}.w-border-picker .w-input .bp-range::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#3BA6EC;margin-top:-6px;border:2px solid white;box-shadow:0 1px 3px #0003;-webkit-transition:all .2s ease;transition:all .2s ease}.w-border-picker .w-input .bp-range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#3BA6EC;border:2px solid white;box-shadow:0 1px 3px #0003;-moz-transition:all .2s ease;transition:all .2s ease}.w-border-picker .w-input .bp-range::-ms-thumb{width:16px;height:16px;border-radius:50%;background:#3BA6EC;border:2px solid white;box-shadow:0 1px 3px #0003;-ms-transition:all .2s ease;transition:all .2s ease}.w-border-picker .w-input .bp-range:active::-webkit-slider-thumb,.w-border-picker .w-input .bp-range:hover::-webkit-slider-thumb{transform:scale(1.1)}.w-border-picker .w-input .bp-range:active::-moz-range-thumb,.w-border-picker .w-input .bp-range:hover::-moz-range-thumb{transform:scale(1.1)}.w-border-picker .w-input .bp-range::-webkit-slider-runnable-track{background:linear-gradient(to right,#3BA6EC 0%,#3BA6EC var(--slider-percentage, 0%),#dee2ed var(--slider-percentage, 0%),#dee2ed 100%)}.w-border-picker .w-input .bp-input{width:100%;max-width:45px;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
70
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BorderPickerComponent, decorators: [{
71
84
  type: Component,
72
85
  args: [{ selector: "wac-border-picker", standalone: true, imports: [
@@ -78,21 +91,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
78
91
  useExisting: forwardRef(() => BorderPickerComponent),
79
92
  multi: true
80
93
  }
81
- ], template: "<div class=\"w-border-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"bp-label\" for=\"borderPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div class=\"border-preview\" [ngStyle]=\"{'border-radius': value}\">\r\n <div class=\"mask1\"></div>\r\n <div class=\"mask2\"></div>\r\n </div>\r\n\r\n <input\r\n class=\"bp-input\"\r\n id=\"borderPicker\"\r\n placeholder=\"8px\"\r\n maxlength=\"5\"\r\n [(ngModel)]=\"value\"\r\n (focus)=\"openSlider()\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"disabled\"\r\n (focusout)=\"onFocusOut()\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n <div class=\"slider-popup\" *ngIf=\"showSlider\">\r\n\r\n <div class=\"slider\">\r\n <input\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n [(ngModel)]=\"sliderValue\"\r\n (ngModelChange)=\"updateBorderRadius($event)\"\r\n />\r\n <span>{{ sliderValue }}px</span>\r\n </div>\r\n\r\n <div class=\"preset-buttons\">\r\n <button (click)=\"setBorderRadius(4)\">{{ firstBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(8)\">{{ secondBtnOption }}</button>\r\n <button (click)=\"setBorderRadius(100)\">{{ thirdBtnOption }}</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-border-picker{display:flex;flex-direction:column}.w-border-picker .bp-label{font-weight:500}.w-border-picker .w-input{width:210px;height:40px;display:flex;align-items:center;gap:10px;padding:5px;border:1px solid #dee2ed;border-radius:3px;position:relative}.w-border-picker .w-input .border-preview{position:relative;width:30px;height:30px;border:2px solid #1d2a3b;border-radius:3px}.w-border-picker .w-input .border-preview .mask1,.w-border-picker .w-input .border-preview .mask2{background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.w-border-picker .w-input .border-preview .mask1{width:30px;height:14px}.w-border-picker .w-input .border-preview .mask2{width:14px;height:30px}.w-border-picker .w-input .bp-input{width:70%;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}.w-border-picker .w-input .slider-popup{flex-direction:column;position:absolute;top:50px;left:0;min-width:270px;background:white;border:1px solid #dee2ed;padding:10px;box-shadow:0 2px 10px #0000001a;z-index:10;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup:before{content:\"\";position:absolute;top:-20px;left:8px;border:10px solid transparent;border-bottom-color:#dee2ed}.w-border-picker .w-input .slider-popup .slider{width:100%;display:flex;align-items:center;gap:10px}.w-border-picker .w-input .slider-popup .slider input[type=range]{-webkit-appearance:none;width:100%;height:8px;background:#dee2ed;border-radius:5px;outline:none;opacity:.7;transition:opacity .2s}.w-border-picker .w-input .slider-popup .slider input[type=range]:hover{opacity:1}.w-border-picker .w-input .slider-popup .slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .slider input[type=range]::-moz-range-thumb{width:20px;height:20px;background:#52aecd;cursor:pointer;border-radius:50%;box-shadow:0 0 2px #00000080}.w-border-picker .w-input .slider-popup .preset-buttons{display:flex;gap:10px;align-items:center}.w-border-picker .w-input .slider-popup .preset-buttons button{border:1px solid #dee2ed;background-color:#f5f5f5;color:#1d2a3b;font-size:14px;border-radius:12px;padding:5px 15px;cursor:pointer;transition:background-color .3s,box-shadow .3s}.w-border-picker .w-input .slider-popup .preset-buttons button:hover{background-color:#e0e0e0;box-shadow:0 2px 5px #0000001a}.w-border-picker .w-input .slider-popup .preset-buttons button:active{background-color:#d0d0d0;box-shadow:inset 0 2px 5px #0003}\n"] }]
94
+ ], template: "<div class=\"w-border-picker\" [ngStyle]=\"{'gap': gap}\">\r\n\r\n <label class=\"bp-label\" for=\"borderPicker\" [ngStyle]=\"{'font-size': fontSize}\">{{ label }}</label>\r\n\r\n <div class=\"w-input\">\r\n\r\n <div class=\"border-preview\" [ngStyle]=\"{'border-radius': value}\">\r\n <div class=\"mask1\"></div>\r\n <div class=\"mask2\"></div>\r\n </div>\r\n\r\n <input\r\n class=\"bp-range\"\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n [(ngModel)]=\"sliderValue\"\r\n (ngModelChange)=\"updateBorderRadius($event)\"\r\n />\r\n\r\n <input\r\n class=\"bp-input\"\r\n id=\"borderPicker\"\r\n [placeholder]=\"sliderValue\"\r\n maxlength=\"5\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\"\r\n (focusout)=\"onFocusOut()\"\r\n (input)=\"setValue($event)\"\r\n />\r\n\r\n </div>\r\n\r\n</div>\r\n", styles: [".w-border-picker{display:flex;flex-direction:column}.w-border-picker .bp-label{font-weight:500}.w-border-picker .w-input{width:100%;min-width:305px;height:40px;display:flex;align-items:center;gap:10px;padding:8px;border:1px solid #dee2ed;border-radius:3px;position:relative}.w-border-picker .w-input .border-preview{position:relative;width:100%;max-width:24px;height:24px;border:2px solid #1d2a3b;border-radius:3px}.w-border-picker .w-input .border-preview .mask1,.w-border-picker .w-input .border-preview .mask2{background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.w-border-picker .w-input .border-preview .mask1{width:30px;height:5px}.w-border-picker .w-input .border-preview .mask2{width:5px;height:30px}.w-border-picker .w-input .bp-range{width:100%;max-width:202px;height:4px;background:transparent;-webkit-appearance:none;appearance:none;margin:0;cursor:pointer}.w-border-picker .w-input .bp-range::-webkit-slider-runnable-track{height:4px;background:#dee2ed;border-radius:20px}.w-border-picker .w-input .bp-range::-moz-range-track{height:4px;background:#dee2ed;border-radius:20px}.w-border-picker .w-input .bp-range::-ms-track{height:4px;background:#dee2ed;border-radius:20px;border-color:transparent;color:transparent}.w-border-picker .w-input .bp-range::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#3BA6EC;margin-top:-6px;border:2px solid white;box-shadow:0 1px 3px #0003;-webkit-transition:all .2s ease;transition:all .2s ease}.w-border-picker .w-input .bp-range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#3BA6EC;border:2px solid white;box-shadow:0 1px 3px #0003;-moz-transition:all .2s ease;transition:all .2s ease}.w-border-picker .w-input .bp-range::-ms-thumb{width:16px;height:16px;border-radius:50%;background:#3BA6EC;border:2px solid white;box-shadow:0 1px 3px #0003;-ms-transition:all .2s ease;transition:all .2s ease}.w-border-picker .w-input .bp-range:active::-webkit-slider-thumb,.w-border-picker .w-input .bp-range:hover::-webkit-slider-thumb{transform:scale(1.1)}.w-border-picker .w-input .bp-range:active::-moz-range-thumb,.w-border-picker .w-input .bp-range:hover::-moz-range-thumb{transform:scale(1.1)}.w-border-picker .w-input .bp-range::-webkit-slider-runnable-track{background:linear-gradient(to right,#3BA6EC 0%,#3BA6EC var(--slider-percentage, 0%),#dee2ed var(--slider-percentage, 0%),#dee2ed 100%)}.w-border-picker .w-input .bp-input{width:100%;max-width:45px;height:100%;border:none;font-size:14px;color:#1d2a3b;font-weight:400}\n"] }]
82
95
  }], ctorParameters: function () { return []; }, propDecorators: { label: [{
83
96
  type: Input
84
97
  }], gap: [{
85
98
  type: Input
86
99
  }], fontSize: [{
87
100
  type: Input
88
- }], borderRadius: [{
89
- type: Input
90
- }], firstBtnOption: [{
91
- type: Input
92
- }], secondBtnOption: [{
93
- type: Input
94
- }], thirdBtnOption: [{
95
- type: Input
96
101
  }], disabled: [{
97
102
  type: Input
98
103
  }], value: [{
@@ -101,8 +106,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
101
106
  type: Output
102
107
  }], borderRadiusChange: [{
103
108
  type: Output
104
- }], onClickOutside: [{
105
- type: HostListener,
106
- args: ['document:click', ['$event']]
107
109
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JvcmRlci1waWNrZXIvYm9yZGVyLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JvcmRlci1waWNrZXIvYm9yZGVyLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTBCLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBb0J0RixNQUFNLE9BQU8scUJBQXFCO0lBaUJoQztRQWZTLFFBQUcsR0FBVyxNQUFNLENBQUM7UUFDckIsYUFBUSxHQUFXLE1BQU0sQ0FBQztRQUMxQixpQkFBWSxHQUFXLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFXLE9BQU8sQ0FBQztRQUNqQyxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUNuQyxtQkFBYyxHQUFXLE1BQU0sQ0FBQztRQUNoQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUxRCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBSXhCLGFBQVEsR0FB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LE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQW9EUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIEhvc3RMaXN0ZW5lciwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQgKHtcclxuICBzZWxlY3RvcjogXCJ3YWMtYm9yZGVyLXBpY2tlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYm9yZGVyLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9ib3JkZXItcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJvcmRlclBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJvcmRlclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGdhcDogc3RyaW5nID0gJzEycHgnO1xyXG4gIEBJbnB1dCgpIGZvbnRTaXplOiBzdHJpbmcgPSAnMTRweCc7XHJcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMHB4JztcclxuICBASW5wdXQoKSBmaXJzdEJ0bk9wdGlvbjogc3RyaW5nID0gJ1NtYWxsJztcclxuICBASW5wdXQoKSBzZWNvbmRCdG5PcHRpb246IHN0cmluZyA9ICdNZWRpdW0nO1xyXG4gIEBJbnB1dCgpIHRoaXJkQnRuT3B0aW9uOiBzdHJpbmcgPSAnRnVsbCc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBib3JkZXJSYWRpdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgc2hvd1NsaWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNsaWRlclZhbHVlOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuYm9yZGVyUmFkaXVzQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Gb2N1c091dCgpIHtcclxuICB9XHJcblxyXG4gIG9wZW5TbGlkZXIoKSB7XHJcbiAgICB0aGlzLnNob3dTbGlkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IHBhcnNlSW50KHRoaXMudmFsdWUucmVwbGFjZSgncHgnLCAnJyksIDEwKSB8fCAwO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQm9yZGVyUmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSArICdweCc7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpOyAvLyBOb3RpZmllIEFuZ3VsYXIgZHUgY2hhbmdlbWVudFxyXG4gICAgdGhpcy5ib3JkZXJSYWRpdXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldEJvcmRlclJhZGl1cyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLnVwZGF0ZUJvcmRlclJhZGl1cyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcudy1pbnB1dCcpKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidy1ib3JkZXItcGlja2VyXCIgW25nU3R5bGVdPVwieydnYXAnOiBnYXB9XCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cImJwLWxhYmVsXCIgZm9yPVwiYm9yZGVyUGlja2VyXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZX1cIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LWlucHV0XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1wcmV2aWV3XCIgW25nU3R5bGVdPVwieydib3JkZXItcmFkaXVzJzogdmFsdWV9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXNrMVwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFzazJcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImJwLWlucHV0XCJcclxuICAgICAgaWQ9XCJib3JkZXJQaWNrZXJcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIjhweFwiXHJcbiAgICAgIG1heGxlbmd0aD1cIjVcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgKGZvY3VzKT1cIm9wZW5TbGlkZXIoKVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgKGlucHV0KT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXBvcHVwXCIgKm5nSWY9XCJzaG93U2xpZGVyXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxyXG4gICAgICAgICAgbWluPVwiMFwiXHJcbiAgICAgICAgICBtYXg9XCIxMDBcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzbGlkZXJWYWx1ZVwiXHJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVCb3JkZXJSYWRpdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8c3Bhbj57eyBzbGlkZXJWYWx1ZSB9fXB4PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZXQtYnV0dG9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldEJvcmRlclJhZGl1cyg0KVwiPnt7IGZpcnN0QnRuT3B0aW9uIH19PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0Qm9yZGVyUmFkaXVzKDgpXCI+e3sgc2Vjb25kQnRuT3B0aW9uIH19PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0Qm9yZGVyUmFkaXVzKDEwMClcIj57eyB0aGlyZEJ0bk9wdGlvbiB9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JvcmRlci1waWNrZXIvYm9yZGVyLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JvcmRlci1waWNrZXIvYm9yZGVyLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBaUQsVUFBVSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBb0J0RixNQUFNLE9BQU8scUJBQXFCO0lBV2hDO1FBVFMsUUFBRyxHQUFXLE1BQU0sQ0FBQztRQUNyQixhQUFRLEdBQVcsTUFBTSxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUVwQixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBSXhCLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsY0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUhYLENBQUM7SUFLaEIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE1BQU0sWUFBWSxHQUFHLFFBQVEs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O1lBQ3BELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkNuQkgsNDVCQWtDQSxza0ZEeEJJLFlBQVksbUhBQ1osV0FBVzsyRkFXRixxQkFBcUI7a0JBbEJqQyxTQUFTOytCQUNFLG1CQUFtQixjQUdqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3FCQUNaLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBFQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgT25Jbml0ICwgSG9zdExpc3RlbmVyLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBmb3J3YXJkUmVmLCBBZnRlclZpZXdJbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCAoe1xyXG4gIHNlbGVjdG9yOiBcIndhYy1ib3JkZXItcGlja2VyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9ib3JkZXItcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2JvcmRlci1waWNrZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQm9yZGVyUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQm9yZGVyUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBnYXA6IHN0cmluZyA9ICcxMnB4JztcclxuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gJzE0cHgnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9ICcwJSc7XHJcblxyXG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBib3JkZXJSYWRpdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBzbGlkZXJWYWx1ZTogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUludCh0aGlzLnZhbHVlLnJlcGxhY2UoJyUnLCAnJyksIDEwKTtcclxuICAgICAgaWYgKCFpc05hTihudW1lcmljVmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJWYWx1ZSA9IG51bWVyaWNWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gcGFyc2VJbnQodGhpcy52YWx1ZS5yZXBsYWNlKCclJywgJycpLCAxMCk7XHJcbiAgICBcclxuICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnNsaWRlclZhbHVlID0gbnVtZXJpY1ZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNsaWRlclBlcmNlbnRhZ2UoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuYm9yZGVyUmFkaXVzQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNsaWRlclBlcmNlbnRhZ2UoKSB7XHJcbiAgICBjb25zdCBzbGlkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYnAtcmFuZ2UnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChzbGlkZXIpIHtcclxuICAgICAgc2xpZGVyLnN0eWxlLnNldFByb3BlcnR5KCctLXNsaWRlci1wZXJjZW50YWdlJywgYCR7dGhpcy5zbGlkZXJWYWx1ZX0lYCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVNsaWRlclBlcmNlbnRhZ2UoKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXNPdXQoKSB7XHJcbiAgICBpZiAoIXRoaXMudmFsdWUuZW5kc1dpdGgoJyUnKSAmJiB0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlICsgJyUnO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB0aGlzLmJvcmRlclJhZGl1c0NoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQm9yZGVyUmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSArICclJztcclxuICAgIHRoaXMudXBkYXRlU2xpZGVyUGVyY2VudGFnZSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuYm9yZGVyUmFkaXVzQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXRCb3JkZXJSYWRpdXModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVCb3JkZXJSYWRpdXModmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidy1ib3JkZXItcGlja2VyXCIgW25nU3R5bGVdPVwieydnYXAnOiBnYXB9XCI+XHJcblxyXG4gIDxsYWJlbCBjbGFzcz1cImJwLWxhYmVsXCIgZm9yPVwiYm9yZGVyUGlja2VyXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZX1cIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LWlucHV0XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1wcmV2aWV3XCIgW25nU3R5bGVdPVwieydib3JkZXItcmFkaXVzJzogdmFsdWV9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXNrMVwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFzazJcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImJwLXJhbmdlXCJcclxuICAgICAgdHlwZT1cInJhbmdlXCJcclxuICAgICAgbWluPVwiMFwiXHJcbiAgICAgIG1heD1cIjEwMFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyVmFsdWVcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVCb3JkZXJSYWRpdXMoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICBjbGFzcz1cImJwLWlucHV0XCJcclxuICAgICAgaWQ9XCJib3JkZXJQaWNrZXJcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwic2xpZGVyVmFsdWVcIlxyXG4gICAgICBtYXhsZW5ndGg9XCI1XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcclxuICAgICAgKGlucHV0KT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgLz5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19