info-library 2.15.1-beta → 3.0.0-beta

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 (184) hide show
  1. package/controls/alert/alert.component.d.ts +7 -7
  2. package/controls/autocomplete/autocomplete.component.d.ts +52 -51
  3. package/controls/big-checkbox/big-checkbox.component.d.ts +41 -41
  4. package/controls/card/card.component.d.ts +16 -16
  5. package/controls/card-menu/card-menu.component.d.ts +23 -23
  6. package/controls/checkbox/checkbox.component.d.ts +27 -27
  7. package/controls/chips/chips.component.d.ts +23 -23
  8. package/controls/date/date.component.d.ts +38 -37
  9. package/controls/date-month/date-month.component.d.ts +40 -39
  10. package/controls/editor/editor.component.d.ts +40 -40
  11. package/controls/grid/grid.component.d.ts +172 -172
  12. package/controls/input/input.component.d.ts +47 -37
  13. package/controls/input-list/input-list.component.d.ts +29 -29
  14. package/controls/list-checkbox/list-checkbox.component.d.ts +26 -26
  15. package/controls/message/message.component.d.ts +10 -10
  16. package/controls/multi-select/multi-select.component.d.ts +39 -37
  17. package/controls/paginator/paginator.component.d.ts +25 -25
  18. package/controls/select/select.component.d.ts +42 -41
  19. package/controls/timeline/timeline.component.d.ts +17 -17
  20. package/directives/mask.directive.d.ts +24 -24
  21. package/directives/unmask.directive.d.ts +12 -11
  22. package/enum/dialog-buttons.enum.d.ts +7 -7
  23. package/enum/index.d.ts +3 -3
  24. package/enum/modal-action.enum.d.ts +10 -10
  25. package/enum/page-action.enum.d.ts +8 -8
  26. package/esm2022/controls/alert/alert.component.mjs +72 -0
  27. package/esm2022/controls/autocomplete/autocomplete.component.mjs +265 -0
  28. package/esm2022/controls/big-checkbox/big-checkbox.component.mjs +300 -0
  29. package/esm2022/controls/card/card.component.mjs +83 -0
  30. package/esm2022/controls/card-menu/card-menu.component.mjs +143 -0
  31. package/esm2022/controls/checkbox/checkbox.component.mjs +93 -0
  32. package/esm2022/controls/chips/chips.component.mjs +114 -0
  33. package/esm2022/controls/date/date.component.mjs +173 -0
  34. package/esm2022/controls/date-month/date-month.component.mjs +181 -0
  35. package/esm2022/controls/editor/editor.component.mjs +139 -0
  36. package/esm2022/controls/grid/grid.component.mjs +1818 -0
  37. package/esm2022/controls/input/input.component.mjs +389 -0
  38. package/esm2022/controls/input-list/input-list.component.mjs +259 -0
  39. package/{esm2020 → esm2022}/controls/list-checkbox/list-checkbox.component.mjs +242 -238
  40. package/esm2022/controls/message/message.component.mjs +48 -0
  41. package/esm2022/controls/multi-select/multi-select.component.mjs +174 -0
  42. package/esm2022/controls/paginator/paginator.component.mjs +177 -0
  43. package/esm2022/controls/select/select.component.mjs +189 -0
  44. package/esm2022/controls/timeline/timeline.component.mjs +116 -0
  45. package/esm2022/directives/mask.directive.mjs +134 -0
  46. package/esm2022/directives/unmask.directive.mjs +35 -0
  47. package/{esm2020 → esm2022}/enum/dialog-buttons.enum.mjs +8 -8
  48. package/{esm2020 → esm2022}/enum/index.mjs +3 -3
  49. package/{esm2020 → esm2022}/enum/modal-action.enum.mjs +11 -11
  50. package/{esm2020 → esm2022}/enum/page-action.enum.mjs +9 -9
  51. package/{esm2020 → esm2022}/global-config.mjs +3 -3
  52. package/{esm2020 → esm2022}/info-library.mjs +4 -4
  53. package/esm2022/info-library.module.mjs +283 -0
  54. package/esm2022/layouts/dialog/dialog.component.mjs +192 -0
  55. package/esm2022/layouts/filter/filter.component.mjs +179 -0
  56. package/esm2022/layouts/loading/loading.component.mjs +40 -0
  57. package/esm2022/layouts/main/main.component.mjs +305 -0
  58. package/esm2022/layouts/modal/modal.component.mjs +273 -0
  59. package/esm2022/layouts/pagebar/pagebar.component.mjs +432 -0
  60. package/esm2022/layouts/sidebar/sidebar.component.mjs +447 -0
  61. package/esm2022/layouts/topbar/topbar.component.mjs +1032 -0
  62. package/esm2022/layouts/topmenu/topmenu.component.mjs +173 -0
  63. package/esm2022/model/app-config.model.mjs +14 -0
  64. package/esm2022/model/data-access.model.mjs +37 -0
  65. package/esm2022/model/dialog-result.model.mjs +9 -0
  66. package/esm2022/model/dialog.model.mjs +15 -0
  67. package/esm2022/model/form-prop.model.mjs +37 -0
  68. package/esm2022/model/grid-button.model.mjs +26 -0
  69. package/{esm2020 → esm2022}/model/index.mjs +14 -14
  70. package/esm2022/model/last-search.model.mjs +7 -0
  71. package/esm2022/model/login.model.mjs +11 -0
  72. package/esm2022/model/method-grid-button.model.mjs +11 -0
  73. package/esm2022/model/notification.model.mjs +13 -0
  74. package/{esm2020 → esm2022}/model/pagebar-buttons.model.mjs +15 -15
  75. package/esm2022/model/permission.model.mjs +6 -0
  76. package/esm2022/model/platform.model.mjs +20 -0
  77. package/esm2022/model/session.model.mjs +27 -0
  78. package/{esm2020 → esm2022}/pipe/index.mjs +2 -2
  79. package/esm2022/pipe/mask.pipe.mjs +38 -0
  80. package/esm2022/pipe/translate.pipe.mjs +27 -0
  81. package/{esm2020 → esm2022}/public_api.mjs +37 -36
  82. package/esm2022/service/authentication.service.mjs +411 -0
  83. package/esm2022/service/configuration.service.mjs +90 -0
  84. package/esm2022/service/data.service.mjs +129 -0
  85. package/{esm2020 → esm2022}/service/index.mjs +5 -5
  86. package/esm2022/service/theme.service.mjs +89 -0
  87. package/esm2022/service/translate.service.mjs +57 -0
  88. package/esm2022/utils/utilities.mjs +189 -0
  89. package/fesm2022/info-library.mjs +9364 -0
  90. package/fesm2022/info-library.mjs.map +1 -0
  91. package/global-config.d.ts +3 -3
  92. package/index.d.ts +5 -5
  93. package/info-library-3.0.0-beta.tgz +0 -0
  94. package/info-library.module.d.ts +61 -60
  95. package/layouts/dialog/dialog.component.d.ts +29 -29
  96. package/layouts/filter/filter.component.d.ts +24 -0
  97. package/layouts/loading/loading.component.d.ts +8 -8
  98. package/layouts/main/main.component.d.ts +60 -56
  99. package/layouts/modal/modal.component.d.ts +40 -39
  100. package/layouts/pagebar/pagebar.component.d.ts +45 -45
  101. package/layouts/sidebar/sidebar.component.d.ts +40 -40
  102. package/layouts/topbar/topbar.component.d.ts +69 -66
  103. package/layouts/topmenu/topmenu.component.d.ts +34 -34
  104. package/model/app-config.model.d.ts +13 -11
  105. package/model/data-access.model.d.ts +12 -12
  106. package/model/dialog-result.model.d.ts +6 -6
  107. package/model/dialog.model.d.ts +14 -14
  108. package/model/form-prop.model.d.ts +12 -12
  109. package/model/grid-button.model.d.ts +18 -18
  110. package/model/index.d.ts +14 -14
  111. package/model/last-search.model.d.ts +6 -6
  112. package/model/login.model.d.ts +6 -6
  113. package/model/method-grid-button.model.d.ts +6 -6
  114. package/model/notification.model.d.ts +12 -12
  115. package/model/pagebar-buttons.model.d.ts +10 -10
  116. package/model/permission.model.d.ts +5 -5
  117. package/model/platform.model.d.ts +16 -16
  118. package/model/session.model.d.ts +27 -22
  119. package/package.json +5 -11
  120. package/pipe/index.d.ts +2 -2
  121. package/pipe/mask.pipe.d.ts +8 -8
  122. package/pipe/translate.pipe.d.ts +10 -10
  123. package/public_api.d.ts +34 -33
  124. package/service/authentication.service.d.ts +63 -61
  125. package/service/configuration.service.d.ts +17 -14
  126. package/service/data.service.d.ts +41 -39
  127. package/service/index.d.ts +5 -5
  128. package/service/theme.service.d.ts +16 -16
  129. package/service/translate.service.d.ts +16 -16
  130. package/utils/utilities.d.ts +38 -27
  131. package/esm2020/controls/alert/alert.component.mjs +0 -74
  132. package/esm2020/controls/autocomplete/autocomplete.component.mjs +0 -258
  133. package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +0 -298
  134. package/esm2020/controls/card/card.component.mjs +0 -77
  135. package/esm2020/controls/card-menu/card-menu.component.mjs +0 -145
  136. package/esm2020/controls/checkbox/checkbox.component.mjs +0 -93
  137. package/esm2020/controls/chips/chips.component.mjs +0 -113
  138. package/esm2020/controls/date/date.component.mjs +0 -141
  139. package/esm2020/controls/date-month/date-month.component.mjs +0 -148
  140. package/esm2020/controls/editor/editor.component.mjs +0 -135
  141. package/esm2020/controls/grid/grid.component.mjs +0 -1800
  142. package/esm2020/controls/input/input.component.mjs +0 -314
  143. package/esm2020/controls/input-list/input-list.component.mjs +0 -258
  144. package/esm2020/controls/message/message.component.mjs +0 -50
  145. package/esm2020/controls/multi-select/multi-select.component.mjs +0 -161
  146. package/esm2020/controls/paginator/paginator.component.mjs +0 -178
  147. package/esm2020/controls/select/select.component.mjs +0 -180
  148. package/esm2020/controls/timeline/timeline.component.mjs +0 -117
  149. package/esm2020/directives/mask.directive.mjs +0 -125
  150. package/esm2020/directives/unmask.directive.mjs +0 -28
  151. package/esm2020/info-library.module.mjs +0 -278
  152. package/esm2020/layouts/dialog/dialog.component.mjs +0 -188
  153. package/esm2020/layouts/loading/loading.component.mjs +0 -42
  154. package/esm2020/layouts/main/main.component.mjs +0 -258
  155. package/esm2020/layouts/modal/modal.component.mjs +0 -258
  156. package/esm2020/layouts/pagebar/pagebar.component.mjs +0 -404
  157. package/esm2020/layouts/sidebar/sidebar.component.mjs +0 -395
  158. package/esm2020/layouts/topbar/topbar.component.mjs +0 -868
  159. package/esm2020/layouts/topmenu/topmenu.component.mjs +0 -165
  160. package/esm2020/model/app-config.model.mjs +0 -14
  161. package/esm2020/model/data-access.model.mjs +0 -35
  162. package/esm2020/model/dialog-result.model.mjs +0 -8
  163. package/esm2020/model/dialog.model.mjs +0 -16
  164. package/esm2020/model/form-prop.model.mjs +0 -35
  165. package/esm2020/model/grid-button.model.mjs +0 -21
  166. package/esm2020/model/last-search.model.mjs +0 -9
  167. package/esm2020/model/login.model.mjs +0 -9
  168. package/esm2020/model/method-grid-button.model.mjs +0 -9
  169. package/esm2020/model/notification.model.mjs +0 -9
  170. package/esm2020/model/permission.model.mjs +0 -3
  171. package/esm2020/model/platform.model.mjs +0 -21
  172. package/esm2020/model/session.model.mjs +0 -8
  173. package/esm2020/pipe/mask.pipe.mjs +0 -34
  174. package/esm2020/pipe/translate.pipe.mjs +0 -26
  175. package/esm2020/service/authentication.service.mjs +0 -358
  176. package/esm2020/service/configuration.service.mjs +0 -59
  177. package/esm2020/service/data.service.mjs +0 -112
  178. package/esm2020/service/theme.service.mjs +0 -79
  179. package/esm2020/service/translate.service.mjs +0 -53
  180. package/esm2020/utils/utilities.mjs +0 -142
  181. package/fesm2015/info-library.mjs +0 -9312
  182. package/fesm2015/info-library.mjs.map +0 -1
  183. package/fesm2020/info-library.mjs +0 -8462
  184. package/fesm2020/info-library.mjs.map +0 -1
@@ -1,74 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/icon";
5
- import * as i3 from "../../pipe/translate.pipe";
6
- function InfoAlertComponent_div_0_li_8_Template(rf, ctx) { if (rf & 1) {
7
- i0.ɵɵelementStart(0, "li")(1, "mat-icon");
8
- i0.ɵɵtext(2, "error_outline");
9
- i0.ɵɵelementEnd();
10
- i0.ɵɵelement(3, "label", 6);
11
- i0.ɵɵpipe(4, "translate");
12
- i0.ɵɵelementEnd();
13
- } if (rf & 2) {
14
- const m_r3 = ctx.$implicit;
15
- i0.ɵɵadvance(3);
16
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(4, 1, m_r3), i0.ɵɵsanitizeHtml);
17
- } }
18
- function InfoAlertComponent_div_0_Template(rf, ctx) { if (rf & 1) {
19
- const _r5 = i0.ɵɵgetCurrentView();
20
- i0.ɵɵelementStart(0, "div")(1, "div", 1, 2)(3, "h5");
21
- i0.ɵɵtext(4);
22
- i0.ɵɵpipe(5, "translate");
23
- i0.ɵɵelementEnd();
24
- i0.ɵɵprojection(6);
25
- i0.ɵɵelementStart(7, "ul");
26
- i0.ɵɵtemplate(8, InfoAlertComponent_div_0_li_8_Template, 5, 3, "li", 3);
27
- i0.ɵɵelementEnd();
28
- i0.ɵɵelementStart(9, "a", 4);
29
- i0.ɵɵlistener("click", function InfoAlertComponent_div_0_Template_a_click_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onClose()); });
30
- i0.ɵɵelementStart(10, "i", 5);
31
- i0.ɵɵtext(11, "clear");
32
- i0.ɵɵelementEnd()()()();
33
- } if (rf & 2) {
34
- const ctx_r0 = i0.ɵɵnextContext();
35
- i0.ɵɵadvance(4);
36
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 2, "Atencao"));
37
- i0.ɵɵadvance(4);
38
- i0.ɵɵproperty("ngForOf", ctx_r0.messages);
39
- } }
40
- const _c0 = function () { return []; };
41
- const _c1 = ["*"];
42
- export class InfoAlertComponent {
43
- constructor() {
44
- this.messages = [];
45
- }
46
- onClose() {
47
- this.messages = [];
48
- }
49
- }
50
- /** @nocollapse */ InfoAlertComponent.ɵfac = function InfoAlertComponent_Factory(t) { return new (t || InfoAlertComponent)(); };
51
- /** @nocollapse */ InfoAlertComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoAlertComponent, selectors: [["info-alert"]], inputs: { messages: "messages" }, ngContentSelectors: _c1, decls: 1, vars: 2, consts: [[4, "ngIf"], [1, "alert"], ["alert", ""], [4, "ngFor", "ngForOf"], [1, "close", 3, "click"], [1, "material-icons"], [3, "innerHTML"]], template: function InfoAlertComponent_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵprojectionDef();
53
- i0.ɵɵtemplate(0, InfoAlertComponent_div_0_Template, 12, 4, "div", 0);
54
- } if (rf & 2) {
55
- i0.ɵɵproperty("ngIf", ctx.messages != i0.ɵɵpureFunction0(1, _c0) && ctx.messages.length > 0);
56
- } }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatIcon, i3.InfoTranslatePipe], styles: ["[_nghost-%COMP%]{display:block;position:fixed;bottom:70px;right:30px;margin-left:280px;min-width:350px;z-index:100}[_nghost-%COMP%]:last-child{margin-bottom:0}[_nghost-%COMP%] .alert[_ngcontent-%COMP%]{box-shadow:0 5px 5px 2px #00000040;padding:1.0476190667rem 1.5714286rem;position:relative}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{text-align:center;padding-bottom:10px;margin:0 -20px 5px;border-bottom:solid 1px rgba(255,255,255,.1)}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-bottom:solid 1px rgba(255,255,255,.1);padding:7px 5px}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{border-bottom:none}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%]{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%]:hover{cursor:pointer;color:#ddd}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .close[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{color:inherit;font-size:inherit;margin:0;vertical-align:top}[_nghost-%COMP%] .alert[_ngcontent-%COMP%] .material-icons{color:main-color(A100);margin:0 1.5714286rem 0 0;vertical-align:top}"] });
57
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoAlertComponent, [{
58
- type: Component,
59
- args: [{ selector: 'info-alert', template: `
60
- <div *ngIf="messages != [] && messages.length > 0">
61
- <div class="alert" #alert >
62
- <h5>{{ 'Atencao' | translate }}</h5>
63
- <ng-content></ng-content>
64
- <ul>
65
- <li *ngFor="let m of messages"><mat-icon>error_outline</mat-icon><label [innerHTML]="m | translate"></label></li>
66
- </ul>
67
- <a class="close" (click)="onClose()"><i class="material-icons">clear</i></a>
68
- </div>
69
- </div>
70
- `, styles: [":host{display:block;position:fixed;bottom:70px;right:30px;margin-left:280px;min-width:350px;z-index:100}:host:last-child{margin-bottom:0}:host .alert{box-shadow:0 5px 5px 2px #00000040;padding:1.0476190667rem 1.5714286rem;position:relative}:host .alert h5{text-align:center;padding-bottom:10px;margin:0 -20px 5px;border-bottom:solid 1px rgba(255,255,255,.1)}:host .alert ul{padding:0;margin:0;list-style:none}:host .alert ul li{border-bottom:solid 1px rgba(255,255,255,.1);padding:7px 5px}:host .alert ul li:last-child{border-bottom:none}:host .alert .close{color:#fff;font-size:20px;line-height:1;position:absolute;right:10px;top:15px;transition:background .2s ease-in-out,color .2s ease-in-out}:host .alert .close:hover{cursor:pointer;color:#ddd}:host .alert .close .material-icons{color:inherit;font-size:inherit;margin:0;vertical-align:top}:host .alert ::ng-deep .material-icons{color:main-color(A100);margin:0 1.5714286rem 0 0;vertical-align:top}\n"] }]
71
- }], null, { messages: [{
72
- type: Input
73
- }] }); })();
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9jb250cm9scy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztJQVU3QiwwQkFBK0IsZUFBQTtJQUFVLDZCQUFhO0lBQUEsaUJBQVc7SUFBQSwyQkFBMkM7O0lBQUEsaUJBQUs7OztJQUF6QyxlQUEyQjtJQUEzQix5RUFBMkI7Ozs7SUFML0csMkJBQW1ELGdCQUFBLFNBQUE7SUFFdkMsWUFBMkI7O0lBQUEsaUJBQUs7SUFDcEMsa0JBQXlCO0lBQ3pCLDBCQUFJO0lBQ0EsdUVBQWlIO0lBQ3JILGlCQUFLO0lBQ0wsNEJBQXFDO0lBQXBCLDBKQUFTLGVBQUEsZ0JBQVMsQ0FBQSxJQUFDO0lBQUMsNkJBQTBCO0lBQUEsc0JBQUs7SUFBQSxpQkFBSSxFQUFBLEVBQUEsRUFBQTs7O0lBTHBFLGVBQTJCO0lBQTNCLHFEQUEyQjtJQUdULGVBQVc7SUFBWCx5Q0FBVzs7OztBQVFqRCxNQUFNLE9BQU8sa0JBQWtCO0lBaEIvQjtRQWtCYSxhQUFRLEdBQWEsRUFBRSxDQUFDO0tBS3BDO0lBSEcsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O3VHQU5RLGtCQUFrQjtvR0FBbEIsa0JBQWtCOztRQWJ2QixvRUFTTTs7UUFUQSw0RkFBMkM7O3VGQWE1QyxrQkFBa0I7Y0FoQjlCLFNBQVM7MkJBQ0ksWUFBWSxZQUNaOzs7Ozs7Ozs7OztLQVdUO2dCQUtRLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWFsZXJ0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VzICE9IFtdICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgI2FsZXJ0ID5cclxuICAgICAgICAgICAgICAgIDxoNT57eyAnQXRlbmNhbycgfCB0cmFuc2xhdGUgfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbSBvZiBtZXNzYWdlc1wiPjxtYXQtaWNvbj5lcnJvcl9vdXRsaW5lPC9tYXQtaWNvbj48bGFiZWwgW2lubmVySFRNTF09XCJtIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+PGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNsZWFyPC9pPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVVcmxzOiBbJ2FsZXJ0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9BbGVydENvbXBvbmVudCB7XHJcblxyXG4gICAgQElucHV0KCkgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgb25DbG9zZSgpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,258 +0,0 @@
1
- import { Component, Input, forwardRef, Output, EventEmitter } from "@angular/core";
2
- import { UntypedFormControl, NG_VALUE_ACCESSOR } from "@angular/forms";
3
- import { debounceTime, switchMap, distinctUntilChanged } from 'rxjs/operators';
4
- import { InfoDataService } from "../../service/data.service";
5
- import { Observable } from "rxjs";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../service/data.service";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/forms";
10
- import * as i4 from "@angular/material/icon";
11
- import * as i5 from "@angular/material/form-field";
12
- import * as i6 from "@angular/material/input";
13
- import * as i7 from "@angular/material/core";
14
- import * as i8 from "@angular/material/progress-bar";
15
- import * as i9 from "@angular/material/autocomplete";
16
- import * as i10 from "../../pipe/translate.pipe";
17
- function InfoAutoCompleteComponent_mat_option_6_Template(rf, ctx) { if (rf & 1) {
18
- const _r6 = i0.ɵɵgetCurrentView();
19
- i0.ɵɵelementStart(0, "mat-option", 8);
20
- i0.ɵɵlistener("onSelectionChange", function InfoAutoCompleteComponent_mat_option_6_Template_mat_option_onSelectionChange_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const option_r4 = restoredCtx.$implicit; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.writeValue(option_r4.Id)); });
21
- i0.ɵɵelementEnd();
22
- } if (rf & 2) {
23
- const option_r4 = ctx.$implicit;
24
- i0.ɵɵproperty("value", option_r4)("innerHTML", option_r4.Nome, i0.ɵɵsanitizeHtml);
25
- } }
26
- function InfoAutoCompleteComponent_mat_progress_bar_10_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelement(0, "mat-progress-bar", 9);
28
- } }
29
- export class InfoAutoCompleteComponent {
30
- constructor(_dataAcess) {
31
- this._dataAcess = _dataAcess;
32
- this.control = new UntypedFormControl();
33
- this.placeholder = '';
34
- this.name = '';
35
- this.required = false;
36
- this.selectfirst = false;
37
- this.disablednoregisters = false;
38
- this.getdataonchange = false;
39
- this.getdataonchangetime = 500;
40
- this.api = null;
41
- this.method = 'getchavevalor';
42
- this.maxlist = 10;
43
- this.startwith = false;
44
- this.minchar = 1;
45
- this.onselecteditem = new EventEmitter();
46
- this.selectedValue = null;
47
- this.initialized = false;
48
- this._loading = false;
49
- this._params = null;
50
- this._disabled = null;
51
- this._data = [];
52
- }
53
- get loading() {
54
- return this._loading;
55
- }
56
- set loading(value) {
57
- this._loading = value;
58
- if (this._disabled == null)
59
- this._disabled = false;
60
- else if (this._disabled.toString() == '')
61
- this._disabled = true;
62
- if (this._disabled == false)
63
- this.setDisabledState(this.loading);
64
- }
65
- get params() {
66
- return this._params;
67
- }
68
- set params(value) {
69
- this._params = value;
70
- if (this.initialized)
71
- this.getData().subscribe(a => { this.data = a.data; this.loading = false; });
72
- }
73
- set disabled(value) {
74
- if (this._disabled == null)
75
- this._disabled = value;
76
- if (value)
77
- this.control.disable();
78
- else
79
- this.control.enable();
80
- }
81
- get data() {
82
- return this._data;
83
- }
84
- set data(value) {
85
- this._data = value;
86
- if (this.getdataonchange)
87
- return;
88
- setTimeout(() => {
89
- if (this.selectedValue != null)
90
- if ((this._data == null || (this._data != null && this._data.length == 0)) && !this.loading) {
91
- this.writeValue(null);
92
- this.selectedValue = null;
93
- }
94
- else
95
- this.writeValue(this.selectedValue.Id == null ? this.selectedValue : this.selectedValue.Id);
96
- else if (this.selectfirst && this.data != null && this.data.length > 0)
97
- this.writeValue(this.data[0].Id);
98
- if (this.disablednoregisters)
99
- this.setDisabledState((this.data == null || this.data.length == 0));
100
- }, 1000);
101
- }
102
- ngOnInit() {
103
- if (this.minchar == null || this.minchar < 0)
104
- this.minchar = 1;
105
- this.name = this.placeholder.replace(/ /g, '') + Math.floor(Math.random() * 1000).toString();
106
- if (!this.getdataonchange) {
107
- this.getData().subscribe(a => { this.data = a.data; this.loading = false; });
108
- this.control.valueChanges.subscribe(value => { this.options = this.filter(value); });
109
- }
110
- else {
111
- this.control.valueChanges.pipe(debounceTime(this.getdataonchangetime), distinctUntilChanged(), switchMap(value => this.getData(value))).subscribe(a => this.data = this.options = a.data);
112
- }
113
- }
114
- filter(value) {
115
- if (value == null || value.length < this.minchar)
116
- return [];
117
- let filterValue = value.Nome == null ? value.toString().toLowerCase() : value.Nome;
118
- if (this.startwith)
119
- return this.data.filter(option => option.Nome.toLowerCase().indexOf(filterValue) === 0 || (option.Aux == null ? "" : option.Aux.toLowerCase() == filterValue)).slice(0, this.maxlist);
120
- else
121
- return this.data.filter(option => option.Nome.toLowerCase().indexOf(filterValue) > -1 || (option.Aux == null ? "" : option.Aux.toLowerCase().indexOf(filterValue) > -1)).slice(0, this.maxlist);
122
- }
123
- getData(value = null) {
124
- this.initialized = true;
125
- if (this.api == null || this.api == '')
126
- return new Observable();
127
- this.loading = !this.getdataonchange;
128
- this.data = [];
129
- let parameters = this.params || '';
130
- if (this.getdataonchange) {
131
- if (value == null || value == '')
132
- return new Observable();
133
- if (parameters != null && parameters != '')
134
- parameters += '&';
135
- parameters += `nome=${value.Nome == null ? value.toString().toLowerCase() : value.Nome}&take=${this.maxlist}`;
136
- let model = parameters.split("&").map(c => ({ [c.split("=")[0].charAt(0).toUpperCase() + c.split("=")[0].substring(1)]: c.split("=")[1] })).reduce((a, b) => ({ ...a, ...b }));
137
- return this._dataAcess.post(this.api, model, this.method);
138
- }
139
- return this._dataAcess.get(this.api, this.method, parameters);
140
- }
141
- onBlur(value) {
142
- setTimeout(() => {
143
- if (this.selectedValue != null && this.selectedValue.Id != null)
144
- return;
145
- if (!value && this.selectedValue != null && this.selectedValue.trim() == '')
146
- this.writeValue(null);
147
- else {
148
- let first = this.filter(value);
149
- if (first != null && first.length > 0)
150
- this.writeValue(first[0].Id);
151
- else
152
- this.writeValue(null);
153
- }
154
- }, 300);
155
- }
156
- onFocus(value) {
157
- if (this.minchar != null && this.minchar == 0 && (value == null || value == ''))
158
- setTimeout(() => { this.control.setValue(''); }, 200);
159
- }
160
- displayFn(model) {
161
- if (model == null || model.Nome == null)
162
- return '';
163
- let indexSmall = model.Nome.indexOf('<small');
164
- return indexSmall > -1 ? model.Nome.substring(0, indexSmall).trim() : model.Nome;
165
- }
166
- writeValue(value) {
167
- let obj = this.data.find(r => r.Id == value);
168
- this.control.setValue(obj);
169
- if (value != null && obj == null)
170
- this.selectedValue = value;
171
- if (this.onChange != null)
172
- this.onChange(value);
173
- if (this.onselecteditem != null)
174
- this.onselecteditem.emit(this.data == null ? null : this.data.find(r => r.Id == value));
175
- }
176
- registerOnChange(fn) {
177
- this.onChange = fn;
178
- }
179
- registerOnTouched(fn) {
180
- this.onTouched = fn;
181
- }
182
- setDisabledState(isDisabled) {
183
- this.disabled = this.disablednoregisters && (this.data == null || this.data.length == 0) ? true : isDisabled;
184
- }
185
- }
186
- /** @nocollapse */ InfoAutoCompleteComponent.ɵfac = function InfoAutoCompleteComponent_Factory(t) { return new (t || InfoAutoCompleteComponent)(i0.ɵɵdirectiveInject(i1.InfoDataService)); };
187
- /** @nocollapse */ InfoAutoCompleteComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoAutoCompleteComponent, selectors: [["info-autocomplete"]], inputs: { placeholder: "placeholder", name: "name", required: "required", selectfirst: "selectfirst", disablednoregisters: "disablednoregisters", getdataonchange: "getdataonchange", getdataonchangetime: "getdataonchangetime", api: "api", method: "method", maxlist: "maxlist", startwith: "startwith", minchar: "minchar", loading: "loading", params: "params", disabled: "disabled", data: "data" }, outputs: { onselecteditem: "onselecteditem" }, features: [i0.ɵɵProvidersFeature([{
188
- provide: NG_VALUE_ACCESSOR,
189
- useExisting: forwardRef((() => InfoAutoCompleteComponent)),
190
- multi: true
191
- }])], decls: 11, vars: 10, consts: [["matInput", "", "type", "text", 3, "ngModel", "placeholder", "formControl", "matAutocomplete", "required", "ngModelChange", "blur", "focus"], ["inputAuto", ""], [3, "displayWith"], ["auto", "matAutocomplete"], [3, "value", "innerHTML", "onSelectionChange", 4, "ngFor", "ngForOf"], ["matSuffix", "", 2, "color", "#aaa"], [1, "select-loading"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], [3, "value", "innerHTML", "onSelectionChange"], ["color", "primary", "mode", "indeterminate"]], template: function InfoAutoCompleteComponent_Template(rf, ctx) { if (rf & 1) {
192
- i0.ɵɵelementStart(0, "mat-form-field")(1, "input", 0, 1);
193
- i0.ɵɵlistener("ngModelChange", function InfoAutoCompleteComponent_Template_input_ngModelChange_1_listener($event) { return ctx.selectedValue = $event; })("blur", function InfoAutoCompleteComponent_Template_input_blur_1_listener($event) { return ctx.onBlur($event.target.value); })("focus", function InfoAutoCompleteComponent_Template_input_focus_1_listener($event) { return ctx.onFocus($event.target.value); });
194
- i0.ɵɵpipe(3, "translate");
195
- i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(4, "mat-autocomplete", 2, 3);
197
- i0.ɵɵtemplate(6, InfoAutoCompleteComponent_mat_option_6_Template, 1, 2, "mat-option", 4);
198
- i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(7, "mat-icon", 5);
200
- i0.ɵɵtext(8, "spellcheck");
201
- i0.ɵɵelementEnd()();
202
- i0.ɵɵelementStart(9, "section", 6);
203
- i0.ɵɵtemplate(10, InfoAutoCompleteComponent_mat_progress_bar_10_Template, 1, 0, "mat-progress-bar", 7);
204
- i0.ɵɵelementEnd();
205
- } if (rf & 2) {
206
- const _r1 = i0.ɵɵreference(5);
207
- i0.ɵɵadvance(1);
208
- i0.ɵɵproperty("ngModel", ctx.selectedValue)("placeholder", i0.ɵɵpipeBind1(3, 8, ctx.placeholder))("formControl", ctx.control)("matAutocomplete", _r1)("required", ctx.required);
209
- i0.ɵɵadvance(3);
210
- i0.ɵɵproperty("displayWith", ctx.displayFn);
211
- i0.ɵɵadvance(2);
212
- i0.ɵɵproperty("ngForOf", ctx.options);
213
- i0.ɵɵadvance(4);
214
- i0.ɵɵproperty("ngIf", ctx.loading);
215
- } }, dependencies: [i2.NgForOf, i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.RequiredValidator, i3.FormControlDirective, i4.MatIcon, i5.MatFormField, i5.MatSuffix, i6.MatInput, i7.MatOption, i8.MatProgressBar, i9.MatAutocomplete, i9.MatAutocompleteTrigger, i10.InfoTranslatePipe], styles: ["[_nghost-%COMP%] .select-loading[_ngcontent-%COMP%]{position:relative;bottom:15px;opacity:.3;height:1px}[_nghost-%COMP%] .select-loading[_ngcontent-%COMP%] .mat-progress-bar[_ngcontent-%COMP%]{height:1px;margin:0}[_nghost-%COMP%] mat-option[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{margin-left:10px;font-style:italic}"] });
216
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoAutoCompleteComponent, [{
217
- type: Component,
218
- args: [{ selector: 'info-autocomplete', providers: [{
219
- provide: NG_VALUE_ACCESSOR,
220
- useExisting: forwardRef((() => InfoAutoCompleteComponent)),
221
- multi: true
222
- }], template: "<mat-form-field>\r\n <input matInput type=\"text\" [(ngModel)]=\"selectedValue\" [placeholder]=\"placeholder | translate\" [formControl]=\"control\" [matAutocomplete]=\"auto\" \r\n [required]=\"required\" (blur)=\"onBlur($event.target.value)\" (focus)=\"onFocus($event.target.value)\" #inputAuto>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option\" (onSelectionChange)=\"writeValue(option.Id)\" [innerHTML]=\"option.Nome\" >\r\n </mat-option>\r\n </mat-autocomplete>\r\n \r\n <mat-icon matSuffix style=\"color: #aaa\">spellcheck</mat-icon>\r\n</mat-form-field>\r\n\r\n<section class=\"select-loading\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\" *ngIf=\"loading\"></mat-progress-bar>\r\n</section>", styles: [":host .select-loading{position:relative;bottom:15px;opacity:.3;height:1px}:host .select-loading .mat-progress-bar{height:1px;margin:0}:host mat-option small{margin-left:10px;font-style:italic}\n"] }]
223
- }], function () { return [{ type: i1.InfoDataService }]; }, { placeholder: [{
224
- type: Input
225
- }], name: [{
226
- type: Input
227
- }], required: [{
228
- type: Input
229
- }], selectfirst: [{
230
- type: Input
231
- }], disablednoregisters: [{
232
- type: Input
233
- }], getdataonchange: [{
234
- type: Input
235
- }], getdataonchangetime: [{
236
- type: Input
237
- }], api: [{
238
- type: Input
239
- }], method: [{
240
- type: Input
241
- }], maxlist: [{
242
- type: Input
243
- }], startwith: [{
244
- type: Input
245
- }], minchar: [{
246
- type: Input
247
- }], onselecteditem: [{
248
- type: Output
249
- }], loading: [{
250
- type: Input
251
- }], params: [{
252
- type: Input
253
- }], disabled: [{
254
- type: Input
255
- }], data: [{
256
- type: Input
257
- }] }); })();
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvY29udHJvbHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDQzFCLHFDQUFtSTtJQUF2RSxzUUFBcUIsZUFBQSwrQkFBcUIsQ0FBQSxJQUFDO0lBQ3ZHLGlCQUFhOzs7SUFEOEIsaUNBQWdCLGdEQUFBOzs7SUFRL0Qsc0NBQTBGOztBREk5RixNQUFNLE9BQU8seUJBQXlCO0lBa0dsQyxZQUFvQixVQUEyQjtRQUEzQixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQWpHL0MsWUFBTyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQix3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SUFBSSxFQUFFO2dCQUN0QyxVQUFVLElBQUksR0FBRyxDQUFDO1lBRXRCLFVBQVUsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTlHLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUM1SyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3RDtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNSLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FB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RyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csbUJBQW1CO2tCQUEzQixLQUFLO1lBQ0csR0FBRztrQkFBWCxLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUVJLGNBQWM7a0JBQXZCLE1BQU07WUFZSCxPQUFPO2tCQURWLEtBQUs7WUFvQkYsTUFBTTtrQkFEVCxLQUFLO1lBY0YsUUFBUTtrQkFEWCxLQUFLO1lBYUYsSUFBSTtrQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBmb3J3YXJkUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc3dpdGNoTWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJbmZvRGF0YUFjY2Vzc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tYXV0b2NvbXBsZXRlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbe1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEluZm9BdXRvQ29tcGxldGVDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0F1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgY29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICAgIFxyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIEBJbnB1dCgpIG5hbWUgPSAnJztcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RmaXJzdCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWRub3JlZ2lzdGVycyA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZ2V0ZGF0YW9uY2hhbmdlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBnZXRkYXRhb25jaGFuZ2V0aW1lID0gNTAwO1xyXG4gICAgQElucHV0KCkgYXBpOiBhbnkgPSBudWxsO1xyXG4gICAgQElucHV0KCkgbWV0aG9kID0gJ2dldGNoYXZldmFsb3InO1xyXG4gICAgQElucHV0KCkgbWF4bGlzdCA9IDEwO1xyXG4gICAgQElucHV0KCkgc3RhcnR3aXRoID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBtaW5jaGFyID0gMTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25zZWxlY3RlZGl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgb3B0aW9uczogYW55W107XHJcbiAgICBzZWxlY3RlZFZhbHVlOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIG9uQ2hhbmdlOiBhbnk7XHJcbiAgICBvblRvdWNoZWQ6IGFueTtcclxuICAgIFxyXG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBfbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBsb2FkaW5nKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGxvYWRpbmcodmFsdWUpe1xyXG4gICAgICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5fZGlzYWJsZWQudG9TdHJpbmcoKSA9PSAnJylcclxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmxvYWRpbmcpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBfcGFyYW1zOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYXJhbXMoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBwYXJhbXModmFsdWUpe1xyXG4gICAgICAgIHRoaXMuX3BhcmFtcyA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZClcclxuICAgICAgICAgICAgdGhpcy5nZXREYXRhKCkuc3Vic2NyaWJlKGEgPT4geyB0aGlzLmRhdGEgPSBhLmRhdGE7IHRoaXMubG9hZGluZyA9IGZhbHNlOyB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgX2Rpc2FibGVkOiBib29sZWFuID0gbnVsbDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHsgICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlKVxyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9kYXRhOiBhbnkgPSBbXTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGF0YSgpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBkYXRhKHZhbHVlKXtcclxuICAgICAgICB0aGlzLl9kYXRhID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmdldGRhdGFvbmNoYW5nZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLl9kYXRhID09IG51bGwgfHwgKHRoaXMuX2RhdGEgIT0gbnVsbCAmJiB0aGlzLl9kYXRhLmxlbmd0aCA9PSAwKSkgJiYgIXRoaXMubG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZS5JZCA9PSBudWxsID8gdGhpcy5zZWxlY3RlZFZhbHVlIDogdGhpcy5zZWxlY3RlZFZhbHVlLklkKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RmaXJzdCAmJiB0aGlzLmRhdGEgIT0gbnVsbCAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmRhdGFbMF0uSWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRub3JlZ2lzdGVycylcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSgodGhpcy5kYXRhID09IG51bGwgfHwgdGhpcy5kYXRhLmxlbmd0aCA9PSAwKSk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YUFjZXNzOiBJbmZvRGF0YVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1pbmNoYXIgPT0gbnVsbCB8fCB0aGlzLm1pbmNoYXIgPCAwKSB0aGlzLm1pbmNoYXIgPSAxO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMucGxhY2Vob2xkZXIucmVwbGFjZSgvIC9nLCAnJykgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2V0ZGF0YW9uY2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpLnN1YnNjcmliZShhID0+IHsgdGhpcy5kYXRhID0gYS5kYXRhOyB0aGlzLmxvYWRpbmcgPSBmYWxzZTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHsgdGhpcy5vcHRpb25zID0gdGhpcy5maWx0ZXIodmFsdWUpfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZ2V0ZGF0YW9uY2hhbmdldGltZSksIFxyXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB0aGlzLmdldERhdGEodmFsdWUpKVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZShhID0+IHRoaXMuZGF0YSA9IHRoaXMub3B0aW9ucyA9IGEuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcih2YWx1ZTogYW55KTogYW55W10ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA8IHRoaXMubWluY2hhcikgcmV0dXJuIFtdO1xyXG4gICAgICAgIGxldCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLk5vbWUgPT0gbnVsbCA/IHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA6IHZhbHVlLk5vbWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0d2l0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5Ob21lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IDAgfHwgKG9wdGlvbi5BdXggPT0gbnVsbCA/IFwiXCIgOiBvcHRpb24uQXV4LnRvTG93ZXJDYXNlKCkgPT0gZmlsdGVyVmFsdWUpKS5zbGljZSgwLCB0aGlzLm1heGxpc3QpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5Ob21lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPiAtMSB8fCAob3B0aW9uLkF1eCA9PSBudWxsID8gXCJcIiA6IG9wdGlvbi5BdXgudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlKSA+IC0xKSkuc2xpY2UoMCwgdGhpcy5tYXhsaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKHZhbHVlOiBhbnkgPSBudWxsKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXBpID09IG51bGwgfHwgdGhpcy5hcGkgPT0gJycpXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxJbmZvRGF0YUFjY2Vzc01vZGVsPigpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSAhdGhpcy5nZXRkYXRhb25jaGFuZ2U7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtcyB8fCAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0ZGF0YW9uY2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09ICcnKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEluZm9EYXRhQWNjZXNzTW9kZWw+KCk7XHJcblxyXG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycyAhPSBudWxsICYmIHBhcmFtZXRlcnMgIT0gJycpXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzICs9ICcmJztcclxuXHJcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgKz0gYG5vbWU9JHt2YWx1ZS5Ob21lID09IG51bGwgPyB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZS5Ob21lfSZ0YWtlPSR7dGhpcy5tYXhsaXN0fWA7XHJcblxyXG4gICAgICAgICAgICBsZXQgbW9kZWwgPSBwYXJhbWV0ZXJzLnNwbGl0KFwiJlwiKS5tYXAoYyA9PiAoeyBbYy5zcGxpdChcIj1cIilbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjLnNwbGl0KFwiPVwiKVswXS5zdWJzdHJpbmcoMSldOiBjLnNwbGl0KFwiPVwiKVsxXSB9KSkucmVkdWNlKChhLGIpID0+ICh7Li4uYSwgLi4uYn0pKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFBY2Vzcy5wb3N0KHRoaXMuYXBpLCBtb2RlbCwgdGhpcy5tZXRob2QpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFBY2Vzcy5nZXQodGhpcy5hcGksIHRoaXMubWV0aG9kLCBwYXJhbWV0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkJsdXIodmFsdWUpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZS5JZCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkVmFsdWUudHJpbSgpID09ICcnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZmlsdGVyKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChmaXJzdCAhPSBudWxsICYmIGZpcnN0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKGZpcnN0WzBdLklkKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWluY2hhciAhPSBudWxsICYmIHRoaXMubWluY2hhciA9PSAwICYmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09ICcnKSlcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7IH0sIDIwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheUZuKG1vZGVsKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobW9kZWwgPT0gbnVsbCB8fCBtb2RlbC5Ob21lID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgbGV0IGluZGV4U21hbGwgPSBtb2RlbC5Ob21lLmluZGV4T2YoJzxzbWFsbCcpO1xyXG4gICAgICAgIHJldHVybiBpbmRleFNtYWxsID4gLTEgPyBtb2RlbC5Ob21lLnN1YnN0cmluZygwLCBpbmRleFNtYWxsKS50cmltKCkgOiBtb2RlbC5Ob21lO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBvYmogPSB0aGlzLmRhdGEuZmluZChyID0+IHIuSWQgPT0gdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShvYmopO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBvYmogPT0gbnVsbClcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vbnNlbGVjdGVkaXRlbSAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9uc2VsZWN0ZWRpdGVtLmVtaXQodGhpcy5kYXRhID09IG51bGwgPyBudWxsIDogdGhpcy5kYXRhLmZpbmQociA9PiByLklkID09IHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZG5vcmVnaXN0ZXJzICYmICh0aGlzLmRhdGEgPT0gbnVsbCB8fCB0aGlzLmRhdGEubGVuZ3RoID09IDApID8gdHJ1ZSA6IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFxyXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIChibHVyKT1cIm9uQmx1cigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudC50YXJnZXQudmFsdWUpXCIgI2lucHV0QXV0bz5cclxuXHJcbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIndyaXRlVmFsdWUob3B0aW9uLklkKVwiIFtpbm5lckhUTUxdPVwib3B0aW9uLk5vbWVcIiA+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgXHJcbiAgICA8bWF0LWljb24gbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj5zcGVsbGNoZWNrPC9tYXQtaWNvbj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwic2VsZWN0LWxvYWRpbmdcIj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJsb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48L3NlY3Rpb24+Il19