@colijnit/sharedcomponents 255.1.19 → 255.1.21
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.
- package/bundles/colijnit-sharedcomponents.umd.js +506 -676
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.d.ts +120 -123
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/colijnit-sharedcomponents.js +121 -124
- package/esm2015/lib/components/activity-list/activity-list.component.js +3 -3
- package/esm2015/lib/components/activity-list-header/activity-list-header.component.js +4 -4
- package/esm2015/lib/components/activity-list-header/activity-list-header.module.js +9 -9
- package/esm2015/lib/components/activity-list-header/components/period-filter/period-filter-popup.component.js +3 -3
- package/esm2015/lib/components/activity-list-header/components/period-filter/period-filter.component.js +2 -2
- package/esm2015/lib/components/activity-list-header/components/period-filter/period-filter.module.js +9 -10
- package/esm2015/lib/components/activity-overview-component/component-activity-overview.component.js +8 -11
- package/esm2015/lib/components/activity-overview-component/component-activity-overview.module.js +8 -8
- package/esm2015/lib/components/activity-overview-component/components/base-activity-overview.component.js +3 -3
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +3 -3
- package/esm2015/lib/components/email-selector/email-selector.module.js +9 -9
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +7 -7
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +8 -8
- package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +3 -3
- package/esm2015/lib/components/files-upload/files-upload.component.js +5 -5
- package/esm2015/lib/components/files-upload/files-upload.module.js +14 -14
- package/esm2015/lib/components/image-display/image-display.component.js +2 -2
- package/esm2015/lib/components/image-display/image-display.module.js +7 -7
- package/esm2015/lib/components/modify-task-form/components/activity-summary-block/activity-summary-block.component.js +3 -3
- package/esm2015/lib/components/modify-task-form/components/activity-summary-block/activity-summary-block.module.js +7 -7
- package/esm2015/lib/components/modify-task-form/components/base-activity-summary.component.js +3 -3
- package/esm2015/lib/components/modify-task-form/components/creation-summary-block/creation-summary-block.component.js +7 -7
- package/esm2015/lib/components/modify-task-form/components/creation-summary-block/creation-summary-block.module.js +8 -8
- package/esm2015/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.component.js +6 -6
- package/esm2015/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.module.js +7 -7
- package/esm2015/lib/components/modify-task-form/components/notification-summary-block/notification-summary-block.component.js +3 -3
- package/esm2015/lib/components/modify-task-form/components/status-summary-block/status-summary-block.component.js +6 -6
- package/esm2015/lib/components/modify-task-form/components/status-summary-block/status-summary-block.module.js +7 -7
- package/esm2015/lib/components/modify-task-form/components/task-details/task-details.component.js +7 -7
- package/esm2015/lib/components/modify-task-form/components/task-details/task-details.module.js +7 -7
- package/esm2015/lib/components/modify-task-form/modify-task-form.component.js +7 -7
- package/esm2015/lib/components/modify-task-form/modify-task-form.module.js +15 -15
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +2 -2
- package/esm2015/lib/components/open-activity-list/component-activity-list.module.js +10 -10
- package/esm2015/lib/components/open-activity-list/components/personal-activity-overview/personal-activity-overview.component.js +1 -1
- package/esm2015/lib/components/role-email-selector/role-email-selector.component.js +3 -3
- package/esm2015/lib/components/role-email-selector/role-email-selector.module.js +8 -8
- package/esm2015/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.js +14 -14
- package/esm2015/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.js +14 -14
- package/esm2015/lib/components/stock/components/order-stock-history/order-stock-history.component.js +14 -14
- package/esm2015/lib/components/stock/components/order-stock-tab/order-stock-tab.component.js +7 -7
- package/esm2015/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.js +14 -14
- package/esm2015/lib/components/stock/components/order-tab/order-tab.component.js +9 -9
- package/esm2015/lib/components/stock/components/stock-history/stock-history.component.js +14 -14
- package/esm2015/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.js +14 -14
- package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +15 -15
- package/esm2015/lib/components/stock/components/stock-prognose/stock-prognose.component.js +11 -11
- package/esm2015/lib/components/stock/components/stock-tab/stock-tab.component.js +11 -18
- package/esm2015/lib/components/stock/stock-history-tabs/stock-history-tabs.component.js +6 -6
- package/esm2015/lib/components/stock/stock-information/stock-information.component.js +6 -6
- package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +61 -61
- package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +26 -29
- package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +5 -5
- package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +12 -12
- package/esm2015/lib/components/stock/stock.component.js +4 -15
- package/esm2015/lib/components/stock/stock.module.js +6 -8
- package/esm2015/lib/components/tab-bar/tab-bar.component.js +17 -23
- package/esm2015/lib/components/tab-bar/tab-bar.module.js +3 -2
- package/esm2015/lib/components/task-creator/task-creator.component.js +24 -24
- package/esm2015/lib/components/task-creator/task-creator.module.js +11 -11
- package/esm2015/lib/components/task-modifyer/task-modifier.component.js +15 -15
- package/esm2015/lib/components/task-modifyer/task-modifyer.module..js +9 -9
- package/esm2015/lib/components/workflow-info-tiles/components/workflow-info-tile.component.js +2 -2
- package/esm2015/lib/components/workflow-info-tiles/components/workflow-info-tile.module.js +6 -6
- package/esm2015/lib/components/workflow-notification-toggle/workflow-notification-toggle.component.js +2 -2
- package/esm2015/lib/components/workflow-notification-toggle/workflow-notification-toggle.module.js +9 -9
- package/esm2015/lib/res/dictionary/dictionaries.js +9 -0
- package/esm2015/lib/service/options.service.js +5 -5
- package/esm2015/lib/service/shared.service.js +5 -5
- package/esm2015/lib/translation/shared-components-dictionary.service.js +69 -0
- package/esm2015/lib/translation/shared-components-translation.module.js +15 -0
- package/esm2015/lib/translation/shared-localize.pipe.js +26 -0
- package/esm2015/lib/utils/enum-utils.js +1 -1
- package/esm2015/public-api.js +3 -2
- package/fesm2015/colijnit-sharedcomponents.js +512 -658
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/components/activity-list/activity-list.component.d.ts +2 -2
- package/lib/components/activity-overview-component/component-activity-overview.component.d.ts +3 -3
- package/lib/components/activity-overview-component/components/base-activity-overview.component.d.ts +2 -2
- package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +3 -3
- package/lib/components/files-upload/components/base-file-upload.component.d.ts +3 -3
- package/lib/components/files-upload/files-upload.component.d.ts +2 -2
- package/lib/components/modify-task-form/components/base-activity-summary.component.d.ts +3 -3
- package/lib/components/modify-task-form/components/creation-summary-block/creation-summary-block.component.d.ts +3 -3
- package/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.component.d.ts +3 -3
- package/lib/components/modify-task-form/components/notification-summary-block/notification-summary-block.component.d.ts +3 -3
- package/lib/components/modify-task-form/components/status-summary-block/status-summary-block.component.d.ts +3 -3
- package/lib/components/modify-task-form/components/task-details/task-details.component.d.ts +3 -3
- package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +17 -19
- package/lib/components/stock/stock.component.d.ts +2 -6
- package/lib/components/tab-bar/tab-bar.component.d.ts +0 -3
- package/lib/components/task-creator/task-creator.component.d.ts +17 -17
- package/lib/components/task-modifyer/task-modifier.component.d.ts +13 -13
- package/lib/res/dictionary/dictionaries.d.ts +18809 -0
- package/lib/service/options.service.d.ts +2 -2
- package/lib/service/shared.service.d.ts +3 -3
- package/lib/{service/dictionary.service.d.ts → translation/shared-components-dictionary.service.d.ts} +5 -7
- package/lib/translation/shared-components-translation.module.d.ts +2 -0
- package/lib/translation/shared-localize.pipe.d.ts +7 -0
- package/lib/utils/enum-utils.d.ts +3 -3
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
- package/3rdpartylicenses.txt +0 -1405
- package/esm2015/lib/assets/dictionary/text.properties.js +0 -11
- package/esm2015/lib/components/stock/localization/translation.js +0 -78
- package/esm2015/lib/localization/localization.module.js +0 -19
- package/esm2015/lib/localization/localize.pipe.js +0 -26
- package/esm2015/lib/localization/localize.service.js +0 -30
- package/esm2015/lib/localization/translation.js +0 -3
- package/esm2015/lib/service/dictionary.service.js +0 -76
- package/favicon.ico +0 -0
- package/index.html +0 -12
- package/lib/assets/dictionary/text.properties.d.ts +0 -3
- package/lib/components/stock/localization/translation.d.ts +0 -75
- package/lib/localization/localization.module.d.ts +0 -2
- package/lib/localization/localize.pipe.d.ts +0 -7
- package/lib/localization/localize.service.d.ts +0 -7
- package/lib/localization/translation.d.ts +0 -2
- package/main.871f327ed7ea343aa7b1.js +0 -1
- package/polyfills.907fe9d1887c5de17993.js +0 -1
- package/runtime.8aac21847ed3d3829cca.js +0 -1
- package/styles.47560e51cc093de66ebe.css +0 -1
package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js
CHANGED
|
@@ -202,14 +202,14 @@ StockInformationGridComponent.decorators = [
|
|
|
202
202
|
class="simple-grid"
|
|
203
203
|
[rowsPerPage]="20"
|
|
204
204
|
>
|
|
205
|
-
<co-simple-grid-column [headerText]="'WAREHOUSE' |
|
|
206
|
-
<co-simple-grid-column [headerText]="'DESCRIPTION' |
|
|
207
|
-
<co-simple-grid-column [headerText]="'STOCK' |
|
|
208
|
-
<co-simple-grid-column [headerText]="'AVAILABLE_STOCK' |
|
|
209
|
-
<co-simple-grid-column [headerText]="'ECONOMICAL_STOCK' |
|
|
210
|
-
<co-simple-grid-column [headerText]="'LOCATION' |
|
|
205
|
+
<co-simple-grid-column [headerText]="'WAREHOUSE' | sharedLocalize" [field]="'warehouseNo'" [order]="10"></co-simple-grid-column>
|
|
206
|
+
<co-simple-grid-column [headerText]="'DESCRIPTION' | sharedLocalize" [field]="'warehouseName'" [order]="11"></co-simple-grid-column>
|
|
207
|
+
<co-simple-grid-column [headerText]="'STOCK' | sharedLocalize" [field]="'technicalStock'" [order]="12"></co-simple-grid-column>
|
|
208
|
+
<co-simple-grid-column [headerText]="'AVAILABLE_STOCK' | sharedLocalize" [field]="'availableStock'" [order]="13"></co-simple-grid-column>
|
|
209
|
+
<co-simple-grid-column [headerText]="'ECONOMICAL_STOCK' | sharedLocalize" [field]="'economicalStock'" [order]="14"></co-simple-grid-column>
|
|
210
|
+
<co-simple-grid-column [headerText]="'LOCATION' | sharedLocalize" [field]="'locationNo'" [order]="15">
|
|
211
211
|
<ng-template #template let-row="row">
|
|
212
|
-
<span class="location-link" [textContent]="'LOOK_AT' |
|
|
212
|
+
<span class="location-link" [textContent]="'LOOK_AT' | sharedLocalize" (click)="onLocationClick(row)"></span>
|
|
213
213
|
</ng-template>
|
|
214
214
|
</co-simple-grid-column>
|
|
215
215
|
</co-simple-grid>
|
|
@@ -219,22 +219,22 @@ StockInformationGridComponent.decorators = [
|
|
|
219
219
|
class="simple-grid"
|
|
220
220
|
[rowsPerPage]="20"
|
|
221
221
|
>
|
|
222
|
-
<co-simple-grid-column [headerText]="'IN_ORDER' |
|
|
223
|
-
<co-simple-grid-column [headerText]="'CUSTOMER' |
|
|
224
|
-
<co-simple-grid-column [headerText]="'DATE' |
|
|
222
|
+
<co-simple-grid-column [headerText]="'IN_ORDER' | sharedLocalize" [field]="'transactionNr'"></co-simple-grid-column>
|
|
223
|
+
<co-simple-grid-column [headerText]="'CUSTOMER' | sharedLocalize" [field]="'customerName'"></co-simple-grid-column>
|
|
224
|
+
<co-simple-grid-column [headerText]="'DATE' | sharedLocalize">
|
|
225
225
|
<ng-template #template let-row="row">
|
|
226
226
|
<span [textContent]="row.transactionDate | date:'dd-MM-yyyy'"></span>
|
|
227
227
|
</ng-template>
|
|
228
228
|
</co-simple-grid-column>
|
|
229
|
-
<co-simple-grid-column [headerText]="'AMOUNT' |
|
|
230
|
-
<co-simple-grid-column [headerText]="'WAREHOUSE' |
|
|
231
|
-
<co-simple-grid-column [headerText]="'DESCRIPTION' |
|
|
232
|
-
<co-simple-grid-column [headerText]="'TRANSFER' |
|
|
229
|
+
<co-simple-grid-column [headerText]="'AMOUNT' | sharedLocalize" [field]="'amountInOrder'"></co-simple-grid-column>
|
|
230
|
+
<co-simple-grid-column [headerText]="'WAREHOUSE' | sharedLocalize" [field]="'warehouseNumber'"></co-simple-grid-column>
|
|
231
|
+
<co-simple-grid-column [headerText]="'DESCRIPTION' | sharedLocalize" [field]="'warehouseDescription'"></co-simple-grid-column>
|
|
232
|
+
<co-simple-grid-column [headerText]="'TRANSFER' | sharedLocalize" [field]="'transfer'">
|
|
233
233
|
<ng-template #template let-row="row">
|
|
234
234
|
<co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.DeliveryTruck)" (click)="handleStockTransferClick($event)"></co-icon>
|
|
235
235
|
</ng-template>
|
|
236
236
|
</co-simple-grid-column>
|
|
237
|
-
<co-simple-grid-column [headerText]="'STICKER' |
|
|
237
|
+
<co-simple-grid-column [headerText]="'STICKER' | sharedLocalize" [field]="'sticker'">
|
|
238
238
|
<ng-template #template let-row="row">
|
|
239
239
|
<co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.Print)" (click)="openSendMethodDialog(row)"></co-icon>
|
|
240
240
|
</ng-template>
|
|
@@ -246,16 +246,16 @@ StockInformationGridComponent.decorators = [
|
|
|
246
246
|
class="simple-grid"
|
|
247
247
|
[rowsPerPage]="20"
|
|
248
248
|
>
|
|
249
|
-
<co-simple-grid-column [headerText]="'PURCHASE_ORDER_NR' |
|
|
250
|
-
<co-simple-grid-column [headerText]="'DATE' |
|
|
249
|
+
<co-simple-grid-column [headerText]="'PURCHASE_ORDER_NR' | sharedLocalize" [field]="'transactionNr'"></co-simple-grid-column>
|
|
250
|
+
<co-simple-grid-column [headerText]="'DATE' | sharedLocalize">
|
|
251
251
|
<ng-template #template let-row="row">
|
|
252
252
|
<span [textContent]="row.transactionDate | date:'dd-MM-yyyy'"></span>
|
|
253
253
|
</ng-template>
|
|
254
254
|
</co-simple-grid-column>
|
|
255
|
-
<co-simple-grid-column [headerText]="'AMOUNT' |
|
|
256
|
-
<co-simple-grid-column [headerText]="'RESERVED' |
|
|
257
|
-
<co-simple-grid-column [headerText]="'FREE_STOCK' |
|
|
258
|
-
<co-simple-grid-column [headerText]="'DELIVERY_DATE' |
|
|
255
|
+
<co-simple-grid-column [headerText]="'AMOUNT' | sharedLocalize" [field]="'amountInOrder'"></co-simple-grid-column>
|
|
256
|
+
<co-simple-grid-column [headerText]="'RESERVED' | sharedLocalize" [field]="'reserved'"></co-simple-grid-column>
|
|
257
|
+
<co-simple-grid-column [headerText]="'FREE_STOCK' | sharedLocalize" [field]="'InOrderForStock'"></co-simple-grid-column>
|
|
258
|
+
<co-simple-grid-column [headerText]="'DELIVERY_DATE' | sharedLocalize">
|
|
259
259
|
<ng-template #template let-row="row">
|
|
260
260
|
<span [textContent]="row.deliveryDate | date:'dd-MM-yyyy'"></span>
|
|
261
261
|
</ng-template>
|
|
@@ -266,14 +266,14 @@ StockInformationGridComponent.decorators = [
|
|
|
266
266
|
<div class="stock-grid" *ngIf="hideOrShowLocationTab">
|
|
267
267
|
<div class="stock-location-group">
|
|
268
268
|
<div class="stock-location-left-group">
|
|
269
|
-
<span class="stock-button-back" [textContent]="'BACK_TO_STOCK_LINES' |
|
|
269
|
+
<span class="stock-button-back" [textContent]="'BACK_TO_STOCK_LINES' | sharedLocalize" (click)="handleBackToStockClick()"></span>
|
|
270
270
|
</div>
|
|
271
271
|
<div class="stock-location-right-group">
|
|
272
272
|
<!--
|
|
273
273
|
<co-drop-down-list [(model)]="selectedWarehouse"
|
|
274
274
|
[collection]="dataWareHouseCode"
|
|
275
275
|
[fields]="dataWareHouseFields"
|
|
276
|
-
[placeholder]="'WAREHOUSE' |
|
|
276
|
+
[placeholder]="'WAREHOUSE' | sharedLocalize"
|
|
277
277
|
(modelChange)="onSelectWarehouse($event)"
|
|
278
278
|
[required]="true"
|
|
279
279
|
></co-drop-down-list>
|
|
@@ -293,75 +293,75 @@ StockInformationGridComponent.decorators = [
|
|
|
293
293
|
>
|
|
294
294
|
<div class="stock-location-group">
|
|
295
295
|
<div class="stock-location-left-group">
|
|
296
|
-
<co-button class="stock-lines-button" [textContent]="'BACK_TO_STOCK_LINES' |
|
|
296
|
+
<co-button class="stock-lines-button" [textContent]="'BACK_TO_STOCK_LINES' | sharedLocalize" (click)="handleBackToStockClick()"></co-button>
|
|
297
297
|
</div>
|
|
298
298
|
</div>
|
|
299
|
-
<co-simple-grid-column [headerText]="'LOCATION' |
|
|
299
|
+
<co-simple-grid-column [headerText]="'LOCATION' | sharedLocalize" [field]="'locationNo'">
|
|
300
300
|
<ng-template #editTemplate let-row="row">
|
|
301
301
|
<!--
|
|
302
302
|
<co-drop-down-list [(model)]="row.locationNo"
|
|
303
303
|
[collection]="stockLocations"
|
|
304
304
|
[fields]="dataLocationFields"
|
|
305
|
-
[placeholder]="'LOCATION' |
|
|
305
|
+
[placeholder]="'LOCATION' | sharedLocalize"
|
|
306
306
|
(click)="onLocationDropdownClick()"
|
|
307
307
|
[required]="true"
|
|
308
308
|
></co-drop-down-list>
|
|
309
309
|
-->
|
|
310
310
|
</ng-template>
|
|
311
311
|
</co-simple-grid-column>
|
|
312
|
-
<co-simple-grid-column *ngIf="articleDetails" [headerText]="'BATCH' |
|
|
312
|
+
<co-simple-grid-column *ngIf="articleDetails" [headerText]="'BATCH' | sharedLocalize" [field]="'batchNo'">
|
|
313
313
|
<ng-template #editTemplate let-row="row">
|
|
314
314
|
<co-input-text [(model)]="row.batchNo"
|
|
315
|
-
[placeholder]="'BATCH' |
|
|
315
|
+
[placeholder]="'BATCH' | sharedLocalize"
|
|
316
316
|
></co-input-text>
|
|
317
317
|
</ng-template>
|
|
318
318
|
</co-simple-grid-column>
|
|
319
|
-
<co-simple-grid-column *ngIf="articleDetails" [headerText]="'SERIAL_NO' |
|
|
319
|
+
<co-simple-grid-column *ngIf="articleDetails" [headerText]="'SERIAL_NO' | sharedLocalize" [field]="'serialNo'">
|
|
320
320
|
<ng-template #editTemplate let-row="row">
|
|
321
321
|
<co-input-text [(model)]="row.serialNo"
|
|
322
|
-
[placeholder]="'SERIAL_NO' |
|
|
322
|
+
[placeholder]="'SERIAL_NO' | sharedLocalize"
|
|
323
323
|
></co-input-text>
|
|
324
324
|
</ng-template>
|
|
325
325
|
</co-simple-grid-column>
|
|
326
|
-
<co-simple-grid-column [headerText]="'STOCK' |
|
|
326
|
+
<co-simple-grid-column [headerText]="'STOCK' | sharedLocalize" [field]="'amountInStock'">
|
|
327
327
|
<ng-template #editTemplate let-row="row">
|
|
328
328
|
<co-input-text [(model)]="row.amountInStock"
|
|
329
|
-
[label]="'STOCK' |
|
|
329
|
+
[label]="'STOCK' | sharedLocalize"
|
|
330
330
|
(modelChange)="amountInStockChanged($event)"
|
|
331
331
|
></co-input-text>
|
|
332
332
|
</ng-template>
|
|
333
333
|
</co-simple-grid-column>
|
|
334
|
-
<co-simple-grid-column [headerText]="'ALLOCATED' |
|
|
334
|
+
<co-simple-grid-column [headerText]="'ALLOCATED' | sharedLocalize" [field]="'stockAssigned'">
|
|
335
335
|
<ng-template #editTemplate let-row="row">
|
|
336
336
|
<span [textContent]="row.stockAssigned"></span>
|
|
337
337
|
</ng-template>
|
|
338
338
|
</co-simple-grid-column>
|
|
339
|
-
<co-simple-grid-column [headerText]="'AVAILABLE_STOCK' |
|
|
339
|
+
<co-simple-grid-column [headerText]="'AVAILABLE_STOCK' | sharedLocalize" [field]="'amountInStockFree'">
|
|
340
340
|
<ng-template #editTemplate let-row="row">
|
|
341
341
|
<span [textContent]="row.amountInStockFree"></span>
|
|
342
342
|
</ng-template>
|
|
343
343
|
</co-simple-grid-column>
|
|
344
|
-
<co-simple-grid-column [headerText]="'VALUTA' |
|
|
344
|
+
<co-simple-grid-column [headerText]="'VALUTA' | sharedLocalize" [field]="'currency'">
|
|
345
345
|
<ng-template #editTemplate let-row="row">
|
|
346
346
|
<span [textContent]="row.currency"></span>
|
|
347
347
|
</ng-template>
|
|
348
348
|
</co-simple-grid-column>
|
|
349
|
-
<co-simple-grid-column [headerText]="'PURCHASE_PRICE' |
|
|
349
|
+
<co-simple-grid-column [headerText]="'PURCHASE_PRICE' | sharedLocalize" [field]="'purchasePrice'">
|
|
350
350
|
<ng-template #editTemplate let-row="row">
|
|
351
351
|
<span [textContent]="row.purchasePrice"></span>
|
|
352
352
|
</ng-template>
|
|
353
353
|
</co-simple-grid-column>
|
|
354
|
-
<co-simple-grid-column [headerText]="'SUPPLIER_NUMBER' |
|
|
354
|
+
<co-simple-grid-column [headerText]="'SUPPLIER_NUMBER' | sharedLocalize" [field]="'supplierNo'">
|
|
355
355
|
<ng-template #editTemplate let-row="row">
|
|
356
356
|
<span [textContent]="row.supplierNo"></span>
|
|
357
357
|
</ng-template>
|
|
358
358
|
</co-simple-grid-column>
|
|
359
|
-
<co-simple-grid-column [headerText]="'TRANSFER' |
|
|
359
|
+
<co-simple-grid-column [headerText]="'TRANSFER' | sharedLocalize" [field]="'transfer'">
|
|
360
360
|
<ng-template #template let-row="row">
|
|
361
361
|
<co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.DeliveryTruck)" (click)="handleStockTransferClick(row)"></co-icon>
|
|
362
362
|
</ng-template>
|
|
363
363
|
</co-simple-grid-column>
|
|
364
|
-
<co-simple-grid-column [headerText]="'STICKER' |
|
|
364
|
+
<co-simple-grid-column [headerText]="'STICKER' | sharedLocalize" [field]="'sticker'">
|
|
365
365
|
<ng-template #template let-row="row">
|
|
366
366
|
<co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.Print)" (click)="openSendMethodDialog(row)"></co-icon>
|
|
367
367
|
</ng-template>
|
|
@@ -377,31 +377,31 @@ StockInformationGridComponent.decorators = [
|
|
|
377
377
|
|
|
378
378
|
<div class="stock-grid" *ngIf="showStockHistory">
|
|
379
379
|
<div class="stock-button-left-group">
|
|
380
|
-
<span class="stock-button-back" [textContent]="'BACK_TO_STOCK_LINES' |
|
|
380
|
+
<span class="stock-button-back" [textContent]="'BACK_TO_STOCK_LINES' | sharedLocalize" (click)="backToStockInformation()"></span>
|
|
381
381
|
</div>
|
|
382
382
|
<co-simple-grid [data]="stockHistoryInformation"
|
|
383
383
|
class="simple-grid"
|
|
384
384
|
[rowsPerPage]="20"
|
|
385
385
|
>
|
|
386
|
-
<co-simple-grid-column [headerText]="'MUTATION_DATE' |
|
|
386
|
+
<co-simple-grid-column [headerText]="'MUTATION_DATE' | sharedLocalize">
|
|
387
387
|
<ng-template #template let-row="row">
|
|
388
388
|
<span [textContent]="row.mutationDate | date:'dd-MM-yyyy'"></span>
|
|
389
389
|
</ng-template>
|
|
390
390
|
</co-simple-grid-column>
|
|
391
|
-
<co-simple-grid-column [headerText]="'MUTATION_TIME' |
|
|
392
|
-
<co-simple-grid-column [headerText]="'AMOUNT' |
|
|
393
|
-
<co-simple-grid-column [headerText]="'WAREHOUSE' |
|
|
394
|
-
<co-simple-grid-column [headerText]="'LOCATION' |
|
|
395
|
-
<co-simple-grid-column [headerText]="'TRANSACTION_TYPE' |
|
|
396
|
-
<co-simple-grid-column [headerText]="'DOCUMENT_NUMBER' |
|
|
397
|
-
<co-simple-grid-column [headerText]="'LINE' |
|
|
398
|
-
<co-simple-grid-column [headerText]="'STOCK_STATE' |
|
|
399
|
-
<co-simple-grid-column [headerText]="'STOCK_REMARK' |
|
|
400
|
-
<co-simple-grid-column [headerText]="'VALUTA' |
|
|
401
|
-
<co-simple-grid-column [headerText]="'RELATION_ID' |
|
|
402
|
-
<co-simple-grid-column [headerText]="'USER' |
|
|
403
|
-
<co-simple-grid-column [headerText]="'MUTATION_TYPE' |
|
|
404
|
-
<co-simple-grid-column [headerText]="'STICKER' |
|
|
391
|
+
<co-simple-grid-column [headerText]="'MUTATION_TIME' | sharedLocalize" [field]="'mutationTime'"></co-simple-grid-column>
|
|
392
|
+
<co-simple-grid-column [headerText]="'AMOUNT' | sharedLocalize" [field]="'amount'"></co-simple-grid-column>
|
|
393
|
+
<co-simple-grid-column [headerText]="'WAREHOUSE' | sharedLocalize" [field]="'wareHouseNr'"></co-simple-grid-column>
|
|
394
|
+
<co-simple-grid-column [headerText]="'LOCATION' | sharedLocalize" [field]="'locationNr'"></co-simple-grid-column>
|
|
395
|
+
<co-simple-grid-column [headerText]="'TRANSACTION_TYPE' | sharedLocalize" [field]="'transType'"></co-simple-grid-column>
|
|
396
|
+
<co-simple-grid-column [headerText]="'DOCUMENT_NUMBER' | sharedLocalize" [field]="'docNr'"></co-simple-grid-column>
|
|
397
|
+
<co-simple-grid-column [headerText]="'LINE' | sharedLocalize" [field]="'posLineNr'"></co-simple-grid-column>
|
|
398
|
+
<co-simple-grid-column [headerText]="'STOCK_STATE' | sharedLocalize" [field]="'stockStateId'"></co-simple-grid-column>
|
|
399
|
+
<co-simple-grid-column [headerText]="'STOCK_REMARK' | sharedLocalize" [field]="'stockStateRemarkId'"></co-simple-grid-column>
|
|
400
|
+
<co-simple-grid-column [headerText]="'VALUTA' | sharedLocalize" [field]="'currencyCode'"></co-simple-grid-column>
|
|
401
|
+
<co-simple-grid-column [headerText]="'RELATION_ID' | sharedLocalize" [field]="'relationId'"></co-simple-grid-column>
|
|
402
|
+
<co-simple-grid-column [headerText]="'USER' | sharedLocalize" [field]="'user'"></co-simple-grid-column>
|
|
403
|
+
<co-simple-grid-column [headerText]="'MUTATION_TYPE' | sharedLocalize" [field]="'mutationType'"></co-simple-grid-column>
|
|
404
|
+
<co-simple-grid-column [headerText]="'STICKER' | sharedLocalize" [field]="'sticker'">
|
|
405
405
|
<ng-template #template let-row="row">
|
|
406
406
|
<co-icon class="menu-icon" [iconData]="iconCacheService.getIcon(icons.Print)" (click)="openSendMethodDialog(row)"></co-icon>
|
|
407
407
|
</ng-template>
|
|
@@ -411,23 +411,23 @@ StockInformationGridComponent.decorators = [
|
|
|
411
411
|
|
|
412
412
|
<div class="stock-button-toolbar">
|
|
413
413
|
<div class="stock-button-left-group">
|
|
414
|
-
<co-button *ngIf="activeTab === tabs[0]" [label]="'HISTORY' |
|
|
414
|
+
<co-button *ngIf="activeTab === tabs[0]" [label]="'HISTORY' | sharedLocalize" (click)="handleHistoryClick()"></co-button>
|
|
415
415
|
</div>
|
|
416
416
|
<div class="stock-button-middle-group" *ngIf="activeTab !== tabs[0]">
|
|
417
417
|
<div class="button-left">
|
|
418
|
-
<co-button [textContent]="'OK' |
|
|
418
|
+
<co-button [textContent]="'OK' | sharedLocalize" (click)="onOkClick()"></co-button>
|
|
419
419
|
</div>
|
|
420
420
|
<div class="button-right">
|
|
421
|
-
<co-button [textContent]="'CANCEL' |
|
|
421
|
+
<co-button [textContent]="'CANCEL' | sharedLocalize" (click)="onCancelClick()"></co-button>
|
|
422
422
|
</div>
|
|
423
423
|
</div>
|
|
424
424
|
|
|
425
425
|
<div class="stock-button-middle-group" *ngIf="hideOrShowLocationTab">
|
|
426
426
|
<div class="button-left">
|
|
427
|
-
<co-button [textContent]="'OK' |
|
|
427
|
+
<co-button [textContent]="'OK' | sharedLocalize" (click)="onOkClickSendLocations()"></co-button>
|
|
428
428
|
</div>
|
|
429
429
|
<div class="button-right">
|
|
430
|
-
<co-button [textContent]="'CANCEL' |
|
|
430
|
+
<co-button [textContent]="'CANCEL' | sharedLocalize" (click)="onCancelClickSendLocations()"></co-button>
|
|
431
431
|
</div>
|
|
432
432
|
</div>
|
|
433
433
|
</div>
|
|
@@ -454,4 +454,4 @@ StockInformationGridComponent.propDecorators = {
|
|
|
454
454
|
cancelButtonClicked: [{ type: Output }],
|
|
455
455
|
okButtonClicked: [{ type: Output }]
|
|
456
456
|
};
|
|
457
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staW5mb3JtYXRpb24tZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdG9jay9zdG9jay1pbmZvcm1hdGlvbi1ncmlkL3N0b2NrLWluZm9ybWF0aW9uLWdyaWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUU1RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUdyRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQXlRM0YsTUFBTSxPQUFPLDZCQUE2QjtJQXdFeEMsWUFDUyxnQkFBa0MsRUFDakMsYUFBMkI7UUFENUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQXpFckIsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFrQjFCLHdCQUFtQixHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZFLG1CQUFjLEdBQXNCLElBQUksWUFBWSxF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThQVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBbFJPLGdCQUFnQjtZQURoQixZQUFZOzs7b0JBd1JqQixTQUFTLFNBQUMsNkJBQTZCO3NDQUd2QyxLQUFLO2dDQUdMLEtBQUs7c0NBR0wsS0FBSztzQkFHTCxLQUFLO2tDQUdMLE1BQU07NkJBR04sTUFBTTtrQ0FHTixNQUFNOzhCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N0b2NrU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2Uvc3RvY2suc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge0FydGljbGVTdG9jayBhcyBBcnRpY2xlU3RvY2tCb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2suYm9cIjtcclxuaW1wb3J0IHtBcnRpY2xlU3RvY2t9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrXCI7XHJcbmltcG9ydCB7U3RvY2tIaXN0b3J5Qm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9zdG9jay1oaXN0b3J5LmJvXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrTWFuYWdlbWVudH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2stbWFuYWdlbWVudFwiO1xyXG5pbXBvcnQge0FydGljbGVEZXRhaWxzQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWRldGFpbHMuYm9cIjtcclxuaW1wb3J0IHtTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stbWFuYWdlbWVudC13YXJlaG91c2VzLmJvXCI7XHJcbmltcG9ydCB7Q29Ecm9wRG93bkxpc3RGaWVsZHN9IGZyb20gXCIuLi9zdG9jay10cmFuc2Zlci9jby1kcm9wLWRvd24tbGlzdC1maWVsZHMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVRyYW5zYWN0aW9ufSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS10cmFuc2FjdGlvblwiO1xyXG5pbXBvcnQge0FydGljbGVUcmFuc2FjdGlvbiBhcyBBcnRpY2xlVHJhbnNhY3Rpb25Cb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtdHJhbnNhY3Rpb24uYm9cIjtcclxuaW1wb3J0IHtQcmludFByaWNlU3RpY2tlcnN9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3ByaW50LXByaWNlLXN0aWNrZXJzLmJvXCI7XHJcbmltcG9ydCB7U3RvY2tMb2NhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLWxvY2F0aW9uLmJvXCI7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ib1wiO1xyXG5pbXBvcnQge1NlbmRNZXRob2RUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9zZW5kLW1ldGhvZC10eXBlLmVudW1cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXN0b2NrLWluZm9ybWF0aW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRhYi1saW5rIHNob3dcIiAqbmdJZj1cImhpZGVPclNob3dUYWJzXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWxpbmstYnV0dG9uc1wiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVUYWJDbGljayh0YWIpXCJcclxuICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInRhYlwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwidGFiID09PSBhY3RpdmVUYWJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInN0b2NrLWxpbmVcIj5cclxuICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwiYWN0aXZlVGFiVGV4dFwiPjwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1ncmlkXCI+XHJcbiAgICAgIDxjby1zaW1wbGUtZ3JpZCAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gdGFic1swXSAmJiBoaWRlT3JTaG93VGFic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJhcnRpY2xlU3RvY2tJbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpbXBsZS1ncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3dzUGVyUGFnZV09XCIyMFwiXHJcbiAgICAgID5cclxuICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1dBUkVIT1VTRScgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInd2FyZWhvdXNlTm8nXCIgW29yZGVyXT1cIjEwXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInd2FyZWhvdXNlTmFtZSdcIiBbb3JkZXJdPVwiMTFcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1NUT0NLJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIid0ZWNobmljYWxTdG9jaydcIiBbb3JkZXJdPVwiMTJcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FWQUlMQUJMRV9TVE9DSycgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInYXZhaWxhYmxlU3RvY2snXCIgW29yZGVyXT1cIjEzXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidFQ09OT01JQ0FMX1NUT0NLJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidlY29ub21pY2FsU3RvY2snXCIgW29yZGVyXT1cIjE0XCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidMT0NBVElPTicgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInbG9jYXRpb25ObydcIiBbb3JkZXJdPVwiMTVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2NhdGlvbi1saW5rXCIgW3RleHRDb250ZW50XT1cIidMT09LX0FUJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uTG9jYXRpb25DbGljayhyb3cpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgIDwvY28tc2ltcGxlLWdyaWQ+XHJcblxyXG4gICAgICA8Y28tc2ltcGxlLWdyaWQgKm5nSWY9XCJhY3RpdmVUYWIgPT09IHRhYnNbMV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaW5PcmRlckluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Jvd3NQZXJQYWdlXT1cIjIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0lOX09SREVSJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIid0cmFuc2FjdGlvbk5yJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0NVU1RPTUVSJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidjdXN0b21lck5hbWUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREFURScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyb3cudHJhbnNhY3Rpb25EYXRlIHwgZGF0ZTonZGQtTU0teXl5eSdcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FNT1VOVCcgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInYW1vdW50SW5PcmRlcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidXQVJFSE9VU0UnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3dhcmVob3VzZU51bWJlcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidERVNDUklQVElPTicgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInd2FyZWhvdXNlRGVzY3JpcHRpb24nXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInVFJBTlNGRVInIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3RyYW5zZmVyJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5EZWxpdmVyeVRydWNrKVwiIChjbGljayk9XCJoYW5kbGVTdG9ja1RyYW5zZmVyQ2xpY2soJGV2ZW50KVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RJQ0tFUicgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInc3RpY2tlcidcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUHJpbnQpXCIgKGNsaWNrKT1cIm9wZW5TZW5kTWV0aG9kRGlhbG9nKHJvdylcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkICpuZ0lmPVwiYWN0aXZlVGFiID09PSB0YWJzWzJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIm9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm93c1BlclBhZ2VdPVwiMjBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInUFVSQ0hBU0VfT1JERVJfTlInIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3RyYW5zYWN0aW9uTnInXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREFURScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyb3cudHJhbnNhY3Rpb25EYXRlIHwgZGF0ZTonZGQtTU0teXl5eSdcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FNT1VOVCcgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInYW1vdW50SW5PcmRlcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidSRVNFUlZFRCcgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCIncmVzZXJ2ZWQnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInRlJFRV9TVE9DSycgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInSW5PcmRlckZvclN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0RFTElWRVJZX0RBVEUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93LmRlbGl2ZXJ5RGF0ZSB8IGRhdGU6J2RkLU1NLXl5eXknXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgPC9jby1zaW1wbGUtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1ncmlkXCIgKm5nSWY9XCJoaWRlT3JTaG93TG9jYXRpb25UYWJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvY2stYnV0dG9uLWJhY2tcIiBbdGV4dENvbnRlbnRdPVwiJ0JBQ0tfVE9fU1RPQ0tfTElORVMnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiaGFuZGxlQmFja1RvU3RvY2tDbGljaygpXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi1yaWdodC1ncm91cFwiPlxyXG48IS0tXHJcbiAgICAgICAgICA8Y28tZHJvcC1kb3duLWxpc3QgIFsobW9kZWwpXT1cInNlbGVjdGVkV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGF0YVdhcmVIb3VzZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImRhdGFXYXJlSG91c2VGaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1dBUkVIT1VTRScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJvblNlbGVjdFdhcmVob3VzZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgPjwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbi0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbjwhLS0gICAgICBUT0RPIG1vdmUgdG8gb3duIGNvbXBvbmVudCBzdG9jay1sb2NhdGlvbi0tPlxyXG4gICAgICA8Y28tc2ltcGxlLWdyaWQgW2RhdGFdPVwiYXJ0aWNsZURldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm93c1BlclBhZ2VdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dBZGRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1Rvb2xiYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0RlbGV0ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVFZGl0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGRibENsaWNrUm93KT1cImxvY2tTZWxlY3RlZFJvdygkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInN0b2NrLWxpbmVzLWJ1dHRvblwiIFt0ZXh0Q29udGVudF09XCInQkFDS19UT19TVE9DS19MSU5FUycgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJoYW5kbGVCYWNrVG9TdG9ja0NsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0xPQ0FUSU9OJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidsb2NhdGlvbk5vJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG48IS0tXHJcbiAgICAgICAgICAgIDxjby1kcm9wLWRvd24tbGlzdCBbKG1vZGVsKV09XCJyb3cubG9jYXRpb25Ob1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJzdG9ja0xvY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImRhdGFMb2NhdGlvbkZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0xPQ0FUSU9OJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxvY2F0aW9uRHJvcGRvd25DbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPjwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbi0tPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uICpuZ0lmPVwiYXJ0aWNsZURldGFpbHNcIiBbaGVhZGVyVGV4dF09XCInQkFUQ0gnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ2JhdGNoTm8nXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInJvdy5iYXRjaE5vXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCQVRDSCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gKm5nSWY9XCJhcnRpY2xlRGV0YWlsc1wiIFtoZWFkZXJUZXh0XT1cIidTRVJJQUxfTk8nIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3NlcmlhbE5vJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJyb3cuc2VyaWFsTm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFUklBTF9OTycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1NUT0NLJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidhbW91bnRJblN0b2NrJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCAgWyhtb2RlbCldPVwicm93LmFtb3VudEluU3RvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTVE9DSycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiYW1vdW50SW5TdG9ja0NoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FMTE9DQVRFRCcgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInc3RvY2tBc3NpZ25lZCdcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdFRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInJvdy5zdG9ja0Fzc2lnbmVkXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidBVkFJTEFCTEVfU1RPQ0snIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ2Ftb3VudEluU3RvY2tGcmVlJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93LmFtb3VudEluU3RvY2tGcmVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidWQUxVVEEnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ2N1cnJlbmN5J1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93LmN1cnJlbmN5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidQVVJDSEFTRV9QUklDRScgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCIncHVyY2hhc2VQcmljZSdcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdFRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInJvdy5wdXJjaGFzZVByaWNlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVVBQTElFUl9OVU1CRVInIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3N1cHBsaWVyTm8nXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyb3cuc3VwcGxpZXJOb1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInVFJBTlNGRVInIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3RyYW5zZmVyJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5EZWxpdmVyeVRydWNrKVwiIChjbGljayk9XCJoYW5kbGVTdG9ja1RyYW5zZmVyQ2xpY2socm93KVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RJQ0tFUicgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInc3RpY2tlcidcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUHJpbnQpXCIgKGNsaWNrKT1cIm9wZW5TZW5kTWV0aG9kRGlhbG9nKHJvdylcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGNvLXN0b2NrLWNoYW5nZS1hbW91bnQgKm5nSWY9XCJzaG93Q2hhbmdlU3RvY2tEZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZVN0b2NrQ2hhbmdlQW1vdW50KT1cInNob3dDaGFuZ2VTdG9ja0RldGFpbHMgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGFdPVwic2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGFcIlxyXG4gICAgPlxyXG4gICAgPC9jby1zdG9jay1jaGFuZ2UtYW1vdW50PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1ncmlkXCIgKm5nSWY9XCJzaG93U3RvY2tIaXN0b3J5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1idXR0b24tbGVmdC1ncm91cFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RvY2stYnV0dG9uLWJhY2tcIiBbdGV4dENvbnRlbnRdPVwiJ0JBQ0tfVE9fU1RPQ0tfTElORVMnIHwgbG9jYWxpemVcIiAoY2xpY2spPVwiYmFja1RvU3RvY2tJbmZvcm1hdGlvbigpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkIFtkYXRhXT1cInN0b2NrSGlzdG9yeUluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Jvd3NQZXJQYWdlXT1cIjIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ01VVEFUSU9OX0RBVEUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93Lm11dGF0aW9uRGF0ZSB8IGRhdGU6J2RkLU1NLXl5eXknXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidNVVRBVElPTl9USU1FJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidtdXRhdGlvblRpbWUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInQU1PVU5UJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidhbW91bnQnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInV0FSRUhPVVNFJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIid3YXJlSG91c2VOcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidMT0NBVElPTicgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCInbG9jYXRpb25OcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidUUkFOU0FDVElPTl9UWVBFJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIid0cmFuc1R5cGUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInRE9DVU1FTlRfTlVNQkVSJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidkb2NOcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidMSU5FJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidwb3NMaW5lTnInXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RPQ0tfU1RBVEUnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3N0b2NrU3RhdGVJZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVE9DS19SRU1BUksnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ3N0b2NrU3RhdGVSZW1hcmtJZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidWQUxVVEEnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ2N1cnJlbmN5Q29kZSdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidSRUxBVElPTl9JRCcgfCBsb2NhbGl6ZVwiIFtmaWVsZF09XCIncmVsYXRpb25JZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidVU0VSJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIid1c2VyJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ01VVEFUSU9OX1RZUEUnIHwgbG9jYWxpemVcIiBbZmllbGRdPVwiJ211dGF0aW9uVHlwZSdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVElDS0VSJyB8IGxvY2FsaXplXCIgW2ZpZWxkXT1cIidzdGlja2VyJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QcmludClcIiAoY2xpY2spPVwib3BlblNlbmRNZXRob2REaWFsb2cocm93KVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgIDwvY28tc2ltcGxlLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3RvY2stYnV0dG9uLXRvb2xiYXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWJ1dHRvbi1sZWZ0LWdyb3VwXCI+XHJcbiAgICAgICAgPGNvLWJ1dHRvbiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gdGFic1swXVwiIFtsYWJlbF09XCInSElTVE9SWScgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJoYW5kbGVIaXN0b3J5Q2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWJ1dHRvbi1taWRkbGUtZ3JvdXBcIiAqbmdJZj1cImFjdGl2ZVRhYiAhPT0gdGFic1swXVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tbGVmdFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ09LJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uT2tDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ0NBTkNFTCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvbkNhbmNlbENsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RvY2stYnV0dG9uLW1pZGRsZS1ncm91cFwiICpuZ0lmPVwiaGlkZU9yU2hvd0xvY2F0aW9uVGFiXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uIFt0ZXh0Q29udGVudF09XCInT0snIHwgbG9jYWxpemVcIiAoY2xpY2spPVwib25Pa0NsaWNrU2VuZExvY2F0aW9ucygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ0NBTkNFTCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvbkNhbmNlbENsaWNrU2VuZExvY2F0aW9ucygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Y28tc2VuZC1tZXRob2QtZGlhbG9nICpuZ0lmPVwic2hvd1NlbmRNZXRob2REaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJzaG93U2VuZE1ldGhvZERpYWxvZyA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Zpc2libGVNZXRob2RzXT1cInNlbmRNZXRob2RbMV1cIlxyXG4gICAgPjwvY28tc2VuZC1tZXRob2QtZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFN0b2NrSW5mb3JtYXRpb25HcmlkQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQFZpZXdDaGlsZChTdG9ja0luZm9ybWF0aW9uR3JpZENvbXBvbmVudClcclxuICBwdWJsaWMgc3RvY2s6IFN0b2NrSW5mb3JtYXRpb25HcmlkQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlU3RvY2tJbmZvcm1hdGlvbjogQXJ0aWNsZVN0b2NrQm9bXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc3RvY2tMb2NhdGlvbkRhdGE6IEFydGljbGVTdG9ja0JvW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBTdG9ja0hpc3RvcnlCb1tdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2Zlckljb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZVN0b2NrQm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaGlzdG9yeUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FuY2VsQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBva0J1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgaW1hZ2U6IHN0cmluZztcclxuICBwdWJsaWMgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlT3JTaG93TG9jYXRpb25UYWI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1N0b2NrSGlzdG9yeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U2VuZE1ldGhvZERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgaW5PcmRlckluZm9ybWF0aW9uOiBBcnRpY2xlVHJhbnNhY3Rpb25Cb1tdO1xyXG4gIHB1YmxpYyBvcmRlckluZm9ybWF0aW9uOiBBcnRpY2xlVHJhbnNhY3Rpb25Cb1tdXHJcbiAgcHVibGljIGhpZGVPclNob3dUYWJzOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgZGF0YVdhcmVIb3VzZUNvZGU6IFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXNbXTtcclxuICBwdWJsaWMgZGF0YVdhcmVIb3VzZUZpZWxkczogQ29Ecm9wRG93bkxpc3RGaWVsZHMgPSB7IHRleHQ6IFwid2FyZWhvdXNlRGVzY3JpcHRpb25cIiwgdmFsdWU6IFwid2FyZWhvdXNlTm9cIiB9O1xyXG4gIHB1YmxpYyBkYXRhTG9jYXRpb25GaWVsZHM6IENvRHJvcERvd25MaXN0RmllbGRzID0ge3RleHQ6IFwibG9jYXRpb25Ob1wiLCB2YWx1ZTogXCJsb2NhdGlvbk5vXCJ9O1xyXG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZTogYW55O1xyXG4gIHB1YmxpYyBzZWxlY3RlZExvY2F0aW9uOiBTdG9ja0xvY2F0aW9uO1xyXG4gIHB1YmxpYyBzdG9ja0xvY2F0aW9uczogU3RvY2tMb2NhdGlvbltdO1xyXG4gIHB1YmxpYyBhcnRpY2xlU3RvY2tTZWFyY2hJbmZvOiBBcnRpY2xlU3RvY2sgPSBuZXcgQXJ0aWNsZVN0b2NrKCk7XHJcbiAgcHVibGljIGFydGljbGVEZXRhaWxzOiBBcnRpY2xlRGV0YWlsc0JvW107XHJcbiAgcHVibGljIHNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhOiBBcnRpY2xlRGV0YWlsc0JvID0gbmV3IEFydGljbGVEZXRhaWxzQm8oKTtcclxuICBwdWJsaWMgc2hvd0NoYW5nZVN0b2NrRGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhcnRpY2xlRGV0YWlsc0luZm9ybWF0aW9uOiBBcnRpY2xlU3RvY2tNYW5hZ2VtZW50ID0gbmV3IEFydGljbGVTdG9ja01hbmFnZW1lbnQoKTtcclxuICBwdWJsaWMgc2VuZE1ldGhvZDogU2VuZE1ldGhvZFR5cGVbXTtcclxuXHJcbiAgcHVibGljIHRhYnM6IHN0cmluZ1tdID0gW1xyXG4gICAgXCJTVE9DS1wiLFxyXG4gICAgXCJJTl9PUkRFUjJcIixcclxuICAgIFwiT1JERVJTMVwiXHJcbiAgXTtcclxuICBwdWJsaWMgYWN0aXZlVGFiOiBzdHJpbmcgPSB0aGlzLnRhYnNbMF07XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICBjYXNlIHRoaXMudGFic1swXTpcclxuICAgICAgICByZXR1cm4gXCJWb29ycmFhZHJlZ2Vsc1wiO1xyXG4gICAgICBjYXNlIHRoaXMudGFic1sxXTpcclxuICAgICAgICByZXR1cm4gXCJHZXZvbmRlbiBpbiBvcmRlcihzKVwiO1xyXG4gICAgICBjYXNlIHRoaXMudGFic1syXTpcclxuICAgICAgICByZXR1cm4gXCJHZXZvbmRlbiBpbiBiZXN0ZWxsaW5nZW5cIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJWb29ycmFhZGxvY2F0aWUgcmVnZWxzXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RvY2tTZXJ2aWNlOiBTdG9ja1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGFiQ2xpY2sodGFiRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWJEYXRhO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSBcIklOX09SREVSMlwiKSB7XHJcbiAgICAgIHRoaXMuZ2V0SW5PcmRlckRhdGEoKTtcclxuICAgIH0gaWYgKHRoaXMuYWN0aXZlVGFiID09PSBcIk9SREVSUzFcIikge1xyXG4gICAgICB0aGlzLmdldE9yZGVyRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTG9jYXRpb25DbGljayhkYXRhOiBBcnRpY2xlU3RvY2tCbyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlU3RvY2tTZWFyY2hJbmZvLmdvb2RJZCA9IGRhdGEuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmFydGljbGVTdG9ja1NlYXJjaEluZm8ud2FyZUhvdXNlTm8gPSBkYXRhLndhcmVob3VzZU5vLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmFydGljbGVTdG9ja1NlYXJjaEluZm8udmlld0tpbmQgPSBcIkRcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UgPSBkYXRhLndhcmVob3VzZU5vO1xyXG4gICAgaWYgKCF0aGlzLmRhdGFXYXJlSG91c2VDb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcyhkYXRhKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QXJ0aWNsZURldGFpbHMoZGF0YSk7XHJcbiAgICB0aGlzLmhpZGVPclNob3dUYWJzID0gZmFsc2U7XHJcbiAgICB0aGlzLmhpZGVPclNob3dMb2NhdGlvblRhYiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSGlzdG9yeUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oaXN0b3J5Q2xpY2tlZC5lbWl0KClcclxuICAgIHRoaXMuaGlkZU9yU2hvd0xvY2F0aW9uVGFiID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDaGFuZ2VTdG9ja0RldGFpbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuaGlkZU9yU2hvd1RhYnMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1N0b2NrSGlzdG9yeSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmFja1RvU3RvY2tJbmZvcm1hdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrSGlzdG9yeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5oaWRlT3JTaG93VGFicyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU3RvY2tUcmFuc2ZlckNsaWNrKGV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zZmVySWNvbkNsaWNrZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQmFja1RvU3RvY2tDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzWzBdO1xyXG4gICAgdGhpcy5oaWRlT3JTaG93VGFicyA9IHRydWU7XHJcbiAgICB0aGlzLmhpZGVPclNob3dMb2NhdGlvblRhYiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hcnRpY2xlRGV0YWlscyA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2VuZE1ldGhvZERpYWxvZyhkYXRhKTogdm9pZCB7XHJcbiAgICBpZiAoISh0aGlzLl9zdG9ja1NlcnZpY2UucHJpbnRMYXlvdXRQYXJhbXMgaW5zdGFuY2VvZiBQcmludFByaWNlU3RpY2tlcnMpKSB7XHJcbiAgICAgIHRoaXMuX3N0b2NrU2VydmljZS5wcmludExheW91dFBhcmFtcy5nb29kSWQgPSBkYXRhLmdvb2RJZDtcclxuICAgICAgdGhpcy5fc3RvY2tTZXJ2aWNlLnByaW50TGF5b3V0UGFyYW1zLndhcmVob3VzZSA9IGRhdGEud2FyZWhvdXNlTm87XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dTZW5kTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludFN0b2NrU3RpY2tlcnMoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0UHJpbnRTdG9ja1N0aWNrZXJzKHRoaXMuX3N0b2NrU2VydmljZS5wcmludExheW91dFBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Pa0NsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5va0J1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbEJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5EaWFsb2dDbGljayhkYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhID0gZGF0YTtcclxuICAgIHRoaXMuc2hvd0NoYW5nZVN0b2NrRGV0YWlscyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXJ0aWNsZURldGFpbHMoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAvLyBjb25zdCBpbmZvID0gbmV3IEFydGljbGVTdG9ja01hbmFnZW1lbnQoKTtcclxuICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi5nb29kSWQgPSBkYXRhLmdvb2RJZDtcclxuICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi5saW5lSWQgPSBkYXRhLmxpbmVJZDtcclxuICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi53YXJlaG91c2VOdW1iZXIgPSBkYXRhLndhcmVob3VzZU5vO1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVEZXRhaWxzKHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbikudGhlbigoZGV0YWlscykgPT4ge1xyXG4gICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXMoZGF0YTogQXJ0aWNsZVN0b2NrQm8pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKCkudGhlbigod2FyZWhvdXNlcykgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFXYXJlSG91c2VDb2RlID0gd2FyZWhvdXNlcztcclxuICAgICAgdGhpcy5zZWxlY3RlZFdhcmVob3VzZSA9IGRhdGEud2FyZWhvdXNlTm87XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0V2FyZWhvdXNlKGV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24ud2FyZWhvdXNlTnVtYmVyID0gZXZlbnQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFdhcmVob3VzZSB8fCB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRBcnRpY2xlRGV0YWlscyh0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24pLnRoZW4oKGRldGFpbHMpID0+IHtcclxuICAgICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SW5PcmRlckRhdGEoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBpbk9yZGVyRGF0YTogQXJ0aWNsZVRyYW5zYWN0aW9uID0gbmV3IEFydGljbGVUcmFuc2FjdGlvbigpO1xyXG4gICAgaW5PcmRlckRhdGEudHlwZSA9IFwiVlwiO1xyXG4gICAgaW5PcmRlckRhdGEuZ29vZElkID0gdGhpcy5hcnRpY2xlU3RvY2tJbmZvcm1hdGlvblswXS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuaW5PcmRlckluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVUcmFuc2FjdGlvbihpbk9yZGVyRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJEYXRhKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgb3JkZXJEYXRhOiBBcnRpY2xlVHJhbnNhY3Rpb24gPSBuZXcgQXJ0aWNsZVRyYW5zYWN0aW9uKCk7XHJcbiAgICBvcmRlckRhdGEudHlwZSA9IFwiSVwiO1xyXG4gICAgb3JkZXJEYXRhLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZVN0b2NrSW5mb3JtYXRpb25bMF0uZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLm9yZGVySW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0QXJ0aWNsZVRyYW5zYWN0aW9uKG9yZGVyRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Mb2NhdGlvbkRyb3Bkb3duQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tNYW5hZ2VtZW50TG9jYXRpb25zKHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UpLnRoZW4oKGxvY2F0aW9ucykgPT4ge1xyXG4gICAgICB0aGlzLnN0b2NrTG9jYXRpb25zID0gbG9jYXRpb25zO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkxvY2F0aW9uU2VsZWN0ZWQobG9jYXRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEubG9jYXRpb25ObyA9IGxvY2F0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9uT2tDbGlja1NlbmRMb2NhdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEuZ29vZElkID0gdGhpcy5hcnRpY2xlLmdvb2RJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEuZW50cnlEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEud2FyZWhvdXNlTm8gPSB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlO1xyXG4gICAgYXdhaXQgdGhpcy5fc3RvY2tTZXJ2aWNlLnVwZGF0ZUFydGljbGVEZXRhaWxzKHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEpO1xyXG4gICAgYXdhaXQgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVEZXRhaWxzKHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbikudGhlbigoZGV0YWlscykgPT4ge1xyXG4gICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2tTZW5kTG9jYXRpb25zKCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbW91bnRJblN0b2NrQ2hhbmdlZChkYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhLmFtb3VudEluU3RvY2sgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tTZWxlY3RlZFJvdyhyb3cpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5sb2NrQXJ0aWNsZURldGFpbHMocm93KTtcclxuICB9XHJcbn1cclxuIl19
|
|
457
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staW5mb3JtYXRpb24tZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdG9jay9zdG9jay1pbmZvcm1hdGlvbi1ncmlkL3N0b2NrLWluZm9ybWF0aW9uLWdyaWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUU1RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUdyRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQXlRM0YsTUFBTSxPQUFPLDZCQUE2QjtJQXdFeEMsWUFDUyxnQkFBa0MsRUFDakMsYUFBMkI7UUFENUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQXpFckIsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFrQjFCLHdCQUFtQixHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZFLG1CQUFjLEdBQXNCLElBQUksWUFBWSxF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThQVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBbFJPLGdCQUFnQjtZQURoQixZQUFZOzs7b0JBd1JqQixTQUFTLFNBQUMsNkJBQTZCO3NDQUd2QyxLQUFLO2dDQUdMLEtBQUs7c0NBR0wsS0FBSztzQkFHTCxLQUFLO2tDQUdMLE1BQU07NkJBR04sTUFBTTtrQ0FHTixNQUFNOzhCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N0b2NrU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2Uvc3RvY2suc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZVwiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge0FydGljbGVTdG9jayBhcyBBcnRpY2xlU3RvY2tCb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2suYm9cIjtcclxuaW1wb3J0IHtBcnRpY2xlU3RvY2t9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrXCI7XHJcbmltcG9ydCB7U3RvY2tIaXN0b3J5Qm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9zdG9jay1oaXN0b3J5LmJvXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrTWFuYWdlbWVudH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2stbWFuYWdlbWVudFwiO1xyXG5pbXBvcnQge0FydGljbGVEZXRhaWxzQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWRldGFpbHMuYm9cIjtcclxuaW1wb3J0IHtTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stbWFuYWdlbWVudC13YXJlaG91c2VzLmJvXCI7XHJcbmltcG9ydCB7Q29Ecm9wRG93bkxpc3RGaWVsZHN9IGZyb20gXCIuLi9zdG9jay10cmFuc2Zlci9jby1kcm9wLWRvd24tbGlzdC1maWVsZHMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVRyYW5zYWN0aW9ufSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS10cmFuc2FjdGlvblwiO1xyXG5pbXBvcnQge0FydGljbGVUcmFuc2FjdGlvbiBhcyBBcnRpY2xlVHJhbnNhY3Rpb25Cb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtdHJhbnNhY3Rpb24uYm9cIjtcclxuaW1wb3J0IHtQcmludFByaWNlU3RpY2tlcnN9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3ByaW50LXByaWNlLXN0aWNrZXJzLmJvXCI7XHJcbmltcG9ydCB7U3RvY2tMb2NhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLWxvY2F0aW9uLmJvXCI7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ib1wiO1xyXG5pbXBvcnQge1NlbmRNZXRob2RUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9zZW5kLW1ldGhvZC10eXBlLmVudW1cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXN0b2NrLWluZm9ybWF0aW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRhYi1saW5rIHNob3dcIiAqbmdJZj1cImhpZGVPclNob3dUYWJzXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWxpbmstYnV0dG9uc1wiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVUYWJDbGljayh0YWIpXCJcclxuICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInRhYlwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwidGFiID09PSBhY3RpdmVUYWJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInN0b2NrLWxpbmVcIj5cclxuICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwiYWN0aXZlVGFiVGV4dFwiPjwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1ncmlkXCI+XHJcbiAgICAgIDxjby1zaW1wbGUtZ3JpZCAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gdGFic1swXSAmJiBoaWRlT3JTaG93VGFic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJhcnRpY2xlU3RvY2tJbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpbXBsZS1ncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3dzUGVyUGFnZV09XCIyMFwiXHJcbiAgICAgID5cclxuICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1dBUkVIT1VTRScgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInd2FyZWhvdXNlTm8nXCIgW29yZGVyXT1cIjEwXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidERVNDUklQVElPTicgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInd2FyZWhvdXNlTmFtZSdcIiBbb3JkZXJdPVwiMTFcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1NUT0NLJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIid0ZWNobmljYWxTdG9jaydcIiBbb3JkZXJdPVwiMTJcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FWQUlMQUJMRV9TVE9DSycgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInYXZhaWxhYmxlU3RvY2snXCIgW29yZGVyXT1cIjEzXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidFQ09OT01JQ0FMX1NUT0NLJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidlY29ub21pY2FsU3RvY2snXCIgW29yZGVyXT1cIjE0XCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidMT0NBVElPTicgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInbG9jYXRpb25ObydcIiBbb3JkZXJdPVwiMTVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2NhdGlvbi1saW5rXCIgW3RleHRDb250ZW50XT1cIidMT09LX0FUJyB8IHNoYXJlZExvY2FsaXplXCIgKGNsaWNrKT1cIm9uTG9jYXRpb25DbGljayhyb3cpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgIDwvY28tc2ltcGxlLWdyaWQ+XHJcblxyXG4gICAgICA8Y28tc2ltcGxlLWdyaWQgKm5nSWY9XCJhY3RpdmVUYWIgPT09IHRhYnNbMV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaW5PcmRlckluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Jvd3NQZXJQYWdlXT1cIjIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0lOX09SREVSJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIid0cmFuc2FjdGlvbk5yJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0NVU1RPTUVSJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidjdXN0b21lck5hbWUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREFURScgfCBzaGFyZWRMb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyb3cudHJhbnNhY3Rpb25EYXRlIHwgZGF0ZTonZGQtTU0teXl5eSdcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FNT1VOVCcgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInYW1vdW50SW5PcmRlcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidXQVJFSE9VU0UnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3dhcmVob3VzZU51bWJlcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidERVNDUklQVElPTicgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInd2FyZWhvdXNlRGVzY3JpcHRpb24nXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInVFJBTlNGRVInIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3RyYW5zZmVyJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5EZWxpdmVyeVRydWNrKVwiIChjbGljayk9XCJoYW5kbGVTdG9ja1RyYW5zZmVyQ2xpY2soJGV2ZW50KVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RJQ0tFUicgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInc3RpY2tlcidcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUHJpbnQpXCIgKGNsaWNrKT1cIm9wZW5TZW5kTWV0aG9kRGlhbG9nKHJvdylcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkICpuZ0lmPVwiYWN0aXZlVGFiID09PSB0YWJzWzJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIm9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm93c1BlclBhZ2VdPVwiMjBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInUFVSQ0hBU0VfT1JERVJfTlInIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3RyYW5zYWN0aW9uTnInXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInREFURScgfCBzaGFyZWRMb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyb3cudHJhbnNhY3Rpb25EYXRlIHwgZGF0ZTonZGQtTU0teXl5eSdcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FNT1VOVCcgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInYW1vdW50SW5PcmRlcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidSRVNFUlZFRCcgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCIncmVzZXJ2ZWQnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInRlJFRV9TVE9DSycgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInSW5PcmRlckZvclN0b2NrJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0RFTElWRVJZX0RBVEUnIHwgc2hhcmVkTG9jYWxpemVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93LmRlbGl2ZXJ5RGF0ZSB8IGRhdGU6J2RkLU1NLXl5eXknXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgPC9jby1zaW1wbGUtZ3JpZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1ncmlkXCIgKm5nSWY9XCJoaWRlT3JTaG93TG9jYXRpb25UYWJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvY2stYnV0dG9uLWJhY2tcIiBbdGV4dENvbnRlbnRdPVwiJ0JBQ0tfVE9fU1RPQ0tfTElORVMnIHwgc2hhcmVkTG9jYWxpemVcIiAoY2xpY2spPVwiaGFuZGxlQmFja1RvU3RvY2tDbGljaygpXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi1yaWdodC1ncm91cFwiPlxyXG48IS0tXHJcbiAgICAgICAgICA8Y28tZHJvcC1kb3duLWxpc3QgIFsobW9kZWwpXT1cInNlbGVjdGVkV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGF0YVdhcmVIb3VzZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImRhdGFXYXJlSG91c2VGaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1dBUkVIT1VTRScgfCBzaGFyZWRMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJvblNlbGVjdFdhcmVob3VzZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgPjwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbi0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbjwhLS0gICAgICBUT0RPIG1vdmUgdG8gb3duIGNvbXBvbmVudCBzdG9jay1sb2NhdGlvbi0tPlxyXG4gICAgICA8Y28tc2ltcGxlLWdyaWQgW2RhdGFdPVwiYXJ0aWNsZURldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm93c1BlclBhZ2VdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dBZGRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1Rvb2xiYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0RlbGV0ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVFZGl0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGRibENsaWNrUm93KT1cImxvY2tTZWxlY3RlZFJvdygkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1sb2NhdGlvbi1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWxvY2F0aW9uLWxlZnQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInN0b2NrLWxpbmVzLWJ1dHRvblwiIFt0ZXh0Q29udGVudF09XCInQkFDS19UT19TVE9DS19MSU5FUycgfCBzaGFyZWRMb2NhbGl6ZVwiIChjbGljayk9XCJoYW5kbGVCYWNrVG9TdG9ja0NsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0xPQ0FUSU9OJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidsb2NhdGlvbk5vJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG48IS0tXHJcbiAgICAgICAgICAgIDxjby1kcm9wLWRvd24tbGlzdCBbKG1vZGVsKV09XCJyb3cubG9jYXRpb25Ob1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJzdG9ja0xvY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImRhdGFMb2NhdGlvbkZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0xPQ0FUSU9OJyB8IHNoYXJlZExvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxvY2F0aW9uRHJvcGRvd25DbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPjwvY28tZHJvcC1kb3duLWxpc3Q+XHJcbi0tPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uICpuZ0lmPVwiYXJ0aWNsZURldGFpbHNcIiBbaGVhZGVyVGV4dF09XCInQkFUQ0gnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ2JhdGNoTm8nXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInJvdy5iYXRjaE5vXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidCQVRDSCcgfCBzaGFyZWRMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gKm5nSWY9XCJhcnRpY2xlRGV0YWlsc1wiIFtoZWFkZXJUZXh0XT1cIidTRVJJQUxfTk8nIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3NlcmlhbE5vJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJyb3cuc2VyaWFsTm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFUklBTF9OTycgfCBzaGFyZWRMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ1NUT0NLJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidhbW91bnRJblN0b2NrJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taW5wdXQtdGV4dCAgWyhtb2RlbCldPVwicm93LmFtb3VudEluU3RvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTVE9DSycgfCBzaGFyZWRMb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiYW1vdW50SW5TdG9ja0NoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ0FMTE9DQVRFRCcgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInc3RvY2tBc3NpZ25lZCdcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdFRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInJvdy5zdG9ja0Fzc2lnbmVkXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidBVkFJTEFCTEVfU1RPQ0snIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ2Ftb3VudEluU3RvY2tGcmVlJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93LmFtb3VudEluU3RvY2tGcmVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidWQUxVVEEnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ2N1cnJlbmN5J1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlZGl0VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93LmN1cnJlbmN5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidQVVJDSEFTRV9QUklDRScgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCIncHVyY2hhc2VQcmljZSdcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdFRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInJvdy5wdXJjaGFzZVByaWNlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVVBQTElFUl9OVU1CRVInIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3N1cHBsaWVyTm8nXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJyb3cuc3VwcGxpZXJOb1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInVFJBTlNGRVInIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3RyYW5zZmVyJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5EZWxpdmVyeVRydWNrKVwiIChjbGljayk9XCJoYW5kbGVTdG9ja1RyYW5zZmVyQ2xpY2socm93KVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RJQ0tFUicgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInc3RpY2tlcidcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUHJpbnQpXCIgKGNsaWNrKT1cIm9wZW5TZW5kTWV0aG9kRGlhbG9nKHJvdylcIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICA8L2NvLXNpbXBsZS1ncmlkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGNvLXN0b2NrLWNoYW5nZS1hbW91bnQgKm5nSWY9XCJzaG93Q2hhbmdlU3RvY2tEZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZVN0b2NrQ2hhbmdlQW1vdW50KT1cInNob3dDaGFuZ2VTdG9ja0RldGFpbHMgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGFdPVwic2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGFcIlxyXG4gICAgPlxyXG4gICAgPC9jby1zdG9jay1jaGFuZ2UtYW1vdW50PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdG9jay1ncmlkXCIgKm5nSWY9XCJzaG93U3RvY2tIaXN0b3J5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay1idXR0b24tbGVmdC1ncm91cFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RvY2stYnV0dG9uLWJhY2tcIiBbdGV4dENvbnRlbnRdPVwiJ0JBQ0tfVE9fU1RPQ0tfTElORVMnIHwgc2hhcmVkTG9jYWxpemVcIiAoY2xpY2spPVwiYmFja1RvU3RvY2tJbmZvcm1hdGlvbigpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNvLXNpbXBsZS1ncmlkIFtkYXRhXT1cInN0b2NrSGlzdG9yeUluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Jvd3NQZXJQYWdlXT1cIjIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ01VVEFUSU9OX0RBVEUnIHwgc2hhcmVkTG9jYWxpemVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicm93Lm11dGF0aW9uRGF0ZSB8IGRhdGU6J2RkLU1NLXl5eXknXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidNVVRBVElPTl9USU1FJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidtdXRhdGlvblRpbWUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInQU1PVU5UJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidhbW91bnQnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInV0FSRUhPVVNFJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIid3YXJlSG91c2VOcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidMT0NBVElPTicgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCInbG9jYXRpb25OcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidUUkFOU0FDVElPTl9UWVBFJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIid0cmFuc1R5cGUnXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInRE9DVU1FTlRfTlVNQkVSJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidkb2NOcidcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidMSU5FJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidwb3NMaW5lTnInXCI+PC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNvbHVtbiBbaGVhZGVyVGV4dF09XCInU1RPQ0tfU1RBVEUnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3N0b2NrU3RhdGVJZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVE9DS19SRU1BUksnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ3N0b2NrU3RhdGVSZW1hcmtJZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidWQUxVVEEnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ2N1cnJlbmN5Q29kZSdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidSRUxBVElPTl9JRCcgfCBzaGFyZWRMb2NhbGl6ZVwiIFtmaWVsZF09XCIncmVsYXRpb25JZCdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidVU0VSJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIid1c2VyJ1wiPjwvY28tc2ltcGxlLWdyaWQtY29sdW1uPlxyXG4gICAgICAgIDxjby1zaW1wbGUtZ3JpZC1jb2x1bW4gW2hlYWRlclRleHRdPVwiJ01VVEFUSU9OX1RZUEUnIHwgc2hhcmVkTG9jYWxpemVcIiBbZmllbGRdPVwiJ211dGF0aW9uVHlwZSdcIj48L2NvLXNpbXBsZS1ncmlkLWNvbHVtbj5cclxuICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY29sdW1uIFtoZWFkZXJUZXh0XT1cIidTVElDS0VSJyB8IHNoYXJlZExvY2FsaXplXCIgW2ZpZWxkXT1cIidzdGlja2VyJ1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwibWVudS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QcmludClcIiAoY2xpY2spPVwib3BlblNlbmRNZXRob2REaWFsb2cocm93KVwiPjwvY28taWNvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jb2x1bW4+XHJcbiAgICAgIDwvY28tc2ltcGxlLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3RvY2stYnV0dG9uLXRvb2xiYXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWJ1dHRvbi1sZWZ0LWdyb3VwXCI+XHJcbiAgICAgICAgPGNvLWJ1dHRvbiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gdGFic1swXVwiIFtsYWJlbF09XCInSElTVE9SWScgfCBzaGFyZWRMb2NhbGl6ZVwiIChjbGljayk9XCJoYW5kbGVIaXN0b3J5Q2xpY2soKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLWJ1dHRvbi1taWRkbGUtZ3JvdXBcIiAqbmdJZj1cImFjdGl2ZVRhYiAhPT0gdGFic1swXVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tbGVmdFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ09LJyB8IHNoYXJlZExvY2FsaXplXCIgKGNsaWNrKT1cIm9uT2tDbGljaygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ0NBTkNFTCcgfCBzaGFyZWRMb2NhbGl6ZVwiIChjbGljayk9XCJvbkNhbmNlbENsaWNrKClcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RvY2stYnV0dG9uLW1pZGRsZS1ncm91cFwiICpuZ0lmPVwiaGlkZU9yU2hvd0xvY2F0aW9uVGFiXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+XHJcbiAgICAgICAgICA8Y28tYnV0dG9uIFt0ZXh0Q29udGVudF09XCInT0snIHwgc2hhcmVkTG9jYWxpemVcIiAoY2xpY2spPVwib25Pa0NsaWNrU2VuZExvY2F0aW9ucygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGNvLWJ1dHRvbiBbdGV4dENvbnRlbnRdPVwiJ0NBTkNFTCcgfCBzaGFyZWRMb2NhbGl6ZVwiIChjbGljayk9XCJvbkNhbmNlbENsaWNrU2VuZExvY2F0aW9ucygpXCI+PC9jby1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Y28tc2VuZC1tZXRob2QtZGlhbG9nICpuZ0lmPVwic2hvd1NlbmRNZXRob2REaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJzaG93U2VuZE1ldGhvZERpYWxvZyA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Zpc2libGVNZXRob2RzXT1cInNlbmRNZXRob2RbMV1cIlxyXG4gICAgPjwvY28tc2VuZC1tZXRob2QtZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFN0b2NrSW5mb3JtYXRpb25HcmlkQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQFZpZXdDaGlsZChTdG9ja0luZm9ybWF0aW9uR3JpZENvbXBvbmVudClcclxuICBwdWJsaWMgc3RvY2s6IFN0b2NrSW5mb3JtYXRpb25HcmlkQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlU3RvY2tJbmZvcm1hdGlvbjogQXJ0aWNsZVN0b2NrQm9bXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc3RvY2tMb2NhdGlvbkRhdGE6IEFydGljbGVTdG9ja0JvW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBTdG9ja0hpc3RvcnlCb1tdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2Zlckljb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZVN0b2NrQm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgaGlzdG9yeUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FuY2VsQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBva0J1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgaW1hZ2U6IHN0cmluZztcclxuICBwdWJsaWMgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBoaWRlT3JTaG93TG9jYXRpb25UYWI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1N0b2NrSGlzdG9yeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U2VuZE1ldGhvZERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgaW5PcmRlckluZm9ybWF0aW9uOiBBcnRpY2xlVHJhbnNhY3Rpb25Cb1tdO1xyXG4gIHB1YmxpYyBvcmRlckluZm9ybWF0aW9uOiBBcnRpY2xlVHJhbnNhY3Rpb25Cb1tdXHJcbiAgcHVibGljIGhpZGVPclNob3dUYWJzOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgZGF0YVdhcmVIb3VzZUNvZGU6IFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXNbXTtcclxuICBwdWJsaWMgZGF0YVdhcmVIb3VzZUZpZWxkczogQ29Ecm9wRG93bkxpc3RGaWVsZHMgPSB7IHRleHQ6IFwid2FyZWhvdXNlRGVzY3JpcHRpb25cIiwgdmFsdWU6IFwid2FyZWhvdXNlTm9cIiB9O1xyXG4gIHB1YmxpYyBkYXRhTG9jYXRpb25GaWVsZHM6IENvRHJvcERvd25MaXN0RmllbGRzID0ge3RleHQ6IFwibG9jYXRpb25Ob1wiLCB2YWx1ZTogXCJsb2NhdGlvbk5vXCJ9O1xyXG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZTogYW55O1xyXG4gIHB1YmxpYyBzZWxlY3RlZExvY2F0aW9uOiBTdG9ja0xvY2F0aW9uO1xyXG4gIHB1YmxpYyBzdG9ja0xvY2F0aW9uczogU3RvY2tMb2NhdGlvbltdO1xyXG4gIHB1YmxpYyBhcnRpY2xlU3RvY2tTZWFyY2hJbmZvOiBBcnRpY2xlU3RvY2sgPSBuZXcgQXJ0aWNsZVN0b2NrKCk7XHJcbiAgcHVibGljIGFydGljbGVEZXRhaWxzOiBBcnRpY2xlRGV0YWlsc0JvW107XHJcbiAgcHVibGljIHNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhOiBBcnRpY2xlRGV0YWlsc0JvID0gbmV3IEFydGljbGVEZXRhaWxzQm8oKTtcclxuICBwdWJsaWMgc2hvd0NoYW5nZVN0b2NrRGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhcnRpY2xlRGV0YWlsc0luZm9ybWF0aW9uOiBBcnRpY2xlU3RvY2tNYW5hZ2VtZW50ID0gbmV3IEFydGljbGVTdG9ja01hbmFnZW1lbnQoKTtcclxuICBwdWJsaWMgc2VuZE1ldGhvZDogU2VuZE1ldGhvZFR5cGVbXTtcclxuXHJcbiAgcHVibGljIHRhYnM6IHN0cmluZ1tdID0gW1xyXG4gICAgXCJTVE9DS1wiLFxyXG4gICAgXCJJTl9PUkRFUjJcIixcclxuICAgIFwiT1JERVJTMVwiXHJcbiAgXTtcclxuICBwdWJsaWMgYWN0aXZlVGFiOiBzdHJpbmcgPSB0aGlzLnRhYnNbMF07XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICBjYXNlIHRoaXMudGFic1swXTpcclxuICAgICAgICByZXR1cm4gXCJWb29ycmFhZHJlZ2Vsc1wiO1xyXG4gICAgICBjYXNlIHRoaXMudGFic1sxXTpcclxuICAgICAgICByZXR1cm4gXCJHZXZvbmRlbiBpbiBvcmRlcihzKVwiO1xyXG4gICAgICBjYXNlIHRoaXMudGFic1syXTpcclxuICAgICAgICByZXR1cm4gXCJHZXZvbmRlbiBpbiBiZXN0ZWxsaW5nZW5cIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJWb29ycmFhZGxvY2F0aWUgcmVnZWxzXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RvY2tTZXJ2aWNlOiBTdG9ja1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGFiQ2xpY2sodGFiRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWJEYXRhO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSBcIklOX09SREVSMlwiKSB7XHJcbiAgICAgIHRoaXMuZ2V0SW5PcmRlckRhdGEoKTtcclxuICAgIH0gaWYgKHRoaXMuYWN0aXZlVGFiID09PSBcIk9SREVSUzFcIikge1xyXG4gICAgICB0aGlzLmdldE9yZGVyRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTG9jYXRpb25DbGljayhkYXRhOiBBcnRpY2xlU3RvY2tCbyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlU3RvY2tTZWFyY2hJbmZvLmdvb2RJZCA9IGRhdGEuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmFydGljbGVTdG9ja1NlYXJjaEluZm8ud2FyZUhvdXNlTm8gPSBkYXRhLndhcmVob3VzZU5vLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmFydGljbGVTdG9ja1NlYXJjaEluZm8udmlld0tpbmQgPSBcIkRcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UgPSBkYXRhLndhcmVob3VzZU5vO1xyXG4gICAgaWYgKCF0aGlzLmRhdGFXYXJlSG91c2VDb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcyhkYXRhKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QXJ0aWNsZURldGFpbHMoZGF0YSk7XHJcbiAgICB0aGlzLmhpZGVPclNob3dUYWJzID0gZmFsc2U7XHJcbiAgICB0aGlzLmhpZGVPclNob3dMb2NhdGlvblRhYiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlSGlzdG9yeUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oaXN0b3J5Q2xpY2tlZC5lbWl0KClcclxuICAgIHRoaXMuaGlkZU9yU2hvd0xvY2F0aW9uVGFiID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDaGFuZ2VTdG9ja0RldGFpbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuaGlkZU9yU2hvd1RhYnMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1N0b2NrSGlzdG9yeSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmFja1RvU3RvY2tJbmZvcm1hdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrSGlzdG9yeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5oaWRlT3JTaG93VGFicyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU3RvY2tUcmFuc2ZlckNsaWNrKGV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zZmVySWNvbkNsaWNrZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQmFja1RvU3RvY2tDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzWzBdO1xyXG4gICAgdGhpcy5oaWRlT3JTaG93VGFicyA9IHRydWU7XHJcbiAgICB0aGlzLmhpZGVPclNob3dMb2NhdGlvblRhYiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hcnRpY2xlRGV0YWlscyA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2VuZE1ldGhvZERpYWxvZyhkYXRhKTogdm9pZCB7XHJcbiAgICBpZiAoISh0aGlzLl9zdG9ja1NlcnZpY2UucHJpbnRMYXlvdXRQYXJhbXMgaW5zdGFuY2VvZiBQcmludFByaWNlU3RpY2tlcnMpKSB7XHJcbiAgICAgIHRoaXMuX3N0b2NrU2VydmljZS5wcmludExheW91dFBhcmFtcy5nb29kSWQgPSBkYXRhLmdvb2RJZDtcclxuICAgICAgdGhpcy5fc3RvY2tTZXJ2aWNlLnByaW50TGF5b3V0UGFyYW1zLndhcmVob3VzZSA9IGRhdGEud2FyZWhvdXNlTm87XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dTZW5kTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmludFN0b2NrU3RpY2tlcnMoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0UHJpbnRTdG9ja1N0aWNrZXJzKHRoaXMuX3N0b2NrU2VydmljZS5wcmludExheW91dFBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Pa0NsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5va0J1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbmNlbEJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5EaWFsb2dDbGljayhkYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhID0gZGF0YTtcclxuICAgIHRoaXMuc2hvd0NoYW5nZVN0b2NrRGV0YWlscyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QXJ0aWNsZURldGFpbHMoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICAvLyBjb25zdCBpbmZvID0gbmV3IEFydGljbGVTdG9ja01hbmFnZW1lbnQoKTtcclxuICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi5nb29kSWQgPSBkYXRhLmdvb2RJZDtcclxuICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi5saW5lSWQgPSBkYXRhLmxpbmVJZDtcclxuICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi53YXJlaG91c2VOdW1iZXIgPSBkYXRhLndhcmVob3VzZU5vO1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVEZXRhaWxzKHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbikudGhlbigoZGV0YWlscykgPT4ge1xyXG4gICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXMoZGF0YTogQXJ0aWNsZVN0b2NrQm8pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKCkudGhlbigod2FyZWhvdXNlcykgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFXYXJlSG91c2VDb2RlID0gd2FyZWhvdXNlcztcclxuICAgICAgdGhpcy5zZWxlY3RlZFdhcmVob3VzZSA9IGRhdGEud2FyZWhvdXNlTm87XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0V2FyZWhvdXNlKGV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24ud2FyZWhvdXNlTnVtYmVyID0gZXZlbnQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFdhcmVob3VzZSB8fCB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRBcnRpY2xlRGV0YWlscyh0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24pLnRoZW4oKGRldGFpbHMpID0+IHtcclxuICAgICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SW5PcmRlckRhdGEoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBpbk9yZGVyRGF0YTogQXJ0aWNsZVRyYW5zYWN0aW9uID0gbmV3IEFydGljbGVUcmFuc2FjdGlvbigpO1xyXG4gICAgaW5PcmRlckRhdGEudHlwZSA9IFwiVlwiO1xyXG4gICAgaW5PcmRlckRhdGEuZ29vZElkID0gdGhpcy5hcnRpY2xlU3RvY2tJbmZvcm1hdGlvblswXS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuaW5PcmRlckluZm9ybWF0aW9uID0gYXdhaXQgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVUcmFuc2FjdGlvbihpbk9yZGVyRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJEYXRhKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgb3JkZXJEYXRhOiBBcnRpY2xlVHJhbnNhY3Rpb24gPSBuZXcgQXJ0aWNsZVRyYW5zYWN0aW9uKCk7XHJcbiAgICBvcmRlckRhdGEudHlwZSA9IFwiSVwiO1xyXG4gICAgb3JkZXJEYXRhLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZVN0b2NrSW5mb3JtYXRpb25bMF0uZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLm9yZGVySW5mb3JtYXRpb24gPSBhd2FpdCB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0QXJ0aWNsZVRyYW5zYWN0aW9uKG9yZGVyRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Mb2NhdGlvbkRyb3Bkb3duQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tNYW5hZ2VtZW50TG9jYXRpb25zKHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UpLnRoZW4oKGxvY2F0aW9ucykgPT4ge1xyXG4gICAgICB0aGlzLnN0b2NrTG9jYXRpb25zID0gbG9jYXRpb25zO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkxvY2F0aW9uU2VsZWN0ZWQobG9jYXRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEubG9jYXRpb25ObyA9IGxvY2F0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9uT2tDbGlja1NlbmRMb2NhdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEuZ29vZElkID0gdGhpcy5hcnRpY2xlLmdvb2RJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEuZW50cnlEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEud2FyZWhvdXNlTm8gPSB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlO1xyXG4gICAgYXdhaXQgdGhpcy5fc3RvY2tTZXJ2aWNlLnVwZGF0ZUFydGljbGVEZXRhaWxzKHRoaXMuc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGEpO1xyXG4gICAgYXdhaXQgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVEZXRhaWxzKHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbikudGhlbigoZGV0YWlscykgPT4ge1xyXG4gICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2tTZW5kTG9jYXRpb25zKCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbW91bnRJblN0b2NrQ2hhbmdlZChkYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXJ0aWNsZURldGFpbHNEYXRhLmFtb3VudEluU3RvY2sgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvY2tTZWxlY3RlZFJvdyhyb3cpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5sb2NrQXJ0aWNsZURldGFpbHMocm93KTtcclxuICB9XHJcbn1cclxuIl19
|