@colijnit/transaction 12.1.19 → 12.1.20

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 (93) hide show
  1. package/bundles/colijnit-transaction.umd.js +488 -252
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +115 -111
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +116 -112
  6. package/esm2015/lib/assets/dictionary/text.properties.js +9 -1
  7. package/esm2015/lib/component/transaction-grid/transaction-base-grid/transaction-base-grid.component.js +5 -2
  8. package/esm2015/lib/component/transaction-grid/transaction-base-grid/transaction-base-grid.module.js +3 -1
  9. package/esm2015/lib/component/transaction-line/transaction-line.component.js +16 -112
  10. package/esm2015/lib/component/transaction-line/transaction-line.module.js +4 -2
  11. package/esm2015/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.js +162 -0
  12. package/esm2015/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.module.js +30 -0
  13. package/esm2015/lib/component/transaction-search/service/filter-request.service.js +1 -1
  14. package/esm2015/lib/component/transaction-search/service/transaction-search.service.js +11 -1
  15. package/esm2015/lib/component/transaction-search/transaction-filter/transaction-filter.component.js +6 -2
  16. package/esm2015/lib/component/transaction-search/transaction-filter-content-article/transaction-filter-content-article.component.js +1 -1
  17. package/esm2015/lib/component/transaction-search/transaction-filter-content-logistics/transaction-filter-content-logistics.component.js +1 -1
  18. package/esm2015/lib/component/transaction-search/transaction-filter-content-logistics/transaction-filter-content-logistics.module.js +1 -1
  19. package/esm2015/lib/component/transaction-search/transaction-filter-content-order/transaction-filter-content-order.component.js +1 -1
  20. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.component.js +86 -0
  21. package/esm2015/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.module.js +26 -0
  22. package/esm2015/lib/component/transaction-search/transaction-search-header/transaction-search-header.component.js +120 -0
  23. package/esm2015/lib/component/transaction-search/transaction-search-header/transaction-search-header.module.js +26 -0
  24. package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +49 -25
  25. package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.module.js +9 -5
  26. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.js +77 -0
  27. package/esm2015/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.module.js +28 -0
  28. package/esm2015/lib/component/transaction-search/transaction-search.component.js +37 -9
  29. package/esm2015/lib/enum/direction.enum.js +9 -0
  30. package/esm2015/lib/enum/icon.enum.js +3 -1
  31. package/esm2015/lib/enum/search-view-mode.enum.js +7 -0
  32. package/esm2015/lib/model/icon-svg.js +3 -1
  33. package/fesm2015/colijnit-transaction.js +478 -167
  34. package/fesm2015/colijnit-transaction.js.map +1 -1
  35. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/_layout.scss +0 -0
  36. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/_material-definition.scss +0 -0
  37. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/_theme.scss +0 -0
  38. package/lib/component/core/base/{style → components/default-ok-cancel-buttons/style}/material.scss +0 -0
  39. package/lib/component/tile/style/_material-definition.scss +2 -1
  40. package/lib/component/transaction-grid/transaction-base-grid/style/_layout.scss +4 -0
  41. package/lib/component/transaction-line/style/_layout.scss +0 -47
  42. package/lib/component/transaction-line/style/_theme.scss +0 -17
  43. package/lib/component/transaction-line/transaction-line.component.d.ts +3 -17
  44. package/lib/component/transaction-line-action-buttons/style/_layout.scss +106 -0
  45. package/lib/component/transaction-line-action-buttons/style/_material-definition.scss +7 -0
  46. package/lib/component/transaction-line-action-buttons/style/_theme.scss +7 -0
  47. package/lib/component/transaction-line-action-buttons/style/material.scss +3 -0
  48. package/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.component.d.ts +43 -0
  49. package/lib/component/transaction-line-action-buttons/transaction-line-action-buttons.module.d.ts +2 -0
  50. package/lib/component/transaction-search/service/transaction-search.service.d.ts +2 -0
  51. package/lib/component/transaction-search/style/_layout.scss +36 -18
  52. package/lib/component/transaction-search/style/_material-definition.scss +31 -14
  53. package/lib/component/transaction-search/style/_theme.scss +4 -0
  54. package/lib/component/transaction-search/style/material.scss +2 -1
  55. package/lib/component/transaction-search/transaction-filter/transaction-filter.component.d.ts +3 -0
  56. package/lib/component/transaction-search/transaction-filter-categories/style/_layout.scss +8 -8
  57. package/lib/component/transaction-search/transaction-filter-categories/style/_theme.scss +3 -3
  58. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/_layout.scss +6 -0
  59. package/lib/component/{transaction-search-grid → transaction-search/transaction-search-grid/transaction-search-sales-order-grid}/style/_material-definition.scss +0 -0
  60. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/_theme.scss +6 -0
  61. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/style/material.scss +7 -0
  62. package/lib/component/{transaction-search-grid/transaction-search-grid.component.d.ts → transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.component.d.ts} +1 -1
  63. package/lib/component/transaction-search/transaction-search-grid/transaction-search-sales-order-grid/transaction-search-sales-order-grid.module.d.ts +2 -0
  64. package/lib/component/transaction-search/transaction-search-header/style/_layout.scss +8 -0
  65. package/lib/component/transaction-search/{transaction-tile → transaction-search-header}/style/_material-definition.scss +0 -0
  66. package/lib/component/transaction-search/transaction-search-header/style/_theme.scss +4 -0
  67. package/lib/component/transaction-search/transaction-search-header/style/material.scss +3 -0
  68. package/lib/component/transaction-search/transaction-search-header/transaction-search-header.component.d.ts +32 -0
  69. package/lib/component/transaction-search/transaction-search-header/transaction-search-header.module.d.ts +2 -0
  70. package/lib/component/transaction-search/transaction-search-result/style/_layout.scss +84 -13
  71. package/lib/component/transaction-search/transaction-search-result/style/_theme.scss +1 -1
  72. package/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.d.ts +14 -6
  73. package/lib/component/transaction-search/{transaction-tile → transaction-search-tile/transaction-search-sales-order-tile}/style/_layout.scss +2 -4
  74. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/style/_material-definition.scss +0 -0
  75. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/style/_theme.scss +48 -0
  76. package/lib/component/transaction-search/{transaction-tile → transaction-search-tile/transaction-search-sales-order-tile}/style/material.scss +0 -0
  77. package/lib/component/transaction-search/{transaction-tile/transaction-tile.component.d.ts → transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.component.d.ts} +3 -3
  78. package/lib/component/transaction-search/transaction-search-tile/transaction-search-sales-order-tile/transaction-search-sales-order-tile.module.d.ts +2 -0
  79. package/lib/component/transaction-search/transaction-search.component.d.ts +8 -1
  80. package/lib/enum/direction.enum.d.ts +6 -0
  81. package/lib/enum/icon.enum.d.ts +2 -0
  82. package/lib/enum/search-view-mode.enum.d.ts +4 -0
  83. package/package.json +1 -1
  84. package/esm2015/lib/component/transaction-search/transaction-tile/transaction-tile.component.js +0 -77
  85. package/esm2015/lib/component/transaction-search/transaction-tile/transaction-tile.module.js +0 -28
  86. package/esm2015/lib/component/transaction-search-grid/transaction-search-grid.component.js +0 -86
  87. package/esm2015/lib/component/transaction-search-grid/transaction-search-grid.module.js +0 -26
  88. package/lib/component/transaction-search/transaction-tile/style/_theme.scss +0 -46
  89. package/lib/component/transaction-search/transaction-tile/transaction-tile.module.d.ts +0 -2
  90. package/lib/component/transaction-search-grid/style/_layout.scss +0 -6
  91. package/lib/component/transaction-search-grid/style/_theme.scss +0 -6
  92. package/lib/component/transaction-search-grid/style/material.scss +0 -7
  93. package/lib/component/transaction-search-grid/transaction-search-grid.module.d.ts +0 -2
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, ViewEncapsulation } from "@angular/core";
3
3
  import { StockStatus } from "@colijnit/transactionapi/build/enum/refcode/stock-status.enum";
4
4
  import { TransactionService } from "../../service/transaction.service";
5
5
  import { DictionaryService } from "../../service/dictionary.service";
@@ -7,6 +7,7 @@ import { Icon } from "../../enum/icon.enum";
7
7
  import { IconCacheService } from "../../service/icon-cache.service";
8
8
  import { DialogService } from "../../service/dialog.service";
9
9
  import { TransactionImageService } from "../../service/transaction-image.service";
10
+ import { TransactionLineActionButtonsComponent } from "../transaction-line-action-buttons/transaction-line-action-buttons.component";
10
11
  export class TransactionLineComponent {
11
12
  constructor(service, iconCacheService, _dialogService, _dictionaryService, _imageService) {
12
13
  this.service = service;
@@ -19,8 +20,6 @@ export class TransactionLineComponent {
19
20
  this.waitingForUserAction = new EventEmitter();
20
21
  this.sidePanelButtonClicked = new EventEmitter();
21
22
  this.stock = StockStatus.Low;
22
- this.showTransactionArticleText = false;
23
- this.showTransactionArticleTextOverview = false;
24
23
  this.mouseOver = false;
25
24
  }
26
25
  set line(value) {
@@ -62,30 +61,13 @@ export class TransactionLineComponent {
62
61
  }
63
62
  });
64
63
  }
65
- handleTransactionArticleText(event) {
66
- this.articleTextHeader = this._dictionaryService.get("TEXT_ARTICLE_BOUND", true, this.line.articleNumber);
67
- this.textToEdit = undefined;
68
- this._showArticleTextDialog();
69
- }
70
- handleTransactionArticleTextOverview(event) {
71
- this.articleTextHeader = this._dictionaryService.get("TEXT_ARTICLE_BOUND", true, this.line.articleNumber);
72
- this.textToEdit = undefined;
73
- this._showArticleTextOverviewDialog();
74
- }
75
- saveTransactionArticleLineText(transactionAddTextLineRequest) {
76
- this.service.addTextLine(transactionAddTextLineRequest.showOnDocuments, transactionAddTextLineRequest.text, 0, true, transactionAddTextLineRequest.refArticleLineNr).then(() => {
77
- this._hideArticleTextDialog();
78
- });
79
- }
80
- closeTransactionArticleText(event) {
81
- this._hideArticleTextDialog();
82
- }
83
- closeTransactionArticleTextOverview(event) {
84
- this._hideArticleTextOverviewDialog();
85
- }
86
64
  handleOpenArticleText(text) {
87
- this.textToEdit = text;
88
- this._showArticleTextDialog();
65
+ this.transactionLineActionButtons.textToEdit = text;
66
+ this.transactionLineActionButtons.showArticleTextDialog();
67
+ }
68
+ handleShowSidePanel() {
69
+ this.sidePanelButtonClicked.next();
70
+ this.waitingForUserAction.next(true);
89
71
  }
90
72
  _loadLineImage() {
91
73
  return __awaiter(this, void 0, void 0, function* () {
@@ -96,70 +78,6 @@ export class TransactionLineComponent {
96
78
  }
97
79
  });
98
80
  }
99
- // private async _confirmAction(lineOperationResponse: LineOperationResponse): Promise<void> {
100
- // this.currentReason.confirmation = await this._promptService.showYesNo(lineOperationResponse.pendingReason, " ");
101
- // this.service.resolvePendingLineReason(this.currentReason)
102
- // .then((value: LineOperationResponse) => {
103
- // this._handleLine(value);
104
- // });
105
- // }
106
- // private async _showInformation(lineOperationResponse: LineOperationResponse): Promise<void> {
107
- // await this._promptService.showOkModal(lineOperationResponse.pendingReason, " ");
108
- // this.service.resolvePendingLineReason(this.currentReason)
109
- // .then((value: LineOperationResponse) => {
110
- // this._handleLine(value);
111
- // });
112
- // }
113
- // private async _handleLine(lineOperationResponse: LineOperationResponse): Promise<void> {
114
- // if (lineOperationResponse === undefined) {
115
- // return;
116
- // }
117
- // this.currentReason = new ResolvePendingLineReasonRequest(lineOperationResponse.lineUuid,
118
- // lineOperationResponse.pendingReason, lineOperationResponse.pendingReasonType);
119
- //
120
- // switch (lineOperationResponse.pendingReasonType) {
121
- // case PendingReasonType.ABORTED:
122
- // case PendingReasonType.CANCELLED:
123
- // this.localAmount = this._line.amount;
124
- // if (lineOperationResponse.pendingReason !== "USER_DECISION") {
125
- // await this._promptService.showNotification(this._dictionaryService.get(lineOperationResponse.pendingReason), " ");
126
- // }
127
- // break;
128
- // case PendingReasonType.CONFIRMATION_NEEDED:
129
- // await this._confirmAction(lineOperationResponse);
130
- // break;
131
- // case PendingReasonType.NON_CRITICAL_DISCONTINUATION:
132
- // await this._showInformation(lineOperationResponse);
133
- // break;
134
- // case PendingReasonType.INVALID_LOGISTICS:
135
- // this.localAmount = this._line.amount;
136
- // await this._promptService.showError(this._dictionaryService.get(lineOperationResponse.pendingReason), " ");
137
- // break;
138
- // case PendingReasonType.NONE:
139
- // default:
140
- // break;
141
- // }
142
- // }
143
- _showArticleTextDialog() {
144
- this.showTransactionArticleText = true;
145
- this.waitingForUserAction.next(true);
146
- }
147
- _hideArticleTextDialog() {
148
- this.showTransactionArticleText = false;
149
- this.waitingForUserAction.next(false);
150
- }
151
- _showArticleTextOverviewDialog() {
152
- this.showTransactionArticleTextOverview = true;
153
- this.waitingForUserAction.next(true);
154
- }
155
- _hideArticleTextOverviewDialog() {
156
- this.showTransactionArticleTextOverview = false;
157
- this.waitingForUserAction.next(false);
158
- }
159
- handleShowSidePanel(event) {
160
- this.sidePanelButtonClicked.next();
161
- this.waitingForUserAction.next(true);
162
- }
163
81
  }
164
82
  TransactionLineComponent.decorators = [
165
83
  { type: Component, args: [{
@@ -190,7 +108,7 @@ TransactionLineComponent.decorators = [
190
108
  <span [textContent]="'STOCK' | localize" class="small-font"></span>
191
109
  <stock-status-indicator [model]="stock"></stock-status-indicator>
192
110
  <span [textContent]="'DELIVERY_TIME_PERIOD' | localize" class="small-font"></span>
193
- <!-- <span [textContent]="line.deliveryDate | deliveryTime"></span>-->
111
+ <!-- <span [textContent]="line.deliveryDate | deliveryTime"></span>-->
194
112
  </div>
195
113
  <div *ngIf=!preview class="transaction-line-amount">
196
114
  <co-input-number-picker class="amount-number-picker"
@@ -210,9 +128,11 @@ TransactionLineComponent.decorators = [
210
128
  <span [textContent]="line.displayNetLineTotal | coCurrency: true"></span>
211
129
  </div>
212
130
  <div *ngIf="!preview" class="transaction-line-buttons">
213
- <co-button class="transaction-line-overview-button circle" [class.show]="mouseOver || isSelected" [iconData]="iconCacheService.getIcon(icons.Txt)" (click)="handleTransactionArticleTextOverview($event)"></co-button>
214
- <co-button class="transaction-line-add-text-button circle" [class.show]="mouseOver || isSelected" [iconData]="iconCacheService.getIcon(icons.Txt)" (click)="handleTransactionArticleText($event)"></co-button>
215
- <co-button class="transaction-line-show-sidebar-button circle" [class.show]="mouseOver || isSelected" [iconData]="iconCacheService.getIcon(icons.MasterDetail)" (click)="handleShowSidePanel($event)"></co-button>
131
+ <co-transaction-line-action-buttons
132
+ [transactionLine]="line"
133
+ (waitingForUserAction)="waitingForUserAction.next($event)"
134
+ (sidePanelButtonClicked)="handleShowSidePanel()"
135
+ ></co-transaction-line-action-buttons>
216
136
  </div>
217
137
  </div>
218
138
  <div class="transaction-line-delete" *ngIf="!preview">
@@ -236,23 +156,6 @@ TransactionLineComponent.decorators = [
236
156
  </div>
237
157
  </ng-container>
238
158
  </div>
239
- <co-transaction-article-text-overview *ngIf="showTransactionArticleTextOverview"
240
- [header]="articleTextHeader | localize"
241
- [transactionLine]="line"
242
- (saveClick)="saveTransactionArticleLineText($event)"
243
- (closeClick)="closeTransactionArticleTextOverview($event)"
244
- (cancelClick)="closeTransactionArticleTextOverview($event)"
245
- ></co-transaction-article-text-overview>
246
- <co-transaction-article-text *ngIf="showTransactionArticleText"
247
- [header]="articleTextHeader | localize"
248
- [articleLineNr]="line.lineNr"
249
- [articleRef]="line.articleNumber"
250
- [transactionLine]="line"
251
- [editText]="textToEdit"
252
- (saveClick)="saveTransactionArticleLineText($event)"
253
- (closeClick)="closeTransactionArticleText($event)"
254
- (cancelClick)="closeTransactionArticleText($event)"
255
- ></co-transaction-article-text>
256
159
  `,
257
160
  encapsulation: ViewEncapsulation.None
258
161
  },] }
@@ -269,6 +172,7 @@ TransactionLineComponent.propDecorators = {
269
172
  line: [{ type: Input }],
270
173
  waitingForUserAction: [{ type: Output }],
271
174
  sidePanelButtonClicked: [{ type: Output }],
175
+ transactionLineActionButtons: [{ type: ViewChild, args: [TransactionLineActionButtonsComponent,] }],
272
176
  isText: [{ type: HostBinding, args: ["class.is-text",] }],
273
177
  isArticle: [{ type: HostBinding, args: ["class.is-article",] }],
274
178
  isSelected: [{ type: HostBinding, args: ["class.is-selected",] }, { type: Input, args: ['selected',] }],
@@ -276,4 +180,4 @@ TransactionLineComponent.propDecorators = {
276
180
  handleMouseOver: [{ type: HostListener, args: ["mouseover", ["$event"],] }],
277
181
  handleMouseLeave: [{ type: HostListener, args: ["mouseleave", ["$event"],] }]
278
182
  };
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLWxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUVsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFnR2hGLE1BQU0sT0FBTyx3QkFBd0I7SUFnRW5DLFlBQ1MsT0FBMkIsRUFDM0IsZ0JBQWtDLEVBQ2pDLGNBQTZCLEVBQzdCLGtCQUFxQyxFQUNyQyxhQUFzQztRQUp2QyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBcEVoQyxVQUFLLEdBQWdCLElBQUksQ0FBQztRQUluQyxZQUFPLEdB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QUVNLG1CQUFtQixDQUFDLEtBQWlCO1FBQzFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OztZQTNTRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlGVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBdkdPLGtCQUFrQjtZQUlsQixnQkFBZ0I7WUFFaEIsYUFBYTtZQUxiLGlCQUFpQjtZQU9qQix1QkFBdUI7OztzQkFtRzVCLFdBQVcsU0FBQyxlQUFlLGNBQzNCLEtBQUs7bUJBR0wsS0FBSzttQ0FjTCxNQUFNO3FDQUdOLE1BQU07cUJBR04sV0FBVyxTQUFDLGVBQWU7d0JBRzNCLFdBQVcsU0FBQyxrQkFBa0I7eUJBRzlCLFdBQVcsU0FBQyxtQkFBbUIsY0FDL0IsS0FBSyxTQUFDLFVBQVU7d0JBR2hCLFdBQVcsU0FBQywyQkFBMkI7OEJBS3ZDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7K0JBS3BDLFlBQVksU0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ib1wiO1xyXG5pbXBvcnQge1N0b2NrU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vcmVmY29kZS9zdG9jay1zdGF0dXMuZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtMaW5lT3BlcmF0aW9uUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tcmVzcG9uc2UuYm9cIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkFkZFRleHRMaW5lUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hZGQtdGV4dC1saW5lLXJlcXVlc3QuYm9cIjtcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5pbXBvcnQge1Jlc29sdmVMaW5lUGVuZGluZ1JlYXNvblJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcmVzb2x2ZS1wZW5kaW5nLXJlYXNvbi1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25JbWFnZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWltYWdlLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXRyYW5zYWN0aW9uLWxpbmVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmUuaXNBcnRpY2xlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtaW1hZ2VcIiBbY2xhc3MucHJldmlld109XCJwcmV2aWV3XCI+XHJcbiAgICAgICAgICAgIDxjby1pbWFnZS1kaXNwbGF5IFttb2RlbF09XCJpbWFnZVwiPjwvY28taW1hZ2UtZGlzcGxheT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibGluZS5nb29kRGVzY3JpcHRpb25cIiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb24tZGVzY3JpcHRpb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsaW5lLmdvb2REZXNjcmlwdGlvbiAmJiBsaW5lLmFydGljbGVOdW1iZXJcIiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb24tZGl2aWRlclwiPnw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImxpbmUuYXJ0aWNsZU51bWJlclwiIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1kZXNjcmlwdGlvbi1za3VcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPSFwcmV2aWV3IGNsYXNzPVwiYXJ0aWNsZS10ZXh0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJ0aWNsZS10ZXh0XCIgKm5nRm9yPVwibGV0IHRleHQgb2YgbGluZS5hcnRpY2xlVGVzdEFzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwidGV4dCB8IHNhZmVIdG1sXCIgKGRibGNsaWNrKT1cImhhbmRsZU9wZW5BcnRpY2xlVGV4dCh0ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9IXByZXZpZXcgY2xhc3M9XCJjb25maWd1cmF0aW9uLXRleHQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGluZS5jb25maWd1cmF0aW9uUmVhZGFibGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPSFwcmV2aWV3IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1zdG9ja1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ1NUT0NLJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJzbWFsbC1mb250XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3RvY2stc3RhdHVzLWluZGljYXRvciBbbW9kZWxdPVwic3RvY2tcIj48L3N0b2NrLXN0YXR1cy1pbmRpY2F0b3I+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInREVMSVZFUllfVElNRV9QRVJJT0QnIHwgbG9jYWxpemVcIiBjbGFzcz1cInNtYWxsLWZvbnRcIj48L3NwYW4+XHJcbjwhLS0gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibGluZS5kZWxpdmVyeURhdGUgfCBkZWxpdmVyeVRpbWVcIj48L3NwYW4+LS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9IXByZXZpZXcgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWFtb3VudFwiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtbnVtYmVyLXBpY2tlciBjbGFzcz1cImFtb3VudC1udW1iZXItcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibG9jYWxBbW91bnRcIiBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VMaW5lQW1vdW50KCRldmVudClcIj48L2NvLWlucHV0LW51bWJlci1waWNrZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlbGV0ZVwiICpuZ0lmPVwicHJldmlld1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLXdyYXBwZXJcIiAoY2xpY2spPVwiZGVsZXRlVHJhbnNhY3Rpb25MaW5lQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgIDxpY29uIGNsYXNzPVwiZGVsZXRlLWljb25cIiBbaWNvbl09XCJpY29ucy5DYW5jZWxcIj48L2ljb24+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInREVMRVRFX1RSQU5TQUNUSU9OX0xJTkUnIHwgbG9jYWxpemU6ZmFsc2VcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLXRvdGFsc1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibGluZS5kaXNwbGF5TmV0TGluZVRvdGFsIHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFwcmV2aWV3XCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtb3ZlcnZpZXctYnV0dG9uIGNpcmNsZVwiIFtjbGFzcy5zaG93XT1cIm1vdXNlT3ZlciB8fCBpc1NlbGVjdGVkXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5UeHQpXCIgKGNsaWNrKT1cImhhbmRsZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldygkZXZlbnQpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWFkZC10ZXh0LWJ1dHRvbiBjaXJjbGVcIiBbY2xhc3Muc2hvd109XCJtb3VzZU92ZXIgfHwgaXNTZWxlY3RlZFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVHh0KVwiIChjbGljayk9XCJoYW5kbGVUcmFuc2FjdGlvbkFydGljbGVUZXh0KCRldmVudClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtc2hvdy1zaWRlYmFyLWJ1dHRvbiBjaXJjbGVcIiBbY2xhc3Muc2hvd109XCJtb3VzZU92ZXIgfHwgaXNTZWxlY3RlZFwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuTWFzdGVyRGV0YWlsKVwiIChjbGljayk9XCJoYW5kbGVTaG93U2lkZVBhbmVsKCRldmVudClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlbGV0ZVwiICpuZ0lmPVwiIXByZXZpZXdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtd3JhcHBlclwiIChjbGljayk9XCJkZWxldGVUcmFuc2FjdGlvbkxpbmVDbGljaygpXCI+XHJcbiAgICAgICAgICAgIDxpY29uIGNsYXNzPVwiZGVsZXRlLWljb25cIiBbaWNvbl09XCJpY29ucy5DYW5jZWxcIj48L2ljb24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIidERUxFVEVfVFJBTlNBQ1RJT05fTElORScgfCBsb2NhbGl6ZTpmYWxzZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmUuaXNUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwibGluZS50ZXh0XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVsZXRlXCIgKm5nSWY9XCIhcHJldmlld1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS13cmFwcGVyXCIgKGNsaWNrKT1cImRlbGV0ZVRyYW5zYWN0aW9uTGluZUNsaWNrKClcIj5cclxuICAgICAgICAgICAgPGljb24gY2xhc3M9XCJkZWxldGUtaWNvblwiIFtpY29uXT1cImljb25zLkNhbmNlbFwiPjwvaWNvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1saW5rXCJcclxuICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiJ0RFTEVURV9UUkFOU0FDVElPTl9MSU5FJyB8IGxvY2FsaXplOmZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Y28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0LW92ZXJ2aWV3ICpuZ0lmPVwic2hvd1RyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiYXJ0aWNsZVRleHRIZWFkZXIgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbkxpbmVdPVwibGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZVRyYW5zYWN0aW9uQXJ0aWNsZUxpbmVUZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJjbG9zZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbmNlbENsaWNrKT1cImNsb3NlVHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3KCRldmVudClcIlxyXG4gICAgPjwvY28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0LW92ZXJ2aWV3PlxyXG4gICAgPGNvLXRyYW5zYWN0aW9uLWFydGljbGUtdGV4dCAqbmdJZj1cInNob3dUcmFuc2FjdGlvbkFydGljbGVUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlYWRlcl09XCJhcnRpY2xlVGV4dEhlYWRlciB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FydGljbGVMaW5lTnJdPVwibGluZS5saW5lTnJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZVJlZl09XCJsaW5lLmFydGljbGVOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cImxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdFRleHRdPVwidGV4dFRvRWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZVRyYW5zYWN0aW9uQXJ0aWNsZUxpbmVUZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJjbG9zZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJjbG9zZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHQoJGV2ZW50KVwiXHJcbiAgICA+PC9jby10cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQ+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkxpbmVDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5wcmV2aWV3XCIpXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcHJldmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbGluZSh2YWx1ZTogVHJhbnNhY3Rpb25MaW5lSW5mbykge1xyXG4gICAgdGhpcy5fbGluZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5sb2NhbEFtb3VudCA9IHRoaXMuX2xpbmUuYW1vdW50O1xyXG4gICAgdGhpcy5pc1RleHQgPSB0aGlzLl9saW5lLmlzVGV4dDtcclxuICAgIHRoaXMuaXNBcnRpY2xlID0gdGhpcy5fbGluZS5pc0FydGljbGU7XHJcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSB0aGlzLl9saW5lLmlzU2VsZWN0ZWQ7XHJcbiAgICB0aGlzLl9sb2FkTGluZUltYWdlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxpbmUoKTogVHJhbnNhY3Rpb25MaW5lSW5mbyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGluZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyB3YWl0aW5nRm9yVXNlckFjdGlvbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2lkZVBhbmVsQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pcy10ZXh0XCIpXHJcbiAgcHVibGljIGlzVGV4dDogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaXMtYXJ0aWNsZVwiKVxyXG4gIHB1YmxpYyBpc0FydGljbGU6IGJvb2xlYW47XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmlzLXNlbGVjdGVkXCIpXHJcbiAgQElucHV0KCdzZWxlY3RlZCcpXHJcbiAgcHVibGljIGlzU2VsZWN0ZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXRyYW5zYWN0aW9uLWxpbmVcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwibW91c2VvdmVyXCIsIFtcIiRldmVudFwiXSlcclxuICBwdWJsaWMgaGFuZGxlTW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLm1vdXNlT3ZlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMubW91c2VPdmVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9jYWxBbW91bnQ6IG51bWJlcjtcclxuICBwdWJsaWMgaW1hZ2U6IHN0cmluZztcclxuICBwdWJsaWMgc3RvY2s6IFN0b2NrU3RhdHVzID0gU3RvY2tTdGF0dXMuTG93O1xyXG4gIHB1YmxpYyBjdXJyZW50UmVhc29uOiBSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0O1xyXG4gIHB1YmxpYyBzaG93VHJhbnNhY3Rpb25BcnRpY2xlVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93VHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFydGljbGVUZXh0SGVhZGVyOiBzdHJpbmc7XHJcbiAgcHVibGljIHRleHRUb0VkaXQ6IHN0cmluZztcclxuICBwdWJsaWMgbW91c2VPdmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ltYWdlU2VydmljZTogVHJhbnNhY3Rpb25JbWFnZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VMaW5lQW1vdW50KGFtb3VudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodGhpcy5saW5lLnV1aWQsIGFtb3VudCkudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxvY2FsQW1vdW50ID0gdGhpcy5fbGluZS5hbW91bnQ7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuX2hhbmRsZUxpbmUodmFsdWUpLnRoZW4oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRyYW5zYWN0aW9uTGluZUNsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgZGVsZXRlTGluZTogYm9vbGVhbiA9IGF3YWl0IHRoaXMuX2RpYWxvZ1NlcnZpY2Uuc2hvd1llc05vKFwiXCIsIHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkRFTEVURV9UUkFOU0FDVElPTl9MSU5FX1FVRVNUSU9OXCIpKTtcclxuICAgIGlmIChkZWxldGVMaW5lKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkxpbmUodGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgdGhpcy5saW5lLnV1aWQpLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAvLyB0aGlzLl9oYW5kbGVMaW5lKHZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVHJhbnNhY3Rpb25BcnRpY2xlVGV4dChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVGV4dEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIlRFWFRfQVJUSUNMRV9CT1VORFwiLCB0cnVlLCB0aGlzLmxpbmUuYXJ0aWNsZU51bWJlcik7XHJcbiAgICB0aGlzLnRleHRUb0VkaXQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9zaG93QXJ0aWNsZVRleHREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUcmFuc2FjdGlvbkFydGljbGVUZXh0T3ZlcnZpZXcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuYXJ0aWNsZVRleHRIZWFkZXIgPSB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJURVhUX0FSVElDTEVfQk9VTkRcIiwgdHJ1ZSwgdGhpcy5saW5lLmFydGljbGVOdW1iZXIpO1xyXG4gICAgdGhpcy50ZXh0VG9FZGl0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5fc2hvd0FydGljbGVUZXh0T3ZlcnZpZXdEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlVHJhbnNhY3Rpb25BcnRpY2xlTGluZVRleHQodHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkVGV4dExpbmVSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuYWRkVGV4dExpbmUoXHJcbiAgICAgIHRyYW5zYWN0aW9uQWRkVGV4dExpbmVSZXF1ZXN0LnNob3dPbkRvY3VtZW50cyxcclxuICAgICAgdHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3QudGV4dCxcclxuICAgICAgMCxcclxuICAgICAgdHJ1ZSxcclxuICAgICAgdHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3QucmVmQXJ0aWNsZUxpbmVOcikudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2hpZGVBcnRpY2xlVGV4dERpYWxvZygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VUcmFuc2FjdGlvbkFydGljbGVUZXh0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9oaWRlQXJ0aWNsZVRleHREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5faGlkZUFydGljbGVUZXh0T3ZlcnZpZXdEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVPcGVuQXJ0aWNsZVRleHQodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRleHRUb0VkaXQgPSB0ZXh0O1xyXG4gICAgdGhpcy5fc2hvd0FydGljbGVUZXh0RGlhbG9nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9sb2FkTGluZUltYWdlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMubGluZSAmJiB0aGlzLmxpbmUuaXNBcnRpY2xlKSB7XHJcbiAgICAgIHRoaXMuX2ltYWdlU2VydmljZS5yZXRyaWV2ZUxpbmVJbWFnZSh0aGlzLmxpbmUpLnRoZW4oKGltYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBhc3luYyBfY29uZmlybUFjdGlvbihsaW5lT3BlcmF0aW9uUmVzcG9uc2U6IExpbmVPcGVyYXRpb25SZXNwb25zZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gIC8vICAgdGhpcy5jdXJyZW50UmVhc29uLmNvbmZpcm1hdGlvbiA9IGF3YWl0IHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd1llc05vKGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uLCBcIiBcIik7XHJcbiAgLy8gICB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcclxuICAvLyAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcclxuICAvLyAgICAgICB0aGlzLl9oYW5kbGVMaW5lKHZhbHVlKTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwcml2YXRlIGFzeW5jIF9zaG93SW5mb3JtYXRpb24obGluZU9wZXJhdGlvblJlc3BvbnNlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIGF3YWl0IHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd09rTW9kYWwobGluZU9wZXJhdGlvblJlc3BvbnNlLnBlbmRpbmdSZWFzb24sIFwiIFwiKTtcclxuICAvLyAgIHRoaXMuc2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24odGhpcy5jdXJyZW50UmVhc29uKVxyXG4gIC8vICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xyXG4gIC8vICAgICAgIHRoaXMuX2hhbmRsZUxpbmUodmFsdWUpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHByaXZhdGUgYXN5bmMgX2hhbmRsZUxpbmUobGluZU9wZXJhdGlvblJlc3BvbnNlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIGlmIChsaW5lT3BlcmF0aW9uUmVzcG9uc2UgPT09IHVuZGVmaW5lZCkge1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdChsaW5lT3BlcmF0aW9uUmVzcG9uc2UubGluZVV1aWQsXHJcbiAgLy8gICAgIGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uLCBsaW5lT3BlcmF0aW9uUmVzcG9uc2UucGVuZGluZ1JlYXNvblR5cGUpO1xyXG4gIC8vXHJcbiAgLy8gICBzd2l0Y2ggKGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uVHlwZSkge1xyXG4gIC8vICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkFCT1JURUQ6XHJcbiAgLy8gICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxyXG4gIC8vICAgICAgIHRoaXMubG9jYWxBbW91bnQgPSB0aGlzLl9saW5lLmFtb3VudDtcclxuICAvLyAgICAgICBpZiAobGluZU9wZXJhdGlvblJlc3BvbnNlLnBlbmRpbmdSZWFzb24gIT09IFwiVVNFUl9ERUNJU0lPTlwiKSB7XHJcbiAgLy8gICAgICAgICBhd2FpdCB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24odGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uKSwgXCIgXCIpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DT05GSVJNQVRJT05fTkVFREVEOlxyXG4gIC8vICAgICAgIGF3YWl0IHRoaXMuX2NvbmZpcm1BY3Rpb24obGluZU9wZXJhdGlvblJlc3BvbnNlKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05fQ1JJVElDQUxfRElTQ09OVElOVUFUSU9OOlxyXG4gIC8vICAgICAgIGF3YWl0IHRoaXMuX3Nob3dJbmZvcm1hdGlvbihsaW5lT3BlcmF0aW9uUmVzcG9uc2UpO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLklOVkFMSURfTE9HSVNUSUNTOlxyXG4gIC8vICAgICAgIHRoaXMubG9jYWxBbW91bnQgPSB0aGlzLl9saW5lLmFtb3VudDtcclxuICAvLyAgICAgICBhd2FpdCB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcih0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQobGluZU9wZXJhdGlvblJlc3BvbnNlLnBlbmRpbmdSZWFzb24pLCBcIiBcIik7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuTk9ORTpcclxuICAvLyAgICAgZGVmYXVsdDpcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dBcnRpY2xlVGV4dERpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uQXJ0aWNsZVRleHQgPSB0cnVlO1xyXG4gICAgdGhpcy53YWl0aW5nRm9yVXNlckFjdGlvbi5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZUFydGljbGVUZXh0RGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93VHJhbnNhY3Rpb25BcnRpY2xlVGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy53YWl0aW5nRm9yVXNlckFjdGlvbi5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dBcnRpY2xlVGV4dE92ZXJ2aWV3RGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93VHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3ID0gdHJ1ZTtcclxuICAgIHRoaXMud2FpdGluZ0ZvclVzZXJBY3Rpb24ubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZGVBcnRpY2xlVGV4dE92ZXJ2aWV3RGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93VHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLndhaXRpbmdGb3JVc2VyQWN0aW9uLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNob3dTaWRlUGFuZWwoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2lkZVBhbmVsQnV0dG9uQ2xpY2tlZC5uZXh0KCk7XHJcbiAgICB0aGlzLndhaXRpbmdGb3JVc2VyQWN0aW9uLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLWxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDMUYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRWxFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQ0wscUNBQXFDLEVBQ3RDLE1BQU0sOEVBQThFLENBQUM7QUFpRnRGLE1BQU0sT0FBTyx3QkFBd0I7SUE4RG5DLFlBQ1MsT0FBMkIsRUFDM0IsZ0JBQWtDLEVBQ2pDLGNBQTZCLEVBQzdCLGtCQUFxQyxFQUNyQyxhQUFzQztRQUp2QyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsa0JBQWEs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QUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO29CQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUM7S0FBQTs7O1lBeExGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEVUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEzRk8sa0JBQWtCO1lBSWxCLGdCQUFnQjtZQUVoQixhQUFhO1lBTGIsaUJBQWlCO1lBT2pCLHVCQUF1Qjs7O3NCQXVGNUIsV0FBVyxTQUFDLGVBQWUsY0FDM0IsS0FBSzttQkFHTCxLQUFLO21DQWNMLE1BQU07cUNBR04sTUFBTTsyQ0FHTixTQUFTLFNBQUMscUNBQXFDO3FCQUcvQyxXQUFXLFNBQUMsZUFBZTt3QkFHM0IsV0FBVyxTQUFDLGtCQUFrQjt5QkFHOUIsV0FBVyxTQUFDLG1CQUFtQixjQUMvQixLQUFLLFNBQUMsVUFBVTt3QkFHaEIsV0FBVyxTQUFDLDJCQUEyQjs4QkFLdkMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzsrQkFLcEMsWUFBWSxTQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcclxuaW1wb3J0IHtTdG9ja1N0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3JlZmNvZGUvc3RvY2stc3RhdHVzLmVudW1cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TGluZU9wZXJhdGlvblJlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXJlc3BvbnNlLmJvXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXRleHQtbGluZS1yZXF1ZXN0LmJvXCI7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtSZXNvbHZlTGluZVBlbmRpbmdSZWFzb25SZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3Jlc29sdmUtcGVuZGluZy1yZWFzb24tcmVxdWVzdC5ib1wiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW1hZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1pbWFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgVHJhbnNhY3Rpb25MaW5lQWN0aW9uQnV0dG9uc0NvbXBvbmVudFxyXG59IGZyb20gXCIuLi90cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zL3RyYW5zYWN0aW9uLWxpbmUtYWN0aW9uLWJ1dHRvbnMuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby10cmFuc2FjdGlvbi1saW5lXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaW5lLmlzQXJ0aWNsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWltYWdlXCIgW2NsYXNzLnByZXZpZXddPVwicHJldmlld1wiPlxyXG4gICAgICAgICAgICA8Y28taW1hZ2UtZGlzcGxheSBbbW9kZWxdPVwiaW1hZ2VcIj48L2NvLWltYWdlLWRpc3BsYXk+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImxpbmUuZ29vZERlc2NyaXB0aW9uXCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uLWRlc2NyaXB0aW9uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibGluZS5nb29kRGVzY3JpcHRpb24gJiYgbGluZS5hcnRpY2xlTnVtYmVyXCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uLWRpdmlkZXJcIj58PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJsaW5lLmFydGljbGVOdW1iZXJcIiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb24tc2t1XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj0hcHJldmlldyBjbGFzcz1cImFydGljbGUtdGV4dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFydGljbGUtdGV4dFwiICpuZ0Zvcj1cImxldCB0ZXh0IG9mIGxpbmUuYXJ0aWNsZVRlc3RBc0FycmF5XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInRleHQgfCBzYWZlSHRtbFwiIChkYmxjbGljayk9XCJoYW5kbGVPcGVuQXJ0aWNsZVRleHQodGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPSFwcmV2aWV3IGNsYXNzPVwiY29uZmlndXJhdGlvbi10ZXh0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxpbmUuY29uZmlndXJhdGlvblJlYWRhYmxlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj0hcHJldmlldyBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtc3RvY2tcIj5cclxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidTVE9DSycgfCBsb2NhbGl6ZVwiIGNsYXNzPVwic21hbGwtZm9udFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHN0b2NrLXN0YXR1cy1pbmRpY2F0b3IgW21vZGVsXT1cInN0b2NrXCI+PC9zdG9jay1zdGF0dXMtaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiJ0RFTElWRVJZX1RJTUVfUEVSSU9EJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJzbWFsbC1mb250XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImxpbmUuZGVsaXZlcnlEYXRlIHwgZGVsaXZlcnlUaW1lXCI+PC9zcGFuPi0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPSFwcmV2aWV3IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1hbW91bnRcIj5cclxuICAgICAgICAgICAgPGNvLWlucHV0LW51bWJlci1waWNrZXIgY2xhc3M9XCJhbW91bnQtbnVtYmVyLXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImxvY2FsQW1vdW50XCIgW21pbl09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGluZUFtb3VudCgkZXZlbnQpXCI+PC9jby1pbnB1dC1udW1iZXItcGlja2VyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1kZWxldGVcIiAqbmdJZj1cInByZXZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS13cmFwcGVyXCIgKGNsaWNrKT1cImRlbGV0ZVRyYW5zYWN0aW9uTGluZUNsaWNrKClcIj5cclxuICAgICAgICAgICAgICA8aWNvbiBjbGFzcz1cImRlbGV0ZS1pY29uXCIgW2ljb25dPVwiaWNvbnMuQ2FuY2VsXCI+PC9pY29uPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiJ0RFTEVURV9UUkFOU0FDVElPTl9MSU5FJyB8IGxvY2FsaXplOmZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS10b3RhbHNcIj5cclxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImxpbmUuZGlzcGxheU5ldExpbmVUb3RhbCB8IGNvQ3VycmVuY3k6IHRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcHJldmlld1wiIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1idXR0b25zXCI+XHJcbiAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zXHJcbiAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uTGluZV09XCJsaW5lXCJcclxuICAgICAgICAgICAgICAod2FpdGluZ0ZvclVzZXJBY3Rpb24pPVwid2FpdGluZ0ZvclVzZXJBY3Rpb24ubmV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoc2lkZVBhbmVsQnV0dG9uQ2xpY2tlZCk9XCJoYW5kbGVTaG93U2lkZVBhbmVsKClcIlxyXG4gICAgICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVsZXRlXCIgKm5nSWY9XCIhcHJldmlld1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS13cmFwcGVyXCIgKGNsaWNrKT1cImRlbGV0ZVRyYW5zYWN0aW9uTGluZUNsaWNrKClcIj5cclxuICAgICAgICAgICAgPGljb24gY2xhc3M9XCJkZWxldGUtaWNvblwiIFtpY29uXT1cImljb25zLkNhbmNlbFwiPjwvaWNvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZS1saW5rXCJcclxuICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiJ0RFTEVURV9UUkFOU0FDVElPTl9MSU5FJyB8IGxvY2FsaXplOmZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGluZS5pc1RleHRcIj5cclxuICAgICAgICA8ZGl2IFt0ZXh0Q29udGVudF09XCJsaW5lLnRleHRcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1kZWxldGVcIiAqbmdJZj1cIiFwcmV2aWV3XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLXdyYXBwZXJcIiAoY2xpY2spPVwiZGVsZXRlVHJhbnNhY3Rpb25MaW5lQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICA8aWNvbiBjbGFzcz1cImRlbGV0ZS1pY29uXCIgW2ljb25dPVwiaWNvbnMuQ2FuY2VsXCI+PC9pY29uPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInREVMRVRFX1RSQU5TQUNUSU9OX0xJTkUnIHwgbG9jYWxpemU6ZmFsc2VcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uTGluZUNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLnByZXZpZXdcIilcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBsaW5lKHZhbHVlOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSB7XHJcbiAgICB0aGlzLl9saW5lID0gdmFsdWU7XHJcbiAgICB0aGlzLmxvY2FsQW1vdW50ID0gdGhpcy5fbGluZS5hbW91bnQ7XHJcbiAgICB0aGlzLmlzVGV4dCA9IHRoaXMuX2xpbmUuaXNUZXh0O1xyXG4gICAgdGhpcy5pc0FydGljbGUgPSB0aGlzLl9saW5lLmlzQXJ0aWNsZTtcclxuICAgIHRoaXMuaXNTZWxlY3RlZCA9IHRoaXMuX2xpbmUuaXNTZWxlY3RlZDtcclxuICAgIHRoaXMuX2xvYWRMaW5lSW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbGluZSgpOiBUcmFuc2FjdGlvbkxpbmVJbmZvIHtcclxuICAgIHJldHVybiB0aGlzLl9saW5lO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHdhaXRpbmdGb3JVc2VyQWN0aW9uOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzaWRlUGFuZWxCdXR0b25DbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHJhbnNhY3Rpb25MaW5lQWN0aW9uQnV0dG9uc0NvbXBvbmVudClcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25MaW5lQWN0aW9uQnV0dG9uczogVHJhbnNhY3Rpb25MaW5lQWN0aW9uQnV0dG9uc0NvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaXMtdGV4dFwiKVxyXG4gIHB1YmxpYyBpc1RleHQ6IGJvb2xlYW47XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmlzLWFydGljbGVcIilcclxuICBwdWJsaWMgaXNBcnRpY2xlOiBib29sZWFuO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pcy1zZWxlY3RlZFwiKVxyXG4gIEBJbnB1dCgnc2VsZWN0ZWQnKVxyXG4gIHB1YmxpYyBpc1NlbGVjdGVkOiBib29sZWFuO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1saW5lXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlb3ZlclwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlT3ZlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5tb3VzZU92ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIHB1YmxpYyBoYW5kbGVNb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLm1vdXNlT3ZlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2FsQW1vdW50OiBudW1iZXI7XHJcbiAgcHVibGljIGltYWdlOiBzdHJpbmc7XHJcbiAgcHVibGljIHN0b2NrOiBTdG9ja1N0YXR1cyA9IFN0b2NrU3RhdHVzLkxvdztcclxuICBwdWJsaWMgbW91c2VPdmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2ltYWdlU2VydmljZTogVHJhbnNhY3Rpb25JbWFnZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VMaW5lQW1vdW50KGFtb3VudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodGhpcy5saW5lLnV1aWQsIGFtb3VudCkudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxvY2FsQW1vdW50ID0gdGhpcy5fbGluZS5hbW91bnQ7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuX2hhbmRsZUxpbmUodmFsdWUpLnRoZW4oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZVRyYW5zYWN0aW9uTGluZUNsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgZGVsZXRlTGluZTogYm9vbGVhbiA9IGF3YWl0IHRoaXMuX2RpYWxvZ1NlcnZpY2Uuc2hvd1llc05vKFwiXCIsIHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkRFTEVURV9UUkFOU0FDVElPTl9MSU5FX1FVRVNUSU9OXCIpKTtcclxuICAgIGlmIChkZWxldGVMaW5lKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGVUcmFuc2FjdGlvbkxpbmUodGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCwgdGhpcy5saW5lLnV1aWQpLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAvLyB0aGlzLl9oYW5kbGVMaW5lKHZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlT3BlbkFydGljbGVUZXh0KHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkxpbmVBY3Rpb25CdXR0b25zLnRleHRUb0VkaXQgPSB0ZXh0O1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkxpbmVBY3Rpb25CdXR0b25zLnNob3dBcnRpY2xlVGV4dERpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNob3dTaWRlUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpZGVQYW5lbEJ1dHRvbkNsaWNrZWQubmV4dCgpO1xyXG4gICAgdGhpcy53YWl0aW5nRm9yVXNlckFjdGlvbi5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfbG9hZExpbmVJbWFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmxpbmUgJiYgdGhpcy5saW5lLmlzQXJ0aWNsZSkge1xyXG4gICAgICB0aGlzLl9pbWFnZVNlcnZpY2UucmV0cmlldmVMaW5lSW1hZ2UodGhpcy5saW5lKS50aGVuKChpbWFnZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbWFnZSA9IGltYWdlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1BY3Rpb24obGluZU9wZXJhdGlvblJlc3BvbnNlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIHRoaXMuY3VycmVudFJlYXNvbi5jb25maXJtYXRpb24gPSBhd2FpdCB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dZZXNObyhsaW5lT3BlcmF0aW9uUmVzcG9uc2UucGVuZGluZ1JlYXNvbiwgXCIgXCIpO1xyXG4gIC8vICAgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXHJcbiAgLy8gICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5faGFuZGxlTGluZSh2YWx1ZSk7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBhc3luYyBfc2hvd0luZm9ybWF0aW9uKGxpbmVPcGVyYXRpb25SZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgLy8gICBhd2FpdCB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dPa01vZGFsKGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uLCBcIiBcIik7XHJcbiAgLy8gICB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcclxuICAvLyAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcclxuICAvLyAgICAgICB0aGlzLl9oYW5kbGVMaW5lKHZhbHVlKTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwcml2YXRlIGFzeW5jIF9oYW5kbGVMaW5lKGxpbmVPcGVyYXRpb25SZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgLy8gICBpZiAobGluZU9wZXJhdGlvblJlc3BvbnNlID09PSB1bmRlZmluZWQpIHtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QobGluZU9wZXJhdGlvblJlc3BvbnNlLmxpbmVVdWlkLFxyXG4gIC8vICAgICBsaW5lT3BlcmF0aW9uUmVzcG9uc2UucGVuZGluZ1JlYXNvbiwgbGluZU9wZXJhdGlvblJlc3BvbnNlLnBlbmRpbmdSZWFzb25UeXBlKTtcclxuICAvL1xyXG4gIC8vICAgc3dpdGNoIChsaW5lT3BlcmF0aW9uUmVzcG9uc2UucGVuZGluZ1JlYXNvblR5cGUpIHtcclxuICAvLyAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5BQk9SVEVEOlxyXG4gIC8vICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNBTkNFTExFRDpcclxuICAvLyAgICAgICB0aGlzLmxvY2FsQW1vdW50ID0gdGhpcy5fbGluZS5hbW91bnQ7XHJcbiAgLy8gICAgICAgaWYgKGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uICE9PSBcIlVTRVJfREVDSVNJT05cIikge1xyXG4gIC8vICAgICAgICAgYXdhaXQgdGhpcy5fcHJvbXB0U2VydmljZS5zaG93Tm90aWZpY2F0aW9uKHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChsaW5lT3BlcmF0aW9uUmVzcG9uc2UucGVuZGluZ1JlYXNvbiksIFwiIFwiKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ09ORklSTUFUSU9OX05FRURFRDpcclxuICAvLyAgICAgICBhd2FpdCB0aGlzLl9jb25maXJtQWN0aW9uKGxpbmVPcGVyYXRpb25SZXNwb25zZSk7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuTk9OX0NSSVRJQ0FMX0RJU0NPTlRJTlVBVElPTjpcclxuICAvLyAgICAgICBhd2FpdCB0aGlzLl9zaG93SW5mb3JtYXRpb24obGluZU9wZXJhdGlvblJlc3BvbnNlKTtcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5JTlZBTElEX0xPR0lTVElDUzpcclxuICAvLyAgICAgICB0aGlzLmxvY2FsQW1vdW50ID0gdGhpcy5fbGluZS5hbW91bnQ7XHJcbiAgLy8gICAgICAgYXdhaXQgdGhpcy5fcHJvbXB0U2VydmljZS5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KGxpbmVPcGVyYXRpb25SZXNwb25zZS5wZW5kaW5nUmVhc29uKSwgXCIgXCIpO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTkU6XHJcbiAgLy8gICAgIGRlZmF1bHQ6XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==
@@ -6,6 +6,7 @@ import { TransactionArticleTextModule } from "../shared/transaction-article-text
6
6
  import { TransactionArticleTextOverviewModule } from "../shared/transaction-article-text-overview/transaction-article-text-overview.module";
7
7
  import { CoreModule } from "../core/core.module";
8
8
  import { PipeModule } from "../../pipe/pipe.module";
9
+ import { TransactionLineActionButtonsModule } from "../transaction-line-action-buttons/transaction-line-action-buttons.module";
9
10
  export class TransactionLineModule {
10
11
  }
11
12
  TransactionLineModule.decorators = [
@@ -17,7 +18,8 @@ TransactionLineModule.decorators = [
17
18
  InputNumberPickerModule,
18
19
  TransactionArticleTextModule,
19
20
  TransactionArticleTextOverviewModule,
20
- PipeModule
21
+ PipeModule,
22
+ TransactionLineActionButtonsModule
21
23
  ],
22
24
  declarations: [
23
25
  TransactionLineComponent
@@ -27,4 +29,4 @@ TransactionLineModule.decorators = [
27
29
  ]
28
30
  },] }
29
31
  ];
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLWxpbmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUMsb0NBQW9DLEVBQUMsTUFBTSxzRkFBc0YsQ0FBQztBQUMxSSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBbUJsRCxNQUFNLE9BQU8scUJBQXFCOzs7WUFqQmpDLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixVQUFVO29CQUNWLFlBQVk7b0JBQ1osdUJBQXVCO29CQUN2Qiw0QkFBNEI7b0JBQzVCLG9DQUFvQztvQkFDcEMsVUFBVTtpQkFDYjtnQkFDSCxZQUFZLEVBQUU7b0JBQ1osd0JBQXdCO2lCQUN6QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1Asd0JBQXdCO2lCQUN6QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVDb21wb25lbnR9IGZyb20gXCIuL3RyYW5zYWN0aW9uLWxpbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJbnB1dE51bWJlclBpY2tlck1vZHVsZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkFydGljbGVUZXh0TW9kdWxlfSBmcm9tIFwiLi4vc2hhcmVkL3RyYW5zYWN0aW9uLWFydGljbGUtdGV4dC90cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQubW9kdWxlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3TW9kdWxlfSBmcm9tIFwiLi4vc2hhcmVkL3RyYW5zYWN0aW9uLWFydGljbGUtdGV4dC1vdmVydmlldy90cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQtb3ZlcnZpZXcubW9kdWxlXCI7XHJcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcclxuaW1wb3J0IHtQaXBlTW9kdWxlfSBmcm9tIFwiLi4vLi4vcGlwZS9waXBlLm1vZHVsZVwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgQ29yZU1vZHVsZSxcclxuICAgICAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgSW5wdXROdW1iZXJQaWNrZXJNb2R1bGUsXHJcbiAgICAgICAgVHJhbnNhY3Rpb25BcnRpY2xlVGV4dE1vZHVsZSxcclxuICAgICAgICBUcmFuc2FjdGlvbkFydGljbGVUZXh0T3ZlcnZpZXdNb2R1bGUsXHJcbiAgICAgICAgUGlwZU1vZHVsZVxyXG4gICAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRyYW5zYWN0aW9uTGluZUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgVHJhbnNhY3Rpb25MaW5lQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25MaW5lTW9kdWxlIHt9XHJcbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lL3RyYW5zYWN0aW9uLWxpbmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUMsb0NBQW9DLEVBQUMsTUFBTSxzRkFBc0YsQ0FBQztBQUMxSSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFDTCxrQ0FBa0MsRUFDbkMsTUFBTSwyRUFBMkUsQ0FBQztBQW9CbkYsTUFBTSxPQUFPLHFCQUFxQjs7O1lBbEJqQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixZQUFZO29CQUNaLHVCQUF1QjtvQkFDdkIsNEJBQTRCO29CQUM1QixvQ0FBb0M7b0JBQ3BDLFVBQVU7b0JBQ1Ysa0NBQWtDO2lCQUNuQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osd0JBQXdCO2lCQUN6QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1Asd0JBQXdCO2lCQUN6QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVDb21wb25lbnR9IGZyb20gXCIuL3RyYW5zYWN0aW9uLWxpbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJbnB1dE51bWJlclBpY2tlck1vZHVsZX0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkFydGljbGVUZXh0TW9kdWxlfSBmcm9tIFwiLi4vc2hhcmVkL3RyYW5zYWN0aW9uLWFydGljbGUtdGV4dC90cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQubW9kdWxlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3TW9kdWxlfSBmcm9tIFwiLi4vc2hhcmVkL3RyYW5zYWN0aW9uLWFydGljbGUtdGV4dC1vdmVydmlldy90cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQtb3ZlcnZpZXcubW9kdWxlXCI7XHJcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcclxuaW1wb3J0IHtQaXBlTW9kdWxlfSBmcm9tIFwiLi4vLi4vcGlwZS9waXBlLm1vZHVsZVwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uTGluZUFjdGlvbkJ1dHRvbnNNb2R1bGVcclxufSBmcm9tIFwiLi4vdHJhbnNhY3Rpb24tbGluZS1hY3Rpb24tYnV0dG9ucy90cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zLm1vZHVsZVwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb3JlTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgSW5wdXROdW1iZXJQaWNrZXJNb2R1bGUsXHJcbiAgICBUcmFuc2FjdGlvbkFydGljbGVUZXh0TW9kdWxlLFxyXG4gICAgVHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3TW9kdWxlLFxyXG4gICAgUGlwZU1vZHVsZSxcclxuICAgIFRyYW5zYWN0aW9uTGluZUFjdGlvbkJ1dHRvbnNNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgVHJhbnNhY3Rpb25MaW5lQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBUcmFuc2FjdGlvbkxpbmVDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkxpbmVNb2R1bGUge31cclxuIl19
@@ -0,0 +1,162 @@
1
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ import { TransactionService } from "../../service/transaction.service";
3
+ import { TransactionKind } from "@colijnit/transactionapi/build/enum/transaction-kind.enum";
4
+ import { Icon } from "../../enum/icon.enum";
5
+ import { DictionaryService } from "../../service/dictionary.service";
6
+ import { IconCacheService } from "../../service/icon-cache.service";
7
+ import { Direction } from "../../enum/direction.enum";
8
+ export class TransactionLineActionButtonsComponent {
9
+ constructor(iconCacheService, _transactionService, _dictionaryService) {
10
+ this.iconCacheService = iconCacheService;
11
+ this._transactionService = _transactionService;
12
+ this._dictionaryService = _dictionaryService;
13
+ this.icons = Icon;
14
+ this.alignDirection = Direction.Down;
15
+ this.waitingForUserAction = new EventEmitter();
16
+ this.sidePanelButtonClicked = new EventEmitter();
17
+ this.showActionButtons = false;
18
+ this.showActionButtonsDelayed = false;
19
+ this.showTransactionArticleText = false;
20
+ this.showTransactionArticleTextOverview = false;
21
+ }
22
+ showClass() {
23
+ return true;
24
+ }
25
+ ngOnInit() {
26
+ this.transactionKind = this._transactionService.currentTransaction.transactionInfo.transactionKind;
27
+ }
28
+ handleShowHideClick() {
29
+ this.showActionButtons = !this.showActionButtons;
30
+ setTimeout(() => {
31
+ this.showActionButtonsDelayed = !this.showActionButtonsDelayed;
32
+ }, 1);
33
+ }
34
+ handleTransactionArticleTextOverview() {
35
+ this.articleTextHeader = this._dictionaryService.get("TEXT_ARTICLE_BOUND", true, this.transactionLine.articleNumber);
36
+ this.textToEdit = undefined;
37
+ this._showArticleTextOverviewDialog();
38
+ this.showActionButtons = false;
39
+ this.showActionButtonsDelayed = false;
40
+ }
41
+ handleTransactionArticleText() {
42
+ this.articleTextHeader = this._dictionaryService.get("TEXT_ARTICLE_BOUND", true, this.transactionLine.articleNumber);
43
+ this.textToEdit = undefined;
44
+ this.showArticleTextDialog();
45
+ this.showActionButtons = false;
46
+ this.showActionButtonsDelayed = false;
47
+ }
48
+ handleShowSidePanel() {
49
+ this.sidePanelButtonClicked.next(this.transactionLine);
50
+ this.waitingForUserAction.next(true);
51
+ this.showActionButtons = false;
52
+ this.showActionButtonsDelayed = false;
53
+ }
54
+ showOverviewButton() {
55
+ return this.transactionKind === TransactionKind.PurchaseOrder ||
56
+ this.transactionKind === TransactionKind.SalesOrder;
57
+ }
58
+ showAddTextButton() {
59
+ return this.transactionKind === TransactionKind.PurchaseOrder ||
60
+ this.transactionKind === TransactionKind.SalesOrder;
61
+ }
62
+ showSidebarButton() {
63
+ return this.transactionKind === TransactionKind.PurchaseOrder ||
64
+ this.transactionKind === TransactionKind.SalesOrder;
65
+ }
66
+ saveTransactionArticleLineText(transactionAddTextLineRequest) {
67
+ this._transactionService.addTextLine(transactionAddTextLineRequest.showOnDocuments, transactionAddTextLineRequest.text, 0, true, transactionAddTextLineRequest.refArticleLineNr).then(() => {
68
+ this._hideArticleTextDialog();
69
+ });
70
+ }
71
+ closeTransactionArticleText(event) {
72
+ this._hideArticleTextDialog();
73
+ }
74
+ closeTransactionArticleTextOverview(event) {
75
+ this._hideArticleTextOverviewDialog();
76
+ }
77
+ showArticleTextDialog() {
78
+ this.showTransactionArticleText = true;
79
+ this.waitingForUserAction.next(true);
80
+ }
81
+ _hideArticleTextDialog() {
82
+ this.showTransactionArticleText = false;
83
+ this.waitingForUserAction.next(false);
84
+ }
85
+ _showArticleTextOverviewDialog() {
86
+ this.showTransactionArticleTextOverview = true;
87
+ this.waitingForUserAction.next(true);
88
+ }
89
+ _hideArticleTextOverviewDialog() {
90
+ this.showTransactionArticleTextOverview = false;
91
+ this.waitingForUserAction.next(false);
92
+ }
93
+ }
94
+ TransactionLineActionButtonsComponent.decorators = [
95
+ { type: Component, args: [{
96
+ selector: "co-transaction-line-action-buttons",
97
+ template: `
98
+ <div class="transaction-line-action-buttons-wrapper">
99
+ <div class="show-hide-button">
100
+ <icon [icon]="icons.ThickLines" (click)="handleShowHideClick()"></icon>
101
+ </div>
102
+
103
+ <div class="action-buttons-container" clickOutside
104
+ *ngIf="showActionButtons"
105
+ [ngClass]="alignDirection"
106
+ (clickOutside)="handleShowHideClick()">
107
+
108
+ <co-button *ngIf="showOverviewButton()"
109
+ class="transaction-line-overview-button circle"
110
+ [class.show]="showActionButtonsDelayed"
111
+ [iconData]="iconCacheService.getIcon(icons.Txt)"
112
+ (click)="handleTransactionArticleTextOverview()"></co-button>
113
+
114
+ <co-button *ngIf="showAddTextButton()"
115
+ class="transaction-line-add-text-button circle"
116
+ [class.show]="showActionButtonsDelayed"
117
+ [iconData]="iconCacheService.getIcon(icons.Txt)"
118
+ (click)="handleTransactionArticleText()"></co-button>
119
+
120
+ <co-button *ngIf="showSidebarButton()"
121
+ class="transaction-line-show-sidebar-button circle"
122
+ [class.show]="showActionButtonsDelayed"
123
+ [iconData]="iconCacheService.getIcon(icons.MasterDetail)"
124
+ (click)="handleShowSidePanel()"></co-button>
125
+ </div>
126
+ </div>
127
+
128
+ <co-transaction-article-text-overview *ngIf="showTransactionArticleTextOverview"
129
+ [header]="articleTextHeader | localize"
130
+ [transactionLine]="transactionLine"
131
+ (saveClick)="saveTransactionArticleLineText($event)"
132
+ (closeClick)="closeTransactionArticleTextOverview($event)"
133
+ (cancelClick)="closeTransactionArticleTextOverview($event)"
134
+ ></co-transaction-article-text-overview>
135
+
136
+ <co-transaction-article-text *ngIf="showTransactionArticleText"
137
+ [header]="articleTextHeader | localize"
138
+ [articleLineNr]="transactionLine.lineNr"
139
+ [articleRef]="transactionLine.articleNumber"
140
+ [transactionLine]="transactionLine"
141
+ [editText]="textToEdit"
142
+ (saveClick)="saveTransactionArticleLineText($event)"
143
+ (closeClick)="closeTransactionArticleText($event)"
144
+ (cancelClick)="closeTransactionArticleText($event)"
145
+ ></co-transaction-article-text>
146
+ `,
147
+ encapsulation: ViewEncapsulation.None
148
+ },] }
149
+ ];
150
+ TransactionLineActionButtonsComponent.ctorParameters = () => [
151
+ { type: IconCacheService },
152
+ { type: TransactionService },
153
+ { type: DictionaryService }
154
+ ];
155
+ TransactionLineActionButtonsComponent.propDecorators = {
156
+ transactionLine: [{ type: Input }],
157
+ alignDirection: [{ type: Input }],
158
+ waitingForUserAction: [{ type: Output }],
159
+ sidePanelButtonClicked: [{ type: Output }],
160
+ showClass: [{ type: HostBinding, args: ["class.co-transaction-line-action-buttons",] }]
161
+ };
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS1hY3Rpb24tYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zL3RyYW5zYWN0aW9uLWxpbmUtYWN0aW9uLWJ1dHRvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUMxRixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBMERwRCxNQUFNLE9BQU8scUNBQXFDO0lBNEJoRCxZQUNTLGdCQUFrQyxFQUNqQyxtQkFBdUMsRUFDdkMsa0JBQXFDO1FBRnRDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBOUIvQixVQUFLLEdBQWdCLElBQUksQ0FBQztRQU1uQyxtQkFBYyxHQUFjLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFHM0MseUJBQW9CLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFHMUUsMkJBQXNCLEdBQXNDLElB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1raW5kLmVudW1cIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RGlyZWN0aW9ufSBmcm9tIFwiLi4vLi4vZW51bS9kaXJlY3Rpb24uZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXRleHQtbGluZS1yZXF1ZXN0LmJvXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby10cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zLXdyYXBwZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNob3ctaGlkZS1idXR0b25cIj5cclxuICAgICAgICA8aWNvbiBbaWNvbl09XCJpY29ucy5UaGlja0xpbmVzXCIgKGNsaWNrKT1cImhhbmRsZVNob3dIaWRlQ2xpY2soKVwiPjwvaWNvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMtY29udGFpbmVyXCIgY2xpY2tPdXRzaWRlXHJcbiAgICAgICAgICAgKm5nSWY9XCJzaG93QWN0aW9uQnV0dG9uc1wiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwiYWxpZ25EaXJlY3Rpb25cIlxyXG4gICAgICAgICAgIChjbGlja091dHNpZGUpPVwiaGFuZGxlU2hvd0hpZGVDbGljaygpXCI+XHJcblxyXG4gICAgICAgIDxjby1idXR0b24gKm5nSWY9XCJzaG93T3ZlcnZpZXdCdXR0b24oKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1vdmVydmlldy1idXR0b24gY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zaG93XT1cInNob3dBY3Rpb25CdXR0b25zRGVsYXllZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlR4dClcIlxyXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldygpXCI+PC9jby1idXR0b24+XHJcblxyXG4gICAgICAgIDxjby1idXR0b24gKm5nSWY9XCJzaG93QWRkVGV4dEJ1dHRvbigpXCJcclxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1hZGQtdGV4dC1idXR0b24gY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zaG93XT1cInNob3dBY3Rpb25CdXR0b25zRGVsYXllZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlR4dClcIlxyXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHQoKVwiPjwvY28tYnV0dG9uPlxyXG5cclxuICAgICAgICA8Y28tYnV0dG9uICpuZ0lmPVwic2hvd1NpZGViYXJCdXR0b24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtc2hvdy1zaWRlYmFyLWJ1dHRvbiBjaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwic2hvd0FjdGlvbkJ1dHRvbnNEZWxheWVkXCJcclxuICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuTWFzdGVyRGV0YWlsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlU2hvd1NpZGVQYW5lbCgpXCI+PC9jby1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGNvLXRyYW5zYWN0aW9uLWFydGljbGUtdGV4dC1vdmVydmlldyAqbmdJZj1cInNob3dUcmFuc2FjdGlvbkFydGljbGVUZXh0T3ZlcnZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyXT1cImFydGljbGVUZXh0SGVhZGVyIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cInRyYW5zYWN0aW9uTGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZVRyYW5zYWN0aW9uQXJ0aWNsZUxpbmVUZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJjbG9zZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbmNlbENsaWNrKT1cImNsb3NlVHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3KCRldmVudClcIlxyXG4gICAgPjwvY28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0LW92ZXJ2aWV3PlxyXG5cclxuICAgIDxjby10cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQgKm5nSWY9XCJzaG93VHJhbnNhY3Rpb25BcnRpY2xlVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiYXJ0aWNsZVRleHRIZWFkZXIgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlTGluZU5yXT1cInRyYW5zYWN0aW9uTGluZS5saW5lTnJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZVJlZl09XCJ0cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbkxpbmVdPVwidHJhbnNhY3Rpb25MaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRUZXh0XT1cInRleHRUb0VkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZUNsaWNrKT1cInNhdmVUcmFuc2FjdGlvbkFydGljbGVMaW5lVGV4dCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VUcmFuc2FjdGlvbkFydGljbGVUZXh0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwiY2xvc2VUcmFuc2FjdGlvbkFydGljbGVUZXh0KCRldmVudClcIlxyXG4gICAgPjwvY28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0PlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25MaW5lQWN0aW9uQnV0dG9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWxpZ25EaXJlY3Rpb246IERpcmVjdGlvbiA9IERpcmVjdGlvbi5Eb3duO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgd2FpdGluZ0ZvclVzZXJBY3Rpb246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNpZGVQYW5lbEJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tbGluZS1hY3Rpb24tYnV0dG9uc1wiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93QWN0aW9uQnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93QWN0aW9uQnV0dG9uc0RlbGF5ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdHJhbnNhY3Rpb25LaW5kOiBUcmFuc2FjdGlvbktpbmQ7XHJcbiAgcHVibGljIHNob3dUcmFuc2FjdGlvbkFydGljbGVUZXh0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dUcmFuc2FjdGlvbkFydGljbGVUZXh0T3ZlcnZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYXJ0aWNsZVRleHRIZWFkZXI6IHN0cmluZztcclxuICBwdWJsaWMgdGV4dFRvRWRpdDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uS2luZCA9IHRoaXMuX3RyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTaG93SGlkZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93QWN0aW9uQnV0dG9ucyA9ICF0aGlzLnNob3dBY3Rpb25CdXR0b25zO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0FjdGlvbkJ1dHRvbnNEZWxheWVkID0gIXRoaXMuc2hvd0FjdGlvbkJ1dHRvbnNEZWxheWVkO1xyXG4gICAgfSwgMSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVHJhbnNhY3Rpb25BcnRpY2xlVGV4dE92ZXJ2aWV3KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVGV4dEhlYWRlciA9IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIlRFWFRfQVJUSUNMRV9CT1VORFwiLCB0cnVlLCB0aGlzLnRyYW5zYWN0aW9uTGluZS5hcnRpY2xlTnVtYmVyKTtcclxuICAgIHRoaXMudGV4dFRvRWRpdCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX3Nob3dBcnRpY2xlVGV4dE92ZXJ2aWV3RGlhbG9nKCk7XHJcbiAgICB0aGlzLnNob3dBY3Rpb25CdXR0b25zID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dBY3Rpb25CdXR0b25zRGVsYXllZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFydGljbGVUZXh0SGVhZGVyID0gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiVEVYVF9BUlRJQ0xFX0JPVU5EXCIsIHRydWUsIHRoaXMudHJhbnNhY3Rpb25MaW5lLmFydGljbGVOdW1iZXIpO1xyXG4gICAgdGhpcy50ZXh0VG9FZGl0ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zaG93QXJ0aWNsZVRleHREaWFsb2coKTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbkJ1dHRvbnMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbkJ1dHRvbnNEZWxheWVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2hvd1NpZGVQYW5lbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2lkZVBhbmVsQnV0dG9uQ2xpY2tlZC5uZXh0KHRoaXMudHJhbnNhY3Rpb25MaW5lKTtcclxuICAgIHRoaXMud2FpdGluZ0ZvclVzZXJBY3Rpb24ubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbkJ1dHRvbnMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0FjdGlvbkJ1dHRvbnNEZWxheWVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd092ZXJ2aWV3QnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciB8fFxyXG4gICAgdGhpcy50cmFuc2FjdGlvbktpbmQgPT09IFRyYW5zYWN0aW9uS2luZC5TYWxlc09yZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dBZGRUZXh0QnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuUHVyY2hhc2VPcmRlciB8fFxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uS2luZCA9PT0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1NpZGViYXJCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbktpbmQgPT09IFRyYW5zYWN0aW9uS2luZC5QdXJjaGFzZU9yZGVyIHx8XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlVHJhbnNhY3Rpb25BcnRpY2xlTGluZVRleHQodHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkVGV4dExpbmVSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLl90cmFuc2FjdGlvblNlcnZpY2UuYWRkVGV4dExpbmUoXHJcbiAgICAgIHRyYW5zYWN0aW9uQWRkVGV4dExpbmVSZXF1ZXN0LnNob3dPbkRvY3VtZW50cyxcclxuICAgICAgdHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3QudGV4dCxcclxuICAgICAgMCxcclxuICAgICAgdHJ1ZSxcclxuICAgICAgdHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3QucmVmQXJ0aWNsZUxpbmVOcikudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2hpZGVBcnRpY2xlVGV4dERpYWxvZygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VUcmFuc2FjdGlvbkFydGljbGVUZXh0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9oaWRlQXJ0aWNsZVRleHREaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZVRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5faGlkZUFydGljbGVUZXh0T3ZlcnZpZXdEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93QXJ0aWNsZVRleHREaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dUcmFuc2FjdGlvbkFydGljbGVUZXh0ID0gdHJ1ZTtcclxuICAgIHRoaXMud2FpdGluZ0ZvclVzZXJBY3Rpb24ubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZGVBcnRpY2xlVGV4dERpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uQXJ0aWNsZVRleHQgPSBmYWxzZTtcclxuICAgIHRoaXMud2FpdGluZ0ZvclVzZXJBY3Rpb24ubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93QXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldyA9IHRydWU7XHJcbiAgICB0aGlzLndhaXRpbmdGb3JVc2VyQWN0aW9uLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oaWRlQXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy53YWl0aW5nRm9yVXNlckFjdGlvbi5uZXh0KGZhbHNlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,30 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { CoreModule } from "../core/core.module";
4
+ import { TransactionLineActionButtonsComponent } from "./transaction-line-action-buttons.component";
5
+ import { ButtonModule, ClickoutsideModule } from "@colijnit/corecomponents_v12";
6
+ import { TransactionArticleTextOverviewModule } from "../shared/transaction-article-text-overview/transaction-article-text-overview.module";
7
+ import { TransactionArticleTextModule } from "../shared/transaction-article-text/transaction-article-text.module";
8
+ import { PipeModule } from "../../pipe/pipe.module";
9
+ export class TransactionLineActionButtonsModule {
10
+ }
11
+ TransactionLineActionButtonsModule.decorators = [
12
+ { type: NgModule, args: [{
13
+ imports: [
14
+ CommonModule,
15
+ CoreModule,
16
+ ButtonModule,
17
+ ClickoutsideModule,
18
+ TransactionArticleTextOverviewModule,
19
+ TransactionArticleTextModule,
20
+ PipeModule
21
+ ],
22
+ declarations: [
23
+ TransactionLineActionButtonsComponent
24
+ ],
25
+ exports: [
26
+ TransactionLineActionButtonsComponent
27
+ ]
28
+ },] }
29
+ ];
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS1hY3Rpb24tYnV0dG9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmFuc2FjdGlvbi9zcmMvbGliL2NvbXBvbmVudC90cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zL3RyYW5zYWN0aW9uLWxpbmUtYWN0aW9uLWJ1dHRvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRyxPQUFPLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDOUUsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHNGQUFzRixDQUFDO0FBQzlGLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLG9FQUFvRSxDQUFDO0FBQ2hILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQW1CbEQsTUFBTSxPQUFPLGtDQUFrQzs7O1lBakI5QyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixZQUFZO29CQUNaLGtCQUFrQjtvQkFDbEIsb0NBQW9DO29CQUNwQyw0QkFBNEI7b0JBQzVCLFVBQVU7aUJBQ1g7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHFDQUFxQztpQkFDdEM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHFDQUFxQztpQkFDdEM7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVBY3Rpb25CdXR0b25zQ29tcG9uZW50fSBmcm9tIFwiLi90cmFuc2FjdGlvbi1saW5lLWFjdGlvbi1idXR0b25zLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0J1dHRvbk1vZHVsZSwgQ2xpY2tvdXRzaWRlTW9kdWxlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1xyXG4gIFRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlld01vZHVsZVxyXG59IGZyb20gXCIuLi9zaGFyZWQvdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0LW92ZXJ2aWV3L3RyYW5zYWN0aW9uLWFydGljbGUtdGV4dC1vdmVydmlldy5tb2R1bGVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkFydGljbGVUZXh0TW9kdWxlfSBmcm9tIFwiLi4vc2hhcmVkL3RyYW5zYWN0aW9uLWFydGljbGUtdGV4dC90cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQubW9kdWxlXCI7XHJcbmltcG9ydCB7UGlwZU1vZHVsZX0gZnJvbSBcIi4uLy4uL3BpcGUvcGlwZS5tb2R1bGVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIENsaWNrb3V0c2lkZU1vZHVsZSxcclxuICAgIFRyYW5zYWN0aW9uQXJ0aWNsZVRleHRPdmVydmlld01vZHVsZSxcclxuICAgIFRyYW5zYWN0aW9uQXJ0aWNsZVRleHRNb2R1bGUsXHJcbiAgICBQaXBlTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRyYW5zYWN0aW9uTGluZUFjdGlvbkJ1dHRvbnNDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFRyYW5zYWN0aW9uTGluZUFjdGlvbkJ1dHRvbnNDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkxpbmVBY3Rpb25CdXR0b25zTW9kdWxlIHtcclxufVxyXG4iXX0=
@@ -99,4 +99,4 @@ FilterRequestService.ctorParameters = () => [
99
99
  { type: TransactionSearchService },
100
100
  { type: TransactionService }
101
101
  ];
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJlcXVlc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC9zZXJ2aWNlL2ZpbHRlci1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUt4RSxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQ1MsYUFBdUMsRUFDdEMsbUJBQXVDO1FBRHhDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN0Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO0lBQzVDLENBQUM7SUFFQyw4QkFBOEIsQ0FBQyxVQUFpQyxFQUFFLFNBQWlCO1FBQ3hGLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU0sOEJBQThCLENBQUMsVUFBaUMsRUFBRSxTQUFpQjtRQUN4RixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxvQ0FBb0MsQ0FBQyxLQUFhLEVBQUUsU0FBaUI7UUFDMUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3RELENBQUM7SUFFRCw4REFBOEQ7SUFDdkQscUNBQXFDLENBQUMsS0FBYSxFQUFFLFNBQWlCO1FBQzNFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRU0sa0NBQWtDLENBQUMsS0FBYyxFQUFFLFNBQWlCO1FBQ3pFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRU0sa0NBQWtDLENBQUMsS0FBYyxFQUFFLFNBQWlCO1FBQ3pFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWEsRUFBRSxTQUFpQjtRQUMzRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN0RztJQUNILENBQUM7SUFFTSw2QkFBNkIsQ0FBQyxrQkFBMEIsRUFBRSxLQUFhO1FBQzVFLElBQUksa0JBQWtCLEVBQUU7WUFFdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUMzRCxJQUFJLFVBQVUsR0FBRyxrQkFBa0I7aUJBQ2hDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQ2pCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVuRCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU8sbUNBQW1DLENBQUMsVUFBaUM7UUFDM0UsSUFBSSxhQUFhLEdBQVcsRUFBRSxDQUFDO1FBRS9CLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUU5QyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ3JFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU8sbUNBQW1DLENBQUMsS0FBYztRQUN4RCxJQUFJLGFBQWEsR0FBVyxFQUFFLENBQUM7UUFFL0IsSUFBSSxLQUFLLEVBQUM7WUFDUixhQUFhLEdBQUcsT0FBTyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxhQUFhLEdBQUcsT0FBTyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLFVBQWlDO1FBQzNFLElBQUksYUFBYSxHQUFhLEVBQUUsQ0FBQztRQUVqQyxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDMUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxTQUFlLEVBQUUsT0FBYTtRQUNsRSxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV4RSxPQUFPLFFBQVEsZ0JBQWdCLFlBQVksY0FBYyxJQUFJLENBQUM7SUFDaEUsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQVU7UUFDcEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFOUIsT0FBTyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQS9HRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQUpRLHdCQUF3QjtZQUR4QixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRmlsdGVySXRlbVZpZXdtb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbC9maWx0ZXItaXRlbS52aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiLi90cmFuc2FjdGlvbi1zZWFyY2guc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJSZXF1ZXN0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHNlYXJjaFNlcnZpY2U6IFRyYW5zYWN0aW9uU2VhcmNoU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgKSB7fVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclJhbmdlKGNvbGxlY3Rpb246IEZpbHRlckl0ZW1WaWV3bW9kZWxbXSwgbW9kZWxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0W21vZGVsTmFtZV0gPSB0aGlzLl9nZXRGaWx0ZXJSZXF1ZXN0Rm9yQ29sbGVjdGlvblJhbmdlKGNvbGxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JBcnJheShjb2xsZWN0aW9uOiBGaWx0ZXJJdGVtVmlld21vZGVsW10sIG1vZGVsTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoUmVxdWVzdFttb2RlbE5hbWVdID0gdGhpcy5fZ2V0RmlsdGVyUmVxdWVzdEZvckNvbGxlY3Rpb25BcnJheShjb2xsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vdG9kbzogdGlqZGVsaWprIHRvdGRhdCBmaWx0ZXItaXRlbSBzaW5nbGUgc2VsZWN0IG9uZGVyc3RldW50XHJcbiAgcHVibGljIGhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JTaW5nbGVWYWx1ZSh2YWx1ZTogc3RyaW5nLCBtb2RlbE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3RbbW9kZWxOYW1lXSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy90b2RvOiB0aWpkZWxpamsgdG90ZGF0IGZpbHRlci1pdGVtIHNpbmdsZSBzZWxlY3Qgb25kZXJzdGV1bnRcclxuICBwdWJsaWMgaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclNpbmdsZU51bWJlcih2YWx1ZTogbnVtYmVyLCBtb2RlbE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3RbbW9kZWxOYW1lXSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JTdHJpbmcodmFsdWU6IGJvb2xlYW4sIG1vZGVsTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoUmVxdWVzdFttb2RlbE5hbWVdID0gdGhpcy5fZ2V0RmlsdGVyUmVxdWVzdEZvckJvb2xlYW5Ub1N0cmluZyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2hlY2tib3hWYWx1ZUNoYW5nZUZvck51bWJlcih2YWx1ZTogYm9vbGVhbiwgbW9kZWxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0W21vZGVsTmFtZV0gPSB2YWx1ZSA/IDEgOiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURhdGVSYW5nZUNoYW5nZShkYXRlczogRGF0ZVtdLCBtb2RlbE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGVzKSB7XHJcbiAgICAgIGxldCBzdGFydERhdGUgPSBkYXRlc1swXTtcclxuICAgICAgbGV0IGVuZERhdGUgPSBkYXRlc1sxXTtcclxuXHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0W21vZGVsTmFtZV0gPSB0aGlzLl9nZXRGaWx0ZXJSZXF1ZXN0Rm9yRGF0ZVJhbmdlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UoZmlsdGVyUmVxdWVzdFJhbmdlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBEYXRlIHtcclxuICAgIGlmIChmaWx0ZXJSZXF1ZXN0UmFuZ2UpIHtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGVQYXR0ZXJuID0gbmV3IFJlZ0V4cCgnXFxcXGR7Mn1cXFxcLVxcXFxkezJ9XFxcXC1cXFxcZHs0fScpO1xyXG4gICAgICBsZXQgZGF0ZVN0cmluZyA9IGZpbHRlclJlcXVlc3RSYW5nZVxyXG4gICAgICAgIC5zcGxpdCgnLCcpW2luZGV4XVxyXG4gICAgICAgIC5tYXRjaChkYXRlUGF0dGVybilbMF07XHJcblxyXG4gICAgICBjb25zdCBkYXkgPSBOdW1iZXIoZGF0ZVN0cmluZy5tYXRjaCgnXlxcXFxkezJ9JylbMF0pO1xyXG4gICAgICBjb25zdCBtb250aCA9IE51bWJlcihkYXRlU3RyaW5nLm1hdGNoKCcoPzw9XFxcXC0pKFxcXFxkezJ9KSg/PVxcXFwtKScpWzBdKS0xO1xyXG4gICAgICBjb25zdCB5ZWFyID0gTnVtYmVyKGRhdGVTdHJpbmcubWF0Y2goJ1xcXFxkezR9JylbMF0pO1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RmlsdGVyUmVxdWVzdEZvckNvbGxlY3Rpb25SYW5nZShjb2xsZWN0aW9uOiBGaWx0ZXJJdGVtVmlld21vZGVsW10pOiBzdHJpbmcge1xyXG4gICAgbGV0IGZpbHRlclJlcXVlc3Q6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGNvbGxlY3Rpb24/LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmNoZWNrZWQpIHtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZXF1ZXN0ID0gYD89XFwnJHtpdGVtLmNvZGV9XFwnYDtcclxuXHJcbiAgICAgICAgZmlsdGVyUmVxdWVzdCArPSAoZmlsdGVyUmVxdWVzdCA/ICcsJyA6ICcnKSArIGAke2Zvcm1hdHRlZFJlcXVlc3R9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmlsdGVyUmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldEZpbHRlclJlcXVlc3RGb3JCb29sZWFuVG9TdHJpbmcodmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgbGV0IGZpbHRlclJlcXVlc3Q6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGlmICh2YWx1ZSl7XHJcbiAgICAgIGZpbHRlclJlcXVlc3QgPSBcIj89J0onXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0ID0gXCI/PSdOJ1wiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWx0ZXJSZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RmlsdGVyUmVxdWVzdEZvckNvbGxlY3Rpb25BcnJheShjb2xsZWN0aW9uOiBGaWx0ZXJJdGVtVmlld21vZGVsW10pOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgZmlsdGVyUmVxdWVzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBjb2xsZWN0aW9uPy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbS5jaGVja2VkKSB7XHJcbiAgICAgICAgZmlsdGVyUmVxdWVzdC5wdXNoKGl0ZW0uY29kZS50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gZmlsdGVyUmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldEZpbHRlclJlcXVlc3RGb3JEYXRlUmFuZ2Uoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHN0YXJ0RGF0ZVJlcXVlc3QgPSBzdGFydERhdGUgPyB0aGlzLl9mb3JtYXREYXRlVG9TdHJpbmcoc3RhcnREYXRlKSA6ICcnO1xyXG4gICAgY29uc3QgZW5kRGF0ZVJlcXVlc3QgPSBlbmREYXRlID8gdGhpcy5fZm9ybWF0RGF0ZVRvU3RyaW5nKGVuZERhdGUpIDogJyc7XHJcblxyXG4gICAgcmV0dXJuIGA/Pj1cXCcke3N0YXJ0RGF0ZVJlcXVlc3R9XFwnJiA/PD1cXCcke2VuZERhdGVSZXF1ZXN0fVxcJ2A7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtYXREYXRlVG9TdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgbGV0IG1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xyXG4gIH1cclxufVxyXG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJlcXVlc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC9zZXJ2aWNlL2ZpbHRlci1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUt0RSxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQ1MsYUFBdUMsRUFDdEMsbUJBQXVDO1FBRHhDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN0Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO0lBQzVDLENBQUM7SUFFQyw4QkFBOEIsQ0FBQyxVQUFpQyxFQUFFLFNBQWlCO1FBQ3hGLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU0sOEJBQThCLENBQUMsVUFBaUMsRUFBRSxTQUFpQjtRQUN4RixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxvQ0FBb0MsQ0FBQyxLQUFhLEVBQUUsU0FBaUI7UUFDMUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3RELENBQUM7SUFFRCw4REFBOEQ7SUFDdkQscUNBQXFDLENBQUMsS0FBYSxFQUFFLFNBQWlC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WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RmlsdGVySXRlbVZpZXdtb2RlbH0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL2ZpbHRlci1pdGVtLnZpZXdtb2RlbFwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoU2VydmljZX0gZnJvbSBcIi4vdHJhbnNhY3Rpb24tc2VhcmNoLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyUmVxdWVzdFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZWFyY2hTZXJ2aWNlOiBUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgcHVibGljIGhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JSYW5nZShjb2xsZWN0aW9uOiBGaWx0ZXJJdGVtVmlld21vZGVsW10sIG1vZGVsTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoUmVxdWVzdFttb2RlbE5hbWVdID0gdGhpcy5fZ2V0RmlsdGVyUmVxdWVzdEZvckNvbGxlY3Rpb25SYW5nZShjb2xsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yQXJyYXkoY29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdLCBtb2RlbE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3RbbW9kZWxOYW1lXSA9IHRoaXMuX2dldEZpbHRlclJlcXVlc3RGb3JDb2xsZWN0aW9uQXJyYXkoY29sbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICAvL3RvZG86IHRpamRlbGlqayB0b3RkYXQgZmlsdGVyLWl0ZW0gc2luZ2xlIHNlbGVjdCBvbmRlcnN0ZXVudFxyXG4gIHB1YmxpYyBoYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yU2luZ2xlVmFsdWUodmFsdWU6IHN0cmluZywgbW9kZWxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0W21vZGVsTmFtZV0gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vdG9kbzogdGlqZGVsaWprIHRvdGRhdCBmaWx0ZXItaXRlbSBzaW5nbGUgc2VsZWN0IG9uZGVyc3RldW50XHJcbiAgcHVibGljIGhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JTaW5nbGVOdW1iZXIodmFsdWU6IG51bWJlciwgbW9kZWxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0W21vZGVsTmFtZV0gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDaGVja2JveFZhbHVlQ2hhbmdlRm9yU3RyaW5nKHZhbHVlOiBib29sZWFuLCBtb2RlbE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3RbbW9kZWxOYW1lXSA9IHRoaXMuX2dldEZpbHRlclJlcXVlc3RGb3JCb29sZWFuVG9TdHJpbmcodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JOdW1iZXIodmFsdWU6IGJvb2xlYW4sIG1vZGVsTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoUmVxdWVzdFttb2RlbE5hbWVdID0gdmFsdWUgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VDaGFuZ2UoZGF0ZXM6IERhdGVbXSwgbW9kZWxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChkYXRlcykge1xyXG4gICAgICBsZXQgc3RhcnREYXRlID0gZGF0ZXNbMF07XHJcbiAgICAgIGxldCBlbmREYXRlID0gZGF0ZXNbMV07XHJcblxyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoUmVxdWVzdFttb2RlbE5hbWVdID0gdGhpcy5fZ2V0RmlsdGVyUmVxdWVzdEZvckRhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKGZpbHRlclJlcXVlc3RSYW5nZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICBpZiAoZmlsdGVyUmVxdWVzdFJhbmdlKSB7XHJcblxyXG4gICAgICBjb25zdCBkYXRlUGF0dGVybiA9IG5ldyBSZWdFeHAoJ1xcXFxkezJ9XFxcXC1cXFxcZHsyfVxcXFwtXFxcXGR7NH0nKTtcclxuICAgICAgbGV0IGRhdGVTdHJpbmcgPSBmaWx0ZXJSZXF1ZXN0UmFuZ2VcclxuICAgICAgICAuc3BsaXQoJywnKVtpbmRleF1cclxuICAgICAgICAubWF0Y2goZGF0ZVBhdHRlcm4pWzBdO1xyXG5cclxuICAgICAgY29uc3QgZGF5ID0gTnVtYmVyKGRhdGVTdHJpbmcubWF0Y2goJ15cXFxcZHsyfScpWzBdKTtcclxuICAgICAgY29uc3QgbW9udGggPSBOdW1iZXIoZGF0ZVN0cmluZy5tYXRjaCgnKD88PVxcXFwtKShcXFxcZHsyfSkoPz1cXFxcLSknKVswXSktMTtcclxuICAgICAgY29uc3QgeWVhciA9IE51bWJlcihkYXRlU3RyaW5nLm1hdGNoKCdcXFxcZHs0fScpWzBdKTtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldEZpbHRlclJlcXVlc3RGb3JDb2xsZWN0aW9uUmFuZ2UoY29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdKTogc3RyaW5nIHtcclxuICAgIGxldCBmaWx0ZXJSZXF1ZXN0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBjb2xsZWN0aW9uPy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbS5jaGVja2VkKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkUmVxdWVzdCA9IGA/PVxcJyR7aXRlbS5jb2RlfVxcJ2A7XHJcblxyXG4gICAgICAgIGZpbHRlclJlcXVlc3QgKz0gKGZpbHRlclJlcXVlc3QgPyAnLCcgOiAnJykgKyBgJHtmb3JtYXR0ZWRSZXF1ZXN0fWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpbHRlclJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRGaWx0ZXJSZXF1ZXN0Rm9yQm9vbGVhblRvU3RyaW5nKHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBmaWx0ZXJSZXF1ZXN0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBpZiAodmFsdWUpe1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0ID0gXCI/PSdKJ1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsdGVyUmVxdWVzdCA9IFwiPz0nTidcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmlsdGVyUmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldEZpbHRlclJlcXVlc3RGb3JDb2xsZWN0aW9uQXJyYXkoY29sbGVjdGlvbjogRmlsdGVySXRlbVZpZXdtb2RlbFtdKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGZpbHRlclJlcXVlc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgY29sbGVjdGlvbj8uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uY2hlY2tlZCkge1xyXG4gICAgICAgIGZpbHRlclJlcXVlc3QucHVzaChpdGVtLmNvZGUudG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIGZpbHRlclJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRGaWx0ZXJSZXF1ZXN0Rm9yRGF0ZVJhbmdlKHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzdGFydERhdGVSZXF1ZXN0ID0gc3RhcnREYXRlID8gdGhpcy5fZm9ybWF0RGF0ZVRvU3RyaW5nKHN0YXJ0RGF0ZSkgOiAnJztcclxuICAgIGNvbnN0IGVuZERhdGVSZXF1ZXN0ID0gZW5kRGF0ZSA/IHRoaXMuX2Zvcm1hdERhdGVUb1N0cmluZyhlbmREYXRlKSA6ICcnO1xyXG5cclxuICAgIHJldHVybiBgPz49XFwnJHtzdGFydERhdGVSZXF1ZXN0fVxcJyYgPzw9XFwnJHtlbmREYXRlUmVxdWVzdH1cXCdgO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybWF0RGF0ZVRvU3RyaW5nKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGxldCBtb250aCA9IChkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBsZXQgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICByZXR1cm4gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9YDtcclxuICB9XHJcbn1cclxuIl19