(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/script/plat/PlatformXXGame.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, '0dc11sHo3ZOypB31FsAXedt', 'PlatformXXGame'); // script/plat/PlatformXXGame.ts "use strict"; /** 闲闲游戏 SDK */ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var gameCfg_1 = require("../common/gameCfg"); var gameMethod_1 = require("../common/gameMethod"); var Xyc_1 = require("../common/Xyc"); var Config_1 = require("../Config"); var EventConst_1 = require("../data/const/EventConst"); var TypeConst_1 = require("../data/const/TypeConst"); var GameDataCenter_1 = require("../data/GameDataCenter"); var GameController_1 = require("../GameController"); var EventMng_1 = require("../manager/EventMng"); var NativeManager_1 = require("../utils/NativeManager"); var PlatformBase_1 = require("./PlatformBase"); var PlatformXXGame = /** @class */ (function (_super) { __extends(PlatformXXGame, _super); function PlatformXXGame() { var _this = _super.call(this) || this; window["NativeNotify"] = { //native平台回调 OnNativeNotify: function (eventType, eventDataString) { try { console.log("NativeNotify OnNativeNotify eventType:" + eventType + ",eventDataString:" + eventDataString); var dataDict = JSON.parse(eventDataString); if (eventType == "XXGameLogin") { //登录 EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.75, "login"); var params_1 = { pid: Config_1.default.pid, param: [dataDict.uid, dataDict.token] }; // if (dataDict.status != 0) { // GameDataCenter.plat.showErrDialog(GameErrCode.errPlatLogin) // return // } setTimeout(function () { GameController_1.default.network.send(Xyc_1.PlayerLogin.url, params_1, function (result) { console.log("后段验证返回", JSON.stringify(result)); if (result.type != 1) { if (gameMethod_1.gameMethod.isEmpty(result.win) || gameMethod_1.gameMethod.isEmpty(result.win.msgOut)) { GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errGamePlatLogin); } return; } EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 1, "login"); if (result.type == 1 && result.platBack) { GameDataCenter_1.default.plat.instance.openId = result.platBack.openid; GameDataCenter_1.default.plat.instance.loginParams = [result.platBack.token]; console.log("后端验证成功", GameDataCenter_1.default.plat.instance.openId); // // 加载广告组件 //GameDataCenter.plat.instance.initRewardedVideoAd(AD_VIDEO_KEY.welChest) // 获取邀请者uuid var inviter = ""; GameDataCenter_1.default.plat.instance.login(inviter); } else { console.log("PlayerLogin.url 返回数据异常"); if (gameMethod_1.gameMethod.isEmpty(result.win) || gameMethod_1.gameMethod.isEmpty(result.win.msgOut)) { GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errGamePlatLogin); } } }); }, 1000); } else if (eventType == "XXGamePay") { //支付 if (dataDict.status == 0) { //充值成功 if (Config_1.default.paySuccAdokId != null) { clearInterval(Config_1.default.paySuccAdokId); Config_1.default.paySuccAdokId = null; } Config_1.default.paySuccAdokIndex = 0; Config_1.default.paySuccAdokId = setInterval(function () { Config_1.default.paySuccAdokIndex++; if (Config_1.default.paySuccAdokIndex >= 5) { clearInterval(Config_1.default.paySuccAdokId); Config_1.default.paySuccAdokId = null; } GameDataCenter_1.default.time.sendAdok(); }, 1000); } else if (dataDict.status == 1) { //充值失败 } else { //待审核中 } } else if (eventType == "XXGameLogout") { //退出登录 GameDataCenter_1.default.plat.instance.restart(); } else if (eventType == "getClipboardText") { //EventMng.emit(duihuanEvent.GetText, dataDict.msg); } else { console.log("NativeNotify OnNativeNotify not find eventType: " + eventType); } } catch (error) { console.log("NativeNotify OnNativeNotify error: " + error.stack); } }, }; return _this; } PlatformXXGame.prototype.showLoginView = function () { console.log("平台sdk初始化..."); EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.25, "login"); var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid); NativeManager_1.default.CallToNative("OnXXGameInit", {}, ""); }; // 上报用户信息 PlatformXXGame.prototype.reportUserInfo = function (res) { console.log("上报用户信息", res); }; // 上报角色数据 PlatformXXGame.prototype.reportRole = function (event) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; if (GameDataCenter_1.default.sevBack == null) { return; } if (GameDataCenter_1.default.sevBack.userInfo == null) { return; } console.log("上报角色数据:", event); var gameServerId = (_c = (_b = (_a = GameDataCenter_1.default.sevBack) === null || _a === void 0 ? void 0 : _a.userInfo) === null || _b === void 0 ? void 0 : _b.a) === null || _c === void 0 ? void 0 : _c.sid; var serverName = GameDataCenter_1.default.user.getServerNameBySid(GameDataCenter_1.default.sevBack.userInfo.a.sid) || GameDataCenter_1.default.sevBack.userInfo.a.sid; var roleId = (_f = (_e = (_d = GameDataCenter_1.default.sevBack) === null || _d === void 0 ? void 0 : _d.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid; var level = (_k = (_j = (_h = (_g = GameDataCenter_1.default.sevBack) === null || _g === void 0 ? void 0 : _g.userInfo) === null || _h === void 0 ? void 0 : _h.a) === null || _j === void 0 ? void 0 : _j.level) !== null && _k !== void 0 ? _k : 1; var roleName = (_o = (_m = (_l = GameDataCenter_1.default.sevBack) === null || _l === void 0 ? void 0 : _l.userInfo) === null || _m === void 0 ? void 0 : _m.a) === null || _o === void 0 ? void 0 : _o.name; var argList = []; argList.push({ "Name": "gameServerId", "Value": gameServerId }); argList.push({ "Name": "gameServerName", "Value": serverName }); argList.push({ "Name": "roleId", "Value": roleId }); argList.push({ "Name": "roleLevel", "Value": level.toString() }); argList.push({ "Name": "roleName", "Value": roleName }); if (event == TypeConst_1.ReportRoleType.create) { NativeManager_1.default.CallToNative("OnXXGamedCreateRole", argList, ""); } else if (event == TypeConst_1.ReportRoleType.levelup) { NativeManager_1.default.CallToNative("OnXXGamedReportRole", argList, ""); } else if (event == TypeConst_1.ReportRoleType.online) { NativeManager_1.default.CallToNative("OnXXGamedEnterGame", argList, ""); } }; PlatformXXGame.prototype.pay = function (orderId, order10cs, param) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; var gameServerId = (_c = (_b = (_a = GameDataCenter_1.default.sevBack) === null || _a === void 0 ? void 0 : _a.userInfo) === null || _b === void 0 ? void 0 : _b.a) === null || _c === void 0 ? void 0 : _c.sid; var serverName = GameDataCenter_1.default.user.getServerNameBySid(GameDataCenter_1.default.sevBack.userInfo.a.sid) || GameDataCenter_1.default.sevBack.userInfo.a.sid; var roleId = (_f = (_e = (_d = GameDataCenter_1.default.sevBack) === null || _d === void 0 ? void 0 : _d.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid; var level = (_k = (_j = (_h = (_g = GameDataCenter_1.default.sevBack) === null || _g === void 0 ? void 0 : _g.userInfo) === null || _h === void 0 ? void 0 : _h.a) === null || _j === void 0 ? void 0 : _j.level) !== null && _k !== void 0 ? _k : 1; var roleName = (_o = (_m = (_l = GameDataCenter_1.default.sevBack) === null || _l === void 0 ? void 0 : _l.userInfo) === null || _m === void 0 ? void 0 : _m.a) === null || _o === void 0 ? void 0 : _o.name; var argList = []; argList.push({ "Name": "gameServerId", "Value": gameServerId }); argList.push({ "Name": "gameServerName", "Value": serverName }); argList.push({ "Name": "itemName", "Value": param.productName }); argList.push({ "Name": "itemId", "Value": param.productId }); argList.push({ "Name": "roleId", "Value": roleId }); argList.push({ "Name": "roleLevel", "Value": level.toString() }); argList.push({ "Name": "roleName", "Value": roleName }); argList.push({ "Name": "orderId", "Value": orderId }); argList.push({ "Name": "price", "Value": param.price.toString() }); NativeManager_1.default.CallToNative("OnXXGamePay", argList, ""); }; //打开浏览器打开链接 PlatformXXGame.prototype.openUrl = function (url) { NativeManager_1.default.CallToNative("OnOpenBrowser", [{ "Name": "url", "Value": url }], ""); }; PlatformXXGame.prototype.getClipboardText = function () { NativeManager_1.default.CallToNative("getClipboardText", {}, ""); }; PlatformXXGame.prototype.reShowLogInView = function () { NativeManager_1.default.CallToNative("OnXXGameLogin", {}, ""); }; return PlatformXXGame; }(PlatformBase_1.default)); exports.default = PlatformXXGame; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvcGxhdC9QbGF0Zm9ybVhYR2FtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7QUFFSCw2Q0FBd0M7QUFDeEMsbURBQWtEO0FBQ2xELHFDQUE2RDtBQUU3RCxvQ0FBK0I7QUFDL0IsdURBQTJFO0FBQzNFLHFEQUFnSDtBQUNoSCx5REFBb0Q7QUFDcEQsb0RBQStDO0FBRS9DLGdEQUEyQztBQUMzQyx3REFBbUQ7QUFDbkQsK0NBQTBDO0FBQzFDO0lBQTRDLGtDQUFZO0lBR3BEO1FBQUEsWUFDSSxpQkFBTyxTQXFGVjtRQXBGRyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUc7WUFDckIsWUFBWTtZQUNaLGNBQWMsRUFBRSxVQUFVLFNBQVMsRUFBRSxlQUFlO2dCQUNoRCxJQUFJO29CQUNBLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEdBQUcsU0FBUyxHQUFHLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxDQUFDO29CQUMxRyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLFNBQVMsSUFBSSxhQUFhLEVBQUUsRUFBRSxJQUFJO3dCQUNsQyxrQkFBUSxDQUFDLElBQUksQ0FBQyxzQkFBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7d0JBQ3JELElBQUksUUFBTSxHQUFvQjs0QkFDMUIsR0FBRyxFQUFFLGdCQUFNLENBQUMsR0FBRzs0QkFDZixLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7eUJBQ3hDLENBQUE7d0JBQ0QsOEJBQThCO3dCQUM5QixrRUFBa0U7d0JBQ2xFLGFBQWE7d0JBQ2IsSUFBSTt3QkFDSixVQUFVLENBQUM7NEJBQ1Asd0JBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFXLENBQUMsR0FB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YSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBQ0QsV0FBVztJQUNYLGdDQUFPLEdBQVAsVUFBUSxHQUFXO1FBQ2YsdUJBQWEsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RGLENBQUM7SUFDRCx5Q0FBZ0IsR0FBaEI7UUFDSSx1QkFBYSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELHdDQUFlLEdBQWY7UUFDSSx1QkFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTCxxQkFBQztBQUFELENBM0pBLEFBMkpDLENBM0oyQyxzQkFBWSxHQTJKdkQiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbumXsumXsua4uOaIjyBTREtcblxuICovXG5cbmltcG9ydCBHYW1lY2ZnIGZyb20gXCIuLi9jb21tb24vZ2FtZUNmZ1wiO1xuaW1wb3J0IHsgZ2FtZU1ldGhvZCB9IGZyb20gXCIuLi9jb21tb24vZ2FtZU1ldGhvZFwiO1xuaW1wb3J0IHsgUGxheWVyTG9naW4sIFBsYXllckxvZ2luUHJhbSB9IGZyb20gXCIuLi9jb21tb24vWHljXCI7XG5pbXBvcnQgeyBTZXZCYWNrIH0gZnJvbSBcIi4uL2NvbW1vbi9YeXNcIjtcbmltcG9ydCBDb25maWcgZnJvbSBcIi4uL0NvbmZpZ1wiO1xuaW1wb3J0IHsgR2FtZUV2ZW50LCBMb2FkRXZlbnQsIFBsYXRFdmVudCB9IGZyb20gXCIuLi9kYXRhL2NvbnN0L0V2ZW50Q29uc3RcIjtcbmltcG9ydCB7IEFEX1ZJREVPX0tFWSwgQ29uc3RJdGVtLCBHYW1lRXJyQ29kZSwgUGF5UHJvZHVjdFBhcmFtLCBSZXBvcnRSb2xlVHlwZSB9IGZyb20gXCIuLi9kYXRhL2NvbnN0L1R5cGVDb25zdFwiO1xuaW1wb3J0IEdhbWVEYXRhQ2VudGVyIGZyb20gXCIuLi9kYXRhL0dhbWVEYXRhQ2VudGVyXCI7XG5pbXBvcnQgR2FtZUNvbnRyb2xsZXIgZnJvbSBcIi4uL0dhbWVDb250cm9sbGVyXCI7XG5pbXBvcnQgVUlIZWxwIGZyb20gXCIuLi9sb2dpYy91aS9VSUhlbHBcIjtcbmltcG9ydCBFdmVudE1uZyBmcm9tIFwiLi4vbWFuYWdlci9FdmVudE1uZ1wiO1xuaW1wb3J0IE5hdGl2ZU1hbmFnZXIgZnJvbSBcIi4uL3V0aWxzL05hdGl2ZU1hbmFnZXJcIjtcbmltcG9ydCBQbGF0Zm9ybUJhc2UgZnJvbSBcIi4vUGxhdGZvcm1CYXNlXCI7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGF0Zm9ybVhYR2FtZSBleHRlbmRzIFBsYXRmb3JtQmFzZSB7XG4gICAgcmV3YXJkVmlkZW86IGFueVxuICAgIGFkSWQ6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB3aW5kb3dbXCJOYXRpdmVOb3RpZnlcIl0gPSB7XG4gICAgICAgICAgICAvL25hdGl2ZeW5s+WPsOWbnuiwg1xuICAgICAgICAgICAgT25OYXRpdmVOb3RpZnk6IGZ1bmN0aW9uIChldmVudFR5cGUsIGV2ZW50RGF0YVN0cmluZykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmF0aXZlTm90aWZ5IE9uTmF0aXZlTm90aWZ5IGV2ZW50VHlwZTpcIiArIGV2ZW50VHlwZSArIFwiLGV2ZW50RGF0YVN0cmluZzpcIiArIGV2ZW50RGF0YVN0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhRGljdCA9IEpTT04ucGFyc2UoZXZlbnREYXRhU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcIlhYR2FtZUxvZ2luXCIpIHsgLy/nmbvlvZVcbiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDAuNzUsIFwibG9naW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXM6IFBsYXllckxvZ2luUHJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQ6IENvbmZpZy5waWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW06IFtkYXRhRGljdC51aWQsIGRhdGFEaWN0LnRva2VuXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRhdGFEaWN0LnN0YXR1cyAhPSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyclBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVDb250cm9sbGVyLm5ldHdvcmsuc2VuZChQbGF5ZXJMb2dpbi51cmwsIHBhcmFtcywgKHJlc3VsdDogU2V2QmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWQjuautemqjOivgei/lOWbnlwiLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luKSB8fCBnYW1lTWV0aG9kLmlzRW1wdHkocmVzdWx0Lndpbi5tc2dPdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyckdhbWVQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAxLCBcImxvZ2luXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSAxICYmIHJlc3VsdC5wbGF0QmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5vcGVuSWQgPSByZXN1bHQucGxhdEJhY2sub3BlbmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmxvZ2luUGFyYW1zID0gW3Jlc3VsdC5wbGF0QmFjay50b2tlbl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ZCO56uv6aqM6K+B5oiQ5YqfXCIsIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2Uub3BlbklkKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAvLyDliqDovb3lub/lkYrnu4Tku7ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5pbml0UmV3YXJkZWRWaWRlb0FkKEFEX1ZJREVPX0tFWS53ZWxDaGVzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiOt+WPlumCgOivt+iAhXV1aWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnZpdGVyID0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5sb2dpbihpbnZpdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQbGF5ZXJMb2dpbi51cmwg6L+U5Zue5pWw5o2u5byC5bi4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4pIHx8IGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luLm1zZ091dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0LnNob3dFcnJEaWFsb2coR2FtZUVyckNvZGUuZXJyR2FtZVBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBcIlhYR2FtZVBheVwiKSB7ICAvL+aUr+S7mFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFEaWN0LnN0YXR1cyA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lhYXlgLzmiJDlip9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID49IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhRGljdC5zdGF0dXMgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5YWF5YC85aSx6LSlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lvoXlrqHmoLjkuK1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBcIlhYR2FtZUxvZ291dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL+mAgOWHuueZu+W9lVxuICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5yZXN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IFwiZ2V0Q2xpcGJvYXJkVGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL0V2ZW50TW5nLmVtaXQoZHVpaHVhbkV2ZW50LkdldFRleHQsIGRhdGFEaWN0Lm1zZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIk5hdGl2ZU5vdGlmeSBPbk5hdGl2ZU5vdGlmeSBub3QgZmluZCBldmVudFR5cGU6IFwiICsgZXZlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJOYXRpdmVOb3RpZnkgT25OYXRpdmVOb3RpZnkgZXJyb3I6IFwiICsgZXJyb3Iuc3RhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93TG9naW5WaWV3KCk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZyhcIuW5s+WPsHNka+WIneWni+WMli4uLlwiKVxuICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjI1LCBcImxvZ2luXCIpXG4gICAgICAgIGxldCBwYWNrYWdlSW5mbyA9IEdhbWVjZmcucGFja2FnZUluZm8uZ2V0SXRlbShDb25maWcucGlkKVxuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uWFhHYW1lSW5pdFwiLCB7fSwgXCJcIilcbiAgICB9XG4gICAgLy8g5LiK5oql55So5oi35L+h5oGvXG4gICAgcmVwb3J0VXNlckluZm8ocmVzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5oql55So5oi35L+h5oGvXCIsIHJlcylcbiAgICB9XG4gICAgLy8g5LiK5oql6KeS6Imy5pWw5o2uXG4gICAgcmVwb3J0Um9sZShldmVudDogUmVwb3J0Um9sZVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sgPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICBpZiAoR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbyA9PSBudWxsKSB7IHJldHVybiB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5oql6KeS6Imy5pWw5o2uOlwiLCBldmVudClcbiAgICAgICAgXG4gICAgICAgIGxldCBnYW1lU2VydmVySWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8uc2lkO1xuICAgICAgICBsZXQgc2VydmVyTmFtZSA9IEdhbWVEYXRhQ2VudGVyLnVzZXIuZ2V0U2VydmVyTmFtZUJ5U2lkKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQpIHx8IEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQ7XG4gICAgICAgIGxldCByb2xlSWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8udXVpZDsgXG4gICAgICAgIGxldCBsZXZlbCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5sZXZlbCA/PyAxO1xuICAgICAgICBsZXQgcm9sZU5hbWUgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8ubmFtZTtcbiAgICAgICAgbGV0IGFyZ0xpc3QgPSBbXTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwiZ2FtZVNlcnZlcklkXCIsIFwiVmFsdWVcIjogZ2FtZVNlcnZlcklkIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJnYW1lU2VydmVyTmFtZVwiLCBcIlZhbHVlXCI6IHNlcnZlck5hbWUgfSk7XG4gICAgICAgIGFyZ0xpc3QucHVzaCh7IFwiTmFtZVwiOiBcInJvbGVJZFwiLCBcIlZhbHVlXCI6IHJvbGVJZCB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicm9sZUxldmVsXCIsIFwiVmFsdWVcIjogbGV2ZWwudG9TdHJpbmcoKSB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicm9sZU5hbWVcIiwgXCJWYWx1ZVwiOiByb2xlTmFtZSB9KTtcbiAgICAgICAgaWYgKGV2ZW50ID09IFJlcG9ydFJvbGVUeXBlLmNyZWF0ZSkge1xuICAgICAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPblhYR2FtZWRDcmVhdGVSb2xlXCIsIGFyZ0xpc3QsIFwiXCIpXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gUmVwb3J0Um9sZVR5cGUubGV2ZWx1cCkge1xuICAgICAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPblhYR2FtZWRSZXBvcnRSb2xlXCIsIGFyZ0xpc3QsIFwiXCIpXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gUmVwb3J0Um9sZVR5cGUub25saW5lKSB7XG4gICAgICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uWFhHYW1lZEVudGVyR2FtZVwiLCBhcmdMaXN0LCBcIlwiKVxuICAgICAgICB9XG4gICAgfVxuICAgIHBheShvcmRlcklkOiBzdHJpbmcsIG9yZGVyMTBjczogc3RyaW5nLCBwYXJhbTogUGF5UHJvZHVjdFBhcmFtKTogdm9pZCB7XG4gICAgICAgIGxldCBnYW1lU2VydmVySWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8uc2lkO1xuICAgICAgICBsZXQgc2VydmVyTmFtZSA9IEdhbWVEYXRhQ2VudGVyLnVzZXIuZ2V0U2VydmVyTmFtZUJ5U2lkKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQpIHx8IEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8uYS5zaWQ7XG4gICAgICAgIGxldCByb2xlSWQgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8udXVpZDsgXG4gICAgICAgIGxldCBsZXZlbCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5sZXZlbCA/PyAxO1xuICAgICAgICBsZXQgcm9sZU5hbWUgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8ubmFtZTtcbiAgICAgICAgbGV0IGFyZ0xpc3QgPSBbXTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwiZ2FtZVNlcnZlcklkXCIsIFwiVmFsdWVcIjogZ2FtZVNlcnZlcklkIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJnYW1lU2VydmVyTmFtZVwiLCBcIlZhbHVlXCI6IHNlcnZlck5hbWUgfSk7XG4gICAgICAgIGFyZ0xpc3QucHVzaCh7IFwiTmFtZVwiOiBcIml0ZW1OYW1lXCIsIFwiVmFsdWVcIjogcGFyYW0ucHJvZHVjdE5hbWUgfSk7XG4gICAgICAgIGFyZ0xpc3QucHVzaCh7IFwiTmFtZVwiOiBcIml0ZW1JZFwiLCBcIlZhbHVlXCI6IHBhcmFtLnByb2R1Y3RJZCB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicm9sZUlkXCIsIFwiVmFsdWVcIjogcm9sZUlkIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJyb2xlTGV2ZWxcIiwgXCJWYWx1ZVwiOiBsZXZlbC50b1N0cmluZygpIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJyb2xlTmFtZVwiLCBcIlZhbHVlXCI6IHJvbGVOYW1lIH0pO1xuICAgICAgICBhcmdMaXN0LnB1c2goeyBcIk5hbWVcIjogXCJvcmRlcklkXCIsIFwiVmFsdWVcIjogb3JkZXJJZCB9KTtcbiAgICAgICAgYXJnTGlzdC5wdXNoKHsgXCJOYW1lXCI6IFwicHJpY2VcIiwgXCJWYWx1ZVwiOiBwYXJhbS5wcmljZS50b1N0cmluZygpIH0pO1xuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uWFhHYW1lUGF5XCIsIGFyZ0xpc3QsIFwiXCIpXG4gICAgfVxuICAgIC8v5omT5byA5rWP6KeI5Zmo5omT5byA6ZO+5o6lXG4gICAgb3BlblVybCh1cmw6IHN0cmluZykge1xuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uT3BlbkJyb3dzZXJcIiwgW3sgXCJOYW1lXCI6IFwidXJsXCIsIFwiVmFsdWVcIjogdXJsIH1dLCBcIlwiKVxuICAgIH1cbiAgICBnZXRDbGlwYm9hcmRUZXh0KCk6IHZvaWQge1xuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcImdldENsaXBib2FyZFRleHRcIiwge30sIFwiXCIpO1xuICAgIH1cbiAgICByZVNob3dMb2dJblZpZXcoKTogdm9pZCB7XG4gICAgICAgIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiT25YWEdhbWVMb2dpblwiLCB7fSwgXCJcIik7XG4gICAgfVxuXG59Il19