123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/plat/PlatformWan17.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, '2114e99uJhL9p9wz94O1Atj', 'PlatformWan17');
- // script/plat/PlatformWan17.ts
- "use strict";
- /**
- 17玩 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 PlatformWan17 = /** @class */ (function (_super) {
- __extends(PlatformWan17, _super);
- function PlatformWan17() {
- 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 == "17WanLogin") { //17登录
- if (dataDict.status == "0") {
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.75, "login");
- var params_1 = {
- pid: Config_1.default.pid,
- param: [dataDict.accountid, dataDict.sessionid]
- };
- // 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 (dataDict.status == "1") {
- //玩家取消登录,显示登录按钮
- EventMng_1.default.emit(EventConst_1.LoadEvent.SHOW_LOGIN_BTN);
- }
- else if (dataDict.status == "2") {
- //玩家注销,退出游戏
- GameDataCenter_1.default.plat.instance.restart();
- }
- else {
- GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errPlatLogin);
- }
- }
- else if (eventType == "17WanPay") { //17支付
- 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 == "17WanShare") { //17分享
- }
- else if (eventType == "17WanAdReward") { //广告
- GameDataCenter_1.default.adVideo.onXiadanSucc(); // 改成直接调用,不回调了
- }
- else if (eventType == "17WanAdLoad") { //广告加载完成
- console.log("17WanAdLoad adUnitId:", this.adId);
- if (!gameMethod_1.gameMethod.isEmpty(this.adId)) {
- NativeManager_1.default.CallToNative("On17ShowAd", [{ "Name": "sceneId", "Value": this.adId }], "");
- }
- }
- else if (eventType == "17WanChannel") { //获取渠道名称
- //GameDataCenter.plat.instance.channel = dataDict.channel
- }
- 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;
- }
- PlatformWan17.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("On17WanInit", {}, "");
- };
- // 上报用户信息
- PlatformWan17.prototype.reportUserInfo = function (res) {
- console.log("上报用户信息", res);
- };
- // 上报角色数据
- PlatformWan17.prototype.reportRole = function (event) {
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
- if (GameDataCenter_1.default.sevBack == null) {
- return;
- }
- if (GameDataCenter_1.default.sevBack.userInfo == null) {
- return;
- }
- console.log("上报角色数据:", event);
- var onlineTime = 0;
- if (GameDataCenter_1.default.time.onlineTime > 0) {
- onlineTime = GameDataCenter_1.default.time.sevTime - GameDataCenter_1.default.time.onlineTime;
- }
- var sceneValue = 0;
- if (event == TypeConst_1.ReportRoleType.create) {
- sceneValue = 1;
- }
- else if (event == TypeConst_1.ReportRoleType.levelup) {
- sceneValue = 2;
- }
- 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 sex = (_o = (_m = GameDataCenter_1.default.sevBack.userInfo) === null || _m === void 0 ? void 0 : _m.a) === null || _o === void 0 ? void 0 : _o.sex;
- var exp = (_q = (_p = GameDataCenter_1.default.sevBack.actJingJie) === null || _p === void 0 ? void 0 : _p.a) === null || _q === void 0 ? void 0 : _q.exp;
- var iscz = (_t = (_s = (_r = GameDataCenter_1.default.sevBack.userInfo) === null || _r === void 0 ? void 0 : _r.a) === null || _s === void 0 ? void 0 : _s.iscz) !== null && _t !== void 0 ? _t : 0;
- var regtime = (_v = (_u = GameDataCenter_1.default.sevBack.userInfo) === null || _u === void 0 ? void 0 : _u.a) === null || _v === void 0 ? void 0 : _v.regtime;
- var userInfo17 = {
- ingot: "",
- 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,
- campId: "",
- roleSex: sex,
- careerId: "",
- experience: exp,
- coin: itemNum,
- payment: iscz,
- roleCTime: regtime,
- sceneValue: sceneValue,
- };
- NativeManager_1.default.CallToNative("On17WanOutInGame", [{ "Name": "userInfo", "Value": JSON.stringify(userInfo17) }], "");
- };
- PlatformWan17.prototype.pay = function (orderId, order10cs, param) {
- var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid);
- var feePoint = order10cs;
- var payUrl = packageInfo.wayhttp + "player/pay/" + Config_1.default.pid;
- NativeManager_1.default.CallToNative("On17WanPay", [{ "Name": "orderId", "Value": orderId }, { "Name": "url", "Value": payUrl }, { "Name": "sum", "Value": param.price.toString() }, { "Name": "feePoint", "Value": feePoint }, { "Name": "desc", "Value": param.productDesc }], "");
- //17玩 xiao7特殊处理,调支付就开始轮询,降低支付到账延迟
- // if (Config.paySuccAdokId != null) {
- // clearInterval(Config.paySuccAdokId)
- // Config.paySuccAdokId = null
- // }
- // Config.paySuccAdokIndex = 0
- // Config.paySuccAdokId = setInterval(() => {
- // Config.paySuccAdokIndex++
- // if (Config.paySuccAdokIndex >= 20) {
- // clearInterval(Config.paySuccAdokId)
- // Config.paySuccAdokId = null
- // }
- // GameDataCenter.time.sendAdok()
- // }, 1000)
- };
- PlatformWan17.prototype.initRewardedVideoAd = function (adkey) {
- // GameDataCenter.plat.instance.adUnitId = GameDataCenter.adVideo.getAdUnitID(adkey)
- // NativeManager.CallToNative("On17LoadAd",[{"Name":"sceneId", "Value":GameDataCenter.plat.instance.adUnitId}],"")
- };
- PlatformWan17.prototype.showRewardAd = function (adId, kid, order11Id) {
- this.adId = adId;
- NativeManager_1.default.CallToNative("On17ShowAd", [{ "Name": "sceneId", "Value": this.adId }], "");
- };
- //打开浏览器打开链接
- PlatformWan17.prototype.openUrl = function (url) {
- NativeManager_1.default.CallToNative("OnOpenBrowser", [{ "Name": "url", "Value": url }], "");
- };
- //看运营提供什么 提供手Q链接就用这个 , 提供网址链接就用浏览器打开
- PlatformWan17.prototype.addQQ = function (url) {
- NativeManager_1.default.CallToNative("OnAddQQ", [{ "Name": "url", "Value": url }], "");
- };
- PlatformWan17.prototype.joinQQGroup = function (url, cb) {
- NativeManager_1.default.CallToNative("OnJoinQQGroup", [{ "Name": "url", "Value": url }], "");
- if (cb) {
- cb();
- }
- };
- PlatformWan17.prototype.getChannel = function () {
- NativeManager_1.default.CallToNative("OnGetChannel", [], "");
- };
- PlatformWan17.prototype.share = function (title, imageUrl, query, contents, hashtag_ids, app_id, group_label_id) {
- var data = {
- "title": title,
- "imageUrl": imageUrl,
- "query": query,
- "contents": contents,
- "hashtag_ids": hashtag_ids,
- "app_id": app_id,
- "group_label_id": group_label_id,
- };
- //NativeManager.CallToNative("OnShare2Tap",[{"Name":"data", "Value":JSON.stringify(data)}],"")//直接分享 (不存网图到本地)
- NativeManager_1.default.CallToNative("OnSaveUrlImg", [{ "Name": "data", "Value": JSON.stringify(data) }], ""); // 存图并分享 (存图到本地再拉起分享)
- };
- PlatformWan17.prototype.getClipboardText = function () {
- NativeManager_1.default.CallToNative("getClipboardText", {}, "");
- };
- PlatformWan17.prototype.reShowLogInView = function () {
- NativeManager_1.default.CallToNative("On17WanLogin", {}, "");
- };
- return PlatformWan17;
- }(PlatformBase_1.default));
- exports.default = PlatformWan17;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvcGxhdC9QbGF0Zm9ybVdhbjE3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0dBR0c7Ozs7Ozs7Ozs7Ozs7OztBQUVILDZDQUF3QztBQUN4QyxtREFBa0Q7QUFDbEQscUNBQTZEO0FBRTdELG9DQUErQjtBQUMvQix1REFBMkU7QUFDM0UscURBQWdIO0FBQ2hILHlEQUFvRDtBQUNwRCxvREFBK0M7QUFFL0MsZ0RBQTJDO0FBQzNDLHdEQUFtRDtBQUNuRCwrQ0FBMEM7QUFDMUM7SUFBMkMsaUNBQVk7SUFHbkQ7UUFBQSxZQUNJLGlCQUFPLFNBeUdWO1FBeEdHLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRztZQUNyQixZQUFZO1lBQ1osY0FBYyxFQUFFLFVBQVUsU0FBUyxFQUFFLGVBQWU7Z0JBQ2hELElBQUk7b0JBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsR0FBRyxTQUFTLEdBQUcsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLENBQUM7b0JBQzFHLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzNDLElBQUksU0FBUyxJQUFJLFlBQVksRUFBRSxFQUFFLE1BQU07d0JBQ25DLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7NEJBQ3hCLGtCQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFTLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTs0QkFDckQsSUFBSSxRQUFNLEdBQW9CO2dDQUMxQixHQUFHLEVBQUUsZ0JBQU0sQ0FBQyxHQUFHO2dDQUNmLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQzs2QkFDbEQsQ0FBQTs0QkFDRCw4QkFBOEI7NEJBQzlCLGtFQUFrRTs0QkFDbEUsYUFBYTs0QkFDYixJQUFJOzRCQUNKLFVBQVUsQ0FBQztnQ0FDUCx3QkFB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QUFDLENBQUEsQ0FBQSxxQkFBcUI7SUFDNUgsQ0FBQztJQUNELHdDQUFnQixHQUFoQjtRQUNJLHVCQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsdUNBQWUsR0FBZjtRQUNJLHVCQUFhLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVMLG9CQUFDO0FBQUQsQ0F4T0EsQUF3T0MsQ0F4TzBDLHNCQUFZLEdBd090RCIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuMTfnjqkgU0RLXG5cbiAqL1xuXG5pbXBvcnQgR2FtZWNmZyBmcm9tIFwiLi4vY29tbW9uL2dhbWVDZmdcIjtcbmltcG9ydCB7IGdhbWVNZXRob2QgfSBmcm9tIFwiLi4vY29tbW9uL2dhbWVNZXRob2RcIjtcbmltcG9ydCB7IFBsYXllckxvZ2luLCBQbGF5ZXJMb2dpblByYW0gfSBmcm9tIFwiLi4vY29tbW9uL1h5Y1wiO1xuaW1wb3J0IHsgU2V2QmFjayB9IGZyb20gXCIuLi9jb21tb24vWHlzXCI7XG5pbXBvcnQgQ29uZmlnIGZyb20gXCIuLi9Db25maWdcIjtcbmltcG9ydCB7IEdhbWVFdmVudCwgTG9hZEV2ZW50LCBQbGF0RXZlbnQgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9FdmVudENvbnN0XCI7XG5pbXBvcnQgeyBBRF9WSURFT19LRVksIENvbnN0SXRlbSwgR2FtZUVyckNvZGUsIFBheVByb2R1Y3RQYXJhbSwgUmVwb3J0Um9sZVR5cGUgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9UeXBlQ29uc3RcIjtcbmltcG9ydCBHYW1lRGF0YUNlbnRlciBmcm9tIFwiLi4vZGF0YS9HYW1lRGF0YUNlbnRlclwiO1xuaW1wb3J0IEdhbWVDb250cm9sbGVyIGZyb20gXCIuLi9HYW1lQ29udHJvbGxlclwiO1xuaW1wb3J0IFVJSGVscCBmcm9tIFwiLi4vbG9naWMvdWkvVUlIZWxwXCI7XG5pbXBvcnQgRXZlbnRNbmcgZnJvbSBcIi4uL21hbmFnZXIvRXZlbnRNbmdcIjtcbmltcG9ydCBOYXRpdmVNYW5hZ2VyIGZyb20gXCIuLi91dGlscy9OYXRpdmVNYW5hZ2VyXCI7XG5pbXBvcnQgUGxhdGZvcm1CYXNlIGZyb20gXCIuL1BsYXRmb3JtQmFzZVwiO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhdGZvcm1XYW4xNyBleHRlbmRzIFBsYXRmb3JtQmFzZSB7XG4gICAgcmV3YXJkVmlkZW86IGFueVxuICAgIGFkSWQ6IHN0cmluZztcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB3aW5kb3dbXCJOYXRpdmVOb3RpZnlcIl0gPSB7XG4gICAgICAgICAgICAvL25hdGl2ZeW5s+WPsOWbnuiwg1xuICAgICAgICAgICAgT25OYXRpdmVOb3RpZnk6IGZ1bmN0aW9uIChldmVudFR5cGUsIGV2ZW50RGF0YVN0cmluZykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTmF0aXZlTm90aWZ5IE9uTmF0aXZlTm90aWZ5IGV2ZW50VHlwZTpcIiArIGV2ZW50VHlwZSArIFwiLGV2ZW50RGF0YVN0cmluZzpcIiArIGV2ZW50RGF0YVN0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhRGljdCA9IEpTT04ucGFyc2UoZXZlbnREYXRhU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcIjE3V2FuTG9naW5cIikgeyAvLzE355m75b2VXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YURpY3Quc3RhdHVzID09IFwiMFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRNbmcuZW1pdChMb2FkRXZlbnQuTE9BRF9QUk9HUkVTUywgMC43NSwgXCJsb2dpblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXM6IFBsYXllckxvZ2luUHJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkOiBDb25maWcucGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbTogW2RhdGFEaWN0LmFjY291bnRpZCwgZGF0YURpY3Quc2Vzc2lvbmlkXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGF0YURpY3Quc3RhdHVzICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyclBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lQ29udHJvbGxlci5uZXR3b3JrLnNlbmQoUGxheWVyTG9naW4udXJsLCBwYXJhbXMsIChyZXN1bHQ6IFNldkJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ZCO5q616aqM6K+B6L+U5ZueXCIsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnYW1lTWV0aG9kLmlzRW1wdHkocmVzdWx0LndpbikgfHwgZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4ubXNnT3V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0LnNob3dFcnJEaWFsb2coR2FtZUVyckNvZGUuZXJyR2FtZVBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAxLCBcImxvZ2luXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gMSAmJiByZXN1bHQucGxhdEJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLm9wZW5JZCA9IHJlc3VsdC5wbGF0QmFjay5vcGVuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmxvZ2luUGFyYW1zID0gW3Jlc3VsdC5wbGF0QmFjay50b2tlbl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWQjuerr+mqjOivgeaIkOWKn1wiLCBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLm9wZW5JZClcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC8vIOWKoOi9veW5v+WRiue7hOS7tlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5pbml0UmV3YXJkZWRWaWRlb0FkKEFEX1ZJREVPX0tFWS53ZWxDaGVzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDojrflj5bpgoDor7fogIV1dWlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGludml0ZXIgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5sb2dpbihpbnZpdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlBsYXllckxvZ2luLnVybCDov5Tlm57mlbDmja7lvILluLhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4pIHx8IGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luLm1zZ091dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyckdhbWVQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFEaWN0LnN0YXR1cyA9PSBcIjFcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v546p5a625Y+W5raI55m75b2V77yM5pi+56S655m75b2V5oyJ6ZKuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRNbmcuZW1pdChMb2FkRXZlbnQuU0hPV19MT0dJTl9CVE4pXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFEaWN0LnN0YXR1cyA9PSBcIjJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v546p5a625rOo6ZSA77yM6YCA5Ye65ri45oiPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5yZXN0YXJ0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuc2hvd0VyckRpYWxvZyhHYW1lRXJyQ29kZS5lcnJQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gXCIxN1dhblBheVwiKSB7ICAvLzE35pSv5LuYXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YURpY3Quc3RhdHVzID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WFheWAvOaIkOWKn1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJbmRleCA9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPj0gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnRpbWUuc2VuZEFkb2soKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFEaWN0LnN0YXR1cyA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lhYXlgLzlpLHotKVcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+W+heWuoeaguOS4rVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IFwiMTdXYW5TaGFyZVwiKSB7ICAvLzE35YiG5LqrXG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gXCIxN1dhbkFkUmV3YXJkXCIpIHsgIC8v5bm/5ZGKXG4gICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5hZFZpZGVvLm9uWGlhZGFuU3VjYygpIC8vIOaUueaIkOebtOaOpeiwg+eUqCzkuI3lm57osIPkuoZcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gXCIxN1dhbkFkTG9hZFwiKSB7ICAvL+W5v+WRiuWKoOi9veWujOaIkFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIxN1dhbkFkTG9hZCBhZFVuaXRJZDpcIiwgdGhpcy5hZElkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnYW1lTWV0aG9kLmlzRW1wdHkodGhpcy5hZElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiT24xN1Nob3dBZFwiLCBbeyBcIk5hbWVcIjogXCJzY2VuZUlkXCIsIFwiVmFsdWVcIjogdGhpcy5hZElkIH1dLCBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBcIjE3V2FuQ2hhbm5lbFwiKSB7ICAvL+iOt+WPlua4oOmBk+WQjeensFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9HYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmNoYW5uZWwgPSBkYXRhRGljdC5jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IFwiZ2V0Q2xpcGJvYXJkVGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL0V2ZW50TW5nLmVtaXQoZHVpaHVhbkV2ZW50LkdldFRleHQsIGRhdGFEaWN0Lm1zZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIk5hdGl2ZU5vdGlmeSBPbk5hdGl2ZU5vdGlmeSBub3QgZmluZCBldmVudFR5cGU6IFwiICsgZXZlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJOYXRpdmVOb3RpZnkgT25OYXRpdmVOb3RpZnkgZXJyb3I6IFwiICsgZXJyb3Iuc3RhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93TG9naW5WaWV3KCk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZyhcIuW5s+WPsHNka+WIneWni+WMli4uLlwiKVxuICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjI1LCBcImxvZ2luXCIpXG4gICAgICAgIGxldCBwYWNrYWdlSW5mbyA9IEdhbWVjZmcucGFja2FnZUluZm8uZ2V0SXRlbShDb25maWcucGlkKVxuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uMTdXYW5Jbml0XCIsIHt9LCBcIlwiKVxuICAgIH1cbiAgICAvLyDkuIrmiqXnlKjmiLfkv6Hmga9cbiAgICByZXBvcnRVc2VySW5mbyhyZXMpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCLkuIrmiqXnlKjmiLfkv6Hmga9cIiwgcmVzKVxuICAgIH1cbiAgICAvLyDkuIrmiqXop5LoibLmlbDmja5cbiAgICByZXBvcnRSb2xlKGV2ZW50OiBSZXBvcnRSb2xlVHlwZSk6IHZvaWQge1xuICAgICAgICBpZiAoR2FtZURhdGFDZW50ZXIuc2V2QmFjayA9PSBudWxsKSB7IHJldHVybiB9XG4gICAgICAgIGlmIChHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvID09IG51bGwpIHsgcmV0dXJuIH1cbiAgICAgICAgY29uc29sZS5sb2coXCLkuIrmiqXop5LoibLmlbDmja46XCIsIGV2ZW50KVxuICAgICAgICBsZXQgb25saW5lVGltZSA9IDBcbiAgICAgICAgaWYgKEdhbWVEYXRhQ2VudGVyLnRpbWUub25saW5lVGltZSA+IDApIHtcbiAgICAgICAgICAgIG9ubGluZVRpbWUgPSBHYW1lRGF0YUNlbnRlci50aW1lLnNldlRpbWUgLSBHYW1lRGF0YUNlbnRlci50aW1lLm9ubGluZVRpbWVcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2NlbmVWYWx1ZSA9IDA7XG4gICAgICAgIGlmIChldmVudCA9PSBSZXBvcnRSb2xlVHlwZS5jcmVhdGUpIHtcbiAgICAgICAgICAgIHNjZW5lVmFsdWUgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50ID09IFJlcG9ydFJvbGVUeXBlLmxldmVsdXApIHtcbiAgICAgICAgICAgIHNjZW5lVmFsdWUgPSAyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwb3dlciA9IEdhbWVEYXRhQ2VudGVyLnpoYW5MaS5nZXRUb3RhbFpoYW5MaShHYW1lRGF0YUNlbnRlci5zZXZCYWNrKTtcbiAgICAgICAgbGV0IGNsdWJOYW1lID0gR2FtZURhdGFDZW50ZXIuc2V2QmFjaz8uY2x1Yj8uYT8ubmFtZSA/PyBcIlwiO1xuICAgICAgICBsZXQgbGV2ZWwgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy51c2VySW5mbz8uYT8ubGV2ZWwgPz8gMTtcbiAgICAgICAgbGV0IHNpZCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5zaWQ7XG4gICAgICAgIGxldCBpdGVtTnVtID0gR2FtZURhdGFDZW50ZXIuaXRlbS5nZXRJdGVtQ291bnQoQ29uc3RJdGVtLmdlbSk7XG4gICAgICAgIGxldCBzZXggPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5zZXg7XG4gICAgICAgIGxldCBleHAgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLmFjdEppbmdKaWU/LmE/LmV4cDtcbiAgICAgICAgbGV0IGlzY3ogPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5pc2N6ID8/IDA7XG4gICAgICAgIGxldCByZWd0aW1lID0gR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8ucmVndGltZTtcbiAgICAgICAgbGV0IHVzZXJJbmZvMTcgPSB7XG4gICAgICAgICAgICBpbmdvdDogXCJcIiwvL+a4uOaIj+S9meminVxuICAgICAgICAgICAgcGxheWVySWQ6IEdhbWVEYXRhQ2VudGVyLnVzZXIudXVpZCwvL+inkuiJsklEXG4gICAgICAgICAgICBmYWN0aW9uTmFtZTogY2x1Yk5hbWUsLy/luK7mtL5cbiAgICAgICAgICAgIHZpcExldmVsOiBcIjBcIixcbiAgICAgICAgICAgIHNlcnZlck5hbWU6IEdhbWVEYXRhQ2VudGVyLnVzZXIuc2VydmVyTmFtZSxcbiAgICAgICAgICAgIHBsYXllckxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgIHNlcnZlcklkOiBzaWQsXG4gICAgICAgICAgICBwbGF5ZXJOYW1lOiBHYW1lRGF0YUNlbnRlci51c2VyLm5pY2tOYW1lLFxuICAgICAgICAgICAgY2FtcElkOiBcIlwiLC8v6Zi16JClXG4gICAgICAgICAgICByb2xlU2V4OiBzZXgsXG4gICAgICAgICAgICBjYXJlZXJJZDogXCJcIixcbiAgICAgICAgICAgIGV4cGVyaWVuY2U6IGV4cCxcbiAgICAgICAgICAgIGNvaW46IGl0ZW1OdW0sXG4gICAgICAgICAgICBwYXltZW50OiBpc2N6LFxuICAgICAgICAgICAgcm9sZUNUaW1lOiByZWd0aW1lLFxuICAgICAgICAgICAgc2NlbmVWYWx1ZTogc2NlbmVWYWx1ZSxcbiAgICAgICAgfVxuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uMTdXYW5PdXRJbkdhbWVcIiwgW3sgXCJOYW1lXCI6IFwidXNlckluZm9cIiwgXCJWYWx1ZVwiOiBKU09OLnN0cmluZ2lmeSh1c2VySW5mbzE3KSB9XSwgXCJcIilcbiAgICB9XG4gICAgcGF5KG9yZGVySWQ6IHN0cmluZywgb3JkZXIxMGNzOiBzdHJpbmcsIHBhcmFtOiBQYXlQcm9kdWN0UGFyYW0pOiB2b2lkIHtcbiAgICAgICAgbGV0IHBhY2thZ2VJbmZvID0gR2FtZWNmZy5wYWNrYWdlSW5mby5nZXRJdGVtKENvbmZpZy5waWQpXG4gICAgICAgIGxldCBmZWVQb2ludCA9IG9yZGVyMTBjcztcbiAgICAgICAgbGV0IHBheVVybDogc3RyaW5nID0gcGFja2FnZUluZm8ud2F5aHR0cCArIFwicGxheWVyL3BheS9cIiArIENvbmZpZy5waWRcbiAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPbjE3V2FuUGF5XCIsIFt7IFwiTmFtZVwiOiBcIm9yZGVySWRcIiwgXCJWYWx1ZVwiOiBvcmRlcklkIH0sIHsgXCJOYW1lXCI6IFwidXJsXCIsIFwiVmFsdWVcIjogcGF5VXJsIH0sIHsgXCJOYW1lXCI6IFwic3VtXCIsIFwiVmFsdWVcIjogcGFyYW0ucHJpY2UudG9TdHJpbmcoKSB9LCB7IFwiTmFtZVwiOiBcImZlZVBvaW50XCIsIFwiVmFsdWVcIjogZmVlUG9pbnQgfSwgeyBcIk5hbWVcIjogXCJkZXNjXCIsIFwiVmFsdWVcIjogcGFyYW0ucHJvZHVjdERlc2MgfV0sIFwiXCIpXG4gICAgICAgIC8vMTfnjqkgeGlhbzfnibnmrorlpITnkIbvvIzosIPmlK/ku5jlsLHlvIDlp4vova7or6LvvIzpmY3kvY7mlK/ku5jliLDotKblu7bov59cbiAgICAgICAgLy8gaWYgKENvbmZpZy5wYXlTdWNjQWRva0lkICE9IG51bGwpIHtcbiAgICAgICAgLy8gICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgIC8vICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBDb25maWcucGF5U3VjY0Fkb2tJbmRleCA9IDBcbiAgICAgICAgLy8gQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vICAgICBDb25maWcucGF5U3VjY0Fkb2tJbmRleCsrXG4gICAgICAgIC8vICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPj0gMjApIHtcbiAgICAgICAgLy8gICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAvLyAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgR2FtZURhdGFDZW50ZXIudGltZS5zZW5kQWRvaygpXG4gICAgICAgIC8vIH0sIDEwMDApXG5cbiAgICB9XG5cbiAgICBpbml0UmV3YXJkZWRWaWRlb0FkKGFka2V5OiBBRF9WSURFT19LRVkpIHtcbiAgICAgICAgLy8gR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5hZFVuaXRJZCA9IEdhbWVEYXRhQ2VudGVyLmFkVmlkZW8uZ2V0QWRVbml0SUQoYWRrZXkpXG4gICAgICAgIC8vIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiT24xN0xvYWRBZFwiLFt7XCJOYW1lXCI6XCJzY2VuZUlkXCIsIFwiVmFsdWVcIjpHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmFkVW5pdElkfV0sXCJcIilcbiAgICB9XG4gICAgc2hvd1Jld2FyZEFkKGFkSWQ6IHN0cmluZywga2lkOiBzdHJpbmcsIG9yZGVyMTFJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRJZCA9IGFkSWQ7XG4gICAgICAgIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiT24xN1Nob3dBZFwiLCBbeyBcIk5hbWVcIjogXCJzY2VuZUlkXCIsIFwiVmFsdWVcIjogdGhpcy5hZElkIH1dLCBcIlwiKVxuICAgIH1cbiAgICAvL+aJk+W8gOa1j+iniOWZqOaJk+W8gOmTvuaOpVxuICAgIG9wZW5VcmwodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPbk9wZW5Ccm93c2VyXCIsIFt7IFwiTmFtZVwiOiBcInVybFwiLCBcIlZhbHVlXCI6IHVybCB9XSwgXCJcIilcbiAgICB9XG4gICAgLy/nnIvov5DokKXmj5Dkvpvku4DkuYgg5o+Q5L6b5omLUemTvuaOpeWwseeUqOi/meS4qiDvvIwg5o+Q5L6b572R5Z2A6ZO+5o6l5bCx55So5rWP6KeI5Zmo5omT5byAXG4gICAgYWRkUVEodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPbkFkZFFRXCIsIFt7IFwiTmFtZVwiOiBcInVybFwiLCBcIlZhbHVlXCI6IHVybCB9XSwgXCJcIilcbiAgICB9XG4gICAgam9pblFRR3JvdXAodXJsOiBzdHJpbmcsIGNiPzogRnVuY3Rpb24pIHtcbiAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPbkpvaW5RUUdyb3VwXCIsIFt7IFwiTmFtZVwiOiBcInVybFwiLCBcIlZhbHVlXCI6IHVybCB9XSwgXCJcIilcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldENoYW5uZWwoKSB7XG4gICAgICAgIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiT25HZXRDaGFubmVsXCIsIFtdLCBcIlwiKVxuICAgIH1cbiAgICBzaGFyZSh0aXRsZTogc3RyaW5nLCBpbWFnZVVybDogc3RyaW5nLCBxdWVyeTogc3RyaW5nLCBjb250ZW50cz86IHN0cmluZywgaGFzaHRhZ19pZHM/OiBzdHJpbmcsIGFwcF9pZD86IHN0cmluZywgZ3JvdXBfbGFiZWxfaWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICBcInRpdGxlXCI6IHRpdGxlLFxuICAgICAgICAgICAgXCJpbWFnZVVybFwiOiBpbWFnZVVybCxcbiAgICAgICAgICAgIFwicXVlcnlcIjogcXVlcnksXG4gICAgICAgICAgICBcImNvbnRlbnRzXCI6IGNvbnRlbnRzLFxuICAgICAgICAgICAgXCJoYXNodGFnX2lkc1wiOiBoYXNodGFnX2lkcyxcbiAgICAgICAgICAgIFwiYXBwX2lkXCI6IGFwcF9pZCxcbiAgICAgICAgICAgIFwiZ3JvdXBfbGFiZWxfaWRcIjogZ3JvdXBfbGFiZWxfaWQsXG4gICAgICAgIH1cbiAgICAgICAgLy9OYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uU2hhcmUyVGFwXCIsW3tcIk5hbWVcIjpcImRhdGFcIiwgXCJWYWx1ZVwiOkpTT04uc3RyaW5naWZ5KGRhdGEpfV0sXCJcIikvL+ebtOaOpeWIhuS6qyAo5LiN5a2Y572R5Zu+5Yiw5pys5ZywKVxuICAgICAgICBOYXRpdmVNYW5hZ2VyLkNhbGxUb05hdGl2ZShcIk9uU2F2ZVVybEltZ1wiLCBbeyBcIk5hbWVcIjogXCJkYXRhXCIsIFwiVmFsdWVcIjogSlNPTi5zdHJpbmdpZnkoZGF0YSkgfV0sIFwiXCIpLy8g5a2Y5Zu+5bm25YiG5LqrICjlrZjlm77liLDmnKzlnLDlho3mi4notbfliIbkuqspXG4gICAgfVxuICAgIGdldENsaXBib2FyZFRleHQoKTogdm9pZCB7XG4gICAgICAgIE5hdGl2ZU1hbmFnZXIuQ2FsbFRvTmF0aXZlKFwiZ2V0Q2xpcGJvYXJkVGV4dFwiLCB7fSwgXCJcIik7XG4gICAgfVxuICAgIHJlU2hvd0xvZ0luVmlldygpOiB2b2lkIHtcbiAgICAgICAgTmF0aXZlTWFuYWdlci5DYWxsVG9OYXRpdmUoXCJPbjE3V2FuTG9naW5cIiwge30sIFwiXCIpO1xuICAgIH1cblxufSJdfQ==
|