|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/guildwar/view/guildwar_position_item.js';
|
var __require = nodeEnv ? function (request) {
|
return cc.require(request);
|
} : function (request) {
|
return __quick_compile_project__.require(request, __filename);
|
};
|
function __define (exports, require, module) {
|
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
cc._RF.push(module, '934d8d//01LcqCnjdwEg0Qf', 'guildwar_position_item');
|
// Scripts/mod/guildwar/view/guildwar_position_item.js
|
|
"use strict";
|
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 联盟战 据点
|
// <br/>Create: 2019-05-08 10:14:55
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var GuildwarConst = require("guildwar_const");
|
|
var RoleController = require("role_controller");
|
|
var GuildwarEvent = require("guildwar_event");
|
|
var Guildwar_position_itemPanel = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("guildwar", "guildwar_position");
|
},
|
// 可以初始化声明一些变量的
|
initConfig: function initConfig() {
|
this.star_list = {};
|
this.ctrl = require("guildwar_controller").getInstance();
|
this.model = this.ctrl.getModel();
|
this.color_1 = new cc.Color(123, 194, 244);
|
this.color_2 = new cc.Color(244, 140, 123);
|
},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initPanel: function initPanel() {
|
var _temp_index;
|
|
this.container = this.seekChild("container");
|
this.build_sp = this.seekChild("build", cc.Sprite);
|
this.name_label_lb = this.seekChild("name_label", cc.Label);
|
this.attk_label_lb = this.seekChild("attk_label", cc.Label);
|
this.pos_bg_nd = this.seekChild("pos_bg");
|
this.pos_label_lb = this.seekChild(this.pos_bg_nd, "pos_label", cc.Label);
|
this.image_success_nd = this.seekChild("image_success");
|
this.image_success_nd.zIndex = 10;
|
this.image_buff = this.seekChild(this.image_success_nd, "image_buff", cc.Sprite);
|
this.loadRes(PathTool.getIconPath("bufficon", "2"), function (sp) {
|
this.image_buff.spriteFrame = sp;
|
}.bind(this));
|
var temp_index = (_temp_index = {}, _defineProperty(_temp_index, 1, 3), _defineProperty(_temp_index, 2, 2), _defineProperty(_temp_index, 3, 1), _temp_index);
|
|
for (var i = 1; i <= 3; i++) {
|
var star = this.seekChild("star_" + i);
|
|
if (star) {
|
star.active = false;
|
var index = temp_index[i];
|
this.star_list[index] = star;
|
}
|
}
|
|
if (this.parent_nd) {
|
this.setParentIndex(this.parent_nd, this.z_index);
|
}
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
Utils.onTouchEnd(this.container, function () {
|
if (this.cur_position_type == GuildwarConst.positions.others && this.data && this.data.pos) {
|
var guildwar_status = this.model.getGuildWarStatus();
|
|
if (guildwar_status == GuildwarConst.status.settlement) {
|
message(Utils.TI18N("本次公会战已结束啦,不能再挑战了哦"));
|
} else {
|
this.ctrl.openAttkPositionWindow(true, this.data.pos);
|
}
|
} else if (this.cur_position_type == GuildwarConst.positions.myself && this.data && this.data.pos) {
|
var role_vo = RoleController.getInstance().getRoleVo();
|
|
if (role_vo.gid != 0) {
|
this.ctrl.openDefendLookWindow(true, role_vo.gid, role_vo.gsrv_id, this.data.pos); // 我方据点直接打开据点防守记录
|
}
|
}
|
}.bind(this), 1);
|
},
|
setData: function setData(data, position_type) {
|
if (this.data != null) {
|
if (this.update_self_event != null) {
|
this.data.unbind(this.update_self_event);
|
this.update_self_event = null;
|
}
|
}
|
|
if (data != null) {
|
this.data = data;
|
|
if (this.update_self_event == null) {
|
this.update_self_event = this.data.bind(GuildwarEvent.UpdateGuildWarPositionDataEvent, function () {
|
this.onShow();
|
}, this);
|
}
|
}
|
|
this.cur_position_type = position_type;
|
if (this.root_wnd) this.onShow();
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调可以设置一些数据了
|
onShow: function onShow(params) {
|
if (this.data == null) return;
|
|
if (this.data.hp == 0) {
|
this.loadRes(PathTool.getUIIconPath("guildwar", "guildwar_1020"), function (sp) {
|
this.build_sp.spriteFrame = sp;
|
}.bind(this));
|
|
if (!this.special_sk) {
|
this.special_sk = this.seekChild("special_sk", sp.Skeleton);
|
var res = cc.js.formatStr("spine/%s/action.atlas", PathTool.getEffectRes(326));
|
this.loadRes(res, function (res_object) {
|
this.special_sk.skeletonData = res_object;
|
this.special_sk.setAnimation(1, PlayerAction.action, true);
|
}.bind(this));
|
}
|
|
this.special_sk.node.active = true;
|
} else {
|
this.loadRes(PathTool.getUIIconPath("guildwar", "guildwar_1017"), function (sp) {
|
this.build_sp.spriteFrame = sp;
|
}.bind(this));
|
|
if (this.special_sk) {
|
this.special_sk.node.active = false;
|
}
|
}
|
|
for (var i = 1; i < 4; i++) {
|
var star = this.star_list[i];
|
|
if (this.data.hp < i) {
|
star.active = true;
|
} else {
|
star.active = false;
|
}
|
}
|
|
this.pos_label_lb.string = this.data.pos;
|
var guild_srvid = "";
|
|
if (this.cur_position_type == GuildwarConst.positions.others) {
|
var enemy_baseinfo = this.model.getEnemyGuildWarBaseInfo();
|
guild_srvid = enemy_baseinfo.g_sid || "";
|
} else {
|
var role_vo = RoleController.getInstance().getRoleVo();
|
guild_srvid = role_vo.gsrv_id || "";
|
}
|
|
var index = guild_srvid.search("_");
|
var srv_index = 1;
|
|
if (index != null) {
|
srv_index = guild_srvid.substring(index + 1);
|
}
|
|
var name_str = cc.js.formatStr("[S%s]%s", srv_index, this.data.name);
|
this.name_label_lb.string = name_str;
|
this.attk_label_lb.string = Utils.TI18N(cc.js.formatStr("战力:%d", this.data.power));
|
this.image_success_nd.active = false;
|
|
if (this.cur_position_type == GuildwarConst.positions.myself) {
|
this.name_label_lb.node.color = this.color_1;
|
} else {
|
this.name_label_lb.node.color = this.color_2;
|
this.image_success_nd.active = this.data.hp <= 0;
|
}
|
|
var name_size = this.name_label_lb.node.getContentSize();
|
var name_pos_x = this.name_label_lb.node.x;
|
this.pos_bg_nd.x = name_pos_x - name_size.width / 2;
|
},
|
//获取pos
|
getPositionPos: function getPositionPos() {
|
return this.data.pos;
|
},
|
suspendAllActions: function suspendAllActions() {
|
if (this.data != null) {
|
if (this.update_self_event != null) {
|
this.data.unbind(this.update_self_event);
|
this.update_self_event = null;
|
}
|
|
this.data = null;
|
}
|
},
|
getPosition: function getPosition() {
|
if (this.root_wnd) {
|
return cc.v2(this.root_wnd.x, this.root_wnd.y);
|
} else {
|
return cc.v2(0, 0);
|
}
|
},
|
setParentIndex: function setParentIndex(parent, index) {
|
if (this.root_wnd) {
|
parent.addChild(this.root_wnd, index);
|
} else {
|
this.parent_nd = parent;
|
this.z_index = index;
|
}
|
},
|
// 面板设置不可见的回调,这里做一些不可见的屏蔽处理
|
onHide: function onHide() {},
|
// 当面板从主节点释放掉的调用接口,需要手动调用,而且也一定要调用
|
onDelete: function onDelete() {
|
if (this.special_sk) {
|
this.special_sk.setToSetupPose();
|
this.special_sk.clearTracks();
|
}
|
|
this.suspendAllActions();
|
}
|
});
|
|
cc._RF.pop();
|
}
|
if (nodeEnv) {
|
__define(__module.exports, __require, __module);
|
}
|
else {
|
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
__define(__module.exports, __require, __module);
|
});
|
}
|
})();
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZHdhclxcdmlld1xcZ3VpbGR3YXJfcG9zaXRpb25faXRlbS5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJHdWlsZHdhckNvbnN0IiwiUm9sZUNvbnRyb2xsZXIiLCJHdWlsZHdhckV2ZW50IiwiR3VpbGR3YXJfcG9zaXRpb25faXRlbVBhbmVsIiwiY2MiLCJDbGFzcyIsIkJhc2VQYW5lbCIsImN0b3IiLCJwcmVmYWJQYXRoIiwiZ2V0UHJlZmFiUGF0aCIsImluaXRDb25maWciLCJzdGFyX2xpc3QiLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJtb2RlbCIsImdldE1vZGVsIiwiY29sb3JfMSIsIkNvbG9yIiwiY29sb3JfMiIsImluaXRQYW5lbCIsImNvbnRhaW5lciIsInNlZWtDaGlsZCIsImJ1aWxkX3NwIiwiU3ByaXRlIiwibmFtZV9sYWJlbF9sYiIsIkxhYmVsIiwiYXR0a19sYWJlbF9sYiIsInBvc19iZ19uZCIsInBvc19sYWJlbF9sYiIsImltYWdlX3N1Y2Nlc3NfbmQiLCJ6SW5kZXgiLCJpbWFnZV9idWZmIiwibG9hZFJlcyIsImdldEljb25QYXRoIiwic3AiLCJzcHJpdGVGcmFtZSIsImJpbmQiLCJ0ZW1wX2luZGV4IiwiaSIsInN0YXIiLCJhY3RpdmUiLCJpbmRleCIsInBhcmVudF9uZCIsInNldFBhcmVudEluZGV4Iiwiel9pbmRleCIsInJlZ2lzdGVyRXZlbnQiLCJVdGlscyIsIm9uVG91Y2hFbmQiLCJjdXJfcG9zaXRpb25fdHlwZSIsInBvc2l0aW9ucyIsIm90aGVycyIsImRhdGEiLCJwb3MiLCJndWlsZHdhcl9zdGF0dXMiLCJnZXRHdWlsZFdhclN0YXR1cyIsInN0YXR1cyIsInNldHRsZW1lbnQiLCJtZXNzYWdlIiwiVEkxOE4iLCJvcGVuQXR0a1Bvc2l0aW9uV2luZG93IiwibXlzZWxmIiwicm9sZV92byIsImdldFJvbGVWbyIsImdpZCIsIm9wZW5EZWZlbmRMb29rV2luZG93IiwiZ3Nydl9pZCIsInNldERhdGEiLCJwb3NpdGlvbl90eXBlIiwidXBkYXRlX3NlbGZfZXZlbnQiLCJ1bmJpbmQiLCJVcGRhdGVHdWlsZFdhclBvc2l0aW9uRGF0YUV2ZW50Iiwib25TaG93Iiwicm9vdF93bmQiLCJwYXJhbXMiLCJocCIsImdldFVJSWNvblBhdGgiLCJzcGVjaWFsX3NrIiwiU2tlbGV0b24iLCJyZXMiLCJqcyIsImZvcm1hdFN0ciIsImdldEVmZmVjdFJlcyIsInJlc19vYmplY3QiLCJza2VsZXRvbkRhdGEiLCJzZXRBbmltYXRpb24iLCJQbGF5ZXJBY3Rpb24iLCJhY3Rpb24iLCJub2RlIiwic3RyaW5nIiwiZ3VpbGRfc3J2aWQiLCJlbmVteV9iYXNlaW5mbyIsImdldEVuZW15R3VpbGRXYXJCYXNlSW5mbyIsImdfc2lkIiwic2VhcmNoIiwic3J2X2luZGV4Iiwic3Vic3RyaW5nIiwibmFtZV9zdHIiLCJuYW1lIiwicG93ZXIiLCJjb2xvciIsIm5hbWVfc2l6ZSIsImdldENvbnRlbnRTaXplIiwibmFtZV9wb3NfeCIsIngiLCJ3aWR0aCIsImdldFBvc2l0aW9uUG9zIiwic3VzcGVuZEFsbEFjdGlvbnMiLCJnZXRQb3NpdGlvbiIsInYyIiwieSIsInBhcmVudCIsImFkZENoaWxkIiwib25IaWRlIiwib25EZWxldGUiLCJzZXRUb1NldHVwUG9zZSIsImNsZWFyVHJhY2tzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxhQUFhLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxJQUFJRSxjQUFjLEdBQUdGLE9BQU8sQ0FBQyxpQkFBRCxDQUE1Qjs7QUFDQSxJQUFJRyxhQUFhLEdBQUdILE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxJQUFJSSwyQkFBMkIsR0FBR0MsRUFBRSxDQUFDQyxLQUFILENBQVM7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QUtBLGlCQUFMLEdBQXlCLElBQXpCO0FBQ0g7O0FBQ0QsV0FBS2pCLElBQUwsR0FBWSxJQUFaO0FBQ0g7QUFDSixHQXZLc0M7QUF5S3ZDd0QsRUFBQUEsV0FBVyxFQUFFLHVCQUFZO0FBQ3JCLFFBQUksS0FBS25DLFFBQVQsRUFBbUI7QUFDZixhQUFPcEUsRUFBRSxDQUFDd0csRUFBSCxDQUFNLEtBQUtwQyxRQUFMLENBQWMrQixDQUFwQixFQUF1QixLQUFLL0IsUUFBTCxDQUFjcUMsQ0FBckMsQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNILGFBQU96RyxFQUFFLENBQUN3RyxFQUFILENBQU0sQ0FBTixFQUFTLENBQVQsQ0FBUDtBQUNIO0FBQ0osR0EvS3NDO0FBaUx2Q2pFLEVBQUFBLGNBQWMsRUFBRSx3QkFBVW1FLE1BQVYsRUFBa0JyRSxLQUFsQixFQUF5QjtBQUNyQyxRQUFJLEtBQUsrQixRQUFULEVBQW1CO0FBQ2ZzQyxNQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0IsS0FBS3ZDLFFBQXJCLEVBQStCL0IsS0FBL0I7QUFDSCxLQUZELE1BRU87QUFDSCxXQUFLQyxTQUFMLEdBQWlCb0UsTUFBakI7QUFDQSxXQUFLbEUsT0FBTCxHQUFlSCxLQUFmO0FBQ0g7QUFDSixHQXhMc0M7QUEwTHZDO0FBQ0F1RSxFQUFBQSxNQUFNLEVBQUUsa0JBQVksQ0FFbkIsQ0E3THNDO0FBK0x2QztBQUNBQyxFQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDbEIsUUFBSSxLQUFLckMsVUFBVCxFQUFxQjtBQUNqQixXQUFLQSxVQUFMLENBQWdCc0MsY0FBaEI7QUFDQSxXQUFLdEMsVUFBTCxDQUFnQnVDLFdBQWhCO0FBQ0g7O0FBQ0QsU0FBS1QsaUJBQUw7QUFDSDtBQXRNc0MsQ0FBVCxDQUFsQyIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgIOiBlOebn+aImCDmja7ngrlcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTA1LTA4IDEwOjE0OjU1XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xudmFyIEd1aWxkd2FyQ29uc3QgPSByZXF1aXJlKFwiZ3VpbGR3YXJfY29uc3RcIik7XG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpXG52YXIgR3VpbGR3YXJFdmVudCA9IHJlcXVpcmUoXCJndWlsZHdhcl9ldmVudFwiKTtcblxudmFyIEd1aWxkd2FyX3Bvc2l0aW9uX2l0ZW1QYW5lbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlUGFuZWwsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByZWZhYlBhdGggPSBQYXRoVG9vbC5nZXRQcmVmYWJQYXRoKFwiZ3VpbGR3YXJcIiwgXCJndWlsZHdhcl9wb3NpdGlvblwiKTtcbiAgICB9LFxuXG4gICAgLy8g5Y+v5Lul5Yid5aeL5YyW5aOw5piO5LiA5Lqb5Y+Y6YeP55qEXG4gICAgaW5pdENvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnN0YXJfbGlzdCA9IHt9O1xuICAgICAgICB0aGlzLmN0cmwgPSByZXF1aXJlKFwiZ3VpbGR3YXJfY29udHJvbGxlclwiKS5nZXRJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jdHJsLmdldE1vZGVsKCk7XG4gICAgICAgIHRoaXMuY29sb3JfMSA9IG5ldyBjYy5Db2xvcigxMjMsIDE5NCwgMjQ0KTtcbiAgICAgICAgdGhpcy5jb2xvcl8yID0gbmV3IGNjLkNvbG9yKDI0NCwgMTQwLCAxMjMpO1xuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbkuIDkupvphY3nva7mlbDmja4s5Y+v5Lul55So5LqO5aOw5piO5LiA5Lqb5Y+Y6YeP5LmL57G755qEXG4gICAgaW5pdFBhbmVsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5zZWVrQ2hpbGQoXCJjb250YWluZXJcIik7XG5cbiAgICAgICAgdGhpcy5idWlsZF9zcCA9IHRoaXMuc2Vla0NoaWxkKFwiYnVpbGRcIiwgY2MuU3ByaXRlKTtcbiAgICAgICAgdGhpcy5uYW1lX2xhYmVsX2xiID0gdGhpcy5zZWVrQ2hpbGQoXCJuYW1lX2xhYmVsXCIsIGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5hdHRrX2xhYmVsX2xiID0gdGhpcy5zZWVrQ2hpbGQoXCJhdHRrX2xhYmVsXCIsIGNjLkxhYmVsKTtcbiAgICAgICAgdGhpcy5wb3NfYmdfbmQgPSB0aGlzLnNlZWtDaGlsZChcInBvc19iZ1wiKTtcbiAgICAgICAgdGhpcy5wb3NfbGFiZWxfbGIgPSB0aGlzLnNlZWtDaGlsZCh0aGlzLnBvc19iZ19uZCwgXCJwb3NfbGFiZWxcIiwgY2MuTGFiZWwpO1xuICAgICAgICB0aGlzLmltYWdlX3N1Y2Nlc3NfbmQgPSB0aGlzLnNlZWtDaGlsZChcImltYWdlX3N1Y2Nlc3NcIik7XG4gICAgICAgIHRoaXMuaW1hZ2Vfc3VjY2Vzc19uZC56SW5kZXggPSAxMDtcbiAgICAgICAgdGhpcy5pbWFnZV9idWZmID0gdGhpcy5zZWVrQ2hpbGQodGhpcy5pbWFnZV9zdWNjZXNzX25kLFwiaW1hZ2VfYnVmZlwiLCBjYy5TcHJpdGUpO1xuICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0SWNvblBhdGgoXCJidWZmaWNvblwiLCBcIjJcIiksIGZ1bmN0aW9uIChzcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VfYnVmZi5zcHJpdGVGcmFtZSA9IHNwO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICB2YXIgdGVtcF9pbmRleCA9IHtcbiAgICAgICAgICAgIFsxXTogMyxcbiAgICAgICAgICAgIFsyXTogMixcbiAgICAgICAgICAgIFszXTogMVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDM7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN0YXIgPSB0aGlzLnNlZWtDaGlsZChcInN0YXJfXCIgKyBpKTtcbiAgICAgICAgICAgIGlmIChzdGFyKSB7XG4gICAgICAgICAgICAgICAgc3Rhci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0ZW1wX2luZGV4W2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Rhcl9saXN0W2luZGV4XSA9IHN0YXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmICh0aGlzLnBhcmVudF9uZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRQYXJlbnRJbmRleCh0aGlzLnBhcmVudF9uZCwgdGhpcy56X2luZGV4KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDms6jlhozkuovku7bnm5HlkKznmoTmjqXlj6Ms5LiN6ZyA6KaB5omL5Yqo6LCD55SoLOWmguaenOaYr+S9v+eUqGdjb3JlLkdsb2JhbEV2ZW5055uR5ZCsLOWPr+S7peebtOaOpeiwg+eUqGFkZEdsb2JhbEV2ZW50XG4gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBVdGlscy5vblRvdWNoRW5kKHRoaXMuY29udGFpbmVyLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJfcG9zaXRpb25fdHlwZSA9PSBHdWlsZHdhckNvbnN0LnBvc2l0aW9ucy5vdGhlcnMgJiYgdGhpcy5kYXRhICYmIHRoaXMuZGF0YS5wb3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgZ3VpbGR3YXJfc3RhdHVzID0gdGhpcy5tb2RlbC5nZXRHdWlsZFdhclN0YXR1cygpO1xuICAgICAgICAgICAgICAgIGlmIChndWlsZHdhcl9zdGF0dXMgPT0gR3VpbGR3YXJDb25zdC5zdGF0dXMuc2V0dGxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKFV0aWxzLlRJMThOKFwi5pys5qyh5YWs5Lya5oiY5bey57uT5p2f5ZWm77yM5LiN6IO95YaN5oyR5oiY5LqG5ZOmXCIpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN0cmwub3BlbkF0dGtQb3NpdGlvbldpbmRvdyh0cnVlLCB0aGlzLmRhdGEucG9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VyX3Bvc2l0aW9uX3R5cGUgPT0gR3VpbGR3YXJDb25zdC5wb3NpdGlvbnMubXlzZWxmICYmIHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEucG9zKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJvbGVfdm8gPSBSb2xlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldFJvbGVWbygpO1xuICAgICAgICAgICAgICAgIGlmIChyb2xlX3ZvLmdpZCAhPSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuRGVmZW5kTG9va1dpbmRvdyh0cnVlLCByb2xlX3ZvLmdpZCwgcm9sZV92by5nc3J2X2lkLCB0aGlzLmRhdGEucG9zKSAvLyDmiJHmlrnmja7ngrnnm7TmjqXmiZPlvIDmja7ngrnpmLLlrojorrDlvZVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0uYmluZCh0aGlzKSwgMSlcbiAgICB9LFxuXG4gICAgc2V0RGF0YTogZnVuY3Rpb24gKGRhdGEsIHBvc2l0aW9uX3R5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51cGRhdGVfc2VsZl9ldmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnVuYmluZCh0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICAgICAgaWYgKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPSB0aGlzLmRhdGEuYmluZChHdWlsZHdhckV2ZW50LlVwZGF0ZUd1aWxkV2FyUG9zaXRpb25EYXRhRXZlbnQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNob3coKTtcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VyX3Bvc2l0aW9uX3R5cGUgPSBwb3NpdGlvbl90eXBlO1xuICAgICAgICBpZiAodGhpcy5yb290X3duZClcbiAgICAgICAgICAgIHRoaXMub25TaG93KCk7XG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjizmt7vliqDliLDlr7nlupTkuLvoioLngrnkuYvlkI7nmoTlm57osIPlj6/ku6Xorr7nva7kuIDkupvmlbDmja7kuoZcbiAgICBvblNob3c6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5ocCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0VUlJY29uUGF0aChcImd1aWxkd2FyXCIsIFwiZ3VpbGR3YXJfMTAyMFwiKSwgZnVuY3Rpb24gKHNwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZF9zcC5zcHJpdGVGcmFtZSA9IHNwO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgaWYgKCF0aGlzLnNwZWNpYWxfc2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfc2sgPSB0aGlzLnNlZWtDaGlsZChcInNwZWNpYWxfc2tcIiwgc3AuU2tlbGV0b24pO1xuICAgICAgICAgICAgICAgIHZhciByZXMgPSBjYy5qcy5mb3JtYXRTdHIoXCJzcGluZS8lcy9hY3Rpb24uYXRsYXNcIiwgUGF0aFRvb2wuZ2V0RWZmZWN0UmVzKDMyNikpXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUmVzKHJlcywgZnVuY3Rpb24gKHJlc19vYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGVjaWFsX3NrLnNrZWxldG9uRGF0YSA9IHJlc19vYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9zay5zZXRBbmltYXRpb24oMSwgUGxheWVyQWN0aW9uLmFjdGlvbiwgdHJ1ZSlcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNwZWNpYWxfc2subm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkUmVzKFBhdGhUb29sLmdldFVJSWNvblBhdGgoXCJndWlsZHdhclwiLCBcImd1aWxkd2FyXzEwMTdcIiksIGZ1bmN0aW9uIChzcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRfc3Auc3ByaXRlRnJhbWUgPSBzcDtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcbiAgICAgICAgICAgIGlmICh0aGlzLnNwZWNpYWxfc2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwZWNpYWxfc2subm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN0YXIgPSB0aGlzLnN0YXJfbGlzdFtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuaHAgPCBpKSB7XG4gICAgICAgICAgICAgICAgc3Rhci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGFyLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3NfbGFiZWxfbGIuc3RyaW5nID0gdGhpcy5kYXRhLnBvcztcblxuICAgICAgICB2YXIgZ3VpbGRfc3J2aWQgPSBcIlwiO1xuICAgICAgICBpZiAodGhpcy5jdXJfcG9zaXRpb25fdHlwZSA9PSBHdWlsZHdhckNvbnN0LnBvc2l0aW9ucy5vdGhlcnMpIHtcbiAgICAgICAgICAgIHZhciBlbmVteV9iYXNlaW5mbyA9IHRoaXMubW9kZWwuZ2V0RW5lbXlHdWlsZFdhckJhc2VJbmZvKCk7XG4gICAgICAgICAgICBndWlsZF9zcnZpZCA9IGVuZW15X2Jhc2VpbmZvLmdfc2lkIHx8IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgcm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgICAgICBndWlsZF9zcnZpZCA9IHJvbGVfdm8uZ3Nydl9pZCB8fCBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gZ3VpbGRfc3J2aWQuc2VhcmNoKFwiX1wiKTtcbiAgICAgICAgdmFyIHNydl9pbmRleCA9IDE7XG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzcnZfaW5kZXggPSBndWlsZF9zcnZpZC5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZV9zdHIgPSBjYy5qcy5mb3JtYXRTdHIoXCJbUyVzXSVzXCIsIHNydl9pbmRleCwgdGhpcy5kYXRhLm5hbWUpO1xuICAgICAgICB0aGlzLm5hbWVfbGFiZWxfbGIuc3RyaW5nID0gbmFtZV9zdHI7XG4gICAgICAgIHRoaXMuYXR0a19sYWJlbF9sYi5zdHJpbmcgPSBVdGlscy5USTE4TihjYy5qcy5mb3JtYXRTdHIoXCLmiJjlips6JWRcIiwgdGhpcy5kYXRhLnBvd2VyKSk7XG5cbiAgICAgICAgdGhpcy5pbWFnZV9zdWNjZXNzX25kLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5jdXJfcG9zaXRpb25fdHlwZSA9PSBHdWlsZHdhckNvbnN0LnBvc2l0aW9ucy5teXNlbGYpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZV9sYWJlbF9sYi5ub2RlLmNvbG9yID0gdGhpcy5jb2xvcl8xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYW1lX2xhYmVsX2xiLm5vZGUuY29sb3IgPSB0aGlzLmNvbG9yXzI7XG4gICAgICAgICAgICB0aGlzLmltYWdlX3N1Y2Nlc3NfbmQuYWN0aXZlID0gdGhpcy5kYXRhLmhwIDw9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWVfc2l6ZSA9IHRoaXMubmFtZV9sYWJlbF9sYi5ub2RlLmdldENvbnRlbnRTaXplKCk7XG4gICAgICAgIHZhciBuYW1lX3Bvc194ID0gdGhpcy5uYW1lX2xhYmVsX2xiLm5vZGUueDtcbiAgICAgICAgdGhpcy5wb3NfYmdfbmQueCA9IG5hbWVfcG9zX3ggLSBuYW1lX3NpemUud2lkdGggLyAyO1xuICAgIH0sXG5cbiAgICAvL+iOt+WPlnBvc1xuICAgIGdldFBvc2l0aW9uUG9zOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEucG9zXG4gICAgfSxcblxuICAgIHN1c3BlbmRBbGxBY3Rpb25zOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS51bmJpbmQodGhpcy51cGRhdGVfc2VsZl9ldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVfc2VsZl9ldmVudCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGdldFBvc2l0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnJvb3Rfd25kKSB7XG4gICAgICAgICAgICByZXR1cm4gY2MudjIodGhpcy5yb290X3duZC54LCB0aGlzLnJvb3Rfd25kLnkpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY2MudjIoMCwgMCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgc2V0UGFyZW50SW5kZXg6IGZ1bmN0aW9uIChwYXJlbnQsIGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLnJvb3Rfd25kKSB7XG4gICAgICAgICAgICBwYXJlbnQuYWRkQ2hpbGQodGhpcy5yb290X3duZCwgaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRfbmQgPSBwYXJlbnQ7XG4gICAgICAgICAgICB0aGlzLnpfaW5kZXggPSBpbmRleDtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDpnaLmnb/orr7nva7kuI3lj6/op4HnmoTlm57osIMs6L+Z6YeM5YGa5LiA5Lqb5LiN5Y+v6KeB55qE5bGP6JS95aSE55CGXG4gICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgLy8g5b2T6Z2i5p2/5LuO5Li76IqC54K56YeK5pS+5o6J55qE6LCD55So5o6l5Y+jLOmcgOimgeaJi+WKqOiwg+eUqCzogIzkuJTkuZ/kuIDlrpropoHosIPnlKhcbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5zcGVjaWFsX3NrKSB7XG4gICAgICAgICAgICB0aGlzLnNwZWNpYWxfc2suc2V0VG9TZXR1cFBvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuc3BlY2lhbF9zay5jbGVhclRyYWNrcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3VzcGVuZEFsbEFjdGlvbnMoKTtcbiAgICB9LFxufSkiXX0=
|