"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 basicReality_1 = require("../../../../../../api/basicReality"); Component({ data: { streetContentList: [], upOrDownStatus: 'down', selectCondition: { label: '组织活动总次数', value: '0' }, conditionOrder: 'asc', conditionListVisible: false, conditionList: [ { value: '0', label: '组织活动总次数' }, { value: '1', label: '参加活动总人数' }, { value: '2', label: '省市级和区直机关-组织次数' }, { value: '3', label: '省市级和区直机关-参与人数' }, { value: '4', label: '驻区企事业单位-组织次数' }, { value: '5', label: '驻区企事业单位-参加人数' }, { value: '6', label: '驻区两新组织-组织次数' }, { value: '7', label: '驻区两新组织-参加次数' } ], developSituation: {}, unionAmount: { resourceAmountTotal: 0, resourceTimes: 0, averageAmount: 0 }, categoryList: [ { value: '21', label: '省级、市级和区直机关' }, { value: '23', label: '驻区企事业单位' }, { value: '24', label: '驻区两新组织' } ], selectUnionCondition: { value: '21', label: '省级、市级和区直机关' }, unionConditionVisible: false, developSituationLineChart: {}, streetPreloadContentList: [ { detailList: [1, 2], contentList: [1, 2, 3] }, { detailList: [1, 2], contentList: [1, 2, 3] }, { detailList: [1, 2], contentList: [1, 2, 3] } ], preloadVisible: true, streetId: '', timeId: '', deptNum: '' }, lifetimes: { attached: function () { this.analysisOfBranch(); this.getResourceAmount(); this.deptAnalysisOfBranch(); this.rankingOfDevelopment(); } }, methods: { onUpOrDown: function () { this.setData({ upOrDownStatus: this.data.upOrDownStatus === 'up' ? 'down' : 'up' }); }, onShowConditionList: function () { this.setData({ conditionListVisible: !this.data.conditionListVisible }); }, onChangeCondition: function (e) { var _this = this; this.setData({ conditionListVisible: false, preloadVisible: true, streetContentList: [] }); var condition = e.currentTarget.dataset.condition; this.data.conditionList.forEach(function (item) { if (item.value === condition) { _this.setData({ selectCondition: { label: item.label, value: item.value } }); } }); this.rankingOfDevelopment(); }, onChangeConditionOrder: function () { this.setData({ conditionOrder: this.data.conditionOrder === 'asc' ? 'desc' : 'asc', preloadVisible: true, streetContentList: [] }); this.rankingOfDevelopment(); }, analysisOfBranch: function () { return __awaiter(this, void 0, void 0, function () { var para, res, err_1; return __generator(this, function (_a) { switch (_a.label) { case 0: para = { streetId: this.data.streetId, someMonthsType: this.data.timeId, categoryType: '1' }; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4, basicReality_1.analysisOfBranch(para)]; case 2: res = _a.sent(); console.log('联建共建开展情况图表数据', res); Object.assign(this.data.developSituation, res.data); this.setData({ developSituation: this.data.developSituation }); return [3, 4]; case 3: err_1 = _a.sent(); console.error(err_1); return [3, 4]; case 4: return [2]; } }); }); }, getResourceAmount: function () { return __awaiter(this, void 0, void 0, function () { var para, res, err_2; return __generator(this, function (_a) { switch (_a.label) { case 0: para = { streetId: this.data.streetId, someMonthsType: this.data.timeId }; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4, basicReality_1.getResourceAmount(para)]; case 2: res = _a.sent(); console.log('联建共建资源整合金额', res); Object.assign(this.data.unionAmount, res.data); this.setData({ unionAmount: this.data.unionAmount }); return [3, 4]; case 3: err_2 = _a.sent(); console.error(err_2); return [3, 4]; case 4: return [2]; } }); }); }, onShowUnionConditionList: function () { this.setData({ unionConditionVisible: !this.data.unionConditionVisible }); }, onChnageUnionCondition: function (e) { var _this = this; var condition = e.currentTarget.dataset.condition; this.data.categoryList.forEach(function (item) { if (item.value === condition) { _this.setData({ selectUnionCondition: { label: item.label, value: item.value }, unionConditionVisible: false }); } }); this.deptAnalysisOfBranch(); }, deptAnalysisOfBranch: function () { return __awaiter(this, void 0, void 0, function () { var para, res, _a, categoryList, joinNumList, organizationsCountList, averageNum, err_3; return __generator(this, function (_b) { switch (_b.label) { case 0: para = { streetId: this.data.streetId, someMonthsType: this.data.timeId, categoryCode: this.data.selectUnionCondition.value }; _b.label = 1; case 1: _b.trys.push([1, 3, , 4]); return [4, basicReality_1.deptAnalysisOfBranch(para)]; case 2: res = _b.sent(); console.log('联建共建折线图', res); _a = res.data, categoryList = _a.categoryList, joinNumList = _a.joinNumList, organizationsCountList = _a.organizationsCountList, averageNum = _a.averageNum; Object.assign(this.data.developSituationLineChart, { categoryList: categoryList, joinNumList: joinNumList, organizationsCountList: organizationsCountList, averageNum: averageNum }); this.setData({ developSituationLineChart: this.data.developSituationLineChart, deptNum: res.data.deptNum }); return [3, 4]; case 3: err_3 = _b.sent(); console.error(err_3); return [3, 4]; case 4: return [2]; } }); }); }, rankingOfDevelopment: function () { return __awaiter(this, void 0, void 0, function () { var para, res, list_1, err_4; return __generator(this, function (_a) { switch (_a.label) { case 0: para = { streetId: this.data.streetId, someMonthsType: this.data.timeId, order: this.data.conditionOrder === 'asc' ? '0' : '1', type: this.data.selectCondition.value }; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4, basicReality_1.rankingOfDevelopment(para)]; case 2: res = _a.sent(); console.log('联建共建开展情况排名', res); list_1 = []; if (res.data.streetList && res.data.streetList.length > 0) { res.data.streetList.forEach(function (street) { var contentList = []; street.categoryInfoList.forEach(function (category) { contentList.push({ name: category.categoryName, organizationNum: category.organizationsCount, enterNum: category.joinNum }); }); var detailList = [ { name: '组织总次数', num: street.allOrganizationsCount }, { name: '参加总次数', num: street.allJoinNumCount } ]; list_1.push({ contentList: contentList, detailList: detailList, streetName: street.deptname }); }); } this.setData({ streetContentList: list_1, preloadVisible: false }); return [3, 4]; case 3: err_4 = _a.sent(); this.setData({ streetContentList: [], preloadVisible: false }); console.error(err_4); return [3, 4]; case 4: return [2]; } }); }); }, chooseStreetId: function (e) { this.setData({ streetId: e.detail, streetContentList: [], preloadVisible: true }); this.rankingOfDevelopment(); this.deptAnalysisOfBranch(); this.getResourceAmount(); this.analysisOfBranch(); }, chooseTimeId: function (e) { this.setData({ timeId: e.detail, streetContentList: [], preloadVisible: true }); this.rankingOfDevelopment(); this.deptAnalysisOfBranch(); this.getResourceAmount(); this.analysisOfBranch(); } } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pb25Db25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1bmlvbkNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFvSTtBQUVwSSxTQUFTLENBQUM7SUFDUixJQUFJLEVBQUU7UUFDSixpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGNBQWMsRUFBRSxNQUFNO1FBQ3RCLGVBQWUsRUFBRTtZQUNmLEtBQUssRUFBRSxTQUFTO1lBQ2hCLEtBQUssRUFBRSxHQUFHO1NBQ1g7UUFDRCxjQUFjLEVBQUUsS0FBSztRQUNyQixvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLGFBQWEsRUFBRTtZQUNiLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3RDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3RDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQ3BDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1NBQ3JDO1FBQ0QsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixXQUFXLEVBQUU7WUFDWCxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGFBQWEsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsWUFBWSxFQUFFO1lBQ1osRUFB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LENBQUM7Z0JBQ1gsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNO2dCQUNsQixpQkFBaUIsRUFBRSxFQUFFO2dCQUNyQixjQUFjLEVBQUUsSUFBSTthQUNyQixDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtZQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN6QixDQUFDO1FBQ0QsWUFBWSxFQUFaLFVBQWMsQ0FBTTtZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtnQkFDaEIsaUJBQWlCLEVBQUUsRUFBRTtnQkFDckIsY0FBYyxFQUFFLElBQUk7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFDekIsQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5hbHlzaXNPZkJyYW5jaCwgZ2V0UmVzb3VyY2VBbW91bnQsIGRlcHRBbmFseXNpc09mQnJhbmNoLCByYW5raW5nT2ZEZXZlbG9wbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2FwaS9iYXNpY1JlYWxpdHknXHJcblxyXG5Db21wb25lbnQoe1xyXG4gIGRhdGE6IHtcclxuICAgIHN0cmVldENvbnRlbnRMaXN0OiBbXSxcclxuICAgIHVwT3JEb3duU3RhdHVzOiAnZG93bicsXHJcbiAgICBzZWxlY3RDb25kaXRpb246IHtcclxuICAgICAgbGFiZWw6ICfnu4Tnu4fmtLvliqjmgLvmrKHmlbAnLFxyXG4gICAgICB2YWx1ZTogJzAnXHJcbiAgICB9LFxyXG4gICAgY29uZGl0aW9uT3JkZXI6ICdhc2MnLFxyXG4gICAgY29uZGl0aW9uTGlzdFZpc2libGU6IGZhbHNlLFxyXG4gICAgY29uZGl0aW9uTGlzdDogW1xyXG4gICAgICB7IHZhbHVlOiAnMCcsIGxhYmVsOiAn57uE57uH5rS75Yqo5oC75qyh5pWwJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnMScsIGxhYmVsOiAn5Y+C5Yqg5rS75Yqo5oC75Lq65pWwJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnMicsIGxhYmVsOiAn55yB5biC57qn5ZKM5Yy655u05py65YWzLee7hOe7h+asoeaVsCcgfSxcclxuICAgICAgeyB2YWx1ZTogJzMnLCBsYWJlbDogJ+ecgeW4gue6p+WSjOWMuuebtOacuuWFsy3lj4LkuI7kurrmlbAnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICc0JywgbGFiZWw6ICfpqbvljLrkvIHkuovkuJrljZXkvY0t57uE57uH5qyh5pWwJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnNScsIGxhYmVsOiAn6am75Yy65LyB5LqL5Lia5Y2V5L2NLeWPguWKoOS6uuaVsCcgfSxcclxuICAgICAgeyB2YWx1ZTogJzYnLCBsYWJlbDogJ+mpu+WMuuS4pOaWsOe7hOe7hy3nu4Tnu4fmrKHmlbAnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICc3JywgbGFiZWw6ICfpqbvljLrkuKTmlrDnu4Tnu4ct5Y+C5Yqg5qyh5pWwJyB9XHJcbiAgICBdLFxyXG4gICAgZGV2ZWxvcFNpdHVhdGlvbjoge30sIC8vIOiBlOW7uuWFseW7uuW8gOWxleaDheWGteWbvuihqOaVsOaNrlxyXG4gICAgdW5pb25BbW91bnQ6IHtcclxuICAgICAgcmVzb3VyY2VBbW91bnRUb3RhbDogMCxcclxuICAgICAgcmVzb3VyY2VUaW1lczogMCxcclxuICAgICAgYXZlcmFnZUFtb3VudDogMFxyXG4gICAgfSxcclxuICAgIGNhdGVnb3J5TGlzdDogW1xyXG4gICAgICB7IHZhbHVlOiAnMjEnLCBsYWJlbDogJ+ecgee6p+OAgeW4gue6p+WSjOWMuuebtOacuuWFsyd9LFxyXG4gICAgICB7IHZhbHVlOiAnMjMnLCBsYWJlbDogJ+mpu+WMuuS8geS6i+S4muWNleS9jSd9LFxyXG4gICAgICB7IHZhbHVlOiAnMjQnLCBsYWJlbDogJ+mpu+WMuuS4pOaWsOe7hOe7hyd9XSxcclxuICAgICAgc2VsZWN0VW5pb25Db25kaXRpb246IHtcclxuICAgICAgICB2YWx1ZTogJzIxJyxcclxuICAgICAgICBsYWJlbDogJ+ecgee6p+OAgeW4gue6p+WSjOWMuuebtOacuuWFsydcclxuICAgICAgfSxcclxuICAgICAgdW5pb25Db25kaXRpb25WaXNpYmxlOiBmYWxzZSxcclxuICAgICAgZGV2ZWxvcFNpdHVhdGlvbkxpbmVDaGFydDoge30sXHJcbiAgICAgIHN0cmVldFByZWxvYWRDb250ZW50TGlzdDogW1xyXG4gICAgICAgIHtkZXRhaWxMaXN0OiBbMSwyXSwgY29udGVudExpc3Q6IFsxLDIsM119LFxyXG4gICAgICAgIHtkZXRhaWxMaXN0OiBbMSwyXSwgY29udGVudExpc3Q6IFsxLDIsM119LFxyXG4gICAgICAgIHtkZXRhaWxMaXN0OiBbMSwyXSwgY29udGVudExpc3Q6IFsxLDIsM119XHJcbiAgICAgIF0sXHJcbiAgICAgIHByZWxvYWRWaXNpYmxlOiB0cnVlLFxyXG4gICAgICBzdHJlZXRJZDogJycsXHJcbiAgICAgIHRpbWVJZDogJycsXHJcbiAgICAgIGRlcHROdW06ICcnXHJcbiAgfSxcclxuICBsaWZldGltZXM6IHtcclxuICAgIGF0dGFjaGVkICgpIHtcclxuICAgICAgdGhpcy5hbmFseXNpc09mQnJhbmNoKClcclxuICAgICAgdGhpcy5nZXRSZXNvdXJjZUFtb3VudCgpXHJcbiAgICAgIHRoaXMuZGVwdEFuYWx5c2lzT2ZCcmFuY2goKVxyXG4gICAgICB0aGlzLnJhbmtpbmdPZkRldmVsb3BtZW50KClcclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIC8vIOWFmuWRmOWPguS4juWPkeaMpeaDheWGteaOkuWQjSDmlLbotbcv5bGV5byAXHJcbiAgICBvblVwT3JEb3duICgpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB1cE9yRG93blN0YXR1czogdGhpcy5kYXRhLnVwT3JEb3duU3RhdHVzID09PSAndXAnID8gJ2Rvd24nIDogJ3VwJ1xyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIC8vIOaYvuekuuetm+mAieadoeS7tuWIl+ihqFxyXG4gICAgb25TaG93Q29uZGl0aW9uTGlzdCAoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgY29uZGl0aW9uTGlzdFZpc2libGU6ICF0aGlzLmRhdGEuY29uZGl0aW9uTGlzdFZpc2libGVcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICAvLyDliIfmjaLmjpLlkI3mnaHku7ZcclxuICAgIG9uQ2hhbmdlQ29uZGl0aW9uIChlKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgY29uZGl0aW9uTGlzdFZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgIHByZWxvYWRWaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHN0cmVldENvbnRlbnRMaXN0OiBbXVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zdCB7IGNvbmRpdGlvbiB9ID0gZS5jdXJyZW50VGFyZ2V0LmRhdGFzZXRcclxuICAgICAgdGhpcy5kYXRhLmNvbmRpdGlvbkxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS52YWx1ZSA9PT0gY29uZGl0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICBzZWxlY3RDb25kaXRpb246IHtcclxuICAgICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcclxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5yYW5raW5nT2ZEZXZlbG9wbWVudCgpXHJcbiAgICB9LFxyXG4gICAgLy8g5q2j5Y+N5bqP5YiH5o2iXHJcbiAgICBvbkNoYW5nZUNvbmRpdGlvbk9yZGVyICgpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBjb25kaXRpb25PcmRlcjogdGhpcy5kYXRhLmNvbmRpdGlvbk9yZGVyID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnLFxyXG4gICAgICAgIHByZWxvYWRWaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHN0cmVldENvbnRlbnRMaXN0OiBbXVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnJhbmtpbmdPZkRldmVsb3BtZW50KClcclxuICAgIH0sXHJcbiAgICAvLyDojrflj5bogZTlu7rlhbHlu7rlvIDlsZXmg4XlhrXlm77ooajmlbDmja5cclxuICAgIGFzeW5jIGFuYWx5c2lzT2ZCcmFuY2ggKCkge1xyXG4gICAgICBjb25zdCBwYXJhID0ge1xyXG4gICAgICAgIHN0cmVldElkOiB0aGlzLmRhdGEuc3RyZWV0SWQsXHJcbiAgICAgICAgc29tZU1vbnRoc1R5cGU6IHRoaXMuZGF0YS50aW1lSWQsXHJcbiAgICAgICAgY2F0ZWdvcnlUeXBlOiAnMSdcclxuICAgICAgfVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgYW5hbHlzaXNPZkJyYW5jaChwYXJhKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCfogZTlu7rlhbHlu7rlvIDlsZXmg4XlhrXlm77ooajmlbDmja4nLCByZXMpXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEuZGV2ZWxvcFNpdHVhdGlvbiwgcmVzLmRhdGEpXHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIGRldmVsb3BTaXR1YXRpb246IHRoaXMuZGF0YS5kZXZlbG9wU2l0dWF0aW9uXHJcbiAgICAgICAgfSlcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyDojrflj5botYTmupDmlbTlkIjph5Hpop1cclxuICAgIGFzeW5jIGdldFJlc291cmNlQW1vdW50ICgpIHtcclxuICAgICAgY29uc3QgcGFyYSA9IHtcclxuICAgICAgICBzdHJlZXRJZDogdGhpcy5kYXRhLnN0cmVldElkLFxyXG4gICAgICAgIHNvbWVNb250aHNUeXBlOiB0aGlzLmRhdGEudGltZUlkXHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IGdldFJlc291cmNlQW1vdW50KHBhcmEpXHJcbiAgICAgICAgY29uc29sZS5sb2coJ+iBlOW7uuWFseW7uui1hOa6kOaVtOWQiOmHkeminScsIHJlcylcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuZGF0YS51bmlvbkFtb3VudCwgcmVzLmRhdGEpXHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIHVuaW9uQW1vdW50OiB0aGlzLmRhdGEudW5pb25BbW91bnRcclxuICAgICAgICB9KVxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIOiBlOW7uuWFseW7uuW8gOWxleaDheWGteetm+mAieWIl+ihqFxyXG4gICAgb25TaG93VW5pb25Db25kaXRpb25MaXN0ICgpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB1bmlvbkNvbmRpdGlvblZpc2libGU6ICF0aGlzLmRhdGEudW5pb25Db25kaXRpb25WaXNpYmxlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgLy8g5YiH5o2i6IGU5bu65YWx5bu65byA5bGV5oOF5Ya1562b6YCJ5p2h5Lu2XHJcbiAgICBvbkNobmFnZVVuaW9uQ29uZGl0aW9uIChlKSB7XHJcbiAgICAgIGNvbnN0IHsgY29uZGl0aW9uIH0gPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldFxyXG4gICAgICB0aGlzLmRhdGEuY2F0ZWdvcnlMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IGNvbmRpdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgc2VsZWN0VW5pb25Db25kaXRpb246IHtcclxuICAgICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcclxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB1bmlvbkNvbmRpdGlvblZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5kZXB0QW5hbHlzaXNPZkJyYW5jaCgpXHJcbiAgICB9LFxyXG4gICAgLy8g6I635Y+W6IGU5bu65YWx5bu65oqY57q/5Zu+XHJcbiAgICBhc3luYyBkZXB0QW5hbHlzaXNPZkJyYW5jaCAoKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB7XHJcbiAgICAgICAgc3RyZWV0SWQ6IHRoaXMuZGF0YS5zdHJlZXRJZCxcclxuICAgICAgICBzb21lTW9udGhzVHlwZTogdGhpcy5kYXRhLnRpbWVJZCxcclxuICAgICAgICBjYXRlZ29yeUNvZGU6IHRoaXMuZGF0YS5zZWxlY3RVbmlvbkNvbmRpdGlvbi52YWx1ZVxyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCBkZXB0QW5hbHlzaXNPZkJyYW5jaChwYXJhKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCfogZTlu7rlhbHlu7rmipjnur/lm74nLCByZXMpXHJcbiAgICAgICAgY29uc3QgeyBjYXRlZ29yeUxpc3QsIGpvaW5OdW1MaXN0LCBvcmdhbml6YXRpb25zQ291bnRMaXN0LCBhdmVyYWdlTnVtIH0gPSByZXMuZGF0YVxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLmRldmVsb3BTaXR1YXRpb25MaW5lQ2hhcnQsIHsgY2F0ZWdvcnlMaXN0LCBqb2luTnVtTGlzdCwgb3JnYW5pemF0aW9uc0NvdW50TGlzdCwgYXZlcmFnZU51bSB9KVxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBkZXZlbG9wU2l0dWF0aW9uTGluZUNoYXJ0OiB0aGlzLmRhdGEuZGV2ZWxvcFNpdHVhdGlvbkxpbmVDaGFydCxcclxuICAgICAgICAgIGRlcHROdW06IHJlcy5kYXRhLmRlcHROdW1cclxuICAgICAgICB9KVxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIOiBlOW7uuWFseW7uuW8gOWxleaDheWGteaOkuWQjVxyXG4gICAgYXN5bmMgcmFua2luZ09mRGV2ZWxvcG1lbnQgKCkge1xyXG4gICAgICBjb25zdCBwYXJhID0ge1xyXG4gICAgICAgIHN0cmVldElkOiB0aGlzLmRhdGEuc3RyZWV0SWQsXHJcbiAgICAgICAgc29tZU1vbnRoc1R5cGU6IHRoaXMuZGF0YS50aW1lSWQsXHJcbiAgICAgICAgb3JkZXI6IHRoaXMuZGF0YS5jb25kaXRpb25PcmRlciA9PT0gJ2FzYycgPyAnMCcgOiAnMScsXHJcbiAgICAgICAgdHlwZTogdGhpcy5kYXRhLnNlbGVjdENvbmRpdGlvbi52YWx1ZVxyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCByYW5raW5nT2ZEZXZlbG9wbWVudChwYXJhKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCfogZTlu7rlhbHlu7rlvIDlsZXmg4XlhrXmjpLlkI0nLCByZXMpXHJcbiAgICAgICAgY29uc3QgbGlzdDogYW55W10gPSBbXVxyXG4gICAgICAgIGlmIChyZXMuZGF0YS5zdHJlZXRMaXN0ICYmIHJlcy5kYXRhLnN0cmVldExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgcmVzLmRhdGEuc3RyZWV0TGlzdC5mb3JFYWNoKChzdHJlZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY29udGVudExpc3Q6IEFueUFycmF5ID0gW11cclxuICAgICAgICAgICAgc3RyZWV0LmNhdGVnb3J5SW5mb0xpc3QuZm9yRWFjaCggKGNhdGVnb3J5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb250ZW50TGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5LmNhdGVnb3J5TmFtZSxcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlvbk51bTogY2F0ZWdvcnkub3JnYW5pemF0aW9uc0NvdW50LFxyXG4gICAgICAgICAgICAgICAgZW50ZXJOdW06IGNhdGVnb3J5LmpvaW5OdW1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zdCBkZXRhaWxMaXN0ID0gW1xyXG4gICAgICAgICAgICAgIHsgbmFtZTogJ+e7hOe7h+aAu+asoeaVsCcsIG51bTogc3RyZWV0LmFsbE9yZ2FuaXphdGlvbnNDb3VudCB9LFxyXG4gICAgICAgICAgICAgIHsgbmFtZTogJ+WPguWKoOaAu+asoeaVsCcsIG51bTogc3RyZWV0LmFsbEpvaW5OdW1Db3VudH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnRMaXN0LFxyXG4gICAgICAgICAgICAgIGRldGFpbExpc3QsXHJcbiAgICAgICAgICAgICAgc3RyZWV0TmFtZTogc3RyZWV0LmRlcHRuYW1lXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgc3RyZWV0Q29udGVudExpc3Q6IGxpc3QsXHJcbiAgICAgICAgICBwcmVsb2FkVmlzaWJsZTogZmFsc2VcclxuICAgICAgICB9KVxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgc3RyZWV0Q29udGVudExpc3Q6IFtdLFxyXG4gICAgICAgICAgcHJlbG9hZFZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNob29zZVN0cmVldElkIChlOiBhbnkpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBzdHJlZXRJZDogZS5kZXRhaWwsXHJcbiAgICAgICAgc3RyZWV0Q29udGVudExpc3Q6IFtdLFxyXG4gICAgICAgIHByZWxvYWRWaXNpYmxlOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMucmFua2luZ09mRGV2ZWxvcG1lbnQoKVxyXG4gICAgICB0aGlzLmRlcHRBbmFseXNpc09mQnJhbmNoKClcclxuICAgICAgdGhpcy5nZXRSZXNvdXJjZUFtb3VudCgpXHJcbiAgICAgIHRoaXMuYW5hbHlzaXNPZkJyYW5jaCgpXHJcbiAgICB9LFxyXG4gICAgY2hvb3NlVGltZUlkIChlOiBhbnkpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICB0aW1lSWQ6IGUuZGV0YWlsLFxyXG4gICAgICAgIHN0cmVldENvbnRlbnRMaXN0OiBbXSxcclxuICAgICAgICBwcmVsb2FkVmlzaWJsZTogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnJhbmtpbmdPZkRldmVsb3BtZW50KClcclxuICAgICAgdGhpcy5kZXB0QW5hbHlzaXNPZkJyYW5jaCgpXHJcbiAgICAgIHRoaXMuZ2V0UmVzb3VyY2VBbW91bnQoKVxyXG4gICAgICB0aGlzLmFuYWx5c2lzT2ZCcmFuY2goKVxyXG4gICAgfVxyXG4gIH1cclxufSkiXX0=