|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/limitexercise/view/limitexercise_panel.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, '33039X1X11J/ZivMoWPylF6', 'limitexercise_panel');
|
// Scripts/mod/limitexercise/view/limitexercise_panel.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-09-09 17:32:54
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var LimitexerciseController = require("limitexercise_controller");
|
|
var LimitExerciseEvent = require("limitexercise_event");
|
|
var LimitExerciseConst = require("limitExercise_const");
|
|
var TimeTool = require("timetool");
|
|
var LimitexercisePanel = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("limitexercise", "limitexercise_panel");
|
this.holiday_bid = arguments[0];
|
this.ctrl = LimitexerciseController.getInstance();
|
},
|
// 可以初始化声明一些变量的
|
initConfig: function initConfig() {},
|
// 初始化一些配置数据,可以用于声明一些变量之类的
|
initPanel: function initPanel() {
|
var x = this.getPositionX();
|
this.setPosition(x, -20);
|
var main_container = this.root_wnd.getChildByName("main_container");
|
var load_bg = main_container.getChildByName("bg").getComponent(cc.Sprite);
|
var bg_res = PathTool.getUIIconPath("bigbg/limitexercise", "txt_cn_limit_exercise");
|
this.loadRes(bg_res, function (res) {
|
load_bg.spriteFrame = res;
|
}.bind(this));
|
main_container.getChildByName("Text_1").getComponent(cc.Label).string = Utils.TI18N("活动时间:");
|
this.btn_change = main_container.getChildByName("btn_change");
|
this.btn_change.getChildByName("Text_4").getComponent(cc.Label).string = Utils.TI18N("前往挑战");
|
main_container.getChildByName("Text_1_0").getComponent(cc.Label).string = Utils.TI18N("剩余次数:");
|
main_container.getChildByName("Text_2").getComponent(cc.Label).string = Utils.TI18N("本轮剩余:");
|
this.round_time = main_container.getChildByName("round_time").getComponent(cc.Label);
|
this.round_time.string = "";
|
main_container.getChildByName("Text_2_0").getComponent(cc.Label).string = Utils.TI18N("所在区域:");
|
main_container.getChildByName("Text_2_0_0").getComponent(cc.Label).string = Utils.TI18N("挑战次数:");
|
main_container.getChildByName("Text_2_0_1").getComponent(cc.Label).string = Utils.TI18N("击败怪物:");
|
this.aera_text = main_container.getChildByName("aera_text").getComponent(cc.Label);
|
this.aera_text.string = "";
|
this.change_count = main_container.getChildByName("change_count").getComponent(cc.Label);
|
this.change_count.string = "";
|
this.defaet_master = main_container.getChildByName("defaet_master").getComponent(cc.Label);
|
this.defaet_master.string = "";
|
this.item_count = main_container.getChildByName("item_count").getComponent(cc.Label);
|
this.item_count.string = "";
|
this.remain_time = main_container.getChildByName("remain_time").getComponent(cc.Label);
|
this.remain_time.string = "";
|
this.goods_con = main_container.getChildByName("goods_con");
|
this.goods_con_content = this.goods_con.getChildByName("content");
|
this.setData();
|
this.ctrl.send25410();
|
},
|
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
|
registerEvent: function registerEvent() {
|
this.addGlobalEvent(LimitExerciseEvent.LimitExercise_Message_Event, function (data) {
|
if (!data) return;
|
this.actionHolidayData(data);
|
}.bind(this));
|
this.addGlobalEvent(LimitExerciseEvent.LimitExercise_BuyCount_Event, function (data) {
|
if (!data) return;
|
|
if (this.item_count) {
|
this.item_count.string = data.count || 0;
|
}
|
}.bind(this));
|
this.btn_change.on('click', function () {
|
var MainuiController = require("mainui_controller");
|
|
var BattleConst = require("battle_const");
|
|
MainuiController.getInstance().requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.LimitExercise);
|
Utils.playButtonSound(1);
|
}, this);
|
},
|
// 预制体加载完成之后,添加到对应主节点之后的回调可以设置一些数据了
|
onShow: function onShow(params) {},
|
// 面板设置不可见的回调,这里做一些不可见的屏蔽处理
|
onHide: function onHide() {},
|
setVisibleStatus: function setVisibleStatus(bool) {
|
bool = bool || false;
|
this.setVisible(bool);
|
},
|
setData: function setData() {
|
var const_data = Config.holiday_boss_new_data.data_const;
|
|
if (const_data) {
|
if (const_data.action_time) {
|
var time_desc = const_data.action_time.desc || "";
|
this.remain_time.string = time_desc;
|
}
|
|
if (const_data.action_pre_reward) {
|
var data_list = const_data.action_pre_reward.val || [];
|
var setting = {};
|
setting.scale = 0.9;
|
setting.max_count = 4;
|
setting.is_center = true;
|
setting.show_effect_id = 263;
|
this.item_list = Utils.commonShowSingleRowItemList(this.goods_con, this.item_list, data_list, setting, this.goods_con_content);
|
}
|
}
|
},
|
actionHolidayData: function actionHolidayData(data) {
|
var time = data.endtime || 0;
|
this.setCountDownTime(this.round_time, time - gcore.SmartSocket.getTime());
|
this.item_count.string = data.count || 0;
|
this.aera_text.string = Utils.TI18N(LimitExerciseConst.type[data.order_type || 1]);
|
this.change_count.string = data.round_combat || 0;
|
this.defaet_master.string = data.round_boss || 0;
|
},
|
setCountDownTime: function setCountDownTime(label, less_time) {
|
if (!label) {
|
return;
|
}
|
|
if (this.time_tichet) {
|
gcore.Timer.del(this.time_tichet);
|
this.time_tichet = null;
|
}
|
|
if (less_time > 0) {
|
this.setTimeFormatString(label, less_time);
|
this.time_tichet = gcore.Timer.set(function () {
|
less_time--;
|
|
if (less_time < 0) {
|
gcore.Timer.del(this.time_tichet);
|
this.time_tichet = null;
|
label.string = "00:00:00";
|
} else {
|
this.setTimeFormatString(label, less_time);
|
}
|
}.bind(this), 1000, -1);
|
} else {
|
this.setTimeFormatString(label, less_time);
|
}
|
},
|
setTimeFormatString: function setTimeFormatString(label, time) {
|
if (time > 0) {
|
label.string = TimeTool.getTimeFormatDay(time);
|
} else {
|
label.string = "00:00:00";
|
}
|
},
|
// 当面板从主节点释放掉的调用接口,需要手动调用,而且也一定要调用
|
onDelete: function onDelete() {
|
if (this.time_tichet) {
|
gcore.Timer.del(this.time_tichet);
|
this.time_tichet = null;
|
}
|
|
if (this.item_list) {
|
for (var i = 0; i < this.item_list.length; ++i) {
|
if (this.item_list[i]) {
|
this.item_list[i].deleteMe();
|
this.item_list[i] = null;
|
}
|
}
|
|
this.item_list = null;
|
}
|
}
|
});
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxsaW1pdGV4ZXJjaXNlXFx2aWV3XFxsaW1pdGV4ZXJjaXNlX3BhbmVsLmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIkxpbWl0ZXhlcmNpc2VDb250cm9sbGVyIiwiTGltaXRFeGVyY2lzZUV2ZW50IiwiTGltaXRFeGVyY2lzZUNvbnN0IiwiVGltZVRvb2wiLCJMaW1pdGV4ZXJjaXNlUGFuZWwiLCJjYyIsIkNsYXNzIiwiQmFzZVBhbmVsIiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwiaG9saWRheV9iaWQiLCJhcmd1bWVudHMiLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJpbml0Q29uZmlnIiwiaW5pdFBhbmVsIiwieCIsImdldFBvc2l0aW9uWCIsInNldFBvc2l0aW9uIiwibWFpbl9jb250YWluZXIiLCJyb290X3duZCIsImdldENoaWxkQnlOYW1lIiwibG9hZF9iZyIsImdldENvbXBvbmVudCIsIlNwcml0ZSIsImJnX3JlcyIsImdldFVJSWNvblBhdGgiLCJsb2FkUmVzIiwicmVzIiwic3ByaXRlRnJhbWUiLCJiaW5kIiwiTGFiZWwiLCJzdHJpbmciLCJVdGlscyIsIlRJMThOIiwiYnRuX2NoYW5nZSIsInJvdW5kX3RpbWUiLCJhZXJhX3RleHQiLCJjaGFuZ2VfY291bnQiLCJkZWZhZXRfbWFzdGVyIiwiaXRlbV9jb3VudCIsInJlbWFpbl90aW1lIiwiZ29vZHNfY29uIiwiZ29vZHNfY29uX2NvbnRlbnQiLCJzZXREYXRhIiwic2VuZDI1NDEwIiwicmVnaXN0ZXJFdmVudCIsImFkZEdsb2JhbEV2ZW50IiwiTGltaXRFeGVyY2lzZV9NZXNzYWdlX0V2ZW50IiwiZGF0YSIsImFjdGlvbkhvbGlkYXlEYXRhIiwiTGltaXRFeGVyY2lzZV9CdXlDb3VudF9FdmVudCIsImNvdW50Iiwib24iLCJNYWludWlDb250cm9sbGVyIiwiQmF0dGxlQ29uc3QiLCJyZXF1ZXN0T3BlbkJhdHRsZVJlbGV2YW5jZVdpbmRvdyIsIkZpZ2h0X1R5cGUiLCJMaW1pdEV4ZXJjaXNlIiwicGxheUJ1dHRvblNvdW5kIiwib25TaG93IiwicGFyYW1zIiwib25IaWRlIiwic2V0VmlzaWJsZVN0YXR1cyIsImJvb2wiLCJzZXRWaXNpYmxlIiwiY29uc3RfZGF0YSIsIkNvbmZpZyIsImhvbGlkYXlfYm9zc19uZXdfZGF0YSIsImRhdGFfY29uc3QiLCJhY3Rpb25fdGltZSIsInRpbWVfZGVzYyIsImRlc2MiLCJhY3Rpb25fcHJlX3Jld2FyZCIsImRhdGFfbGlzdCIsInZhbCIsInNldHRpbmciLCJzY2FsZSIsIm1heF9jb3VudCIsImlzX2NlbnRlciIsInNob3dfZWZmZWN0X2lkIiwiaXRlbV9saXN0IiwiY29tbW9uU2hvd1NpbmdsZVJvd0l0ZW1MaXN0IiwidGltZSIsImVuZHRpbWUiLCJzZXRDb3VudERvd25UaW1lIiwiZ2NvcmUiLCJTbWFydFNvY2tldCIsImdldFRpbWUiLCJ0eXBlIiwib3JkZXJfdHlwZSIsInJvdW5kX2NvbWJhdCIsInJvdW5kX2Jvc3MiLCJsYWJlbCIsImxlc3NfdGltZSIsInRpbWVfdGljaGV0IiwiVGltZXIiLCJkZWwiLCJzZXRUaW1lRm9ybWF0U3RyaW5nIiwic2V0IiwiZ2V0VGltZUZvcm1hdERheSIsIm9uRGVsZXRlIiwiaSIsImxlbmd0aCIsImRlbGV0ZU1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsdUJBQXVCLEdBQUdELE9BQU8sQ0FBQywwQkFBRCxDQUFyQzs7QUFDQSxJQUFJRSxrQkFBa0IsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQWhDOztBQUNBLElBQUlHLGtCQUFrQixHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBaEM7O0FBQ0EsSUFBSUksUUFBUSxHQUFHSixPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJ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LFNBQUwsQ0FBZXFCLENBQWYsSUFBb0IsSUFBcEI7QUFDSDtBQUNKOztBQUNELFdBQUtyQixTQUFMLEdBQWlCLElBQWpCO0FBQ0g7QUFDSjtBQTlKNkIsQ0FBVCxDQUF6QiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgIOi/memHjOaYr+aPj+i/sOi/meS4queql+S9k+eahOS9nOeUqOeahFxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDktMDkgMTc6MzI6NTRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XG52YXIgTGltaXRleGVyY2lzZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwibGltaXRleGVyY2lzZV9jb250cm9sbGVyXCIpXG52YXIgTGltaXRFeGVyY2lzZUV2ZW50ID0gcmVxdWlyZShcImxpbWl0ZXhlcmNpc2VfZXZlbnRcIilcbnZhciBMaW1pdEV4ZXJjaXNlQ29uc3QgPSByZXF1aXJlKFwibGltaXRFeGVyY2lzZV9jb25zdFwiKVxudmFyIFRpbWVUb29sID0gcmVxdWlyZShcInRpbWV0b29sXCIpXG52YXIgTGltaXRleGVyY2lzZVBhbmVsID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VQYW5lbCxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJsaW1pdGV4ZXJjaXNlXCIsIFwibGltaXRleGVyY2lzZV9wYW5lbFwiKTtcbiAgICAgICAgdGhpcy5ob2xpZGF5X2JpZCA9IGFyZ3VtZW50c1swXVxuICAgICAgICB0aGlzLmN0cmwgPSBMaW1pdGV4ZXJjaXNlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpXG4gICAgfSxcblxuICAgIC8vIOWPr+S7peWIneWni+WMluWjsOaYjuS4gOS6m+WPmOmHj+eahFxuICAgIGluaXRDb25maWc6ZnVuY3Rpb24oKXtcblxuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbkuIDkupvphY3nva7mlbDmja4s5Y+v5Lul55So5LqO5aOw5piO5LiA5Lqb5Y+Y6YeP5LmL57G755qEXG4gICAgaW5pdFBhbmVsOmZ1bmN0aW9uKCl7XG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRQb3NpdGlvblgoKVxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHgsLTIwKVxuICAgICAgICBsZXQgbWFpbl9jb250YWluZXIgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwibWFpbl9jb250YWluZXJcIilcbiAgICAgICAgbGV0IGxvYWRfYmcgPSBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImJnXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpXG4gICAgICAgIGxldCBiZ19yZXMgPSBQYXRoVG9vbC5nZXRVSUljb25QYXRoKFwiYmlnYmcvbGltaXRleGVyY2lzZVwiLCBcInR4dF9jbl9saW1pdF9leGVyY2lzZVwiKVxuICAgICAgICB0aGlzLmxvYWRSZXMoYmdfcmVzLGZ1bmN0aW9uKHJlcyl7XG4gICAgICAgICAgICBsb2FkX2JnLnNwcml0ZUZyYW1lID0gcmVzO1xuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgIG1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiVGV4dF8xXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gKFV0aWxzLlRJMThOKFwi5rS75Yqo5pe26Ze077yaXCIpKVxuICAgIFxuICAgICAgICB0aGlzLmJ0bl9jaGFuZ2UgPSBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImJ0bl9jaGFuZ2VcIilcbiAgICAgICAgdGhpcy5idG5fY2hhbmdlLmdldENoaWxkQnlOYW1lKFwiVGV4dF80XCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gKFV0aWxzLlRJMThOKFwi5YmN5b6A5oyR5oiYXCIpKVxuICAgIFxuICAgICAgICBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcIlRleHRfMV8wXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gKFV0aWxzLlRJMThOKFwi5Ymp5L2Z5qyh5pWwOlwiKSlcbiAgICAgICAgbWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJUZXh0XzJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSAoVXRpbHMuVEkxOE4oXCLmnKzova7liankvZk6XCIpKVxuICAgICAgICB0aGlzLnJvdW5kX3RpbWUgPSBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcInJvdW5kX3RpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKVxuICAgICAgICB0aGlzLnJvdW5kX3RpbWUuc3RyaW5nID0oXCJcIilcbiAgICAgICAgbWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJUZXh0XzJfMFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IChVdGlscy5USTE4TihcIuaJgOWcqOWMuuWfnzpcIikpXG4gICAgICAgIG1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiVGV4dF8yXzBfMFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IChVdGlscy5USTE4TihcIuaMkeaImOasoeaVsDpcIikpXG4gICAgICAgIG1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiVGV4dF8yXzBfMVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IChVdGlscy5USTE4TihcIuWHu+i0peaAqueJqTpcIikpXG4gICAgICAgIHRoaXMuYWVyYV90ZXh0ID0gbWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJhZXJhX3RleHRcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKVxuICAgICAgICB0aGlzLmFlcmFfdGV4dC5zdHJpbmcgPShcIlwiKVxuICAgICAgICB0aGlzLmNoYW5nZV9jb3VudCA9IG1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiY2hhbmdlX2NvdW50XCIpLmdldENvbXBvbmVudChjYy5MYWJlbClcbiAgICAgICAgdGhpcy5jaGFuZ2VfY291bnQuc3RyaW5nID0oXCJcIilcbiAgICAgICAgdGhpcy5kZWZhZXRfbWFzdGVyID0gbWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJkZWZhZXRfbWFzdGVyXCIpLmdldENvbXBvbmVudChjYy5MYWJlbClcbiAgICAgICAgdGhpcy5kZWZhZXRfbWFzdGVyLnN0cmluZyA9KFwiXCIpXG4gICAgXG4gICAgICAgIHRoaXMuaXRlbV9jb3VudCA9IG1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiaXRlbV9jb3VudFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpXG4gICAgICAgIHRoaXMuaXRlbV9jb3VudC5zdHJpbmcgPShcIlwiKVxuICAgICAgICB0aGlzLnJlbWFpbl90aW1lID0gbWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyZW1haW5fdGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpXG4gICAgICAgIHRoaXMucmVtYWluX3RpbWUuc3RyaW5nID0oXCJcIilcbiAgICAgICAgdGhpcy5nb29kc19jb24gPSBtYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImdvb2RzX2NvblwiKVxuICAgICAgICB0aGlzLmdvb2RzX2Nvbl9jb250ZW50ID0gIHRoaXMuZ29vZHNfY29uLmdldENoaWxkQnlOYW1lKFwiY29udGVudFwiKVxuICAgICAgICB0aGlzLnNldERhdGEoKVxuXG4gICAgICAgIHRoaXMuY3RybC5zZW5kMjU0MTAoKVxuICAgIH0sXG5cbiAgICAvLyDms6jlhozkuovku7bnm5HlkKznmoTmjqXlj6Ms5LiN6ZyA6KaB5omL5Yqo6LCD55SoLOWmguaenOaYr+S9v+eUqGdjb3JlLkdsb2JhbEV2ZW5055uR5ZCsLOWPr+S7peebtOaOpeiwg+eUqGFkZEdsb2JhbEV2ZW50XG4gICAgcmVnaXN0ZXJFdmVudDpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KExpbWl0RXhlcmNpc2VFdmVudC5MaW1pdEV4ZXJjaXNlX01lc3NhZ2VfRXZlbnQsZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgICAgICBpZighZGF0YSkgcmV0dXJuO1xuXHQgICAgICAgIHRoaXMuYWN0aW9uSG9saWRheURhdGEoZGF0YSlcbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICB0aGlzLmFkZEdsb2JhbEV2ZW50KExpbWl0RXhlcmNpc2VFdmVudC5MaW1pdEV4ZXJjaXNlX0J1eUNvdW50X0V2ZW50LGZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICAgICAgaWYoIWRhdGEpIHJldHVybjtcbiAgICAgICAgICAgIGlmKHRoaXMuaXRlbV9jb3VudCl7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtX2NvdW50LnN0cmluZyA9IGRhdGEuY291bnQgfHwgMFxuICAgICAgICAgICAgfVxuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgIHRoaXMuYnRuX2NoYW5nZS5vbignY2xpY2snLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgTWFpbnVpQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWludWlfY29udHJvbGxlclwiKVxuICAgICAgICAgICAgdmFyIEJhdHRsZUNvbnN0ID0gcmVxdWlyZShcImJhdHRsZV9jb25zdFwiKVxuICAgICAgICAgICAgTWFpbnVpQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLnJlcXVlc3RPcGVuQmF0dGxlUmVsZXZhbmNlV2luZG93KEJhdHRsZUNvbnN0LkZpZ2h0X1R5cGUuTGltaXRFeGVyY2lzZSlcbiAgICAgICAgICAgIFV0aWxzLnBsYXlCdXR0b25Tb3VuZCgxKVxuICAgICAgICB9LHRoaXMpXG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjizmt7vliqDliLDlr7nlupTkuLvoioLngrnkuYvlkI7nmoTlm57osIPlj6/ku6Xorr7nva7kuIDkupvmlbDmja7kuoZcbiAgICBvblNob3c6ZnVuY3Rpb24ocGFyYW1zKXtcblxuICAgIH0sXG5cbiAgICAvLyDpnaLmnb/orr7nva7kuI3lj6/op4HnmoTlm57osIMs6L+Z6YeM5YGa5LiA5Lqb5LiN5Y+v6KeB55qE5bGP6JS95aSE55CGXG4gICAgb25IaWRlOmZ1bmN0aW9uKCl7XG5cbiAgICB9LFxuICAgIHNldFZpc2libGVTdGF0dXM6IGZ1bmN0aW9uIChib29sKSB7XG4gICAgICAgIGJvb2wgPSBib29sIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnNldFZpc2libGUoYm9vbCk7XG4gICAgfSxcbiAgICBzZXREYXRhKCl7XG4gICAgICAgIGxldCBjb25zdF9kYXRhID0gQ29uZmlnLmhvbGlkYXlfYm9zc19uZXdfZGF0YS5kYXRhX2NvbnN0XG4gICAgICAgIGlmKGNvbnN0X2RhdGEpe1xuICAgICAgICAgICAgaWYoY29uc3RfZGF0YS5hY3Rpb25fdGltZSl7XG4gICAgICAgICAgICAgICAgbGV0IHRpbWVfZGVzYyA9IGNvbnN0X2RhdGEuYWN0aW9uX3RpbWUuZGVzYyB8fCBcIlwiXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1haW5fdGltZS5zdHJpbmcgPSAodGltZV9kZXNjKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoY29uc3RfZGF0YS5hY3Rpb25fcHJlX3Jld2FyZCl7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFfbGlzdCA9IGNvbnN0X2RhdGEuYWN0aW9uX3ByZV9yZXdhcmQudmFsIHx8IFtdXG4gICAgICAgICAgICAgICAgbGV0IHNldHRpbmcgPSB7fVxuICAgICAgICAgICAgICAgIHNldHRpbmcuc2NhbGUgPSAwLjlcbiAgICAgICAgICAgICAgICBzZXR0aW5nLm1heF9jb3VudCA9IDRcbiAgICAgICAgICAgICAgICBzZXR0aW5nLmlzX2NlbnRlciA9IHRydWVcbiAgICAgICAgICAgICAgICBzZXR0aW5nLnNob3dfZWZmZWN0X2lkID0gMjYzXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3QgPSBVdGlscy5jb21tb25TaG93U2luZ2xlUm93SXRlbUxpc3QodGhpcy5nb29kc19jb24sIHRoaXMuaXRlbV9saXN0LCBkYXRhX2xpc3QsIHNldHRpbmcsdGhpcy5nb29kc19jb25fY29udGVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWN0aW9uSG9saWRheURhdGEoZGF0YSl7XG4gICAgICAgIGxldCB0aW1lID0gZGF0YS5lbmR0aW1lIHx8IDBcbiAgICAgICAgdGhpcy5zZXRDb3VudERvd25UaW1lKHRoaXMucm91bmRfdGltZSwgdGltZSAtIGdjb3JlLlNtYXJ0U29ja2V0LmdldFRpbWUoKSk7XG4gICAgICAgIHRoaXMuaXRlbV9jb3VudC5zdHJpbmcgPSAoZGF0YS5jb3VudCB8fCAwKVxuICAgICAgICB0aGlzLmFlcmFfdGV4dC5zdHJpbmcgPSBVdGlscy5USTE4TihMaW1pdEV4ZXJjaXNlQ29uc3QudHlwZVtkYXRhLm9yZGVyX3R5cGUgfHwgMV0pXG4gICAgICAgIHRoaXMuY2hhbmdlX2NvdW50LnN0cmluZyA9IChkYXRhLnJvdW5kX2NvbWJhdCB8fCAwKVxuICAgICAgICB0aGlzLmRlZmFldF9tYXN0ZXIuc3RyaW5nID0gKGRhdGEucm91bmRfYm9zcyB8fCAwKVxuICAgIH0sXG4gICAgc2V0Q291bnREb3duVGltZShsYWJlbCxsZXNzX3RpbWUpe1xuICAgICAgICBpZighbGFiZWwpe1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy50aW1lX3RpY2hldCl7XG4gICAgICAgICAgICBnY29yZS5UaW1lci5kZWwodGhpcy50aW1lX3RpY2hldCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVfdGljaGV0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZihsZXNzX3RpbWUgPiAwKXtcbiAgICAgICAgICAgIHRoaXMuc2V0VGltZUZvcm1hdFN0cmluZyhsYWJlbCxsZXNzX3RpbWUpXG4gICAgICAgICAgICB0aGlzLnRpbWVfdGljaGV0ID0gZ2NvcmUuVGltZXIuc2V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgbGVzc190aW1lLS0gXG4gICAgICAgICAgICAgICAgaWYobGVzc190aW1lIDwgMCl7XG4gICAgICAgICAgICAgICAgICAgIGdjb3JlLlRpbWVyLmRlbCh0aGlzLnRpbWVfdGljaGV0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lX3RpY2hldCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsLnN0cmluZyA9IChcIjAwOjAwOjAwXCIpXG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZUZvcm1hdFN0cmluZyhsYWJlbCxsZXNzX3RpbWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpLDEwMDAsLTEpXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5zZXRUaW1lRm9ybWF0U3RyaW5nKGxhYmVsLGxlc3NfdGltZSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc2V0VGltZUZvcm1hdFN0cmluZyhsYWJlbCAsIHRpbWUgKXtcbiAgICAgICAgaWYgKHRpbWUgPiAwKXtcbiAgICAgICAgICAgIGxhYmVsLnN0cmluZyA9IFRpbWVUb29sLmdldFRpbWVGb3JtYXREYXkodGltZSk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gXCIwMDowMDowMFwiO1xuICAgICAgICB9XG4gICAgfSxcbiAgICAvLyDlvZPpnaLmnb/ku47kuLvoioLngrnph4rmlL7mjonnmoTosIPnlKjmjqXlj6Ms6ZyA6KaB5omL5Yqo6LCD55SoLOiAjOS4lOS5n+S4gOWumuimgeiwg+eUqFxuICAgIG9uRGVsZXRlOmZ1bmN0aW9uKCl7XG4gICAgICAgIGlmKHRoaXMudGltZV90aWNoZXQpe1xuICAgICAgICAgICAgZ2NvcmUuVGltZXIuZGVsKHRoaXMudGltZV90aWNoZXQpO1xuICAgICAgICAgICAgdGhpcy50aW1lX3RpY2hldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5pdGVtX2xpc3Qpe1xuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLml0ZW1fbGlzdC5sZW5ndGg7KytpKXtcbiAgICAgICAgICAgICAgICBpZih0aGlzLml0ZW1fbGlzdFtpXSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbV9saXN0W2ldLmRlbGV0ZU1lKClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtX2xpc3RbaV0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXRlbV9saXN0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG59KSJdfQ==
|