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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/seerpalace/view/seerpalace_preview_window.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, 'ecb27MwWT5Ibpl9bd08hiPn', 'seerpalace_preview_window');
// Scripts/mod/seerpalace/view/seerpalace_preview_window.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//    -- 先知殿预览
// <br/>Create: 2019-03-25 19:30:32
// --------------------------------------------------------------------
var PathTool = require("pathtool");
 
var SeerpalaceConst = require("seerpalace_const");
 
var SeerpalaceController = require("seerpalace_controller");
 
var SeerpalacePreviewWindow = cc.Class({
  "extends": BaseView,
  ctor: function ctor() {
    this.prefabPath = PathTool.getPrefabPath("seerpalace", "seerpalace_preview_window");
    this.viewTag = SCENE_TAG.ui; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
 
    this.win_type = WinType.Full; //是否是全屏窗体  WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
 
    this.is_full_screen = false;
    this.ctrl = SeerpalaceController.getInstance();
  },
  // 初始化一些配置数据,可以用于声明一些变量之类的
  initConfig: function initConfig() {},
  // 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
  openCallBack: function openCallBack() {
    var self = this;
    self.background = this.root_wnd.getChildByName("background");
 
    if (self.background) {// self.background.setScale(display.getMaxScale())
    }
 
    var container = self.root_wnd.getChildByName("container");
    self.container = container;
    var win_title = container.getChildByName("win_title"); // win_title:setString(TI18N("奖励预览"))
 
    self.list_panel = container.getChildByName("list_panel");
    self.viewContent = this.seekChild("content"); // self.root_wnd.getComponent(cc.Animation).play("seerpalace_preview_window")
  },
  // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
  registerEvent: function registerEvent() {
    this.background.on("touchend", this._onClickBtnClose, this);
  },
  // 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
  openRootWnd: function openRootWnd(index) {
    var self = this;
    self.group_id = SeerpalaceConst.Index_To_GroupId[index];
 
    if (self.group_id) {
      self.setData();
    }
  },
  // 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
  closeCallBack: function closeCallBack() {
    this.list_panel.stopAllActions();
 
    for (var i = 0; i < this.backpackItem.length; ++i) {
      if (this.backpackItem[i]) {
        this.backpackItem[i].deleteMe();
        this.backpackItem[i] = null;
      }
    }
 
    this.ctrl.openSeerpalacePreviewWindow(false);
  },
  setData: function setData() {
    var _this = this;
 
    var self = this;
    var award_config = Config.recruit_high_data.data_seerpalace_award[self.group_id];
 
    if (award_config) {
      (function () {
        _this.backpackItem = [];
        var five_star_config = award_config[5];
        var four_star_config = award_config[4];
        var scale = 0.9;
        var desc_height = 40; //--概率描述的高度
 
        var row = 4; //-- 5列英雄
 
        var start_x = 22;
        var space_x = 35;
        var space_y = 20;
        var offset_y = 10; //-- 两种星级之间的间隔
 
        var content_h = 0;
 
        for (var i in award_config) {
          var v = award_config[i];
 
          if (v.desc && v.desc != "") {
            content_h = content_h + desc_height;
          }
 
          var item_num = v.items.length; // -- 数量
 
          var item_col = Math.ceil(item_num / row); //-- 行数
 
          content_h = content_h + 119 * scale * item_col + (item_col - 1) * space_y + offset_y;
        }
 
        var y = 568 / 2 - content_h;
        self.viewContent.height = content_h;
        self.viewContent.y = y;
        var max_height = content_h; //-- 5星
 
        Utils.createLabel(22, new cc.Color(234, 181, 80, 255), null, start_x, content_h - desc_height / 2, five_star_config.desc, self.viewContent, null, cc.v2(0, 0.5));
 
        var _loop = function _loop(_i) {
          var v = five_star_config.items[_i];
          Utils.delayRun(self.list_panel, _i / 60, function () {
            var bid = v[0];
            var num = v[1];
            var item_node = ItemsPool.getInstance().getItem("backpack_item");
            item_node.show();
            item_node.setParent(self.viewContent);
            item_node.setScale(0.9);
            item_node.setData({
              bid: bid,
              num: num
            });
            var index = _i + 1;
            var row_index = index % row;
 
            if (row_index == 0) {
              row_index = row;
            }
 
            var col_index = Math.ceil(index / row);
            var pos_x = start_x + (row_index - 1) * (119 * scale + space_x) + 60 * 0.9;
            var pos_y = max_height - desc_height - (col_index - 1) * (119 * scale + space_y) - 60 * 0.9;
            item_node.setPosition(pos_x, pos_y);
            self.backpackItem.push(item_node);
          });
        };
 
        for (var _i = 0; _i < five_star_config.items.length; ++_i) {
          _loop(_i);
        } // -- 4星
 
 
        var start_y = max_height - desc_height - Math.ceil(five_star_config.items.length / row) * (119 * scale + space_y) + space_y - offset_y;
        Utils.createLabel(22, new cc.Color(234, 181, 80, 255), null, start_x, start_y - desc_height / 2, four_star_config.desc, self.viewContent, null, cc.v2(0, 0.5));
 
        var _loop2 = function _loop2(_i2) {
          var v = four_star_config.items[_i2];
          Utils.delayRun(self.list_panel, _i2 / 60, function () {
            var bid = v[0];
            var num = v[1];
            var item_node = ItemsPool.getInstance().getItem("backpack_item");
            item_node.show();
            item_node.setParent(self.viewContent);
            item_node.setScale(0.9);
            item_node.setData({
              bid: bid,
              num: num
            });
            var index = _i2 + 1;
            var row_index = index % row;
 
            if (row_index == 0) {
              row_index = row;
            }
 
            var col_index = Math.ceil(index / row);
            var pos_x = start_x + (row_index - 1) * (119 * scale + space_x) + 60 * 0.9;
            var pos_y = start_y - desc_height - (col_index - 1) * (119 * scale + space_y) - 60 * 0.9;
            item_node.setPosition(pos_x, pos_y);
            self.backpackItem.push(item_node);
          });
        };
 
        for (var _i2 = 0; _i2 < four_star_config.items.length; ++_i2) {
          _loop2(_i2);
        }
      })();
    }
  },
  _onClickBtnClose: function _onClickBtnClose() {
    Utils.playButtonSound(2);
    this.ctrl.openSeerpalacePreviewWindow(false);
  }
});
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxzZWVycGFsYWNlXFx2aWV3XFxzZWVycGFsYWNlX3ByZXZpZXdfd2luZG93LmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIlNlZXJwYWxhY2VDb25zdCIsIlNlZXJwYWxhY2VDb250cm9sbGVyIiwiU2VlcnBhbGFjZVByZXZpZXdXaW5kb3ciLCJjYyIsIkNsYXNzIiwiQmFzZVZpZXciLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJ2aWV3VGFnIiwiU0NFTkVfVEFHIiwidWkiLCJ3aW5fdHlwZSIsIldpblR5cGUiLCJGdWxsIiwiaXNfZnVsbF9zY3JlZW4iLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJpbml0Q29uZmlnIiwib3BlbkNhbGxCYWNrIiwic2VsZiIsImJhY2tncm91bmQiLCJyb290X3duZCIsImdldENoaWxkQnlOYW1lIiwiY29udGFpbmVyIiwid2luX3RpdGxlIiwibGlzdF9wYW5lbCIsInZpZXdDb250ZW50Iiwic2Vla0NoaWxkIiwicmVnaXN0ZXJFdmVudCIsIm9uIiwiX29uQ2xpY2tCdG5DbG9zZSIsIm9wZW5Sb290V25kIiwiaW5kZXgiLCJncm91cF9pZCIsIkluZGV4X1RvX0dyb3VwSWQiLCJzZXREYXRhIiwiY2xvc2VDYWxsQmFjayIsInN0b3BBbGxBY3Rpb25zIiwiaSIsImJhY2twYWNrSXRlbSIsImxlbmd0aCIsImRlbGV0ZU1lIiwib3BlblNlZXJwYWxhY2VQcmV2aWV3V2luZG93IiwiYXdhcmRfY29uZmlnIiwiQ29uZmlnIiwicmVjcnVpdF9oaWdoX2RhdGEiLCJkYXRhX3NlZXJwYWxhY2VfYXdhcmQiLCJmaXZlX3N0YXJfY29uZmlnIiwiZm91cl9zdGFyX2NvbmZpZyIsInNjYWxlIiwiZGVzY19oZWlnaHQiLCJyb3ciLCJzdGFydF94Iiwic3BhY2VfeCIsInNwYWNlX3kiLCJvZmZzZXRfeSIsImNvbnRlbnRfaCIsInYiLCJkZXNjIiwiaXRlbV9udW0iLCJpdGVtcyIsIml0ZW1fY29sIiwiTWF0aCIsImNlaWwiLCJ5IiwiaGVpZ2h0IiwibWF4X2hlaWdodCIsIlV0aWxzIiwiY3JlYXRlTGFiZWwiLCJDb2xvciIsInYyIiwiZGVsYXlSdW4iLCJiaWQiLCJudW0iLCJpdGVtX25vZGUiLCJJdGVtc1Bvb2wiLCJnZXRJdGVtIiwic2hvdyIsInNldFBhcmVudCIsInNldFNjYWxlIiwicm93X2luZGV4IiwiY29sX2luZGV4IiwicG9zX3giLCJwb3NfeSIsInNldFBvc2l0aW9uIiwicHVzaCIsInN0YXJ0X3kiLCJwbGF5QnV0dG9uU291bmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFDQSxJQUFJRSxvQkFBb0IsR0FBR0YsT0FBTyxDQUFDLHVCQUFELENBQWxDOztBQUNBLElBQUlHLHVCQUF1QixHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUNuQyxhQUFTQyxRQUQwQjtBQUVuQ0MsRUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsU0FBS0MsVUFBTCxHQUFrQlQsUUFBUSxDQUFDVSxhQUFULENBQXVCLFlBQXZCLEVBQXFDLDJCQUFyQyxDQUFsQjtBQUNBLFNBQUtDLE9BQUwsR0FBZUMsU0FBUyxDQUFDQyxFQUF6QixDQUZjLENBRThCOztBQUM1QyxTQUFLQyxRQUFMLEdBQWdCQyxPQUFPLENBQUNDLElBQXhCLENBSGMsQ0FHOEI7O0FBQzVDLFNBQUtDLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxTQUFLQyxJQUFMLEdBQVlmLG9CQUFvQixDQUFDZ0IsV0FBckIsRUFBWjtBQUNILEdBUmtDO0FBVW5DO0FBQ0FDLEVBQUFBLFVBQVUsRUFBQyxzQkFBVSxDQUVwQixDQWJrQztBQWVuQztBQUNBQyxFQUFBQSxZQUFZLEVBQUMsd0JBQVU7QUFDbkIsUUFBSUMsSUFBSSxHQUFHLElBQVg7QUFDQUEsSUFBQUEsSUFBSSxDQUFDQyxVQUFMLEdBQWtCLEtBQUtDLFFBQUwsQ0FBY0MsY0FBZCxDQUE2QixZQUE3QixDQUFsQjs7QUFDQSxRQUFJSCxJQUFJLENBQUNDLFVBQVQsRUFBcUIsQ0FDakI7QUFDSDs7QUFFRCxRQUFJRyxTQUFTLEdBQUdKLElBQUksQ0FBQ0UsUUFBTCxDQUFjQyxjQUFkLENBQTZCLFdBQTdCLENBQWhCO0FBQ0FILElBQUFBLElBQUksQ0FBQ0ksU0FBTCxHQUFpQkEsU0FBakI7QUFFQSxRQUFJQyxTQUFTLEdBQUdELFNBQVMsQ0FBQ0QsY0FBVixDQUF5QixXQUF6QixDQUFoQixDQVZtQixDQVduQjs7QUFDQUgsSUFBQUEsSUFBSSxDQUFDTSxVQUFMLEdBQWtCRixTQUFTLENBQUNELGNBQVYsQ0FBeUIsWUFBekIsQ0FBbEI7QUFDQUgsSUFBQUEsSUFBSSxDQUFDTyxXQUFMLEdBQW1CLEtBQUtDLFNBQUwsQ0FBZSxTQUFmLENBQW5CLENBYm1CLENBY25CO0FBRUgsR0FoQ2tDO0FBa0NuQztBQUNBQyxFQUFBQSxhQUFhLEVBQUMseUJBQVU7QUFDcEIsU0FBS1IsVUFBTCxDQUFnQlMsRUFBaEIsQ0FBbUIsVUFBbkIsRUFBOEIsS0FBS0MsZ0JBQW5DLEVBQW9ELElBQXBEO0FBQ0gsR0FyQ2tDO0FBdUNuQztBQUNBQyxFQUFBQSxXQUFXLEVBQUMscUJBQVNDLEtBQVQsRUFBZTtBQUN2QixRQUFJYixJQUFJLEdBQUcsSUFBWDtBQUNBQSxJQUFBQSxJQUFJLENBQUNjLFFBQUwsR0FBZ0JsQyxlQUFlLENBQUNtQyxnQkFBaEIsQ0FBaUNGLEtBQWpDLENBQWhCOztBQUNBLFFBQUliLElBQUksQ0FBQ2MsUUFBVCxFQUFtQjtBQUNmZCxNQUFBQSxJQUFJLENBQUNnQixPQUFMO0FBQ0g7QUFDSixHQTlDa0M7QUFnRG5DO0FBQ0FDLEVBQUFBLGFBQWEsRUFBQyx5QkFBVTtBQUNwQixTQUFLWCxVQUFMLENBQWdCWSxjQUFoQjs7QUFDQSxTQUFJLElBQUlDLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxLQUFLQyxZQUFMLENBQWtCQyxNQUFoQyxFQUF1QyxFQUFFRixDQUF6QyxFQUEyQztBQUN2QyxVQUFHLEtBQUtDLFlBQUwsQ0FBa0JELENBQWxCLENBQUgsRUFBd0I7QUFDcEIsYUFBS0MsWUFBTCxDQUFrQkQsQ0FBbEIsRUFBcUJHLFFBQXJCO0FBQ0EsYUFBS0YsWUFBTCxDQUFrQkQsQ0FBbEIsSUFBdUIsSUFBdkI7QUFDSDtBQUNKOztBQUNELFNBQUt2QixJQUFMLENBQVUyQiwyQkFBVixDQUFzQyxLQUF0QztBQUNILEdBMURrQztBQTJEbkNQLEVBQUFBLE9BM0RtQyxxQkEyRDFCO0FBQUE7O0FBQ0wsUUFBSWhCLElBQUksR0FBRyxJQUFYO0FBQ0EsUUFBSXdCLFlBQVksR0FBR0MsTUFBTSxDQUFDQyxpQkFBUCxDQUF5QkMscUJBQXpCLENBQStDM0IsSUFBSSxDQUFDYyxRQUFwRCxDQUFuQjs7QUFDQSxRQUFJVSxZQUFKLEVBQWtCO0FBQUE7QUFDZCxRQUFBLEtBQUksQ0FBQ0osWUFBTCxHQUFvQixFQUFwQjtBQUNBLFlBQUlRLGdCQUFnQixHQUFHSixZQUFZLENBQUMsQ0FBRCxDQUFuQztBQUNBLFlBQUlLLGdCQUFnQixHQUFHTCxZQUFZLENBQUMsQ0FBRCxDQUFuQztBQUVBLFlBQUlNLEtBQUssR0FBRyxHQUFaO0FBQ0EsWUFBSUMsV0FBVyxHQUFHLEVBQWxCLENBTmMsQ0FNUTs7QUFDdEIsWUFBSUMsR0FBRyxHQUFHLENBQVYsQ0FQYyxDQU9GOztBQUNaLFlBQUlDLE9BQU8sR0FBRyxFQUFkO0FBQ0EsWUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxZQUFJQyxPQUFPLEdBQUcsRUFBZDtBQUNBLFlBQUlDLFFBQVEsR0FBRyxFQUFmLENBWGMsQ0FXSTs7QUFDbEIsWUFBSUMsU0FBUyxHQUFHLENBQWhCOztBQUNBLGFBQUssSUFBSWxCLENBQVQsSUFBY0ssWUFBZCxFQUEyQjtBQUN2QixjQUFJYyxDQUFDLEdBQUdkLFlBQVksQ0FBQ0wsQ0FBRCxDQUFwQjs7QUFDQSxjQUFJbUIsQ0FBQyxDQUFDQyxJQUFGLElBQVVELENBQUMsQ0FBQ0MsSUFBRixJQUFVLEVBQXhCLEVBQTRCO0FBQ3hCRixZQUFBQSxTQUFTLEdBQUdBLFNBQVMsR0FBR04sV0FBeEI7QUFDSDs7QUFDRCxjQUFJUyxRQUFRLEdBQUdGLENBQUMsQ0FBQ0csS0FBRixDQUFRcEIsTUFBdkIsQ0FMdUIsQ0FLTzs7QUFDOUIsY0FBSXFCLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVKLFFBQVEsR0FBQ1IsR0FBbkIsQ0FBZixDQU51QixDQU1nQjs7QUFDdkNLLFVBQUFBLFNBQVMsR0FBR0EsU0FBUyxHQUFHLE1BQUlQLEtBQUosR0FBVVksUUFBdEIsR0FBaUMsQ0FBQ0EsUUFBUSxHQUFDLENBQVYsSUFBYVAsT0FBOUMsR0FBd0RDLFFBQXBFO0FBQ0g7O0FBQ0QsWUFBSVMsQ0FBQyxHQUFHLE1BQU0sQ0FBTixHQUFVUixTQUFsQjtBQUNBckMsUUFBQUEsSUFBSSxDQUFDTyxXQUFMLENBQWlCdUMsTUFBakIsR0FBMEJULFNBQTFCO0FBQ0FyQyxRQUFBQSxJQUFJLENBQUNPLFdBQUwsQ0FBaUJzQyxDQUFqQixHQUFxQkEsQ0FBckI7QUFDQSxZQUFJRSxVQUFVLEdBQUdWLFNBQWpCLENBekJjLENBMEJkOztBQUNBVyxRQUFBQSxLQUFLLENBQUNDLFdBQU4sQ0FBa0IsRUFBbEIsRUFBcUIsSUFBSWxFLEVBQUUsQ0FBQ21FLEtBQVAsQ0FBYSxHQUFiLEVBQWtCLEdBQWxCLEVBQXVCLEVBQXZCLEVBQTJCLEdBQTNCLENBQXJCLEVBQXFELElBQXJELEVBQTBEakIsT0FBMUQsRUFBa0VJLFNBQVMsR0FBQ04sV0FBVyxHQUFDLENBQXhGLEVBQTBGSCxnQkFBZ0IsQ0FBQ1csSUFBM0csRUFBZ0h2QyxJQUFJLENBQUNPLFdBQXJILEVBQWlJLElBQWpJLEVBQXNJeEIsRUFBRSxDQUFDb0UsRUFBSCxDQUFNLENBQU4sRUFBUyxHQUFULENBQXRJOztBQTNCYyxtQ0E0QkxoQyxFQTVCSztBQTZCVixjQUFJbUIsQ0FBQyxHQUFHVixnQkFBZ0IsQ0FBQ2EsS0FBakIsQ0FBdUJ0QixFQUF2QixDQUFSO0FBQ0E2QixVQUFBQSxLQUFLLENBQUNJLFFBQU4sQ0FBZXBELElBQUksQ0FBQ00sVUFBcEIsRUFBZ0NhLEVBQUMsR0FBQyxFQUFsQyxFQUFzQyxZQUFXO0FBQzdDLGdCQUFJa0MsR0FBRyxHQUFHZixDQUFDLENBQUMsQ0FBRCxDQUFYO0FBQ0EsZ0JBQUlnQixHQUFHLEdBQUdoQixDQUFDLENBQUMsQ0FBRCxDQUFYO0FBQ0EsZ0JBQUlpQixTQUFTLEdBQUdDLFNBQVMsQ0FBQzNELFdBQVYsR0FBd0I0RCxPQUF4QixDQUFnQyxlQUFoQyxDQUFoQjtBQUNBRixZQUFBQSxTQUFTLENBQUNHLElBQVY7QUFDQUgsWUFBQUEsU0FBUyxDQUFDSSxTQUFWLENBQW9CM0QsSUFBSSxDQUFDTyxXQUF6QjtBQUNBZ0QsWUFBQUEsU0FBUyxDQUFDSyxRQUFWLENBQW1CLEdBQW5CO0FBQ0FMLFlBQUFBLFNBQVMsQ0FBQ3ZDLE9BQVYsQ0FBa0I7QUFBQ3FDLGNBQUFBLEdBQUcsRUFBQ0EsR0FBTDtBQUFTQyxjQUFBQSxHQUFHLEVBQUNBO0FBQWIsYUFBbEI7QUFDQSxnQkFBSXpDLEtBQUssR0FBR00sRUFBQyxHQUFDLENBQWQ7QUFDQSxnQkFBSTBDLFNBQVMsR0FBR2hELEtBQUssR0FBQ21CLEdBQXRCOztBQUNBLGdCQUFJNkIsU0FBUyxJQUFJLENBQWpCLEVBQW9CO0FBQ2hCQSxjQUFBQSxTQUFTLEdBQUc3QixHQUFaO0FBQ0g7O0FBQ0QsZ0JBQUk4QixTQUFTLEdBQUduQixJQUFJLENBQUNDLElBQUwsQ0FBVS9CLEtBQUssR0FBQ21CLEdBQWhCLENBQWhCO0FBQ0EsZ0JBQUkrQixLQUFLLEdBQUc5QixPQUFPLEdBQUcsQ0FBQzRCLFNBQVMsR0FBQyxDQUFYLEtBQWUsTUFBSS9CLEtBQUosR0FBVUksT0FBekIsQ0FBVixHQUE4QyxLQUFHLEdBQTdEO0FBQ0EsZ0JBQUk4QixLQUFLLEdBQUdqQixVQUFVLEdBQUdoQixXQUFiLEdBQTJCLENBQUMrQixTQUFTLEdBQUMsQ0FBWCxLQUFlLE1BQUloQyxLQUFKLEdBQVVLLE9BQXpCLENBQTNCLEdBQStELEtBQUcsR0FBOUU7QUFDQW9CLFlBQUFBLFNBQVMsQ0FBQ1UsV0FBVixDQUFzQkYsS0FBdEIsRUFBNkJDLEtBQTdCO0FBQ0FoRSxZQUFBQSxJQUFJLENBQUNvQixZQUFMLENBQWtCOEMsSUFBbEIsQ0FBdUJYLFNBQXZCO0FBQ0gsV0FsQkQ7QUE5QlU7O0FBNEJkLGFBQUssSUFBSXBDLEVBQUMsR0FBQyxDQUFYLEVBQWFBLEVBQUMsR0FBQ1MsZ0JBQWdCLENBQUNhLEtBQWpCLENBQXVCcEIsTUFBdEMsRUFBNkMsRUFBRUYsRUFBL0MsRUFBaUQ7QUFBQSxnQkFBeENBLEVBQXdDO0FBcUJoRCxTQWpEYSxDQW1EZDs7O0FBQ0EsWUFBSWdELE9BQU8sR0FBR3BCLFVBQVUsR0FBR2hCLFdBQWIsR0FBNEJZLElBQUksQ0FBQ0MsSUFBTCxDQUFVaEIsZ0JBQWdCLENBQUNhLEtBQWpCLENBQXVCcEIsTUFBdkIsR0FBOEJXLEdBQXhDLENBQUQsSUFBZ0QsTUFBSUYsS0FBSixHQUFVSyxPQUExRCxDQUEzQixHQUFnR0EsT0FBaEcsR0FBMEdDLFFBQXhIO0FBQ0FZLFFBQUFBLEtBQUssQ0FBQ0MsV0FBTixDQUFrQixFQUFsQixFQUFxQixJQUFJbEUsRUFBRSxDQUFDbUUsS0FBUCxDQUFhLEdBQWIsRUFBa0IsR0FBbEIsRUFBdUIsRUFBdkIsRUFBMkIsR0FBM0IsQ0FBckIsRUFBcUQsSUFBckQsRUFBMERqQixPQUExRCxFQUFrRWtDLE9BQU8sR0FBQ3BDLFdBQVcsR0FBQyxDQUF0RixFQUF3RkYsZ0JBQWdCLENBQUNVLElBQXpHLEVBQThHdkMsSUFBSSxDQUFDTyxXQUFuSCxFQUErSCxJQUEvSCxFQUFvSXhCLEVBQUUsQ0FBQ29FLEVBQUgsQ0FBTSxDQUFOLEVBQVMsR0FBVCxDQUFwSTs7QUFyRGMscUNBc0RMaEMsR0F0REs7QUF1RFYsY0FBSW1CLENBQUMsR0FBR1QsZ0JBQWdCLENBQUNZLEtBQWpCLENBQXVCdEIsR0FBdkIsQ0FBUjtBQUNBNkIsVUFBQUEsS0FBSyxDQUFDSSxRQUFOLENBQWVwRCxJQUFJLENBQUNNLFVBQXBCLEVBQWdDYSxHQUFDLEdBQUMsRUFBbEMsRUFBc0MsWUFBYTtBQUMvQyxnQkFBSWtDLEdBQUcsR0FBR2YsQ0FBQyxDQUFDLENBQUQsQ0FBWDtBQUNBLGdCQUFJZ0IsR0FBRyxHQUFHaEIsQ0FBQyxDQUFDLENBQUQsQ0FBWDtBQUNBLGdCQUFJaUIsU0FBUyxHQUFHQyxTQUFTLENBQUMzRCxXQUFWLEdBQXdCNEQsT0FBeEIsQ0FBZ0MsZUFBaEMsQ0FBaEI7QUFDQUYsWUFBQUEsU0FBUyxDQUFDRyxJQUFWO0FBQ0FILFlBQUFBLFNBQVMsQ0FBQ0ksU0FBVixDQUFvQjNELElBQUksQ0FBQ08sV0FBekI7QUFDQWdELFlBQUFBLFNBQVMsQ0FBQ0ssUUFBVixDQUFtQixHQUFuQjtBQUNBTCxZQUFBQSxTQUFTLENBQUN2QyxPQUFWLENBQWtCO0FBQUNxQyxjQUFBQSxHQUFHLEVBQUNBLEdBQUw7QUFBU0MsY0FBQUEsR0FBRyxFQUFDQTtBQUFiLGFBQWxCO0FBQ0EsZ0JBQUl6QyxLQUFLLEdBQUdNLEdBQUMsR0FBQyxDQUFkO0FBQ0EsZ0JBQUkwQyxTQUFTLEdBQUdoRCxLQUFLLEdBQUNtQixHQUF0Qjs7QUFDQSxnQkFBSTZCLFNBQVMsSUFBSSxDQUFqQixFQUFvQjtBQUNoQkEsY0FBQUEsU0FBUyxHQUFHN0IsR0FBWjtBQUNIOztBQUNELGdCQUFJOEIsU0FBUyxHQUFHbkIsSUFBSSxDQUFDQyxJQUFMLENBQVUvQixLQUFLLEdBQUNtQixHQUFoQixDQUFoQjtBQUNBLGdCQUFJK0IsS0FBSyxHQUFHOUIsT0FBTyxHQUFHLENBQUM0QixTQUFTLEdBQUMsQ0FBWCxLQUFlLE1BQUkvQixLQUFKLEdBQVVJLE9BQXpCLENBQVYsR0FBNkMsS0FBRyxHQUE1RDtBQUNBLGdCQUFJOEIsS0FBSyxHQUFHRyxPQUFPLEdBQUdwQyxXQUFWLEdBQXdCLENBQUMrQixTQUFTLEdBQUMsQ0FBWCxLQUFlLE1BQUloQyxLQUFKLEdBQVVLLE9BQXpCLENBQXhCLEdBQTZELEtBQUcsR0FBNUU7QUFDQW9CLFlBQUFBLFNBQVMsQ0FBQ1UsV0FBVixDQUFzQkYsS0FBdEIsRUFBNkJDLEtBQTdCO0FBQ0FoRSxZQUFBQSxJQUFJLENBQUNvQixZQUFMLENBQWtCOEMsSUFBbEIsQ0FBdUJYLFNBQXZCO0FBQ0gsV0FsQkQ7QUF4RFU7O0FBc0RkLGFBQUssSUFBSXBDLEdBQUMsR0FBQyxDQUFYLEVBQWFBLEdBQUMsR0FBQ1UsZ0JBQWdCLENBQUNZLEtBQWpCLENBQXVCcEIsTUFBdEMsRUFBNkMsRUFBRUYsR0FBL0MsRUFBa0Q7QUFBQSxpQkFBekNBLEdBQXlDO0FBcUJqRDtBQTNFYTtBQTRFakI7QUFDSixHQTNJa0M7QUE0SW5DUixFQUFBQSxnQkE1SW1DLDhCQTRJZjtBQUNoQnFDLElBQUFBLEtBQUssQ0FBQ29CLGVBQU4sQ0FBc0IsQ0FBdEI7QUFDSCxTQUFLeEUsSUFBTCxDQUFVMkIsMkJBQVYsQ0FBc0MsS0FBdEM7QUFDQTtBQS9Ja0MsQ0FBVCxDQUE5QiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgLS0g5YWI55+l5q6/6aKE6KeIXG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wMy0yNSAxOTozMDozMlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBTZWVycGFsYWNlQ29uc3QgPSByZXF1aXJlKFwic2VlcnBhbGFjZV9jb25zdFwiKVxudmFyIFNlZXJwYWxhY2VDb250cm9sbGVyID0gcmVxdWlyZShcInNlZXJwYWxhY2VfY29udHJvbGxlclwiKVxudmFyIFNlZXJwYWxhY2VQcmV2aWV3V2luZG93ID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VWaWV3LFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcInNlZXJwYWxhY2VcIiwgXCJzZWVycGFsYWNlX3ByZXZpZXdfd2luZG93XCIpO1xuICAgICAgICB0aGlzLnZpZXdUYWcgPSBTQ0VORV9UQUcudWk7ICAgICAgICAgICAgICAgIC8v6K+l56qX5L2T5omA5bGedWnlsYLnuqcs5YWo5bGPdWnpnIDopoHlnKh1aeWxgizpnZ7lhajlsY91aeWcqGRpYWxvZ3Vl5bGCLOi/meS4quimgeazqOaEj1xuICAgICAgICB0aGlzLndpbl90eXBlID0gV2luVHlwZS5GdWxsOyAgICAgICAgICAgICAgIC8v5piv5ZCm5piv5YWo5bGP56qX5L2TICBXaW5UeXBlLkZ1bGwsIFdpblR5cGUuQmlnLCBXaW5UeXBlLk1pbmksIFdpblR5cGUuVGlwc1xuICAgICAgICB0aGlzLmlzX2Z1bGxfc2NyZWVuID0gZmFsc2VcbiAgICAgICAgdGhpcy5jdHJsID0gU2VlcnBhbGFjZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKTtcbiAgICB9LFxuXG4gICAgLy8g5Yid5aeL5YyW5LiA5Lqb6YWN572u5pWw5o2uLOWPr+S7peeUqOS6juWjsOaYjuS4gOS6m+WPmOmHj+S5i+exu+eahFxuICAgIGluaXRDb25maWc6ZnVuY3Rpb24oKXtcblxuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI7nmoTlm57osIMs5Y+v5Lul5Zyo6L+Z6YeM5o2V6I6355u45YWz6IqC54K55oiW6ICF57uE5Lu2XG4gICAgb3BlbkNhbGxCYWNrOmZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciBzZWxmID0gdGhpc1xuICAgICAgICBzZWxmLmJhY2tncm91bmQgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwiYmFja2dyb3VuZFwiKVxuICAgICAgICBpZiAoc2VsZi5iYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgICAvLyBzZWxmLmJhY2tncm91bmQuc2V0U2NhbGUoZGlzcGxheS5nZXRNYXhTY2FsZSgpKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IHNlbGYucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJjb250YWluZXJcIilcbiAgICAgICAgc2VsZi5jb250YWluZXIgPSBjb250YWluZXJcblxuICAgICAgICBsZXQgd2luX3RpdGxlID0gY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwid2luX3RpdGxlXCIpXG4gICAgICAgIC8vIHdpbl90aXRsZTpzZXRTdHJpbmcoVEkxOE4oXCLlpZblirHpooTop4hcIikpXG4gICAgICAgIHNlbGYubGlzdF9wYW5lbCA9IGNvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImxpc3RfcGFuZWxcIilcbiAgICAgICAgc2VsZi52aWV3Q29udGVudCA9IHRoaXMuc2Vla0NoaWxkKFwiY29udGVudFwiKVxuICAgICAgICAvLyBzZWxmLnJvb3Rfd25kLmdldENvbXBvbmVudChjYy5BbmltYXRpb24pLnBsYXkoXCJzZWVycGFsYWNlX3ByZXZpZXdfd2luZG93XCIpXG5cbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM5LqL5Lu255uR5ZCs55qE5o6l5Y+jLOS4jemcgOimgeaJi+WKqOiwg+eUqCzlpoLmnpzmmK/kvb/nlKhnY29yZS5HbG9iYWxFdmVudOebkeWQrCzlj6/ku6Xnm7TmjqXosIPnlKhhZGRHbG9iYWxFdmVudFxuICAgIHJlZ2lzdGVyRXZlbnQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kLm9uKFwidG91Y2hlbmRcIix0aGlzLl9vbkNsaWNrQnRuQ2xvc2UsdGhpcylcbiAgICB9LFxuXG4gICAgLy8g6aKE5Yi25L2T5Yqg6L295a6M5oiQ5LmL5ZCOLOa3u+WKoOWIsOWvueW6lOS4u+iKgueCueS5i+WQjueahOWbnuiwgyzkuZ/lsLHmmK/kuIDkuKrnqpfkvZPnmoTmraPlvI/lhaXlj6Ms5Y+v5Lul6K6+572u5LiA5Lqb5pWw5o2u5LqGXG4gICAgb3BlblJvb3RXbmQ6ZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICAgICAgc2VsZi5ncm91cF9pZCA9IFNlZXJwYWxhY2VDb25zdC5JbmRleF9Ub19Hcm91cElkW2luZGV4XVxuICAgICAgICBpZiAoc2VsZi5ncm91cF9pZCkge1xuICAgICAgICAgICAgc2VsZi5zZXREYXRhKClcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDlhbPpl63nqpfkvZPlm57osIMs6ZyA6KaB5Zyo6L+Z6YeM6LCD55So6K+l56qX5L2T5omA5bGeY29udHJvbGxlcueahGNsb3Nl5pa55rOV5rKh55So5LqO572u56m66K+l56qX5L2T5a6e5L6L5a+56LGhXG4gICAgY2xvc2VDYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmxpc3RfcGFuZWwuc3RvcEFsbEFjdGlvbnMoKVxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuYmFja3BhY2tJdGVtLmxlbmd0aDsrK2kpe1xuICAgICAgICAgICAgaWYodGhpcy5iYWNrcGFja0l0ZW1baV0pe1xuICAgICAgICAgICAgICAgIHRoaXMuYmFja3BhY2tJdGVtW2ldLmRlbGV0ZU1lKClcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2twYWNrSXRlbVtpXSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdHJsLm9wZW5TZWVycGFsYWNlUHJldmlld1dpbmRvdyhmYWxzZSlcbiAgICB9LFxuICAgIHNldERhdGEoKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIGxldCBhd2FyZF9jb25maWcgPSBDb25maWcucmVjcnVpdF9oaWdoX2RhdGEuZGF0YV9zZWVycGFsYWNlX2F3YXJkW3NlbGYuZ3JvdXBfaWRdXG4gICAgICAgIGlmIChhd2FyZF9jb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuYmFja3BhY2tJdGVtID0gW11cbiAgICAgICAgICAgIGxldCBmaXZlX3N0YXJfY29uZmlnID0gYXdhcmRfY29uZmlnWzVdXG4gICAgICAgICAgICBsZXQgZm91cl9zdGFyX2NvbmZpZyA9IGF3YXJkX2NvbmZpZ1s0XVxuXG4gICAgICAgICAgICBsZXQgc2NhbGUgPSAwLjlcbiAgICAgICAgICAgIGxldCBkZXNjX2hlaWdodCA9IDQwICAvLy0t5qaC546H5o+P6L+w55qE6auY5bqmXG4gICAgICAgICAgICBsZXQgcm93ID0gNCAvLy0tIDXliJfoi7Hpm4RcbiAgICAgICAgICAgIGxldCBzdGFydF94ID0gMjJcbiAgICAgICAgICAgIGxldCBzcGFjZV94ID0gMzVcbiAgICAgICAgICAgIGxldCBzcGFjZV95ID0gMjBcbiAgICAgICAgICAgIGxldCBvZmZzZXRfeSA9IDEwIC8vLS0g5Lik56eN5pif57qn5LmL6Ze055qE6Ze06ZqUXG4gICAgICAgICAgICBsZXQgY29udGVudF9oID0gMFxuICAgICAgICAgICAgZm9yIChsZXQgaSBpbiBhd2FyZF9jb25maWcpe1xuICAgICAgICAgICAgICAgIGxldCB2ID0gYXdhcmRfY29uZmlnW2ldXG4gICAgICAgICAgICAgICAgaWYgKHYuZGVzYyAmJiB2LmRlc2MgIT0gXCJcIiApe1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50X2ggPSBjb250ZW50X2ggKyBkZXNjX2hlaWdodFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaXRlbV9udW0gPSB2Lml0ZW1zLmxlbmd0aCAvLyAtLSDmlbDph49cbiAgICAgICAgICAgICAgICBsZXQgaXRlbV9jb2wgPSBNYXRoLmNlaWwoaXRlbV9udW0vcm93KSAvLy0tIOihjOaVsFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfaCA9IGNvbnRlbnRfaCArIDExOSpzY2FsZSppdGVtX2NvbCArIChpdGVtX2NvbC0xKSpzcGFjZV95ICsgb2Zmc2V0X3lcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB5ID0gNTY4IC8gMiAtIGNvbnRlbnRfaFxuICAgICAgICAgICAgc2VsZi52aWV3Q29udGVudC5oZWlnaHQgPSBjb250ZW50X2hcbiAgICAgICAgICAgIHNlbGYudmlld0NvbnRlbnQueSA9IHlcbiAgICAgICAgICAgIGxldCBtYXhfaGVpZ2h0ID0gY29udGVudF9oXG4gICAgICAgICAgICAvLy0tIDXmmJ9cbiAgICAgICAgICAgIFV0aWxzLmNyZWF0ZUxhYmVsKDIyLG5ldyBjYy5Db2xvcigyMzQsIDE4MSwgODAsIDI1NSksbnVsbCxzdGFydF94LGNvbnRlbnRfaC1kZXNjX2hlaWdodC8yLGZpdmVfc3Rhcl9jb25maWcuZGVzYyxzZWxmLnZpZXdDb250ZW50LG51bGwsY2MudjIoMCwgMC41KSlcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDtpPGZpdmVfc3Rhcl9jb25maWcuaXRlbXMubGVuZ3RoOysraSl7XG4gICAgICAgICAgICAgICAgbGV0IHYgPSBmaXZlX3N0YXJfY29uZmlnLml0ZW1zW2ldXG4gICAgICAgICAgICAgICAgVXRpbHMuZGVsYXlSdW4oc2VsZi5saXN0X3BhbmVsLCBpLzYwLCBmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJpZCA9IHZbMF1cbiAgICAgICAgICAgICAgICAgICAgbGV0IG51bSA9IHZbMV1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1fbm9kZSA9IEl0ZW1zUG9vbC5nZXRJbnN0YW5jZSgpLmdldEl0ZW0oXCJiYWNrcGFja19pdGVtXCIpXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1fbm9kZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1fbm9kZS5zZXRQYXJlbnQoc2VsZi52aWV3Q29udGVudClcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9ub2RlLnNldFNjYWxlKDAuOSlcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9ub2RlLnNldERhdGEoe2JpZDpiaWQsbnVtOm51bX0pXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGkrMVxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93X2luZGV4ID0gaW5kZXglcm93XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3dfaW5kZXggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93X2luZGV4ID0gcm93XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbF9pbmRleCA9IE1hdGguY2VpbChpbmRleC9yb3cpXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NfeCA9IHN0YXJ0X3ggKyAocm93X2luZGV4LTEpKigxMTkqc2NhbGUrc3BhY2VfeCkgKyA2MCowLjlcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc195ID0gbWF4X2hlaWdodCAtIGRlc2NfaGVpZ2h0IC0gKGNvbF9pbmRleC0xKSooMTE5KnNjYWxlK3NwYWNlX3kpIC0gNjAqMC45XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1fbm9kZS5zZXRQb3NpdGlvbihwb3NfeCwgcG9zX3kpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuYmFja3BhY2tJdGVtLnB1c2goaXRlbV9ub2RlKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIC0tIDTmmJ9cbiAgICAgICAgICAgIGxldCBzdGFydF95ID0gbWF4X2hlaWdodCAtIGRlc2NfaGVpZ2h0IC0gKE1hdGguY2VpbChmaXZlX3N0YXJfY29uZmlnLml0ZW1zLmxlbmd0aC9yb3cpKSooMTE5KnNjYWxlK3NwYWNlX3kpICsgc3BhY2VfeSAtIG9mZnNldF95XG4gICAgICAgICAgICBVdGlscy5jcmVhdGVMYWJlbCgyMixuZXcgY2MuQ29sb3IoMjM0LCAxODEsIDgwLCAyNTUpLG51bGwsc3RhcnRfeCxzdGFydF95LWRlc2NfaGVpZ2h0LzIsZm91cl9zdGFyX2NvbmZpZy5kZXNjLHNlbGYudmlld0NvbnRlbnQsbnVsbCxjYy52MigwLCAwLjUpKVxuICAgICAgICAgICAgZm9yIChsZXQgaT0wO2k8Zm91cl9zdGFyX2NvbmZpZy5pdGVtcy5sZW5ndGg7KytpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHYgPSBmb3VyX3N0YXJfY29uZmlnLml0ZW1zW2ldXG4gICAgICAgICAgICAgICAgVXRpbHMuZGVsYXlSdW4oc2VsZi5saXN0X3BhbmVsLCBpLzYwLCBmdW5jdGlvbiAoICApe1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmlkID0gdlswXVxuICAgICAgICAgICAgICAgICAgICBsZXQgbnVtID0gdlsxXVxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbV9ub2RlID0gSXRlbXNQb29sLmdldEluc3RhbmNlKCkuZ2V0SXRlbShcImJhY2twYWNrX2l0ZW1cIilcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9ub2RlLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9ub2RlLnNldFBhcmVudChzZWxmLnZpZXdDb250ZW50KVxuICAgICAgICAgICAgICAgICAgICBpdGVtX25vZGUuc2V0U2NhbGUoMC45KVxuICAgICAgICAgICAgICAgICAgICBpdGVtX25vZGUuc2V0RGF0YSh7YmlkOmJpZCxudW06bnVtfSlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaSsxXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3dfaW5kZXggPSBpbmRleCVyb3dcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd19pbmRleCA9PSAwICl7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dfaW5kZXggPSByb3dcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sX2luZGV4ID0gTWF0aC5jZWlsKGluZGV4L3JvdylcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc194ID0gc3RhcnRfeCArIChyb3dfaW5kZXgtMSkqKDExOSpzY2FsZStzcGFjZV94KSsgNjAqMC45XG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NfeSA9IHN0YXJ0X3kgLSBkZXNjX2hlaWdodCAtIChjb2xfaW5kZXgtMSkqKDExOSpzY2FsZStzcGFjZV95KSAtICA2MCowLjlcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9ub2RlLnNldFBvc2l0aW9uKHBvc194LCBwb3NfeSlcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWNrcGFja0l0ZW0ucHVzaChpdGVtX25vZGUpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgX29uQ2xpY2tCdG5DbG9zZSggICl7XG4gICAgICAgIFV0aWxzLnBsYXlCdXR0b25Tb3VuZCgyKVxuXHQgICAgdGhpcy5jdHJsLm9wZW5TZWVycGFsYWNlUHJldmlld1dpbmRvdyhmYWxzZSlcbiAgICB9XG59KSJdfQ==