ezlibrary_v2 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +24 -0
  2. package/esm2020/ezlibrary_v2.mjs +5 -0
  3. package/esm2020/lib/admin-service/admin-service.service.mjs +34 -0
  4. package/esm2020/lib/analysis-search/analysis-search.component.mjs +1077 -0
  5. package/esm2020/lib/assort-service/assort-service.service.mjs +28 -0
  6. package/esm2020/lib/attribute-definition/attribute-definition.component.mjs +225 -0
  7. package/esm2020/lib/auth/auth.guard.mjs +37 -0
  8. package/esm2020/lib/bi-service/bi.service.mjs +57 -0
  9. package/esm2020/lib/call-info/callinfo.component.mjs +125 -0
  10. package/esm2020/lib/comman-service/comman-service.service.mjs +678 -0
  11. package/esm2020/lib/comman-service/share-data-service.service.mjs +23 -0
  12. package/esm2020/lib/contact-search/contact-search.component.mjs +690 -0
  13. package/esm2020/lib/contact-service/contact-service.service.mjs +45 -0
  14. package/esm2020/lib/ez-lib.component.mjs +26 -0
  15. package/esm2020/lib/ez-lib.module.mjs +232 -0
  16. package/esm2020/lib/ez-lib.service.mjs +14 -0
  17. package/esm2020/lib/ezheader/header.component.mjs +400 -0
  18. package/esm2020/lib/file-upload/fileupload.component.mjs +918 -0
  19. package/esm2020/lib/file-upload-log/file-upload-log.component.mjs +169 -0
  20. package/esm2020/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.mjs +14 -0
  21. package/esm2020/lib/fileupload-module/fileupload-routing.module.mjs +28 -0
  22. package/esm2020/lib/fileupload-module/fileupload.module.mjs +80 -0
  23. package/esm2020/lib/footer/footer.component.mjs +18 -0
  24. package/esm2020/lib/globle/common-pdf.service.mjs +28 -0
  25. package/esm2020/lib/globle/globle-env.service.mjs +45 -0
  26. package/esm2020/lib/globle/memo-report.service.mjs +2798 -0
  27. package/esm2020/lib/globle/shared-services.service.mjs +25 -0
  28. package/esm2020/lib/globle/upload-service.service.mjs +63 -0
  29. package/esm2020/lib/header/header.component.mjs +172 -0
  30. package/esm2020/lib/invalid/invalid.component.mjs +70 -0
  31. package/esm2020/lib/logout/logout.component.mjs +104 -0
  32. package/esm2020/lib/menu-right/menu-right.component.mjs +258 -0
  33. package/esm2020/lib/pipes/number-with-commas.pipe.mjs +24 -0
  34. package/esm2020/lib/pipes/order-by-pipe.pipe.mjs +17 -0
  35. package/esm2020/lib/pipes/selectedCount.mjs +19 -0
  36. package/esm2020/lib/pipes/sum.pipe.mjs +17 -0
  37. package/esm2020/lib/pkt-data/pkt-data.component.mjs +1109 -0
  38. package/esm2020/lib/pricing-service/pricing.service.mjs +64 -0
  39. package/esm2020/lib/qa-analysis/qa-analysis.component.mjs +1028 -0
  40. package/esm2020/lib/report-format/report-format.component.mjs +403 -0
  41. package/esm2020/lib/sessionend/session-end.guard.mjs +27 -0
  42. package/esm2020/lib/stock-service/lazyload.service.mjs +21 -0
  43. package/esm2020/lib/stock-service/stock-service.service.mjs +58 -0
  44. package/esm2020/lib/system-module/subform/subform.component.mjs +2817 -0
  45. package/esm2020/lib/system-module/system/system.component.mjs +970 -0
  46. package/esm2020/lib/system-module/system-service/system-service.service.mjs +83 -0
  47. package/esm2020/lib/system-module/system-service/upload-file.service.mjs +83 -0
  48. package/esm2020/lib/utility/app-no-dbl-click.directive.mjs +24 -0
  49. package/esm2020/lib/utility/constants.mjs +5 -0
  50. package/esm2020/lib/utility/contact-table-search.pipe.mjs +25 -0
  51. package/esm2020/lib/utility/formate-num-field.pipe.mjs +19 -0
  52. package/esm2020/lib/utility/search-pipe.pipe.mjs +26 -0
  53. package/esm2020/lib/utility/selective-preloading-strategy.mjs +23 -0
  54. package/esm2020/lib/utility/table-search.pipe.mjs +25 -0
  55. package/esm2020/lib/utility/tranform.directive.mjs +27 -0
  56. package/esm2020/lib/websearch-history/websearch-history.component.mjs +273 -0
  57. package/esm2020/public-api.mjs +59 -0
  58. package/ezlibrary_v2.d.ts +5 -0
  59. package/fesm2015/ezlibrary_v2.mjs +15300 -0
  60. package/fesm2015/ezlibrary_v2.mjs.map +1 -0
  61. package/fesm2020/ezlibrary_v2.mjs +15291 -0
  62. package/fesm2020/ezlibrary_v2.mjs.map +1 -0
  63. package/lib/admin-service/admin-service.service.d.ts +13 -0
  64. package/lib/analysis-search/analysis-search.component.d.ts +118 -0
  65. package/lib/assort-service/assort-service.service.d.ts +12 -0
  66. package/lib/attribute-definition/attribute-definition.component.d.ts +43 -0
  67. package/lib/auth/auth.guard.d.ts +14 -0
  68. package/lib/bi-service/bi.service.d.ts +16 -0
  69. package/lib/call-info/callinfo.component.d.ts +26 -0
  70. package/lib/comman-service/comman-service.service.d.ts +106 -0
  71. package/lib/comman-service/share-data-service.service.d.ts +10 -0
  72. package/lib/contact-search/contact-search.component.d.ts +111 -0
  73. package/lib/contact-service/contact-service.service.d.ts +15 -0
  74. package/lib/ez-lib.component.d.ts +8 -0
  75. package/lib/ez-lib.module.d.ts +43 -0
  76. package/lib/ez-lib.service.d.ts +6 -0
  77. package/lib/ezheader/header.component.d.ts +57 -0
  78. package/lib/file-upload/fileupload.component.d.ts +127 -0
  79. package/lib/file-upload-log/file-upload-log.component.d.ts +49 -0
  80. package/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.d.ts +8 -0
  81. package/lib/fileupload-module/fileupload-routing.module.d.ts +7 -0
  82. package/lib/fileupload-module/fileupload.module.d.ts +15 -0
  83. package/lib/footer/footer.component.d.ts +9 -0
  84. package/lib/globle/common-pdf.service.d.ts +9 -0
  85. package/lib/globle/globle-env.service.d.ts +16 -0
  86. package/lib/globle/memo-report.service.d.ts +107 -0
  87. package/lib/globle/shared-services.service.d.ts +12 -0
  88. package/lib/globle/upload-service.service.d.ts +16 -0
  89. package/lib/header/header.component.d.ts +41 -0
  90. package/lib/invalid/invalid.component.d.ts +12 -0
  91. package/lib/logout/logout.component.d.ts +19 -0
  92. package/lib/menu-right/menu-right.component.d.ts +43 -0
  93. package/lib/pipes/number-with-commas.pipe.d.ts +7 -0
  94. package/lib/pipes/order-by-pipe.pipe.d.ts +7 -0
  95. package/lib/pipes/selectedCount.d.ts +7 -0
  96. package/lib/pipes/sum.pipe.d.ts +7 -0
  97. package/lib/pkt-data/pkt-data.component.d.ts +184 -0
  98. package/lib/pricing-service/pricing.service.d.ts +16 -0
  99. package/lib/qa-analysis/qa-analysis.component.d.ts +95 -0
  100. package/lib/report-format/report-format.component.d.ts +74 -0
  101. package/lib/sessionend/session-end.guard.d.ts +10 -0
  102. package/lib/stock-service/lazyload.service.d.ts +7 -0
  103. package/lib/stock-service/stock-service.service.d.ts +15 -0
  104. package/lib/system-module/subform/subform.component.d.ts +222 -0
  105. package/lib/system-module/system/system.component.d.ts +109 -0
  106. package/lib/system-module/system-service/system-service.service.d.ts +23 -0
  107. package/lib/system-module/system-service/upload-file.service.d.ts +12 -0
  108. package/lib/utility/app-no-dbl-click.directive.d.ts +7 -0
  109. package/lib/utility/constants.d.ts +4 -0
  110. package/lib/utility/contact-table-search.pipe.d.ts +7 -0
  111. package/lib/utility/formate-num-field.pipe.d.ts +7 -0
  112. package/lib/utility/search-pipe.pipe.d.ts +7 -0
  113. package/lib/utility/selective-preloading-strategy.d.ts +9 -0
  114. package/lib/utility/table-search.pipe.d.ts +7 -0
  115. package/lib/utility/tranform.directive.d.ts +10 -0
  116. package/lib/websearch-history/websearch-history.component.d.ts +56 -0
  117. package/package.json +31 -0
  118. package/public-api.d.ts +54 -0
@@ -0,0 +1,273 @@
1
+ import { Component } from '@angular/core';
2
+ // import { FlashMessagesService } from 'angular2-flash-messages';
3
+ import { Cookie } from 'ng2-cookies/ng2-cookies';
4
+ // import { AsyncLocalStorage } from 'async_hooks';
5
+ import { document } from 'ngx-bootstrap';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "../stock-service/stock-service.service";
9
+ import * as i3 from "../system-module/system-service/system-service.service";
10
+ import * as i4 from "../comman-service/comman-service.service";
11
+ import * as i5 from "@ng-select/ng-select";
12
+ import * as i6 from "ngx-pagination";
13
+ import * as i7 from "@angular/forms";
14
+ import * as i8 from "@angular/common";
15
+ import * as i9 from "../utility/app-no-dbl-click.directive";
16
+ import * as i10 from "ngx-order-pipe";
17
+ import * as i11 from "../utility/table-search.pipe";
18
+ export class WebsearchHistoryComponent {
19
+ constructor(router, route,
20
+ // private flashMessagesService: FlashMessagesService,
21
+ ss,
22
+ // private spinnerService: Ng4LoadingSpinnerService,
23
+ sysS,
24
+ // private ps: PdfServiceService,
25
+ cs) {
26
+ this.router = router;
27
+ this.route = route;
28
+ this.ss = ss;
29
+ this.sysS = sysS;
30
+ this.cs = cs;
31
+ this.resultView = [];
32
+ this.searchResultDtlList = [];
33
+ this.isOpen = true;
34
+ this.icon = 'fa fa-dedent';
35
+ this.order = '';
36
+ this.reverse = true;
37
+ this.pageSize = 10;
38
+ this.p = 1;
39
+ this.pokey = '';
40
+ this.buyerList = [];
41
+ this.lovs = [];
42
+ this.sqlArray = {};
43
+ this.noData = true;
44
+ this.resultlength = 0;
45
+ this.scrollDistance = 1;
46
+ this.scrollUpDistance = 2;
47
+ this.startIndex = 0;
48
+ this.endIndex = 30;
49
+ this.loadResult = [];
50
+ }
51
+ setOrder(value, i) {
52
+ this.showarr = i;
53
+ if (this.order === value) {
54
+ this.reverse = !this.reverse;
55
+ }
56
+ this.order = value;
57
+ }
58
+ onPageSizeChange(p) {
59
+ if (p == 'All') {
60
+ this.pageSize = this.searchResultDtlList.length;
61
+ }
62
+ else {
63
+ this.pageSize = p;
64
+ }
65
+ }
66
+ getLovList(tblF, page_item_idn) {
67
+ // this.spinnerService.show();
68
+ let reqObj = {};
69
+ reqObj['page_item_idn'] = page_item_idn;
70
+ this.header['method'] = 'getDataByItemIdn';
71
+ // let options = new RequestOptions({ headers: this.header });
72
+ let options = { headers: this.header };
73
+ this.sysS.getData(reqObj, options).then((response) => {
74
+ if (response.status == 'SUCCESS') {
75
+ this.lovs = response.kv;
76
+ this.sqlArray[tblF] = this.lovs;
77
+ // this.spinnerService.hide();
78
+ // console.log(this.lovs);
79
+ // console.log(tblF, this.sqlArray);
80
+ }
81
+ else {
82
+ // this.spinnerService.hide();
83
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
84
+ }
85
+ }).catch((err) => {
86
+ // this.spinnerService.hide();
87
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
88
+ });
89
+ }
90
+ loadBuyer(searchTerm) {
91
+ // this.spinnerService.show();
92
+ let reqObj = {};
93
+ reqObj['likeStr'] = searchTerm;
94
+ this.header['method'] = 'loadBuyer';
95
+ // let options = new RequestOptions({ headers: this.header });
96
+ let options = { headers: this.header };
97
+ this.ss.load(reqObj, options, 'marketing/search').then((response) => {
98
+ if (response.status == 'SUCCESS') {
99
+ let result = response.result;
100
+ this.buyerList = result.buyerList.map(option => ({
101
+ value: option.k,
102
+ label: option.v
103
+ }));
104
+ // this.spinnerService.hide();
105
+ }
106
+ else {
107
+ // this.spinnerService.hide();
108
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
109
+ }
110
+ }).catch((err) => {
111
+ // this.spinnerService.hide();
112
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
113
+ });
114
+ }
115
+ loadFrmFields() {
116
+ // this.spinnerService.show();
117
+ let reqObj = {};
118
+ reqObj['formNme'] = this.route.snapshot.params['frmnme']; //'searchDtlDscrForm';
119
+ reqObj['requestSrc'] = this.route.snapshot.params['src']; // 'online';
120
+ // if (this.route.snapshot.params['src'] != null && this.route.snapshot.params['src'] != undefined && this.route.snapshot.params['src'] != "") {
121
+ // reqObj['requestSrc'] ='ez';// ['qs', 'qs'];
122
+ // }
123
+ // else {
124
+ // reqObj['requestSrc'] = 'online';
125
+ // }
126
+ this.header['method'] = 'getSearchDetails';
127
+ // console.log(reqObj);
128
+ // let options = new RequestOptions({ headers: this.header });
129
+ let options = { headers: this.header };
130
+ this.ss.load(reqObj, options, 'marketing/search').then((response) => {
131
+ if (response.status == 'SUCCESS') {
132
+ // this.isOpen = true;
133
+ let result = response.result;
134
+ this.pageDefination = result.pageDefination;
135
+ this.sourceList = result.sourceList;
136
+ this.pageDefination.form_field.forEach(element => {
137
+ if (element.form_field_typ == 's') {
138
+ this.getLovList(element.form_field, element.page_item_idn);
139
+ }
140
+ });
141
+ // this.spinnerService.hide();
142
+ }
143
+ else {
144
+ // this.spinnerService.hide();
145
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
146
+ }
147
+ }).catch((err) => {
148
+ // this.spinnerService.hide();
149
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
150
+ });
151
+ }
152
+ openTog() {
153
+ this.isOpen = !this.isOpen;
154
+ if (this.isOpen == true) {
155
+ this.icon = 'fa fa-dedent';
156
+ }
157
+ else {
158
+ this.icon = 'fa fa-indent';
159
+ }
160
+ }
161
+ exportToCSV() {
162
+ let modifiedObjArr = this.cs.modifyDataByHeader(this.searchResultDtlList, this.resultView, this.resultViewDtl);
163
+ this.cs.CSVConvertor(modifiedObjArr, "Web_Search_History", true);
164
+ }
165
+ loadResults(formVal) {
166
+ this.loadResult = [];
167
+ // this.startIndex = 0;
168
+ // this.endIndex = 30;
169
+ // this.spinnerService.show();
170
+ let reqObj = {};
171
+ reqObj['formNme'] = this.route.snapshot.params['frmnme']; //'searchDtlDscrForm';
172
+ if (formVal != null) {
173
+ //reqObj['formNme'] = 'searchDtlDscrForm';
174
+ reqObj['empIdnList'] = formVal.employee != null ? [formVal.employee] : [];
175
+ reqObj['buyerIdnList'] = formVal.buyer != null ? [formVal.buyer] : [];
176
+ reqObj['dateFrom'] = formVal.fromDate != null ? this.cs.formatDate(formVal.fromDate) : '';
177
+ reqObj['dateTo'] = formVal.toDate != null ? this.cs.formatDate(formVal.toDate) : '';
178
+ }
179
+ // if (this.route.snapshot.params['src'] != null && this.route.snapshot.params['src'] != undefined && this.route.snapshot.params['src'] != "") {
180
+ // reqObj['requestSrc'] = 'ez';//['qs', 'qs'];
181
+ // }
182
+ // else {
183
+ // reqObj['requestSrc'] = 'online';
184
+ // }
185
+ reqObj['requestSrc'] = this.route.snapshot.params['src'];
186
+ this.header['method'] = 'getSearchDetails';
187
+ console.log(JSON.stringify(reqObj));
188
+ // let options = new RequestOptions({ headers: this.header });
189
+ let options = { headers: this.header };
190
+ this.ss.load(reqObj, options, 'marketing/search').then((response) => {
191
+ if (response.status == 'SUCCESS') {
192
+ console.log(response);
193
+ this.isOpen = false;
194
+ let result = response.result;
195
+ if (result != undefined && result != null) {
196
+ this.noData = false;
197
+ this.pageDefination = result.pageDefination;
198
+ this.resultView = result.resultView || [];
199
+ this.resultViewDtl = result.resultViewDtl || {};
200
+ this.searchResultDtlList = result.searchResultDtlList || [];
201
+ this.resultlength = this.searchResultDtlList.length;
202
+ // if (this.endIndex > this.resultlength)
203
+ // this.endIndex = this.resultlength
204
+ // this.addItems();
205
+ this.loadResult = this.searchResultDtlList;
206
+ document.getElementById("wrap").addEventListener("scroll", function () {
207
+ var translate = "translate(0," + this.scrollTop + "px)";
208
+ this.querySelector("thead").style.transform = translate;
209
+ });
210
+ this.searchF = this.sourceVal;
211
+ }
212
+ else {
213
+ this.noData = true;
214
+ this.isOpen = true;
215
+ }
216
+ // this.spinnerService.hide();
217
+ }
218
+ else {
219
+ // this.spinnerService.hide();
220
+ // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });
221
+ }
222
+ }).catch((err) => {
223
+ // this.spinnerService.hide();
224
+ // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });
225
+ });
226
+ }
227
+ // onScrollDown() {
228
+ // if (this.endIndex <= this.resultlength)
229
+ // this.addItems()
230
+ // document.getElementById("wrap").addEventListener("scroll", function () {
231
+ // var translate = "translate(0," + this.scrollTop + "px)";
232
+ // this.querySelector("thead").style.transform = translate;
233
+ // });
234
+ // }
235
+ // addItems() {
236
+ // for (let i = this.startIndex; i < this.endIndex; i++) {
237
+ // this.loadResult[i] = this.searchResultDtlList[i];
238
+ // }
239
+ // this.startIndex = this.endIndex;
240
+ // this.endIndex = this.endIndex + 30;
241
+ // if (this.endIndex > this.resultlength) {
242
+ // this.endIndex = this.resultlength;
243
+ // }
244
+ // }
245
+ onSubmit(formVal) {
246
+ var t = Object.keys(formVal.form.controls).forEach(field => {
247
+ const control = formVal.form.get(field);
248
+ });
249
+ this.loadResults(formVal.value);
250
+ }
251
+ ngOnInit() {
252
+ // let mdlk = JSON.parse(AsyncLocalStorage.arguments('mdlKey'));
253
+ let mdlk;
254
+ this.cUrl = this.router.url;
255
+ this.header = {
256
+ 'clientkey': Cookie.get('_ck'),
257
+ 'Content-Type': 'application/json',
258
+ 'modulekey': mdlk[this.cUrl.split('/')[1]],
259
+ 'loginid': Cookie.get('_logid'),
260
+ 'source': 'qs'
261
+ };
262
+ this.loadResults(null);
263
+ this.loadFrmFields();
264
+ this.cDt = new Date();
265
+ }
266
+ }
267
+ WebsearchHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: WebsearchHistoryComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.StockServiceService }, { token: i3.SystemServiceService }, { token: i4.CommanServiceService }], target: i0.ɵɵFactoryTarget.Component });
268
+ WebsearchHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: WebsearchHistoryComponent, selector: "app-websearch-history", ngImport: i0, template: "<div class=\"mt\" style=\"background: #fff;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">{{pageDefination?.title}}\r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"innerD\">\r\n <div class=\"row\" style=\"padding: 10px;\">\r\n <form class=\"form-inline\" #f=\"ngForm\" (ngSubmit)=\"onSubmit(f)\" name=\"appForm\">\r\n <div [ngClass]=\"isOpen == true ? 'col-md-4' : 'hidden'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let fl of pageDefination?.form_field\">\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 'sb'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 3;\" placeholder=\"Select Buyers\" [options]=\"buyerList\"\r\n [(ngModel)]=\"fl.default_value\" name=\"buyer\" (filterInputChanged)=\"loadBuyer($event)\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 's'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #lInput=\"ngModel\">\r\n <option *ngFor=\"let lov of sqlArray[fl.form_field]\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ=='d'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <input name=\"{{fl?.form_field}}\" [(ngModel)]=\"fl.default_value\" onfocus=\"(this.type='date')\"\r\n onblur=\"(this.type='text')\" class=\"form-control\" placeholder=\"dd/mm/yyyy\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"sourceList != null\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">Source</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"source\" [(ngModel)]=\"sourceVal\">\r\n <option *ngFor=\"let option of sourceList\" value=\"{{option.k}}\">{{option.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div [ngClass]=\"isOpen == false ? 'col-md-12 custCls' : 'col-md-8 custCls'\">\r\n <div class=\"row\" *ngIf=\"searchResultDtlList.length>0\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n </form>\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size &nbsp; &nbsp;</label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\"\r\n (change)=\"onPageSizeChange(pageSize)\">\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n\r\n <button *ngIf=\"searchResultDtlList.length>0\" class=\"btn btn-default\"\r\n style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\" data-placement=\"right\"\r\n title=\"Filter results\" (click)=\"openTog();\">\r\n <span class=\"{{icon}}\" style=\"color:#3b5998;\"></span>\r\n </button>\r\n\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Download Excel\" (click)=\"exportToCSV();\">\r\n <span class=\"fa fa-file-excel-o\" style=\"color:green;\"></span>\r\n </button>\r\n\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"col-md-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search &nbsp;&nbsp;</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div id=\"wrap\" style=\"overflow: auto;width: 100%;height: calc(100vh - 210px);\">\r\n <table class=\"displayTable\" *ngIf=\"!noData\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <ng-container *ngFor=\"let hdr of resultView ;let j=index;\">\r\n <th *ngIf=\"hdr != 'request_attr' && hdr != 'request_attrVal'\" nowrap (click)=\"setOrder(hdr,j)\">\r\n {{resultViewDtl[hdr]}}\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody style=\"height:400px;overflow:auto;\">\r\n <ng-container\r\n *ngFor=\"let pktdtl of loadResult | tableSearch:searchF | orderBy: order:reverse | paginate: { itemsPerPage: pageSize, currentPage: p }; let pkti = index ;trackBy:stock_idn\">\r\n\r\n <tr [ngClass]=\"{'even':pkti%2==0,'odd':pkti%2==1}\">\r\n <ng-container *ngFor=\"let att of resultView; let j = index;\">\r\n <td *ngIf=\"att != 'request_attr' && att != 'request_attrVal'\"\r\n style=\"max-width: 300px;white-space: normal;\"\r\n [ngStyle]=\"{'word-break' : att == 'dscr' ? 'break-word': 'normal','white-space': att != 'dscr'? 'nowrap':'normal'}\">\r\n <span>{{pktdtl[att]}}</span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n <p *ngIf=\"searchResultDtlList.length==0\" style=\"text-align: center\"><b> No Data Found !</b></p>\r\n <!-- \"max-width: 300px;white-space: normal;word-break: break-word; -->\r\n <!-- <pagination-controls (pageChange)=\"p = $event\" *ngIf=\"processDetails.length>0\" class=\"pull-right\"></pagination-controls> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actionFooter\">\r\n <button type=\"submit\" class=\"btn btn-success cBtn pull-left\" appAppNoDblClick (click)=\"onSubmit(f)\">Fetch</button>\r\n <pagination-controls style=\"background: white;\" (pageChange)=\"p=$event\" class=\"pull-right\"></pagination-controls>\r\n </div>\r\n</div>", styles: [".mb10p{margin-bottom:10px}.picn{padding:3px;margin-left:20px;font-size:16px;cursor:pointer}.divstyle{background:#fff;padding:2px}td,th{text-align:left}.ta-right{text-align:right!important}.ta-center{text-align:center!important}.p-cursor{cursor:pointer!important}.custCls{position:relative}.custCls:after{content:\"\";position:absolute;border-right:1px solid #ccc;height:85vh;width:20px;left:-25px;top:0px}.actionFooter{position:fixed;bottom:0;width:100%;text-align:right;padding:10px;background:#1b1e24}.innerD{min-height:calc(100vh - 100px);overflow:auto;background:#fff}table.wrp{table-layout:auto}\n"], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i6.PaginationControlsComponent, selector: "pagination-controls", inputs: ["maxSize", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel", "directionLinks", "autoHide", "responsive", "id"], outputs: ["pageChange", "pageBoundsCorrection"] }], directives: [{ type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.AppNoDblClickDirective, selector: "[appAppNoDblClick]" }], pipes: { "date": i8.DatePipe, "paginate": i6.PaginatePipe, "orderBy": i10.OrderPipe, "tableSearch": i11.TableSearchPipe } });
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: WebsearchHistoryComponent, decorators: [{
270
+ type: Component,
271
+ args: [{ selector: 'app-websearch-history', template: "<div class=\"mt\" style=\"background: #fff;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">{{pageDefination?.title}}\r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"innerD\">\r\n <div class=\"row\" style=\"padding: 10px;\">\r\n <form class=\"form-inline\" #f=\"ngForm\" (ngSubmit)=\"onSubmit(f)\" name=\"appForm\">\r\n <div [ngClass]=\"isOpen == true ? 'col-md-4' : 'hidden'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let fl of pageDefination?.form_field\">\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 'sb'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 3;\" placeholder=\"Select Buyers\" [options]=\"buyerList\"\r\n [(ngModel)]=\"fl.default_value\" name=\"buyer\" (filterInputChanged)=\"loadBuyer($event)\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 's'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #lInput=\"ngModel\">\r\n <option *ngFor=\"let lov of sqlArray[fl.form_field]\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ=='d'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <input name=\"{{fl?.form_field}}\" [(ngModel)]=\"fl.default_value\" onfocus=\"(this.type='date')\"\r\n onblur=\"(this.type='text')\" class=\"form-control\" placeholder=\"dd/mm/yyyy\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"sourceList != null\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">Source</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"source\" [(ngModel)]=\"sourceVal\">\r\n <option *ngFor=\"let option of sourceList\" value=\"{{option.k}}\">{{option.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div [ngClass]=\"isOpen == false ? 'col-md-12 custCls' : 'col-md-8 custCls'\">\r\n <div class=\"row\" *ngIf=\"searchResultDtlList.length>0\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n </form>\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size &nbsp; &nbsp;</label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\"\r\n (change)=\"onPageSizeChange(pageSize)\">\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n\r\n <button *ngIf=\"searchResultDtlList.length>0\" class=\"btn btn-default\"\r\n style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\" data-placement=\"right\"\r\n title=\"Filter results\" (click)=\"openTog();\">\r\n <span class=\"{{icon}}\" style=\"color:#3b5998;\"></span>\r\n </button>\r\n\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Download Excel\" (click)=\"exportToCSV();\">\r\n <span class=\"fa fa-file-excel-o\" style=\"color:green;\"></span>\r\n </button>\r\n\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"col-md-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search &nbsp;&nbsp;</label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div id=\"wrap\" style=\"overflow: auto;width: 100%;height: calc(100vh - 210px);\">\r\n <table class=\"displayTable\" *ngIf=\"!noData\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <ng-container *ngFor=\"let hdr of resultView ;let j=index;\">\r\n <th *ngIf=\"hdr != 'request_attr' && hdr != 'request_attrVal'\" nowrap (click)=\"setOrder(hdr,j)\">\r\n {{resultViewDtl[hdr]}}\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody style=\"height:400px;overflow:auto;\">\r\n <ng-container\r\n *ngFor=\"let pktdtl of loadResult | tableSearch:searchF | orderBy: order:reverse | paginate: { itemsPerPage: pageSize, currentPage: p }; let pkti = index ;trackBy:stock_idn\">\r\n\r\n <tr [ngClass]=\"{'even':pkti%2==0,'odd':pkti%2==1}\">\r\n <ng-container *ngFor=\"let att of resultView; let j = index;\">\r\n <td *ngIf=\"att != 'request_attr' && att != 'request_attrVal'\"\r\n style=\"max-width: 300px;white-space: normal;\"\r\n [ngStyle]=\"{'word-break' : att == 'dscr' ? 'break-word': 'normal','white-space': att != 'dscr'? 'nowrap':'normal'}\">\r\n <span>{{pktdtl[att]}}</span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n <p *ngIf=\"searchResultDtlList.length==0\" style=\"text-align: center\"><b> No Data Found !</b></p>\r\n <!-- \"max-width: 300px;white-space: normal;word-break: break-word; -->\r\n <!-- <pagination-controls (pageChange)=\"p = $event\" *ngIf=\"processDetails.length>0\" class=\"pull-right\"></pagination-controls> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actionFooter\">\r\n <button type=\"submit\" class=\"btn btn-success cBtn pull-left\" appAppNoDblClick (click)=\"onSubmit(f)\">Fetch</button>\r\n <pagination-controls style=\"background: white;\" (pageChange)=\"p=$event\" class=\"pull-right\"></pagination-controls>\r\n </div>\r\n</div>", styles: [".mb10p{margin-bottom:10px}.picn{padding:3px;margin-left:20px;font-size:16px;cursor:pointer}.divstyle{background:#fff;padding:2px}td,th{text-align:left}.ta-right{text-align:right!important}.ta-center{text-align:center!important}.p-cursor{cursor:pointer!important}.custCls{position:relative}.custCls:after{content:\"\";position:absolute;border-right:1px solid #ccc;height:85vh;width:20px;left:-25px;top:0px}.actionFooter{position:fixed;bottom:0;width:100%;text-align:right;padding:10px;background:#1b1e24}.innerD{min-height:calc(100vh - 100px);overflow:auto;background:#fff}table.wrp{table-layout:auto}\n"] }]
272
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.StockServiceService }, { type: i3.SystemServiceService }, { type: i4.CommanServiceService }]; } });
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2VhcmNoLWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXotbGliL3NyYy9saWIvd2Vic2VhcmNoLWhpc3Rvcnkvd2Vic2VhcmNoLWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXotbGliL3NyYy9saWIvd2Vic2VhcmNoLWhpc3Rvcnkvd2Vic2VhcmNoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFRekUsa0VBQWtFO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1qRCxtREFBbUQ7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU96QyxNQUFNLE9BQU8seUJBQXlCO0lBRXBDLFlBQ1MsTUFBYyxFQUNiLEtBQXFCO0lBQzdCLHNEQUFzRDtJQUM5QyxFQUF1QjtJQUMvQixvREFBb0Q7SUFDNUMsSUFBMEI7SUFDbEMsaUNBQWlDO0lBQ3pCLEVBQXdCO1FBUHpCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUVyQixPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQUV2QixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUUxQixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQU1sQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsU0FBSSxHQUFHLGNBQWMsQ0FBQztRQUV0QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxNQUFDLEdB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LEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxRQUFRO1FBQ04sZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUU1QixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzlCLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDL0IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7O3VIQW5RVSx5QkFBeUI7MkdBQXpCLHlCQUF5Qiw2REN2QnRDLG9qUkFvSk07NEZEN0hPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIGltcG9ydCB7IFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuLy8gaW1wb3J0IHsgU2VsZWN0TW9kdWxlIH0gZnJvbSAnbmctc2VsZWN0L3B1YmxpY19hcGknOyBcclxuXHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbi8vIGltcG9ydCB7IEZsYXNoTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhcjItZmxhc2gtbWVzc2FnZXMnO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbi8vIGltcG9ydCB7IE5nNExvYWRpbmdTcGlubmVyU2VydmljZSB9IGZyb20gJ25nNC1sb2FkaW5nLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBTdG9ja1NlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvY2stc2VydmljZS9zdG9jay1zZXJ2aWNlLnNlcnZpY2UnXHJcbmltcG9ydCB7IFN5c3RlbVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3lzdGVtLW1vZHVsZS9zeXN0ZW0tc2VydmljZS9zeXN0ZW0tc2VydmljZS5zZXJ2aWNlJztcclxuLy8gaW1wb3J0IHsgUGRmU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9nbG9ibGUvcGRmLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSAnYXN5bmNfaG9va3MnO1xyXG5pbXBvcnQgeyBkb2N1bWVudCB9IGZyb20gJ25neC1ib290c3RyYXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd2Vic2VhcmNoLWhpc3RvcnknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWJzZWFyY2gtaGlzdG9yeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd2Vic2VhcmNoLWhpc3RvcnkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXZWJzZWFyY2hIaXN0b3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIC8vIHByaXZhdGUgZmxhc2hNZXNzYWdlc1NlcnZpY2U6IEZsYXNoTWVzc2FnZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzczogU3RvY2tTZXJ2aWNlU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IE5nNExvYWRpbmdTcGlubmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzUzogU3lzdGVtU2VydmljZVNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIHBzOiBQZGZTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlXHJcbiAgKSB7IH1cclxuICBjRHQ7XHJcbiAgY1VybDtcclxuICBoZWFkZXI7XHJcbiAgcGFnZURlZmluYXRpb247XHJcbiAgcmVzdWx0VmlldyA9IFtdO1xyXG4gIHJlc3VsdFZpZXdEdGw7XHJcbiAgc2VhcmNoUmVzdWx0RHRsTGlzdCA9IFtdO1xyXG4gIGlzT3BlbiA9IHRydWU7XHJcbiAgaWNvbiA9ICdmYSBmYS1kZWRlbnQnO1xyXG4gIHNob3dhcnI7XHJcbiAgb3JkZXIgPSAnJztcclxuICByZXZlcnNlID0gdHJ1ZTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHAgPSAxO1xyXG4gIHBva2V5ID0gJyc7XHJcbiAgc2VhcmNoRjtcclxuICBjdXJJbmR4O1xyXG4gIGJ1eWVyTGlzdCA9IFtdO1xyXG4gIGxvdnMgPSBbXTtcclxuICBzcWxBcnJheSA9IHt9O1xyXG4gIG5vRGF0YSA9IHRydWU7XHJcbiAgc291cmNlVmFsO1xyXG4gIHNvdXJjZUxpc3Q7XHJcbiAgc3RvY2tfaWRuO1xyXG5cclxuICByZXN1bHRsZW5ndGggPSAwO1xyXG4gIHNjcm9sbERpc3RhbmNlID0gMTtcclxuICBzY3JvbGxVcERpc3RhbmNlID0gMjtcclxuICBzdGFydEluZGV4ID0gMDtcclxuICBlbmRJbmRleCA9IDMwO1xyXG4gIGxvYWRSZXN1bHQgPSBbXTtcclxuICBzZXRPcmRlcih2YWx1ZTogc3RyaW5nLCBpKSB7XHJcbiAgICB0aGlzLnNob3dhcnIgPSBpO1xyXG4gICAgaWYgKHRoaXMub3JkZXIgPT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMucmV2ZXJzZSA9ICF0aGlzLnJldmVyc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9yZGVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHApIHtcclxuICAgIGlmIChwID09ICdBbGwnKSB7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnNlYXJjaFJlc3VsdER0bExpc3QubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldExvdkxpc3QodGJsRiwgcGFnZV9pdGVtX2lkbikge1xyXG4gICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ3BhZ2VfaXRlbV9pZG4nXSA9IHBhZ2VfaXRlbV9pZG47XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnZ2V0RGF0YUJ5SXRlbUlkbic7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICB0aGlzLnN5c1MuZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmxvdnMgPSByZXNwb25zZS5rdjtcclxuICAgICAgICB0aGlzLnNxbEFycmF5W3RibEZdID0gdGhpcy5sb3ZzO1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMubG92cyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGJsRiwgdGhpcy5zcWxBcnJheSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbG9hZEJ1eWVyKHNlYXJjaFRlcm0pIHtcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydsaWtlU3RyJ10gPSBzZWFyY2hUZXJtO1xyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ2xvYWRCdXllcic7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICB0aGlzLnNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnbWFya2V0aW5nL3NlYXJjaCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuYnV5ZXJMaXN0ID0gcmVzdWx0LmJ1eWVyTGlzdC5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbG9hZEZybUZpZWxkcygpIHtcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ107Ly8nc2VhcmNoRHRsRHNjckZvcm0nO1xyXG4gICAgcmVxT2JqWydyZXF1ZXN0U3JjJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snc3JjJ107Ly8gJ29ubGluZSc7XHJcbiAgICAvLyBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ3NyYyddICE9IG51bGwgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ3NyYyddICE9IHVuZGVmaW5lZCAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snc3JjJ10gIT0gXCJcIikge1xyXG4gICAgLy8gICByZXFPYmpbJ3JlcXVlc3RTcmMnXSA9J2V6JzsvLyBbJ3FzJywgJ3FzJ107XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgcmVxT2JqWydyZXF1ZXN0U3JjJ10gPSAnb25saW5lJztcclxuICAgIC8vIH1cclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdnZXRTZWFyY2hEZXRhaWxzJztcclxuICAgIC8vIGNvbnNvbGUubG9nKHJlcU9iaik7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICB0aGlzLnNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnbWFya2V0aW5nL3NlYXJjaCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAvLyAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHJlc3VsdC5wYWdlRGVmaW5hdGlvbjtcclxuICAgICAgICB0aGlzLnNvdXJjZUxpc3QgPSByZXN1bHQuc291cmNlTGlzdDtcclxuICAgICAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uLmZvcm1fZmllbGQuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09ICdzJykge1xyXG4gICAgICAgICAgICB0aGlzLmdldExvdkxpc3QoZWxlbWVudC5mb3JtX2ZpZWxkLCBlbGVtZW50LnBhZ2VfaXRlbV9pZG4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG9wZW5Ub2coKSB7XHJcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcclxuICAgIGlmICh0aGlzLmlzT3BlbiA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuaWNvbiA9ICdmYSBmYS1kZWRlbnQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2ZhIGZhLWluZGVudCc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGV4cG9ydFRvQ1NWKCkge1xyXG4gICAgbGV0IG1vZGlmaWVkT2JqQXJyID0gdGhpcy5jcy5tb2RpZnlEYXRhQnlIZWFkZXIodGhpcy5zZWFyY2hSZXN1bHREdGxMaXN0LCB0aGlzLnJlc3VsdFZpZXcsIHRoaXMucmVzdWx0Vmlld0R0bCk7XHJcbiAgICB0aGlzLmNzLkNTVkNvbnZlcnRvcihtb2RpZmllZE9iakFyciwgXCJXZWJfU2VhcmNoX0hpc3RvcnlcIiwgdHJ1ZSlcclxuICB9XHJcbiAgbG9hZFJlc3VsdHMoZm9ybVZhbCkge1xyXG4gICAgdGhpcy5sb2FkUmVzdWx0ID0gW107XHJcbiAgICAvLyB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gICAgLy8gdGhpcy5lbmRJbmRleCA9IDMwO1xyXG4gICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm1ubWUnXTsvLydzZWFyY2hEdGxEc2NyRm9ybSc7XHJcbiAgICBpZiAoZm9ybVZhbCAhPSBudWxsKSB7XHJcbiAgICAgIC8vcmVxT2JqWydmb3JtTm1lJ10gPSAnc2VhcmNoRHRsRHNjckZvcm0nO1xyXG4gICAgICByZXFPYmpbJ2VtcElkbkxpc3QnXSA9IGZvcm1WYWwuZW1wbG95ZWUgIT0gbnVsbCA/IFtmb3JtVmFsLmVtcGxveWVlXSA6IFtdO1xyXG4gICAgICByZXFPYmpbJ2J1eWVySWRuTGlzdCddID0gZm9ybVZhbC5idXllciAhPSBudWxsID8gW2Zvcm1WYWwuYnV5ZXJdIDogW107XHJcbiAgICAgIHJlcU9ialsnZGF0ZUZyb20nXSA9IGZvcm1WYWwuZnJvbURhdGUgIT0gbnVsbCA/IHRoaXMuY3MuZm9ybWF0RGF0ZShmb3JtVmFsLmZyb21EYXRlKSA6ICcnO1xyXG4gICAgICByZXFPYmpbJ2RhdGVUbyddID0gZm9ybVZhbC50b0RhdGUgIT0gbnVsbCA/IHRoaXMuY3MuZm9ybWF0RGF0ZShmb3JtVmFsLnRvRGF0ZSkgOiAnJztcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snc3JjJ10gIT0gbnVsbCAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snc3JjJ10gIT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydzcmMnXSAhPSBcIlwiKSB7XHJcbiAgICAvLyAgIHJlcU9ialsncmVxdWVzdFNyYyddID0gJ2V6JzsvL1sncXMnLCAncXMnXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICByZXFPYmpbJ3JlcXVlc3RTcmMnXSA9ICdvbmxpbmUnO1xyXG4gICAgLy8gfVxyXG4gICAgcmVxT2JqWydyZXF1ZXN0U3JjJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snc3JjJ107XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnZ2V0U2VhcmNoRGV0YWlscyc7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIC8vIGxldCBvcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zKHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfTtcclxuICAgIHRoaXMuc3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdtYXJrZXRpbmcvc2VhcmNoJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAhPSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uID0gcmVzdWx0LnBhZ2VEZWZpbmF0aW9uO1xyXG4gICAgICAgICAgdGhpcy5yZXN1bHRWaWV3ID0gcmVzdWx0LnJlc3VsdFZpZXcgfHwgW107XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdFZpZXdEdGwgPSByZXN1bHQucmVzdWx0Vmlld0R0bCB8fCB7fTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0RHRsTGlzdCA9IHJlc3VsdC5zZWFyY2hSZXN1bHREdGxMaXN0IHx8W107XHJcblxyXG4gICAgICAgICAgdGhpcy5yZXN1bHRsZW5ndGggPSB0aGlzLnNlYXJjaFJlc3VsdER0bExpc3QubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIC8vIGlmICh0aGlzLmVuZEluZGV4ID4gdGhpcy5yZXN1bHRsZW5ndGgpXHJcbiAgICAgICAgICAgIC8vIHRoaXMuZW5kSW5kZXggPSB0aGlzLnJlc3VsdGxlbmd0aFxyXG4gICAgICAgICAgLy8gdGhpcy5hZGRJdGVtcygpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHREdGxMaXN0O1xyXG4gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3cmFwXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgdHJhbnNsYXRlID0gXCJ0cmFuc2xhdGUoMCxcIiArIHRoaXMuc2Nyb2xsVG9wICsgXCJweClcIjtcclxuICAgICAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKFwidGhlYWRcIikuc3R5bGUudHJhbnNmb3JtID0gdHJhbnNsYXRlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEYgPSB0aGlzLnNvdXJjZVZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25TY3JvbGxEb3duKCkge1xyXG4gIC8vICAgaWYgKHRoaXMuZW5kSW5kZXggPD0gdGhpcy5yZXN1bHRsZW5ndGgpXHJcbiAgLy8gICAgIHRoaXMuYWRkSXRlbXMoKVxyXG4gIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3cmFwXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZnVuY3Rpb24gKCkge1xyXG4gIC8vICAgICB2YXIgdHJhbnNsYXRlID0gXCJ0cmFuc2xhdGUoMCxcIiArIHRoaXMuc2Nyb2xsVG9wICsgXCJweClcIjtcclxuICAvLyAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKFwidGhlYWRcIikuc3R5bGUudHJhbnNmb3JtID0gdHJhbnNsYXRlO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBhZGRJdGVtcygpIHtcclxuICAvLyAgIGZvciAobGV0IGkgPSB0aGlzLnN0YXJ0SW5kZXg7IGkgPCB0aGlzLmVuZEluZGV4OyBpKyspIHtcclxuICAvLyAgICAgdGhpcy5sb2FkUmVzdWx0W2ldID0gdGhpcy5zZWFyY2hSZXN1bHREdGxMaXN0W2ldO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5zdGFydEluZGV4ID0gdGhpcy5lbmRJbmRleDtcclxuICAvLyAgIHRoaXMuZW5kSW5kZXggPSB0aGlzLmVuZEluZGV4ICsgMzA7XHJcbiAgLy8gICBpZiAodGhpcy5lbmRJbmRleCA+IHRoaXMucmVzdWx0bGVuZ3RoKSB7XHJcbiAgLy8gICAgIHRoaXMuZW5kSW5kZXggPSB0aGlzLnJlc3VsdGxlbmd0aDtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIG9uU3VibWl0KGZvcm1WYWwpIHtcclxuICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZm9ybVZhbC5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1WYWwuZm9ybS5nZXQoZmllbGQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxvYWRSZXN1bHRzKGZvcm1WYWwudmFsdWUpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIGxldCBtZGxrID0gSlNPTi5wYXJzZShBc3luY0xvY2FsU3RvcmFnZS5hcmd1bWVudHMoJ21kbEtleScpKTtcclxuICAgIGxldCBtZGxrIDtcclxuICAgIHRoaXMuY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHJcbiAgICB0aGlzLmhlYWRlciA9IHtcclxuICAgICAgJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnbW9kdWxla2V5JzogbWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG4gICAgdGhpcy5sb2FkUmVzdWx0cyhudWxsKTtcclxuICAgIHRoaXMubG9hZEZybUZpZWxkcygpO1xyXG4gICAgdGhpcy5jRHQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm10XCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmZmO1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPnt7cGFnZURlZmluYXRpb24/LnRpdGxlfX1cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImYtMTJcIj4oe3tjRHQgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbm5lckRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCIgI2Y9XCJuZ0Zvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoZilcIiBuYW1lPVwiYXBwRm9ybVwiPlxyXG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpc09wZW4gPT0gdHJ1ZSA/ICdjb2wtbWQtNCcgOiAnaGlkZGVuJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBmbCBvZiBwYWdlRGVmaW5hdGlvbj8uZm9ybV9maWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnc2InXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC01IGNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4O1wiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDM7XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQnV5ZXJzXCIgW29wdGlvbnNdPVwiYnV5ZXJMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgbmFtZT1cImJ1eWVyXCIgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJsb2FkQnV5ZXIoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICdzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNSBjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI2xJbnB1dD1cIm5nTW9kZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbG92IG9mIHNxbEFycmF5W2ZsLmZvcm1fZmllbGRdXCIgdmFsdWU9XCJ7e2xvdi5rfX1cIj57e2xvdi52fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAndCcgJiYgZmw/LmR0YV90eXA9PSdkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNSBjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgb25mb2N1cz1cIih0aGlzLnR5cGU9J2RhdGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uYmx1cj1cIih0aGlzLnR5cGU9J3RleHQnKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJkZC9tbS95eXl5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiICpuZ0lmPVwic291cmNlTGlzdCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNSBjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5Tb3VyY2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwic291cmNlXCIgWyhuZ01vZGVsKV09XCJzb3VyY2VWYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzb3VyY2VMaXN0XCIgdmFsdWU9XCJ7e29wdGlvbi5rfX1cIj57e29wdGlvbi52fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpc09wZW4gPT0gZmFsc2UgPyAnY29sLW1kLTEyIGN1c3RDbHMnIDogJ2NvbC1tZC04IGN1c3RDbHMnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWFyY2hSZXN1bHREdGxMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZGRsUGFnZXNpemVcIj5QYWdlIFNpemUgJm5ic3A7ICZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwicGFnZVNpemVcIiBbKG5nTW9kZWwpXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMFwiPjEwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjI1XCI+MjU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNTBcIj41MDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMDBcIj4xMDA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWFyY2hSZXN1bHREdGxMaXN0Lmxlbmd0aD4wXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA0cHggMTVweCA0cHggMjBweDttYXJnaW4tbGVmdDogMTBweDtcIiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRmlsdGVyIHJlc3VsdHNcIiAoY2xpY2spPVwib3BlblRvZygpO1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7e2ljb259fVwiIHN0eWxlPVwiY29sb3I6IzNiNTk5ODtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbm9EYXRhXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBzdHlsZT1cInBhZGRpbmc6IDRweCAxNXB4IDRweCAyMHB4O21hcmdpbi1sZWZ0OiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInJpZ2h0XCIgdGl0bGU9XCJSZWZyZXNoXCIgKGNsaWNrKT1cIm5nT25Jbml0KCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXJlZnJlc2hcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFub0RhdGFcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIHN0eWxlPVwicGFkZGluZzogNHB4IDE1cHggNHB4IDIwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCJcclxuICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwicmlnaHRcIiB0aXRsZT1cIkRvd25sb2FkIEV4Y2VsXCIgKGNsaWNrKT1cImV4cG9ydFRvQ1NWKCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWZpbGUtZXhjZWwtb1wiIHN0eWxlPVwiY29sb3I6Z3JlZW47XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhXCIgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4YW1wbGVJbnB1dE5hbWUyXCI+U2VhcmNoICZuYnNwOyZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleGFtcGxlSW5wdXROYW1lMlwiIG5hbWU9XCJzY2h0eHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBpZD1cIndyYXBcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvO3dpZHRoOiAxMDAlO2hlaWdodDogY2FsYygxMDB2aCAtIDIxMHB4KTtcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZGlzcGxheVRhYmxlXCIgKm5nSWY9XCIhbm9EYXRhXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwicG9zcmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhkciBvZiByZXN1bHRWaWV3IDtsZXQgaj1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJoZHIgIT0gJ3JlcXVlc3RfYXR0cicgJiYgaGRyICE9ICdyZXF1ZXN0X2F0dHJWYWwnXCIgbm93cmFwIChjbGljayk9XCJzZXRPcmRlcihoZHIsailcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7cmVzdWx0Vmlld0R0bFtoZHJdfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwicmV2ZXJzZVwiICpuZ0lmPVwic2hvd2FyciA9PT0galwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cIiFyZXZlcnNlXCIgKm5nSWY9XCJzaG93YXJyID09PSBqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IHN0eWxlPVwiaGVpZ2h0OjQwMHB4O292ZXJmbG93OmF1dG87XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwa3RkdGwgb2YgbG9hZFJlc3VsdCB8IHRhYmxlU2VhcmNoOnNlYXJjaEYgfCBvcmRlckJ5OiBvcmRlcjpyZXZlcnNlIHwgcGFnaW5hdGU6IHsgaXRlbXNQZXJQYWdlOiBwYWdlU2l6ZSwgY3VycmVudFBhZ2U6IHAgfTsgbGV0IHBrdGkgPSBpbmRleCA7dHJhY2tCeTpzdG9ja19pZG5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCJ7J2V2ZW4nOnBrdGklMj09MCwnb2RkJzpwa3RpJTI9PTF9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0IG9mIHJlc3VsdFZpZXc7IGxldCBqID0gaW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhdHQgIT0gJ3JlcXVlc3RfYXR0cicgJiYgYXR0ICE9ICdyZXF1ZXN0X2F0dHJWYWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDMwMHB4O3doaXRlLXNwYWNlOiBub3JtYWw7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyd3b3JkLWJyZWFrJyA6IGF0dCA9PSAnZHNjcicgID8gJ2JyZWFrLXdvcmQnOiAnbm9ybWFsJywnd2hpdGUtc3BhY2UnOiBhdHQgIT0gJ2RzY3InPyAnbm93cmFwJzonbm9ybWFsJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3twa3RkdGxbYXR0XX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDxwICpuZ0lmPVwic2VhcmNoUmVzdWx0RHRsTGlzdC5sZW5ndGg9PTBcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPjxiPiBObyBEYXRhIEZvdW5kICE8L2I+PC9wPlxyXG4gICAgICAgICAgICA8IS0tIFwibWF4LXdpZHRoOiAzMDBweDt3aGl0ZS1zcGFjZTogbm9ybWFsO3dvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDxwYWdpbmF0aW9uLWNvbnRyb2xzIChwYWdlQ2hhbmdlKT1cInAgPSAkZXZlbnRcIiAqbmdJZj1cInByb2Nlc3NEZXRhaWxzLmxlbmd0aD4wXCIgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+PC9wYWdpbmF0aW9uLWNvbnRyb2xzPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25Gb290ZXJcIj5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGNCdG4gcHVsbC1sZWZ0XCIgYXBwQXBwTm9EYmxDbGljayAoY2xpY2spPVwib25TdWJtaXQoZilcIj5GZXRjaDwvYnV0dG9uPlxyXG4gICAgPHBhZ2luYXRpb24tY29udHJvbHMgc3R5bGU9XCJiYWNrZ3JvdW5kOiB3aGl0ZTtcIiAocGFnZUNoYW5nZSk9XCJwPSRldmVudFwiIGNsYXNzPVwicHVsbC1yaWdodFwiPjwvcGFnaW5hdGlvbi1jb250cm9scz5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Public API Surface of ez-lib
3
+ */
4
+ export * from './lib/ez-lib.service';
5
+ export * from './lib/ez-lib.component';
6
+ export * from './lib/ez-lib.module';
7
+ export * from './lib/auth/auth.guard';
8
+ export * from './lib/admin-service/admin-service.service';
9
+ export * from './lib/assort-service/assort-service.service';
10
+ export * from './lib/attribute-definition/attribute-definition.component';
11
+ export * from './lib/analysis-search/analysis-search.component';
12
+ export * from './lib/bi-service/bi.service';
13
+ export * from './lib/call-info/callinfo.component';
14
+ export * from './lib/comman-service/comman-service.service';
15
+ export * from './lib/comman-service/share-data-service.service';
16
+ export * from './lib/contact-service/contact-service.service';
17
+ export * from './lib/contact-search/contact-search.component';
18
+ export * from './lib/ezheader/header.component';
19
+ export * from './lib/file-upload/fileupload.component';
20
+ export * from './lib/file-upload-log/file-upload-log.component';
21
+ export * from './lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component';
22
+ export * from './lib/fileupload-module/fileupload.module';
23
+ export * from './lib/fileupload-module/fileupload-routing.module';
24
+ export * from './lib/footer/footer.component';
25
+ export * from './lib/globle/upload-service.service';
26
+ export * from './lib/globle/common-pdf.service';
27
+ export * from './lib/globle/globle-env.service';
28
+ export * from './lib/globle/memo-report.service';
29
+ // export * from './lib/globle/pdf-service.service';
30
+ export * from './lib/globle/shared-services.service';
31
+ export * from './lib/header/header.component';
32
+ export * from './lib/invalid/invalid.component';
33
+ export * from './lib/logout/logout.component';
34
+ export * from './lib/menu-right/menu-right.component';
35
+ export * from './lib/pipes/number-with-commas.pipe';
36
+ export * from './lib/pipes/order-by-pipe.pipe';
37
+ export * from './lib/pipes/selectedCount';
38
+ export * from './lib/pipes/sum.pipe';
39
+ export * from './lib/pricing-service/pricing.service';
40
+ export * from './lib/pkt-data/pkt-data.component';
41
+ export * from './lib/qa-analysis/qa-analysis.component';
42
+ export * from './lib/report-format/report-format.component';
43
+ export * from './lib/sessionend/session-end.guard';
44
+ export * from './lib/stock-service/lazyload.service';
45
+ export * from './lib/stock-service/stock-service.service';
46
+ export * from './lib/system-module/system/system.component';
47
+ export * from './lib/system-module/system-service/system-service.service';
48
+ export * from './lib/system-module/system-service/upload-file.service';
49
+ export * from './lib/system-module/subform/subform.component';
50
+ export * from './lib/utility/app-no-dbl-click.directive';
51
+ export * from './lib/utility/constants';
52
+ export * from './lib/utility/formate-num-field.pipe';
53
+ export * from './lib/utility/search-pipe.pipe';
54
+ export * from './lib/utility/table-search.pipe';
55
+ export * from './lib/utility/tranform.directive';
56
+ export * from './lib/utility/contact-table-search.pipe';
57
+ export * from './lib/utility/selective-preloading-strategy';
58
+ export * from './lib/websearch-history/websearch-history.component';
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyxpREFBaUQsQ0FBQztBQUVoRSxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywrQ0FBK0MsQ0FBQztBQUU5RCxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDZFQUE2RSxDQUFDO0FBQzVGLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsb0RBQW9EO0FBQ3BELGNBQWMsc0NBQXNDLENBQUM7QUFFckQsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxjQUFjLHlDQUF5QyxDQUFDO0FBRXhELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMkNBQTJDLENBQUM7QUFHMUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywrQ0FBK0MsQ0FBQztBQUU5RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyxxREFBcUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZXotbGliXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZXotbGliLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXotbGliLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lei1saWIubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC9hdXRoLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FkbWluLXNlcnZpY2UvYWRtaW4tc2VydmljZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fzc29ydC1zZXJ2aWNlL2Fzc29ydC1zZXJ2aWNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0cmlidXRlLWRlZmluaXRpb24vYXR0cmlidXRlLWRlZmluaXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuYWx5c2lzLXNlYXJjaC9hbmFseXNpcy1zZWFyY2guY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmktc2VydmljZS9iaS5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FsbC1pbmZvL2NhbGxpbmZvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tYW4tc2VydmljZS9jb21tYW4tc2VydmljZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1hbi1zZXJ2aWNlL3NoYXJlLWRhdGEtc2VydmljZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3Qtc2VydmljZS9jb250YWN0LXNlcnZpY2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0LXNlYXJjaC9jb250YWN0LXNlYXJjaC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lemhlYWRlci9oZWFkZXIuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS11cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS11cGxvYWQtbG9nL2ZpbGUtdXBsb2FkLWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZXVwbG9hZC1tb2R1bGUvZmlsZXVwbG9hZC1kYXNoYm9hcmQvZmlsZXVwbG9hZC1kYXNoYm9hcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGV1cGxvYWQtbW9kdWxlL2ZpbGV1cGxvYWQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGV1cGxvYWQtbW9kdWxlL2ZpbGV1cGxvYWQtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbG9ibGUvdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbG9ibGUvY29tbW9uLXBkZi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsb2JsZS9nbG9ibGUtZW52LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2xvYmxlL21lbW8tcmVwb3J0LnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvZ2xvYmxlL3BkZi1zZXJ2aWNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2xvYmxlL3NoYXJlZC1zZXJ2aWNlcy5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnZhbGlkL2ludmFsaWQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9nb3V0L2xvZ291dC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51LXJpZ2h0L21lbnUtcmlnaHQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvbnVtYmVyLXdpdGgtY29tbWFzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvb3JkZXItYnktcGlwZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3NlbGVjdGVkQ291bnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvc3VtLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJpY2luZy1zZXJ2aWNlL3ByaWNpbmcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wa3QtZGF0YS9wa3QtZGF0YS5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9xYS1hbmFseXNpcy9xYS1hbmFseXNpcy5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXBvcnQtZm9ybWF0L3JlcG9ydC1mb3JtYXQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2Vzc2lvbmVuZC9zZXNzaW9uLWVuZC5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9jay1zZXJ2aWNlL2xhenlsb2FkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvY2stc2VydmljZS9zdG9jay1zZXJ2aWNlLnNlcnZpY2UnO1xuXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3N5c3RlbS1tb2R1bGUvc3lzdGVtL3N5c3RlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3lzdGVtLW1vZHVsZS9zeXN0ZW0tc2VydmljZS9zeXN0ZW0tc2VydmljZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N5c3RlbS1tb2R1bGUvc3lzdGVtLXNlcnZpY2UvdXBsb2FkLWZpbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zeXN0ZW0tbW9kdWxlL3N1YmZvcm0vc3ViZm9ybS5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXR5L2FwcC1uby1kYmwtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxpdHkvY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxpdHkvZm9ybWF0ZS1udW0tZmllbGQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXR5L3NlYXJjaC1waXBlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbGl0eS90YWJsZS1zZWFyY2gucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXR5L3RyYW5mb3JtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXR5L2NvbnRhY3QtdGFibGUtc2VhcmNoLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbGl0eS9zZWxlY3RpdmUtcHJlbG9hZGluZy1zdHJhdGVneSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3dlYnNlYXJjaC1oaXN0b3J5L3dlYnNlYXJjaC1oaXN0b3J5LmNvbXBvbmVudCc7XG5cblxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ezlibrary_v2" />
5
+ export * from './public-api';