(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/script/plat/PlatformWan17H5.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, '76585sLe9VEjpBRa5tDd5jd', 'PlatformWan17H5'); // script/plat/PlatformWan17H5.ts "use strict"; /* 17玩H5 */ 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 Config_1 = require("../Config"); var GameController_1 = require("../GameController"); var Xyc_1 = require("../common/Xyc"); var EventConst_1 = require("../data/const/EventConst"); var TypeConst_1 = require("../data/const/TypeConst"); var UIHelp_1 = require("../logic/ui/UIHelp"); var EventMng_1 = require("../manager/EventMng"); var PlatformBase_1 = require("./PlatformBase"); var gameMethod_1 = require("../common/gameMethod"); var GameDataCenter_1 = require("../data/GameDataCenter"); var gameCfg_1 = require("../common/gameCfg"); var PlatformWan17H5 = /** @class */ (function (_super) { __extends(PlatformWan17H5, _super); function PlatformWan17H5() { var _this = _super.call(this) || this; //监听屏幕切回来的状态 (防止切回来游戏却收不到支付成功的回调) cc.game.on(cc.game.EVENT_SHOW, function () { 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); GameDataCenter_1.default.audio.resumeMusic(); }); cc.game.on(cc.game.EVENT_HIDE, function () { GameDataCenter_1.default.audio.pauseMusic(); }); return _this; } PlatformWan17H5.prototype.getQueryString = function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) { return unescape(r[2]); } else { return null; } }; PlatformWan17H5.prototype.showLoginView = function () { var _this = this; console.log("初始化&登录SDK"); EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.25, "login"); try { var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid); var gameid = packageInfo.params[0]; var gamekey = packageInfo.params[1]; Sdk.init(gameid, gamekey); setTimeout(function () { EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.75, "login"); var a_pub = _this.getQueryString("a_pub"); var a_accountid = _this.getQueryString("a_accountid"); var a_sessionid = _this.getQueryString("a_sessionid"); if (!a_accountid || !a_sessionid) { return; } var params = { pid: Config_1.default.pid, param: [a_accountid, a_sessionid] }; GameController_1.default.network.send(Xyc_1.PlayerLogin.url, params, function (result) { console.log("后段验证返回"); 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("后端验证成功", _this.openId); GameDataCenter_1.default.plat.instance.login(); } 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); } } }); }, 3000); } catch (error) { UIHelp_1.default.ShowSystemDialog({ content: error }); } }; PlatformWan17H5.prototype.pay = function (orderId, order10cs, param) { var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid); var payUrl = packageInfo.wayhttp + "player/pay/" + Config_1.default.pid; var orderData = { callbackurl: payUrl, paymoney: param.price, custominfo: "", customorderid: orderId, productdesc: param.productDesc, productfeecode: order10cs, }; var orderDataJson = JSON.stringify(orderData); Sdk.pay(orderDataJson, function (result) { if (result.code != 0) { console.log("支付失败,失败原因:" + result.msg); } else { 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); } }); //17玩 如果有的渠道没有充值回调的,只能强行调用充值的时候就开始刷心跳包了 // if (Config.paySuccAdokId != null) { // clearInterval(Config.paySuccAdokId) // Config.paySuccAdokId = null // } // Config.paySuccAdokIndex = 0 // Config.paySuccAdokId = setInterval(() => { // Config.paySuccAdokIndex++ // if (Config.paySuccAdokIndex >= 30) { // clearInterval(Config.paySuccAdokId) // Config.paySuccAdokId = null // } // GameDataCenter.time.sendAdok() // }, 1000) }; // 上报角色数据 PlatformWan17H5.prototype.reportRole = function (event) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; if (GameDataCenter_1.default.sevBack == null) { return; } if (GameDataCenter_1.default.sevBack.userInfo == null) { return; } if (GameDataCenter_1.default.item == null) { return; } var power = GameDataCenter_1.default.zhanLi.getTotalZhanLi(GameDataCenter_1.default.sevBack); var clubName = (_d = (_c = (_b = (_a = GameDataCenter_1.default.sevBack) === null || _a === void 0 ? void 0 : _a.club) === null || _b === void 0 ? void 0 : _b.a) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : ""; var level = (_h = (_g = (_f = (_e = GameDataCenter_1.default.sevBack) === null || _e === void 0 ? void 0 : _e.userInfo) === null || _f === void 0 ? void 0 : _f.a) === null || _g === void 0 ? void 0 : _g.level) !== null && _h !== void 0 ? _h : 1; var sid = (_l = (_k = (_j = GameDataCenter_1.default.sevBack) === null || _j === void 0 ? void 0 : _j.userInfo) === null || _k === void 0 ? void 0 : _k.a) === null || _l === void 0 ? void 0 : _l.sid; var itemNum = GameDataCenter_1.default.item.getItemCount(TypeConst_1.ConstItem.gem); var roleData = { ingot: itemNum, playerid: GameDataCenter_1.default.user.uuid, factionname: clubName, viplevel: "0", servername: GameDataCenter_1.default.user.serverName, playerlevel: level, serverid: sid, playername: GameDataCenter_1.default.user.nickName, }; var roleDataJson = JSON.stringify(roleData); Sdk.uploadRoleData(roleDataJson, function (result) { if (result.code != 0) { console.log("上报失败,失败原因:" + result.msg); } else { //上报成功 } }); }; PlatformWan17H5.prototype.logout = function () { Sdk.logout(function (result) { if (result.code != 0) { console.log("退出失败,失败原因:" + result.msg); } else { //退出成功 GameDataCenter_1.default.plat.instance.restart(); } }); }; //打开浏览器打开链接 PlatformWan17H5.prototype.openUrl = function (url) { }; return PlatformWan17H5; }(PlatformBase_1.default)); exports.default = PlatformWan17H5; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvcGxhdC9QbGF0Zm9ybVdhbjE3SDUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztFQUVFOzs7Ozs7Ozs7Ozs7Ozs7QUFFRixvQ0FBK0I7QUFDL0Isb0RBQStDO0FBQy9DLHFDQUE2RDtBQUM3RCx1REFBcUQ7QUFDckQscURBQWtHO0FBQ2xHLDZDQUF3QztBQUN4QyxnREFBMkM7QUFDM0MsK0NBQTBDO0FBRTFDLG1EQUFrRDtBQUNsRCx5REFBb0Q7QUFDcEQsNkNBQXdDO0FBRXhDO0lBQTZDLG1DQUFZO0lBRXJEO1FBQUEsWUFDSSxpQkFBTyxTQXVCVjtRQXJCRyxpQ0FBaUM7UUFDakMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxnQkFBTSxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUU7Z0JBQzlCLGFBQWEsQ0FBQyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUNuQyxnQkFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7YUFDOUI7WUFDRCxnQkFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtZQUMzQixnQkFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7Z0JBQy9CLGdCQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtnQkFDekIsSUFBSSxnQkFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsRUFBRTtvQkFDOUIsYUFBYSxDQUFDLGdCQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7b0JBQ25DLGdCQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtpQkFDOUI7Z0JBQ0Qsd0JBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDbEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ1Isd0JBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENB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QWMsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUMxQyxXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsR0FBRztZQUNiLFVBQVUsRUFBRSx3QkFBYyxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQzNDLENBQUM7UUFFRixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFVBQVUsTUFBTTtZQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUM7aUJBQU07Z0JBQ0gsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0lBRUQsZ0NBQU0sR0FBTjtRQUNJLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxNQUFNO1lBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMxQztpQkFBTTtnQkFDSCxNQUFNO2dCQUNOLHdCQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTthQUN6QztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFdBQVc7SUFDWCxpQ0FBTyxHQUFQLFVBQVEsR0FBVztJQUVuQixDQUFDO0lBQ0wsc0JBQUM7QUFBRCxDQTlMQSxBQThMQyxDQTlMNEMsc0JBQVksR0E4THhEIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLypcbjE3546pSDVcbiovXG5cbmltcG9ydCBDb25maWcgZnJvbSBcIi4uL0NvbmZpZ1wiO1xuaW1wb3J0IEdhbWVDb250cm9sbGVyIGZyb20gXCIuLi9HYW1lQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGxheWVyTG9naW4sIFBsYXllckxvZ2luUHJhbSB9IGZyb20gXCIuLi9jb21tb24vWHljXCI7XG5pbXBvcnQgeyBMb2FkRXZlbnQgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9FdmVudENvbnN0XCI7XG5pbXBvcnQgeyBDb25zdEl0ZW0sIEdhbWVFcnJDb2RlLCBQYXlQcm9kdWN0UGFyYW0sIFJlcG9ydFJvbGVUeXBlIH0gZnJvbSBcIi4uL2RhdGEvY29uc3QvVHlwZUNvbnN0XCI7XG5pbXBvcnQgVUlIZWxwIGZyb20gXCIuLi9sb2dpYy91aS9VSUhlbHBcIjtcbmltcG9ydCBFdmVudE1uZyBmcm9tIFwiLi4vbWFuYWdlci9FdmVudE1uZ1wiO1xuaW1wb3J0IFBsYXRmb3JtQmFzZSBmcm9tIFwiLi9QbGF0Zm9ybUJhc2VcIjtcbmltcG9ydCB7IFNldkJhY2sgfSBmcm9tIFwiLi4vY29tbW9uL1h5c1wiO1xuaW1wb3J0IHsgZ2FtZU1ldGhvZCB9IGZyb20gXCIuLi9jb21tb24vZ2FtZU1ldGhvZFwiO1xuaW1wb3J0IEdhbWVEYXRhQ2VudGVyIGZyb20gXCIuLi9kYXRhL0dhbWVEYXRhQ2VudGVyXCI7XG5pbXBvcnQgR2FtZWNmZyBmcm9tIFwiLi4vY29tbW9uL2dhbWVDZmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhdGZvcm1XYW4xN0g1IGV4dGVuZHMgUGxhdGZvcm1CYXNlIHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpXG5cbiAgICAgICAgLy/nm5HlkKzlsY/luZXliIflm57mnaXnmoTnirbmgIEgKOmYsuatouWIh+Wbnuadpea4uOaIj+WNtOaUtuS4jeWIsOaUr+S7mOaIkOWKn+eahOWbnuiwgylcbiAgICAgICAgY2MuZ2FtZS5vbihjYy5nYW1lLkVWRU5UX1NIT1csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID0gMFxuICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXgrK1xuICAgICAgICAgICAgICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJbmRleCA+PSA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5hdWRpby5yZXN1bWVNdXNpYygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjYy5nYW1lLm9uKGNjLmdhbWUuRVZFTlRfSElERSwgKCkgPT4ge1xuICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIuYXVkaW8ucGF1c2VNdXNpYygpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UXVlcnlTdHJpbmcobmFtZSkge1xuICAgICAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIihefCYpXCIgKyBuYW1lICsgXCI9KFteJl0qKSgmfCQpXCIsIFwiaVwiKTtcbiAgICAgICAgdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5tYXRjaChyZWcpO1xuICAgICAgICBpZiAociAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5lc2NhcGUoclsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dMb2dpblZpZXcoKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5Yid5aeL5YyWJueZu+W9lVNES1wiKVxuICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjI1LCBcImxvZ2luXCIpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGFja2FnZUluZm8gPSBHYW1lY2ZnLnBhY2thZ2VJbmZvLmdldEl0ZW0oQ29uZmlnLnBpZClcbiAgICAgICAgICAgIGxldCBnYW1laWQgPSBwYWNrYWdlSW5mby5wYXJhbXNbMF07XG4gICAgICAgICAgICBsZXQgZ2FtZWtleSA9IHBhY2thZ2VJbmZvLnBhcmFtc1sxXTtcbiAgICAgICAgICAgIFNkay5pbml0KGdhbWVpZCwgZ2FtZWtleSk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDAuNzUsIFwibG9naW5cIilcblxuICAgICAgICAgICAgICAgIGxldCBhX3B1YiA9IHRoaXMuZ2V0UXVlcnlTdHJpbmcoXCJhX3B1YlwiKVxuICAgICAgICAgICAgICAgIGxldCBhX2FjY291bnRpZCA9IHRoaXMuZ2V0UXVlcnlTdHJpbmcoXCJhX2FjY291bnRpZFwiKVxuICAgICAgICAgICAgICAgIGxldCBhX3Nlc3Npb25pZCA9IHRoaXMuZ2V0UXVlcnlTdHJpbmcoXCJhX3Nlc3Npb25pZFwiKVxuXG4gICAgICAgICAgICAgICAgaWYgKCFhX2FjY291bnRpZCB8fCAhYV9zZXNzaW9uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJhbXM6IFBsYXllckxvZ2luUHJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcGlkOiBDb25maWcucGlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbTogW2FfYWNjb3VudGlkLCBhX3Nlc3Npb25pZF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgR2FtZUNvbnRyb2xsZXIubmV0d29yay5zZW5kKFBsYXllckxvZ2luLnVybCwgcGFyYW1zLCAocmVzdWx0OiBTZXZCYWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ZCO5q616aqM6K+B6L+U5ZueXCIpXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSAhPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4pIHx8IGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luLm1zZ091dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0LnNob3dFcnJEaWFsb2coR2FtZUVyckNvZGUuZXJyR2FtZVBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDEsIFwibG9naW5cIilcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IDEgJiYgcmVzdWx0LnBsYXRCYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLm9wZW5JZCA9IHJlc3VsdC5wbGF0QmFjay5vcGVuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2UubG9naW5QYXJhbXMgPSBbcmVzdWx0LnBsYXRCYWNrLnRva2VuXVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlkI7nq6/pqozor4HmiJDlip9cIiwgdGhpcy5vcGVuSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmxvZ2luKClcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGxheWVyTG9naW4udXJsIOi/lOWbnuaVsOaNruW8guW4uFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luKSB8fCBnYW1lTWV0aG9kLmlzRW1wdHkocmVzdWx0Lndpbi5tc2dPdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyckdhbWVQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBVSUhlbHAuU2hvd1N5c3RlbURpYWxvZyh7IGNvbnRlbnQ6IGVycm9yIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXkob3JkZXJJZDogc3RyaW5nLCBvcmRlcjEwY3M6IHN0cmluZywgcGFyYW06IFBheVByb2R1Y3RQYXJhbSk6IHZvaWQge1xuXG5cbiAgICAgICAgbGV0IHBhY2thZ2VJbmZvID0gR2FtZWNmZy5wYWNrYWdlSW5mby5nZXRJdGVtKENvbmZpZy5waWQpXG4gICAgICAgIGxldCBwYXlVcmw6IHN0cmluZyA9IHBhY2thZ2VJbmZvLndheWh0dHAgKyBcInBsYXllci9wYXkvXCIgKyBDb25maWcucGlkXG4gICAgICAgIGxldCBvcmRlckRhdGEgPSB7XG4gICAgICAgICAgICBjYWxsYmFja3VybDogcGF5VXJsLC8v5ri45oiP5pa55YWF5YC85Zue6LCD5Zyw5Z2AXG4gICAgICAgICAgICBwYXltb25leTogcGFyYW0ucHJpY2UsLy/muLjmiI/lhYXlgLzph5Hpop1cbiAgICAgICAgICAgIGN1c3RvbWluZm86IFwiXCIsLy/muLjmiI/pgI/kvKDlj4LmlbDvvIzlm57osIPml7bljp/moLfov5Tlm55cbiAgICAgICAgICAgIGN1c3RvbW9yZGVyaWQ6IG9yZGVySWQsLy/orqLljZXlj7dcbiAgICAgICAgICAgIHByb2R1Y3RkZXNjOiBwYXJhbS5wcm9kdWN0RGVzYywvL+WFheWAvOaPj+i/sFxuICAgICAgICAgICAgcHJvZHVjdGZlZWNvZGU6IG9yZGVyMTBjcywgLy8g6K6h6LS554K5SUTvvIjoi7nmnpznmoTllYblk4FpZO+8iVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBvcmRlckRhdGFKc29uID0gSlNPTi5zdHJpbmdpZnkob3JkZXJEYXRhKTtcblxuICAgICAgICBTZGsucGF5KG9yZGVyRGF0YUpzb24sIGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuY29kZSAhPSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlK/ku5jlpLHotKXvvIzlpLHotKXljp/lm6DvvJpcIiArIHJlc3VsdC5tc2cpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPSAwXG4gICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID49IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgICAgICAgICB9LCAxMDAwKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLzE3546pIOWmguaenOacieeahOa4oOmBk+ayoeacieWFheWAvOWbnuiwg+eahO+8jOWPquiDveW8uuihjOiwg+eUqOWFheWAvOeahOaXtuWAmeWwseW8gOWni+WIt+W/g+i3s+WMheS6hlxuICAgICAgICAvLyBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAvLyAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgLy8gICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAvLyB9XG4gICAgICAgIC8vIENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID0gMFxuICAgICAgICAvLyBDb25maWcucGF5U3VjY0Fkb2tJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgLy8gICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgLy8gICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJbmRleCA+PSAzMCkge1xuICAgICAgICAvLyAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgIC8vICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBudWxsXG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgLy8gfSwgMTAwMClcblxuICAgIH1cbiAgICAvLyDkuIrmiqXop5LoibLmlbDmja5cbiAgICByZXBvcnRSb2xlKGV2ZW50OiBSZXBvcnRSb2xlVHlwZSk6IHZvaWQge1xuXG4gICAgICAgIGlmIChHYW1lRGF0YUNlbnRlci5zZXZCYWNrID09IG51bGwpIHsgcmV0dXJuIH1cbiAgICAgICAgaWYgKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8gPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICBpZiAoR2FtZURhdGFDZW50ZXIuaXRlbSA9PSBudWxsKSB7IHJldHVybiB9XG5cbiAgICAgICAgbGV0IHBvd2VyID0gR2FtZURhdGFDZW50ZXIuemhhbkxpLmdldFRvdGFsWmhhbkxpKEdhbWVEYXRhQ2VudGVyLnNldkJhY2spO1xuICAgICAgICBsZXQgY2x1Yk5hbWUgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy5jbHViPy5hPy5uYW1lID8/IFwiXCI7XG4gICAgICAgIGxldCBsZXZlbCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5sZXZlbCA/PyAxO1xuICAgICAgICBsZXQgc2lkID0gR2FtZURhdGFDZW50ZXIuc2V2QmFjaz8udXNlckluZm8/LmE/LnNpZDtcbiAgICAgICAgbGV0IGl0ZW1OdW0gPSBHYW1lRGF0YUNlbnRlci5pdGVtLmdldEl0ZW1Db3VudChDb25zdEl0ZW0uZ2VtKTtcbiAgICAgICAgbGV0IHJvbGVEYXRhID0ge1xuICAgICAgICAgICAgaW5nb3Q6IGl0ZW1OdW0sIC8v5Ymp5L2Z5ri45oiP5Luj5biBIFxuICAgICAgICAgICAgcGxheWVyaWQ6IEdhbWVEYXRhQ2VudGVyLnVzZXIudXVpZCwgLy/op5LoibJJRFxuICAgICAgICAgICAgZmFjdGlvbm5hbWU6IGNsdWJOYW1lLC8v5biu5rS+5ZCN56ewXG4gICAgICAgICAgICB2aXBsZXZlbDogXCIwXCIsLy9WSVDnrYnnuqdcbiAgICAgICAgICAgIHNlcnZlcm5hbWU6IEdhbWVEYXRhQ2VudGVyLnVzZXIuc2VydmVyTmFtZSwvL+WMuuacjeWQjeensFxuICAgICAgICAgICAgcGxheWVybGV2ZWw6IGxldmVsLC8v6KeS6Imy562J57qnXG4gICAgICAgICAgICBzZXJ2ZXJpZDogc2lkLC8v5Yy65pyNSURcbiAgICAgICAgICAgIHBsYXllcm5hbWU6IEdhbWVEYXRhQ2VudGVyLnVzZXIubmlja05hbWUsLy/op5LoibLlkI3np7BcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcm9sZURhdGFKc29uID0gSlNPTi5zdHJpbmdpZnkocm9sZURhdGEpO1xuICAgICAgICBTZGsudXBsb2FkUm9sZURhdGEocm9sZURhdGFKc29uLCBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmNvZGUgIT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5oql5aSx6LSl77yM5aSx6LSl5Y6f5Zug77yaXCIgKyByZXN1bHQubXNnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy/kuIrmiqXmiJDlip9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBsb2dvdXQoKTogdm9pZCB7XG4gICAgICAgIFNkay5sb2dvdXQoZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5jb2RlICE9IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumAgOWHuuWksei0pe+8jOWksei0peWOn+WboO+8mlwiICsgcmVzdWx0Lm1zZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8v6YCA5Ye65oiQ5YqfXG4gICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5yZXN0YXJ0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvL+aJk+W8gOa1j+iniOWZqOaJk+W8gOmTvuaOpVxuICAgIG9wZW5VcmwodXJsOiBzdHJpbmcpIHtcblxuICAgIH1cbn0iXX0=