RedUtil.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/frameWork/fgui/RedUtil.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'be09100wrxKqo3xM1AwX8j1', 'RedUtil');
  13. // script/frameWork/fgui/RedUtil.ts
  14. "use strict";
  15. var __extends = (this && this.__extends) || (function () {
  16. var extendStatics = function (d, b) {
  17. extendStatics = Object.setPrototypeOf ||
  18. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  19. function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
  20. return extendStatics(d, b);
  21. };
  22. return function (d, b) {
  23. extendStatics(d, b);
  24. function __() { this.constructor = d; }
  25. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  26. };
  27. })();
  28. Object.defineProperty(exports, "__esModule", { value: true });
  29. exports.RedDot = exports.RedUtil = void 0;
  30. var gameMethod_1 = require("../../common/gameMethod");
  31. var ListUtil_1 = require("./ListUtil");
  32. var RedUtil = /** @class */ (function () {
  33. function RedUtil() {
  34. }
  35. RedUtil.clear = function () {
  36. this._redMap.clear();
  37. };
  38. RedUtil.registerBaseRed = function (type, func, target) {
  39. if (target === void 0) { target = null; }
  40. if (this.getRedDot(type)) {
  41. if (CC_PREVIEW)
  42. console.warn("红点" + type + "已经注册过了");
  43. return;
  44. }
  45. var red = new RedDotBase(type, func.bind(target));
  46. if (red == null)
  47. return;
  48. this._redMap.set(type, red);
  49. };
  50. RedUtil.registerUpperRed = function (type, childs, func) {
  51. if (func === void 0) { func = null; }
  52. if (this.getRedDot(type)) {
  53. if (CC_PREVIEW)
  54. console.warn("红点" + type + "已经注册过了");
  55. return;
  56. }
  57. var rednode = new RedDotNode(type);
  58. this.setChilds(rednode, childs);
  59. this._redMap.set(type, rednode);
  60. };
  61. RedUtil.getRedState = function (type) {
  62. var red = this.getRedDot(type);
  63. if (red == null) {
  64. if (CC_PREVIEW)
  65. console.warn("\u7EA2\u70B9 " + type + " \u4E0D\u5B58\u5728");
  66. return false;
  67. }
  68. return red.getRedState();
  69. };
  70. RedUtil.getRedDot = function (type) {
  71. var _a;
  72. return (_a = this._redMap) === null || _a === void 0 ? void 0 : _a.get(type);
  73. };
  74. RedUtil.upRedNode = function (type, node) {
  75. var _a;
  76. var red = this.getRedDot(type);
  77. if (red == null) {
  78. if (CC_PREVIEW)
  79. console.warn("\u8282\u70B9:" + node.name + " \u7684\u7EA2\u70B9 " + type + " \u4E0D\u5B58\u5728 ");
  80. return;
  81. }
  82. if (red.node && red.node != node) {
  83. if (CC_PREVIEW)
  84. console.warn("\u8282\u70B9" + ((_a = red.node) === null || _a === void 0 ? void 0 : _a.name) + "\u5DF2\u7ECF\u6302\u8F7D\u4E86" + type + "\u7EA2\u70B9\uFF0C" + (node === null || node === void 0 ? void 0 : node.name) + "\u91CD\u590D\u6302\u8F7D\u4E86");
  85. return;
  86. }
  87. red.node = node;
  88. };
  89. RedUtil.offRedNode = function (type) {
  90. var red = this.getRedDot(type);
  91. if (red == null) {
  92. if (CC_PREVIEW)
  93. console.warn("\u7EA2\u70B9 " + type + " \u4E0D\u5B58\u5728 ");
  94. return;
  95. }
  96. red.node = null;
  97. };
  98. RedUtil.setChilds = function (red, childs) {
  99. for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {
  100. var child = childs_1[_i];
  101. if (child == red.type) {
  102. if (CC_PREVIEW)
  103. console.warn("\u7EA2\u70B9 " + red.type + " \u4E0D\u80FD\u81EA\u5DF1\u4F9D\u8D56\u81EA\u5DF1");
  104. continue;
  105. }
  106. this.setChild(red.type, child);
  107. }
  108. red.childs = childs;
  109. };
  110. RedUtil.updateRed = function (type) {
  111. var red = this.getRedDot(type);
  112. if (red instanceof RedDotBase) {
  113. red.updateRed();
  114. }
  115. else {
  116. if (CC_PREVIEW)
  117. console.warn("\u7EA2\u70B9\u7C7B\u578B\u4E0D\u662F\u5E95\u90E8\u7EA2\u70B9 " + type);
  118. }
  119. };
  120. RedUtil.setChild = function (parent, child) {
  121. var red = this._redMap.get(child);
  122. //排除重复挂载依赖
  123. if (red == null) {
  124. if (CC_PREVIEW)
  125. console.warn(child + " \u7EA2\u70B9\u4E0D\u5B58\u5728");
  126. return;
  127. }
  128. if (red.parent) {
  129. if (CC_PREVIEW)
  130. console.warn(child + " \u5DF2\u7ECF\u6709\u7236\u7EA2\u70B9\u4E86");
  131. return;
  132. }
  133. red.parent = parent;
  134. };
  135. RedUtil.initRedUtil = function () {
  136. var _a;
  137. (_a = this._redMap) === null || _a === void 0 ? void 0 : _a.forEach(function (red) {
  138. if (red instanceof RedDotBase)
  139. red.updateRed();
  140. });
  141. };
  142. RedUtil._redMap = new Map();
  143. return RedUtil;
  144. }());
  145. exports.RedUtil = RedUtil;
  146. var RedDotClass = /** @class */ (function () {
  147. function RedDotClass(type) {
  148. this.type = type;
  149. }
  150. return RedDotClass;
  151. }());
  152. var RedDotNode = /** @class */ (function (_super) {
  153. __extends(RedDotNode, _super);
  154. function RedDotNode() {
  155. var _this = _super !== null && _super.apply(this, arguments) || this;
  156. _this.childs = [];
  157. return _this;
  158. }
  159. RedDotNode.prototype.getRedState = function () {
  160. var isred = false;
  161. for (var _i = 0, _a = this.childs; _i < _a.length; _i++) {
  162. var i = _a[_i];
  163. var red = RedUtil.getRedDot(i);
  164. isred = red.getRedState();
  165. if (isred)
  166. break;
  167. }
  168. return isred;
  169. };
  170. RedDotNode.prototype.updateRed = function () {
  171. var _a;
  172. (_a = this.node) === null || _a === void 0 ? void 0 : _a.upRed();
  173. if (this.parent) {
  174. var red = RedUtil.getRedDot(this.parent);
  175. if (red == null) {
  176. if (CC_PREVIEW)
  177. console.warn("\u7EA2\u70B9:" + this.parent + " \u4E0D\u5B58\u5728");
  178. return;
  179. }
  180. red.updateRed();
  181. }
  182. };
  183. return RedDotNode;
  184. }(RedDotClass));
  185. var RedDotBase = /** @class */ (function (_super) {
  186. __extends(RedDotBase, _super);
  187. function RedDotBase(type, func) {
  188. var _this = _super.call(this, type) || this;
  189. _this.func = func;
  190. return _this;
  191. }
  192. RedDotBase.prototype.reCalRed = function () {
  193. var _a;
  194. try {
  195. this.redCount = (_a = this.func()) !== null && _a !== void 0 ? _a : false;
  196. }
  197. catch (err) {
  198. if (CC_PREVIEW)
  199. console.warn(err);
  200. this.redCount = false;
  201. }
  202. return this.redCount;
  203. };
  204. RedDotBase.prototype.getRedState = function () {
  205. return this.redCount;
  206. };
  207. RedDotBase.prototype.updateRed = function () {
  208. var _a;
  209. this.reCalRed();
  210. (_a = this.node) === null || _a === void 0 ? void 0 : _a.upRed();
  211. if (this.parent) {
  212. var red = RedUtil.getRedDot(this.parent);
  213. if (red == null) {
  214. if (CC_PREVIEW)
  215. console.warn("\u7EA2\u70B9:" + this.parent + " \u4E0D\u5B58\u5728");
  216. return;
  217. }
  218. red.updateRed();
  219. }
  220. };
  221. return RedDotBase;
  222. }(RedDotClass));
  223. var RedDot = /** @class */ (function (_super) {
  224. __extends(RedDot, _super);
  225. function RedDot() {
  226. return _super !== null && _super.apply(this, arguments) || this;
  227. }
  228. RedDot.prototype.onInit = function () {
  229. this.initControllers();
  230. };
  231. RedDot.prototype.onShow = function () {
  232. this.upNode();
  233. };
  234. RedDot.prototype.onHide = function () {
  235. this.offNode();
  236. };
  237. RedDot.prototype.upNode = function () {
  238. if (this.type == null) {
  239. this.show.selectedIndex = 1;
  240. return;
  241. }
  242. RedUtil.upRedNode(this.type, this);
  243. this.upRed();
  244. };
  245. RedDot.prototype.offNode = function () {
  246. if (this.type == null)
  247. return;
  248. RedUtil.offRedNode(this.type);
  249. };
  250. RedDot.prototype.setData = function (data, index, param) {
  251. this.type = data;
  252. this.upNode();
  253. };
  254. RedDot.prototype.upRed = function () {
  255. if (gameMethod_1.gameMethod.isEmpty(this.node)) {
  256. return;
  257. }
  258. this.show.selectedIndex = RedUtil.getRedState(this.type) ? 0 : 1;
  259. };
  260. RedDot.prototype.isShow = function () {
  261. return this.show.selectedIndex == 0;
  262. };
  263. return RedDot;
  264. }(ListUtil_1.ItemLabelRender));
  265. exports.RedDot = RedDot;
  266. cc._RF.pop();
  267. }
  268. if (nodeEnv) {
  269. __define(__module.exports, __require, __module);
  270. }
  271. else {
  272. __quick_compile_project__.registerModuleFunc(__filename, function () {
  273. __define(__module.exports, __require, __module);
  274. });
  275. }
  276. })();
  277. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL2ZndWkvUmVkVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQXFEO0FBRXJELHVDQUE2QztBQUU3QztJQUFBO0lBc0dBLENBQUM7SUFuR08sYUFBSyxHQUFaO1FBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRU0sdUJBQWUsR0FBdEIsVUFBdUIsSUFBaUIsRUFBRSxJQUFtQixFQUFFLE1BQWtCO1FBQWxCLHVCQUFBLEVBQUEsYUFBa0I7UUFDaEYsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLElBQUksVUFBVTtnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDckQsT0FBTztTQUNQO1FBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLEdBQUcsSUFBSSxJQUFJO1lBQUUsT0FBTztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLHdCQUFnQixHQUF2QixVQUF3QixJQUFpQixFQUFFLE1BQXFCLEVBQUUsSUFBMEI7UUFBMUIscUJBQUEsRUFBQSxXQUEwQjtRQUMzRixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsSUFBSSxVQUFVO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNyRCxPQUFPO1NBQ1A7UUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMs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QUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCx3QkFBTyxHQUFQO1FBQ0MsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCx3QkFBTyxHQUFQLFVBQVEsSUFBaUIsRUFBRSxLQUFjLEVBQUUsS0FBVztRQUNyRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDZCxDQUFDO0lBRUQsc0JBQUssR0FBTDtRQUNDLElBQUksdUJBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsdUJBQU0sR0FBTjtRQUNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRixhQUFDO0FBQUQsQ0E3Q0EsQUE2Q0MsQ0E3QzJCLDBCQUFlLEdBNkMxQztBQTdDWSx3QkFBTSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdhbWVNZXRob2QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2dhbWVNZXRob2RcIjtcbmltcG9ydCB7IFJlZFV0aWxUeXBlIH0gZnJvbSBcIi4uLy4uL2RhdGEvY29uc3QvVHlwZUNvbnN0XCI7XG5pbXBvcnQgeyBJdGVtTGFiZWxSZW5kZXIgfSBmcm9tIFwiLi9MaXN0VXRpbFwiO1xuXG5leHBvcnQgY2xhc3MgUmVkVXRpbCB7XG5cdHByaXZhdGUgc3RhdGljIF9yZWRNYXA6IE1hcDxSZWRVdGlsVHlwZSwgUmVkRG90Q2xhc3M+ID0gbmV3IE1hcCgpO1xuXG5cdHN0YXRpYyBjbGVhcigpIHtcblx0XHR0aGlzLl9yZWRNYXAuY2xlYXIoKVxuXHR9XG5cblx0c3RhdGljIHJlZ2lzdGVyQmFzZVJlZCh0eXBlOiBSZWRVdGlsVHlwZSwgZnVuYzogKCkgPT4gYm9vbGVhbiwgdGFyZ2V0OiBhbnkgPSBudWxsKSB7XG5cdFx0aWYgKHRoaXMuZ2V0UmVkRG90KHR5cGUpKSB7XG5cdFx0XHRpZiAoQ0NfUFJFVklFVykgY29uc29sZS53YXJuKFwi57qi54K5XCIgKyB0eXBlICsgXCLlt7Lnu4/ms6jlhozov4fkuoZcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCByZWQgPSBuZXcgUmVkRG90QmFzZSh0eXBlLCBmdW5jLmJpbmQodGFyZ2V0KSk7XG5cdFx0aWYgKHJlZCA9PSBudWxsKSByZXR1cm47XG5cdFx0dGhpcy5fcmVkTWFwLnNldCh0eXBlLCByZWQpO1xuXHR9XG5cblx0c3RhdGljIHJlZ2lzdGVyVXBwZXJSZWQodHlwZTogUmVkVXRpbFR5cGUsIGNoaWxkczogUmVkVXRpbFR5cGVbXSwgZnVuYzogKCkgPT4gYm9vbGVhbiA9IG51bGwpIHtcblx0XHRpZiAodGhpcy5nZXRSZWREb3QodHlwZSkpIHtcblx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLndhcm4oXCLnuqLngrlcIiArIHR5cGUgKyBcIuW3sue7j+azqOWGjOi/h+S6hlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgcmVkbm9kZSA9IG5ldyBSZWREb3ROb2RlKHR5cGUpO1xuXHRcdHRoaXMuc2V0Q2hpbGRzKHJlZG5vZGUsIGNoaWxkcyk7XG5cdFx0dGhpcy5fcmVkTWFwLnNldCh0eXBlLCByZWRub2RlKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRSZWRTdGF0ZSh0eXBlOiBSZWRVdGlsVHlwZSk6IGJvb2xlYW4ge1xuXHRcdGxldCByZWQgPSB0aGlzLmdldFJlZERvdCh0eXBlKTtcblx0XHRpZiAocmVkID09IG51bGwpIHtcblx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLndhcm4oYOe6oueCuSAke3R5cGV9IOS4jeWtmOWcqGApO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVkLmdldFJlZFN0YXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0UmVkRG90KHR5cGUpIHtcblx0XHRyZXR1cm4gdGhpcy5fcmVkTWFwPy5nZXQodHlwZSk7XG5cdH1cblxuXHRzdGF0aWMgdXBSZWROb2RlKHR5cGU6IFJlZFV0aWxUeXBlLCBub2RlOiBSZWREb3QpIHtcblx0XHRsZXQgcmVkID0gdGhpcy5nZXRSZWREb3QodHlwZSk7XG5cdFx0aWYgKHJlZCA9PSBudWxsKSB7XG5cdFx0XHRpZiAoQ0NfUFJFVklFVykgY29uc29sZS53YXJuKGDoioLngrk6JHtub2RlLm5hbWV9IOeahOe6oueCuSAke3R5cGV9IOS4jeWtmOWcqCBgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHJlZC5ub2RlICYmIHJlZC5ub2RlICE9IG5vZGUpIHtcblx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLndhcm4oYOiKgueCuSR7cmVkLm5vZGU/Lm5hbWV95bey57uP5oyC6L295LqGJHt0eXBlfee6oueCue+8jCR7bm9kZT8ubmFtZX3ph43lpI3mjILovb3kuoZgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0cmVkLm5vZGUgPSBub2RlO1xuXHR9XG5cblx0c3RhdGljIG9mZlJlZE5vZGUodHlwZTogUmVkVXRpbFR5cGUpIHtcblx0XHRsZXQgcmVkID0gdGhpcy5nZXRSZWREb3QodHlwZSk7XG5cdFx0aWYgKHJlZCA9PSBudWxsKSB7XG5cdFx0XHRpZiAoQ0NfUFJFVklFVykgY29uc29sZS53YXJuKGDnuqLngrkgJHt0eXBlfSDkuI3lrZjlnKggYCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHJlZC5ub2RlID0gbnVsbDtcblx0fVxuXG5cdHByaXZhdGUgc3RhdGljIHNldENoaWxkcyhyZWQ6IFJlZERvdE5vZGUsIGNoaWxkczogUmVkVXRpbFR5cGVbXSkge1xuXHRcdGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcykge1xuXHRcdFx0aWYgKGNoaWxkID09IHJlZC50eXBlKSB7XG5cdFx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLndhcm4oYOe6oueCuSAke3JlZC50eXBlfSDkuI3og73oh6rlt7Hkvp3otZboh6rlt7FgKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNldENoaWxkKHJlZC50eXBlLCBjaGlsZCk7XG5cdFx0fVxuXHRcdHJlZC5jaGlsZHMgPSBjaGlsZHM7XG5cdH1cblxuXHRzdGF0aWMgdXBkYXRlUmVkKHR5cGU6IFJlZFV0aWxUeXBlKSB7XG5cdFx0bGV0IHJlZCA9IHRoaXMuZ2V0UmVkRG90KHR5cGUpO1xuXHRcdGlmIChyZWQgaW5zdGFuY2VvZiBSZWREb3RCYXNlKSB7XG5cdFx0XHRyZWQudXBkYXRlUmVkKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLndhcm4oYOe6oueCueexu+Wei+S4jeaYr+W6lemDqOe6oueCuSAke3R5cGV9YCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgc2V0Q2hpbGQocGFyZW50OiBSZWRVdGlsVHlwZSwgY2hpbGQ6IFJlZFV0aWxUeXBlKSB7XG5cdFx0bGV0IHJlZCA9IHRoaXMuX3JlZE1hcC5nZXQoY2hpbGQpO1xuXHRcdC8v5o6S6Zmk6YeN5aSN5oyC6L295L6d6LWWXG5cdFx0aWYgKHJlZCA9PSBudWxsKSB7XG5cdFx0XHRpZiAoQ0NfUFJFVklFVykgY29uc29sZS53YXJuKGAke2NoaWxkfSDnuqLngrnkuI3lrZjlnKhgKTtcblx0XHRcdHJldHVyblxuXHRcdH1cblx0XHRpZiAocmVkLnBhcmVudCkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2FybihgJHtjaGlsZH0g5bey57uP5pyJ54i257qi54K55LqGYCk7XG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cdFx0cmVkLnBhcmVudCA9IHBhcmVudDtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgaW5pdFJlZFV0aWwoKSB7XG5cdFx0dGhpcy5fcmVkTWFwPy5mb3JFYWNoKChyZWQ6IFJlZERvdENsYXNzKSA9PiB7XG5cdFx0XHRpZiAocmVkIGluc3RhbmNlb2YgUmVkRG90QmFzZSkgcmVkLnVwZGF0ZVJlZCgpO1xuXHRcdH0pO1xuXHR9XG59XG5cbmFic3RyYWN0IGNsYXNzIFJlZERvdENsYXNzIHtcblx0dHlwZTogUmVkVXRpbFR5cGU7XG5cdHBhcmVudDogUmVkVXRpbFR5cGU7XG5cdG5vZGU6IFJlZERvdDtcblxuXHRjb25zdHJ1Y3Rvcih0eXBlOiBSZWRVdGlsVHlwZSkge1xuXHRcdHRoaXMudHlwZSA9IHR5cGU7XG5cdH1cblxuXHRhYnN0cmFjdCBnZXRSZWRTdGF0ZSgpOiBib29sZWFuO1xuXG5cdGFic3RyYWN0IHVwZGF0ZVJlZCgpO1xufVxuXG5jbGFzcyBSZWREb3ROb2RlIGV4dGVuZHMgUmVkRG90Q2xhc3Mge1xuXHRjaGlsZHM6IFJlZFV0aWxUeXBlW10gPSBbXTtcblxuXHRnZXRSZWRTdGF0ZSgpOiBib29sZWFuIHtcblx0XHRsZXQgaXNyZWQgPSBmYWxzZTtcblx0XHRmb3IgKGxldCBpIG9mIHRoaXMuY2hpbGRzKSB7XG5cdFx0XHRsZXQgcmVkID0gUmVkVXRpbC5nZXRSZWREb3QoaSk7XG5cdFx0XHRpc3JlZCA9IHJlZC5nZXRSZWRTdGF0ZSgpO1xuXHRcdFx0aWYgKGlzcmVkKSBicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIGlzcmVkO1xuXHR9XG5cblx0dXBkYXRlUmVkKCkge1xuXHRcdHRoaXMubm9kZT8udXBSZWQoKTtcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcblx0XHRcdGxldCByZWQgPSBSZWRVdGlsLmdldFJlZERvdCh0aGlzLnBhcmVudCk7XG5cdFx0XHRpZiAocmVkID09IG51bGwpIHtcblx0XHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg57qi54K5OiR7dGhpcy5wYXJlbnR9IOS4jeWtmOWcqGApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZWQudXBkYXRlUmVkKCk7XG5cdFx0fVxuXHR9XG59XG5cbmNsYXNzIFJlZERvdEJhc2UgZXh0ZW5kcyBSZWREb3RDbGFzcyB7XG5cdHJlZENvdW50OiBib29sZWFuO1xuXHRmdW5jOiAoKSA9PiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHR5cGU6IFJlZFV0aWxUeXBlLCBmdW5jOiAoKSA9PiBib29sZWFuKSB7XG5cdFx0c3VwZXIodHlwZSk7XG5cdFx0dGhpcy5mdW5jID0gZnVuYztcblx0fVxuXG5cdHJlQ2FsUmVkKCk6IGJvb2xlYW4ge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLnJlZENvdW50ID0gdGhpcy5mdW5jKCkgPz8gZmFsc2U7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRpZiAoQ0NfUFJFVklFVykgY29uc29sZS53YXJuKGVycik7XG5cdFx0XHR0aGlzLnJlZENvdW50ID0gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnJlZENvdW50O1xuXHR9XG5cblx0Z2V0UmVkU3RhdGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucmVkQ291bnQ7XG5cdH1cblxuXHR1cGRhdGVSZWQoKSB7XG5cdFx0dGhpcy5yZUNhbFJlZCgpO1xuXHRcdHRoaXMubm9kZT8udXBSZWQoKTtcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcblx0XHRcdGxldCByZWQgPSBSZWRVdGlsLmdldFJlZERvdCh0aGlzLnBhcmVudCk7XG5cdFx0XHRpZiAocmVkID09IG51bGwpIHtcblx0XHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg57qi54K5OiR7dGhpcy5wYXJlbnR9IOS4jeWtmOWcqGApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZWQudXBkYXRlUmVkKCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWREb3QgZXh0ZW5kcyBJdGVtTGFiZWxSZW5kZXIge1xuXHR0eXBlOiBSZWRVdGlsVHlwZTtcblx0c2hvdzogZmFpcnlndWkuQ29udHJvbGxlcjtcblxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5pbml0Q29udHJvbGxlcnMoKTtcblx0fVxuXG5cdG9uU2hvdygpOiB2b2lkIHtcblx0XHR0aGlzLnVwTm9kZSgpO1xuXHR9XG5cblx0b25IaWRlKCk6IHZvaWQge1xuXHRcdHRoaXMub2ZmTm9kZSgpO1xuXHR9XG5cblx0dXBOb2RlKCkge1xuXHRcdGlmICh0aGlzLnR5cGUgPT0gbnVsbCkge1xuXHRcdFx0dGhpcy5zaG93LnNlbGVjdGVkSW5kZXggPSAxO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRSZWRVdGlsLnVwUmVkTm9kZSh0aGlzLnR5cGUsIHRoaXMpO1xuXHRcdHRoaXMudXBSZWQoKTtcblx0fVxuXG5cdG9mZk5vZGUoKSB7XG5cdFx0aWYgKHRoaXMudHlwZSA9PSBudWxsKSByZXR1cm47XG5cdFx0UmVkVXRpbC5vZmZSZWROb2RlKHRoaXMudHlwZSk7XG5cdH1cblxuXHRzZXREYXRhKGRhdGE6IFJlZFV0aWxUeXBlLCBpbmRleD86IG51bWJlciwgcGFyYW0/OiBhbnkpIHtcblx0XHR0aGlzLnR5cGUgPSBkYXRhO1xuXHRcdHRoaXMudXBOb2RlKClcblx0fVxuXG5cdHVwUmVkKCkge1xuXHRcdGlmIChnYW1lTWV0aG9kLmlzRW1wdHkodGhpcy5ub2RlKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnNob3cuc2VsZWN0ZWRJbmRleCA9IFJlZFV0aWwuZ2V0UmVkU3RhdGUodGhpcy50eXBlKSA/IDAgOiAxO1xuXHR9XG5cblx0aXNTaG93KCkge1xuXHRcdHJldHVybiB0aGlzLnNob3cuc2VsZWN0ZWRJbmRleCA9PSAwO1xuXHR9XG59XG4iXX0=