com.phloxui
Version:
PhloxUI Ng2+ Framework
269 lines (268 loc) • 21.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core';
import { DialogService } from '../../../../service/DialogService.service';
import { ComponentDataLangSelector } from '../../../../component/dataview/ComponentDataLangSelector.component';
import { Option } from '../../../../decorator/Option.decorator';
import { I18N } from '../../../../decorator/I18N.decorator';
import { ComponentDataLangSelectorModel } from '../../../../component/model/ComponentDataLangSelectorModel';
const /** @type {?} */ TYPE_NAME = "material-component-lang-selector";
export class MaterialComponentDataLangSelector extends ComponentDataLangSelector {
/**
* @param {?} elementRef
* @param {?} dialogService
*/
constructor(elementRef, dialogService) {
super(elementRef, dialogService);
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
}
}
MaterialComponentDataLangSelector.TYPE_NAME = TYPE_NAME;
MaterialComponentDataLangSelector.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="material-component-lang-selector disabled-overlay" [style.width]="getWidth()" [style.height]="getHeight()">
<div class="wrapper left" [class.expand]="!hasLanguage()">
<div class="component-pane">
<!-- default -->
<div class="component-wrapper" [class.show]="_isSelectedLanguageByIndex(null)">
<phx-component-wrapper *ngIf="hasModel()" [type]="getModel().componentType" [model]="getModel().componentModel"
[]="getDefaultComponentHandler()" [data]="getDefaultData()" [dataParent]="this"
[]="getModel().componentOptions"></phx-component-wrapper>
</div>
<!-- by lang -->
<ng-template ngFor let-item [ngForOf]="_getDataLangList()" let-i="index">
<div class="component-wrapper" [class.show]="_isSelectedLanguageByIndex(i)">
<phx-component-wrapper *ngIf="hasModel() && item !== null" [type]="getModel().componentType" [model]="getModel().componentModel"
[]="getComponentHandler()" [setting]="getComponentSetting(i)" [data]="item" [dataParent]="this"
[]="getModel().componentOptions"></phx-component-wrapper>
</div>
</ng-template>
</div>
</div>
<div class="wrapper right" [class.hide]="!hasLanguage()">
<div class="lang-pane">
<div class="language-btn default data" [class.selected]="isSelectedLanguage(null)" [class.dirty]="_isDataDirtyByIndex(null)"
(click)="onActionBtnClicked($event, null, null)">
<div class="table-wrapper fluid">
<div class="table-cell-wrapper middle">
Default
</div>
</div>
</div>
<div *ngFor="let item of getMergedLanguageList(); let i = index" class="language-btn" [class.data]="_langHasDataByIndex(i)"
[]="_isDataDirtyByIndex(i)"
[]="isSelectedLanguage(item)" (click)="onActionBtnClicked($event, item, i)">
<div class="table-wrapper fluid">
<div class="table-cell-wrapper middle">
<div *ngIf="!_hasButtonIcon(item)">{{item.label}}</div>
<div *ngIf="_hasButtonIcon(item)">
<img src="{{item.iconURL}}">
</div>
</div>
</div>
</div>
<div class="mocking-btn"></div>
</div>
</div>
</div>
`
},] },
];
/** @nocollapse */
MaterialComponentDataLangSelector.ctorParameters = () => [
{ type: ElementRef, },
{ type: DialogService, },
];
MaterialComponentDataLangSelector.propDecorators = {
"model": [{ type: Input },],
"controller": [{ type: Input },],
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"help": [{ type: Input },],
"width": [{ type: Input },],
"height": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"langClickEvent": [{ type: Output, args: ['phxLangClick',] },],
"langAddEvent": [{ type: Output, args: ['phxLangAdd',] },],
"langRemoveEvent": [{ type: Output, args: ['phxLangRemove',] },],
"beforeLangClickEvent": [{ type: Output, args: ['phxBeforeLangClick',] },],
"beforeLangAddEvent": [{ type: Output, args: ['phxBeforeLangAdd',] },],
"beforeLangRemoveEvent": [{ type: Output, args: ['phxBeforeLangRemove',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", ComponentDataLangSelectorModel)
], MaterialComponentDataLangSelector.prototype, "model", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialComponentDataLangSelector.prototype, "controller", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialComponentDataLangSelector.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialComponentDataLangSelector.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialComponentDataLangSelector.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialComponentDataLangSelector.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialComponentDataLangSelector.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialComponentDataLangSelector.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialComponentDataLangSelector.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialComponentDataLangSelector.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialComponentDataLangSelector.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], MaterialComponentDataLangSelector.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialComponentDataLangSelector.prototype, "disabled", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialComponentDataLangSelector.prototype, "help", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialComponentDataLangSelector.prototype, "width", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialComponentDataLangSelector.prototype, "height", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('langClick'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "langClickEvent", void 0);
tslib_1.__decorate([
Option('langAdd'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "langAddEvent", void 0);
tslib_1.__decorate([
Option('langRemove'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "langRemoveEvent", void 0);
tslib_1.__decorate([
Option('beforeLangClick'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "beforeLangClickEvent", void 0);
tslib_1.__decorate([
Option('beforeLangAdd'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "beforeLangAddEvent", void 0);
tslib_1.__decorate([
Option('beforeLangRemove'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialComponentDataLangSelector.prototype, "beforeLangRemoveEvent", void 0);
function MaterialComponentDataLangSelector_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialComponentDataLangSelector.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialComponentDataLangSelector.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialComponentDataLangSelector.propDecorators;
/** @type {?} */
MaterialComponentDataLangSelector.TYPE_NAME;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.model;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.controller;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.dataParent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.ignoreParentData;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.data;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.ignoreParentDisabled;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.delegateHistory;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.onDisabled;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.onEnabled;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.loadingEnabled;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.i18nKey;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.bypass;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.options;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.disabled;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.help;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.width;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.height;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.loadEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.langClickEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.langAddEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.langRemoveEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.beforeLangClickEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.beforeLangAddEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.beforeLangRemoveEvent;
/** @type {?} */
MaterialComponentDataLangSelector.prototype.selectedLanguageIndex;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxDb21wb25lbnREYXRhTGFuZ1NlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9NYXRlcmlhbENvbXBvbmVudERhdGFMYW5nU2VsZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBRy9HLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFNUQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFJNUcsdUJBQU0sU0FBUyxHQUFXLGtDQUFrQyxDQUFDO0FBb0Q3RCxNQUFNLHdDQUF5QyxTQUFRLHlCQUF5Qjs7Ozs7SUF1RjlFLFlBQVksVUFBc0IsRUFBRSxhQUE0QjtRQUM5RCxLQUFLLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ2xDOzs7O0lBRU0sUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7OzhDQTFGd0IsU0FBUzs7WUFwRHJELFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTZDWDthQUNBOzs7O1lBL0QyQixVQUFVO1lBQzdCLGFBQWE7OztzQkFxRW5CLEtBQUs7MkJBR0wsS0FBSzsyQkFHTCxLQUFLO2lDQUdMLEtBQUs7cUJBR0wsS0FBSztxQ0FHTCxLQUFLO2dDQUdMLEtBQUs7MkJBR0wsS0FBSzswQkFHTCxLQUFLOytCQUdMLEtBQUs7d0JBR0wsS0FBSzt1QkFHTCxLQUFLLFNBQUMsWUFBWTt3QkFHbEIsS0FBSzt5QkFFTCxLQUFLO3FCQUlMLEtBQUs7c0JBS0wsS0FBSzt1QkFHTCxLQUFLOzBCQU1MLE1BQU0sU0FBQyxTQUFTOytCQUloQixNQUFNLFNBQUMsY0FBYzs2QkFHckIsTUFBTSxTQUFDLFlBQVk7Z0NBR25CLE1BQU0sU0FBQyxlQUFlO3FDQUd0QixNQUFNLFNBQUMsb0JBQW9CO21DQUczQixNQUFNLFNBQUMsa0JBQWtCO3NDQUd6QixNQUFNLFNBQUMscUJBQXFCOzs7SUExRTVCLE1BQU0sRUFBRTtzQ0FDUSw4QkFBOEI7OztJQUU5QyxNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7c0NBQ2EsUUFBUTs7O0lBRTdCLE1BQU0sRUFBRTtzQ0FDWSxRQUFROzs7SUFFNUIsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxDQUFDLFlBQVksQ0FBQzs7OztJQUtwQixNQUFNLEVBQUU7Ozs7SUFJUixJQUFJLEVBQUU7SUFDTixNQUFNLEVBQUU7Ozs7SUFJUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFNUixNQUFNLENBQUMsTUFBTSxDQUFDO3NDQUNNLFlBQVk7OztJQUdoQyxNQUFNLENBQUMsV0FBVyxDQUFDO3NDQUNNLFlBQVk7OztJQUVyQyxNQUFNLENBQUMsU0FBUyxDQUFDO3NDQUNNLFlBQVk7OztJQUVuQyxNQUFNLENBQUMsWUFBWSxDQUFDO3NDQUNNLFlBQVk7OztJQUV0QyxNQUFNLENBQUMsaUJBQWlCLENBQUM7c0NBQ00sWUFBWTs7O0lBRTNDLE1BQU0sQ0FBQyxlQUFlLENBQUM7c0NBQ00sWUFBWTs7O0lBRXpDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztzQ0FDTSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvRGlhbG9nU2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudERhdGFMYW5nU2VsZWN0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnQvZGF0YXZpZXcvQ29tcG9uZW50RGF0YUxhbmdTZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUhhc0hlbHAgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnQvSUhhc0hlbHAnO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnQvSUhhc0RhdGEnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XG5pbXBvcnQgeyBJRGF0YUxhbmdTZWxlY3RvckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnQvSURhdGFMYW5nU2VsZWN0b3JDb250cm9sbGVyJztcbmltcG9ydCB7IENvbXBvbmVudERhdGFMYW5nU2VsZWN0b3JNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudC9tb2RlbC9Db21wb25lbnREYXRhTGFuZ1NlbGVjdG9yTW9kZWwnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJtYXRlcmlhbC1jb21wb25lbnQtbGFuZy1zZWxlY3RvclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwibWF0ZXJpYWwtY29tcG9uZW50LWxhbmctc2VsZWN0b3IgZGlzYWJsZWQtb3ZlcmxheVwiIFtzdHlsZS53aWR0aF09XCJnZXRXaWR0aCgpXCIgW3N0eWxlLmhlaWdodF09XCJnZXRIZWlnaHQoKVwiPlxuXHQ8ZGl2IGNsYXNzPVwid3JhcHBlciBsZWZ0XCIgW2NsYXNzLmV4cGFuZF09XCIhaGFzTGFuZ3VhZ2UoKVwiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb21wb25lbnQtcGFuZVwiPiBcblx0XHRcdDwhLS0gZGVmYXVsdCAtLT5cblx0XHRcdDxkaXYgY2xhc3M9XCJjb21wb25lbnQtd3JhcHBlclwiIFtjbGFzcy5zaG93XT1cIl9pc1NlbGVjdGVkTGFuZ3VhZ2VCeUluZGV4KG51bGwpXCI+XG5cdFx0XHRcdDxwaHgtY29tcG9uZW50LXdyYXBwZXIgKm5nSWY9XCJoYXNNb2RlbCgpXCIgW3R5cGVdPVwiZ2V0TW9kZWwoKS5jb21wb25lbnRUeXBlXCIgW21vZGVsXT1cImdldE1vZGVsKCkuY29tcG9uZW50TW9kZWxcIlxuXHRcdFx0XHRcdFtoYW5kbGVyXT1cImdldERlZmF1bHRDb21wb25lbnRIYW5kbGVyKClcIiBbZGF0YV09XCJnZXREZWZhdWx0RGF0YSgpXCIgW2RhdGFQYXJlbnRdPVwidGhpc1wiXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwiZ2V0TW9kZWwoKS5jb21wb25lbnRPcHRpb25zXCI+PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5cdFx0XHQ8L2Rpdj4gXG5cdFx0XHQ8IS0tIGJ5IGxhbmcgLS0+XG5cdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwiX2dldERhdGFMYW5nTGlzdCgpXCIgbGV0LWk9XCJpbmRleFwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29tcG9uZW50LXdyYXBwZXJcIiBbY2xhc3Muc2hvd109XCJfaXNTZWxlY3RlZExhbmd1YWdlQnlJbmRleChpKVwiPlxuXHRcdFx0XHRcdDxwaHgtY29tcG9uZW50LXdyYXBwZXIgKm5nSWY9XCJoYXNNb2RlbCgpICYmIGl0ZW0gIT09IG51bGxcIiBbdHlwZV09XCJnZXRNb2RlbCgpLmNvbXBvbmVudFR5cGVcIiBbbW9kZWxdPVwiZ2V0TW9kZWwoKS5jb21wb25lbnRNb2RlbFwiXG5cdFx0XHRcdFx0XHRbaGFuZGxlcl09XCJnZXRDb21wb25lbnRIYW5kbGVyKClcIiBbc2V0dGluZ109XCJnZXRDb21wb25lbnRTZXR0aW5nKGkpXCIgW2RhdGFdPVwiaXRlbVwiIFtkYXRhUGFyZW50XT1cInRoaXNcIlxuXHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiZ2V0TW9kZWwoKS5jb21wb25lbnRPcHRpb25zXCI+PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJ3cmFwcGVyIHJpZ2h0XCIgW2NsYXNzLmhpZGVdPVwiIWhhc0xhbmd1YWdlKClcIj5cblx0XHQ8ZGl2IGNsYXNzPVwibGFuZy1wYW5lXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibGFuZ3VhZ2UtYnRuIGRlZmF1bHQgZGF0YVwiIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkTGFuZ3VhZ2UobnVsbClcIiBbY2xhc3MuZGlydHldPVwiX2lzRGF0YURpcnR5QnlJbmRleChudWxsKVwiXG5cdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkJ0bkNsaWNrZWQoJGV2ZW50LCBudWxsLCBudWxsKVwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlciBmbHVpZFwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0YWJsZS1jZWxsLXdyYXBwZXIgbWlkZGxlXCI+XG5cdFx0XHRcdFx0XHREZWZhdWx0XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE1lcmdlZExhbmd1YWdlTGlzdCgpOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJsYW5ndWFnZS1idG5cIiBbY2xhc3MuZGF0YV09XCJfbGFuZ0hhc0RhdGFCeUluZGV4KGkpXCJcblx0XHRcdFx0W2NsYXNzLmRpcnR5XT1cIl9pc0RhdGFEaXJ0eUJ5SW5kZXgoaSlcIlxuXHRcdFx0XHRbY2xhc3Muc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZExhbmd1YWdlKGl0ZW0pXCIgKGNsaWNrKT1cIm9uQWN0aW9uQnRuQ2xpY2tlZCgkZXZlbnQsIGl0ZW0sIGkpXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyIGZsdWlkXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRhYmxlLWNlbGwtd3JhcHBlciBtaWRkbGVcIj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCIhX2hhc0J1dHRvbkljb24oaXRlbSlcIj57e2l0ZW0ubGFiZWx9fTwvZGl2PlxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cIl9oYXNCdXR0b25JY29uKGl0ZW0pXCI+XG5cdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwie3tpdGVtLmljb25VUkx9fVwiPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9ja2luZy1idG5cIj48L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxDb21wb25lbnREYXRhTGFuZ1NlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50RGF0YUxhbmdTZWxlY3RvciBpbXBsZW1lbnRzIE9uSW5pdCwgSUhhc0hlbHAge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgLy8gUmUtZGVjbGFyZSBmaWVsZCB0byBkZWNsYXJlIG5nIEBJbnB1dC4gXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIG1vZGVsOiBDb21wb25lbnREYXRhTGFuZ1NlbGVjdG9yTW9kZWw7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgY29udHJvbGxlcjogSURhdGFMYW5nU2VsZWN0b3JDb250cm9sbGVyO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcbiAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YUhlbHBcbiAgQElucHV0KClcbiAgQEkxOE4oKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlbHA6IGFueTtcbiAgLy8gLS0tIGZyb20gQ29tcG9uZW50RGF0YUxhbmdTZWxlY3RvclxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaGVpZ2h0OiBzdHJpbmc7XG5cbiAgLy8gUmUtZGVjbGFyZSBmaWVsZCB0byBkZWNsYXJlIG5nIEBPdXRwdXQuXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxuICBAT3V0cHV0KCdwaHhMb2FkJylcbiAgQE9wdGlvbignbG9hZCcpXG4gIHByb3RlY3RlZCBsb2FkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdERhdGFMYW5nU2VsZWN0b3JcbiAgQE91dHB1dCgncGh4TGFuZ0NsaWNrJylcbiAgQE9wdGlvbignbGFuZ0NsaWNrJylcbiAgcHJvdGVjdGVkIGxhbmdDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4TGFuZ0FkZCcpXG4gIEBPcHRpb24oJ2xhbmdBZGQnKVxuICBwcm90ZWN0ZWQgbGFuZ0FkZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4TGFuZ1JlbW92ZScpXG4gIEBPcHRpb24oJ2xhbmdSZW1vdmUnKVxuICBwcm90ZWN0ZWQgbGFuZ1JlbW92ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlTGFuZ0NsaWNrJylcbiAgQE9wdGlvbignYmVmb3JlTGFuZ0NsaWNrJylcbiAgcHJvdGVjdGVkIGJlZm9yZUxhbmdDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlTGFuZ0FkZCcpXG4gIEBPcHRpb24oJ2JlZm9yZUxhbmdBZGQnKVxuICBwcm90ZWN0ZWQgYmVmb3JlTGFuZ0FkZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlTGFuZ1JlbW92ZScpXG4gIEBPcHRpb24oJ2JlZm9yZUxhbmdSZW1vdmUnKVxuICBwcm90ZWN0ZWQgYmVmb3JlTGFuZ1JlbW92ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwcml2YXRlIHNlbGVjdGVkTGFuZ3VhZ2VJbmRleDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCBkaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9ICBcbn1cbiJdfQ==