GameController.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/GameController.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, '9948eK7buVDMqdvps5pUzCC', 'GameController');
  13. // script/GameController.ts
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. var Config_1 = require("./Config");
  17. var gameCfg_1 = require("./common/gameCfg");
  18. var GameDataCenter_1 = require("./data/GameDataCenter");
  19. var eg_1 = require("./frameWork/eg");
  20. var FguiMgr_1 = require("./frameWork/fgui/FguiMgr");
  21. var HttpRequest_1 = require("./network/HttpRequest");
  22. var Network_1 = require("./network/Network");
  23. var AssetsBundleMgr_1 = require("./utils/AssetsBundleMgr");
  24. var Load_1 = require("./utils/Load");
  25. var NativeManager_1 = require("./utils/NativeManager");
  26. var SingletonFactory_1 = require("./utils/SingletonFactory");
  27. var ThinkingDataMgr_1 = require("./utils/ThinkingDataMgr");
  28. var GameController = /** @class */ (function () {
  29. // websocket: NetworkWebSocket = null;
  30. function GameController() {
  31. this.network = null;
  32. this.rewardedVideoAd = null;
  33. CC_PREVIEW && (window['gamecontroller'] = this);
  34. }
  35. GameController.prototype.init = function (callback) {
  36. // 新建一个网络单例
  37. this.network = SingletonFactory_1.SingletonFactory.getInstance(Network_1.default);
  38. // this.websocket = SingletonFactory.getInstance(NetworkWebSocket);
  39. // 所有UI扩展都写在这
  40. this.initUIExpand();
  41. NativeManager_1.default.Init();
  42. console.log("初始化配置表");
  43. var startTime = new Date().getTime();
  44. gameCfg_1.default.initLoading(function (isSucc) {
  45. console.log("初始化配置表流程结束,消耗时长:" + (new Date().getTime() - startTime) + "ms");
  46. if (isSucc) {
  47. console.log("解析成功");
  48. // 初始化数据模块
  49. GameDataCenter_1.default.initLoadModule();
  50. // GameDataCenter.adVideo.setAdOpen()
  51. // //初始化数数
  52. ThinkingDataMgr_1.default.TDInit();
  53. }
  54. else {
  55. console.log("解析失败");
  56. }
  57. callback(isSucc);
  58. });
  59. };
  60. GameController.prototype.clear = function () {
  61. var _a;
  62. this.network.RemoveTimers();
  63. // if (GameDataCenter.plat.instance.rewardedVideoAd) {
  64. // // 销毁激励视频广告实例
  65. // console.log("销毁广告实例,避免重复触发回调")
  66. // GameDataCenter.plat.instance.rewardedVideoAd.destroy();
  67. // }
  68. cc.Tween.stopAll();
  69. //清空已经所有的界面
  70. FguiMgr_1.default.Instance.clearAllUI();
  71. fgui.TweenManager.clearAll();
  72. Load_1.default.clear();
  73. if (Config_1.default.upid != null) {
  74. clearInterval(Config_1.default.upid);
  75. }
  76. if (Config_1.default.upFrame != null) {
  77. clearInterval(Config_1.default.upFrame);
  78. }
  79. if (Config_1.default.upFight != null) {
  80. clearInterval(Config_1.default.upFight);
  81. }
  82. cc.director.getScene().removeAllChildren(true);
  83. Config_1.default.inGame = 0;
  84. this.network.stopRequest = false;
  85. HttpRequest_1.default.errPostMap.Clear();
  86. GameDataCenter_1.default._rspModel.clear();
  87. (_a = eg_1.eg.poolManager) === null || _a === void 0 ? void 0 : _a.ReleaseAllPool();
  88. fgui.UIPackage.removeAllPackage();
  89. AssetsBundleMgr_1.default.releaseAllBundle();
  90. };
  91. GameController.prototype.initUIExpand = function () {
  92. // tween的暂停与恢复
  93. // cc.ActionInterval.prototype.step = function (dt) {
  94. // if (this.paused) {
  95. // return;
  96. // }
  97. // if (this._firstTick && !this._goto) {
  98. // this._firstTick = false;
  99. // this._elapsed = 0;
  100. // } else {
  101. // this._elapsed += dt;
  102. // }
  103. // let t = this._elapsed / (this._duration > 0.0000001192092896 ? this._duration : 0.0000001192092896);
  104. // t = (1 > t ? t : 1);
  105. // this.update(t > 0 ? t : 0);
  106. // //Compatible with repeat class, Discard after can be deleted (this._repeatMethod)
  107. // if (this._repeatMethod && this._timesForRepeat > 1 && this.isDone()) {
  108. // if (!this._repeatForever) {
  109. // this._timesForRepeat--;
  110. // }
  111. // this.startWithTarget(this.target);
  112. // this.step(this._elapsed - this._duration);
  113. // }
  114. // };
  115. // cc.Tween.prototype.pause = function () {
  116. // this._finalAction.paused = true;
  117. // };
  118. // cc.Tween.prototype.resume = function () {
  119. // this._finalAction.paused = false;
  120. // };
  121. };
  122. return GameController;
  123. }());
  124. exports.default = new GameController();
  125. cc._RF.pop();
  126. }
  127. if (nodeEnv) {
  128. __define(__module.exports, __require, __module);
  129. }
  130. else {
  131. __quick_compile_project__.registerModuleFunc(__filename, function () {
  132. __define(__module.exports, __require, __module);
  133. });
  134. }
  135. })();
  136. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvR2FtZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQ0FBOEI7QUFDOUIsNENBQXVDO0FBQ3ZDLHdEQUFtRDtBQUNuRCxxQ0FBb0M7QUFDcEMsb0RBQStDO0FBQy9DLHFEQUFnRDtBQUNoRCw2Q0FBd0M7QUFDeEMsMkRBQXNEO0FBQ3RELHFDQUFnQztBQUNoQyx1REFBa0Q7QUFDbEQsNkRBQTREO0FBQzVELDJEQUFzRDtBQUV0RDtJQUdDLHNDQUFzQztJQUV0QztRQUpBLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsb0JBQWUsR0FBUSxJQUFJLENBQUM7UUFJM0IsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELDZCQUFJLEdBQUosVUFBSyxRQUFrQjtRQUN0QixXQUFXO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxtQ0FBZ0IsQ0FBQyxXQUFXLENBQUMsaUJBQU8sQ0FBQyxDQUFDO1FBQ3JELG1FQUFtRTtRQUVuRSxhQUFhO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBRW5CLHVCQUFhLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyQixJQUFJLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BDLGlCQUFPLENBQUMsV0FBVyxDQUFDLFVBQUMsTUFBZTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUMzRSxJQUFJLE1BQU0sRUFBRTtnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNuQixVQUFVO2dCQUNWLHdCQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ2hDLHFDQUFxQztnQkFDckMsVUFBVTtnQkFDVix5QkFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7YUFDbkI7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRUQsOEJBQUssR0FBTDs7UUFDQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLHNEQUFzRDtRQUN0RCxvQkFBb0I7UUFDcEIscUNBQXFDO1FBQ3JDLDhEQUE4RDtRQUM5RCxJQUFJO1FBQ0osRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixXQUFXO1FBQ1gsaUJBQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixjQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDWixJQUFJLGdCQUFNLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUN4QixhQUFhLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUMxQjtRQUNELElBQUksZ0JBQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO1lBQzNCLGFBQWEsQ0FBQyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQzdCO1FBQ0QsSUFBSSxnQkFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDM0IsYUFBYSxDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDN0I7UUFDRCxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlDLGdCQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7UUFDaEMscUJBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDOUIsd0JBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsTUFBQSxPQUFFLENBQUMsV0FBVywwQ0FBRSxjQUFjLEdBQUc7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ2pDLHlCQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8scUNBQVksR0FBcEI7UUFDQyxjQUFjO1FBQ2QscURBQXFEO1FBQ3JELHNCQUFzQjtRQUN0QixZQUFZO1FBQ1osS0FBSztRQUVMLHlDQUF5QztRQUN6Qyw2QkFBNkI7UUFDN0IsdUJBQXVCO1FBQ3ZCLFlBQVk7UUFDWix5QkFBeUI7UUFDekIsS0FBSztRQUVMLHdHQUF3RztRQUN4Ryx3QkFBd0I7UUFDeEIsK0JBQStCO1FBRS9CLHFGQUFxRjtRQUNyRiwwRUFBMEU7UUFDMUUsZ0NBQWdDO1FBQ2hDLDZCQUE2QjtRQUM3QixNQUFNO1FBQ04sdUNBQXVDO1FBQ3ZDLCtDQUErQztRQUMvQyxLQUFLO1FBQ0wsS0FBSztRQUVMLDJDQUEyQztRQUMzQyxvQ0FBb0M7UUFDcEMsS0FBSztRQUVMLDRDQUE0QztRQUM1QyxxQ0FBcUM7UUFDckMsS0FBSztJQUNOLENBQUM7SUFDRixxQkFBQztBQUFELENBdkdBLEFBdUdDLElBQUE7QUFFRCxrQkFBZSxJQUFJLGNBQWMsRUFBRSxDQUFDIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgQ29uZmlnIGZyb20gXCIuL0NvbmZpZ1wiO1xuaW1wb3J0IEdhbWVjZmcgZnJvbSBcIi4vY29tbW9uL2dhbWVDZmdcIjtcbmltcG9ydCBHYW1lRGF0YUNlbnRlciBmcm9tIFwiLi9kYXRhL0dhbWVEYXRhQ2VudGVyXCI7XG5pbXBvcnQgeyBlZyB9IGZyb20gXCIuL2ZyYW1lV29yay9lZ1wiO1xuaW1wb3J0IEZndWlNZ3IgZnJvbSBcIi4vZnJhbWVXb3JrL2ZndWkvRmd1aU1nclwiO1xuaW1wb3J0IEh0dHBSZXF1ZXN0IGZyb20gXCIuL25ldHdvcmsvSHR0cFJlcXVlc3RcIjtcbmltcG9ydCBOZXR3b3JrIGZyb20gXCIuL25ldHdvcmsvTmV0d29ya1wiO1xuaW1wb3J0IEFzc2V0c0J1bmRsZU1nciBmcm9tIFwiLi91dGlscy9Bc3NldHNCdW5kbGVNZ3JcIjtcbmltcG9ydCBMb2FkIGZyb20gXCIuL3V0aWxzL0xvYWRcIjtcbmltcG9ydCBOYXRpdmVNYW5hZ2VyIGZyb20gXCIuL3V0aWxzL05hdGl2ZU1hbmFnZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkZhY3RvcnkgfSBmcm9tIFwiLi91dGlscy9TaW5nbGV0b25GYWN0b3J5XCI7XG5pbXBvcnQgVGhpbmtpbmdEYXRhTWdyIGZyb20gXCIuL3V0aWxzL1RoaW5raW5nRGF0YU1nclwiO1xuXG5jbGFzcyBHYW1lQ29udHJvbGxlciB7XG5cdG5ldHdvcms6IE5ldHdvcmsgPSBudWxsO1xuXHRyZXdhcmRlZFZpZGVvQWQ6IGFueSA9IG51bGw7XG5cdC8vIHdlYnNvY2tldDogTmV0d29ya1dlYlNvY2tldCA9IG51bGw7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Q0NfUFJFVklFVyAmJiAod2luZG93WydnYW1lY29udHJvbGxlciddID0gdGhpcylcblx0fVxuXG5cdGluaXQoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0Ly8g5paw5bu65LiA5Liq572R57uc5Y2V5L6LXG5cdFx0dGhpcy5uZXR3b3JrID0gU2luZ2xldG9uRmFjdG9yeS5nZXRJbnN0YW5jZShOZXR3b3JrKTtcblx0XHQvLyB0aGlzLndlYnNvY2tldCA9IFNpbmdsZXRvbkZhY3RvcnkuZ2V0SW5zdGFuY2UoTmV0d29ya1dlYlNvY2tldCk7XG5cblx0XHQvLyDmiYDmnIlVSeaJqeWxlemDveWGmeWcqOi/mVxuXHRcdHRoaXMuaW5pdFVJRXhwYW5kKClcblxuXHRcdE5hdGl2ZU1hbmFnZXIuSW5pdCgpXG5cdFx0Y29uc29sZS5sb2coXCLliJ3lp4vljJbphY3nva7ooahcIilcblx0XHRsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblx0XHRHYW1lY2ZnLmluaXRMb2FkaW5nKChpc1N1Y2M6IGJvb2xlYW4pID0+IHtcblx0XHRcdGNvbnNvbGUubG9nKFwi5Yid5aeL5YyW6YWN572u6KGo5rWB56iL57uT5p2fLOa2iOiAl+aXtumVvzpcIiArIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0VGltZSkgKyBcIm1zXCIpXG5cdFx0XHRpZiAoaXNTdWNjKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi6Kej5p6Q5oiQ5YqfXCIpXG5cdFx0XHRcdC8vIOWIneWni+WMluaVsOaNruaooeWdl1xuXHRcdFx0XHRHYW1lRGF0YUNlbnRlci5pbml0TG9hZE1vZHVsZSgpO1xuXHRcdFx0XHQvLyBHYW1lRGF0YUNlbnRlci5hZFZpZGVvLnNldEFkT3BlbigpXG5cdFx0XHRcdC8vIC8v5Yid5aeL5YyW5pWw5pWwXG5cdFx0XHRcdFRoaW5raW5nRGF0YU1nci5UREluaXQoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi6Kej5p6Q5aSx6LSlXCIpXG5cdFx0XHR9XG5cdFx0XHRjYWxsYmFjayhpc1N1Y2MpXG5cdFx0fSlcblx0fVxuXG5cdGNsZWFyKCkge1xuXHRcdHRoaXMubmV0d29yay5SZW1vdmVUaW1lcnMoKTtcblx0XHQvLyBpZiAoR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5yZXdhcmRlZFZpZGVvQWQpIHtcblx0XHQvLyAgICAgLy8g6ZSA5q+B5r+A5Yqx6KeG6aKR5bm/5ZGK5a6e5L6LXG5cdFx0Ly8gICAgIGNvbnNvbGUubG9nKFwi6ZSA5q+B5bm/5ZGK5a6e5L6L77yM6YG/5YWN6YeN5aSN6Kem5Y+R5Zue6LCDXCIpXG5cdFx0Ly8gICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2UucmV3YXJkZWRWaWRlb0FkLmRlc3Ryb3koKTtcblx0XHQvLyB9XG5cdFx0Y2MuVHdlZW4uc3RvcEFsbCgpXG5cdFx0Ly/muIXnqbrlt7Lnu4/miYDmnInnmoTnlYzpnaJcblx0XHRGZ3VpTWdyLkluc3RhbmNlLmNsZWFyQWxsVUkoKVxuXHRcdGZndWkuVHdlZW5NYW5hZ2VyLmNsZWFyQWxsKCk7XG5cdFx0TG9hZC5jbGVhcigpXG5cdFx0aWYgKENvbmZpZy51cGlkICE9IG51bGwpIHtcblx0XHRcdGNsZWFySW50ZXJ2YWwoQ29uZmlnLnVwaWQpXG5cdFx0fVxuXHRcdGlmIChDb25maWcudXBGcmFtZSAhPSBudWxsKSB7XG5cdFx0XHRjbGVhckludGVydmFsKENvbmZpZy51cEZyYW1lKVxuXHRcdH1cblx0XHRpZiAoQ29uZmlnLnVwRmlnaHQgIT0gbnVsbCkge1xuXHRcdFx0Y2xlYXJJbnRlcnZhbChDb25maWcudXBGaWdodClcblx0XHR9XG5cdFx0Y2MuZGlyZWN0b3IuZ2V0U2NlbmUoKS5yZW1vdmVBbGxDaGlsZHJlbih0cnVlKVxuXHRcdENvbmZpZy5pbkdhbWUgPSAwXG5cdFx0dGhpcy5uZXR3b3JrLnN0b3BSZXF1ZXN0ID0gZmFsc2Vcblx0XHRIdHRwUmVxdWVzdC5lcnJQb3N0TWFwLkNsZWFyKClcblx0XHRHYW1lRGF0YUNlbnRlci5fcnNwTW9kZWwuY2xlYXIoKTtcblx0XHRlZy5wb29sTWFuYWdlcj8uUmVsZWFzZUFsbFBvb2woKTtcblx0XHRmZ3VpLlVJUGFja2FnZS5yZW1vdmVBbGxQYWNrYWdlKClcblx0XHRBc3NldHNCdW5kbGVNZ3IucmVsZWFzZUFsbEJ1bmRsZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSBpbml0VUlFeHBhbmQoKSB7XG5cdFx0Ly8gdHdlZW7nmoTmmoLlgZzkuI7mgaLlpI1cblx0XHQvLyBjYy5BY3Rpb25JbnRlcnZhbC5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uIChkdCkge1xuXHRcdC8vIFx0aWYgKHRoaXMucGF1c2VkKSB7XG5cdFx0Ly8gXHRcdHJldHVybjtcblx0XHQvLyBcdH1cblxuXHRcdC8vIFx0aWYgKHRoaXMuX2ZpcnN0VGljayAmJiAhdGhpcy5fZ290bykge1xuXHRcdC8vIFx0XHR0aGlzLl9maXJzdFRpY2sgPSBmYWxzZTtcblx0XHQvLyBcdFx0dGhpcy5fZWxhcHNlZCA9IDA7XG5cdFx0Ly8gXHR9IGVsc2Uge1xuXHRcdC8vIFx0XHR0aGlzLl9lbGFwc2VkICs9IGR0O1xuXHRcdC8vIFx0fVxuXG5cdFx0Ly8gXHRsZXQgdCA9IHRoaXMuX2VsYXBzZWQgLyAodGhpcy5fZHVyYXRpb24gPiAwLjAwMDAwMDExOTIwOTI4OTYgPyB0aGlzLl9kdXJhdGlvbiA6IDAuMDAwMDAwMTE5MjA5Mjg5Nik7XG5cdFx0Ly8gXHR0ID0gKDEgPiB0ID8gdCA6IDEpO1xuXHRcdC8vIFx0dGhpcy51cGRhdGUodCA+IDAgPyB0IDogMCk7XG5cblx0XHQvLyBcdC8vQ29tcGF0aWJsZSB3aXRoIHJlcGVhdCBjbGFzcywgRGlzY2FyZCBhZnRlciBjYW4gYmUgZGVsZXRlZCAodGhpcy5fcmVwZWF0TWV0aG9kKVxuXHRcdC8vIFx0aWYgKHRoaXMuX3JlcGVhdE1ldGhvZCAmJiB0aGlzLl90aW1lc0ZvclJlcGVhdCA+IDEgJiYgdGhpcy5pc0RvbmUoKSkge1xuXHRcdC8vIFx0XHRpZiAoIXRoaXMuX3JlcGVhdEZvcmV2ZXIpIHtcblx0XHQvLyBcdFx0XHR0aGlzLl90aW1lc0ZvclJlcGVhdC0tO1xuXHRcdC8vIFx0XHR9XG5cdFx0Ly8gXHRcdHRoaXMuc3RhcnRXaXRoVGFyZ2V0KHRoaXMudGFyZ2V0KTtcblx0XHQvLyBcdFx0dGhpcy5zdGVwKHRoaXMuX2VsYXBzZWQgLSB0aGlzLl9kdXJhdGlvbik7XG5cdFx0Ly8gXHR9XG5cdFx0Ly8gfTtcblxuXHRcdC8vIGNjLlR3ZWVuLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcblx0XHQvLyBcdHRoaXMuX2ZpbmFsQWN0aW9uLnBhdXNlZCA9IHRydWU7XG5cdFx0Ly8gfTtcblxuXHRcdC8vIGNjLlR3ZWVuLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gXHR0aGlzLl9maW5hbEFjdGlvbi5wYXVzZWQgPSBmYWxzZTtcblx0XHQvLyB9O1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBHYW1lQ29udHJvbGxlcigpOyJdfQ==