榆山数据端小程序
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.
 
 

374 lines
47 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 echarts = require("../../../../../../components/ec-canvas/echarts.js");
var echarts_1 = require("../../../../utils/echarts");
var partyInteract_1 = require("../../../../../../api/partyInteract");
Component({
properties: {
deptid: {
type: String
}
},
data: {
ecA: {
lazyLoad: true
},
showTimePicker: false,
someMonthsType: 1,
timeList: [
{ time: '最近一个月', id: 1 },
{ time: '最近三个月', id: 2 },
{ time: '最近六个月', id: 3 },
{ time: '最近一年', id: 4 }
],
visible: false,
data1: [],
data2: [],
data3: [],
data4: [],
xData: [],
data1Total: [],
data2Total: [],
data3Total: [],
data4Total: [],
xDataTotal: []
},
lifetimes: {
attached: function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.ecComponentA = this.selectComponent('#mychart-participation');
return [4, this.getPartyDynamicTrend()];
case 1:
_a.sent();
this.initA();
return [2];
}
});
});
}
},
observers: {
deptid: function (newValue, oldvalue) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
console.log('newValue', newValue);
console.log('oldvalue', oldvalue);
if (!(newValue.length !== 0)) return [3, 3];
return [4, this.getPartyDynamicTrend()];
case 1:
_a.sent();
if (this.data.someMonthsType == 2) {
this.setData({
data1: this.data.data1Total.slice(0, 4),
data2: this.data.data2Total.slice(0, 4),
data3: this.data.data3Total.slice(0, 4),
data4: this.data.data4Total.slice(0, 4),
xData: this.data.xDataTotal.slice(0, 4)
});
}
else if (this.data.someMonthsType == 3) {
this.setData({
data1: this.data.data1Total.slice(0, 3),
data2: this.data.data2Total.slice(0, 3),
data3: this.data.data3Total.slice(0, 3),
data4: this.data.data4Total.slice(0, 3),
xData: this.data.xDataTotal.slice(0, 3)
});
}
else if (this.data.someMonthsType == 4) {
this.setData({
data1: this.data.data1Total.slice(0, 4),
data2: this.data.data2Total.slice(0, 4),
data3: this.data.data3Total.slice(0, 4),
data4: this.data.data4Total.slice(0, 4),
xData: this.data.xDataTotal.slice(0, 4)
});
}
return [4, this.initA()];
case 2:
_a.sent();
_a.label = 3;
case 3: return [2];
}
});
});
},
},
methods: {
chooseTimePicker: function () {
this.setData({
showTimePicker: !this.data.showTimePicker
});
},
onTimeChange: function (e) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.setData({
someMonthsType: e.currentTarget.dataset.time,
showTimePicker: false,
});
return [4, this.getPartyDynamicTrend()];
case 1:
_a.sent();
if (e.currentTarget.dataset.time == 2) {
this.setData({
data1: this.data.data1Total.slice(0, 4),
data2: this.data.data2Total.slice(0, 4),
data3: this.data.data3Total.slice(0, 4),
data4: this.data.data4Total.slice(0, 4),
xData: this.data.xDataTotal.slice(0, 4)
});
}
else if (e.currentTarget.dataset.time == 3) {
this.setData({
data1: this.data.data1Total.slice(0, 3),
data2: this.data.data2Total.slice(0, 3),
data3: this.data.data3Total.slice(0, 3),
data4: this.data.data4Total.slice(0, 3),
xData: this.data.xDataTotal.slice(0, 3)
});
}
else if (e.currentTarget.dataset.time == 4) {
this.setData({
data1: this.data.data1Total.slice(0, 4),
data2: this.data.data2Total.slice(0, 4),
data3: this.data.data3Total.slice(0, 4),
data4: this.data.data4Total.slice(0, 4),
xData: this.data.xDataTotal.slice(0, 4)
});
}
return [4, this.initA()];
case 2:
_a.sent();
return [2];
}
});
});
},
initA: function () {
var _this = this;
this.ecComponentA.init(function (canvas, width, height) {
var chart = echarts.init(canvas, null, {
width: width,
height: height
});
echarts_1.getparticipation(chart, _this.data.data1, _this.data.data2, _this.data.data3, _this.data.data4, _this.data.xData);
return chart;
});
},
hide: function () {
this.setData({
visible: false,
});
},
onChange: function (e) {
this.setData({
visible: e.detail.visible,
});
},
getPartyDynamicTrend: function () {
return __awaiter(this, void 0, void 0, function () {
var obj, res, data1_1, data2_1, data3_1, data4_1, xData_1, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
obj = {
deptId: this.properties.deptid,
someMonthsType: this.data.someMonthsType
};
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4, partyInteract_1.getPartyDynamicTrend(obj)];
case 2:
res = _a.sent();
data1_1 = [];
data2_1 = [];
data3_1 = [];
data4_1 = [];
xData_1 = [];
res.data.list.forEach(function (element) {
data1_1.unshift(element.partyTotal);
data2_1.unshift(element.partyDynamicTotal);
data3_1.unshift(element.residentTotal);
data4_1.unshift(element.residentDynamicTotal);
xData_1.unshift(element.timeName);
});
this.setData({
data1: data1_1,
data2: data2_1,
data3: data3_1,
data4: data4_1,
xData: xData_1,
});
this.setData({
data1Total: data1_1,
data2Total: data2_1,
data3Total: data3_1,
data4Total: data4_1,
xDataTotal: xData_1
});
return [3, 4];
case 3:
err_1 = _a.sent();
console.log(err_1);
return [3, 4];
case 4: return [2];
}
});
});
},
toLeft: function () {
if (this.data.someMonthsType == 2) {
if (this.data.xData[0] == '第5周') {
this.setData({
data1: this.data.data1Total.slice(0, 4),
data2: this.data.data2Total.slice(0, 4),
data3: this.data.data3Total.slice(0, 4),
data4: this.data.data4Total.slice(0, 4),
xData: this.data.xDataTotal.slice(0, 4)
});
}
else if (this.data.xData[0] == '第9周') {
this.setData({
data1: this.data.data1Total.slice(4, 8),
data2: this.data.data2Total.slice(4, 8),
data3: this.data.data3Total.slice(4, 8),
data4: this.data.data4Total.slice(4, 8),
xData: this.data.xDataTotal.slice(4, 8)
});
}
}
else if (this.data.someMonthsType == 3) {
if (this.data.xData[0] == '第4个月') {
this.setData({
data1: this.data.data1Total.slice(0, 3),
data2: this.data.data2Total.slice(0, 3),
data3: this.data.data3Total.slice(0, 3),
data4: this.data.data4Total.slice(0, 3),
xData: this.data.xDataTotal.slice(0, 3)
});
}
}
else if (this.data.someMonthsType == 4) {
if (this.data.xData[0] == '第5个月') {
this.setData({
data1: this.data.data1Total.slice(0, 4),
data2: this.data.data2Total.slice(0, 4),
data3: this.data.data3Total.slice(0, 4),
data4: this.data.data4Total.slice(0, 4),
xData: this.data.xDataTotal.slice(0, 4)
});
}
else if (this.data.xData[0] == '第9个月') {
this.setData({
data1: this.data.data1Total.slice(4, 8),
data2: this.data.data2Total.slice(4, 8),
data3: this.data.data3Total.slice(4, 8),
data4: this.data.data4Total.slice(4, 8),
xData: this.data.xDataTotal.slice(4, 8)
});
}
}
this.initA();
},
toRight: function () {
if (this.data.someMonthsType == 2) {
if (this.data.xData[0] == '第1周') {
this.setData({
data1: this.data.data1Total.slice(4, 8),
data2: this.data.data2Total.slice(4, 8),
data3: this.data.data3Total.slice(4, 8),
data4: this.data.data4Total.slice(4, 8),
xData: this.data.xDataTotal.slice(4, 8)
});
}
else if (this.data.xData[0] == '第5周') {
this.setData({
data1: this.data.data1Total.slice(8, 12),
data2: this.data.data2Total.slice(8, 12),
data3: this.data.data3Total.slice(8, 12),
data4: this.data.data4Total.slice(8, 12),
xData: this.data.xDataTotal.slice(8, 12)
});
}
}
else if (this.data.someMonthsType == 3) {
if (this.data.xData[0] == '第1个月') {
this.setData({
data1: this.data.data1Total.slice(3, 6),
data2: this.data.data2Total.slice(3, 6),
data3: this.data.data3Total.slice(3, 6),
data4: this.data.data4Total.slice(3, 6),
xData: this.data.xDataTotal.slice(3, 6)
});
}
}
else if (this.data.someMonthsType == 4) {
if (this.data.xData[0] == '第1个月') {
this.setData({
data1: this.data.data1Total.slice(4, 8),
data2: this.data.data2Total.slice(4, 8),
data3: this.data.data3Total.slice(4, 8),
data4: this.data.data4Total.slice(4, 8),
xData: this.data.xDataTotal.slice(4, 8)
});
}
else if (this.data.xData[0] == '第5个月') {
this.setData({
data1: this.data.data1Total.slice(8, 12),
data2: this.data.data2Total.slice(8, 12),
data3: this.data.data3Total.slice(8, 12),
data4: this.data.data4Total.slice(8, 12),
xData: this.data.xDataTotal.slice(8, 12)
});
}
}
this.initA();
},
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljaXBhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcnRpY2lwYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwyRUFBNEU7QUFDNUUscURBQTREO0FBQzVELHFFQUEwRTtBQUMxRSxTQUFTLENBQUM7SUFDUixVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsTUFBTTtTQUNiO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixHQUFHLEVBQUU7WUFDSCxRQUFRLEVBQUUsSUFBSTtTQUNmO1FBQ0QsY0FBYyxFQUFFLEtBQUs7UUFDckIsY0FBYyxFQUFFLENBQUM7UUFDakIsUUFBUSxFQUFFO1lBQ1IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDeEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDeEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDeEIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7U0FBQztRQUMxQixPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxFQUFFO1FBQ1QsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsRUFBRTtRQUNULEtBQUssRUFBRSxFQUFFO1FBQ1QsS0FBSyxFQUFFLEVBQUU7UUFDVCxVQUFVLEVBQUUsRUFBRTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLEVBQUU7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLFVBQVUsRUFBRSxFQUFFO0tBQ2Y7SUFDRCxTQUFTLEVBQUU7UUFDSCxRQUFROzs7Ozs0QkFFWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQTs0QkFDbEUsV0FBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7NEJBQWpDLFNBQWlDLENBQUE7NEJBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTs7Ozs7U0FDYjtLQUNGO0lBQ0QsU0FBUyxFQUFFO1FBQ0gsTUFBTSxZQUFDLFFBQVEsRUFBRSxRQUFROzs7Ozs0QkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsUUFBUSxDQUFDLENBQUE7NEJBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFBO2lDQUM1QixDQUFBLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBLEVBQXJCLGNBQXFCOzRCQUN2QixXQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzs0QkFBakMsU0FBaUMsQ0FBQTs0QkFDakMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUU7Z0NBRWpDLElBQUksQ0FBQyxPQUFPLENBQUM7b0NBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUNBQ3hDLENBQUMsQ0FBQTs2QkFDSDtpQ0FBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRTtnQ0FFeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQ0FDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQ0FDeEMsQ0FBQyxDQUFBOzZCQUNIO2lDQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFO2dDQUV4QyxJQUFJLENBQUMsT0FBTyxDQUFDO29DQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lDQUN4QyxDQUFDLENBQUE7NkJBQ0g7NEJBQ0QsV0FBTSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUE7OzRCQUFsQixTQUFrQixDQUFBOzs7Ozs7U0FFckI7S0FFRjtJQUNELE9BQU8sRUFBRTtRQUVQLGdCQUFnQjtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1gsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO2FBQzFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFSyxZQUFZLEVBQWxCLFVBQW1CLENBQU07Ozs7OzRCQUV2QixJQUFJLENBQUMsT0FBTyxDQUFDO2dDQUNYLGNBQWMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dDQUM1QyxjQUFjLEVBQUUsS0FBSzs2QkFDdEIsQ0FBQyxDQUFBOzRCQUNGLFdBQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUE7OzRCQUFqQyxTQUFpQyxDQUFBOzRCQUNqQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7Z0NBRXJDLElBQUksQ0FBQyxPQUFPLENBQUM7b0NBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUNBQ3hDLENBQUMsQ0FBQTs2QkFDSDtpQ0FBTSxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7Z0NBRTVDLElBQUksQ0FBQyxPQUFPLENBQUM7b0NBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUNBQ3hDLENBQUMsQ0FBQTs2QkFDSDtpQ0FBTSxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7Z0NBRTVDLElBQUksQ0FBQyxPQUFPLENBQUM7b0NBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUs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SyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3hDLENBQUMsQ0FBQTtpQkFDSDtxQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sRUFBRTtvQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDeEMsQ0FBQyxDQUFBO2lCQUNIO2FB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LE9BQU8sQ0FBQzt3QkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDdkMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDeEMsQ0FBQyxDQUFBO2lCQUNIO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFO29CQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7d0JBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3FCQUN6QyxDQUFDLENBQUE7aUJBQ0g7YUFDRjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNkLENBQUM7S0FDRjtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHN1YnBhZ2VzL3BhcnR5SW50ZXJhY3QvcGFnZXMvcGFydHlJbnRlcmFjdEluZGV4L2NvbXBvbmVudHMvcGFydGljaXBhdGlvblN0YXR1cy9wYXJ0aWNpcGF0aW9uU3RhdHVzLmpzXHJcbi8vIEB0cy1pZ25vcmVcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL2VjLWNhbnZhcy9lY2hhcnRzLmpzJ1xyXG5pbXBvcnQgeyBnZXRwYXJ0aWNpcGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvZWNoYXJ0cydcclxuaW1wb3J0IHsgZ2V0UGFydHlEeW5hbWljVHJlbmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9hcGkvcGFydHlJbnRlcmFjdCdcclxuQ29tcG9uZW50KHtcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICBkZXB0aWQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9XHJcbiAgfSxcclxuICBkYXRhOiB7XHJcbiAgICBlY0E6IHtcclxuICAgICAgbGF6eUxvYWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBzaG93VGltZVBpY2tlcjogZmFsc2UsXHJcbiAgICBzb21lTW9udGhzVHlwZTogMSxcclxuICAgIHRpbWVMaXN0OiBbXHJcbiAgICAgIHsgdGltZTogJ+acgOi/keS4gOS4quaciCcsIGlkOiAxIH0sXHJcbiAgICAgIHsgdGltZTogJ+acgOi/keS4ieS4quaciCcsIGlkOiAyIH0sXHJcbiAgICAgIHsgdGltZTogJ+acgOi/keWFreS4quaciCcsIGlkOiAzIH0sXHJcbiAgICAgIHsgdGltZTogJ+acgOi/keS4gOW5tCcsIGlkOiA0IH1dLFxyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICBkYXRhMTogW10sLy/lhZrlkZgwLCAwLCAwLCAxMDBcclxuICAgIGRhdGEyOiBbXSwvL+WFmuWRmOWPguS4jjksIDMwLCA5LCA0MFxyXG4gICAgZGF0YTM6IFtdLC8v5bGF5rCRMjAsIDMwLCAyMCwgMzBcclxuICAgIGRhdGE0OiBbXSwvL+WxheawkeWPguS4jjksIDMwLCA5LCA0MFxyXG4gICAgeERhdGE6IFtdLC8vJ+esrOS4gOWRqCcsICfnrKzkuozlkagnLCAn56ys5LiJ5ZGoJywgJ+esrOWbm+WRqCdcclxuICAgIGRhdGExVG90YWw6IFtdLFxyXG4gICAgZGF0YTJUb3RhbDogW10sXHJcbiAgICBkYXRhM1RvdGFsOiBbXSxcclxuICAgIGRhdGE0VG90YWw6IFtdLFxyXG4gICAgeERhdGFUb3RhbDogW11cclxuICB9LFxyXG4gIGxpZmV0aW1lczoge1xyXG4gICAgYXN5bmMgYXR0YWNoZWQoKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5lY0NvbXBvbmVudEEgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI215Y2hhcnQtcGFydGljaXBhdGlvbicpXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0UGFydHlEeW5hbWljVHJlbmQoKVxyXG4gICAgICB0aGlzLmluaXRBKClcclxuICAgIH1cclxuICB9LFxyXG4gIG9ic2VydmVyczoge1xyXG4gICAgYXN5bmMgZGVwdGlkKG5ld1ZhbHVlLCBvbGR2YWx1ZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnbmV3VmFsdWUnLG5ld1ZhbHVlKVxyXG4gICAgICBjb25zb2xlLmxvZygnb2xkdmFsdWUnLG9sZHZhbHVlKVxyXG4gICAgICBpZiAobmV3VmFsdWUubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRQYXJ0eUR5bmFtaWNUcmVuZCgpXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5zb21lTW9udGhzVHlwZSA9PSAyKSB7XHJcbiAgICAgICAgICAvLyAvLyDmnIDov5HkuInkuKrmnIhcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGRhdGExOiB0aGlzLmRhdGEuZGF0YTFUb3RhbC5zbGljZSgwLCA0KSxcclxuICAgICAgICAgICAgZGF0YTI6IHRoaXMuZGF0YS5kYXRhMlRvdGFsLnNsaWNlKDAsIDQpLFxyXG4gICAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICAgIGRhdGE0OiB0aGlzLmRhdGEuZGF0YTRUb3RhbC5zbGljZSgwLCA0KSxcclxuICAgICAgICAgICAgeERhdGE6IHRoaXMuZGF0YS54RGF0YVRvdGFsLnNsaWNlKDAsIDQpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLnNvbWVNb250aHNUeXBlID09IDMpIHtcclxuICAgICAgICAgIC8vIOacgOi/keWFreS4quaciFxyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgZGF0YTE6IHRoaXMuZGF0YS5kYXRhMVRvdGFsLnNsaWNlKDAsIDMpLFxyXG4gICAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoMCwgMyksXHJcbiAgICAgICAgICAgIGRhdGEzOiB0aGlzLmRhdGEuZGF0YTNUb3RhbC5zbGljZSgwLCAzKSxcclxuICAgICAgICAgICAgZGF0YTQ6IHRoaXMuZGF0YS5kYXRhNFRvdGFsLnNsaWNlKDAsIDMpLFxyXG4gICAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoMCwgMylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuc29tZU1vbnRoc1R5cGUgPT0gNCkge1xyXG4gICAgICAgICAgLy8g5pyA6L+R5LiA5bm0XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICAgIGRhdGEyOiB0aGlzLmRhdGEuZGF0YTJUb3RhbC5zbGljZSgwLCA0KSxcclxuICAgICAgICAgICAgZGF0YTM6IHRoaXMuZGF0YS5kYXRhM1RvdGFsLnNsaWNlKDAsIDQpLFxyXG4gICAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICAgIHhEYXRhOiB0aGlzLmRhdGEueERhdGFUb3RhbC5zbGljZSgwLCA0KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0QSgpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgLy8g5pi+56S66ZqQ6JeP5pe26Ze06YCJ5oup5qGGXHJcbiAgICBjaG9vc2VUaW1lUGlja2VyKCkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHNob3dUaW1lUGlja2VyOiAhdGhpcy5kYXRhLnNob3dUaW1lUGlja2VyXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgLy8g6YCJ5oup5pe26Ze0XHJcbiAgICBhc3luYyBvblRpbWVDaGFuZ2UoZTogYW55KSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdzb21lTW9udGhzVHlwZScsIGUuY3VycmVudFRhcmdldC5kYXRhc2V0LnRpbWUpXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc29tZU1vbnRoc1R5cGU6IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LnRpbWUsXHJcbiAgICAgICAgc2hvd1RpbWVQaWNrZXI6IGZhbHNlLFxyXG4gICAgICB9KVxyXG4gICAgICBhd2FpdCB0aGlzLmdldFBhcnR5RHluYW1pY1RyZW5kKClcclxuICAgICAgaWYgKGUuY3VycmVudFRhcmdldC5kYXRhc2V0LnRpbWUgPT0gMikge1xyXG4gICAgICAgIC8vIC8vIOacgOi/keS4ieS4quaciFxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoMCwgNClcclxuICAgICAgICB9KVxyXG4gICAgICB9IGVsc2UgaWYgKGUuY3VycmVudFRhcmdldC5kYXRhc2V0LnRpbWUgPT0gMykge1xyXG4gICAgICAgIC8vIOacgOi/keWFreS4quaciFxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoMCwgMyksXHJcbiAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoMCwgMyksXHJcbiAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoMCwgMyksXHJcbiAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoMCwgMyksXHJcbiAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoMCwgMylcclxuICAgICAgICB9KVxyXG4gICAgICB9IGVsc2UgaWYgKGUuY3VycmVudFRhcmdldC5kYXRhc2V0LnRpbWUgPT0gNCkge1xyXG4gICAgICAgIC8vIOacgOi/keS4gOW5tFxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoMCwgNClcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmluaXRBKClcclxuXHJcbiAgICB9LFxyXG4gICAgaW5pdEEoKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5lY0NvbXBvbmVudEEuaW5pdCgoY2FudmFzOiBhbnksIHdpZHRoOiBhbnksIGhlaWdodDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hhcnQgPSBlY2hhcnRzLmluaXQoY2FudmFzLCBudWxsLCB7XHJcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZ2V0cGFydGljaXBhdGlvbihjaGFydCwgdGhpcy5kYXRhLmRhdGExLCB0aGlzLmRhdGEuZGF0YTIsIHRoaXMuZGF0YS5kYXRhMywgdGhpcy5kYXRhLmRhdGE0LCB0aGlzLmRhdGEueERhdGEpXHJcbiAgICAgICAgcmV0dXJuIGNoYXJ0XHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgaGlkZSgpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkNoYW5nZShlOiBhbnkpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB2aXNpYmxlOiBlLmRldGFpbC52aXNpYmxlLFxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIGFzeW5jIGdldFBhcnR5RHluYW1pY1RyZW5kKCkge1xyXG4gICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgIGRlcHRJZDogdGhpcy5wcm9wZXJ0aWVzLmRlcHRpZCxcclxuICAgICAgICBzb21lTW9udGhzVHlwZTogdGhpcy5kYXRhLnNvbWVNb250aHNUeXBlXHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgZ2V0UGFydHlEeW5hbWljVHJlbmQob2JqKVxyXG4gICAgICAgIGxldCBkYXRhMTogYW55ID0gW11cclxuICAgICAgICBsZXQgZGF0YTI6IGFueSA9IFtdXHJcbiAgICAgICAgbGV0IGRhdGEzOiBhbnkgPSBbXVxyXG4gICAgICAgIGxldCBkYXRhNDogYW55ID0gW11cclxuICAgICAgICBsZXQgeERhdGE6IGFueSA9IFtdXHJcbiAgICAgICAgcmVzLmRhdGEubGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGRhdGExLnVuc2hpZnQoZWxlbWVudC5wYXJ0eVRvdGFsKVxyXG4gICAgICAgICAgZGF0YTIudW5zaGlmdChlbGVtZW50LnBhcnR5RHluYW1pY1RvdGFsKVxyXG4gICAgICAgICAgZGF0YTMudW5zaGlmdChlbGVtZW50LnJlc2lkZW50VG90YWwpXHJcbiAgICAgICAgICBkYXRhNC51bnNoaWZ0KGVsZW1lbnQucmVzaWRlbnREeW5hbWljVG90YWwpXHJcbiAgICAgICAgICB4RGF0YS51bnNoaWZ0KGVsZW1lbnQudGltZU5hbWUpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgZGF0YTE6IGRhdGExLFxyXG4gICAgICAgICAgZGF0YTI6IGRhdGEyLFxyXG4gICAgICAgICAgZGF0YTM6IGRhdGEzLFxyXG4gICAgICAgICAgZGF0YTQ6IGRhdGE0LFxyXG4gICAgICAgICAgeERhdGE6IHhEYXRhLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGRhdGExVG90YWw6IGRhdGExLFxyXG4gICAgICAgICAgZGF0YTJUb3RhbDogZGF0YTIsXHJcbiAgICAgICAgICBkYXRhM1RvdGFsOiBkYXRhMyxcclxuICAgICAgICAgIGRhdGE0VG90YWw6IGRhdGE0LFxyXG4gICAgICAgICAgeERhdGFUb3RhbDogeERhdGFcclxuICAgICAgICB9KVxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSxcclxuICAgIHRvTGVmdCgpIHtcclxuICAgICAgLy8gM+S4quaciFxyXG4gICAgICBpZiAodGhpcy5kYXRhLnNvbWVNb250aHNUeXBlID09IDIpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhLnhEYXRhWzBdID09ICfnrKw15ZGoJykge1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgZGF0YTE6IHRoaXMuZGF0YS5kYXRhMVRvdGFsLnNsaWNlKDAsIDQpLFxyXG4gICAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICAgIGRhdGEzOiB0aGlzLmRhdGEuZGF0YTNUb3RhbC5zbGljZSgwLCA0KSxcclxuICAgICAgICAgICAgZGF0YTQ6IHRoaXMuZGF0YS5kYXRhNFRvdGFsLnNsaWNlKDAsIDQpLFxyXG4gICAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoMCwgNClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEueERhdGFbMF0gPT0gJ+esrDnlkagnKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoNCwgOCksXHJcbiAgICAgICAgICAgIGRhdGEyOiB0aGlzLmRhdGEuZGF0YTJUb3RhbC5zbGljZSg0LCA4KSxcclxuICAgICAgICAgICAgZGF0YTM6IHRoaXMuZGF0YS5kYXRhM1RvdGFsLnNsaWNlKDQsIDgpLFxyXG4gICAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoNCwgOCksXHJcbiAgICAgICAgICAgIHhEYXRhOiB0aGlzLmRhdGEueERhdGFUb3RhbC5zbGljZSg0LCA4KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLnNvbWVNb250aHNUeXBlID09IDMpIHtcclxuICAgICAgICAvLyDmnIDov5E25Liq5pyIXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS54RGF0YVswXSA9PSAn56ysNOS4quaciCcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGRhdGExOiB0aGlzLmRhdGEuZGF0YTFUb3RhbC5zbGljZSgwLCAzKSxcclxuICAgICAgICAgICAgZGF0YTI6IHRoaXMuZGF0YS5kYXRhMlRvdGFsLnNsaWNlKDAsIDMpLFxyXG4gICAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoMCwgMyksXHJcbiAgICAgICAgICAgIGRhdGE0OiB0aGlzLmRhdGEuZGF0YTRUb3RhbC5zbGljZSgwLCAzKSxcclxuICAgICAgICAgICAgeERhdGE6IHRoaXMuZGF0YS54RGF0YVRvdGFsLnNsaWNlKDAsIDMpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuc29tZU1vbnRoc1R5cGUgPT0gNCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEueERhdGFbMF0gPT0gJ+esrDXkuKrmnIgnKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICAgIGRhdGEyOiB0aGlzLmRhdGEuZGF0YTJUb3RhbC5zbGljZSgwLCA0KSxcclxuICAgICAgICAgICAgZGF0YTM6IHRoaXMuZGF0YS5kYXRhM1RvdGFsLnNsaWNlKDAsIDQpLFxyXG4gICAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoMCwgNCksXHJcbiAgICAgICAgICAgIHhEYXRhOiB0aGlzLmRhdGEueERhdGFUb3RhbC5zbGljZSgwLCA0KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS54RGF0YVswXSA9PSAn56ysOeS4quaciCcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGRhdGExOiB0aGlzLmRhdGEuZGF0YTFUb3RhbC5zbGljZSg0LCA4KSxcclxuICAgICAgICAgICAgZGF0YTI6IHRoaXMuZGF0YS5kYXRhMlRvdGFsLnNsaWNlKDQsIDgpLFxyXG4gICAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoNCwgOCksXHJcbiAgICAgICAgICAgIGRhdGE0OiB0aGlzLmRhdGEuZGF0YTRUb3RhbC5zbGljZSg0LCA4KSxcclxuICAgICAgICAgICAgeERhdGE6IHRoaXMuZGF0YS54RGF0YVRvdGFsLnNsaWNlKDQsIDgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pbml0QSgpXHJcbiAgICB9LFxyXG4gICAgdG9SaWdodCgpIHtcclxuICAgICAgLy8gM+S4quaciFxyXG4gICAgICBpZiAodGhpcy5kYXRhLnNvbWVNb250aHNUeXBlID09IDIpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhLnhEYXRhWzBdID09ICfnrKwx5ZGoJykge1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgZGF0YTE6IHRoaXMuZGF0YS5kYXRhMVRvdGFsLnNsaWNlKDQsIDgpLFxyXG4gICAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoNCwgOCksXHJcbiAgICAgICAgICAgIGRhdGEzOiB0aGlzLmRhdGEuZGF0YTNUb3RhbC5zbGljZSg0LCA4KSxcclxuICAgICAgICAgICAgZGF0YTQ6IHRoaXMuZGF0YS5kYXRhNFRvdGFsLnNsaWNlKDQsIDgpLFxyXG4gICAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoNCwgOClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEueERhdGFbMF0gPT0gJ+esrDXlkagnKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoOCwgMTIpXHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLnNvbWVNb250aHNUeXBlID09IDMpIHtcclxuICAgICAgICAvLyDmnIDov5E25Liq5pyIXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS54RGF0YVswXSA9PSAn56ysMeS4quaciCcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGRhdGExOiB0aGlzLmRhdGEuZGF0YTFUb3RhbC5zbGljZSgzLCA2KSxcclxuICAgICAgICAgICAgZGF0YTI6IHRoaXMuZGF0YS5kYXRhMlRvdGFsLnNsaWNlKDMsIDYpLFxyXG4gICAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoMywgNiksXHJcbiAgICAgICAgICAgIGRhdGE0OiB0aGlzLmRhdGEuZGF0YTRUb3RhbC5zbGljZSgzLCA2KSxcclxuICAgICAgICAgICAgeERhdGE6IHRoaXMuZGF0YS54RGF0YVRvdGFsLnNsaWNlKDMsIDYpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuc29tZU1vbnRoc1R5cGUgPT0gNCkge1xyXG4gICAgICAgIC8vIDHlubRcclxuICAgICAgICBpZiAodGhpcy5kYXRhLnhEYXRhWzBdID09ICfnrKwx5Liq5pyIJykge1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgZGF0YTE6IHRoaXMuZGF0YS5kYXRhMVRvdGFsLnNsaWNlKDQsIDgpLFxyXG4gICAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoNCwgOCksXHJcbiAgICAgICAgICAgIGRhdGEzOiB0aGlzLmRhdGEuZGF0YTNUb3RhbC5zbGljZSg0LCA4KSxcclxuICAgICAgICAgICAgZGF0YTQ6IHRoaXMuZGF0YS5kYXRhNFRvdGFsLnNsaWNlKDQsIDgpLFxyXG4gICAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoNCwgOClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEueERhdGFbMF0gPT0gJ+esrDXkuKrmnIgnKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBkYXRhMTogdGhpcy5kYXRhLmRhdGExVG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICBkYXRhMjogdGhpcy5kYXRhLmRhdGEyVG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICBkYXRhMzogdGhpcy5kYXRhLmRhdGEzVG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICBkYXRhNDogdGhpcy5kYXRhLmRhdGE0VG90YWwuc2xpY2UoOCwgMTIpLFxyXG4gICAgICAgICAgICB4RGF0YTogdGhpcy5kYXRhLnhEYXRhVG90YWwuc2xpY2UoOCwgMTIpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmluaXRBKClcclxuICAgIH0sXHJcbiAgfVxyXG59KSJdfQ==