difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/arena/arena_model.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, '96a6c/OkeZJu4NhjPlRHfom', 'arena_model');
// Scripts/mod/arena/arena_model.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-03-06 11:18:06
// --------------------------------------------------------------------
var ArenaEvent = require("arena_event");
 
var ArenaLoopChallengeVo = require("arena_loop_challenge_vo");
 
var ArenaConst = require("arena_const");
 
var ArenaModel = cc.Class({
  "extends": BaseClass,
  ctor: function ctor() {},
  properties: {},
  initConfig: function initConfig() {
    this.my_loop_data = null;
    this.times_awards = null;
    this.loop_challenge_list = null;
    this.arena_loop_red_list = {};
    this.had_combat_num = 0;
  },
  updateMyLoopData: function updateMyLoopData(data) {
    this.my_loop_data = data;
    gcore.GlobalEvent.fire(ArenaEvent.UpdateMyLoopData); // 更新挑战次数红点
 
    this.updateArenaRedStatus(ArenaConst.red_type.loop_challenge, data.can_combat_num > 0);
  },
  // 循环赛信息
  getMyLoopData: function getMyLoopData() {
    return this.my_loop_data;
  },
  // 更新挑战次数奖励信息
  updateChallengeTimesAwards: function updateChallengeTimesAwards(data) {
    this.times_awards = data; // 更新奖励红点
 
    var bool_status = {};
    this.had_combat_num = data.had_combat_num || 0;
 
    for (var reward_i in Config.arena_data.data_season_num_reward) {
      var reward_info = Config.arena_data.data_season_num_reward[reward_i];
      bool_status[reward_i] = 0;
 
      if (data.had_combat_num) {
        if (reward_info.num <= data.had_combat_num) {
          bool_status[reward_i] = 1;
 
          for (var num_i in data.num_list) {
            var num_info = data.num_list[num_i];
 
            if (num_info.num == reward_info.num) {
              bool_status[reward_i] = 2;
            }
          }
        }
      }
    }
 
    var need_red = false;
 
    for (var status_i in bool_status) {
      if (bool_status[status_i] === 1) {
        need_red = true;
        break;
      }
    }
 
    this.updateArenaRedStatus(ArenaConst.red_type.loop_reward, need_red);
    gcore.GlobalEvent.fire(ArenaEvent.UpdateLoopChallengeTimesList, data);
  },
  getChallengeTimesAwards: function getChallengeTimesAwards() {
    return this.times_awards;
  },
  updateLoopChallengeList: function updateLoopChallengeList(data) {
    if (!this.loop_challenge_list && data.type === 1) return;
    if (!this.loop_challenge_list) this.loop_challenge_list = {};
 
    for (var list_i in data.f_list) {
      if (!this.loop_challenge_list[data.f_list[list_i].idx]) this.loop_challenge_list[data.f_list[list_i].idx] = new ArenaLoopChallengeVo();
      this.loop_challenge_list[data.f_list[list_i].idx].updatetAttributeData(data.f_list[list_i]);
    }
 
    if (data.type === 0) gcore.GlobalEvent.fire(ArenaEvent.UpdateLoopChallengeList);
  },
  getLoopChallengeList: function getLoopChallengeList() {
    var challente_list = [];
 
    for (var cha_i in this.loop_challenge_list) {
      challente_list.push(this.loop_challenge_list[cha_i]);
    }
 
    return challente_list;
  },
  cleanChallengeList: function cleanChallengeList() {
    this.loop_challenge_list = null;
  },
  // 根据积分获取奖杯配置数据,统一一个接口,如果不传入,就默认用自己的
  getZoneConfigBySoure: function getZoneConfigBySoure(score) {
    score = score || this.my_loop_data.score;
    var cur_config = null;
    var first_config = Config.arena_data.data_cup[0];
 
    if (!score || score < first_config.min_score) {
      cur_config = first_config;
    } else {
      for (var cfg_i in Config.arena_data.data_cup) {
        if (Config.arena_data.data_cup[cfg_i].min_score <= score && score <= Config.arena_data.data_cup[cfg_i].max_score) {
          cur_config = Config.arena_data.data_cup[cfg_i];
          break;
        }
      }
    } // var next_config = null;
    // if (cur_config) {
    //     var next_config_index = cur_config.index + 1;
    //     for (var cfg_i in Config.arena_data.data_cup) {
    //         if (Config.arena_data.data_cup[cfg_i].index === next_config_index) {
    //             next_config = Config.arena_data.data_cup[cfg_i];
    //             break;
    //         }
    //     }
    // }
 
 
    return cur_config; // {cur_config: cur_config, next_config: next_config}         
  },
  // 红点相关
  updateArenaRedStatus: function updateArenaRedStatus(type, status) {
    var cur_status = this.arena_loop_red_list[type];
    if (cur_status === status) return;
    this.arena_loop_red_list[type] = status;
 
    var SceneConst = require("scene_const");
 
    var MainSceneController = require("mainscene_controller");
 
    MainSceneController.getInstance().setBuildRedStatus(SceneConst.CenterSceneBuild.arena, {
      bid: type,
      status: status
    });
    gcore.GlobalEvent.fire(ArenaEvent.UpdateArenaRedStatus, type);
  },
  // 挑战记录红点更新
  updateArenaLoopLogStatus: function updateArenaLoopLogStatus(flag) {
    this.updateArenaRedStatus(ArenaConst.red_type.loop_log, !!flag);
  },
  getHadCombatNum: function getHadCombatNum() {
    return this.had_combat_num || 0;
  },
  getArenaLoopLogStatus: function getArenaLoopLogStatus() {
    return this.arena_loop_red_list[ArenaConst.red_type.loop_log];
  }
});
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxhcmVuYVxcYXJlbmFfbW9kZWwuanMiXSwibmFtZXMiOlsiQXJlbmFFdmVudCIsInJlcXVpcmUiLCJBcmVuYUxvb3BDaGFsbGVuZ2VWbyIsIkFyZW5hQ29uc3QiLCJBcmVuYU1vZGVsIiwiY2MiLCJDbGFzcyIsIkJhc2VDbGFzcyIsImN0b3IiLCJwcm9wZXJ0aWVzIiwiaW5pdENvbmZpZyIsIm15X2xvb3BfZGF0YSIsInRpbWVzX2F3YXJkcyIsImxvb3BfY2hhbGxlbmdlX2xpc3QiLCJhcmVuYV9sb29wX3JlZF9saXN0IiwiaGFkX2NvbWJhdF9udW0iLCJ1cGRhdGVNeUxvb3BEYXRhIiwiZGF0YSIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiVXBkYXRlTXlMb29wRGF0YSIsInVwZGF0ZUFyZW5hUmVkU3RhdHVzIiwicmVkX3R5cGUiLCJsb29wX2NoYWxsZW5nZSIsImNhbl9jb21iYXRfbnVtIiwiZ2V0TXlMb29wRGF0YSIsInVwZGF0ZUNoYWxsZW5nZVRpbWVzQXdhcmRzIiwiYm9vbF9zdGF0dXMiLCJyZXdhcmRfaSIsIkNvbmZpZyIsImFyZW5hX2RhdGEiLCJkYXRhX3NlYXNvbl9udW1fcmV3YXJkIiwicmV3YXJkX2luZm8iLCJudW0iLCJudW1faSIsIm51bV9saXN0IiwibnVtX2luZm8iLCJuZWVkX3JlZCIsInN0YXR1c19pIiwibG9vcF9yZXdhcmQiLCJVcGRhdGVMb29wQ2hhbGxlbmdlVGltZXNMaXN0IiwiZ2V0Q2hhbGxlbmdlVGltZXNBd2FyZHMiLCJ1cGRhdGVMb29wQ2hhbGxlbmdlTGlzdCIsInR5cGUiLCJsaXN0X2kiLCJmX2xpc3QiLCJpZHgiLCJ1cGRhdGV0QXR0cmlidXRlRGF0YSIsIlVwZGF0ZUxvb3BDaGFsbGVuZ2VMaXN0IiwiZ2V0TG9vcENoYWxsZW5nZUxpc3QiLCJjaGFsbGVudGVfbGlzdCIsImNoYV9pIiwicHVzaCIsImNsZWFuQ2hhbGxlbmdlTGlzdCIsImdldFpvbmVDb25maWdCeVNvdXJlIiwic2NvcmUiLCJjdXJfY29uZmlnIiwiZmlyc3RfY29uZmlnIiwiZGF0YV9jdXAiLCJtaW5fc2NvcmUiLCJjZmdfaSIsIm1heF9zY29yZSIsInN0YXR1cyIsImN1cl9zdGF0dXMiLCJTY2VuZUNvbnN0IiwiTWFpblNjZW5lQ29udHJvbGxlciIsImdldEluc3RhbmNlIiwic2V0QnVpbGRSZWRTdGF0dXMiLCJDZW50ZXJTY2VuZUJ1aWxkIiwiYXJlbmEiLCJiaWQiLCJVcGRhdGVBcmVuYVJlZFN0YXR1cyIsInVwZGF0ZUFyZW5hTG9vcExvZ1N0YXR1cyIsImZsYWciLCJsb29wX2xvZyIsImdldEhhZENvbWJhdE51bSIsImdldEFyZW5hTG9vcExvZ1N0YXR1cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxVQUFVLEdBQUdDLE9BQU8sQ0FBQyxhQUFELENBQXhCOztBQUNBLElBQUlDLG9CQUFvQixHQUFHRCxPQUFPLENBQUMseUJBQUQsQ0FBbEM7O0FBQ0EsSUFBSUUsVUFBVSxHQUFHRixPQUFPLENBQUMsYUFBRCxDQUF4Qjs7QUFFQSxJQUFJRyxVQUFVLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ3RCLGFBQVNDLFNBRGE7QUFFdEJDLEVBQUFBLElBQUksRUFBRSxnQkFBWSxDQUNqQixDQUhxQjtBQUt0QkMsRUFBQUEsVUFBVSxFQUFFLEVBTFU7QUFRdEJDLEVBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUN2QixTQUFLQyxZQUFMLEdBQW9CLElBQXBCO0FBQ0EsU0FBS0MsWUFBTCxHQUFvQixJQUFwQjtBQUNHLFNBQUtDLG1CQUFMLEdBQTJCLElBQTNCO0FBQ0EsU0FBS0MsbUJBQUwsR0FBMkIsRUFBM0I7QUFDQSxTQUFLQyxjQUFMLEdBQXNCLENBQXRCO0FBQ0gsR0FkcUI7QUFnQnRCQyxFQUFBQSxnQkFBZ0IsRUFBRSwwQkFBU0MsSUFBVCxFQUFlO0FBQ2hDLFNBQUtOLFlBQUwsR0FBb0JNLElBQXBC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QUNBNkIsRUFBQUEsd0JBQXdCLEVBQUUsa0NBQVNDLElBQVQsRUFBZTtBQUNyQyxTQUFLcEQsb0JBQUwsQ0FBMEJuQixVQUFVLENBQUNvQixRQUFYLENBQW9Cb0QsUUFBOUMsRUFBd0QsQ0FBQyxDQUFDRCxJQUExRDtBQUNILEdBakpxQjtBQW1KdEJFLEVBQUFBLGVBQWUsRUFBQywyQkFBVTtBQUN0QixXQUFPLEtBQUs3RCxjQUFMLElBQXVCLENBQTlCO0FBQ0gsR0FySnFCO0FBdUp0QjhELEVBQUFBLHFCQUFxQixFQUFFLGlDQUFXO0FBQzlCLFdBQU8sS0FBSy9ELG1CQUFMLENBQXlCWCxVQUFVLENBQUNvQixRQUFYLENBQW9Cb0QsUUFBN0MsQ0FBUDtBQUNIO0FBekpxQixDQUFULENBQWpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAgIOi/memHjOWhq+WGmeivpue7huivtOaYjizkuLvopoHloavlhpnor6XmqKHlnZfnmoTlip/og73nroDopoFcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTAzLTA2IDExOjE4OjA2XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIEFyZW5hRXZlbnQgPSByZXF1aXJlKFwiYXJlbmFfZXZlbnRcIik7XG52YXIgQXJlbmFMb29wQ2hhbGxlbmdlVm8gPSByZXF1aXJlKFwiYXJlbmFfbG9vcF9jaGFsbGVuZ2Vfdm9cIik7XG52YXIgQXJlbmFDb25zdCA9IHJlcXVpcmUoXCJhcmVuYV9jb25zdFwiKTtcblxudmFyIEFyZW5hTW9kZWwgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZUNsYXNzLFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB9LFxuXG4gICAgcHJvcGVydGllczoge1xuICAgIH0sXG5cbiAgICBpbml0Q29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgXHR0aGlzLm15X2xvb3BfZGF0YSA9IG51bGw7XG4gICAgXHR0aGlzLnRpbWVzX2F3YXJkcyA9IG51bGw7XG4gICAgICAgIHRoaXMubG9vcF9jaGFsbGVuZ2VfbGlzdCA9IG51bGw7XG4gICAgICAgIHRoaXMuYXJlbmFfbG9vcF9yZWRfbGlzdCA9IHt9O1xuICAgICAgICB0aGlzLmhhZF9jb21iYXRfbnVtID0gMFxuICAgIH0sXG5cbiAgICB1cGRhdGVNeUxvb3BEYXRhOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgXHR0aGlzLm15X2xvb3BfZGF0YSA9IGRhdGE7XG4gICAgXHRnY29yZS5HbG9iYWxFdmVudC5maXJlKEFyZW5hRXZlbnQuVXBkYXRlTXlMb29wRGF0YSk7XG5cbiAgICBcdC8vIOabtOaWsOaMkeaImOasoeaVsOe6oueCuVxuICAgICAgICB0aGlzLnVwZGF0ZUFyZW5hUmVkU3RhdHVzKEFyZW5hQ29uc3QucmVkX3R5cGUubG9vcF9jaGFsbGVuZ2UsIGRhdGEuY2FuX2NvbWJhdF9udW0gPiAwKTsgICAgICAgIFxuICAgIH0sXG5cbiAgICAvLyDlvqrnjq/otZvkv6Hmga9cbiAgICBnZXRNeUxvb3BEYXRhOiBmdW5jdGlvbigpIHtcblx0ICAgIHJldHVybiB0aGlzLm15X2xvb3BfZGF0YTtcbiAgICB9LFxuXG4gICAgLy8g5pu05paw5oyR5oiY5qyh5pWw5aWW5Yqx5L+h5oGvXG4gICAgdXBkYXRlQ2hhbGxlbmdlVGltZXNBd2FyZHM6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBcdHRoaXMudGltZXNfYXdhcmRzID0gZGF0YTsgXG4gICAgXHQvLyDmm7TmlrDlpZblirHnuqLngrlcbiAgICAgICAgdmFyIGJvb2xfc3RhdHVzID0ge307XG4gICAgICAgIHRoaXMuaGFkX2NvbWJhdF9udW0gPSBkYXRhLmhhZF9jb21iYXRfbnVtIHx8IDA7XG5cbiAgICAgICAgZm9yICh2YXIgcmV3YXJkX2kgaW4gQ29uZmlnLmFyZW5hX2RhdGEuZGF0YV9zZWFzb25fbnVtX3Jld2FyZCkge1xuICAgICAgICAgICAgdmFyIHJld2FyZF9pbmZvID0gQ29uZmlnLmFyZW5hX2RhdGEuZGF0YV9zZWFzb25fbnVtX3Jld2FyZFtyZXdhcmRfaV07XG4gICAgICAgICAgICBib29sX3N0YXR1c1tyZXdhcmRfaV0gPSAwO1xuICAgICAgICAgICAgaWYgKGRhdGEuaGFkX2NvbWJhdF9udW0pIHtcbiAgICAgICAgICAgICAgICBpZiAocmV3YXJkX2luZm8ubnVtIDw9IGRhdGEuaGFkX2NvbWJhdF9udW0pIHtcbiAgICAgICAgICAgICAgICAgICAgYm9vbF9zdGF0dXNbcmV3YXJkX2ldID0gMTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbnVtX2kgaW4gZGF0YS5udW1fbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG51bV9pbmZvID0gZGF0YS5udW1fbGlzdFtudW1faV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtX2luZm8ubnVtID09IHJld2FyZF9pbmZvLm51bSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfc3RhdHVzW3Jld2FyZF9pXSA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmVlZF9yZWQgPSBmYWxzZVxuICAgICAgICBmb3IgKHZhciBzdGF0dXNfaSBpbiBib29sX3N0YXR1cykge1xuICAgICAgICAgICAgaWYgKGJvb2xfc3RhdHVzW3N0YXR1c19pXSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG5lZWRfcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQXJlbmFSZWRTdGF0dXMoQXJlbmFDb25zdC5yZWRfdHlwZS5sb29wX3Jld2FyZCwgbmVlZF9yZWQpO1xuICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKEFyZW5hRXZlbnQuVXBkYXRlTG9vcENoYWxsZW5nZVRpbWVzTGlzdCwgZGF0YSk7ICAgICAgICBcbiAgICB9LFxuXG4gICAgZ2V0Q2hhbGxlbmdlVGltZXNBd2FyZHM6IGZ1bmN0aW9uKCkge1xuICAgIFx0cmV0dXJuIHRoaXMudGltZXNfYXdhcmRzO1xuICAgIH0sIFxuXG4gICAgdXBkYXRlTG9vcENoYWxsZW5nZUxpc3Q6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvb3BfY2hhbGxlbmdlX2xpc3QgJiYgZGF0YS50eXBlID09PSAxKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5sb29wX2NoYWxsZW5nZV9saXN0KVxuICAgICAgICAgICAgdGhpcy5sb29wX2NoYWxsZW5nZV9saXN0ID0ge307XG5cbiAgICAgICAgZm9yICh2YXIgbGlzdF9pIGluIGRhdGEuZl9saXN0KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubG9vcF9jaGFsbGVuZ2VfbGlzdFtkYXRhLmZfbGlzdFtsaXN0X2ldLmlkeF0pXG4gICAgICAgICAgICAgICAgdGhpcy5sb29wX2NoYWxsZW5nZV9saXN0W2RhdGEuZl9saXN0W2xpc3RfaV0uaWR4XSA9IG5ldyBBcmVuYUxvb3BDaGFsbGVuZ2VWbygpO1xuICAgICAgICAgICAgdGhpcy5sb29wX2NoYWxsZW5nZV9saXN0W2RhdGEuZl9saXN0W2xpc3RfaV0uaWR4XS51cGRhdGV0QXR0cmlidXRlRGF0YShkYXRhLmZfbGlzdFtsaXN0X2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IDApXG4gICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKEFyZW5hRXZlbnQuVXBkYXRlTG9vcENoYWxsZW5nZUxpc3QpO1xuICAgIH0sXG5cbiAgICBnZXRMb29wQ2hhbGxlbmdlTGlzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjaGFsbGVudGVfbGlzdCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBjaGFfaSBpbiB0aGlzLmxvb3BfY2hhbGxlbmdlX2xpc3QpIHtcbiAgICAgICAgICAgIGNoYWxsZW50ZV9saXN0LnB1c2godGhpcy5sb29wX2NoYWxsZW5nZV9saXN0W2NoYV9pXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hhbGxlbnRlX2xpc3Q7XG4gICAgfSxcblxuICAgIGNsZWFuQ2hhbGxlbmdlTGlzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMubG9vcF9jaGFsbGVuZ2VfbGlzdCA9IG51bGw7XG4gICAgfSxcblxuXG4gICAgLy8g5qC55o2u56ev5YiG6I635Y+W5aWW5p2v6YWN572u5pWw5o2u77yM57uf5LiA5LiA5Liq5o6l5Y+jLOWmguaenOS4jeS8oOWFpe+8jOWwsem7mOiupOeUqOiHquW3seeahFxuICAgIGdldFpvbmVDb25maWdCeVNvdXJlOiBmdW5jdGlvbihzY29yZSkge1xuICAgICAgICBzY29yZSA9IHNjb3JlIHx8IHRoaXMubXlfbG9vcF9kYXRhLnNjb3JlO1xuXG4gICAgICAgIHZhciBjdXJfY29uZmlnID0gbnVsbDtcbiAgICAgICAgdmFyIGZpcnN0X2NvbmZpZyA9IENvbmZpZy5hcmVuYV9kYXRhLmRhdGFfY3VwWzBdO1xuICAgICAgICBpZiAoIXNjb3JlIHx8IHNjb3JlIDwgZmlyc3RfY29uZmlnLm1pbl9zY29yZSkge1xuICAgICAgICAgICAgY3VyX2NvbmZpZyA9IGZpcnN0X2NvbmZpZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIGNmZ19pIGluIENvbmZpZy5hcmVuYV9kYXRhLmRhdGFfY3VwKSB7XG4gICAgICAgICAgICAgICAgaWYgKENvbmZpZy5hcmVuYV9kYXRhLmRhdGFfY3VwW2NmZ19pXS5taW5fc2NvcmUgPD0gc2NvcmUgJiYgc2NvcmUgPD0gQ29uZmlnLmFyZW5hX2RhdGEuZGF0YV9jdXBbY2ZnX2ldLm1heF9zY29yZSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJfY29uZmlnID0gQ29uZmlnLmFyZW5hX2RhdGEuZGF0YV9jdXBbY2ZnX2ldO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YXIgbmV4dF9jb25maWcgPSBudWxsO1xuICAgICAgICAvLyBpZiAoY3VyX2NvbmZpZykge1xuICAgICAgICAvLyAgICAgdmFyIG5leHRfY29uZmlnX2luZGV4ID0gY3VyX2NvbmZpZy5pbmRleCArIDE7XG4gICAgICAgIC8vICAgICBmb3IgKHZhciBjZmdfaSBpbiBDb25maWcuYXJlbmFfZGF0YS5kYXRhX2N1cCkge1xuICAgICAgICAvLyAgICAgICAgIGlmIChDb25maWcuYXJlbmFfZGF0YS5kYXRhX2N1cFtjZmdfaV0uaW5kZXggPT09IG5leHRfY29uZmlnX2luZGV4KSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIG5leHRfY29uZmlnID0gQ29uZmlnLmFyZW5hX2RhdGEuZGF0YV9jdXBbY2ZnX2ldO1xuICAgICAgICAvLyAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cblxuICAgICAgICByZXR1cm4gY3VyX2NvbmZpZztcbiAgICAgICAgLy8ge2N1cl9jb25maWc6IGN1cl9jb25maWcsIG5leHRfY29uZmlnOiBuZXh0X2NvbmZpZ30gICAgICAgICBcbiAgICB9LFxuXG4gICAgLy8g57qi54K555u45YWzXG4gICAgdXBkYXRlQXJlbmFSZWRTdGF0dXM6IGZ1bmN0aW9uKHR5cGUsIHN0YXR1cykge1xuICAgICAgICB2YXIgY3VyX3N0YXR1cyA9IHRoaXMuYXJlbmFfbG9vcF9yZWRfbGlzdFt0eXBlXTtcbiAgICAgICAgaWYgKGN1cl9zdGF0dXMgPT09IHN0YXR1cykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuYXJlbmFfbG9vcF9yZWRfbGlzdFt0eXBlXSA9IHN0YXR1cztcblxuICAgICAgICB2YXIgU2NlbmVDb25zdCA9IHJlcXVpcmUoXCJzY2VuZV9jb25zdFwiKTtcbiAgICAgICAgdmFyIE1haW5TY2VuZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwibWFpbnNjZW5lX2NvbnRyb2xsZXJcIik7XG4gICAgICAgIE1haW5TY2VuZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zZXRCdWlsZFJlZFN0YXR1cyhTY2VuZUNvbnN0LkNlbnRlclNjZW5lQnVpbGQuYXJlbmEsIHtiaWQ6IHR5cGUsIHN0YXR1czogc3RhdHVzfSk7XG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoQXJlbmFFdmVudC5VcGRhdGVBcmVuYVJlZFN0YXR1cywgdHlwZSk7XG4gICAgfSxcblxuICAgIC8vIOaMkeaImOiusOW9lee6oueCueabtOaWsFxuICAgIHVwZGF0ZUFyZW5hTG9vcExvZ1N0YXR1czogZnVuY3Rpb24oZmxhZykge1xuICAgICAgICB0aGlzLnVwZGF0ZUFyZW5hUmVkU3RhdHVzKEFyZW5hQ29uc3QucmVkX3R5cGUubG9vcF9sb2csICEhZmxhZyk7XG4gICAgfSxcblxuICAgIGdldEhhZENvbWJhdE51bTpmdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gdGhpcy5oYWRfY29tYmF0X251bSB8fCAwO1xuICAgIH0sXG5cbiAgICBnZXRBcmVuYUxvb3BMb2dTdGF0dXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcmVuYV9sb29wX3JlZF9saXN0W0FyZW5hQ29uc3QucmVkX3R5cGUubG9vcF9sb2ddO1xuICAgIH0sXG5cbn0pOyJdfQ==