"use strict";
|
var __assign = (this && this.__assign) || function () {
|
__assign = Object.assign || function(t) {
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
s = arguments[i];
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
t[p] = s[p];
|
}
|
return t;
|
};
|
return __assign.apply(this, arguments);
|
};
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
return new (P || (P = Promise))(function (resolve, reject) {
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
});
|
};
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
function step(op) {
|
if (f) throw new TypeError("Generator is already executing.");
|
while (_) try {
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
switch (op[0]) {
|
case 0: case 1: t = op; break;
|
case 4: _.label++; return { value: op[1], done: false };
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
default:
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
if (t[2]) _.ops.pop();
|
_.trys.pop(); continue;
|
}
|
op = body.call(thisArg, _);
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
}
|
};
|
Object.defineProperty(exports, "__esModule", { value: true });
|
var myValidator_1 = require("../../utils/myValidator");
|
var validatorInstance;
|
Page({
|
data: {
|
autosize: { maxHeight: 120, minHeight: 50 },
|
validatorInstance: {},
|
freeId: 0,
|
formId: 710803,
|
formData: {},
|
doccode: '',
|
fromPage: '',
|
delivery: {},
|
feeRateForPay: 1,
|
sellerUnCheckedNames: '',
|
coverImageUrl: '',
|
isShowDialog: false
|
},
|
onLoad: function (options) {
|
var doccode = options.doccode || '';
|
var fromPage = options.fromPage || '';
|
var settings = wx.globalData.settings;
|
this.setData({
|
fileUploadUrl: "/shopping/panicBuying.do?m=uploadAttachment&formid=" + this.data.formId,
|
doccode: doccode,
|
fromPage: fromPage,
|
feeRateForPay: (settings.feeRateForWxPay + settings.platformOperatorCommissionRatio) * 100
|
});
|
if (doccode) {
|
this.getSaveData();
|
}
|
else {
|
var storeEdit = this.selectComponent('#store-edit');
|
storeEdit.getStoreList();
|
}
|
},
|
getSaveData: function () {
|
return __awaiter(this, void 0, void 0, function () {
|
var doccode, _a, error, result, data, formData;
|
return __generator(this, function (_b) {
|
switch (_b.label) {
|
case 0:
|
doccode = this.data.doccode;
|
return [4, wx.$utils.to(wx.$http.request({
|
url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
|
data: {
|
doccode: doccode,
|
isEdit: true,
|
SellerOpenId: wx.globalData.OpenId
|
}
|
}))];
|
case 1:
|
_a = _b.sent(), error = _a[0], result = _a[1];
|
if (error) {
|
console.log(error);
|
return [2];
|
}
|
console.log(result);
|
data = result.list[0];
|
formData = {
|
promotionsTitle: data.title,
|
originalPrice: data.salesPrice,
|
promotionDescription: data.description,
|
startTime: data.effectiveStartDate,
|
endTime: data.effectiveEndDate,
|
coverImageList: (data.coverImageUrl && this.getCoverImageList(data)) || [],
|
imagesList: data.imagesUrl,
|
coverImage: data.coverImage,
|
images: data.images,
|
freeId: data.freeId,
|
};
|
this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, storeList: result.storeList, status: data.panicBuyingStatus, delivery: {
|
freeId: data.freeId,
|
freeName: data.freeName,
|
isRequiredAddress: data.isRequiredAddress,
|
transCosts: data.transCosts,
|
} }));
|
console.log('配送数据。。。', this.data.delivery);
|
wx.setNavigationBarTitle({
|
title: data.title
|
});
|
return [2];
|
}
|
});
|
});
|
},
|
getCoverImageList: function (data) {
|
var _a = data.coverImage.split(";"), unid = _a[0], seq = _a[1];
|
return [{
|
url: data.coverImageUrl || '',
|
unid: unid,
|
seq: seq
|
}];
|
},
|
onReady: function () {
|
this.initValidator();
|
},
|
selectedStartTime: function (event) {
|
console.log('开始', event);
|
this.setData({
|
startTime: event.detail.startTime,
|
});
|
},
|
selectedEndTime: function (event) {
|
console.log('结束', event);
|
this.setData({
|
endTime: event.detail.endTime,
|
});
|
},
|
checkPromotionsTitle: function (e) {
|
var value = e.detail.value;
|
console.log(e);
|
validatorInstance.checkField('promotionsTitle', value);
|
this.setData({
|
promotionsTitle: value.trim()
|
});
|
},
|
checkOriginalPrice: function (e) {
|
var value = e.detail.value;
|
console.log(e);
|
validatorInstance.checkField('originalPrice', value);
|
this.setData({
|
originalPrice: value.trim()
|
});
|
},
|
checkPromotionDescription: function (e) {
|
var value = e.detail.value;
|
console.log(e);
|
validatorInstance.checkField('promotionDescription', value);
|
this.setData({
|
promotionDescription: value.trim()
|
});
|
},
|
postFormData: function (data) {
|
return __awaiter(this, void 0, void 0, function () {
|
var _a, error, res;
|
return __generator(this, function (_b) {
|
switch (_b.label) {
|
case 0: return [4, wx.$utils.to(wx.$http.request({
|
url: '/shopping/panicBuying.do?m=saveDocCode',
|
data: data,
|
method: 'POST'
|
}))];
|
case 1:
|
_a = _b.sent(), error = _a[0], res = _a[1];
|
if (error) {
|
console.log(error);
|
return [2, false];
|
}
|
console.log(res);
|
if (res.state === 'success') {
|
wx.showToast({
|
title: '成功',
|
duration: 2000
|
});
|
this.setData({
|
doccode: res.DocCode
|
});
|
}
|
if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
|
this.setData({
|
sellerUnCheckedNames: res.sellerUnCheckedNames,
|
isShowDialog: true
|
});
|
}
|
return [2, res.state === 'success'];
|
}
|
});
|
});
|
},
|
onSubmit: wx.$utils.debounce(function () {
|
this.submitHandler();
|
return;
|
}),
|
submitHandler: function () {
|
return __awaiter(this, void 0, void 0, function () {
|
var timeQuantum, sellerEdit, storeEdit, fileUploader, fileUploaderMultiple, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, checkDefaultSeller, storeList, checkArr, data, coverImage, coverImageUrl, images, formData;
|
return __generator(this, function (_a) {
|
switch (_a.label) {
|
case 0:
|
timeQuantum = this.selectComponent('#time-quantum');
|
sellerEdit = this.selectComponent('#seller-edit');
|
storeEdit = this.selectComponent('#store-edit');
|
fileUploader = this.selectComponent('#file-uploader');
|
fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
|
console.log('sellerEdit');
|
console.log(timeQuantum);
|
checkStartTime = timeQuantum.checkTime("startTime", "请选择计划开始时间");
|
checkEndTime = timeQuantum.checkTime("endTime", "请选择计划结束时间");
|
checkCoverImage = fileUploader.checkImages("coverImage", "请上传一张封面图");
|
checkAllData = validatorInstance.checkAllData();
|
sellerList = sellerEdit.getSellerList();
|
if (sellerList.length < 1) {
|
wx.showToast({
|
title: '请选择营销人员',
|
icon: 'none',
|
duration: 2000
|
});
|
return [2];
|
}
|
checkDefaultSeller = sellerEdit.checkDefaultSeller();
|
if (!checkDefaultSeller) {
|
wx.showToast({
|
title: '请选择默认营销人员',
|
icon: 'none',
|
duration: 2000
|
});
|
return [2];
|
}
|
console.log('checkDefaultSeller', checkDefaultSeller);
|
storeList = storeEdit.getSelectedStoreIdList();
|
console.log('待提交的门店id', storeList);
|
checkArr = [checkStartTime, checkEndTime, checkCoverImage, checkAllData];
|
data = {};
|
if (!checkArr.every(function (item) {
|
return item;
|
})) return [3, 2];
|
console.log('....提交成功');
|
coverImage = fileUploader.getCoverImageUnid();
|
coverImageUrl = fileUploader.getImgList()[0].url || '';
|
this.setData({
|
coverImageUrl: coverImageUrl
|
});
|
images = fileUploaderMultiple.getImagesUnid();
|
console.log(coverImage, images);
|
formData = this.data;
|
data = {
|
docCode: formData.doccode,
|
formId: formData.formId,
|
docStatus: 100,
|
coverImage: coverImage,
|
images: images,
|
effectiveStartDate: formData.startTime,
|
effectiveEndDate: formData.endTime,
|
freeId: formData.freeId,
|
title: formData.promotionsTitle,
|
salesPrice: Number(formData.originalPrice),
|
description: formData.promotionDescription,
|
storeList: storeList,
|
sellerList: sellerList,
|
};
|
console.log('待发布数据', data);
|
return [4, this.postFormData(data)];
|
case 1:
|
if (!(_a.sent()))
|
return [2];
|
if (this.data.fromPage == 'edit') {
|
wx.navigateBack();
|
}
|
else {
|
wx.redirectTo({
|
url: '../promotionsManageList/promotionsManageList?tab=2'
|
});
|
}
|
return [3, 3];
|
case 2:
|
wx.showToast({
|
title: '页面还有错误未处理',
|
icon: 'none',
|
duration: 2000
|
});
|
console.log('还有错误未处理');
|
_a.label = 3;
|
case 3: return [2];
|
}
|
});
|
});
|
},
|
onSave: wx.$utils.debounce(function () {
|
var sellerEdit = this.selectComponent('#seller-edit');
|
var sellerList = sellerEdit.getSellerList();
|
var storeEdit = this.selectComponent('#store-edit');
|
var storeList = storeEdit.getSelectedStoreIdList();
|
console.log('待提交的门店id', storeList);
|
var fileUploader = this.selectComponent('#file-uploader');
|
var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
|
console.log('....提交成功');
|
var coverImage = fileUploader.getCoverImageUnid();
|
var images = fileUploaderMultiple.getImagesUnid();
|
console.log(coverImage, images);
|
var formData = this.data;
|
var data = {
|
docCode: formData.doccode,
|
formId: formData.formId,
|
docStatus: 0,
|
coverImage: coverImage,
|
images: images,
|
effectiveStartDate: formData.startTime,
|
effectiveEndDate: formData.endTime,
|
freeId: formData.freeId,
|
title: formData.promotionsTitle,
|
salesPrice: Number(formData.originalPrice),
|
description: formData.promotionDescription,
|
storeList: storeList,
|
sellerList: sellerList,
|
};
|
console.log('待保存数据', data);
|
this.postFormData(data);
|
return;
|
}),
|
initValidator: function () {
|
validatorInstance = new myValidator_1.default({
|
rules: {
|
promotionsTitle: {
|
required: true,
|
rangelength: [3, 14]
|
},
|
originalPrice: {
|
required: true,
|
number: true
|
},
|
},
|
messages: {
|
promotionsTitle: {
|
required: '请输入活动标题',
|
rangelength: '文字长度请控制在3到14之间'
|
},
|
originalPrice: {
|
required: '请输入活动报名费',
|
number: '价格必须为数字'
|
},
|
},
|
multiCheck: true
|
}, this);
|
console.log('hhhh,', validatorInstance);
|
},
|
onShareAppMessage: function () {
|
var doccode = this.data.doccode || '';
|
var imageUrl = this.data.coverImageUrl || '';
|
var sellerUnCheckedNames = this.data.sellerUnCheckedNames || '';
|
return {
|
title: "\u8BF7\u8425\u9500\u4EBA\u5458[" + sellerUnCheckedNames + "]\u9A8C\u8BC1\u8EAB\u4EFD",
|
imageUrl: imageUrl,
|
path: "pages/sellerVerify/sellerVerify?doccode=" + doccode,
|
};
|
}
|
});
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwQ3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2lnblVwQ3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVEQUFrRDtBQUVsRCxJQUFJLGlCQUE2QixDQUFDO0FBRWxDLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUMxQyxpQkFBaUIsRUFBQyxFQUFFO1FBQ3BCLE1BQU0sRUFBQyxDQUFDO1FBQ1IsTUFBTSxFQUFDLE1BQU07UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBQyxFQUFFO1FBQ1YsUUFBUSxFQUFDLEVBQUU7UUFDWCxRQUFRLEVBQUMsRUFBRTtRQUNYLGFBQWEsRUFBQyxDQUFDO1FBQ2Ysb0JBQW9CLEVBQUMsRUFBRTtRQUN2QixhQUFhLEVBQUMsRUFBRTtRQUNoQixZQUFZLEVBQUMsS0FBSztLQUNuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBRVosSUFBSSxPQUFPLEdBQUUsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUUsT0FBTyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGFBQWEsRUFBRSx3REFBc0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFRO1lBQ3ZGLE9BQU8sU0FBQTtZQUNQLFFBQVEsVUFBQTtZQUNSLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEdBQUMsR0FBRztTQUN2RixDQUFDLENBQUE7UUFDRixJQUFJLE9BQU8sRUFBRTtZ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QUksRUFBRSw2Q0FBMkMsT0FBUztTQUMzRCxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCAqIGFzIGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcblxyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6TXlWYWxpZGF0b3I7XHJcbi8vIGNvbnN0IGFwcCA9IGdldEFwcDxJQXBwT3B0aW9uPigpO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICBhdXRvc2l6ZTp7IG1heEhlaWdodDogMTIwLCBtaW5IZWlnaHQ6IDUwIH0sXHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZTp7fSxcclxuICAgIGZyZWVJZDowLFxyXG4gICAgZm9ybUlkOjcxMDgwMywgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgIGZvcm1EYXRhOiB7fSxcclxuICAgIGRvY2NvZGU6JycsXHJcbiAgICBmcm9tUGFnZTonJyxcclxuICAgIGRlbGl2ZXJ5Ont9LFxyXG4gICAgZmVlUmF0ZUZvclBheToxLFxyXG4gICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6JycsXHJcbiAgICBjb3ZlckltYWdlVXJsOicnLFxyXG4gICAgaXNTaG93RGlhbG9nOmZhbHNlXHJcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG4gICAgLy8gY29uc29sZS5sb2coYXBwKTtcclxuICAgIGxldCBkb2Njb2RlID1vcHRpb25zLmRvY2NvZGV8fCcnO1xyXG4gICAgbGV0IGZyb21QYWdlID1vcHRpb25zLmZyb21QYWdlfHwnJztcclxuICAgIGxldCBzZXR0aW5ncyA9IHd4Lmdsb2JhbERhdGEuc2V0dGluZ3M7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmaWxlVXBsb2FkVXJsOiBgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209dXBsb2FkQXR0YWNobWVudCZmb3JtaWQ9JHt0aGlzLmRhdGEuZm9ybUlkfWAsXHJcbiAgICAgIGRvY2NvZGUsXHJcbiAgICAgIGZyb21QYWdlLFxyXG4gICAgICBmZWVSYXRlRm9yUGF5OiAoc2V0dGluZ3MuZmVlUmF0ZUZvcld4UGF5K3NldHRpbmdzLnBsYXRmb3JtT3BlcmF0b3JDb21taXNzaW9uUmF0aW8pKjEwMFxyXG4gICAgfSlcclxuICAgIGlmIChkb2Njb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2F2ZURhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgc3RvcmVFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgICAgIHN0b3JlRWRpdC5nZXRTdG9yZUxpc3QoKTtcclxuICAgIH1cclxuICB9LFxyXG4gIGFzeW5jIGdldFNhdmVEYXRhKCkge1xyXG4gICAgbGV0IGRvY2NvZGUgPSB0aGlzLmRhdGEuZG9jY29kZTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdEZXRhaWxgLFxyXG4gICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgZG9jY29kZSxcclxuICAgICAgICAgIGlzRWRpdDp0cnVlLFxyXG4gICAgICAgICAgU2VsbGVyT3BlbklkOnd4Lmdsb2JhbERhdGEuT3BlbklkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgbGV0IGRhdGEgPSByZXN1bHQubGlzdFswXTtcclxuICAgIGxldCBmb3JtRGF0YSA9IHtcclxuICAgICAgcHJvbW90aW9uc1RpdGxlOiBkYXRhLnRpdGxlLFxyXG4gICAgICBvcmlnaW5hbFByaWNlOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgICBzdGFydFRpbWU6IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgICBlbmRUaW1lOiBkYXRhLmVmZmVjdGl2ZUVuZERhdGUsXHJcbiAgICAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZ0aGlzLmdldENvdmVySW1hZ2VMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIC8vIGltYWdlc0xpc3Q6IChkYXRhLmltYWdlc1VybC5sZW5ndGg+MCYmdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICAgIGltYWdlc0xpc3Q6IGRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgICBjb3ZlckltYWdlOiBkYXRhLmNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgIH07XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAuLi5mb3JtRGF0YSxcclxuICAgICAgY292ZXJJbWFnZVVybDpkYXRhLmNvdmVySW1hZ2VVcmwsXHJcbiAgICAgIHNlbGxlckxpc3Q6cmVzdWx0LnNlbGxlckxpc3QsXHJcbiAgICAgIHN0b3JlTGlzdDpyZXN1bHQuc3RvcmVMaXN0LFxyXG4gICAgICBzdGF0dXM6ZGF0YS5wYW5pY0J1eWluZ1N0YXR1cyxcclxuICAgICAgZGVsaXZlcnk6e1xyXG4gICAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgICAgICBmcmVlTmFtZTpkYXRhLmZyZWVOYW1lLFxyXG4gICAgICAgIGlzUmVxdWlyZWRBZGRyZXNzOmRhdGEuaXNSZXF1aXJlZEFkZHJlc3MsXHJcbiAgICAgICAgdHJhbnNDb3N0czpkYXRhLnRyYW5zQ29zdHMsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ+mFjemAgeaVsOaNruOAguOAguOAgicsdGhpcy5kYXRhLmRlbGl2ZXJ5KTtcclxuICAgIHd4LnNldE5hdmlnYXRpb25CYXJUaXRsZSh7XHJcbiAgICAgIHRpdGxlOiBkYXRhLnRpdGxlXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGdldENvdmVySW1hZ2VMaXN0KGRhdGE6YW55KXtcclxuICAgIGxldCBbdW5pZCxzZXFdID0gZGF0YS5jb3ZlckltYWdlLnNwbGl0KFwiO1wiKTtcclxuICAgIHJldHVybiBbe1xyXG4gICAgICB1cmw6IGRhdGEuY292ZXJJbWFnZVVybHx8JycsXHJcbiAgICAgIHVuaWQsXHJcbiAgICAgIHNlcVxyXG4gICAgfV1cclxuICB9LFxyXG5cclxuICBvblJlYWR5KCkge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdG9yKClcclxuICB9LFxyXG4gIHNlbGVjdGVkU3RhcnRUaW1lKGV2ZW50OmFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ+W8gOWniycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgc3RhcnRUaW1lOiBldmVudC5kZXRhaWwuc3RhcnRUaW1lLFxyXG4gICAgfSlcclxuICB9LFxyXG4gIHNlbGVjdGVkRW5kVGltZShldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ+e7k+adnycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZW5kVGltZTogZXZlbnQuZGV0YWlsLmVuZFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGNoZWNrUHJvbW90aW9uc1RpdGxlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25zVGl0bGUnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja09yaWdpbmFsUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ29yaWdpbmFsUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tQcm9tb3Rpb25EZXNjcmlwdGlvbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uRGVzY3JpcHRpb24nLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xyXG4gICAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOicvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1zYXZlRG9jQ29kZScsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBtZXRob2Q6J1BPU1QnXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfmiJDlip8nLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgZG9jY29kZTpyZXMuRG9jQ29kZVxyXG4gICAgICB9KVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygn5rS75Yqo5Y2V5Y+3Jyx0aGlzLmRhdGEuZm9ybURhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ2ZhaWxlZCcmJnJlcy5zZWxsZXJDaGVja2VkQmFsYW5jZT4wKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6IHJlcy5zZWxsZXJVbkNoZWNrZWROYW1lcyxcclxuICAgICAgICBpc1Nob3dEaWFsb2c6IHRydWVcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiByZXMuc3RhdGUgPT09ICdzdWNjZXNzJztcclxuICB9LFxyXG4gIG9uU3VibWl0Ond4LiR1dGlscy5kZWJvdW5jZShmdW5jdGlvbih0aGlzOmFueSl7XHJcbiAgICB0aGlzLnN1Ym1pdEhhbmRsZXIoKTtcclxuICAgIHJldHVybjtcclxuICB9KSxcclxuXHJcbiAgYXN5bmMgc3VibWl0SGFuZGxlcigpIHtcclxuICAgIGxldCB0aW1lUXVhbnR1bSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjdGltZS1xdWFudHVtJyk7XHJcbiAgICBsZXQgc2VsbGVyRWRpdCA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXIgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXInKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG5cclxuXHJcbiAgICBjb25zb2xlLmxvZygnc2VsbGVyRWRpdCcsKTtcclxuICAgIGNvbnNvbGUubG9nKHRpbWVRdWFudHVtKTtcclxuXHJcbiAgICBsZXQgY2hlY2tTdGFydFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJzdGFydFRpbWVcIiwgXCLor7fpgInmi6norqHliJLlvIDlp4vml7bpl7RcIik7XHJcbiAgICBsZXQgY2hlY2tFbmRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwiZW5kVGltZVwiLCBcIuivt+mAieaLqeiuoeWIkue7k+adn+aXtumXtFwiKTtcclxuICAgIGxldCBjaGVja0NvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuY2hlY2tJbWFnZXMoXCJjb3ZlckltYWdlXCIsIFwi6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+XCIpO1xyXG4gICAgLy8gbGV0IGNoZWNrSW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuY2hlY2tJbWFnZXMoXCJpbWFnZXNcIiwgXCLor7foh7PlsJHkuIrkvKDkuIDlvKDlm77niYdcIik7XHJcbiAgICBsZXQgY2hlY2tBbGxEYXRhID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tBbGxEYXRhKCk7XHJcbiAgICAvLyBpZiAodGhpcy5kYXRhLmdvb2RzSW1nTGlzdC5sZW5ndGggPCAxKSB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCfor7fkuIrkvKDkuqflk4Hlm77niYcnKTtcclxuICAgIC8vIH1cclxuICAgIGxldCBzZWxsZXJMaXN0ID0gc2VsbGVyRWRpdC5nZXRTZWxsZXJMaXN0KCk7XHJcbiAgICBpZiAoc2VsbGVyTGlzdC5sZW5ndGg8MSkge1xyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn6K+36YCJ5oup6JCl6ZSA5Lq65ZGYJyxcclxuICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgY2hlY2tEZWZhdWx0U2VsbGVyID0gc2VsbGVyRWRpdC5jaGVja0RlZmF1bHRTZWxsZXIoKTtcclxuICAgIGlmICghY2hlY2tEZWZhdWx0U2VsbGVyKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfor7fpgInmi6npu5jorqTokKXplIDkurrlkZgnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdjaGVja0RlZmF1bHRTZWxsZXInLGNoZWNrRGVmYXVsdFNlbGxlcik7XHJcblxyXG4gICAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5o+Q5Lqk55qE6Zeo5bqXaWQnLHN0b3JlTGlzdCk7XHJcblxyXG4gICAgbGV0IGNoZWNrQXJyID0gW2NoZWNrU3RhcnRUaW1lLGNoZWNrRW5kVGltZSxjaGVja0NvdmVySW1hZ2UsY2hlY2tBbGxEYXRhXTtcclxuICAgIGxldCBkYXRhID0ge307XHJcbiAgICBpZiAoY2hlY2tBcnIuZXZlcnkoKGl0ZW0pPT57XHJcbiAgICAgIHJldHVybiBpdGVtXHJcbiAgICB9KSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICAgIGxldCBjb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmdldENvdmVySW1hZ2VVbmlkKCk7XHJcbiAgICAgIGxldCBjb3ZlckltYWdlVXJsID0gZmlsZVVwbG9hZGVyLmdldEltZ0xpc3QoKVswXS51cmx8fCcnO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGNvdmVySW1hZ2VVcmxcclxuICAgICAgfSlcclxuICAgICAgbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMpO1xyXG4gICAgICBsZXQgZm9ybURhdGE6IGFueSA9IHRoaXMuZGF0YTtcclxuICAgICAgZGF0YSA9IHtcclxuICAgICAgICBkb2NDb2RlOiBmb3JtRGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgICAgICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgICAgICBkb2NTdGF0dXM6MTAwLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgICAgIGNvdmVySW1hZ2UsXHJcbiAgICAgICAgaW1hZ2VzLFxyXG4gICAgICAgIC8vIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSxcclxuICAgICAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICAgIC8vIG9yaWdpbmFsUHJpY2U6IE51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKSxcclxuICAgICAgICBzYWxlc1ByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLnByb21vdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgIHN0b3JlTGlzdCxcclxuICAgICAgICBzZWxsZXJMaXN0LFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCflvoXlj5HluIPmlbDmja4nLGRhdGEpO1xyXG4gICAgICBpZiAoIWF3YWl0IHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuZnJvbVBhZ2U9PSdlZGl0Jyl7XHJcbiAgICAgICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDonLi4vcHJvbW90aW9uc01hbmFnZUxpc3QvcHJvbW90aW9uc01hbmFnZUxpc3Q/dGFiPTInXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfpobXpnaLov5jmnInplJnor6/mnKrlpITnkIYnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICBjb25zb2xlLmxvZygn6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9LFxyXG5cclxuICBvblNhdmU6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIGxldCBzZWxsZXJFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzZWxsZXItZWRpdCcpO1xyXG4gICAgbGV0IHNlbGxlckxpc3QgPSBzZWxsZXJFZGl0LmdldFNlbGxlckxpc3QoKTtcclxuICAgIGxldCBzdG9yZUVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICAgIGxldCBzdG9yZUxpc3QgPSBzdG9yZUVkaXQuZ2V0U2VsZWN0ZWRTdG9yZUlkTGlzdCgpO1xyXG4gICAgY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyLW11bHRpcGxlJyk7XHJcbiAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMpO1xyXG4gICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAgIGZvcm1JZDogZm9ybURhdGEuZm9ybUlkLCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgICBkb2NTdGF0dXM6IDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICAgIGNvdmVySW1hZ2UsXHJcbiAgICAgIGltYWdlcyxcclxuICAgICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICAvLyBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDAsXHJcbiAgICAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKSxcclxuICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLnByb21vdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICBzdG9yZUxpc3QsXHJcbiAgICAgIHNlbGxlckxpc3QsXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH0pLFxyXG4gIC8vIG9uSW5wdXRTdGFydERhdGUoKSB7fSxcclxuICAvLyBvbklucHV0RW5kRGF0ZSgpIHt9LFxyXG4gIGluaXRWYWxpZGF0b3IoKXtcclxuICAgIC8vIOWunuS+i+WMllxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UgPSBuZXcgTXlWYWxpZGF0b3Ioe1xyXG4gICAgICBydWxlczoge1xyXG4gICAgICAgIHByb21vdGlvbnNUaXRsZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICByYW5nZWxlbmd0aDogWzMsMTRdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5qCH6aKYJyxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiAn5paH5a2X6ZW/5bqm6K+35o6n5Yi25ZyoM+WIsDE05LmL6Ze0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmiqXlkI3otLknLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAvLyAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5o+P6L+wJ1xyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG11bHRpQ2hlY2s6dHJ1ZVxyXG4gICAgfSx0aGlzKVxyXG4gICAgLy8gdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgdmFsaWRhdG9ySW5zdGFuY2VcclxuICAgIC8vIH0pXHJcbiAgICBjb25zb2xlLmxvZygnaGhoaCwnLHZhbGlkYXRvckluc3RhbmNlKTtcclxuICB9LFxyXG4gIG9uU2hhcmVBcHBNZXNzYWdlKCkge1xyXG4gICAgbGV0IGRvY2NvZGU6c3RyaW5nID0gdGhpcy5kYXRhLmRvY2NvZGUgfHwgJyc7XHJcbiAgICAvLyBsZXQgdGl0bGU6c3RyaW5nID0gdGhpcy5kYXRhLnByb21vdGlvbnNEYXRhLnRpdGxlIHx8ICcnO1xyXG4gICAgbGV0IGltYWdlVXJsOnN0cmluZyA9IHRoaXMuZGF0YS5jb3ZlckltYWdlVXJsIHx8ICcnO1xyXG4gICAgbGV0IHNlbGxlclVuQ2hlY2tlZE5hbWVzOnN0cmluZyA9IHRoaXMuZGF0YS5zZWxsZXJVbkNoZWNrZWROYW1lcyB8fCAnJztcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIHRpdGxlOiB1dGlscy5nZXRTaGFyZVRpdGxlKCksXHJcbiAgICAgIHRpdGxlOiBg6K+36JCl6ZSA5Lq65ZGYWyR7c2VsbGVyVW5DaGVja2VkTmFtZXN9XemqjOivgei6q+S7vWAsXHJcbiAgICAgIGltYWdlVXJsLFxyXG4gICAgICBwYXRoOiBgcGFnZXMvc2VsbGVyVmVyaWZ5L3NlbGxlclZlcmlmeT9kb2Njb2RlPSR7ZG9jY29kZX1gLFxyXG4gICAgfVxyXG4gIH1cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ==
|