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
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/hallows/view/hallows_activity_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, '3e454zAnlFJ8r0ZWN/tMWTO', 'hallows_activity_window');
// Scripts/mod/hallows/view/hallows_activity_window.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//     圣器激活面板
// <br/>Create: 2019-02-20 14:13:05
// --------------------------------------------------------------------
var PathTool = require("pathtool");
 
var HallowsConst = require("hallows_const");
 
var Hallows_activityWindow = cc.Class({
  "extends": BaseView,
  ctor: function ctor() {
    this.prefabPath = PathTool.getPrefabPath("hallows", "hallows_activity_window");
    this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
 
    this.win_type = WinType.Big; //是否是全屏窗体  WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
 
    this.ctrl = arguments[0];
    this.model = this.ctrl.getModel();
  },
  // 初始化一些配置数据,可以用于声明一些变量之类的
  initConfig: function initConfig() {},
  // 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件
  openCallBack: function openCallBack() {
    this.background = this.root_wnd.getChildByName("background");
    this.background.scale = FIT_SCALE;
    this.main_container = this.root_wnd.getChildByName("main_container");
    this.background_img = this.main_container.getChildByName("background").getComponent(cc.Sprite);
    this.loadRes(PathTool.getUIIconPath("levupgrade", "levupgrade_1"), function (resObject) {
      this.background_img.spriteFrame = resObject;
    }.bind(this));
    this.Image_1 = this.main_container.getChildByName("Image_1").getComponent(cc.Sprite);
    this.loadRes(PathTool.getUIIconPath("levupgrade", "levupgrade_2"), function (resObject) {
      this.Image_1.spriteFrame = resObject;
    }.bind(this));
    this.hallows_eff_node = this.seekChild("hallows_eff_node");
    this.hallows_eff_sk = this.seekChild("hallows_eff_node", sp.Skeleton);
    this.title_eff_node = this.seekChild("title_eff_node");
    this.title_eff_sk = this.seekChild("title_eff_node", sp.Skeleton);
    this.hallows_name = this.main_container.getChildByName("hallows_name").getComponent(cc.Label);
    this.desc = this.main_container.getChildByName("desc").getComponent(cc.Label);
    this.desc.string = Utils.TI18N("全体上阵英雄");
    this.close_btn = this.main_container.getChildByName("close_btn");
    var item_1 = this.root_wnd.getChildByName("item_1");
    this.item_bg = item_1.getComponent(cc.Sprite);
    this.loadRes(PathTool.getCommonIcomPath("common_90044"), function (resObject) {
      this.item_bg.spriteFrame = resObject;
    }.bind(this));
    this.attr_1 = Utils.createRichLabel(24, new cc.Color(0xff, 0xe8, 0xb7, 0xff), cc.v2(0, 0.5), cc.v2(160, 20), 30);
    this.attr_1.horizontalAlign = cc.macro.TextAlignment.LEFT;
    item_1.addChild(this.attr_1.node);
    this.attr_2 = Utils.createRichLabel(24, new cc.Color(0xff, 0xe8, 0xb7, 0xff), cc.v2(0, 0.5), cc.v2(430, 20), 30);
    this.attr_2.horizontalAlign = cc.macro.TextAlignment.LEFT;
    item_1.addChild(this.attr_2.node);
  },
  // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
  registerEvent: function registerEvent() {
    this.close_btn.on(cc.Node.EventType.TOUCH_END, function () {
      Utils.playButtonSound(ButtonSound.Close);
      this.ctrl.openHallowsActivityWindow(false);
    }, this);
  },
  // 预制体加载完成之后,添加到对应主节点之后的回调,也就是一个窗体的正式入口,可以设置一些数据了
  openRootWnd: function openRootWnd(data) {
    this.data = data;
    this.handleEffect(true);
 
    if (data) {
      this.step_config = gdata("hallows_data", "data_info", Utils.getNorKey(data.id, data.step));
 
      if (this.step_config) {
        this.hallows_name.string = this.step_config.name;
        var attr_list = this.step_config.attr;
 
        for (var i = 1; i < 3; i++) {
          this["attr_" + i].string = "";
        }
 
        if (attr_list && Utils.next(attr_list)) {
          for (var j in attr_list) {
            if (j > 2) break;
            var attr_key = attr_list[j][0];
            var attr_val = attr_list[j][1];
            var attr_name = Config.attr_data.data_key_to_name[attr_key];
 
            if (attr_name) {
              var str = cc.js.formatStr("%s<color=#ffffff>    +%s</c>", attr_name, attr_val);
              this["attr_" + (parseInt(j) + 1)].string = str;
            }
          }
        }
 
        this.updateHallowsBaseInfo();
      }
    }
  },
  updateHallowsBaseInfo: function updateHallowsBaseInfo() {
    if (this.step_config == null) return;
    var anima_path = PathTool.getSpinePath(this.step_config.effect, "action");
    this.loadRes(anima_path, function (ske_data) {
      this.hallows_eff_sk.skeletonData = ske_data;
      this.hallows_eff_sk.setAnimation(0, PlayerAction.action_2, true);
    }.bind(this));
  },
  handleEffect: function handleEffect(status) {
    if (!status) {
      if (this.title_eff_sk) {
        this.title_eff_sk.setToSetupPose();
        this.title_eff_sk.clearTracks();
      }
    } else {
      var effect_id = 549;
      var action = PlayerAction.action_1;
 
      if (this.open_type == HallowsConst.Activity_Type.Magic) {
        action = PlayerAction.action_2;
      }
 
      var anima_path = PathTool.getSpinePath(PathTool.getEffectRes(effect_id), "action");
      this.loadRes(anima_path, function (ske_data) {
        this.title_eff_sk.skeletonData = ske_data;
        this.title_eff_sk.setAnimation(0, action, false);
      }.bind(this));
    }
  },
  // 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
  closeCallBack: function closeCallBack() {
    if (this.hallows_eff_sk) {
      this.hallows_eff_sk.setToSetupPose();
      this.hallows_eff_sk.clearTracks();
    }
 
    this.handleEffect(false);
    this.ctrl.openHallowsActivityWindow(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxoYWxsb3dzXFx2aWV3XFxoYWxsb3dzX2FjdGl2aXR5X3dpbmRvdy5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJIYWxsb3dzQ29uc3QiLCJIYWxsb3dzX2FjdGl2aXR5V2luZG93IiwiY2MiLCJDbGFzcyIsIkJhc2VWaWV3IiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwidmlld1RhZyIsIlNDRU5FX1RBRyIsImRpYWxvZ3VlIiwid2luX3R5cGUiLCJXaW5UeXBlIiwiQmlnIiwiY3RybCIsImFyZ3VtZW50cyIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJpbml0Q29uZmlnIiwib3BlbkNhbGxCYWNrIiwiYmFja2dyb3VuZCIsInJvb3Rfd25kIiwiZ2V0Q2hpbGRCeU5hbWUiLCJzY2FsZSIsIkZJVF9TQ0FMRSIsIm1haW5fY29udGFpbmVyIiwiYmFja2dyb3VuZF9pbWciLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJsb2FkUmVzIiwiZ2V0VUlJY29uUGF0aCIsInJlc09iamVjdCIsInNwcml0ZUZyYW1lIiwiYmluZCIsIkltYWdlXzEiLCJoYWxsb3dzX2VmZl9ub2RlIiwic2Vla0NoaWxkIiwiaGFsbG93c19lZmZfc2siLCJzcCIsIlNrZWxldG9uIiwidGl0bGVfZWZmX25vZGUiLCJ0aXRsZV9lZmZfc2siLCJoYWxsb3dzX25hbWUiLCJMYWJlbCIsImRlc2MiLCJzdHJpbmciLCJVdGlscyIsIlRJMThOIiwiY2xvc2VfYnRuIiwiaXRlbV8xIiwiaXRlbV9iZyIsImdldENvbW1vbkljb21QYXRoIiwiYXR0cl8xIiwiY3JlYXRlUmljaExhYmVsIiwiQ29sb3IiLCJ2MiIsImhvcml6b250YWxBbGlnbiIsIm1hY3JvIiwiVGV4dEFsaWdubWVudCIsIkxFRlQiLCJhZGRDaGlsZCIsIm5vZGUiLCJhdHRyXzIiLCJyZWdpc3RlckV2ZW50Iiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfRU5EIiwicGxheUJ1dHRvblNvdW5kIiwiQnV0dG9uU291bmQiLCJDbG9zZSIsIm9wZW5IYWxsb3dzQWN0aXZpdHlXaW5kb3ciLCJvcGVuUm9vdFduZCIsImRhdGEiLCJoYW5kbGVFZmZlY3QiLCJzdGVwX2NvbmZpZyIsImdkYXRhIiwiZ2V0Tm9yS2V5IiwiaWQiLCJzdGVwIiwibmFtZSIsImF0dHJfbGlzdCIsImF0dHIiLCJpIiwibmV4dCIsImoiLCJhdHRyX2tleSIsImF0dHJfdmFsIiwiYXR0cl9uYW1lIiwiQ29uZmlnIiwiYXR0cl9kYXRhIiwiZGF0YV9rZXlfdG9fbmFtZSIsInN0ciIsImpzIiwiZm9ybWF0U3RyIiwicGFyc2VJbnQiLCJ1cGRhdGVIYWxsb3dzQmFzZUluZm8iLCJhbmltYV9wYXRoIiwiZ2V0U3BpbmVQYXRoIiwiZWZmZWN0Iiwic2tlX2RhdGEiLCJza2VsZXRvbkRhdGEiLCJzZXRBbmltYXRpb24iLCJQbGF5ZXJBY3Rpb24iLCJhY3Rpb25fMiIsInN0YXR1cyIsInNldFRvU2V0dXBQb3NlIiwiY2xlYXJUcmFja3MiLCJlZmZlY3RfaWQiLCJhY3Rpb24iLCJhY3Rpb25fMSIsIm9wZW5fdHlwZSIsIkFjdGl2aXR5X1R5cGUiLCJNYWdpYyIsImdldEVmZmVjdFJlcyIsImNsb3NlQ2FsbEJhY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxZQUFZLEdBQUdELE9BQU8sQ0FBQyxlQUFELENBQTFCOztBQUdBLElBQUlFLHNCQUFzQixHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUNsQyxhQUFTQyxRQUR5QjtBQUVsQ0MsRUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsU0FBS0MsVUFBTCxHQUFrQlIsUUFBUSxDQUFDUyxhQUFULENBQXVCLFNBQXZCLEVBQWtDLHlCQUFsQyxDQUFsQjtBQUNBLFNBQUtDLE9BQUwsR0FB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LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAg5Zyj5Zmo5r+A5rS76Z2i5p2/XG4vLyA8YnIvPkNyZWF0ZTogMjAxOS0wMi0yMCAxNDoxMzowNVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcbnZhciBIYWxsb3dzQ29uc3QgPSByZXF1aXJlKFwiaGFsbG93c19jb25zdFwiKTtcblxuXG52YXIgSGFsbG93c19hY3Rpdml0eVdpbmRvdyA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlVmlldyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucHJlZmFiUGF0aCA9IFBhdGhUb29sLmdldFByZWZhYlBhdGgoXCJoYWxsb3dzXCIsIFwiaGFsbG93c19hY3Rpdml0eV93aW5kb3dcIik7XG4gICAgICAgIHRoaXMudmlld1RhZyA9IFNDRU5FX1RBRy5kaWFsb2d1ZTsgICAgICAgICAgICAgICAgLy/or6XnqpfkvZPmiYDlsZ51aeWxgue6pyzlhajlsY91aemcgOimgeWcqHVp5bGCLOmdnuWFqOWxj3Vp5ZyoZGlhbG9ndWXlsYIs6L+Z5Liq6KaB5rOo5oSPXG4gICAgICAgIHRoaXMud2luX3R5cGUgPSBXaW5UeXBlLkJpZzsgICAgICAgICAgICAgICAvL+aYr+WQpuaYr+WFqOWxj+eql+S9kyAgV2luVHlwZS5GdWxsLCBXaW5UeXBlLkJpZywgV2luVHlwZS5NaW5pLCBXaW5UeXBlLlRpcHNcblxuICAgICAgICB0aGlzLmN0cmwgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmN0cmwuZ2V0TW9kZWwoKTtcbiAgICB9LFxuXG4gICAgLy8g5Yid5aeL5YyW5LiA5Lqb6YWN572u5pWw5o2uLOWPr+S7peeUqOS6juWjsOaYjuS4gOS6m+WPmOmHj+S5i+exu+eahFxuICAgIGluaXRDb25maWc6ZnVuY3Rpb24oKXtcblxuICAgIH0sXG5cbiAgICAvLyDpooTliLbkvZPliqDovb3lrozmiJDkuYvlkI7nmoTlm57osIMs5Y+v5Lul5Zyo6L+Z6YeM5o2V6I6355u45YWz6IqC54K55oiW6ICF57uE5Lu2XG4gICAgb3BlbkNhbGxCYWNrOmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZCA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrZ3JvdW5kXCIpO1xuICAgICAgICB0aGlzLmJhY2tncm91bmQuc2NhbGUgPSBGSVRfU0NBTEU7XG4gICAgICAgIHRoaXMubWFpbl9jb250YWluZXIgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwibWFpbl9jb250YWluZXJcIik7XG5cbiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kX2ltZyA9IHRoaXMubWFpbl9jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrZ3JvdW5kXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0VUlJY29uUGF0aChcImxldnVwZ3JhZGVcIixcImxldnVwZ3JhZGVfMVwiKSwgKGZ1bmN0aW9uKHJlc09iamVjdCl7XG4gICAgICAgICAgICB0aGlzLmJhY2tncm91bmRfaW1nLnNwcml0ZUZyYW1lID0gcmVzT2JqZWN0O1xuICAgICAgICB9KS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLkltYWdlXzEgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiSW1hZ2VfMVwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcbiAgICAgICAgdGhpcy5sb2FkUmVzKFBhdGhUb29sLmdldFVJSWNvblBhdGgoXCJsZXZ1cGdyYWRlXCIsXCJsZXZ1cGdyYWRlXzJcIiksIChmdW5jdGlvbihyZXNPYmplY3Qpe1xuICAgICAgICAgICAgdGhpcy5JbWFnZV8xLnNwcml0ZUZyYW1lID0gcmVzT2JqZWN0O1xuICAgICAgICB9KS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLmhhbGxvd3NfZWZmX25vZGUgPSB0aGlzLnNlZWtDaGlsZChcImhhbGxvd3NfZWZmX25vZGVcIik7XG4gICAgICAgIHRoaXMuaGFsbG93c19lZmZfc2sgICAgPSB0aGlzLnNlZWtDaGlsZChcImhhbGxvd3NfZWZmX25vZGVcIiwgc3AuU2tlbGV0b24pO1xuXG4gICAgICAgIHRoaXMudGl0bGVfZWZmX25vZGUgPSB0aGlzLnNlZWtDaGlsZChcInRpdGxlX2VmZl9ub2RlXCIpO1xuICAgICAgICB0aGlzLnRpdGxlX2VmZl9zayAgICA9IHRoaXMuc2Vla0NoaWxkKFwidGl0bGVfZWZmX25vZGVcIiwgc3AuU2tlbGV0b24pO1xuXG4gICAgICAgIHRoaXMuaGFsbG93c19uYW1lID0gdGhpcy5tYWluX2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImhhbGxvd3NfbmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICB0aGlzLmRlc2MgPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiZGVzY1wiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuICAgICAgICB0aGlzLmRlc2Muc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLlhajkvZPkuIrpmLXoi7Hpm4RcIik7XG5cbiAgICAgICAgdGhpcy5jbG9zZV9idG4gPSB0aGlzLm1haW5fY29udGFpbmVyLmdldENoaWxkQnlOYW1lKFwiY2xvc2VfYnRuXCIpO1xuXG4gICAgICAgIHZhciBpdGVtXzEgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwiaXRlbV8xXCIpO1xuICAgICAgICB0aGlzLml0ZW1fYmcgPSBpdGVtXzEuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XG4gICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRDb21tb25JY29tUGF0aChcImNvbW1vbl85MDA0NFwiKSwgKGZ1bmN0aW9uKHJlc09iamVjdCl7XG4gICAgICAgICAgICB0aGlzLml0ZW1fYmcuc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgIH0pLmJpbmQodGhpcykpO1xuXG4gICAgICAgIHRoaXMuYXR0cl8xID0gVXRpbHMuY3JlYXRlUmljaExhYmVsKDI0LCBuZXcgY2MuQ29sb3IoMHhmZiwweGU4LDB4YjcsIDB4ZmYpLCBjYy52MigwLCAwLjUpLCBjYy52MigxNjAsIDIwKSwzMCk7XG4gICAgICAgIHRoaXMuYXR0cl8xLmhvcml6b250YWxBbGlnbiA9IGNjLm1hY3JvLlRleHRBbGlnbm1lbnQuTEVGVDtcbiAgICAgICAgaXRlbV8xLmFkZENoaWxkKHRoaXMuYXR0cl8xLm5vZGUpO1xuICAgICAgICB0aGlzLmF0dHJfMiA9IFV0aWxzLmNyZWF0ZVJpY2hMYWJlbCgyNCwgbmV3IGNjLkNvbG9yKDB4ZmYsMHhlOCwweGI3LCAweGZmKSwgY2MudjIoMCwgMC41KSwgY2MudjIoNDMwLCAyMCksMzApO1xuICAgICAgICB0aGlzLmF0dHJfMi5ob3Jpem9udGFsQWxpZ24gPSBjYy5tYWNyby5UZXh0QWxpZ25tZW50LkxFRlQ7XG4gICAgICAgIGl0ZW1fMS5hZGRDaGlsZCh0aGlzLmF0dHJfMi5ub2RlKTtcbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM5LqL5Lu255uR5ZCs55qE5o6l5Y+jLOS4jemcgOimgeaJi+WKqOiwg+eUqCzlpoLmnpzmmK/kvb/nlKhnY29yZS5HbG9iYWxFdmVudOebkeWQrCzlj6/ku6Xnm7TmjqXosIPnlKhhZGRHbG9iYWxFdmVudFxuICAgIHJlZ2lzdGVyRXZlbnQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgdGhpcy5jbG9zZV9idG4ub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBVdGlscy5wbGF5QnV0dG9uU291bmQoQnV0dG9uU291bmQuQ2xvc2UpO1xuICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5IYWxsb3dzQWN0aXZpdHlXaW5kb3coZmFsc2UpO1xuICAgICAgICB9LCB0aGlzKVxuXG4gICAgfSxcblxuICAgIC8vIOmihOWItuS9k+WKoOi9veWujOaIkOS5i+WQjizmt7vliqDliLDlr7nlupTkuLvoioLngrnkuYvlkI7nmoTlm57osIMs5Lmf5bCx5piv5LiA5Liq56qX5L2T55qE5q2j5byP5YWl5Y+jLOWPr+S7peiuvue9ruS4gOS6m+aVsOaNruS6hlxuICAgIG9wZW5Sb290V25kOmZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmhhbmRsZUVmZmVjdCh0cnVlKTtcbiAgICAgICAgaWYoZGF0YSl7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuc3RlcF9jb25maWcgPSBnZGF0YShcImhhbGxvd3NfZGF0YVwiLFwiZGF0YV9pbmZvXCIsVXRpbHMuZ2V0Tm9yS2V5KGRhdGEuaWQsIGRhdGEuc3RlcCkpO1xuICAgICAgICAgICAgaWYodGhpcy5zdGVwX2NvbmZpZyl7XG4gICAgICAgICAgICAgICAgdGhpcy5oYWxsb3dzX25hbWUuc3RyaW5nID0gdGhpcy5zdGVwX2NvbmZpZy5uYW1lO1xuICAgICAgICAgICAgICAgIHZhciBhdHRyX2xpc3QgPSB0aGlzLnN0ZXBfY29uZmlnLmF0dHI7XG4gICAgICAgICAgICAgICAgZm9yKHZhciBpID0gMTtpPDM7aSsrKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tcImF0dHJfXCIraV0uc3RyaW5nID0gXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYoYXR0cl9saXN0ICYmIFV0aWxzLm5leHQoYXR0cl9saXN0KSl7XG4gICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaiBpbiBhdHRyX2xpc3Qpe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaj4yKWJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJfa2V5ID0gYXR0cl9saXN0W2pdWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJfdmFsID0gYXR0cl9saXN0W2pdWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJfbmFtZSA9IENvbmZpZy5hdHRyX2RhdGEuZGF0YV9rZXlfdG9fbmFtZVthdHRyX2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihhdHRyX25hbWUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjYy5qcy5mb3JtYXRTdHIoXCIlczxjb2xvcj0jZmZmZmZmPiAgICArJXM8L2M+XCIsIGF0dHJfbmFtZSwgYXR0cl92YWwpIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbXCJhdHRyX1wiKyhwYXJzZUludChqKSsxKV0uc3RyaW5nID0gc3RyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSGFsbG93c0Jhc2VJbmZvKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB1cGRhdGVIYWxsb3dzQmFzZUluZm86ZnVuY3Rpb24oKXtcbiAgICAgICAgaWYodGhpcy5zdGVwX2NvbmZpZyA9PSBudWxsKXJldHVybjtcbiAgICAgICAgdmFyIGFuaW1hX3BhdGggPSBQYXRoVG9vbC5nZXRTcGluZVBhdGgodGhpcy5zdGVwX2NvbmZpZy5lZmZlY3QsIFwiYWN0aW9uXCIpO1xuICAgICAgICB0aGlzLmxvYWRSZXMoYW5pbWFfcGF0aCwgZnVuY3Rpb24oc2tlX2RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuaGFsbG93c19lZmZfc2suc2tlbGV0b25EYXRhID0gc2tlX2RhdGE7XG4gICAgICAgICAgICB0aGlzLmhhbGxvd3NfZWZmX3NrLnNldEFuaW1hdGlvbigwLCBQbGF5ZXJBY3Rpb24uYWN0aW9uXzIsIHRydWUpO1xuICAgICAgICB9LmJpbmQodGhpcykpOyBcbiAgICB9LFxuXG4gICAgaGFuZGxlRWZmZWN0OmZ1bmN0aW9uKHN0YXR1cyl7XG4gICAgICAgIGlmKCFzdGF0dXMpe1xuICAgICAgICAgICAgaWYodGhpcy50aXRsZV9lZmZfc2spe1xuICAgICAgICAgICAgICAgIHRoaXMudGl0bGVfZWZmX3NrLnNldFRvU2V0dXBQb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50aXRsZV9lZmZfc2suY2xlYXJUcmFja3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB2YXIgZWZmZWN0X2lkID0gNTQ5O1xuICAgICAgICAgICAgdmFyIGFjdGlvbiA9IFBsYXllckFjdGlvbi5hY3Rpb25fMTtcbiAgICAgICAgICAgIGlmKHRoaXMub3Blbl90eXBlID09IEhhbGxvd3NDb25zdC5BY3Rpdml0eV9UeXBlLk1hZ2ljKXtcbiAgICAgICAgICAgICAgICBhY3Rpb24gPSBQbGF5ZXJBY3Rpb24uYWN0aW9uXzI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYW5pbWFfcGF0aCA9IFBhdGhUb29sLmdldFNwaW5lUGF0aChQYXRoVG9vbC5nZXRFZmZlY3RSZXMoZWZmZWN0X2lkKSwgXCJhY3Rpb25cIik7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUmVzKGFuaW1hX3BhdGgsIGZ1bmN0aW9uKHNrZV9kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGl0bGVfZWZmX3NrLnNrZWxldG9uRGF0YSA9IHNrZV9kYXRhO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpdGxlX2VmZl9zay5zZXRBbmltYXRpb24oMCxhY3Rpb24sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOyBcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDlhbPpl63nqpfkvZPlm57osIMs6ZyA6KaB5Zyo6L+Z6YeM6LCD55So6K+l56qX5L2T5omA5bGeY29udHJvbGxlcueahGNsb3Nl5pa55rOV5rKh55So5LqO572u56m66K+l56qX5L2T5a6e5L6L5a+56LGhXG4gICAgY2xvc2VDYWxsQmFjazpmdW5jdGlvbigpe1xuICAgICAgICBpZih0aGlzLmhhbGxvd3NfZWZmX3NrKXtcbiAgICAgICAgICAgIHRoaXMuaGFsbG93c19lZmZfc2suc2V0VG9TZXR1cFBvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuaGFsbG93c19lZmZfc2suY2xlYXJUcmFja3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlRWZmZWN0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jdHJsLm9wZW5IYWxsb3dzQWN0aXZpdHlXaW5kb3coZmFsc2UpO1xuICAgIH0sXG59KSJdfQ==