@fundamental-ngx/core 0.35.2-rc.0 → 0.35.2-rc.3
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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +17 -26
- package/esm2020/input-group/input-group.component.mjs +3 -3
- package/esm2020/select/select.component.mjs +1 -2
- package/esm2020/wizard/wizard.component.mjs +4 -3
- package/esm2020/wizard/wizard.module.mjs +5 -4
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +0 -1
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-wizard.mjs +7 -5
- package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +0 -1
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-wizard.mjs +7 -5
- package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/esm2020/fixed-card-layout.component.mjs +17 -26
- package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
- package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +16 -25
- package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fixed-card-layout/fixed-card-layout.component.d.ts +4 -6
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/esm2020/input-group.component.mjs +3 -3
- package/input-group/fesm2015/fundamental-ngx-core-input-group.mjs +2 -2
- package/input-group/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/input-group/fesm2020/fundamental-ngx-core-input-group.mjs +2 -2
- package/input-group/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/overflow-layout/package.json +12 -12
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/esm2020/select.component.mjs +1 -2
- package/select/fesm2015/fundamental-ngx-core-select.mjs +0 -1
- package/select/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/select/fesm2020/fundamental-ngx-core-select.mjs +0 -1
- package/select/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/theming/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/esm2020/wizard.component.mjs +4 -3
- package/wizard/esm2020/wizard.module.mjs +5 -4
- package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs +7 -5
- package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs +7 -5
- package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/wizard/package.json +1 -1
- package/wizard/wizard.module.d.ts +2 -1
package/action-bar/package.json
CHANGED
package/alert/package.json
CHANGED
package/avatar/package.json
CHANGED
package/bar/package.json
CHANGED
package/breadcrumb/package.json
CHANGED
package/button/package.json
CHANGED
package/calendar/package.json
CHANGED
package/card/package.json
CHANGED
package/carousel/package.json
CHANGED
package/checkbox/package.json
CHANGED
package/combobox/package.json
CHANGED
package/date-picker/package.json
CHANGED
package/datetime/package.json
CHANGED
package/dialog/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren,
|
|
|
2
2
|
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
3
3
|
import { CdkDropList } from '@angular/cdk/drag-drop';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
|
-
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { debounceTime, delay, takeUntil } from 'rxjs/operators';
|
|
6
6
|
import { resizeObservable, RtlService } from '@fundamental-ngx/core/utils';
|
|
7
7
|
import { FixedCardLayoutItemComponent } from './fixed-card-layout-item/fixed-card-layout-item.component';
|
|
8
8
|
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
@@ -139,14 +139,6 @@ export class FixedCardLayoutComponent {
|
|
|
139
139
|
this._accessibilitySetup();
|
|
140
140
|
}
|
|
141
141
|
/** @hidden */
|
|
142
|
-
ngAfterViewChecked() {
|
|
143
|
-
/**
|
|
144
|
-
* Update column layout when orientation of screen changes.
|
|
145
|
-
* actual width is returned when view is stable. In AfterViewInit, correct value does not come.
|
|
146
|
-
*/
|
|
147
|
-
this.updateLayout();
|
|
148
|
-
}
|
|
149
|
-
/** @hidden */
|
|
150
142
|
ngOnChanges(changes) {
|
|
151
143
|
if (!this._cards?.length) {
|
|
152
144
|
return;
|
|
@@ -172,7 +164,7 @@ export class FixedCardLayoutComponent {
|
|
|
172
164
|
}
|
|
173
165
|
/** Distribute cards on window resize */
|
|
174
166
|
updateLayout() {
|
|
175
|
-
if (!this._cards.length) {
|
|
167
|
+
if (!this._cards.length || !this._availableWidth) {
|
|
176
168
|
return;
|
|
177
169
|
}
|
|
178
170
|
const possibleNumberOfColumns = getNumberOfColumns(this._availableWidth, this.cardMinimumWidth);
|
|
@@ -188,19 +180,6 @@ export class FixedCardLayoutComponent {
|
|
|
188
180
|
}
|
|
189
181
|
this._setColumnsWidth();
|
|
190
182
|
}
|
|
191
|
-
/** @hidden Calculate container height basing on the card wrapper columns */
|
|
192
|
-
_calculateContainerHeight(additionalSpace = 0) {
|
|
193
|
-
this._changeDetector.detectChanges();
|
|
194
|
-
const wrapperColumns = this._cardColumns.map((column) => column
|
|
195
|
-
.map((card) => this._cardWrappers.find((wrapper) => wrapper.getSortedItems()[0].data === card)?.element)
|
|
196
|
-
.filter((v) => !!v));
|
|
197
|
-
const columnsHeights = wrapperColumns
|
|
198
|
-
.map((column) => column.map((card) => card.nativeElement.getBoundingClientRect().height))
|
|
199
|
-
.map((column) => column.reduce((height, cardHeight) => (height += cardHeight), 0));
|
|
200
|
-
// +4px because it's the top & bottom borders of card placeholder
|
|
201
|
-
this._containerHeight = Math.max(...columnsHeights) + 4 + additionalSpace;
|
|
202
|
-
this._changeDetector.detectChanges();
|
|
203
|
-
}
|
|
204
183
|
/** @hidden */
|
|
205
184
|
_onDropListExited() {
|
|
206
185
|
this._shouldCalculateContainerHeight = true;
|
|
@@ -271,7 +250,7 @@ export class FixedCardLayoutComponent {
|
|
|
271
250
|
}
|
|
272
251
|
/** @hidden Listen card change and distribute cards on column change */
|
|
273
252
|
_listenOnCardsChange() {
|
|
274
|
-
this._cards.changes.subscribe(() => {
|
|
253
|
+
this._cards.changes.pipe(delay(0)).subscribe(() => {
|
|
275
254
|
this._processCards();
|
|
276
255
|
this._updateColumns();
|
|
277
256
|
});
|
|
@@ -287,7 +266,6 @@ export class FixedCardLayoutComponent {
|
|
|
287
266
|
this._cardsArray = this._cards
|
|
288
267
|
.toArray()
|
|
289
268
|
.sort((firstCard, secondCard) => firstCard.fdCardDef - secondCard.fdCardDef);
|
|
290
|
-
this._changeDetector.detectChanges();
|
|
291
269
|
this.updateLayout();
|
|
292
270
|
}
|
|
293
271
|
/** @hidden Distribute cards among columns to arrange them in "Z" flow */
|
|
@@ -330,6 +308,19 @@ export class FixedCardLayoutComponent {
|
|
|
330
308
|
this._changeDetector.detectChanges();
|
|
331
309
|
}
|
|
332
310
|
}
|
|
311
|
+
/** @hidden Calculate container height basing on the card wrapper columns */
|
|
312
|
+
_calculateContainerHeight(additionalSpace = 0) {
|
|
313
|
+
this._changeDetector.detectChanges();
|
|
314
|
+
const wrapperColumns = this._cardColumns.map((column) => column
|
|
315
|
+
.map((card) => this._cardWrappers.find((wrapper) => wrapper.getSortedItems()[0].data === card)?.element)
|
|
316
|
+
.filter((v) => !!v));
|
|
317
|
+
const columnsHeights = wrapperColumns
|
|
318
|
+
.map((column) => column.map((card) => card.nativeElement.getBoundingClientRect().height))
|
|
319
|
+
.map((column) => column.reduce((height, cardHeight) => (height += cardHeight), 0));
|
|
320
|
+
// +4px because it's the top & bottom borders of card placeholder
|
|
321
|
+
this._containerHeight = Math.max(...columnsHeights) + 4 + additionalSpace;
|
|
322
|
+
this._changeDetector.detectChanges();
|
|
323
|
+
}
|
|
333
324
|
}
|
|
334
325
|
FixedCardLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: FixedCardLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
335
326
|
FixedCardLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: FixedCardLayoutComponent, selector: "fd-fixed-card-layout", inputs: { disableDragDrop: "disableDragDrop", dragStartDelay: "dragStartDelay", cardMinimumWidth: "cardMinimumWidth", columnsWidthConfig: "columnsWidthConfig", maxColumns: "maxColumns" }, outputs: { layoutChange: "layoutChange", cardDraggedDropped: "cardDraggedDropped" }, host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "fd-fixed-card-layout" }, queries: [{ propertyName: "_cards", predicate: CardDefinitionDirective }], viewQueries: [{ propertyName: "_layout", first: true, predicate: ["layout"], descendants: true }, { propertyName: "_cardContainers", predicate: FixedCardLayoutItemComponent, descendants: true }, { propertyName: "_cardWrappers", predicate: ["dropList"], descendants: true, read: CdkDropList }], usesOnChanges: true, ngImport: i0, template: "<div\n #layout\n cdkDropListGroup\n fdDndKeyboardGroup\n class=\"fd-fixed-card-layout__card-layout fd-fixed-card-layout__card-layout--columns-{{ this._numberOfColumns }}\"\n [style.height]=\"_containerHeight + 'px'\"\n [groups]=\"_cardColumns\"\n orientation=\"horizontal\"\n [customMoveFn]=\"_customMoveFn\"\n [customTransferFn]=\"_customTransferFn\"\n [disableKeyboardDragDrop]=\"disableDragDrop\"\n [cdkDropListGroupDisabled]=\"disableDragDrop\"\n [attr.dir]=\"_dir\"\n>\n <div\n #dropList\n *ngFor=\"let card of _cardsArray; let cardIndex = index\"\n cdkDropList\n cdkDropListSortingDisabled\n class=\"fd-fixed-card-layout__card\"\n [class.fd-fixed-card-layout__card--single]=\"_singleItemColumns.has(card.fdCardDef)\"\n [style.min-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [style.max-width.px]=\"_columnsWidth.get(card.fdCardDef)\"\n [cdkDropListData]=\"cardIndex\"\n [cdkDropListEnterPredicate]=\"_enterPredicate\"\n (cdkDropListEntered)=\"_onDropListEntered($event)\"\n (cdkDropListExited)=\"_onDropListExited()\"\n >\n <div\n cdkDrag\n fdDndKeyboardItem\n tabindex=\"0\"\n cdkDragPreviewClass=\"fd-fixed-card-layout__card-preview\"\n [cdkDragData]=\"card\"\n [cdkDragStartDelay]=\"dragStartDelay\"\n [itemIndex]=\"_itemIndexes.get(card.fdCardDef)!\"\n [groupIndex]=\"_groupIndexes.get(card.fdCardDef)!\"\n (cdkDragDropped)=\"_onDragDropped($event)\"\n (cdkDragStarted)=\"_setPlaceholderStyle(false)\"\n >\n <fd-fixed-card-layout-item>\n <ng-container *ngTemplateOutlet=\"card?.template || null\"> </ng-container>\n </fd-fixed-card-layout-item>\n\n <div *cdkDragPlaceholder class=\"fd-fixed-card-layout__card-placeholder\" [style]=\"_placeholderMargin\">\n <ng-container *ngTemplateOutlet=\"card?.template || null\"></ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngFor=\"let column of _cardColumns; let last = last; let index = index\">\n <div *ngIf=\"!last\" class=\"fd-fixed-card-layout__clearfix\" [style.order]=\"index + 1\"></div>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.1-rc.1\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-fixed-card-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-fixed-card-layout:before,.fd-fixed-card-layout:after{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;margin-left:-1rem;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;flex-direction:column;margin-top:-1rem}.fd-fixed-card-layout__card-layout:before,.fd-fixed-card-layout__card-layout:after{box-sizing:inherit;font-size:inherit}[dir=rtl] .fd-fixed-card-layout__card-layout,.fd-fixed-card-layout__card-layout[dir=rtl]{margin-right:-1rem;margin-left:0}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card{width:50%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-2 .fd-fixed-card-layout__card:nth-of-type(2n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card{width:33.3333333333%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-3 .fd-fixed-card-layout__card:nth-of-type(3n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card{width:25%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-4 .fd-fixed-card-layout__card:nth-of-type(4n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card{width:20%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-5 .fd-fixed-card-layout__card:nth-of-type(5n + 4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card{width:16.6666666667%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n + 4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-6 .fd-fixed-card-layout__card:nth-of-type(6n + 5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card{width:14.2857142857%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n + 4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n + 5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-7 .fd-fixed-card-layout__card:nth-of-type(7n + 6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card{width:12.5%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-8 .fd-fixed-card-layout__card:nth-of-type(8n + 7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card{width:11.1111111111%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n){order:9}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-9 .fd-fixed-card-layout__card:nth-of-type(9n + 8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card{width:10%}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n){order:10}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 1){order:1}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 2){order:2}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 3){order:3}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 4){order:4}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 5){order:5}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 6){order:6}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 7){order:7}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 8){order:8}.fd-fixed-card-layout__card-layout.fd-fixed-card-layout__card-layout--columns-10 .fd-fixed-card-layout__card:nth-of-type(10n + 9){order:9}.fd-fixed-card-layout__card,.fd-fixed-card-layout__card-placeholder{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;min-width:20rem;min-height:.0625rem}.fd-fixed-card-layout__card:before,.fd-fixed-card-layout__card:after,.fd-fixed-card-layout__card-placeholder:before,.fd-fixed-card-layout__card-placeholder:after{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{padding-left:1rem;order:1;padding-top:1rem}[dir=rtl] .fd-fixed-card-layout__card,.fd-fixed-card-layout__card[dir=rtl]{padding-right:1rem;padding-left:0}.fd-fixed-card-layout__card--single{flex-basis:100%}.fd-fixed-card-layout__card:empty{padding-top:0}.fd-fixed-card-layout__card-placeholder{opacity:.3;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);cursor:grabbing}.fd-fixed-card-layout__card-preview{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;padding:0;margin:0;border:0;box-sizing:border-box;border-radius:var(--sapElement_BorderCornerRadius);box-shadow:var(--sapContent_Shadow2)}.fd-fixed-card-layout__card-preview:before,.fd-fixed-card-layout__card-preview:after{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__clearfix{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;width:0;flex-basis:100%}.fd-fixed-card-layout__clearfix:before,.fd-fixed-card-layout__clearfix:after{box-sizing:inherit;font-size:inherit}.fd-fixed-card-layout__card{width:100%}.fd-fixed-card-layout__card-placeholder{width:100%;min-width:100%;max-width:100%}\n"], components: [{ type: i2.FixedCardLayoutItemComponent, selector: "fd-fixed-card-layout-item" }], directives: [{ type: i3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { type: i1.DndKeyboardGroupDirective, selector: "[fdDndKeyboardGroup]", inputs: ["groups", "disableKeyboardDragDrop", "orientation", "customMoveFn", "customTransferFn"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1.DndKeyboardItemDirective, selector: "[fdDndKeyboardItem]", inputs: ["itemIndex", "groupIndex"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
@@ -396,4 +387,4 @@ function adjustCardRank(draggedCard, replacedCard) {
|
|
|
396
387
|
draggedCard.fdCardDef = replacedCard.fdCardDef;
|
|
397
388
|
replacedCard.fdCardDef = draggedCardRank;
|
|
398
389
|
}
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFzQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFFMUUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLENBQUMsZ0JBQWdCO0FBQ2hELE1BQU0sY0FBYyxHQUFH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RztBQUNuRyxTQUFTLGtCQUFrQixDQUFDLGNBQXNCLEVBQUUsU0FBaUI7SUFDakUsY0FBYyxHQUFHLGNBQWMsSUFBSSxDQUFDLENBQUM7SUFDckMsU0FBUyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFFM0IsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCO0lBQzdHLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLEdBQUcsU0FBUyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDO0lBQ2hILE1BQU0sV0FBVyxHQUFHLG9CQUFvQixHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztJQUVoSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxjQUFjLENBQUMsV0FBb0MsRUFBRSxZQUFxQztJQUMvRixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQzlDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUMvQyxZQUFZLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0VudGVyLCBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IHJlc2l6ZU9ic2VydmFibGUsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS9maXhlZC1jYXJkLWxheW91dC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5jb25zdCBQWF9JTl9SRU0gPSAxNjtcbmNvbnN0IENBUkRfTUlOSU1VTV9XSURUSCA9IDMyMDsgLy8gMzIwcHggPSAyMHJlbVxuY29uc3QgQ0FSRF9HQVBfV0lEVEggPSAxNjsgLy8gMTZweCA9IDFyZW1cbmNvbnN0IERSQUdfU1RBUlRfREVMQVkgPSAyMDA7IC8vIGluIG1zXG5jb25zdCBNQVhfQ09MVU1OUyA9IDEwO1xuXG5sZXQgY2FyZFJhbmsgPSAxO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZmRDYXJkRGVmXScgfSlcbmV4cG9ydCBjbGFzcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQmVoYXZlcyBsaWtlIHJhbmsgb2YgY2FyZC5cbiAgICAgKiBVc2VmdWwgaW4gY3JlYXRpbmcgbGF5b3V0IGFnYWluIGFmdGVyIGRyYWcgYW5kIGRyb3AuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRDYXJkRGVmKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mZENhcmREZWYgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBmZENhcmREZWYoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZkQ2FyZERlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZkQ2FyZERlZjogbnVtYmVyID0gY2FyZFJhbmsrKztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dCB7XG4gICAgbnVtYmVyT2ZDb2x1bW5zPzogbnVtYmVyO1xuICAgIHNjcmVlblNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJkRHJvcHBlZCB7XG4gICAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICAgIGxheW91dENvbHVtbnM6IG51bWJlcjtcbiAgICBpdGVtczogQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcbn1cblxudHlwZSBDb2x1bW5zID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTA7XG5cbmV4cG9ydCB0eXBlIENvbHVtbnNXaWR0aENvbmZpZyA9IHsgW0MgaW4gQ29sdW1uc10/OiBudW1iZXIgfTtcblxudHlwZSBDYXJkQ29sdW1uID0gQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1maXhlZC1jYXJkLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRml4ZWRDYXJkTGF5b3V0Q29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gICAgLyoqIERyYWcgZHJvcCBiZWhhdmlvciBjYW4gYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVEcmFnRHJvcDogYm9vbGVhbjtcblxuICAgIC8qKiBEcmFnIHN0YXJ0IGRlbGF5IGluIG1pbGxpc2Vjb25kcywgZGVmYXVsdCB0byAyMDBtcyBmb3Igc2FmZSBzY3JvbGxpbmcgb24gbW9iaWxlIHdpdGggdG91Y2hzY3JlZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyYWdTdGFydERlbGF5ID0gRFJBR19TVEFSVF9ERUxBWTtcblxuICAgIC8qKiBDYXJkJ3MgbWluaW11bSB3aWR0aCBpbiBwaXhlbHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmltdW1XaWR0aCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgY29uc3QgY29lcmNlZFZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmIChjb2VyY2VkVmFsdWUgPCBDQVJEX01JTklNVU1fV0lEVEgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGggPSBjb2VyY2VkVmFsdWU7XG5cbiAgICAgICAgLy8gSWYgY29tcG9uZW50IGlzIHJlYWR5LCBkbyB0aGUgcmVjYWxjdWxhdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuX2xheW91dCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgY2FyZE1pbmltdW1XaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZE1pbmltdW1XaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQ29uZmlnIHdpdGggdGhlIHdpZHRoIHJhdGlvcyB0aGF0IHNob3VsZCB0YWtlIGV2ZXJ5IGNvbHVtbi4gRmxleC1ncm93IHByaW5jaXBlLiBNaXNzZWQgdmFsdWVzIHNldCB0byAwLiBzKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbnNXaWR0aENvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnO1xuXG4gICAgLyoqIExpbWl0IHRoZSBudW1iZXIgb2YgY29sdW1ucy4gRGVmYXVsdCBpcyAxMC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbHVtbnMgPSBNQVhfQ09MVU1OUztcblxuICAgIC8qKiBFdmVudCB0byBlbWl0LCB3aGVuIGxheW91dCBjaGFuZ2VzICovXG4gICAgQE91dHB1dCgpXG4gICAgbGF5b3V0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TGF5b3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGF5b3V0PigpO1xuXG4gICAgLyoqIEV2ZW50IHRvIGVtaXQgb24gQ2FyZCBkcmFnZ2VkIGFuZCBkcm9wcGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgY2FyZERyYWdnZWREcm9wcGVkOiBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkRHJvcHBlZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSlcbiAgICBfY2FyZHM6IFF1ZXJ5TGlzdDxDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudClcbiAgICBfY2FyZENvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbignZHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pXG4gICAgX2NhcmRXcmFwcGVyczogUXVlcnlMaXN0PENka0Ryb3BMaXN0PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0JylcbiAgICBfbGF5b3V0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZHNBcnJheTogQXJyYXk8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gTnVtYmVyIG9mIENvbHVtbnMgaW4gbGF5b3V0ICovXG4gICAgX251bWJlck9mQ29sdW1uczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZENvbHVtbnM6IENhcmRDb2x1bW5bXTtcblxuICAgIC8qKiBAaGlkZGVuKi9cbiAgICBfY29udGFpbmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIHJ0bCBzZXJ2aWNlICovXG4gICAgX2RpciA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfaXRlbUluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX3NpbmdsZUl0ZW1Db2x1bW5zID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb2x1bW5zV2lkdGggPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJuIGF2YWlsYWJsZSB3aWR0aCBmb3IgZml4ZWQgY2FyZCBsYXlvdXQgKi9cbiAgICBnZXQgX2F2YWlsYWJsZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wbGFjZWhvbGRlck1hcmdpbjogeyBba2xhc3M6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c051bWJlck9mQ29sdW1uczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXNLZXlNYW5hZ2VyIGluc3RhbmNlICovXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRFdmVudHNNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pbXVtV2lkdGggPSBDQVJEX01JTklNVU1fV0lEVEg7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhcmRzKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogVXBkYXRlIGNvbHVtbiBsYXlvdXQgd2hlbiBvcmllbnRhdGlvbiBvZiBzY3JlZW4gY2hhbmdlcy5cbiAgICAgICAgICogYWN0dWFsIHdpZHRoIGlzIHJldHVybmVkIHdoZW4gdmlldyBpcyBzdGFibGUuIEluIEFmdGVyVmlld0luaXQsIGNvcnJlY3QgdmFsdWUgZG9lcyBub3QgY29tZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY2FyZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdtYXhDb2x1bW5zJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCdjb2x1bW5zV2lkdGhDb25maWcnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGlzdHJpYnV0ZSBjYXJkcyBvbiB3aW5kb3cgcmVzaXplICovXG4gICAgdXBkYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVOdW1iZXJPZkNvbHVtbnMgPSBnZXROdW1iZXJPZkNvbHVtbnModGhpcy5fYXZhaWxhYmxlV2lkdGgsIHRoaXMuY2FyZE1pbmltdW1XaWR0aCk7XG5cbiAgICAgICAgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zID0gTWF0aC5taW4oXG4gICAgICAgICAgICBwb3NzaWJsZU51bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIHRoaXMuX2NhcmRzLmxlbmd0aCxcbiAgICAgICAgICAgIHRoaXMubWF4Q29sdW1ucyB8fCBNQVhfQ09MVU1OUyxcbiAgICAgICAgICAgIE1BWF9DT0xVTU5TXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBudW1iZXJPZkNvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIHNjcmVlblNpemU6IHRoaXMuX2F2YWlsYWJsZVdpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c051bWJlck9mQ29sdW1ucyAhPT0gdGhpcy5fbnVtYmVyT2ZDb2x1bW5zKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c051bWJlck9mQ29sdW1ucyA9IHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENhbGN1bGF0ZSBjb250YWluZXIgaGVpZ2h0IGJhc2luZyBvbiB0aGUgY2FyZCB3cmFwcGVyIGNvbHVtbnMgKi9cbiAgICBfY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KGFkZGl0aW9uYWxTcGFjZTogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgIC5tYXAoKGNhcmQpID0+IHRoaXMuX2NhcmRXcmFwcGVycy5maW5kKCh3cmFwcGVyKSA9PiB3cmFwcGVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSA9PT0gY2FyZCk/LmVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodik6IHYgaXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPT4gISF2KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnNIZWlnaHRzID0gd3JhcHBlckNvbHVtbnNcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgoY2FyZCkgPT4gY2FyZC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkpXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5yZWR1Y2UoKGhlaWdodCwgY2FyZEhlaWdodCkgPT4gKGhlaWdodCArPSBjYXJkSGVpZ2h0KSwgMCkpO1xuXG4gICAgICAgIC8vICs0cHggYmVjYXVzZSBpdCdzIHRoZSB0b3AgJiBib3R0b20gYm9yZGVycyBvZiBjYXJkIHBsYWNlaG9sZGVyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lckhlaWdodCA9IE1hdGgubWF4KC4uLmNvbHVtbnNIZWlnaHRzKSArIDQgKyBhZGRpdGlvbmFsU3BhY2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2VudGVyUHJlZGljYXRlID0gKF86IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIC8vIFdlIHNob3VsZCB1cGRhdGUgY29udGFpbmVyJ3MgaGVpZ2h0ICYgaXRzIGNoaWxkcmVuIHJlY3RzICh0byByZWFjdCB3aGVuIGRyYWcgbW92ZXMgaW50byB0aGUgbGlzdCkgYmVmb3JlIHdlIGVudGVyZWQgYW55IGRyb3AgbGlzdC5cbiAgICAgICAgLy8gVGhhdCdzIHdoeSBpdCdzIGRvbmUgaGVyZSBpbnN0ZWFkIG9mIGNka0Ryb3BMaXN0RW50ZXJlZC4gQXMgdGhpcyBwcmVkaWNhdGUgYmVpbmcgY2FsbGVkIG1hbnkgdGltZXMgaGVyZSBpcyB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkQ2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gUGxhY2Vob2xkZXIgZG9lc24ndCBoYXZlIG1hcmdpbiBzZXQgeWV0IGJ1dCB3ZSBuZWVkIHRvIGNvdW50IGl0XG4gICAgICAgICAgICAvLyBNYXJnaW4gd2lsbCBiZSBzZXQgb25seSBpZiB0aGVyZSBhcmUgYWxyZWFkeSBpdGVtcyBpbiBjb250YWluZXJcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxTcGFjZSA9IGRyb3AuZ2V0U29ydGVkSXRlbXMoKS5sZW5ndGggPyBQWF9JTl9SRU0gOiAwO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb250YWluZXJIZWlnaHQoYWRkaXRpb25hbFNwYWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3BMaXN0RXhpdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRHJvcExpc3RFbnRlcmVkKGV2ZW50OiBDZGtEcmFnRW50ZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVySXRlbUNhcmREZWYgPSAoZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSBhcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSkuZmRDYXJkRGVmO1xuICAgICAgICBjb25zdCBkcmFnSXRlbUNhcmREZWYgPSAoZXZlbnQuaXRlbS5kYXRhIGFzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlKS5mZENhcmREZWY7XG5cbiAgICAgICAgdGhpcy5fc2V0UGxhY2Vob2xkZXJTdHlsZShjb250YWluZXJJdGVtQ2FyZERlZiAhPT0gZHJhZ0l0ZW1DYXJkRGVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyYWdEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxudW1iZXIsIG51bWJlcj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvbnRhaW5lci5kYXRhID09PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5nZXRTb3J0ZWRJdGVtcygpWzBdLmRhdGE7XG5cbiAgICAgICAgY29uc3QgbW92ZWRDYXJkQ29sdW1uID0gdGhpcy5fY2FyZENvbHVtbnMuZmluZCgoY29sdW1uKSA9PlxuICAgICAgICAgICAgY29sdW1uLmZpbmQoKGNhcmQpID0+IGNhcmQuZmRDYXJkRGVmID09PSBtb3ZlZENhcmQuZmRDYXJkRGVmKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2UgZHJhZ2dlZCB0aGUgY2FyZCBmcm9tIHRoZSBzYW1lIGNvbHVtbiBhcyB0aGUgY29sdW1uIHdlJ3JlIGRyb3BwaW5nIGludG9cbiAgICAgICAgLy8gVGhlcmUgbWF5IGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBvcmRlciBzaG91bGRuJ3QgY2hhbmdlIGJ1dCBzaW5jZSB0aGVyZSBhcmUgYSBkaWZmZXJlbnQgZHJvcCBsaXN0cyBpdCB3aWxsIGNoYW5nZVxuICAgICAgICAvLyBXZSBzaG91bGQgcHJldmVudCB0aGlzXG4gICAgICAgIGlmIChtb3ZlZENhcmRDb2x1bW4gPT09IHJlcGxhY2VkQ2FyZENvbHVtbiAmJiBtb3ZlZENhcmRDb2x1bW4/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPCByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPCBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vdmVkQ2FyZC5mZENhcmREZWYgPiByZXBsYWNlZENhcmQuZmRDYXJkRGVmICYmIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEgPiBldmVudC5jb250YWluZXIuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgbW92ZWRDYXJkLCByZXBsYWNlZENhcmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21Nb3ZlRm4gPSAoZ3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gZ3JvdXBbaW5kZXhGcm9tXTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZ3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEZvciB0aGUga2V5Ym9hcmQgZHJhZyZkcm9wIGRpcmVjdGl2ZSAqL1xuICAgIF9jdXN0b21UcmFuc2ZlckZuID0gKHByZXZHcm91cDogQ2FyZENvbHVtbiwgbmV4dEdyb3VwOiBDYXJkQ29sdW1uLCBpbmRleEZyb206IG51bWJlciwgaW5kZXhUbzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IHByZXZHcm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBuZXh0R3JvdXBbaW5kZXhUb107XG5cbiAgICAgICAgY29uc3QgaW5kZXhGcm9tQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpO1xuICAgICAgICBjb25zdCBpbmRleFRvQXJyYXkgPSB0aGlzLl9jYXJkc0FycmF5LmZpbmRJbmRleCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NEcmFnRHJvcChpbmRleEZyb21BcnJheSwgaW5kZXhUb0FycmF5LCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFBsYWNlaG9sZGVyU3R5bGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJNYXJnaW4gPSB2YWx1ZSA/IHsgJ21hcmdpbi1ib3R0b20nOiAnMXJlbScgfSA6IHt9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEFycmFuZ2VzIGNhcmRzIG9uIGRyb3Agb2YgZHJhZ2dlZCBjYXJkICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0RyYWdEcm9wKFxuICAgICAgICBwcmV2SW5kZXg6IG51bWJlcixcbiAgICAgICAgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHJldkNhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLFxuICAgICAgICBuZXdDYXJkOiBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZVxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBtb3ZlSXRlbUluQXJyYXkgZnJvbSBDREsgd29uJ3Qgd29yayBhcyBpdCBjaGFuZ2VzIG9yZGVyIG9mIG90aGVyIGNhcmRzXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W25ld0luZGV4XSA9IHRoaXMuX2NhcmRzQXJyYXlbcHJldkluZGV4XTtcbiAgICAgICAgdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdID0gcmVwbGFjZWRDYXJkO1xuXG4gICAgICAgIGFkanVzdENhcmRSYW5rKHByZXZDYXJkLCBuZXdDYXJkKTtcblxuICAgICAgICB0aGlzLmNhcmREcmFnZ2VkRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHByZXZJbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICBsYXlvdXRDb2x1bW5zOiB0aGlzLl9udW1iZXJPZkNvbHVtbnMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5fY2FyZHMudG9BcnJheSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjY2Vzc2liaWxpdHlTZXR1cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLl9jYXJkQ29udGFpbmVycykud2l0aFdyYXAoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoaXNSdGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTGlzdGVuIHdpbmRvdyByZXNpemUgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2xheW91dC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDYwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUxheW91dCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gY2FyZCBjaGFuZ2UgYW5kIGRpc3RyaWJ1dGUgY2FyZHMgb24gY29sdW1uIGNoYW5nZSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NDYXJkcygpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZW5kZXJzIGxheW91dCBvbiBjb2x1bW4gY2hhbmdlcyAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUNvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENhcmRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNXaWR0aChmYWxzZSk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0NhcmRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5ID0gdGhpcy5fY2FyZHNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5zb3J0KChmaXJzdENhcmQsIHNlY29uZENhcmQpID0+IGZpcnN0Q2FyZC5mZENhcmREZWYgLSBzZWNvbmRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGlzdHJpYnV0ZSBjYXJkcyBhbW9uZyBjb2x1bW5zIHRvIGFycmFuZ2UgdGhlbSBpbiBcIlpcIiBmbG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDYXJkQ29sdW1uW10gPSBuZXcgQXJyYXkodGhpcy5fbnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgQXJyYXkoMCkpO1xuXG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkuZm9yRWFjaCgoY2FyZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VyckNvbHVtbkluZGV4ID0gaSAlIHRoaXMuX251bWJlck9mQ29sdW1ucztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGNvbHVtbnNbY3VyckNvbHVtbkluZGV4XS5wdXNoKGNhcmQpO1xuXG4gICAgICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBjdXJyQ29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUluZGV4ZXMuc2V0KGNhcmQuZmRDYXJkRGVmLCBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYXJkQ29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA+IDAgJiYgY29sdW1uLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaW5nbGVJdGVtQ29sdW1ucy5hZGQoY29sdW1uWzBdLmZkQ2FyZERlZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q29sdW1uc1dpZHRoKGRldGVjdENoYW5nZXMgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnNXaWR0aCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBjb25zdCBjb25maWdQcmVzZW50ID1cbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnICYmXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb2x1bW5zV2lkdGhDb25maWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZykubGVuZ3RoO1xuXG4gICAgICAgIGlmICghY29uZmlnUHJlc2VudCB8fCAhdGhpcy5fbGF5b3V0IHx8IHRoaXMuX251bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZml4ZWRXaWR0aE1vZGlmaWVycyA9IGZpeFdpZHRoTW9kaWZpZXJzKHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnLCB0aGlzLl9udW1iZXJPZkNvbHVtbnMpO1xuICAgICAgICBjb25zdCB0b3RhbFdpZHRoTW9kaWZpZXJzID0gZml4ZWRXaWR0aE1vZGlmaWVycy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IChzdW0gKz0gd2lkdGgpLCAwKTtcbiAgICAgICAgY29uc3QgZnJlZVNwYWNlID0gdGhpcy5fYXZhaWxhYmxlV2lkdGggLSB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKiB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1pbmltdW1XaWR0aCArIChmcmVlU3BhY2UgLyB0b3RhbFdpZHRoTW9kaWZpZXJzKSAqIGZpeGVkV2lkdGhNb2RpZmllcnNbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb2x1bW4uZm9yRWFjaCgoY2FyZCkgPT4gdGhpcy5fY29sdW1uc1dpZHRoLnNldChjYXJkLmZkQ2FyZERlZiwgY29sdW1uV2lkdGgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIGZpeFdpZHRoTW9kaWZpZXJzKGNvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnLCBudW1iZXJPZkNvbHVtbnM6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBuZXcgQXJyYXkobnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApO1xuXG4gICAgcmV0dXJuIG1vZGlmaWVycy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoTW9kaWZpZXIgPSBjb25maWdbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAoIWNvbHVtbldpZHRoTW9kaWZpZXIgfHwgY29sdW1uV2lkdGhNb2RpZmllciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbldpZHRoTW9kaWZpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuIFJldHVybnMgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gZml0IGluIGN1cnJlbnQgYXZhaWxhYmxlIHdpZHRoIGZvciBmZC1jYXJkLWxheW91dCAqL1xuZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDb2x1bW5zKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGNhcmRXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIHx8IDE7XG4gICAgY2FyZFdpZHRoID0gY2FyZFdpZHRoIHx8IDE7XG5cbiAgICBjb25zdCBudW1iZXJPZkNhcmRzV2l0aE5vR2FwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIGNhcmRXaWR0aCksIDEpOyAvLyBFeGFtcGxlOiA5NjAgLyAzMjAgPSAzXG4gICAgY29uc3QgcmVxdWlyZWRXaWR0aFdpdGhHYXAgPSBudW1iZXJPZkNhcmRzV2l0aE5vR2FwICogY2FyZFdpZHRoICsgKG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxKSAqIENBUkRfR0FQX1dJRFRIO1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gcmVxdWlyZWRXaWR0aFdpdGhHYXAgPiBjb250YWluZXJXaWR0aCA/IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxIDogbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcDtcblxuICAgIHJldHVybiBNYXRoLm1heChjb2x1bW5Db3VudCwgMSk7XG59XG5cbi8qKiBAaGlkZGVuIE1ldGhvZCB0byB1cGRhdGUgcmFuayBhZnRlciBjYXJkcyBhcmUgZHJhZ2dlZCAqL1xuZnVuY3Rpb24gYWRqdXN0Q2FyZFJhbmsoZHJhZ2dlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLCByZXBsYWNlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ2dlZENhcmRSYW5rID0gZHJhZ2dlZENhcmQuZmRDYXJkRGVmO1xuICAgIGRyYWdnZWRDYXJkLmZkQ2FyZERlZiA9IHJlcGxhY2VkQ2FyZC5mZENhcmREZWY7XG4gICAgcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiA9IGRyYWdnZWRDYXJkUmFuaztcbn1cbiIsIjxkaXZcbiAgICAjbGF5b3V0XG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGZkRG5kS2V5Ym9hcmRHcm91cFxuICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0IGZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLWxheW91dC0tY29sdW1ucy17eyB0aGlzLl9udW1iZXJPZkNvbHVtbnMgfX1cIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbnRhaW5lckhlaWdodCArICdweCdcIlxuICAgIFtncm91cHNdPVwiX2NhcmRDb2x1bW5zXCJcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIFtjdXN0b21Nb3ZlRm5dPVwiX2N1c3RvbU1vdmVGblwiXG4gICAgW2N1c3RvbVRyYW5zZmVyRm5dPVwiX2N1c3RvbVRyYW5zZmVyRm5cIlxuICAgIFtkaXNhYmxlS2V5Ym9hcmREcmFnRHJvcF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICBbYXR0ci5kaXJdPVwiX2RpclwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcExpc3RcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgX2NhcmRzQXJyYXk7IGxldCBjYXJkSW5kZXggPSBpbmRleFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmRcIlxuICAgICAgICBbY2xhc3MuZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtLXNpbmdsZV09XCJfc2luZ2xlSXRlbUNvbHVtbnMuaGFzKGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNhcmRJbmRleFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cIl9lbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiX29uRHJvcExpc3RFbnRlcmVkKCRldmVudClcIlxuICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiX29uRHJvcExpc3RFeGl0ZWQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBmZERuZEtleWJvYXJkSXRlbVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wcmV2aWV3XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjYXJkXCJcbiAgICAgICAgICAgIFtjZGtEcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheVwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIl9pdGVtSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpIVwiXG4gICAgICAgICAgICBbZ3JvdXBJbmRleF09XCJfZ3JvdXBJbmRleGVzLmdldChjYXJkLmZkQ2FyZERlZikhXCJcbiAgICAgICAgICAgIChjZGtEcmFnRHJvcHBlZCk9XCJfb25EcmFnRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJfc2V0UGxhY2Vob2xkZXJTdHlsZShmYWxzZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGUgfHwgbnVsbFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cblxuICAgICAgICAgICAgPGRpdiAqY2RrRHJhZ1BsYWNlaG9sZGVyIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtcGxhY2Vob2xkZXJcIiBbc3R5bGVdPVwiX3BsYWNlaG9sZGVyTWFyZ2luXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZml4ZWQtY2FyZC1sYXlvdXQvZml4ZWQtY2FyZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFzQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsb0JBQW9CLEVBQWUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRTFFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNyQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQjtBQUNoRCxNQUFN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O0lBQ2pFLGNBQWMsR0FBRyxjQUFjLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDO0lBRTNCLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUM3RyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUNoSCxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFFaEgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsY0FBYyxDQUFDLFdBQW9DLEVBQUUsWUFBcUM7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUM5QyxXQUFXLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDL0MsWUFBWSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnRW50ZXIsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IHJlc2l6ZU9ic2VydmFibGUsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZml4ZWQtY2FyZC1sYXlvdXQtaXRlbS9maXhlZC1jYXJkLWxheW91dC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5jb25zdCBQWF9JTl9SRU0gPSAxNjtcbmNvbnN0IENBUkRfTUlOSU1VTV9XSURUSCA9IDMyMDsgLy8gMzIwcHggPSAyMHJlbVxuY29uc3QgQ0FSRF9HQVBfV0lEVEggPSAxNjsgLy8gMTZweCA9IDFyZW1cbmNvbnN0IERSQUdfU1RBUlRfREVMQVkgPSAyMDA7IC8vIGluIG1zXG5jb25zdCBNQVhfQ09MVU1OUyA9IDEwO1xuXG5sZXQgY2FyZFJhbmsgPSAxO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZmRDYXJkRGVmXScgfSlcbmV4cG9ydCBjbGFzcyBDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQmVoYXZlcyBsaWtlIHJhbmsgb2YgY2FyZC5cbiAgICAgKiBVc2VmdWwgaW4gY3JlYXRpbmcgbGF5b3V0IGFnYWluIGFmdGVyIGRyYWcgYW5kIGRyb3AuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRDYXJkRGVmKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mZENhcmREZWYgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBmZENhcmREZWYoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZkQ2FyZERlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZkQ2FyZERlZjogbnVtYmVyID0gY2FyZFJhbmsrKztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dCB7XG4gICAgbnVtYmVyT2ZDb2x1bW5zPzogbnVtYmVyO1xuICAgIHNjcmVlblNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJkRHJvcHBlZCB7XG4gICAgcHJldmlvdXNJbmRleDogbnVtYmVyO1xuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICAgIGxheW91dENvbHVtbnM6IG51bWJlcjtcbiAgICBpdGVtczogQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcbn1cblxudHlwZSBDb2x1bW5zID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTA7XG5cbmV4cG9ydCB0eXBlIENvbHVtbnNXaWR0aENvbmZpZyA9IHsgW0MgaW4gQ29sdW1uc10/OiBudW1iZXIgfTtcblxudHlwZSBDYXJkQ29sdW1uID0gQ2FyZERlZmluaXRpb25EaXJlY3RpdmVbXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1maXhlZC1jYXJkLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpeGVkLWNhcmQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maXhlZC1jYXJkLWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWZpeGVkLWNhcmQtbGF5b3V0J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRml4ZWRDYXJkTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIERyYWcgZHJvcCBiZWhhdmlvciBjYW4gYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVEcmFnRHJvcDogYm9vbGVhbjtcblxuICAgIC8qKiBEcmFnIHN0YXJ0IGRlbGF5IGluIG1pbGxpc2Vjb25kcywgZGVmYXVsdCB0byAyMDBtcyBmb3Igc2FmZSBzY3JvbGxpbmcgb24gbW9iaWxlIHdpdGggdG91Y2hzY3JlZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyYWdTdGFydERlbGF5ID0gRFJBR19TVEFSVF9ERUxBWTtcblxuICAgIC8qKiBDYXJkJ3MgbWluaW11bSB3aWR0aCBpbiBwaXhlbHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmltdW1XaWR0aCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgY29uc3QgY29lcmNlZFZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmIChjb2VyY2VkVmFsdWUgPCBDQVJEX01JTklNVU1fV0lEVEgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NhcmRNaW5pbXVtV2lkdGggPSBjb2VyY2VkVmFsdWU7XG5cbiAgICAgICAgLy8gSWYgY29tcG9uZW50IGlzIHJlYWR5LCBkbyB0aGUgcmVjYWxjdWxhdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuX2xheW91dCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgY2FyZE1pbmltdW1XaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZE1pbmltdW1XaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQ29uZmlnIHdpdGggdGhlIHdpZHRoIHJhdGlvcyB0aGF0IHNob3VsZCB0YWtlIGV2ZXJ5IGNvbHVtbi4gRmxleC1ncm93IHByaW5jaXBlLiBNaXNzZWQgdmFsdWVzIHNldCB0byAwLiBzKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbnNXaWR0aENvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnO1xuXG4gICAgLyoqIExpbWl0IHRoZSBudW1iZXIgb2YgY29sdW1ucy4gRGVmYXVsdCBpcyAxMC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbHVtbnMgPSBNQVhfQ09MVU1OUztcblxuICAgIC8qKiBFdmVudCB0byBlbWl0LCB3aGVuIGxheW91dCBjaGFuZ2VzICovXG4gICAgQE91dHB1dCgpXG4gICAgbGF5b3V0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TGF5b3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGF5b3V0PigpO1xuXG4gICAgLyoqIEV2ZW50IHRvIGVtaXQgb24gQ2FyZCBkcmFnZ2VkIGFuZCBkcm9wcGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgY2FyZERyYWdnZWREcm9wcGVkOiBFdmVudEVtaXR0ZXI8Q2FyZERyb3BwZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkRHJvcHBlZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZSlcbiAgICBfY2FyZHM6IFF1ZXJ5TGlzdDxDYXJkRGVmaW5pdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudClcbiAgICBfY2FyZENvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxGaXhlZENhcmRMYXlvdXRJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbignZHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pXG4gICAgX2NhcmRXcmFwcGVyczogUXVlcnlMaXN0PENka0Ryb3BMaXN0PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0JylcbiAgICBfbGF5b3V0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZHNBcnJheTogQXJyYXk8Q2FyZERlZmluaXRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gTnVtYmVyIG9mIENvbHVtbnMgaW4gbGF5b3V0ICovXG4gICAgX251bWJlck9mQ29sdW1uczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FyZENvbHVtbnM6IENhcmRDb2x1bW5bXTtcblxuICAgIC8qKiBAaGlkZGVuKi9cbiAgICBfY29udGFpbmVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBoYW5kbGVzIHJ0bCBzZXJ2aWNlICovXG4gICAgX2RpciA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX2dyb3VwSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBmaXJzdCBudW1iZXIgaXMgdGhlIENhcmREZWZpbml0aW9uIHJhbmssIGkuZS4gaWQgKi9cbiAgICBfaXRlbUluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZmlyc3QgbnVtYmVyIGlzIHRoZSBDYXJkRGVmaW5pdGlvbiByYW5rLCBpLmUuIGlkICovXG4gICAgX3NpbmdsZUl0ZW1Db2x1bW5zID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb2x1bW5zV2lkdGggPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJuIGF2YWlsYWJsZSB3aWR0aCBmb3IgZml4ZWQgY2FyZCBsYXlvdXQgKi9cbiAgICBnZXQgX2F2YWlsYWJsZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXlvdXQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wbGFjZWhvbGRlck1hcmdpbjogeyBba2xhc3M6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c051bWJlck9mQ29sdW1uczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXNLZXlNYW5hZ2VyIGluc3RhbmNlICovXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRFdmVudHNNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8Rml4ZWRDYXJkTGF5b3V0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhcmRNaW5pbXVtV2lkdGggPSBDQVJEX01JTklNVU1fV0lEVEg7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQ2FyZHNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhcmRzKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlTZXR1cCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhcmRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnbWF4Q29sdW1ucycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICgnY29sdW1uc1dpZHRoQ29uZmlnJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERpc3RyaWJ1dGUgY2FyZHMgb24gd2luZG93IHJlc2l6ZSAqL1xuICAgIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYXJkcy5sZW5ndGggfHwgIXRoaXMuX2F2YWlsYWJsZVdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NzaWJsZU51bWJlck9mQ29sdW1ucyA9IGdldE51bWJlck9mQ29sdW1ucyh0aGlzLl9hdmFpbGFibGVXaWR0aCwgdGhpcy5jYXJkTWluaW11bVdpZHRoKTtcblxuICAgICAgICB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHBvc3NpYmxlTnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgdGhpcy5fY2FyZHMubGVuZ3RoLFxuICAgICAgICAgICAgdGhpcy5tYXhDb2x1bW5zIHx8IE1BWF9DT0xVTU5TLFxuICAgICAgICAgICAgTUFYX0NPTFVNTlNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxheW91dENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIG51bWJlck9mQ29sdW1uczogdGhpcy5fbnVtYmVyT2ZDb2x1bW5zLFxuICAgICAgICAgICAgc2NyZWVuU2l6ZTogdGhpcy5fYXZhaWxhYmxlV2lkdGhcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzTnVtYmVyT2ZDb2x1bW5zICE9PSB0aGlzLl9udW1iZXJPZkNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzTnVtYmVyT2ZDb2x1bW5zID0gdGhpcy5fbnVtYmVyT2ZDb2x1bW5zO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0Q29sdW1uc1dpZHRoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZW50ZXJQcmVkaWNhdGUgPSAoXzogQ2RrRHJhZywgZHJvcDogQ2RrRHJvcExpc3QpOiBib29sZWFuID0+IHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVwZGF0ZSBjb250YWluZXIncyBoZWlnaHQgJiBpdHMgY2hpbGRyZW4gcmVjdHMgKHRvIHJlYWN0IHdoZW4gZHJhZyBtb3ZlcyBpbnRvIHRoZSBsaXN0KSBiZWZvcmUgd2UgZW50ZXJlZCBhbnkgZHJvcCBsaXN0LlxuICAgICAgICAvLyBUaGF0J3Mgd2h5IGl0J3MgZG9uZSBoZXJlIGluc3RlYWQgb2YgY2RrRHJvcExpc3RFbnRlcmVkLiBBcyB0aGlzIHByZWRpY2F0ZSBiZWluZyBjYWxsZWQgbWFueSB0aW1lcyBoZXJlIGlzIHRoZSBvcHRpbWl6YXRpb24uXG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRDYWxjdWxhdGVDb250YWluZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBQbGFjZWhvbGRlciBkb2Vzbid0IGhhdmUgbWFyZ2luIHNldCB5ZXQgYnV0IHdlIG5lZWQgdG8gY291bnQgaXRcbiAgICAgICAgICAgIC8vIE1hcmdpbiB3aWxsIGJlIHNldCBvbmx5IGlmIHRoZXJlIGFyZSBhbHJlYWR5IGl0ZW1zIGluIGNvbnRhaW5lclxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFNwYWNlID0gZHJvcC5nZXRTb3J0ZWRJdGVtcygpLmxlbmd0aCA/IFBYX0lOX1JFTSA6IDA7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbnRhaW5lckhlaWdodChhZGRpdGlvbmFsU3BhY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRHJvcExpc3RFeGl0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Nob3VsZENhbGN1bGF0ZUNvbnRhaW5lckhlaWdodCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ecm9wTGlzdEVudGVyZWQoZXZlbnQ6IENka0RyYWdFbnRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJJdGVtQ2FyZERlZiA9IChldmVudC5jb250YWluZXIuZ2V0U29ydGVkSXRlbXMoKVswXS5kYXRhIGFzIENhcmREZWZpbml0aW9uRGlyZWN0aXZlKS5mZENhcmREZWY7XG4gICAgICAgIGNvbnN0IGRyYWdJdGVtQ2FyZERlZiA9IChldmVudC5pdGVtLmRhdGEgYXMgQ2FyZERlZmluaXRpb25EaXJlY3RpdmUpLmZkQ2FyZERlZjtcblxuICAgICAgICB0aGlzLl9zZXRQbGFjZWhvbGRlclN0eWxlKGNvbnRhaW5lckl0ZW1DYXJkRGVmICE9PSBkcmFnSXRlbUNhcmREZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uRHJhZ0Ryb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPG51bWJlciwgbnVtYmVyPik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQuY29udGFpbmVyLmRhdGEgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vdmVkQ2FyZCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gZXZlbnQuY29udGFpbmVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YTtcblxuICAgICAgICBjb25zdCBtb3ZlZENhcmRDb2x1bW4gPSB0aGlzLl9jYXJkQ29sdW1ucy5maW5kKChjb2x1bW4pID0+XG4gICAgICAgICAgICBjb2x1bW4uZmluZCgoY2FyZCkgPT4gY2FyZC5mZENhcmREZWYgPT09IG1vdmVkQ2FyZC5mZENhcmREZWYpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZENvbHVtbiA9IHRoaXMuX2NhcmRDb2x1bW5zLmZpbmQoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtbi5maW5kKChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZilcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBJZiB3ZSBkcmFnZ2VkIHRoZSBjYXJkIGZyb20gdGhlIHNhbWUgY29sdW1uIGFzIHRoZSBjb2x1bW4gd2UncmUgZHJvcHBpbmcgaW50b1xuICAgICAgICAvLyBUaGVyZSBtYXkgYmUgYSBzaXR1YXRpb24gd2hlcmUgdGhlIG9yZGVyIHNob3VsZG4ndCBjaGFuZ2UgYnV0IHNpbmNlIHRoZXJlIGFyZSBhIGRpZmZlcmVudCBkcm9wIGxpc3RzIGl0IHdpbGwgY2hhbmdlXG4gICAgICAgIC8vIFdlIHNob3VsZCBwcmV2ZW50IHRoaXNcbiAgICAgICAgaWYgKG1vdmVkQ2FyZENvbHVtbiA9PT0gcmVwbGFjZWRDYXJkQ29sdW1uICYmIG1vdmVkQ2FyZENvbHVtbj8ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBpZiAobW92ZWRDYXJkLmZkQ2FyZERlZiA8IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgJiYgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSA8IGV2ZW50LmNvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobW92ZWRDYXJkLmZkQ2FyZERlZiA+IHJlcGxhY2VkQ2FyZC5mZENhcmREZWYgJiYgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSA+IGV2ZW50LmNvbnRhaW5lci5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsIGV2ZW50LmNvbnRhaW5lci5kYXRhLCBtb3ZlZENhcmQsIHJlcGxhY2VkQ2FyZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRm9yIHRoZSBrZXlib2FyZCBkcmFnJmRyb3AgZGlyZWN0aXZlICovXG4gICAgX2N1c3RvbU1vdmVGbiA9IChncm91cDogQ2FyZENvbHVtbiwgaW5kZXhGcm9tOiBudW1iZXIsIGluZGV4VG86IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZENhcmQgPSBncm91cFtpbmRleEZyb21dO1xuICAgICAgICBjb25zdCByZXBsYWNlZENhcmQgPSBncm91cFtpbmRleFRvXTtcblxuICAgICAgICBjb25zdCBpbmRleEZyb21BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZik7XG4gICAgICAgIGNvbnN0IGluZGV4VG9BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGluZGV4RnJvbUFycmF5LCBpbmRleFRvQXJyYXksIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gRm9yIHRoZSBrZXlib2FyZCBkcmFnJmRyb3AgZGlyZWN0aXZlICovXG4gICAgX2N1c3RvbVRyYW5zZmVyRm4gPSAocHJldkdyb3VwOiBDYXJkQ29sdW1uLCBuZXh0R3JvdXA6IENhcmRDb2x1bW4sIGluZGV4RnJvbTogbnVtYmVyLCBpbmRleFRvOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgbW92ZWRDYXJkID0gcHJldkdyb3VwW2luZGV4RnJvbV07XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkQ2FyZCA9IG5leHRHcm91cFtpbmRleFRvXTtcblxuICAgICAgICBjb25zdCBpbmRleEZyb21BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gbW92ZWRDYXJkLmZkQ2FyZERlZik7XG4gICAgICAgIGNvbnN0IGluZGV4VG9BcnJheSA9IHRoaXMuX2NhcmRzQXJyYXkuZmluZEluZGV4KChjYXJkKSA9PiBjYXJkLmZkQ2FyZERlZiA9PT0gcmVwbGFjZWRDYXJkLmZkQ2FyZERlZik7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0RyYWdEcm9wKGluZGV4RnJvbUFycmF5LCBpbmRleFRvQXJyYXksIG1vdmVkQ2FyZCwgcmVwbGFjZWRDYXJkKTtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0UGxhY2Vob2xkZXJTdHlsZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlck1hcmdpbiA9IHZhbHVlID8geyAnbWFyZ2luLWJvdHRvbSc6ICcxcmVtJyB9IDoge307XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQXJyYW5nZXMgY2FyZHMgb24gZHJvcCBvZiBkcmFnZ2VkIGNhcmQgKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzRHJhZ0Ryb3AoXG4gICAgICAgIHByZXZJbmRleDogbnVtYmVyLFxuICAgICAgICBuZXdJbmRleDogbnVtYmVyLFxuICAgICAgICBwcmV2Q2FyZDogQ2FyZERlZmluaXRpb25EaXJlY3RpdmUsXG4gICAgICAgIG5ld0NhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIG1vdmVJdGVtSW5BcnJheSBmcm9tIENESyB3b24ndCB3b3JrIGFzIGl0IGNoYW5nZXMgb3JkZXIgb2Ygb3RoZXIgY2FyZHNcbiAgICAgICAgY29uc3QgcmVwbGFjZWRDYXJkID0gdGhpcy5fY2FyZHNBcnJheVtuZXdJbmRleF07XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXlbbmV3SW5kZXhdID0gdGhpcy5fY2FyZHNBcnJheVtwcmV2SW5kZXhdO1xuICAgICAgICB0aGlzLl9jYXJkc0FycmF5W3ByZXZJbmRleF0gPSByZXBsYWNlZENhcmQ7XG5cbiAgICAgICAgYWRqdXN0Q2FyZFJhbmsocHJldkNhcmQsIG5ld0NhcmQpO1xuXG4gICAgICAgIHRoaXMuY2FyZERyYWdnZWREcm9wcGVkLmVtaXQoe1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogcHJldkluZGV4LFxuICAgICAgICAgICAgY3VycmVudEluZGV4OiBuZXdJbmRleCxcbiAgICAgICAgICAgIGxheW91dENvbHVtbnM6IHRoaXMuX251bWJlck9mQ29sdW1ucyxcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLl9jYXJkcy50b0FycmF5KClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWNjZXNzaWJpbGl0eVNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlib2FyZEV2ZW50c01hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2NhcmRDb250YWluZXJzKS53aXRoV3JhcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gd2luZG93IHJlc2l6ZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fbGF5b3V0Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNjApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlTGF5b3V0KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBjYXJkIGNoYW5nZSBhbmQgZGlzdHJpYnV0ZSBjYXJkcyBvbiBjb2x1bW4gY2hhbmdlICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25DYXJkc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FyZHMuY2hhbmdlcy5waXBlKGRlbGF5KDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0NhcmRzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbmRlcnMgbGF5b3V0IG9uIGNvbHVtbiBjaGFuZ2VzICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q2FyZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1uc1dpZHRoKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzQ2FyZHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhcmRzQXJyYXkgPSB0aGlzLl9jYXJkc1xuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLnNvcnQoKGZpcnN0Q2FyZCwgc2Vjb25kQ2FyZCkgPT4gZmlyc3RDYXJkLmZkQ2FyZERlZiAtIHNlY29uZENhcmQuZmRDYXJkRGVmKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERpc3RyaWJ1dGUgY2FyZHMgYW1vbmcgY29sdW1ucyB0byBhcnJhbmdlIHRoZW0gaW4gXCJaXCIgZmxvdyAqL1xuICAgIHByaXZhdGUgX3NldENhcmRDb2x1bW5zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncm91cEluZGV4ZXMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICAgICAgICB0aGlzLl9pdGVtSW5kZXhlcyA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX3NpbmdsZUl0ZW1Db2x1bW5zID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1uczogQ2FyZENvbHVtbltdID0gbmV3IEFycmF5KHRoaXMuX251bWJlck9mQ29sdW1ucykuZmlsbCgwKS5tYXAoKCkgPT4gbmV3IEFycmF5KDApKTtcblxuICAgICAgICB0aGlzLl9jYXJkc0FycmF5LmZvckVhY2goKGNhcmQsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJDb2x1bW5JbmRleCA9IGkgJSB0aGlzLl9udW1iZXJPZkNvbHVtbnM7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBjb2x1bW5zW2N1cnJDb2x1bW5JbmRleF0ubGVuZ3RoO1xuXG4gICAgICAgICAgICBjb2x1bW5zW2N1cnJDb2x1bW5JbmRleF0ucHVzaChjYXJkKTtcblxuICAgICAgICAgICAgdGhpcy5fZ3JvdXBJbmRleGVzLnNldChjYXJkLmZkQ2FyZERlZiwgY3VyckNvbHVtbkluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1JbmRleGVzLnNldChjYXJkLmZkQ2FyZERlZiwgaXRlbUluZGV4KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fY2FyZENvbHVtbnMgPSBjb2x1bW5zO1xuXG4gICAgICAgIHRoaXMuX2NhcmRDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5sZW5ndGggPiAwICYmIGNvbHVtbi5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2luZ2xlSXRlbUNvbHVtbnMuYWRkKGNvbHVtblswXS5mZENhcmREZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbHVtbnNXaWR0aChkZXRlY3RDaGFuZ2VzID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb2x1bW5zV2lkdGggPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnUHJlc2VudCA9XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aENvbmZpZyAmJlxuICAgICAgICAgICAgdHlwZW9mIHRoaXMuY29sdW1uc1dpZHRoQ29uZmlnID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb2x1bW5zV2lkdGhDb25maWcpLmxlbmd0aDtcblxuICAgICAgICBpZiAoIWNvbmZpZ1ByZXNlbnQgfHwgIXRoaXMuX2xheW91dCB8fCB0aGlzLl9udW1iZXJPZkNvbHVtbnMgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpeGVkV2lkdGhNb2RpZmllcnMgPSBmaXhXaWR0aE1vZGlmaWVycyh0aGlzLmNvbHVtbnNXaWR0aENvbmZpZywgdGhpcy5fbnVtYmVyT2ZDb2x1bW5zKTtcbiAgICAgICAgY29uc3QgdG90YWxXaWR0aE1vZGlmaWVycyA9IGZpeGVkV2lkdGhNb2RpZmllcnMucmVkdWNlKChzdW0sIHdpZHRoKSA9PiAoc3VtICs9IHdpZHRoKSwgMCk7XG4gICAgICAgIGNvbnN0IGZyZWVTcGFjZSA9IHRoaXMuX2F2YWlsYWJsZVdpZHRoIC0gdGhpcy5jYXJkTWluaW11bVdpZHRoICogdGhpcy5fbnVtYmVyT2ZDb2x1bW5zO1xuXG4gICAgICAgIHRoaXMuX2NhcmRDb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRNaW5pbXVtV2lkdGggKyAoZnJlZVNwYWNlIC8gdG90YWxXaWR0aE1vZGlmaWVycykgKiBmaXhlZFdpZHRoTW9kaWZpZXJzW2luZGV4XVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKGNhcmQpID0+IHRoaXMuX2NvbHVtbnNXaWR0aC5zZXQoY2FyZC5mZENhcmREZWYsIGNvbHVtbldpZHRoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDYWxjdWxhdGUgY29udGFpbmVyIGhlaWdodCBiYXNpbmcgb24gdGhlIGNhcmQgd3JhcHBlciBjb2x1bW5zICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29udGFpbmVySGVpZ2h0KGFkZGl0aW9uYWxTcGFjZTogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3Qgd3JhcHBlckNvbHVtbnMgPSB0aGlzLl9jYXJkQ29sdW1ucy5tYXAoKGNvbHVtbikgPT5cbiAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgIC5tYXAoKGNhcmQpID0+IHRoaXMuX2NhcmRXcmFwcGVycy5maW5kKCh3cmFwcGVyKSA9PiB3cmFwcGVyLmdldFNvcnRlZEl0ZW1zKClbMF0uZGF0YSA9PT0gY2FyZCk/LmVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodik6IHYgaXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPT4gISF2KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnNIZWlnaHRzID0gd3JhcHBlckNvbHVtbnNcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm1hcCgoY2FyZCkgPT4gY2FyZC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkpXG4gICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IGNvbHVtbi5yZWR1Y2UoKGhlaWdodCwgY2FyZEhlaWdodCkgPT4gKGhlaWdodCArPSBjYXJkSGVpZ2h0KSwgMCkpO1xuXG4gICAgICAgIC8vICs0cHggYmVjYXVzZSBpdCdzIHRoZSB0b3AgJiBib3R0b20gYm9yZGVycyBvZiBjYXJkIHBsYWNlaG9sZGVyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lckhlaWdodCA9IE1hdGgubWF4KC4uLmNvbHVtbnNIZWlnaHRzKSArIDQgKyBhZGRpdGlvbmFsU3BhY2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIGZpeFdpZHRoTW9kaWZpZXJzKGNvbmZpZzogQ29sdW1uc1dpZHRoQ29uZmlnLCBudW1iZXJPZkNvbHVtbnM6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBtb2RpZmllcnMgPSBuZXcgQXJyYXkobnVtYmVyT2ZDb2x1bW5zKS5maWxsKDApO1xuXG4gICAgcmV0dXJuIG1vZGlmaWVycy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoTW9kaWZpZXIgPSBjb25maWdbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAoIWNvbHVtbldpZHRoTW9kaWZpZXIgfHwgY29sdW1uV2lkdGhNb2RpZmllciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbldpZHRoTW9kaWZpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuIFJldHVybnMgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gZml0IGluIGN1cnJlbnQgYXZhaWxhYmxlIHdpZHRoIGZvciBmZC1jYXJkLWxheW91dCAqL1xuZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDb2x1bW5zKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGNhcmRXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoIHx8IDE7XG4gICAgY2FyZFdpZHRoID0gY2FyZFdpZHRoIHx8IDE7XG5cbiAgICBjb25zdCBudW1iZXJPZkNhcmRzV2l0aE5vR2FwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIGNhcmRXaWR0aCksIDEpOyAvLyBFeGFtcGxlOiA5NjAgLyAzMjAgPSAzXG4gICAgY29uc3QgcmVxdWlyZWRXaWR0aFdpdGhHYXAgPSBudW1iZXJPZkNhcmRzV2l0aE5vR2FwICogY2FyZFdpZHRoICsgKG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxKSAqIENBUkRfR0FQX1dJRFRIO1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gcmVxdWlyZWRXaWR0aFdpdGhHYXAgPiBjb250YWluZXJXaWR0aCA/IG51bWJlck9mQ2FyZHNXaXRoTm9HYXAgLSAxIDogbnVtYmVyT2ZDYXJkc1dpdGhOb0dhcDtcblxuICAgIHJldHVybiBNYXRoLm1heChjb2x1bW5Db3VudCwgMSk7XG59XG5cbi8qKiBAaGlkZGVuIE1ldGhvZCB0byB1cGRhdGUgcmFuayBhZnRlciBjYXJkcyBhcmUgZHJhZ2dlZCAqL1xuZnVuY3Rpb24gYWRqdXN0Q2FyZFJhbmsoZHJhZ2dlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlLCByZXBsYWNlZENhcmQ6IENhcmREZWZpbml0aW9uRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgZHJhZ2dlZENhcmRSYW5rID0gZHJhZ2dlZENhcmQuZmRDYXJkRGVmO1xuICAgIGRyYWdnZWRDYXJkLmZkQ2FyZERlZiA9IHJlcGxhY2VkQ2FyZC5mZENhcmREZWY7XG4gICAgcmVwbGFjZWRDYXJkLmZkQ2FyZERlZiA9IGRyYWdnZWRDYXJkUmFuaztcbn1cbiIsIjxkaXZcbiAgICAjbGF5b3V0XG4gICAgY2RrRHJvcExpc3RHcm91cFxuICAgIGZkRG5kS2V5Ym9hcmRHcm91cFxuICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtbGF5b3V0IGZkLWZpeGVkLWNhcmQtbGF5b3V0X19jYXJkLWxheW91dC0tY29sdW1ucy17eyB0aGlzLl9udW1iZXJPZkNvbHVtbnMgfX1cIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbnRhaW5lckhlaWdodCArICdweCdcIlxuICAgIFtncm91cHNdPVwiX2NhcmRDb2x1bW5zXCJcbiAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIFtjdXN0b21Nb3ZlRm5dPVwiX2N1c3RvbU1vdmVGblwiXG4gICAgW2N1c3RvbVRyYW5zZmVyRm5dPVwiX2N1c3RvbVRyYW5zZmVyRm5cIlxuICAgIFtkaXNhYmxlS2V5Ym9hcmREcmFnRHJvcF09XCJkaXNhYmxlRHJhZ0Ryb3BcIlxuICAgIFtjZGtEcm9wTGlzdEdyb3VwRGlzYWJsZWRdPVwiZGlzYWJsZURyYWdEcm9wXCJcbiAgICBbYXR0ci5kaXJdPVwiX2RpclwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcExpc3RcbiAgICAgICAgKm5nRm9yPVwibGV0IGNhcmQgb2YgX2NhcmRzQXJyYXk7IGxldCBjYXJkSW5kZXggPSBpbmRleFwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXG4gICAgICAgIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmRcIlxuICAgICAgICBbY2xhc3MuZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtLXNpbmdsZV09XCJfc2luZ2xlSXRlbUNvbHVtbnMuaGFzKGNhcmQuZmRDYXJkRGVmKVwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiX2NvbHVtbnNXaWR0aC5nZXQoY2FyZC5mZENhcmREZWYpXCJcbiAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJfY29sdW1uc1dpZHRoLmdldChjYXJkLmZkQ2FyZERlZilcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNhcmRJbmRleFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cIl9lbnRlclByZWRpY2F0ZVwiXG4gICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiX29uRHJvcExpc3RFbnRlcmVkKCRldmVudClcIlxuICAgICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiX29uRHJvcExpc3RFeGl0ZWQoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBmZERuZEtleWJvYXJkSXRlbVxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNka0RyYWdQcmV2aWV3Q2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2FyZC1wcmV2aWV3XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjYXJkXCJcbiAgICAgICAgICAgIFtjZGtEcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheVwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIl9pdGVtSW5kZXhlcy5nZXQoY2FyZC5mZENhcmREZWYpIVwiXG4gICAgICAgICAgICBbZ3JvdXBJbmRleF09XCJfZ3JvdXBJbmRleGVzLmdldChjYXJkLmZkQ2FyZERlZikhXCJcbiAgICAgICAgICAgIChjZGtEcmFnRHJvcHBlZCk9XCJfb25EcmFnRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJfc2V0UGxhY2Vob2xkZXJTdHlsZShmYWxzZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZD8udGVtcGxhdGUgfHwgbnVsbFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtZml4ZWQtY2FyZC1sYXlvdXQtaXRlbT5cblxuICAgICAgICAgICAgPGRpdiAqY2RrRHJhZ1BsYWNlaG9sZGVyIGNsYXNzPVwiZmQtZml4ZWQtY2FyZC1sYXlvdXRfX2NhcmQtcGxhY2Vob2xkZXJcIiBbc3R5bGVdPVwiX3BsYWNlaG9sZGVyTWFyZ2luXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmQ/LnRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY2FyZENvbHVtbnM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJmZC1maXhlZC1jYXJkLWxheW91dF9fY2xlYXJmaXhcIiBbc3R5bGUub3JkZXJdPVwiaW5kZXggKyAxXCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|