|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/guild/view/guild_request_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, '28768LXZHpApLF6kxPhdpIv', 'guild_request_item');
|
// Scripts/mod/guild/view/guild_request_item.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: @syg.com(必填, 创建模块的人员)
|
// @description:
|
// 公会查找面板
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var GuildController = require("guild_controller");
|
|
var GuildEvent = require("guild_event");
|
|
var RoleController = require("role_controller");
|
|
var GuildRequestItem = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("guild", "guild_list_item");
|
this.ctrl = GuildController.getInstance();
|
this.data = null;
|
},
|
initPanel: function initPanel() {
|
var container = this.seekChild("container");
|
this.request_btn = this.seekChild(container, "request_btn", cc.Button);
|
this.request_btn_label = this.seekChild(this.request_btn.node, "label", cc.Label);
|
this.request_btn_lo = this.seekChild(this.request_btn.node, "label", cc.LabelOutline);
|
this.request_btn_label.string = Utils.TI18N("申请加入");
|
this.request_btn_img = this.seekChild(container, "request_btn", cc.Sprite);
|
this.condition_desc = this.seekChild(container, "condition_desc", cc.Label);
|
this.guild_name = this.seekChild("guild_name", cc.Label);
|
this.guild_lev = this.seekChild("guild_lev", cc.Label);
|
this.leader_value = this.seekChild("leader_value", cc.Label);
|
this.member_value = this.seekChild("member_value", cc.Label);
|
this.btn_res_id = PathTool.getCommonIcomPath("common_1018");
|
},
|
registerEvent: function registerEvent() {
|
this.request_btn.node.on(cc.Node.EventType.TOUCH_END, function () {
|
if (this.request_btn.interactable == false) return;
|
|
if (this.data != null) {
|
if (this.data.is_apply == 1) //这个时候点击就是取消掉状态
|
this.ctrl.requestJoinGuild(this.data.gid, this.data.gsrv_id, 2);else this.ctrl.requestJoinGuild(this.data.gid, this.data.gsrv_id, 1);
|
}
|
}, this);
|
},
|
setData: function setData(data) {
|
if (this.data != null) {
|
if (this.update_self_event != null) {
|
this.data.unbind(this.update_self_event);
|
this.update_self_event = null;
|
}
|
}
|
|
this.data = data;
|
if (this.root_wnd) this.onShow();
|
},
|
onShow: function onShow() {
|
if (this.data == null) return;
|
var data = this.data;
|
|
if (this.update_self_event == null) {
|
this.update_self_event = this.data.bind(GuildEvent.UpdateGuildItemEvent, function (key, value) {
|
if (key == "is_apply") this.setApplyStatus();
|
}, this);
|
}
|
|
this.guild_name.string = data.name;
|
this.guild_lev.string = cc.js.formatStr(Utils.TI18N("(%s级)"), data.lev);
|
this.leader_value.string = cc.js.formatStr(Utils.TI18N("会长:%s"), data.leader_name);
|
this.member_value.string = cc.js.formatStr(Utils.TI18N("%s/%s"), data.members_num, data.members_max);
|
if (data.members_num >= data.members_max) this.member_value.node.color = new cc.Color(0xd9, 0x50, 0x14, 0xff);else this.member_value.node.color = new cc.Color(0x24, 0x90, 0x03, 0xff);
|
this.guild_lev.x = this.guild_name.node.x + this.guild_name.node.getContentSize().width + 5;
|
this.setApplyStatus();
|
},
|
setApplyStatus: function setApplyStatus() {
|
if (this.data == null) return;
|
var role_vo = RoleController.getInstance().getRoleVo();
|
if (role_vo == null) return;
|
var data = this.data;
|
var color1 = {
|
r: 0xd9,
|
g: 0x50,
|
b: 0x14,
|
a: 0xff
|
};
|
var color2 = {
|
r: 0x68,
|
g: 0x45,
|
b: 0x2a,
|
a: 0xff
|
};
|
|
if (data.is_apply == 1) {
|
// setChildUnEnabled(false, this.request_btn)
|
this.request_btn_label.string = Utils.TI18N("取消申请");
|
this.loadRes(PathTool.getCommonIcomPath("common_1017"), function (sf_obj) {
|
this.request_btn_img.spriteFrame = sf_obj;
|
}.bind(this));
|
this.request_btn_lo.color = new cc.Color(0x6c, 0x2b, 0x00, 0xff);
|
|
if (data.apply_type == 2) {
|
Utils.setGreyButton(this.request_btn, true);
|
this.condition_desc.node.color = new cc.Color(color1.r, color1.g, color1.b, color1.a);
|
this.condition_desc.string = Utils.TI18N("公会不允许加入");
|
} else {
|
if (data.apply_lev > role_vo.lev) {
|
// this.request_btn.interactable = false;
|
Utils.setGreyButton(this.request_btn, true);
|
this.condition_desc.node.color = new cc.Color(color1.r, color1.g, color1.b, color1.a);
|
} else {
|
// this.request_btn.interactable = true;
|
Utils.setGreyButton(this.request_btn, false);
|
this.condition_desc.node.color = new cc.Color(color2.r, color2.g, color2.b, color2.a);
|
}
|
|
if (data.apply_lev == 1) this.condition_desc.string = Utils.TI18N("无等级需求");else this.condition_desc.string = cc.js.formatStr("需要达到%s级", data.apply_lev);
|
}
|
} else {
|
this.loadRes(PathTool.getCommonIcomPath("common_1018"), function (sf_obj) {
|
this.request_btn_img.spriteFrame = sf_obj;
|
}.bind(this));
|
|
if (data.apply_type == 2) {
|
// setChildUnEnabled(false, this.request_btn)
|
// this.request_btn.interactable = false;
|
Utils.setGreyButton(this.request_btn, true);
|
this.request_btn_label.string = Utils.TI18N("条件不足");
|
this.request_btn_lo.enabled = false;
|
this.condition_desc.node.color = new cc.Color(color1.r, color1.g, color1.b, color1.a);
|
this.condition_desc.string = Utils.TI18N("公会不允许加入");
|
} else {
|
if (data.apply_lev > role_vo.lev) {
|
// this.request_btn_label.interactable = false;
|
Utils.setGreyButton(this.request_btn, true);
|
this.request_btn_lo.enabled = false;
|
this.request_btn_label.string = Utils.TI18N("条件不足");
|
this.condition_desc.node.color = new cc.Color(color1.r, color1.g, color1.b, color1.a);
|
} else {
|
// this.request_btn_label.interactable = true;
|
Utils.setGreyButton(this.request_btn, false);
|
this.request_btn_label.string = Utils.TI18N("申请加入");
|
this.request_btn_lo.color = new cc.Color(0x2b, 0x61, 0x0d, 0xff);
|
this.request_btn_lo.enabled = true;
|
this.condition_desc.node.color = new cc.Color(color2.r, color2.g, color2.b, color2.a);
|
}
|
|
if (data.apply_lev == 1) this.condition_desc.string = Utils.TI18N("无等级需求");else this.condition_desc.string = cc.js.formatStr("需要达到%s级", data.apply_lev);
|
}
|
}
|
},
|
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;
|
}
|
},
|
onDelete: function onDelete() {
|
this.suspendAllActions();
|
}
|
});
|
module.exports = GuildRequestItem;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZFxcdmlld1xcZ3VpbGRfcmVxdWVzdF9pdGVtLmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIkd1aWxkQ29udHJvbGxlciIsIkd1aWxkRXZlbnQiLCJSb2xlQ29udHJvbGxlciIsIkd1aWxkUmVxdWVzdEl0ZW0iLCJjYyIsIkNsYXNzIiwiQmFzZVBhbmVsIiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwiY3RybCIsImdldEluc3RhbmNlIiwiZGF0YSIsImluaXRQYW5lbCIsImNvbnRhaW5lciIsInNlZWtDaGlsZCIsInJlcXVlc3RfYnRuIiwiQnV0dG9uIiwicmVxdWVzdF9idG5fbGFiZWwiLCJub2RlIiwiTGFiZWwiLCJyZXF1ZXN0X2J0bl9sbyIsIkxhYmVsT3V0bGluZSIsInN0cmluZyIsIlV0aWxzIiwiVEkxOE4iLCJyZXF1ZXN0X2J0bl9pbWciLCJTcHJpdGUiLCJjb25kaXRpb25fZGVzYyIsImd1aWxkX25hbWUiLCJndWlsZF9sZXYiLCJsZWFkZXJfdmFsdWUiLCJtZW1iZXJfdmFsdWUiLCJidG5fcmVzX2lkIiwiZ2V0Q29tbW9uSWNvbVBhdGgiLCJyZWdpc3RlckV2ZW50Iiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfRU5EIiwiaW50ZXJhY3RhYmxlIiwiaXNfYXBwbHkiLCJyZXF1ZXN0Sm9pbkd1aWxkIiwiZ2lkIiwiZ3Nydl9pZCIsInNldERhdGEiLCJ1cGRhdGVfc2VsZl9ldmVudCIsInVuYmluZCIsInJvb3Rfd25kIiwib25TaG93IiwiYmluZCIsIlVwZGF0ZUd1aWxkSXRlbUV2ZW50Iiwia2V5IiwidmFsdWUiLCJzZXRBcHBseVN0YXR1cyIsIm5hbWUiLCJqcyIsImZvcm1hdFN0ciIsImxldiIsImxlYWRlcl9uYW1lIiwibWVtYmVyc19udW0iLCJtZW1iZXJzX21heCIsImNvbG9yIiwiQ29sb3IiLCJ4IiwiZ2V0Q29udGVudFNpemUiLCJ3aWR0aCIsInJvbGVfdm8iLCJnZXRSb2xlVm8iLCJjb2xvcjEiLCJyIiwiZyIsImIiLCJhIiwiY29sb3IyIiwibG9hZFJlcyIsInNmX29iaiIsInNwcml0ZUZyYW1lIiwiYXBwbHlfdHlwZSIsInNldEdyZXlCdXR0b24iLCJhcHBseV9sZXYiLCJlbmFibGVkIiwic3VzcGVuZEFsbEFjdGlvbnMiLCJvbkRlbGV0ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFDQSxJQUFJRSxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQXhCOztBQUNBLElBQUlHLGNBQWMsR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUVBLElBQUlJLGdCQUFnQixHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUM1QixhQUFTQyxTQURtQjtBQUU1QkMsRUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsU0FBS0MsVUFBTCxHQUFrQlYsUUFBUSxDQUFDVyxhQUFULENBQXVCLE9BQXZCLEVBQWdDLGlCQUFoQyxDQUFsQjtBQUNBLFNBQUtDLElBQUwsR0FBWVYsZUFBZSxDQUFDVyxXQUFoQixFQUFaO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLElBQVo7QUFDSCxHQU4yQjtBQVE1QkMsRUFBQUEsU0FBUyxFQUFFLHFCQUFZO0FBQ25CLFFBQUlDLFNBQVMsR0FBRyxLQUFLQyxTQUFMLENBQWUsV0FBZixDQUFoQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsS0FBS0QsU0FBTCxDQUFlRCxTQUFmLEVBQTBCLGFBQTFCLEVBQXlDVixFQUFFLENBQUNhLE1BQTVDLENBQW5CO0FBQ0EsU0FBS0MsaUJBQUwsR0FBeUIsS0FBS0gsU0FBTCxDQUFlLEtBQUtDLFdBQUwsQ0FBaUJHLElBQWhDLEVBQXNDLE9BQXRDLEVBQStDZixFQUFFLENBQUNnQixLQUFsRCxDQUF6QjtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS04sU0FBTCxDQUFlLEtBQUtDLFdBQUwsQ0FBaUJHLElBQWhDLEVBQXNDLE9BQXRDLEVBQStDZixFQUFFLENBQUNrQixZQUFsRCxDQUF0QjtBQUNBLFNBQUtKLGlCQUFMLENBQXVCSyxNQUF2QixHQUFnQ0MsS0FBSyxDQUFDQyxLQUFOLENBQVksTUFBWixDQUFoQztBQUNBLFNBQUtDLGVBQUwsR0FBdUIsS0FBS1gsU0FBTCxDQUFlRCxTQUFmLEVBQTBCLGFBQTFCLEVBQXlDVixFQUFFLENBQUN1QixNQUE1QyxDQUF2QjtBQUVBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS2IsU0FBTCxDQUFlRCxTQUFmLEVBQTBCLGdCQUExQixFQUEyQ1YsRUFBRSxDQUFDZ0IsS0FBOUMsQ0FBdEI7QUFDQSxTQUFLUyxVQUFMLEdBQWtCLEtBQUtkLFNBQUwsQ0FBZSxZQUFmLEVBQTZCWCxFQUFFLENBQUNnQixLQUFoQyxDQUFsQjtBQUNBLFNBQUtVLFNBQUwsR0FBaUIsS0FBS2YsU0FBTCxDQUFlLFdBQWYsRUFBNEJYLEVBQUUsQ0FBQ2dCLEtBQS9CLENBQWpCO0FBQ0EsU0FBS1csWUFBTCxHQUFvQixLQUFLaEIsU0FBTCxDQUFlLGNBQWYsRUFBK0JYLEVBQUUsQ0FBQ2dCLEtBQWxDLENBQXBCO0FBQ0EsU0FBS1ksWUFBTCxHQUFvQixLQUFLakIsU0FBTCxDQUFlLGNBQWYsRUFBK0JYLEVBQUUsQ0FBQ2dCLEtBQWxDLENBQXBCO0FBRUEsU0FBS2EsVUFBTCxHQUFrQm5DLFFBQVEsQ0FBQ29DLGlCQUFULENBQTJCLGFBQTNCLENBQWxCO0FBQ0gsR0F2QjJCO0FBeUI1QkMsRUFBQUEsYUFBYSxFQUFFLHlCQUFZO0FBQ3ZCLFNBQUtuQixXQUFMLENBQWlCRyxJQUFqQixDQUFzQmlCLEVBQXRCLENBQXlCaEMsRUFBRSxDQUFDaUMsSUFBSCxDQUFRQyxTQUFSLENBQWtCQyxTQUEzQyxFQUFzRCxZQUFZO0FBQzlELFVBQUksS0FBS3ZCLFdBQUwsQ0FBaUJ3QixZQUFqQixJQUFpQyxLQUFyQyxFQUNJOztBQUNKLFVBQUksS0FBSzVCLElBQUwsSUFBYSxJQUFqQixFQUF1QjtBQUNuQixZQUFJLEtBQUtBLElBQUwsQ0FBVTZCLFFBQVYsSUFBc0IsQ0FBMUIsRUFBZ0M7QUFDNUIsZUFBSy9CLElBQUwsQ0FBVWdDLGdCQUFWLENBQTJCLEtBQUs5QixJQUFMLENBQVUrQixHQUFyQyxFQUEwQyxLQUFLL0IsSUFBTCxDQUFVZ0MsT0FBcEQsRUFBNkQsQ0FBN0QsRUFESixLQUdJLEtBQUtsQyxJQUFMLENBQVVnQyxnQkFBVixDQUEyQixLQUFLOUIsSUFBTCxDQUFVK0IsR0FBckMsRUFBMEMsS0FBSy9CLElBQUwsQ0FBVWdDLE9BQXBELEVBQTZELENBQTdEO0FBQ1A7QUFDSixLQVRELEVBU0csSUFUSDtBQVVILEdBcEMyQjtBQXNDNUJDLEVBQUFBLE9BQU8sRUFBRSxpQkFBVWpDLElBQVYsRUFBZ0I7QUFDckIsUUFBSSxLQUFLQSxJQUFMLElBQWEsSUFBakIsRUFBdUI7QUFDbkIsVUFBSSxLQUFLa0MsaUJBQUwsSUFBMEIsSUFBOUIsRUFBb0M7QUFDaEMsYUFBS2xDLElBQUwsQ0FBVW1DLE1BQVYsQ0FBaUIsS0FBS0QsaUJBQXRCO0FBQ0EsYUFBS0EsaUJBQUwsR0FBeUIsSUFBekI7QUFDSDtBQUNKOztBQUNELFNBQUtsQyxJQUFMLEdBQVlBLElBQVo7QUFDQSxRQUFJLEtBQUtvQyxRQUFULEVBQ0ksS0FBS0MsTUFBTDtBQUNQLEdBaEQyQjtBQWtENUJBLEVBQUFBLE1BQU0sRUFBRSxrQkFBWTtBQUNoQixRQUFJLEtBQUtyQyxJQUFMLElBQWEsSUFBakIsRUFDSTtBQUNKLFFBQUlBLElBQUksR0FBRyxLQUFLQSxJQUFoQjs7QUFDQSxRQUFJLEtBQUtrQyxpQkFBTCxJQUEwQixJQUE5QixFQUFvQztBQUNoQyxXQUFLQSxpQkFBTCxHQUF5QixLQUFLbEMsSUFBTCxDQUFVc0MsSUFBVixDQUFlakQsVUFBVSxDQUFDa0Qsb0JBQTFCLEVBQWdELFVBQVVDLEdBQVYsRUFBZUMsS0FBZixFQUFzQjtBQUMzRixZQUFJRCxHQUFHLElBQUksVUFBWCxFQUNJLEtBQUtFLGNBQUw7QUFDUCxPQUh3QixFQUd0QixJQUhzQixDQUF6QjtBQUlIOztBQUNELFNBQUt6QixVQUFMLENBQWdCTixNQUFoQixHQUF5QlgsSUFBSSxDQUFDMkMsSUFBOUI7QUFDQSxTQUFLekIsU0FBTCxDQUFlUCxNQUFmLEdBQXdCbkIsRUFBRSxDQUFDb0QsRUFBSCxDQUFNQyxTQUFOLENBQWdCakMsS0FBSyxDQUFDQyxLQUFOLENBQVksT0FBWixDQUFoQixFQUFzQ2IsSUFBSSxDQUFDOEMsR0FBM0MsQ0FBeEI7QUFDQSxTQUFLM0IsWUFBTCxDQUFrQlIsTUFBbEIsR0FBMkJuQixFQUFFLENBQUNvRCxFQUFILENBQU1DLFNBQU4sQ0FBZ0JqQyxLQUFLLENBQUNDLEtBQU4sQ0FBWSxPQUFaLENBQWhCLEVBQXNDYixJQUFJLENBQUMrQyxXQUEzQyxDQUEzQjtBQUNBLFNBQUszQixZQUFMLENBQWtCVCxNQUFsQixHQUEyQm5CLEVBQUUsQ0FBQ29ELEVBQUgsQ0FBTUMsU0FBTixDQUFnQmpDLEtBQUssQ0FBQ0MsS0FBTixDQUFZLE9BQVosQ0FBaEIsRUFBc0NiLElBQUksQ0FBQ2dELFdBQTNDLEVBQXdEaEQsSUFBSSxDQUFDaUQsV0FBN0QsQ0FBM0I7QUFDQSxRQUFJakQsSUFBSSxDQUFDZ0QsV0FBTCxJQUFvQmhELElBQUksQ0FBQ2lELFdBQTdCLEVBQ0ksS0FBSzdCLFlBQUwsQ0FBa0JiLElBQWxCLENBQXVCMkMsS0FBdkIsR0FBK0IsSUFBSTFELEVBQUUsQ0FBQzJELEtBQVAsQ0FBYSxJQUFiLEVBQW1CLElBQW5CLEVBQXlCLElBQXpCLEVBQStCLElBQS9CLENBQS9CLENBREosS0FHSSxLQUFLL0IsWUFBTCxDQUFrQmIsSUFBbEIsQ0FBdUIyQyxLQUF2QixHQUErQixJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhLElBQWIsRUFBbUIsSUFBbkIsRUFBeUIsSUFBekIsRUFBK0IsSUFBL0IsQ0FBL0I7QUFDSixTQUFLakMsU0FBTCxDQUFla0MsQ0FBZixHQUFtQixLQUFLbkMsVUFBTCxDQUFnQlYsSUFBaEIsQ0FBcUI2QyxDQUFyQixHQUF5QixLQUFLbkMsVUFBTCxDQUFnQlYsSUFBaEIsQ0FBcUI4QyxjQUFyQixHQUFzQ0MsS0FBL0QsR0FBdUUsQ0FBMUY7QUFDQSxTQUFLWixjQUFMO0FBQ0gsR0F0RTJCO0FBd0U1QkEsRUFBQUEsY0FBYyxFQUFFLDBCQUFZO0FBQ3hCLFFBQUksS0FBSzFDLElBQUwsSUFBYSxJQUFqQixFQUNJO0FBQ0osUUFBSXVELE9BQU8sR0FBR2pFLGNBQWMsQ0FBQ1MsV0FBZixHQUE2QnlELFNBQTdCLEVBQWQ7QUFDQSxRQUFJRCxPQUFPLElBQUksSUFBZixFQUNJO0FBQ0osUUFBSXZELElBQUksR0FBRyxLQUFLQSxJQUFoQjtBQUNBLFFBQUl5RCxNQUFNLEdBQUc7QUFBRUMsTUFBQUEsQ0FBQyxFQUFFLElBQUw7QUFBV0MsTUFBQUEsQ0FBQyxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLENBQUMsRUFBRSxJQUF2QjtBQUE2QkMsTUFBQUEsQ0FBQyxFQUFFO0FBQWhDLEtBQWI7QUFDQSxRQUFJQyxNQUFNLEdBQUc7QUFBRUosTUFBQUEsQ0FBQyxFQUFFLElBQUw7QUFBV0MsTUFBQUEsQ0FBQyxFQUFFLElBQWQ7QUFBb0JDLE1BQUFBLENBQUMsRUFBRSxJQUF2QjtBQUE2QkMsTUFBQUEsQ0FBQyxFQUFFO0FBQWhDLEtBQWI7O0FBQ0EsUUFBSTdELElBQUksQ0FBQzZCLFFBQUwsSUFBaUIsQ0FBckIsRUFBd0I7QUFDcEI7QUFDQSxXQUFLdkIsaUJBQUwsQ0FBdUJLLE1BQXZCLEdBQWdDQyxLQUFLLENBQUNDLEtBQU4sQ0FBWSxNQUFaLENBQWhDO0FBQ0EsV0FBS2tELE9BQUwsQ0FBYTdFLFFBQVEsQ0FBQ29DLGlCQUFULENBQTJCLGFBQTNCLENBQWIsRUFBd0QsVUFBUzBDLE1BQVQsRUFBZ0I7QUFDcEUsYUFBS2xELGVBQUwsQ0FBcUJtRCxXQUFyQixHQUFtQ0QsTUFBbkM7QUFDSCxPQUZ1RCxDQUV0RDFCLElBRnNELENBRWpELElBRmlELENBQXhEO0FBR0EsV0FBSzdCLGNBQUwsQ0FBb0J5QyxLQUFwQixHQUE0QixJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhLElBQWIsRUFBa0IsSUFBbEIsRUFBdUIsSUFBdkIsRUFBNEIsSUFBNUIsQ0FBNUI7O0FBQ0EsVUFBSW5ELElBQUksQ0FBQ2tFLFVBQUwsSUFBbUIsQ0FBdkIsRUFBMEI7QUFDdEJ0RCxRQUFBQSxLQUFLLENBQUN1RCxhQUFOLENBQW9CLEtBQUsvRCxXQUF6QixFQUFxQyxJQUFyQztBQUNBLGFBQUtZLGNBQUwsQ0FBb0JULElBQXBCLENBQXlCMkMsS0FBekIsR0FBaUMsSUFBSTFELEVBQUUsQ0FBQzJELEtBQVAsQ0FBYU0sTUFBTSxDQUFDQyxDQUFwQixFQUF1QkQsTUFBTSxDQUFDRSxDQUE5QixFQUFpQ0YsTUFBTSxDQUFDRyxDQUF4QyxFQUEyQ0gsTUFBTSxDQUFDSSxDQUFsRCxDQUFqQztBQUNBLGFBQUs3QyxjQUFMLENBQW9CTCxNQUFwQixHQUE2QkMsS0FBSyxDQUFDQyxLQUFOLENBQVksU0FBWixDQUE3QjtBQUNILE9BSkQsTUFJTztBQUNILFlBQUliLElBQUksQ0FBQ29FLFNBQUwsR0FBaUJiLE9BQU8sQ0FBQ1QsR0FBN0IsRUFBa0M7QUFDOUI7QUFDQWxDLFVBQUFBLEtBQUssQ0FBQ3VELGFBQU4sQ0FBb0IsS0FBSy9ELFdBQXpCLEVBQXFDLElBQXJDO0FBQ0EsZUFBS1ksY0FBTCxDQUFvQlQsSUFBcEIsQ0FBeUIyQyxLQUF6QixHQUFpQyxJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhTSxNQUFNLENBQUNDLENBQXBCLEVBQXVCRCxNQUFNLENBQUNFLENBQTlCLEVBQWlDRixNQUFNLENBQUNHLENBQXhDLEVBQTJDSCxNQUFNLENBQUNJLENBQWxELENBQWpDO0FBQ0gsU0FKRCxNQUlPO0FBQ0g7QUFDQWpELFVBQUFBLEtBQUssQ0FBQ3VELGFBQU4sQ0FBb0IsS0FBSy9ELFdBQXpCLEVBQXFDLEtBQXJDO0FBQ0EsZUFBS1ksY0FBTCxDQUFvQlQsSUFBcEIsQ0FBeUIyQyxLQUF6QixHQUFpQyxJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhVyxNQUFNLENBQUNKLENBQXBCLEVBQXVCSSxNQUFNLENBQUNILENBQTlCLEVBQWlDRyxNQUFNLENBQUNGLENBQXhDLEVBQTJDRSxNQUFNLENBQUNELENBQWxELENBQWpDO0FBQ0g7O0FBQ0QsWUFBSTdELElBQUksQ0FBQ29FLFNBQUwsSUFBa0IsQ0FBdEIsRUFDSSxLQUFLcEQsY0FBTCxDQUFvQkwsTUFBcEIsR0FBNkJDLEtBQUssQ0FBQ0MsS0FBTixDQUFZLE9BQVosQ0FBN0IsQ0FESixLQUdJLEtBQUtHLGNBQUwsQ0FBb0JMLE1BQXBCLEdBQTZCbkIsRUFBRSxDQUFDb0QsRUFBSCxDQUFNQyxTQUFOLENBQWdCLFNBQWhCLEVBQTJCN0MsSUFBSSxDQUFDb0UsU0FBaEMsQ0FBN0I7QUFDUDtBQUNKLEtBMUJELE1BMEJPO0FBQ0gsV0FBS0wsT0FBTCxDQUFhN0UsUUFBUSxDQUFDb0MsaUJBQVQsQ0FBMkIsYUFBM0IsQ0FBYixFQUF3RCxVQUFTMEMsTUFBVCxFQUFnQjtBQUNwRSxhQUFLbEQsZUFBTCxDQUFxQm1ELFdBQXJCLEdBQW1DRCxNQUFuQztBQUNILE9BRnVELENBRXREMUIsSUFGc0QsQ0FFakQsSUFGaUQsQ0FBeEQ7O0FBR0EsVUFBSXRDLElBQUksQ0FBQ2tFLFVBQUwsSUFBbUIsQ0FBdkIsRUFBMEI7QUFDdEI7QUFDQTtBQUNBdEQsUUFBQUEsS0FBSyxDQUFDdUQsYUFBTixDQUFvQixLQUFLL0QsV0FBekIsRUFBcUMsSUFBckM7QUFDQSxhQUFLRSxpQkFBTCxDQUF1QkssTUFBdkIsR0FBZ0NDLEtBQUssQ0FBQ0MsS0FBTixDQUFZLE1BQVosQ0FBaEM7QUFDQSxhQUFLSixjQUFMLENBQW9CNEQsT0FBcEIsR0FBOEIsS0FBOUI7QUFDQSxhQUFLckQsY0FBTCxDQUFvQlQsSUFBcEIsQ0FBeUIyQyxLQUF6QixHQUFpQyxJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhTSxNQUFNLENBQUNDLENBQXBCLEVBQXVCRCxNQUFNLENBQUNFLENBQTlCLEVBQWlDRixNQUFNLENBQUNHLENBQXhDLEVBQTJDSCxNQUFNLENBQUNJLENBQWxELENBQWpDO0FBQ0EsYUFBSzdDLGNBQUwsQ0FBb0JMLE1BQXBCLEdBQTZCQyxLQUFLLENBQUNDLEtBQU4sQ0FBWSxTQUFaLENBQTdCO0FBQ0gsT0FSRCxNQVFPO0FBQ0gsWUFBSWIsSUFBSSxDQUFDb0UsU0FBTCxHQUFpQmIsT0FBTyxDQUFDVCxHQUE3QixFQUFrQztBQUM5QjtBQUNBbEMsVUFBQUEsS0FBSyxDQUFDdUQsYUFBTixDQUFvQixLQUFLL0QsV0FBekIsRUFBcUMsSUFBckM7QUFDQSxlQUFLSyxjQUFMLENBQW9CNEQsT0FBcEIsR0FBOEIsS0FBOUI7QUFDQSxlQUFLL0QsaUJBQUwsQ0FBdUJLLE1BQXZCLEdBQWdDQyxLQUFLLENBQUNDLEtBQU4sQ0FBWSxNQUFaLENBQWhDO0FBQ0EsZUFBS0csY0FBTCxDQUFvQlQsSUFBcEIsQ0FBeUIyQyxLQUF6QixHQUFpQyxJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhTSxNQUFNLENBQUNDLENBQXBCLEVBQXVCRCxNQUFNLENBQUNFLENBQTlCLEVBQWlDRixNQUFNLENBQUNHLENBQXhDLEVBQTJDSCxNQUFNLENBQUNJLENBQWxELENBQWpDO0FBQ0gsU0FORCxNQU1PO0FBQ0g7QUFDQWpELFVBQUFBLEtBQUssQ0FBQ3VELGFBQU4sQ0FBb0IsS0FBSy9ELFdBQXpCLEVBQXFDLEtBQXJDO0FBQ0EsZUFBS0UsaUJBQUwsQ0FBdUJLLE1BQXZCLEdBQWdDQyxLQUFLLENBQUNDLEtBQU4sQ0FBWSxNQUFaLENBQWhDO0FBQ0EsZUFBS0osY0FBTCxDQUFvQnlDLEtBQXBCLEdBQTRCLElBQUkxRCxFQUFFLENBQUMyRCxLQUFQLENBQWEsSUFBYixFQUFrQixJQUFsQixFQUF1QixJQUF2QixFQUE0QixJQUE1QixDQUE1QjtBQUNBLGVBQUsxQyxjQUFMLENBQW9CNEQsT0FBcEIsR0FBOEIsSUFBOUI7QUFDQSxlQUFLckQsY0FBTCxDQUFvQlQsSUFBcEIsQ0FBeUIyQyxLQUF6QixHQUFpQyxJQUFJMUQsRUFBRSxDQUFDMkQsS0FBUCxDQUFhVyxNQUFNLENBQUNKLENBQXBCLEVBQXVCSSxNQUFNLENBQUNILENBQTlCLEVBQWlDRyxNQUFNLENBQUNGLENBQXhDLEVBQTJDRSxNQUFNLENBQUNELENBQWxELENBQWpDO0FBQ0g7O0FBQ0QsWUFBSTdELElBQUksQ0FBQ29FLFNBQUwsSUFBa0IsQ0FBdEIsRUFDSSxLQUFLcEQsY0FBTCxDQUFvQkwsTUFBcEIsR0FBNkJDLEtBQUssQ0FBQ0MsS0FBTixDQUFZLE9BQVosQ0FBN0IsQ0FESixLQUdJLEtBQUtHLGNBQUwsQ0FBb0JMLE1BQXBCLEdBQTZCbkIsRUFBRSxDQUFDb0QsRUFBSCxDQUFNQyxTQUFOLENBQWdCLFNBQWhCLEVBQTJCN0MsSUFBSSxDQUFDb0UsU0FBaEMsQ0FBN0I7QUFDUDtBQUNKO0FBQ0osR0E1STJCO0FBOEk1QkUsRUFBQUEsaUJBQWlCLEVBQUUsNkJBQVk7QUFDM0IsUUFBSSxLQUFLdEUsSUFBTCxJQUFhLElBQWpCLEVBQXVCO0FBQ25CLFVBQUksS0FBS2tDLGlCQUFMLElBQTBCLElBQTlCLEVBQW9DO0FBQ2hDLGFBQUtsQyxJQUFMLENBQVVtQyxNQUFWLENBQWlCLEtBQUtELGlCQUF0QjtBQUNBLGFBQUtBLGlCQUFMLEdBQXlCLElBQXpCO0FBQ0g7O0FBQ0QsV0FBS2xDLElBQUwsR0FBWSxJQUFaO0FBQ0g7QUFDSixHQXRKMkI7QUF3SjVCdUUsRUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLFNBQUtELGlCQUFMO0FBQ0g7QUExSjJCLENBQVQsQ0FBdkI7QUE2SkFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmxGLGdCQUFqQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gQGF1dGhvcjogQHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXHJcbi8vIEBkZXNjcmlwdGlvbjpcclxuLy8gICAgICDlhazkvJrmn6Xmib7pnaLmnb9cclxuLy8gPGJyLz5DcmVhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xyXG52YXIgR3VpbGRDb250cm9sbGVyID0gcmVxdWlyZShcImd1aWxkX2NvbnRyb2xsZXJcIik7XHJcbnZhciBHdWlsZEV2ZW50ID0gcmVxdWlyZShcImd1aWxkX2V2ZW50XCIpO1xyXG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpO1xyXG5cclxudmFyIEd1aWxkUmVxdWVzdEl0ZW0gPSBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBCYXNlUGFuZWwsXHJcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcImd1aWxkXCIsIFwiZ3VpbGRfbGlzdF9pdGVtXCIpO1xyXG4gICAgICAgIHRoaXMuY3RybCA9IEd1aWxkQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIGluaXRQYW5lbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLnNlZWtDaGlsZChcImNvbnRhaW5lclwiKTtcclxuICAgICAgICB0aGlzLnJlcXVlc3RfYnRuID0gdGhpcy5zZWVrQ2hpbGQoY29udGFpbmVyLCBcInJlcXVlc3RfYnRuXCIsIGNjLkJ1dHRvbik7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0X2J0bl9sYWJlbCA9IHRoaXMuc2Vla0NoaWxkKHRoaXMucmVxdWVzdF9idG4ubm9kZSwgXCJsYWJlbFwiLCBjYy5MYWJlbCk7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0X2J0bl9sbyA9IHRoaXMuc2Vla0NoaWxkKHRoaXMucmVxdWVzdF9idG4ubm9kZSwgXCJsYWJlbFwiLCBjYy5MYWJlbE91dGxpbmUpO1xyXG4gICAgICAgIHRoaXMucmVxdWVzdF9idG5fbGFiZWwuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLnlLPor7fliqDlhaVcIik7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0X2J0bl9pbWcgPSB0aGlzLnNlZWtDaGlsZChjb250YWluZXIsIFwicmVxdWVzdF9idG5cIiwgY2MuU3ByaXRlKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb25kaXRpb25fZGVzYyA9IHRoaXMuc2Vla0NoaWxkKGNvbnRhaW5lciwgXCJjb25kaXRpb25fZGVzY1wiLGNjLkxhYmVsKTtcclxuICAgICAgICB0aGlzLmd1aWxkX25hbWUgPSB0aGlzLnNlZWtDaGlsZChcImd1aWxkX25hbWVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMuZ3VpbGRfbGV2ID0gdGhpcy5zZWVrQ2hpbGQoXCJndWlsZF9sZXZcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMubGVhZGVyX3ZhbHVlID0gdGhpcy5zZWVrQ2hpbGQoXCJsZWFkZXJfdmFsdWVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMubWVtYmVyX3ZhbHVlID0gdGhpcy5zZWVrQ2hpbGQoXCJtZW1iZXJfdmFsdWVcIiwgY2MuTGFiZWwpO1xyXG5cclxuICAgICAgICB0aGlzLmJ0bl9yZXNfaWQgPSBQYXRoVG9vbC5nZXRDb21tb25JY29tUGF0aChcImNvbW1vbl8xMDE4XCIpO1xyXG4gICAgfSxcclxuXHJcbiAgICByZWdpc3RlckV2ZW50OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0X2J0bi5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXF1ZXN0X2J0bi5pbnRlcmFjdGFibGUgPT0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmlzX2FwcGx5ID09IDEpICAgIC8v6L+Z5Liq5pe25YCZ54K55Ye75bCx5piv5Y+W5raI5o6J54q25oCBXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RKb2luR3VpbGQodGhpcy5kYXRhLmdpZCwgdGhpcy5kYXRhLmdzcnZfaWQsIDIpO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3RybC5yZXF1ZXN0Sm9pbkd1aWxkKHRoaXMuZGF0YS5naWQsIHRoaXMuZGF0YS5nc3J2X2lkLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRoaXMpXHJcbiAgICB9LFxyXG5cclxuICAgIHNldERhdGE6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS51bmJpbmQodGhpcy51cGRhdGVfc2VsZl9ldmVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhXHJcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpXHJcbiAgICAgICAgICAgIHRoaXMub25TaG93KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uU2hvdzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlX3NlbGZfZXZlbnQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ID0gdGhpcy5kYXRhLmJpbmQoR3VpbGRFdmVudC5VcGRhdGVHdWlsZEl0ZW1FdmVudCwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gXCJpc19hcHBseVwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXBwbHlTdGF0dXMoKTtcclxuICAgICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ndWlsZF9uYW1lLnN0cmluZyA9IGRhdGEubmFtZTtcclxuICAgICAgICB0aGlzLmd1aWxkX2xldi5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCIoJXPnuqcpXCIpLCBkYXRhLmxldik7XHJcbiAgICAgICAgdGhpcy5sZWFkZXJfdmFsdWUuc3RyaW5nID0gY2MuanMuZm9ybWF0U3RyKFV0aWxzLlRJMThOKFwi5Lya6ZW/77yaJXNcIiksIGRhdGEubGVhZGVyX25hbWUpO1xyXG4gICAgICAgIHRoaXMubWVtYmVyX3ZhbHVlLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihVdGlscy5USTE4TihcIiVzLyVzXCIpLCBkYXRhLm1lbWJlcnNfbnVtLCBkYXRhLm1lbWJlcnNfbWF4KTtcclxuICAgICAgICBpZiAoZGF0YS5tZW1iZXJzX251bSA+PSBkYXRhLm1lbWJlcnNfbWF4KVxyXG4gICAgICAgICAgICB0aGlzLm1lbWJlcl92YWx1ZS5ub2RlLmNvbG9yID0gbmV3IGNjLkNvbG9yKDB4ZDksIDB4NTAsIDB4MTQsIDB4ZmYpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5tZW1iZXJfdmFsdWUubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcigweDI0LCAweDkwLCAweDAzLCAweGZmKTtcclxuICAgICAgICB0aGlzLmd1aWxkX2xldi54ID0gdGhpcy5ndWlsZF9uYW1lLm5vZGUueCArIHRoaXMuZ3VpbGRfbmFtZS5ub2RlLmdldENvbnRlbnRTaXplKCkud2lkdGggKyA1O1xyXG4gICAgICAgIHRoaXMuc2V0QXBwbHlTdGF0dXMoKTtcclxuICAgIH0sXHJcblxyXG4gICAgc2V0QXBwbHlTdGF0dXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIHZhciByb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcclxuICAgICAgICBpZiAocm9sZV92byA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgICAgICB2YXIgY29sb3IxID0geyByOiAweGQ5LCBnOiAweDUwLCBiOiAweDE0LCBhOiAweGZmIH07XHJcbiAgICAgICAgdmFyIGNvbG9yMiA9IHsgcjogMHg2OCwgZzogMHg0NSwgYjogMHgyYSwgYTogMHhmZiB9O1xyXG4gICAgICAgIGlmIChkYXRhLmlzX2FwcGx5ID09IDEpIHtcclxuICAgICAgICAgICAgLy8gc2V0Q2hpbGRVbkVuYWJsZWQoZmFsc2UsIHRoaXMucmVxdWVzdF9idG4pIFxyXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RfYnRuX2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5Y+W5raI55Sz6K+3XCIpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0Q29tbW9uSWNvbVBhdGgoXCJjb21tb25fMTAxN1wiKSwgZnVuY3Rpb24oc2Zfb2JqKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdF9idG5faW1nLnNwcml0ZUZyYW1lID0gc2Zfb2JqO1xyXG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdF9idG5fbG8uY29sb3IgPSBuZXcgY2MuQ29sb3IoMHg2YywweDJiLDB4MDAsMHhmZilcclxuICAgICAgICAgICAgaWYgKGRhdGEuYXBwbHlfdHlwZSA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMucmVxdWVzdF9idG4sdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uX2Rlc2Mubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcihjb2xvcjEuciwgY29sb3IxLmcsIGNvbG9yMS5iLCBjb2xvcjEuYSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvbl9kZXNjLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5YWs5Lya5LiN5YWB6K645Yqg5YWlXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuYXBwbHlfbGV2ID4gcm9sZV92by5sZXYpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnJlcXVlc3RfYnRuLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLnNldEdyZXlCdXR0b24odGhpcy5yZXF1ZXN0X2J0bix0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uX2Rlc2Mubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcihjb2xvcjEuciwgY29sb3IxLmcsIGNvbG9yMS5iLCBjb2xvcjEuYSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMucmVxdWVzdF9idG4uaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMucmVxdWVzdF9idG4sZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25fZGVzYy5ub2RlLmNvbG9yID0gbmV3IGNjLkNvbG9yKGNvbG9yMi5yLCBjb2xvcjIuZywgY29sb3IyLmIsIGNvbG9yMi5hKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmFwcGx5X2xldiA9PSAxKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uX2Rlc2Muc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLml6DnrYnnuqfpnIDmsYJcIik7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25fZGVzYy5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoXCLpnIDopoHovr7liLAlc+e6p1wiLCBkYXRhLmFwcGx5X2xldik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0Q29tbW9uSWNvbVBhdGgoXCJjb21tb25fMTAxOFwiKSwgZnVuY3Rpb24oc2Zfb2JqKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdF9idG5faW1nLnNwcml0ZUZyYW1lID0gc2Zfb2JqO1xyXG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmFwcGx5X3R5cGUgPT0gMikge1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0Q2hpbGRVbkVuYWJsZWQoZmFsc2UsIHRoaXMucmVxdWVzdF9idG4pXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnJlcXVlc3RfYnRuLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgVXRpbHMuc2V0R3JleUJ1dHRvbih0aGlzLnJlcXVlc3RfYnRuLHRydWUpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RfYnRuX2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5p2h5Lu25LiN6LazXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0X2J0bl9sby5lbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvbl9kZXNjLm5vZGUuY29sb3IgPSBuZXcgY2MuQ29sb3IoY29sb3IxLnIsIGNvbG9yMS5nLCBjb2xvcjEuYiwgY29sb3IxLmEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25fZGVzYy5zdHJpbmcgPSBVdGlscy5USTE4TihcIuWFrOS8muS4jeWFgeiuuOWKoOWFpVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmFwcGx5X2xldiA+IHJvbGVfdm8ubGV2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5yZXF1ZXN0X2J0bl9sYWJlbC5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMucmVxdWVzdF9idG4sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RfYnRuX2xvLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RfYnRuX2xhYmVsLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5p2h5Lu25LiN6LazXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uX2Rlc2Mubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcihjb2xvcjEuciwgY29sb3IxLmcsIGNvbG9yMS5iLCBjb2xvcjEuYSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMucmVxdWVzdF9idG5fbGFiZWwuaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMucmVxdWVzdF9idG4sZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0X2J0bl9sYWJlbC5zdHJpbmcgPSBVdGlscy5USTE4TihcIueUs+ivt+WKoOWFpVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RfYnRuX2xvLmNvbG9yID0gbmV3IGNjLkNvbG9yKDB4MmIsMHg2MSwweDBkLDB4ZmYpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdF9idG5fbG8uZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25fZGVzYy5ub2RlLmNvbG9yID0gbmV3IGNjLkNvbG9yKGNvbG9yMi5yLCBjb2xvcjIuZywgY29sb3IyLmIsIGNvbG9yMi5hKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmFwcGx5X2xldiA9PSAxKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uX2Rlc2Muc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLml6DnrYnnuqfpnIDmsYJcIik7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25fZGVzYy5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoXCLpnIDopoHovr7liLAlc+e6p1wiLCBkYXRhLmFwcGx5X2xldik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHN1c3BlbmRBbGxBY3Rpb25zOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS51bmJpbmQodGhpcy51cGRhdGVfc2VsZl9ldmVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZV9zZWxmX2V2ZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgb25EZWxldGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnN1c3BlbmRBbGxBY3Rpb25zKCk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBHdWlsZFJlcXVlc3RJdGVtOyJdfQ==
|