dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
169 lines • 23.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, HostBinding } from '@angular/core';
import { ElementService } from '../service/element.service';
import { FillAt } from '../service/bill-param';
import ace from 'ace-builds';
import { ThemeService } from '../../services/theme.service';
var SetPropertyBillComponent = /** @class */ (function () {
function SetPropertyBillComponent(elementSvr, theme) {
this.elementSvr = elementSvr;
this.theme = theme;
this.hostClass = true;
this.edtOption = { maxLines: 12, printMargin: false };
this.svr = (/** @type {?} */ (this.elementSvr.data.bill));
this.isReadonly = this.svr.parent.bill.isDelete() || this.svr.parent.bill.isBrowse();
this.SkipFill = FillAt.SkipFill;
this.FillAtOpen = FillAt.FillAtOpen;
this.FillAtSave = FillAt.FillAtSave;
this.options = [
{
Name: '用户名',
Value: '{{.User.Name}}'
},
{
Name: '部门代码',
Value: '{{.User.Dept.Code}}'
},
{
Name: '部门名称',
Value: '{{.User.Dept.Name}}'
},
{
Name: '当前时间',
Value: '{{datetime}}'
},
{
Name: '当前日期',
Value: '{{date}}'
},
{
Name: '唯一编号',
Value: '{{guid64}}'
}
];
this.primaryKeyFillOptions = tslib_1.__spread(this.options, [
{
Name: '原值',
Value: '{{.SRC}}'
}
]);
}
/**
* @return {?}
*/
SetPropertyBillComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
ace.config.set('basePath', '/front/assets/ace-builds/src-min-noconflict');
};
// 可操作/只读/不可见
// 可操作/只读/不可见
/**
* @param {?} e
* @return {?}
*/
SetPropertyBillComponent.prototype.selectShow =
// 可操作/只读/不可见
/**
* @param {?} e
* @return {?}
*/
function (e) {
this.svr.Param.FieldSettings.forEach((/**
* @param {?} v
* @return {?}
*/
function (v) {
v.Visibility = e;
}));
};
// 不填充/打开时/保存时
// 不填充/打开时/保存时
/**
* @param {?} e
* @return {?}
*/
SetPropertyBillComponent.prototype.selectSave =
// 不填充/打开时/保存时
/**
* @param {?} e
* @return {?}
*/
function (e) {
this.svr.Param.FieldSettings.forEach((/**
* @param {?} v
* @return {?}
*/
function (v) {
v.FillAt = e;
}));
};
// 可操作/只读/不可见
// 可操作/只读/不可见
/**
* @param {?} e
* @return {?}
*/
SetPropertyBillComponent.prototype.selectCloneShow =
// 可操作/只读/不可见
/**
* @param {?} e
* @return {?}
*/
function (e) {
this.svr.Param.ClonePrimaryKeySettings.forEach((/**
* @param {?} v
* @return {?}
*/
function (v) {
v.Visibility = e;
}));
};
SetPropertyBillComponent.decorators = [
{ type: Component, args: [{
selector: 'common-set-property-bill',
template: "<div class=\"main\">\r\n\t<!-- 1. \u8BBE\u7F6E\u6807\u9898 \u2193\u2193\u2193 -->\r\n\t<header class=\"set-title\">\u8BBE\u7F6E</header>\r\n\t<!-- 1. \u8BBE\u7F6E \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 2. \u64CD\u4F5C\u7C7B\u578B \u2193\u2193\u2193 -->\r\n\t<div class=\"types-title\">\u64CD\u4F5C\u7C7B\u578B</div>\r\n\t<section class=\"set-types\">\r\n\t\t<div class=\"types-left\">\r\n\t\t\t<mat-radio-group [(ngModel)]=\"svr.Param.Operate\" [disabled]=\"isReadonly\">\r\n\t\t\t\t<mat-radio-button value=\"add\">\u65B0\u589E</mat-radio-button>\r\n\t\t\t\t<mat-radio-button value=\"edit\">\u4FEE\u6539</mat-radio-button>\r\n\t\t\t\t<mat-radio-button value=\"delete\">\u5220\u9664</mat-radio-button>\r\n\t\t\t\t<mat-radio-button value=\"browse\">\u67E5\u770B</mat-radio-button>\r\n\t\t\t</mat-radio-group>\r\n\t\t</div>\r\n\t\t<div class=\"types-right\">\r\n\t\t\t<mat-checkbox [(ngModel)]=\"svr.Param.AllowClone\" [disabled]=\"isReadonly\" (change)=\"svr.fixCloneSettings()\">\r\n\t\t\t\t\u5141\u8BB8\u514B\u9686\r\n\t\t\t</mat-checkbox>\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 2. \u64CD\u4F5C\u7C7B\u578B \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 3. \u514B\u9686\u4E3B\u952E\u8BBE\u7F6E \u2193\u2193\u2193 -->\r\n\t<section class=\"set-content\" *ngIf=\"svr.Param.AllowClone\">\r\n\t\t<div class=\"content-title\">\u514B\u9686\u4E3B\u952E\u8BBE\u7F6E</div>\r\n\t\t<div class=\"table-wrapper\">\r\n\t\t\t<table class=\"set-table\" mat-table [dataSource]=\"svr.Param.ClonePrimaryKeySettings\">\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"no\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u5E8F\u53F7 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element,index as i\"> {{i}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"name\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u540D\u79F0 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\"> {{element.Name}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"visibility\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef>\r\n\t\t\t\t\t\t<mat-form-field class=\"th-common-click\">\r\n\t\t\t\t\t\t\t\u6743\u9650\r\n\t\t\t\t\t\t\t<mat-select class=\"select-position\" [disabled]=\"isReadonly\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"selectCloneShow($event.value)\">\r\n\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- </div> -->\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select [(ngModel)]=\"element.Visibility\" [disabled]=\"isReadonly\">\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"fill\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u586B\u5145\u503C </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<div class=\"fill-input\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"text\" matInput [disabled]=\"isReadonly\" [(ngModel)]=\"element.Fill\"\r\n\t\t\t\t\t\t\t\t\t\t[matAutocomplete]=\"auto\" placeholder=\"\u70B9\u51FB\u8F93\u5165\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"fill-input-text\">\u5E38\u7528</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"arrow\" svgIcon=\"arrow_drop_down\">\r\n\t\t\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<mat-autocomplete #auto=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of primaryKeyFillOptions\" [value]=\"option.Value\">\r\n\t\t\t\t\t\t\t\t{{option.Name}}</mat-option>\r\n\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<tr mat-header-row *matHeaderRowDef=\"['no','name','visibility','fill']\"></tr>\r\n\t\t\t\t<tr mat-row *matRowDef=\"let row;columns:['no','name','visibility','fill']\">\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 3. \u5185\u5BB9\u8BBE\u7F6E \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 4. \u5185\u5BB9\u8BBE\u7F6E \u2193\u2193\u2193 -->\r\n\t<section class=\"set-content\">\r\n\t\t<div class=\"content-title\">\u5185\u5BB9\u8BBE\u7F6E</div>\r\n\t\t<div class=\"table-wrapper\">\r\n\t\t\t<table class=\"set-table\" mat-table [dataSource]=\"svr.Param.FieldSettings\">\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"no\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u5E8F\u53F7 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element,index as i\"> {{i}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"name\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u540D\u79F0 </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\"> {{element.Name}}\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"visibility\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef>\r\n\t\t\t\t\t\t<mat-form-field class=\"th-common-click\">\r\n\t\t\t\t\t\t\t\u6743\u9650\r\n\t\t\t\t\t\t\t<mat-select class=\"select-position\" [disabled]=\"isReadonly\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"selectShow($event.value)\">\r\n\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- </div> -->\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select [(ngModel)]=\"element.Visibility\" [disabled]=\"isReadonly\">\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"\">\u53EF\u64CD\u4F5C</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"readonly\">\u53EA\u8BFB</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option value=\"hidden\">\u4E0D\u53EF\u89C1</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-container matColumnDef=\"fillat\">\r\n\t\t\t\t\t<th class=\"th-common-click\" mat-header-cell *matHeaderCellDef>\r\n\t\t\t\t\t\t<mat-form-field class=\"th-click\">\r\n\t\t\t\t\t\t\t\u586B\u5145\u65F6\u673A\r\n\t\t\t\t\t\t\t<mat-select class=\"select2-position\" [disabled]=\"isReadonly\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"selectSave($event.value)\">\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"SkipFill\">\u4E0D\u586B\u5145</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtOpen\">\u6253\u5F00\u65F6\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtSave\">\u4FDD\u5B58\u65F6\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select [(ngModel)]=\"element.FillAt\" [disabled]=\"isReadonly\">\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"SkipFill\">\u4E0D\u586B\u5145\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtOpen\">\u6253\u5F00\u65F6\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"FillAtSave\">\u4FDD\u5B58\u65F6\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container matColumnDef=\"fill\">\r\n\t\t\t\t\t<th mat-header-cell *matHeaderCellDef> \u586B\u5145\u503C </th>\r\n\t\t\t\t\t<td mat-cell *matCellDef=\"let element\">\r\n\r\n\t\t\t\t\t\t<div class=\"filed-adjust\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<div class=\"fill-input\">\r\n\t\t\t\t\t\t\t\t\t<input type=\"text\" matInput [disabled]=\"isReadonly\" [(ngModel)]=\"element.Fill\"\r\n\t\t\t\t\t\t\t\t\t\t[matAutocomplete]=\"auto\" placeholder=\"\u70B9\u51FB\u8F93\u5165\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"fill-input-text\">\u5E38\u7528</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"arrow\" svgIcon=\"arrow_drop_down\">\r\n\t\t\t\t\t\t\t\t\t</mat-icon>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<mat-autocomplete #auto=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of options\" [value]=\"option.Value\">\r\n\t\t\t\t\t\t\t\t{{option.Name}}</mat-option>\r\n\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<tr mat-header-row *matHeaderRowDef=\"['no','name','visibility','fillat','fill']\">\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr mat-row *matRowDef=\"let row;columns:['no','name','visibility','fillat','fill']\">\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 4. \u5185\u5BB9\u8BBE\u7F6E \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\t<!-- 5. \u9644\u52A0\u53C2\u6570 \u2193\u2193\u2193 -->\r\n\t<section class=\"set-arguments\">\r\n\t\t<div class=\"arg-title\">\u9644\u52A0\u4FE1\u606F</div>\r\n\t\t<div class=\"arg-area\" ace-editor [readOnly]=\"isReadonly\" [(text)]=\"svr.Param.Tag\" mode=\"sql\"\r\n\t\t\t[theme]=\"(theme.theme|async).model==='dark'?'tomorrow_night': 'eclipse'\" [options]=\"edtOption\"\r\n\t\t\t[autoUpdateContent]=\"true\" [durationBeforeCallback]=\"1000\"\r\n\t\t\tstyle=\"min-height: 124px; width:100%; overflow: auto;\">\r\n\r\n\t\t</div>\r\n\t</section>\r\n\t<!-- 5. \u9644\u52A0\u53C2\u6570 \u7ED3\u675F \u2191\u2191\u2191 -->\r\n\r\n</div>",
styles: ["@charset \"UTF-8\";.main{width:808px;height:100%;padding:16px 48px;box-sizing:border-box;overflow:auto}.arg-title,.content-title,.set-title,.type-title,.types-title{margin-bottom:16px}.set-arguments,.set-content,.set-types{width:100%}.set-title{font-size:18px}.arg-title,.content-title,.types-title{font-size:12px}.set-table,.set-types{font-size:14px}.set-content,.set-types{margin-bottom:24px}.set-types{display:flex;justify-content:space-between;box-sizing:border-box}.set-table,.table-wrapper{width:100%}.set-table .th-click,.set-table .th-common-click{display:flex;justify-content:space-between;align-items:center;width:100%}.set-table .th-click ::ng-deep .mat-select-value,.set-table .th-common-click ::ng-deep .mat-select-value{width:0!important}.set-table .th-click ::ng-deep .mat-select-arrow-wrapper,.set-table .th-common-click ::ng-deep .mat-select-arrow-wrapper{padding-left:60px;padding-bottom:0}.set-table .th-click ::ng-deep .mat-form-field-wrapper,.set-table .th-common-click ::ng-deep .mat-form-field-wrapper{padding-bottom:0}.set-table .th-click .select-position,.set-table .th-common-click .select-position{margin-left:-30px}.set-table .th-click .th-click ::ng-deep .mat-select-arrow-wrapper,.set-table .th-common-click .th-click ::ng-deep .mat-select-arrow-wrapper{padding-left:68px;padding-bottom:0}.set-table .th-click .select2-position,.set-table .th-common-click .select2-position{margin-left:-54px}.set-table ::ng-deep .mat-form-field-infix{padding:0;margin-top:-10px}.set-table ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-infix{padding:0}.set-table .filed-adjust ::ng-deep .mat-input-placeholder-wrapper{top:-10px}.set-table .filed-adjust .mat-form-field{width:100%}.set-table .filed-adjust .mat-form-field ::ng-deep .mat-form-field-wrapper{margin:0;padding-bottom:0;vertical-align:bottom}.set-table .filed-adjust .mat-form-field ::ng-deep .mat-form-field-infix{border:0;padding-bottom:0;box-sizing:border-box}.set-table .filed-adjust .mat-form-field ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-infix{padding:none}.adjust-position{display:flex;justify-content:space-between}.fill-input{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box}.fill-input .arrow{width:24px;height:24px}.arg-area{width:100%;height:192px;border-radius:4px}"]
}] }
];
/** @nocollapse */
SetPropertyBillComponent.ctorParameters = function () { return [
{ type: ElementService },
{ type: ThemeService }
]; };
SetPropertyBillComponent.propDecorators = {
hostClass: [{ type: HostBinding, args: ['class.set-property-bill',] }]
};
return SetPropertyBillComponent;
}());
export { SetPropertyBillComponent };
if (false) {
/** @type {?} */
SetPropertyBillComponent.prototype.hostClass;
/** @type {?} */
SetPropertyBillComponent.prototype.edtOption;
/** @type {?} */
SetPropertyBillComponent.prototype.svr;
/** @type {?} */
SetPropertyBillComponent.prototype.isReadonly;
/** @type {?} */
SetPropertyBillComponent.prototype.SkipFill;
/** @type {?} */
SetPropertyBillComponent.prototype.FillAtOpen;
/** @type {?} */
SetPropertyBillComponent.prototype.FillAtSave;
/** @type {?} */
SetPropertyBillComponent.prototype.options;
/** @type {?} */
SetPropertyBillComponent.prototype.primaryKeyFillOptions;
/** @type {?} */
SetPropertyBillComponent.prototype.elementSvr;
/** @type {?} */
SetPropertyBillComponent.prototype.theme;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXByb3BlcnR5LWJpbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnQvc2V0LXByb3BlcnR5LWJpbGwvc2V0LXByb3BlcnR5LWJpbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0MsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RDtJQThDQyxrQ0FBbUIsVUFBMEIsRUFBUyxLQUFtQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWM7UUF4Q2pDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDekQsY0FBUyxHQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0MsUUFBRyxHQUFHLG1CQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBbUIsQ0FBQztRQUMxRCxlQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2RSxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMzQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUMvQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxZQUFPLEdBQUc7WUFDVDtnQkFDQyxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsZ0JBQWdCO2FBQ3ZCO1lBQ0Q7Z0JBQ0MsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLHFCQUFxQjthQUM1QjtZQUNEO2dCQUNDLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxxQkFBcUI7YUFDNUI7WUFDRDtnQkFDQyxJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsY0FBYzthQUNyQjtZQUNEO2dCQUNDLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxVQUFVO2FBQ2pCO1lBQ0Q7Z0JBQ0MsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLFlBQVk7YUFDbkI7U0FDRCxDQUFDO1FBQ0YsMEJBQXFCLG9CQUNqQixJQUFJLENBQUMsT0FBTztZQUNmO2dCQUNDLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxVQUFVO2FBQ2pCO1dBQ0E7SUFDMEUsQ0FBQzs7OztJQUU3RSwyQ0FBUTs7O0lBQVI7UUFDQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsYUFBYTs7Ozs7O0lBQ2IsNkNBQVU7Ozs7OztJQUFWLFVBQVcsQ0FBaUI7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLENBQUM7WUFDckMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQyxFQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYzs7Ozs7O0lBQ2QsNkNBQVU7Ozs7OztJQUFWLFVBQVcsQ0FBUztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsQ0FBQztZQUNyQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNkLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQztJQUNELGFBQWE7Ozs7OztJQUNiLGtEQUFlOzs7Ozs7SUFBZixVQUFnQixDQUFpQjtRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxDQUFDO1lBQy9DLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQzs7Z0JBdEVELFNBQVMsU0FBQztvQkFDVixRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxzL1RBQWlEOztpQkFFakQ7Ozs7Z0JBVFEsY0FBYztnQkFJZCxZQUFZOzs7NEJBT25CLFdBQVcsU0FBQyx5QkFBeUI7O0lBaUV2QywrQkFBQztDQUFBLEFBdkVELElBdUVDO1NBbEVZLHdCQUF3Qjs7O0lBQ3BDLDZDQUF5RDs7SUFDekQsNkNBQXNEOztJQUN0RCx1Q0FBMEQ7O0lBQzFELDhDQUFnRjs7SUFDaEYsNENBQW9DOztJQUNwQyw4Q0FBd0M7O0lBQ3hDLDhDQUF3Qzs7SUFDeEMsMkNBeUJFOztJQUNGLHlEQU1FOztJQUNVLDhDQUFpQzs7SUFBRSx5Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2UsIEVsZW1lbnREYXRhQmlsbCB9IGZyb20gJy4uL3NlcnZpY2UvZWxlbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsbEF0IH0gZnJvbSAnLi4vc2VydmljZS9iaWxsLXBhcmFtJztcclxuaW1wb3J0IHsgVmlzaWJpbGl0eVR5cGUgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IGFjZSBmcm9tICdhY2UtYnVpbGRzJztcclxuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY29tbW9uLXNldC1wcm9wZXJ0eS1iaWxsJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc2V0LXByb3BlcnR5LWJpbGwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3NldC1wcm9wZXJ0eS1iaWxsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNldFByb3BlcnR5QmlsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5zZXQtcHJvcGVydHktYmlsbCcpIGhvc3RDbGFzcyA9IHRydWU7XHJcblx0ZWR0T3B0aW9uOiBhbnkgPSB7IG1heExpbmVzOiAxMiwgcHJpbnRNYXJnaW46IGZhbHNlIH07XHJcblx0cHVibGljIHN2ciA9IHRoaXMuZWxlbWVudFN2ci5kYXRhLmJpbGwgYXMgRWxlbWVudERhdGFCaWxsO1xyXG5cdGlzUmVhZG9ubHkgPSB0aGlzLnN2ci5wYXJlbnQuYmlsbC5pc0RlbGV0ZSgpIHx8IHRoaXMuc3ZyLnBhcmVudC5iaWxsLmlzQnJvd3NlKCk7XHJcblx0cmVhZG9ubHkgU2tpcEZpbGwgPSBGaWxsQXQuU2tpcEZpbGw7XHJcblx0cmVhZG9ubHkgRmlsbEF0T3BlbiA9IEZpbGxBdC5GaWxsQXRPcGVuO1xyXG5cdHJlYWRvbmx5IEZpbGxBdFNhdmUgPSBGaWxsQXQuRmlsbEF0U2F2ZTtcclxuXHRvcHRpb25zID0gW1xyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn55So5oi35ZCNJyxcclxuXHRcdFx0VmFsdWU6ICd7ey5Vc2VyLk5hbWV9fSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdE5hbWU6ICfpg6jpl6jku6PnoIEnLFxyXG5cdFx0XHRWYWx1ZTogJ3t7LlVzZXIuRGVwdC5Db2RlfX0nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn6YOo6Zeo5ZCN56ewJyxcclxuXHRcdFx0VmFsdWU6ICd7ey5Vc2VyLkRlcHQuTmFtZX19J1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0TmFtZTogJ+W9k+WJjeaXtumXtCcsXHJcblx0XHRcdFZhbHVlOiAne3tkYXRldGltZX19J1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0TmFtZTogJ+W9k+WJjeaXpeacnycsXHJcblx0XHRcdFZhbHVlOiAne3tkYXRlfX0nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn5ZSv5LiA57yW5Y+3JyxcclxuXHRcdFx0VmFsdWU6ICd7e2d1aWQ2NH19J1xyXG5cdFx0fVxyXG5cdF07XHJcblx0cHJpbWFyeUtleUZpbGxPcHRpb25zID0gW1xyXG5cdFx0Li4udGhpcy5vcHRpb25zLFxyXG5cdFx0e1xyXG5cdFx0XHROYW1lOiAn5Y6f5YC8JyxcclxuXHRcdFx0VmFsdWU6ICd7ey5TUkN9fSdcclxuXHRcdH1cclxuXHRdO1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50U3ZyOiBFbGVtZW50U2VydmljZSwgcHVibGljIHRoZW1lOiBUaGVtZVNlcnZpY2UpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0YWNlLmNvbmZpZy5zZXQoJ2Jhc2VQYXRoJywgJy9mcm9udC9hc3NldHMvYWNlLWJ1aWxkcy9zcmMtbWluLW5vY29uZmxpY3QnKTtcclxuXHR9XHJcblxyXG5cdC8vIOWPr+aTjeS9nC/lj6ror7sv5LiN5Y+v6KeBXHJcblx0c2VsZWN0U2hvdyhlOiBWaXNpYmlsaXR5VHlwZSkge1xyXG5cdFx0dGhpcy5zdnIuUGFyYW0uRmllbGRTZXR0aW5ncy5mb3JFYWNoKHYgPT4ge1xyXG5cdFx0XHR2LlZpc2liaWxpdHkgPSBlO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyDkuI3loavlhYUv5omT5byA5pe2L+S/neWtmOaXtlxyXG5cdHNlbGVjdFNhdmUoZTogRmlsbEF0KSB7XHJcblx0XHR0aGlzLnN2ci5QYXJhbS5GaWVsZFNldHRpbmdzLmZvckVhY2godiA9PiB7XHJcblx0XHRcdHYuRmlsbEF0ID0gZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQvLyDlj6/mk43kvZwv5Y+q6K+7L+S4jeWPr+ingVxyXG5cdHNlbGVjdENsb25lU2hvdyhlOiBWaXNpYmlsaXR5VHlwZSkge1xyXG5cdFx0dGhpcy5zdnIuUGFyYW0uQ2xvbmVQcmltYXJ5S2V5U2V0dGluZ3MuZm9yRWFjaCh2ID0+IHtcclxuXHRcdFx0di5WaXNpYmlsaXR5ID0gZTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=