You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
520 lines
56 KiB
520 lines
56 KiB
"use strict";
|
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
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) : adopt(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 index_1 = require("../../api/index");
|
|
var clerkOnline_1 = require("../../api/clerkOnline");
|
|
var setUp_1 = require("../../api/setUp");
|
|
Page({
|
|
data: {
|
|
indexPanel: [],
|
|
banner: [],
|
|
indicatorDots: false,
|
|
autoplay: false,
|
|
circular: false,
|
|
interval: 2000,
|
|
duration: 500,
|
|
currentSwiper: 0,
|
|
allheight: 0,
|
|
survey: {
|
|
issueTotal: 0,
|
|
unpassedProject: 0,
|
|
passedProject: 0,
|
|
},
|
|
allSituation: {
|
|
userTotal: 0,
|
|
companyRepresentTotal: 0,
|
|
partyNumber: 0,
|
|
userNumber: 0,
|
|
},
|
|
chartDataA: [],
|
|
colorA: [],
|
|
chartDataB: [],
|
|
colorB: [],
|
|
ec: {},
|
|
checkUpdateAvatar: false,
|
|
avatar: '',
|
|
userInfo: '',
|
|
propagation: true,
|
|
joinFlag: true
|
|
},
|
|
onLoad: function () {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
if (!wx.getStorageSync('token')) return [3, 2];
|
|
return [4, this.refreshToken()];
|
|
case 1:
|
|
_a.sent();
|
|
return [3, 3];
|
|
case 2:
|
|
wx.redirectTo({
|
|
url: '/pages/login/login'
|
|
});
|
|
_a.label = 3;
|
|
case 3: return [4, this.checkUpdateAvatar()];
|
|
case 4:
|
|
_a.sent();
|
|
return [4, this.getIndexPanel()];
|
|
case 5:
|
|
_a.sent();
|
|
return [4, this.getBannerList()];
|
|
case 6:
|
|
_a.sent();
|
|
return [4, this.getAllSituation()];
|
|
case 7:
|
|
_a.sent();
|
|
return [4, this.getSurvey()];
|
|
case 8:
|
|
_a.sent();
|
|
this.ecComponentA = this.selectComponent('#mychart-dom-bar-a');
|
|
this.ecComponentB = this.selectComponent('#mychart-dom-bar-b');
|
|
return [2];
|
|
}
|
|
});
|
|
});
|
|
},
|
|
getIndexPanel: function () {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
var that, res, zzjg_, dqhd_, zlph_, jcsk_, sjzx_, gbpj_, djsk_, i, i, i, i, i, i, i, i, i, i, i, i, panelList, i, i, i, i, i, i, err_1;
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
that = this;
|
|
_a.label = 1;
|
|
case 1:
|
|
_a.trys.push([1, 3, , 4]);
|
|
return [4, index_1.getIndexPanel()];
|
|
case 2:
|
|
res = _a.sent();
|
|
zzjg_ = {
|
|
zzjg_: false
|
|
};
|
|
res.data.push(zzjg_);
|
|
dqhd_ = {
|
|
dqhd_: false
|
|
};
|
|
res.data.push(dqhd_);
|
|
zlph_ = {
|
|
zlph_: false
|
|
};
|
|
res.data.push(zlph_);
|
|
jcsk_ = {
|
|
jcsk_: false
|
|
};
|
|
res.data.push(jcsk_);
|
|
sjzx_ = {
|
|
sjzx_: false
|
|
};
|
|
res.data.push(sjzx_);
|
|
gbpj_ = {
|
|
gbpj_: false
|
|
};
|
|
res.data.push(gbpj_);
|
|
djsk_ = {
|
|
djsk_: false
|
|
};
|
|
res.data.push(djsk_);
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10011') {
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].zzjg_ == false) {
|
|
res.data[i].zzjg_ = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10012') {
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].djsk_ == false) {
|
|
res.data[i].djsk_ = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10013') {
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].jcsk_ == false) {
|
|
res.data[i].jcsk_ = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10014') {
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].zlph_ == false) {
|
|
res.data[i].zlph_ = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10015') {
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].sjzx_ == false) {
|
|
res.data[i].sjzx_ = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10016') {
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].gbpj_ == false) {
|
|
res.data[i].gbpj_ = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
;
|
|
panelList = [];
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10011') {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
else if (res.data[i].zzjg_ == false) {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10012') {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
else if (res.data[i].djsk_ == false) {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10013') {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
else if (res.data[i].jcsk_ == false) {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10014') {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
else if (res.data[i].zlph_ == false) {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10015') {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
else if (res.data[i].sjzx_ == false) {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
}
|
|
;
|
|
for (i = 0; i < res.data.length; i++) {
|
|
if (res.data[i].navCode == '10016') {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
else if (res.data[i].gbpj_ == false) {
|
|
panelList.push(res.data[i]);
|
|
}
|
|
}
|
|
;
|
|
that.setData({
|
|
indexPanel: panelList,
|
|
});
|
|
return [3, 4];
|
|
case 3:
|
|
err_1 = _a.sent();
|
|
console.log(err_1);
|
|
return [3, 4];
|
|
case 4: return [2];
|
|
}
|
|
});
|
|
});
|
|
},
|
|
getBannerList: function () {
|
|
var that = this;
|
|
index_1.bannerList().then(function (res) {
|
|
that.setData({
|
|
banner: res.data
|
|
});
|
|
});
|
|
},
|
|
swiperChange: function (e) {
|
|
this.setData({
|
|
currentSwiper: e.detail.current
|
|
});
|
|
},
|
|
getAllSituation: function () {
|
|
var that = this;
|
|
var params = {
|
|
deptId: ''
|
|
};
|
|
index_1.getAllSituation(params).then(function (res) {
|
|
that.setData({
|
|
allSituation: res.data
|
|
});
|
|
});
|
|
},
|
|
getSurvey: function () {
|
|
var that = this;
|
|
var params = {
|
|
deptId: ''
|
|
};
|
|
index_1.getSurvey(params).then(function (res) {
|
|
that.setData({
|
|
survey: res.data.list,
|
|
});
|
|
});
|
|
},
|
|
refreshToken: function () {
|
|
var that = this;
|
|
wx.login({
|
|
success: function (res) {
|
|
var wxCode = res.code;
|
|
if (wxCode) {
|
|
index_1.getToken(wxCode).then(function (res) {
|
|
if (res.data.registerState == '0') {
|
|
wx.redirectTo({
|
|
url: '/pages/login/login'
|
|
});
|
|
}
|
|
else {
|
|
wx.setStorageSync('token', res.data.token);
|
|
wx.setStorageSync('userTagKey', res.data.userTagKey);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
onPullDownRefresh: function () {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
this.setData({
|
|
pageIndex: 1,
|
|
loadVisible: false,
|
|
});
|
|
return [4, this.checkUpdateAvatar()];
|
|
case 1:
|
|
_a.sent();
|
|
return [4, this.getIndexPanel()];
|
|
case 2:
|
|
_a.sent();
|
|
return [4, this.getBannerList()];
|
|
case 3:
|
|
_a.sent();
|
|
return [4, this.getAllSituation()];
|
|
case 4:
|
|
_a.sent();
|
|
return [4, this.getSurvey()];
|
|
case 5:
|
|
_a.sent();
|
|
this.ecComponentA = this.selectComponent('#mychart-dom-bar-a');
|
|
this.ecComponentB = this.selectComponent('#mychart-dom-bar-b');
|
|
wx.stopPullDownRefresh();
|
|
return [2];
|
|
}
|
|
});
|
|
});
|
|
},
|
|
toActDetail: function (e) {
|
|
wx.navigateTo({ url: "/pages/typicalCases/typicalCases?id=" + e.currentTarget.dataset.id });
|
|
},
|
|
navigateToUserNum: function () {
|
|
wx.navigateTo({
|
|
url: '/subpages/userNum/pages/userAnalysis/userAnalysis'
|
|
});
|
|
},
|
|
navigateToyt: function () {
|
|
wx.navigateTo({
|
|
url: '/subpages/issue/pages/topicsNumDetail/topicsNumDetail'
|
|
});
|
|
},
|
|
navigateToReality: function () {
|
|
wx.navigateTo({
|
|
url: '/subpages/reality/pages/realityIndex/realityIndex'
|
|
});
|
|
},
|
|
navigateToBasicReality: function () {
|
|
wx.navigateTo({
|
|
url: '/subpages/basicReality/pages/index/index'
|
|
});
|
|
},
|
|
toOrganizationStree: function () {
|
|
wx.navigateTo({
|
|
url: '/subpages/organization/pages/organizationStree/organizationStree'
|
|
});
|
|
},
|
|
navigateTogovernRanking: function () {
|
|
wx.navigateTo({
|
|
url: '/subpages/governRanking/pages/governRanking/governRanking'
|
|
});
|
|
},
|
|
toLeaderComment: function () {
|
|
wx.navigateTo({ url: '/subpages/leaderModel/pages/leaderIndex/leaderIndex' });
|
|
},
|
|
getInfo: function (e) {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
console.log('3', e);
|
|
if (!(e.detail.errMsg == 'getUserInfo:ok')) return [3, 2];
|
|
wx.showLoading({
|
|
title: '加载中.....',
|
|
mask: true,
|
|
success: function (res) { }
|
|
});
|
|
this.setData({
|
|
avatar: e.detail.userInfo.avatarUrl,
|
|
});
|
|
return [4, this.updateAvatar()];
|
|
case 1:
|
|
_a.sent();
|
|
wx.setStorageSync('isBackOpen', false);
|
|
wx.navigateTo({ url: '/subpages/clerkOnline/pages/myGroup/myGroup' });
|
|
wx.hideLoading();
|
|
return [3, 3];
|
|
case 2:
|
|
wx.setStorageSync('isBackOpen', false);
|
|
wx.navigateTo({ url: '/subpages/clerkOnline/pages/myGroup/myGroup' });
|
|
wx.hideLoading();
|
|
_a.label = 3;
|
|
case 3: return [2];
|
|
}
|
|
});
|
|
});
|
|
},
|
|
goclerkOnline: function () {
|
|
if (this.data.joinFlag == false) {
|
|
wx.showModal({
|
|
title: '',
|
|
content: '该用户未加入书记在线功能!',
|
|
showCancel: false,
|
|
confirmText: '确定',
|
|
confirmColor: '#3CC51F',
|
|
});
|
|
return;
|
|
}
|
|
if (this.data.checkUpdateAvatar) {
|
|
return;
|
|
}
|
|
wx.setStorageSync('isBackOpen', false);
|
|
wx.navigateTo({ url: '/subpages/clerkOnline/pages/myGroup/myGroup' });
|
|
},
|
|
checkUpdateAvatar: function () {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
var res;
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0: return [4, clerkOnline_1.checkUpdateAvatar()];
|
|
case 1:
|
|
res = _a.sent();
|
|
this.setData({
|
|
checkUpdateAvatar: res.data.updateFlag,
|
|
joinFlag: res.data.joinFlag
|
|
});
|
|
return [2];
|
|
}
|
|
});
|
|
});
|
|
},
|
|
showInspect: function () {
|
|
wx.showToast({
|
|
title: '此功能暂未开放',
|
|
icon: 'none',
|
|
duration: 1000
|
|
});
|
|
},
|
|
updateAvatar: function () {
|
|
return __awaiter(this, void 0, void 0, function () {
|
|
var obj, res;
|
|
return __generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
obj = {
|
|
avatar: this.data.avatar
|
|
};
|
|
return [4, clerkOnline_1.updateAvatar(obj)];
|
|
case 1:
|
|
res = _a.sent();
|
|
return [2];
|
|
}
|
|
});
|
|
});
|
|
},
|
|
toOutCallBack: function () {
|
|
wx.showModal({
|
|
title: '',
|
|
content: '确定退出当前账号',
|
|
confirmColor: '#29b9a5',
|
|
success: function (res) {
|
|
if (res.confirm) {
|
|
setUp_1.logout().then(function (res) {
|
|
console.log(wx.getStorageSync('token') + "************" + wx.getStorageSync('userTagKey'));
|
|
wx.setStorageSync('token', '');
|
|
wx.setStorageSync('userTagKey', '');
|
|
wx.setStorageSync('currentGrid', '');
|
|
console.log(wx.getStorageSync('token') + "************" + wx.getStorageSync('userTagKey'));
|
|
wx.reLaunch({
|
|
url: '../../pages/login/login'
|
|
});
|
|
});
|
|
}
|
|
else if (res.cancel) {
|
|
console.log('取消退出登录');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFpRztBQUNqRyxxREFBdUU7QUFDdkUseUNBQXdDO0FBK0J4QyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUUsRUFBRTtRQUNkLE1BQU0sRUFBRSxFQUFFO1FBQ1YsYUFBYSxFQUFFLEtBQUs7UUFDcEIsUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLEdBQUc7UUFDYixhQUFhLEVBQUUsQ0FBQztRQUNoQixTQUFTLEVBQUUsQ0FBQztRQUNaLE1BQU0sRUFBRTtZQUNOLFVBQVUsRUFBRSxDQUFDO1lBQ2IsZUFBZSxFQUFFLENBQUM7WUFDbEIsYUFBYSxFQUFFLENBQUM7U0FDakI7UUFDRCxZQUFZLEVBQUU7WUFDWixTQUFTLEVBQUUsQ0FBQztZQUNaLHFCQUFxQixFQUFFLENBQUM7WUFDeEIsV0FBVyxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsQ0FBQztTQUNkO1FBQ0QsVUFBVSxFQUFFLEVBQUU7UUFDZCxNQUFNLEVBQUUsRUFBRTtRQUNWLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTSxFQUFFLEVBQUU7UUFDVixFQUFFLEVBQUUsRUFBRTtRQUNOLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsTUFBTSxFQUFFLEVBQUU7UUFDVixRQUFRLEVBQUUsRUFBRTtRQUNaLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFFBQVEsRUFBRSxJQUFJO0tBQ2Y7SUFDSyxNQUFNOzs7Ozs2QkFDTixFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUExQixjQUEwQjt3QkFDNUIsV0FBTSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUE7O3dCQUF6QixTQUF5QixDQUFBOzs7d0JB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d0JBQUEsQ0FBQzt3QkFFRixLQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUN4QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtnQ0FDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7NkJBQzVCO2lDQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFO2dDQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTs2QkFDNUI7eUJBQ0Y7d0JBQUEsQ0FBQzt3QkFFRixLQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUN4QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtnQ0FDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7NkJBQzVCO2lDQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFO2dDQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTs2QkFDNUI7eUJBQ0Y7d0JBQUEsQ0FBQzt3QkFFRixLQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUN4QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FB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QyxDQUFBO3dCQUM5QixFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQTt3QkFDbkMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUE7d0JBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO3dCQUMxRixFQUFFLENBQUMsUUFBUSxDQUFDOzRCQUNWLEdBQUcsRUFBRSx5QkFBeUI7eUJBQy9CLENBQUMsQ0FBQTtvQkFDSixDQUFDLENBQUMsQ0FBQTtpQkFDSDtxQkFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7b0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7aUJBQ3RCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiYW5uZXJMaXN0LCBnZXRBbGxTaXR1YXRpb24sIGdldFN1cnZleSwgZ2V0VG9rZW4sIGdldEluZGV4UGFuZWwgfSBmcm9tICcuLi8uLi9hcGkvaW5kZXgnXHJcbmltcG9ydCB7IGNoZWNrVXBkYXRlQXZhdGFyLCB1cGRhdGVBdmF0YXIgfSBmcm9tICcuLi8uLi9hcGkvY2xlcmtPbmxpbmUnXHJcbmltcG9ydCB7IGxvZ291dCB9IGZyb20gJy4uLy4uL2FwaS9zZXRVcCdcclxuLy8gaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICcuLi8uLi9jb21wb25lbnRzL2VjLWNhbnZhcy9lY2hhcnRzLmpzJ1xyXG5cclxuLy8gZnVuY3Rpb24gc2V0T3B0aW9uKGNoYXJ0OiBhbnksIGNoYXJ0RGF0YTogQW55QXJyYXksIGNvbG9yOiBBbnlBcnJheSkge1xyXG4vLyAgIGNvbnN0IG9wdGlvbiA9IHtcclxuLy8gICAgIGNvbG9yOiBjb2xvcixcclxuLy8gICAgIHNlcmllczogW1xyXG4vLyAgICAgICB7XHJcbi8vICAgICAgICAgdHlwZTogJ3BpZScsXHJcbi8vICAgICAgICAgcmFkaXVzOiBbJzcwJScsICc5NSUnXSxcclxuLy8gICAgICAgICBzaWxlbnQ6IHRydWUsXHJcbi8vICAgICAgICAgYXZvaWRMYWJlbE92ZXJsYXA6IGZhbHNlLFxyXG4vLyAgICAgICAgIGxhYmVsOiB7XHJcbi8vICAgICAgICAgICBzaG93OiBmYWxzZVxyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgbGFiZWxMaW5lOiB7XHJcbi8vICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuLy8gICAgICAgICAgIG5vcm1hbDoge1xyXG4vLyAgICAgICAgICAgICBzaG93OiBmYWxzZVxyXG4vLyAgICAgICAgICAgfVxyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbi8vICAgICAgICAgICBib3JkZXJDb2xvcjogJyNmZmYnLFxyXG4vLyAgICAgICAgICAgYm9yZGVyV2lkdGg6ICcyJyxcclxuLy8gICAgICAgICB9LFxyXG4vLyAgICAgICAgIGRhdGE6IGNoYXJ0RGF0YVxyXG4vLyAgICAgICB9XHJcbi8vICAgICBdXHJcbi8vICAgfVxyXG4vLyAgIGNoYXJ0LnNldE9wdGlvbihvcHRpb24pXHJcbi8vIH1cclxuUGFnZSh7XHJcbiAgZGF0YToge1xyXG4gICAgaW5kZXhQYW5lbDogW10sXHJcbiAgICBiYW5uZXI6IFtdLFxyXG4gICAgaW5kaWNhdG9yRG90czogZmFsc2UsLy/mjIfnpLrngrlcclxuICAgIGF1dG9wbGF5OiBmYWxzZSwvL3RydWUsLy/oh6rliqjmkq3mlL5cclxuICAgIGNpcmN1bGFyOiBmYWxzZSwvL+ihlOaOpea7keWKqFxyXG4gICAgaW50ZXJ2YWw6IDIwMDAsIC8v6Ieq5Yqo5pKt5pS+6Ze06ZqU5pe26ZW/KG1zKVxyXG4gICAgZHVyYXRpb246IDUwMCwvL+W5u+eBr+eJh+WIh+aNouaXtumVvyhtcylcclxuICAgIGN1cnJlbnRTd2lwZXI6IDAsXHJcbiAgICBhbGxoZWlnaHQ6IDAsXHJcbiAgICBzdXJ2ZXk6IHtcclxuICAgICAgaXNzdWVUb3RhbDogMCwvL+iurumimOaAu+aVsFxyXG4gICAgICB1bnBhc3NlZFByb2plY3Q6IDAsLy/mnKrovazpobnnm65cclxuICAgICAgcGFzc2VkUHJvamVjdDogMCwvL+W3sui9rOmhueebrlxyXG4gICAgfSwvL+iurumimOaAu+aVsFxyXG4gICAgYWxsU2l0dWF0aW9uOiB7XHJcbiAgICAgIHVzZXJUb3RhbDogMCwvL+eUqOaIt+aAu+aVsFxyXG4gICAgICBjb21wYW55UmVwcmVzZW50VG90YWw6IDAsLy/lhbbkuK3kvIHkuJrku6PooajmlbBcclxuICAgICAgcGFydHlOdW1iZXI6IDAsLy/lhZrlkZjmgLvmlbBcclxuICAgICAgdXNlck51bWJlcjogMCwvL+WxheawkeaAu+aVsFxyXG4gICAgfSwvL+eUqOaIt1xyXG4gICAgY2hhcnREYXRhQTogW10sXHJcbiAgICBjb2xvckE6IFtdLFxyXG4gICAgY2hhcnREYXRhQjogW10sXHJcbiAgICBjb2xvckI6IFtdLFxyXG4gICAgZWM6IHt9LFxyXG4gICAgY2hlY2tVcGRhdGVBdmF0YXI6IGZhbHNlLFxyXG4gICAgYXZhdGFyOiAnJyxcclxuICAgIHVzZXJJbmZvOiAnJyxcclxuICAgIHByb3BhZ2F0aW9uOiB0cnVlLFxyXG4gICAgam9pbkZsYWc6IHRydWVcclxuICB9LFxyXG4gIGFzeW5jIG9uTG9hZCgpIHtcclxuICAgIGlmICh3eC5nZXRTdG9yYWdlU3luYygndG9rZW4nKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICB1cmw6ICcvcGFnZXMvbG9naW4vbG9naW4nXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmNoZWNrVXBkYXRlQXZhdGFyKClcclxuICAgIGF3YWl0IHRoaXMuZ2V0SW5kZXhQYW5lbCgpXHJcbiAgICBhd2FpdCB0aGlzLmdldEJhbm5lckxpc3QoKVxyXG4gICAgYXdhaXQgdGhpcy5nZXRBbGxTaXR1YXRpb24oKVxyXG4gICAgYXdhaXQgdGhpcy5nZXRTdXJ2ZXkoKVxyXG4gICAgdGhpcy5lY0NvbXBvbmVudEEgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI215Y2hhcnQtZG9tLWJhci1hJylcclxuICAgIHRoaXMuZWNDb21wb25lbnRCID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNteWNoYXJ0LWRvbS1iYXItYicpXHJcbiAgfSxcclxuICAvKipcclxuICAqIOiOt+W+l+mmlumhteWKn+iDveadg+mZkFxyXG4gICovXHJcbiAgYXN5bmMgZ2V0SW5kZXhQYW5lbCgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgZ2V0SW5kZXhQYW5lbCgpXHJcbiAgICAgIHZhciB6empnXyA9IHtcclxuICAgICAgICB6empnXzogZmFsc2VcclxuICAgICAgfVxyXG4gICAgICByZXMuZGF0YS5wdXNoKHp6amdfKVxyXG4gICAgICB2YXIgZHFoZF8gPSB7XHJcbiAgICAgICAgZHFoZF86IGZhbHNlXHJcbiAgICAgIH1cclxuICAgICAgcmVzLmRhdGEucHVzaChkcWhkXylcclxuICAgICAgdmFyIHpscGhfID0ge1xyXG4gICAgICAgIHpscGhfOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHJlcy5kYXRhLnB1c2goemxwaF8pXHJcbiAgICAgIHZhciBqY3NrXyA9IHtcclxuICAgICAgICBqY3NrXzogZmFsc2VcclxuICAgICAgfVxyXG4gICAgICByZXMuZGF0YS5wdXNoKGpjc2tfKVxyXG4gICAgICB2YXIgc2p6eF8gPSB7XHJcbiAgICAgICAgc2p6eF86IGZhbHNlXHJcbiAgICAgIH1cclxuICAgICAgcmVzLmRhdGEucHVzaChzanp4XylcclxuICAgICAgdmFyIGdicGpfID0ge1xyXG4gICAgICAgIGdicGpfOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHJlcy5kYXRhLnB1c2goZ2Jwal8pXHJcbiAgICAgIHZhciBkanNrXyA9IHtcclxuICAgICAgICBkanNrXzogZmFsc2VcclxuICAgICAgfVxyXG4gICAgICByZXMuZGF0YS5wdXNoKGRqc2tfKVxyXG5cclxuICAgICAgLy8g5omA5pyJ562J5LqOZmFsc2XnmoTpg73mmK/lkI7lj7DkuLrphY3nva7nmoTmnYPpmZDnmoRcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChyZXMuZGF0YVtpXS5uYXZDb2RlID09ICcxMDAxMScpIHsvL+e7hOe7h+aetuaehFxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGFbaV0uenpqZ18gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICByZXMuZGF0YVtpXS56empnXyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocmVzLmRhdGFbaV0ubmF2Q29kZSA9PSAnMTAwMTInKSB7Ly/lhZrlu7rlrp7lhrVcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5kYXRhW2ldLmRqc2tfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgcmVzLmRhdGFbaV0uZGpza18gPSB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDEzJykgey8v5Z+65bGC5a6e5Ya1XHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YVtpXS5qY3NrXyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHJlcy5kYXRhW2ldLmpjc2tfID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChyZXMuZGF0YVtpXS5uYXZDb2RlID09ICcxMDAxNCcpIHsvL+ayu+eQhuaOkuihjFxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGFbaV0uemxwaF8gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICByZXMuZGF0YVtpXS56bHBoXyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocmVzLmRhdGFbaV0ubmF2Q29kZSA9PSAnMTAwMTUnKSB7Ly/kuaborrDlnKjnur9cclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5kYXRhW2ldLnNqenhfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgcmVzLmRhdGFbaV0uc2p6eF8gPSB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDE2Jykgey8v5bmy6YOo6K+E5Lu3XHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YVtpXS5nYnBqXyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIHJlcy5kYXRhW2ldLmdicGpfID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gcmVzLmRhdGEg6YeN5paw5o6S5bqPXHJcbiAgICAgIHZhciBwYW5lbExpc3QgPSBbXTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChyZXMuZGF0YVtpXS5uYXZDb2RlID09ICcxMDAxMScpIHsvL+e7hOe7h+aetuaehFxyXG4gICAgICAgICAgcGFuZWxMaXN0LnB1c2gocmVzLmRhdGFbaV0pXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuZGF0YVtpXS56empnXyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgcGFuZWxMaXN0LnB1c2gocmVzLmRhdGFbaV0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDEyJykgey8v5YWa5bu65a6e5Ya1XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhW2ldLmRqc2tfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDEzJykgey8v5Z+65bGC5a6e5Ya1XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhW2ldLmpjc2tfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDE0Jykgey8v5rK755CG5o6S6KGMXHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhW2ldLnpscGhfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDE1Jykgey8v5Lmm6K6w5Zyo57q/XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhW2ldLnNqenhfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHJlcy5kYXRhW2ldLm5hdkNvZGUgPT0gJzEwMDE2Jykgey8v5bmy6YOo6K+E5Lu3XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhW2ldLmdicGpfID09IGZhbHNlKSB7XHJcbiAgICAgICAgICBwYW5lbExpc3QucHVzaChyZXMuZGF0YVtpXSlcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIHRoYXQuc2V0RGF0YSh7XHJcbiAgICAgICAgaW5kZXhQYW5lbDogcGFuZWxMaXN0LFxyXG4gICAgICB9KVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycilcclxuICAgIH1cclxuICB9LFxyXG4gIC8vIOi9ruaSrVxyXG4gIGdldEJhbm5lckxpc3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgYmFubmVyTGlzdCgpLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoYXQuc2V0RGF0YSh7XHJcbiAgICAgICAgYmFubmVyOiByZXMuZGF0YVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIGJhbm5lcui9ruaSrVxyXG4gIHN3aXBlckNoYW5nZTogZnVuY3Rpb24gKGU6IHsgZGV0YWlsOiB7IGN1cnJlbnQ6IGFueSB9IH0pIHtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGN1cnJlbnRTd2lwZXI6IGUuZGV0YWlsLmN1cnJlbnRcclxuICAgIH0pXHJcbiAgfSxcclxuICAvL+aVsOaNruWIhuaekOWwj+eoi+W6j+mmlumhtS3nlKjmiLfmjqXlj6NcclxuICBnZXRBbGxTaXR1YXRpb246IGZ1bmN0aW9uICgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgLy8gZ2VuZXJhdGVEYXRlOiB1dGlscy5mb3JtYXRUaW1lc3RhbXAobmV3IERhdGUoKSksXHJcbiAgICAgIGRlcHRJZDogJycvL3d4LmdldFN0b3JhZ2VTeW5jKCdjaGlsZHJlbklEJylcclxuICAgIH1cclxuICAgIGdldEFsbFNpdHVhdGlvbihwYXJhbXMpLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgIC8vIChyZXMuZGF0YS5saXN0LnVucGFzc2VkUHJvamVjdCAvIDEwMDAwKS50b0ZpeGVkKDIpXHJcbiAgICAgIHRoYXQuc2V0RGF0YSh7XHJcbiAgICAgICAgYWxsU2l0dWF0aW9uOiByZXMuZGF0YVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICAvL+aVsOaNruWIhuaekOWwj+eoi+W6j+mmlumhteaOpeWPoy3orq7popjmjqXlj6NcclxuICBnZXRTdXJ2ZXk6IGZ1bmN0aW9uICgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgZGVwdElkOiAnJy8vd3guZ2V0U3RvcmFnZVN5bmMoJ2NoaWxkcmVuSUQnKVxyXG4gICAgfVxyXG4gICAgLy8gaXNzdWVUb3RhbDogMCwvL+iurumimOaAu+aVsFxyXG4gICAgLy8gICB1bnBhc3NlZFByb2plY3Q6IDAsLy/mnKrovazpobnnm65cclxuICAgIC8vICAgICBwYXNzZWRQcm9qZWN0OiAwLC8v5bey6L2s6aG555uuXHJcbiAgICBnZXRTdXJ2ZXkocGFyYW1zKS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGF0LnNldERhdGEoe1xyXG4gICAgICAgIHN1cnZleTogcmVzLmRhdGEubGlzdCxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vIGlmICh0aGF0LmRhdGEuc3VydmV5Lmlzc3VlVG90YWwgPiA5OTk5KSB7XHJcbiAgICAgIC8vICAgdGhhdC5zZXREYXRhKHtcclxuICAgICAgLy8gICAgIHN1cnZleToge1xyXG4gICAgICAvLyAgICAgICBpc3N1ZVRvdGFsQTogdGhhdC5kYXRhLnN1cnZleS5pc3N1ZVRvdGFsLnRvRml4ZWQoMilcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyB9O1xyXG5cclxuICAgICAgLy8gaWYgKHRoYXQuZGF0YS5zdXJ2ZXkudW5wYXNzZWRQcm9qZWN0ID4gOTk5OSkge1xyXG4gICAgICAvLyAgIHRoYXQuc2V0RGF0YSh7XHJcbiAgICAgIC8vICAgICBzdXJ2ZXk6IHtcclxuICAgICAgLy8gICAgICAgdW5wYXNzZWRQcm9qZWN0QTogdGhhdC5kYXRhLnN1cnZleS51bnBhc3NlZFByb2plY3QudG9GaXhlZCgyKVxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgIH0pXHJcbiAgICAgIC8vIH07XHJcblxyXG4gICAgICAvLyBpZiAodGhhdC5kYXRhLnN1cnZleS5wYXNzZWRQcm9qZWN0ID4gOTk5OSkge1xyXG4gICAgICAvLyAgIHRoYXQuc2V0RGF0YSh7XHJcbiAgICAgIC8vICAgICBzdXJ2ZXk6IHtcclxuICAgICAgLy8gICAgICAgcGFzc2VkUHJvamVjdEE6IHRoYXQuZGF0YS5zdXJ2ZXkucGFzc2VkUHJvamVjdC50b0ZpeGVkKDIpXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gfTtcclxuICAgIH0pXHJcblxyXG4gIH0sXHJcbiAgLy8gaW5pdF9hKCkge1xyXG4gIC8vICAgLy8gQHRzLWlnbm9yZVxyXG4gIC8vICAgdGhpcy5lY0NvbXBvbmVudEEuaW5pdCgoY2FudmFzOiBhbnksIHdpZHRoOiBhbnksIGhlaWdodDogYW55KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGNhbnZhcywgbnVsbCwge1xyXG4gIC8vICAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAvLyAgICAgICBoZWlnaHQ6IGhlaWdodFxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgICBzZXRPcHRpb24oY2hhcnQsIHRoaXMuZGF0YS5jaGFydERhdGFBLCB0aGlzLmRhdGEuY29sb3JBKVxyXG4gIC8vICAgICByZXR1cm4gY2hhcnRcclxuICAvLyAgIH0pXHJcbiAgLy8gfSxcclxuXHJcbiAgLy8gaW5pdF9iKCkge1xyXG4gIC8vICAgdGhpcy5lY0NvbXBvbmVudEIuaW5pdCgoY2FudmFzOiBhbnksIHdpZHRoOiBhbnksIGhlaWdodDogYW55KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGNhbnZhcywgbnVsbCwge1xyXG4gIC8vICAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAvLyAgICAgICBoZWlnaHQ6IGhlaWdodFxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgICBzZXRPcHRpb24oY2hhcnQsIHRoaXMuZGF0YS5jaGFydERhdGFCLCB0aGlzLmRhdGEuY29sb3JCKVxyXG4gIC8vICAgICByZXR1cm4gY2hhcnRcclxuICAvLyAgIH0pXHJcbiAgLy8gfSxcclxuXHJcbiAgLy8g5Yik5pat55m75b2VXHJcbiAgcmVmcmVzaFRva2VuKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICB3eC5sb2dpbih7XHJcbiAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgbGV0IHd4Q29kZSA9IHJlcy5jb2RlXHJcbiAgICAgICAgaWYgKHd4Q29kZSkge1xyXG4gICAgICAgICAgZ2V0VG9rZW4od3hDb2RlKS50aGVuKGZ1bmN0aW9uIChyZXM6IHsgZGF0YTogeyByZWdpc3RlclN0YXRlOiBzdHJpbmc7IHRva2VuOiBhbnk7IHVzZXJUYWdLZXk6IGFueTsgZGVwdERhdGFTY29wZUxpc3Q6IGFueSB9IH0pIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlZ2lzdGVyU3RhdGUgPT0gJzAnKSB7XHJcbiAgICAgICAgICAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAgICAgICAgICAgICB1cmw6ICcvcGFnZXMvbG9naW4vbG9naW4nXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB3eC5zZXRTdG9yYWdlU3luYygndG9rZW4nLCByZXMuZGF0YS50b2tlbilcclxuICAgICAgICAgICAgICB3eC5zZXRTdG9yYWdlU3luYygndXNlclRhZ0tleScsIHJlcy5kYXRhLnVzZXJUYWdLZXkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLyoqXHJcbiAqIOmhtemdouebuOWFs+S6i+S7tuWkhOeQhuWHveaVsC0t55uR5ZCs55So5oi35LiL5ouJ5Yqo5L2cXHJcbiAqL1xyXG4gIGFzeW5jIG9uUHVsbERvd25SZWZyZXNoKCkge1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgcGFnZUluZGV4OiAxLFxyXG4gICAgICBsb2FkVmlzaWJsZTogZmFsc2UsXHJcbiAgICB9KVxyXG4gICAgYXdhaXQgdGhpcy5jaGVja1VwZGF0ZUF2YXRhcigpXHJcbiAgICBhd2FpdCB0aGlzLmdldEluZGV4UGFuZWwoKVxyXG4gICAgYXdhaXQgdGhpcy5nZXRCYW5uZXJMaXN0KClcclxuICAgIGF3YWl0IHRoaXMuZ2V0QWxsU2l0dWF0aW9uKClcclxuICAgIGF3YWl0IHRoaXMuZ2V0U3VydmV5KClcclxuICAgIHRoaXMuZWNDb21wb25lbnRBID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNteWNoYXJ0LWRvbS1iYXItYScpXHJcbiAgICB0aGlzLmVjQ29tcG9uZW50QiA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjbXljaGFydC1kb20tYmFyLWInKVxyXG4gICAgd3guc3RvcFB1bGxEb3duUmVmcmVzaCgpO1xyXG4gIH0sXHJcbiAgdG9BY3REZXRhaWwoZTogQW55T2JqZWN0KSB7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHsgdXJsOiBgL3BhZ2VzL3R5cGljYWxDYXNlcy90eXBpY2FsQ2FzZXM/aWQ9JHtlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5pZH1gIH0pO1xyXG4gIH0sXHJcbiAgLy8g6Lez6L2s5Yiw55So5oi35YiG5p6Q5qih5Z2XXHJcbiAgbmF2aWdhdGVUb1VzZXJOdW0oKSB7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgdXJsOiAnL3N1YnBhZ2VzL3VzZXJOdW0vcGFnZXMvdXNlckFuYWx5c2lzL3VzZXJBbmFseXNpcydcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDot7PovazliLDorq7popjmgLvmlbDor6bmg4VcclxuICBuYXZpZ2F0ZVRveXQoKSB7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgdXJsOiAnL3N1YnBhZ2VzL2lzc3VlL3BhZ2VzL3RvcGljc051bURldGFpbC90b3BpY3NOdW1EZXRhaWwnXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g6Lez6L2s5Yiw5Z+65bGC5a6e5Ya16aaW6aG1XHJcbiAgbmF2aWdhdGVUb1JlYWxpdHkoKSB7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgdXJsOiAnL3N1YnBhZ2VzL3JlYWxpdHkvcGFnZXMvcmVhbGl0eUluZGV4L3JlYWxpdHlJbmRleCdcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDot7PovazliLDlhZrlu7rlrp7lhrXpppbpobVcclxuICBuYXZpZ2F0ZVRvQmFzaWNSZWFsaXR5KCkge1xyXG4gICAgd3gubmF2aWdhdGVUbyh7XHJcbiAgICAgICB1cmw6ICcvc3VicGFnZXMvYmFzaWNSZWFsaXR5L3BhZ2VzL2luZGV4L2luZGV4J1xyXG4gICAgfSlcclxuICB9LFxyXG4gIC8v57uE57uH5p625p6EXHJcbiAgdG9Pcmdhbml6YXRpb25TdHJlZSgpIHtcclxuICAgIHd4Lm5hdmlnYXRlVG8oe1xyXG4gICAgICB1cmw6ICcvc3VicGFnZXMvb3JnYW5pemF0aW9uL3BhZ2VzL29yZ2FuaXphdGlvblN0cmVlL29yZ2FuaXphdGlvblN0cmVlJ1xyXG4gICAgfSlcclxuICB9LFxyXG4gIC8v5rK755CG5o6S6KGMXHJcbiAgbmF2aWdhdGVUb2dvdmVyblJhbmtpbmcoKSB7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgdXJsOiAnL3N1YnBhZ2VzL2dvdmVyblJhbmtpbmcvcGFnZXMvZ292ZXJuUmFua2luZy9nb3Zlcm5SYW5raW5nJ1xyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOW5sumDqOivhOS7t1xyXG4gIHRvTGVhZGVyQ29tbWVudCgpIHtcclxuICAgIHd4Lm5hdmlnYXRlVG8oeyB1cmw6ICcvc3VicGFnZXMvbGVhZGVyTW9kZWwvcGFnZXMvbGVhZGVySW5kZXgvbGVhZGVySW5kZXgnIH0pO1xyXG4gIH0sXHJcbiAgLy8g5Lmm6K6w5Zyo57q/XHJcbiAgYXN5bmMgZ2V0SW5mbyhlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCczJywgZSlcclxuICAgIGlmIChlLmRldGFpbC5lcnJNc2cgPT0gJ2dldFVzZXJJbmZvOm9rJykge1xyXG4gICAgICAvLyDlt7Lnu4/mjojmnYPvvIzlj6/ku6Xnm7TmjqXosIPnlKggZ2V0VXNlckluZm8g6I635Y+W5aS05YOP5pi156ew77yM5LiN5Lya5by55qGGXHJcbiAgICAgIHd4LnNob3dMb2FkaW5nKHtcclxuICAgICAgICB0aXRsZTogJ+WKoOi9veS4rS4uLi4uJywgLy/mj5DnpLrnmoTlhoXlrrksXHJcbiAgICAgICAgbWFzazogdHJ1ZSwgLy/mmL7npLrpgI/mmI7okpnlsYLvvIzpmLLmraLop6bmkbjnqb/pgI8sXHJcbiAgICAgICAgc3VjY2VzczogcmVzID0+IHsgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBhdmF0YXI6IGUuZGV0YWlsLnVzZXJJbmZvLmF2YXRhclVybCxcclxuICAgICAgfSlcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVBdmF0YXIoKVxyXG4gICAgICB3eC5zZXRTdG9yYWdlU3luYygnaXNCYWNrT3BlbicsIGZhbHNlKVxyXG4gICAgICB3eC5uYXZpZ2F0ZVRvKHsgdXJsOiAnL3N1YnBhZ2VzL2NsZXJrT25saW5lL3BhZ2VzL215R3JvdXAvbXlHcm91cCcgfSk7XHJcbiAgICAgIHd4LmhpZGVMb2FkaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3eC5zZXRTdG9yYWdlU3luYygnaXNCYWNrT3BlbicsIGZhbHNlKVxyXG4gICAgICB3eC5uYXZpZ2F0ZVRvKHsgdXJsOiAnL3N1YnBhZ2VzL2NsZXJrT25saW5lL3BhZ2VzL215R3JvdXAvbXlHcm91cCcgfSk7XHJcbiAgICAgIHd4LmhpZGVMb2FkaW5nKCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICAvLyDkuI3pnIDopoHmjojmnYPnmoTmg4XlhrXkuItcclxuICBnb2NsZXJrT25saW5lKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5qb2luRmxhZyA9PSBmYWxzZSkge1xyXG4gICAgICB3eC5zaG93TW9kYWwoe1xyXG4gICAgICAgIHRpdGxlOiAnJywgLy/mj5DnpLrnmoTmoIfpopgsXHJcbiAgICAgICAgY29udGVudDogJ+ivpeeUqOaIt+acquWKoOWFpeS5puiusOWcqOe6v+WKn+iDvSEnLCAvL+aPkOekuueahOWGheWuuSxcclxuICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSwgLy/mmK/lkKbmmL7npLrlj5bmtojmjInpkq4sXHJcbiAgICAgICAgY29uZmlybVRleHQ6ICfnoa7lrponLCAvL+ehruWumuaMiemSrueahOaWh+Wtl++8jOm7mOiupOS4uuWPlua2iO+8jOacgOWkmiA0IOS4quWtl+espixcclxuICAgICAgICBjb25maXJtQ29sb3I6ICcjM0NDNTFGJywgLy/noa7lrprmjInpkq7nmoTmloflrZfpopzoibIsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGEuY2hlY2tVcGRhdGVBdmF0YXIpIHsgcmV0dXJuIH1cclxuICAgIHd4LnNldFN0b3JhZ2VTeW5jKCdpc0JhY2tPcGVuJywgZmFsc2UpXHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHsgdXJsOiAnL3N1YnBhZ2VzL2NsZXJrT25saW5lL3BhZ2VzL215R3JvdXAvbXlHcm91cCcgfSk7XHJcbiAgfSxcclxuICBhc3luYyBjaGVja1VwZGF0ZUF2YXRhcigpIHtcclxuICAgIGxldCByZXM6IGFueSA9IGF3YWl0IGNoZWNrVXBkYXRlQXZhdGFyKClcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGNoZWNrVXBkYXRlQXZhdGFyOiByZXMuZGF0YS51cGRhdGVGbGFnLFxyXG4gICAgICBqb2luRmxhZzogcmVzLmRhdGEuam9pbkZsYWdcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDmmoLmnKrlvIDpgJrmqKHlnZfmmL7npLrmlazor7fmnJ/lvoVcclxuICBzaG93SW5zcGVjdCgpIHtcclxuICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgIHRpdGxlOiAn5q2k5Yqf6IO95pqC5pyq5byA5pS+JyxcclxuICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICBkdXJhdGlvbjogMTAwMFxyXG4gICAgfSlcclxuICB9LFxyXG4gIGFzeW5jIHVwZGF0ZUF2YXRhcigpIHtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGF2YXRhcjogdGhpcy5kYXRhLmF2YXRhclxyXG4gICAgfVxyXG4gICAgbGV0IHJlczogYW55ID0gYXdhaXQgdXBkYXRlQXZhdGFyKG9iailcclxuICB9LFxyXG4gIC8v6YCA5Ye655m75b2VMjAyMC4wNi4wNFxyXG4gIHRvT3V0Q2FsbEJhY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgIHRpdGxlOicnLFxyXG4gICAgICBjb250ZW50Oifnoa7lrprpgIDlh7rlvZPliY3otKblj7cnLFxyXG4gICAgICBjb25maXJtQ29sb3I6ICcjMjliOWE1JyxcclxuICAgICAgc3VjY2VzcyAocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcy5jb25maXJtKSB7XHJcbiAgICAgICAgICBsb2dvdXQoKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cod3guZ2V0U3RvcmFnZVN5bmMoJ3Rva2VuJykgKyBcIioqKioqKioqKioqKlwiICsgd3guZ2V0U3RvcmFnZVN5bmMoJ3VzZXJUYWdLZXknKSlcclxuICAgICAgICAgICAgd3guc2V0U3RvcmFnZVN5bmMoJ3Rva2VuJywgJycpXHJcbiAgICAgICAgICAgIHd4LnNldFN0b3JhZ2VTeW5jKCd1c2VyVGFnS2V5JywgJycpXHJcbiAgICAgICAgICAgIHd4LnNldFN0b3JhZ2VTeW5jKCdjdXJyZW50R3JpZCcsICcnKVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh3eC5nZXRTdG9yYWdlU3luYygndG9rZW4nKSArIFwiKioqKioqKioqKioqXCIgKyB3eC5nZXRTdG9yYWdlU3luYygndXNlclRhZ0tleScpKVxyXG4gICAgICAgICAgICB3eC5yZUxhdW5jaCh7XHJcbiAgICAgICAgICAgICAgdXJsOiAnLi4vLi4vcGFnZXMvbG9naW4vbG9naW4nXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNhbmNlbCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ+WPlua2iOmAgOWHuueZu+W9lScpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufSlcclxuIl19
|