123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/plat/PlatformDianHunWeChat.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, '097c79dOwRJR7H3BB3hyi4I', 'PlatformDianHunWeChat');
- // script/plat/PlatformDianHunWeChat.ts
- "use strict";
- 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 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 UIHelp_1 = require("../logic/ui/UIHelp");
- var EventMng_1 = require("../manager/EventMng");
- var PlatformBase_1 = require("./PlatformBase");
- var PlatformDianHunWeChat = /** @class */ (function (_super) {
- __extends(PlatformDianHunWeChat, _super);
- function PlatformDianHunWeChat() {
- var _this = _super.call(this) || this;
- // 屏幕常亮
- wx.setKeepScreenOn({
- keepScreenOn: true
- });
- // 热启动,或唤醒时触发
- wx.onShow(function (res) {
- if (_this.isGoPay) {
- _this.isGoPay = false;
- 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();
- // IOS系统,在后台切回时似乎回失去常亮功能,这里再调用一次
- wx.setKeepScreenOn({
- keepScreenOn: true
- });
- EventMng_1.default.emit(EventConst_1.GameEvent.ON_SHOW_APP);
- console.log("-----wx.onShow 回调触发:", res);
- });
- // 切到后台时触发
- wx.onHide(function (res) {
- GameDataCenter_1.default.plat.instance.reportRole(TypeConst_1.ReportRoleType.offline);
- // this.dealQuery(res)
- GameDataCenter_1.default.audio.stopAllEffects();
- GameDataCenter_1.default.audio.pauseMusic();
- });
- // cc.game.on(cc.game.EVENT_SHOW, () => {
- // if (this.isGoPay) {
- // this.isGoPay = false
- // if (Config.paySuccAdokId != null) {
- // clearInterval(Config.paySuccAdokId)
- // Config.paySuccAdokId = null
- // }
- // Config.paySuccAdokIndex = 0
- // Config.paySuccAdokId = setInterval(() => {
- // Config.paySuccAdokIndex++
- // if (Config.paySuccAdokIndex >= 5) {
- // clearInterval(Config.paySuccAdokId)
- // Config.paySuccAdokId = null
- // }
- // GameDataCenter.time.sendAdok()
- // }, 1000)
- // }
- // })
- // 小程序更新机制 https://developers.weixin.qq.com/minigame/dev/guide/runtime/update-mechanism.html
- var updateManager = wx.getUpdateManager();
- updateManager.onCheckForUpdate(function (res) {
- // 请求完新版本信息的回调
- console.log("请求完新版本信息的回调", res.hasUpdate);
- });
- updateManager.onUpdateReady(function () {
- wx.showModal({
- title: '更新提示',
- content: '新版本已经准备好,是否重启应用?',
- success: function (res) {
- if (res.confirm) {
- // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
- updateManager.applyUpdate();
- }
- }
- });
- });
- updateManager.onUpdateFailed(function () {
- // 新版本下载失败
- });
- //需要初始化广告
- if (gameMethod_1.gameMethod.isEmpty(GameController_1.default.rewardedVideoAd)) {
- _this.initRewardedVideoAd("adunit-7684634ced33efb2");
- }
- return _this;
- }
- PlatformDianHunWeChat.prototype.showLoginView = function () {
- var _this = this;
- console.log("初始化&登录SDK => ", window['dhSDK'].system.platform);
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.25, "login");
- GameDataCenter_1.default.plat.instance.deviceOS = window['dhSDK'].system.platform;
- try {
- setTimeout(function () {
- // console.log("----拉取登录----")
- window['dhSDK'].login({
- success: function (response) {
- // console.log("用户信息如下:");
- // console.log(response.data);
- // console.log("用户微信唯一标识openId如下:");
- // console.log(response.data.openId)
- // console.log("login data=",JSON.stringify(response))
- // EventMng.emit(LoadEvent.LOAD_MESSAGE, JSON.stringify(result))
- var data = response.data;
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.75, "login");
- var params = {
- pid: Config_1.default.pid,
- param: [data.accountId, data.loginType, data.token, window['dhSDK'].deviceOS, window['dhSDK'].deviceId, window['dhSDK'].channel, window['dhSDK'].mainChannel, window['dhSDK'].secondChannel]
- };
- setTimeout(function () {
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- var eventId = "420000::GAME_CLIENT_LOGIN_START"; // 表示SDK客户端上报的启动事件
- // 事件参数
- var eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "SDK启动";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- 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) {
- _this.openId = result.platBack.openid;
- _this.loginParams = [result.platBack.token];
- console.log("后端验证成功", _this.openId);
- _this.login();
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- var eventId = "450000::GAME_CLIENT_LOGIN_SUCCESS"; // 表示SDK客户端上报的启动事件
- // 事件参数
- var eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "游戏客户端登录成功";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- }
- 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);
- }
- }
- });
- // 首先通过 sdk.getSetting 查询用户是否已授权获取昵称头像
- window['dhSDK'].getSetting({
- success: function (setting) {
- // 判断用户之前是否已同意授权获取其个人信息
- // 若已经授权,可以直接调用 sdk.getUserInfo 获取昵称头像
- if (setting.authSetting && setting.authSetting["scope.userInfo"]) {
- console.log("已授权");
- GameDataCenter_1.default.plat.instance.hasAuthUserInfo = true;
- }
- else {
- wx.getUserInfo({
- lang: "zh_CN",
- success: function (res) {
- GameDataCenter_1.default.plat.instance.reportUserInfo(res);
- },
- fail: function () { }
- });
- }
- // 整理订阅消息
- if (setting.subscriptionsSetting && setting.subscriptionsSetting.itemSettings) {
- GameDataCenter_1.default.subscribe.recordSubscribeAlwaysSettings(setting.subscriptionsSetting.itemSettings);
- }
- }
- });
- }, 1000);
- },
- fail: function (error) {
- console.log(error);
- UIHelp_1.default.ShowTips(error["message"]);
- },
- complete: function () {
- // do something here...
- }
- });
- window["dhSDK"].setShare({
- title: "",
- imageUrl: "https://mmocgame.qpic.cn/wechatgame/IPo1swnSw7jm37KrqskuianLoGjy7jJ0XyAFbowVKTNicA5TIibl71JQS5D9ZrJvbQZ/0",
- imageUrlId: "2+FmTyUWS9CB3UmprmJE7A==",
- imagePreviewUrl: "https://mmocgame.qpic.cn/wechatgame/IPo1swnSw7jm37KrqskuianLoGjy7jJ0XyAFbowVKTNicA5TIibl71JQS5D9ZrJvbQZ/0",
- imagePreviewUrlId: "2+FmTyUWS9CB3UmprmJE7A==",
- query: ""
- });
- }, 1000);
- }
- catch (error) {
- UIHelp_1.default.ShowTips("----" + error);
- }
- };
- PlatformDianHunWeChat.prototype.pay = function (orderId, order10cs, param) {
- var _this = this;
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
- var successFunc = function () {
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
- //拉取支付成功
- console.log("电魂支付成功");
- window['dhSDK'].uploadRoleInfo({
- type: "PAY_SUCCESS",
- areaId: parseInt((_b = (_a = GameDataCenter_1.default.sevBack.userInfo) === null || _a === void 0 ? void 0 : _a.a) === null || _b === void 0 ? void 0 : _b.sid),
- areaName: GameDataCenter_1.default.sevBack.qufuList[(_d = (_c = GameDataCenter_1.default.sevBack.userInfo) === null || _c === void 0 ? void 0 : _c.a) === null || _d === void 0 ? void 0 : _d.sid].name,
- roleId: (_f = (_e = GameDataCenter_1.default.sevBack.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid,
- roleName: (_h = (_g = GameDataCenter_1.default.sevBack.userInfo) === null || _g === void 0 ? void 0 : _g.a) === null || _h === void 0 ? void 0 : _h.name,
- roleLevel: (_k = (_j = GameDataCenter_1.default.sevBack.userInfo) === null || _j === void 0 ? void 0 : _j.a) === null || _k === void 0 ? void 0 : _k.level,
- roleVipLevel: 1,
- // 以下参数仅在 type 为 PAY_SUCCESS 时所需,以上为通用参数
- itemId: param.productId,
- itemName: param.productName,
- orderId: orderId,
- orderPrice: param.price * 100,
- currency: "CNY",
- payType: "weixinpay" // 支付方式
- }, function (params) {
- console.log(params);
- });
- _this.isGoPay = false;
- 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);
- };
- var time = GameDataCenter_1.default.time.sevTime;
- var orderInfo = {
- cardMessageTitle: param.productName,
- cardMessageImage: "http://static.m3guo.com/om/minigame/wx/payment.png",
- areaId: parseInt((_b = (_a = GameDataCenter_1.default.sevBack.userInfo) === null || _a === void 0 ? void 0 : _a.a) === null || _b === void 0 ? void 0 : _b.sid),
- areaName: GameDataCenter_1.default.sevBack.qufuList[(_d = (_c = GameDataCenter_1.default.sevBack.userInfo) === null || _c === void 0 ? void 0 : _c.a) === null || _d === void 0 ? void 0 : _d.sid].name,
- roleId: parseInt((_f = (_e = GameDataCenter_1.default.sevBack.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid),
- roleName: (_h = (_g = GameDataCenter_1.default.sevBack.userInfo) === null || _g === void 0 ? void 0 : _g.a) === null || _h === void 0 ? void 0 : _h.name,
- roleLevel: (_k = (_j = GameDataCenter_1.default.sevBack.userInfo) === null || _j === void 0 ? void 0 : _j.a) === null || _k === void 0 ? void 0 : _k.level,
- itemId: param.productId,
- itemName: param.productName,
- itemNum: 1,
- itemPrice: param.price * 100,
- currency: "CNY",
- rate: 10,
- memo: orderId,
- remark: Config_1.default.pid,
- success: successFunc,
- fail: function (error) {
- // 此处返回接口调用失败的错误信息,error.code为cancel时,表示用户主动点击了取消按钮,此时可以不向用户弹出提示
- if (error.code == "cancel") {
- return;
- }
- // 此处可向用户弹出接口返回的错误消息或统一弹出“支付失败”
- window['dhSDK'].modal.message(error.message);
- },
- complete: function (result) {
- // do something here...
- }
- };
- console.log("调用电魂支付接口=>", JSON.stringify(orderInfo));
- this.isGoPay = true;
- window['dhSDK'].pay(orderInfo);
- };
- // 上报角色数据
- PlatformDianHunWeChat.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 isCreateRole = false;
- switch (event) {
- case TypeConst_1.ReportRoleType.create:
- isCreateRole = true;
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- var eventId = "450001::GAME_CLIENT_CREATING_A_ROLE"; // 表示SDK客户端上报的启动事件
- // 事件参数
- var eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "游戏客户端创角成功";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- window['dhSDK'].uploadRoleInfo({
- type: "CREATE_ROLE",
- areaId: parseInt((_b = (_a = GameDataCenter_1.default.sevBack.userInfo) === null || _a === void 0 ? void 0 : _a.a) === null || _b === void 0 ? void 0 : _b.sid),
- areaName: GameDataCenter_1.default.sevBack.qufuList[(_d = (_c = GameDataCenter_1.default.sevBack.userInfo) === null || _c === void 0 ? void 0 : _c.a) === null || _d === void 0 ? void 0 : _d.sid].name,
- roleId: (_f = (_e = GameDataCenter_1.default.sevBack.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.uuid,
- roleName: (_h = (_g = GameDataCenter_1.default.sevBack.userInfo) === null || _g === void 0 ? void 0 : _g.a) === null || _h === void 0 ? void 0 : _h.name,
- roleLevel: (_k = (_j = GameDataCenter_1.default.sevBack.userInfo) === null || _j === void 0 ? void 0 : _j.a) === null || _k === void 0 ? void 0 : _k.level,
- roleVipLevel: 1,
- }, function (params) {
- console.log(params);
- });
- break;
- case TypeConst_1.ReportRoleType.levelup:
- window['dhSDK'].uploadRoleInfo({
- type: "LEVEL_UP",
- areaId: parseInt((_m = (_l = GameDataCenter_1.default.sevBack.userInfo) === null || _l === void 0 ? void 0 : _l.a) === null || _m === void 0 ? void 0 : _m.sid),
- areaName: GameDataCenter_1.default.sevBack.qufuList[(_p = (_o = GameDataCenter_1.default.sevBack.userInfo) === null || _o === void 0 ? void 0 : _o.a) === null || _p === void 0 ? void 0 : _p.sid].name,
- roleId: (_r = (_q = GameDataCenter_1.default.sevBack.userInfo) === null || _q === void 0 ? void 0 : _q.a) === null || _r === void 0 ? void 0 : _r.uuid,
- roleName: (_t = (_s = GameDataCenter_1.default.sevBack.userInfo) === null || _s === void 0 ? void 0 : _s.a) === null || _t === void 0 ? void 0 : _t.name,
- roleLevel: (_v = (_u = GameDataCenter_1.default.sevBack.userInfo) === null || _u === void 0 ? void 0 : _u.a) === null || _v === void 0 ? void 0 : _v.level,
- roleVipLevel: 1,
- }, function (params) {
- console.log(params);
- });
- break;
- case TypeConst_1.ReportRoleType.offline:
- break;
- case TypeConst_1.ReportRoleType.online:
- break;
- case TypeConst_1.ReportRoleType.other:
- break;
- default:
- break;
- }
- if (isCreateRole) {
- // window['dhSDK'].analytics.register({
- // accountId: window['dhSDK'].userInfo.accountId,
- // extendParams: {}
- // }, () => {
- // // console.log(params);
- // });
- }
- };
- PlatformDianHunWeChat.prototype.openService = function () {
- var _a, _b, _c, _d, _e, _f, _g, _h;
- window['dhSDK'].openCustomerService({
- areaId: parseInt((_b = (_a = GameDataCenter_1.default.sevBack.userInfo) === null || _a === void 0 ? void 0 : _a.a) === null || _b === void 0 ? void 0 : _b.sid),
- roleId: (_d = (_c = GameDataCenter_1.default.sevBack.userInfo) === null || _c === void 0 ? void 0 : _c.a) === null || _d === void 0 ? void 0 : _d.uuid,
- roleName: (_f = (_e = GameDataCenter_1.default.sevBack.userInfo) === null || _e === void 0 ? void 0 : _e.a) === null || _f === void 0 ? void 0 : _f.name,
- roleLevel: (_h = (_g = GameDataCenter_1.default.sevBack.userInfo) === null || _g === void 0 ? void 0 : _g.a) === null || _h === void 0 ? void 0 : _h.level,
- success: function (response) {
- console.log(response);
- },
- fail: function (error) {
- console.log(error);
- },
- complete: function (result) {
- // do something here...
- }
- });
- };
- // 订阅消息
- PlatformDianHunWeChat.prototype.setSubscribe = function (tmplIds, ids) {
- };
- PlatformDianHunWeChat.prototype.initRewardedVideoAd = function (adkey) {
- console.log("初始化广告实例");
- //创建激励视频广告实例;建议提前创建好广告实例,在需要展示的时候直接调用实例的 show 方法展示即可
- GameController_1.default.rewardedVideoAd = window['dhSDK'].createRewardedVideoAd({
- adUnitId: adkey,
- adPlatform: "weixin",
- adPosition: "",
- onLoad: function (response) {
- console.log("initRewardedVideoAd:" + response.code); // 响应状态码,此处为0,表示加载成功
- },
- onClose: function (response) {
- console.log(response.code); // 响应状态码,此处为0
- console.log(response.data); // 响应数据
- console.log(response.data.isCompleted); // 广告任务是否已完成,true 表示已完成,false 表示未完成
- // 用户已完成广告任务,即广告正常播放结束
- if (response.data.isCompleted) {
- // 这里可以通知游戏服务器下发广告奖励
- GameDataCenter_1.default.adVideo.onXiadanSucc();
- }
- // 用户未完成广告任务,即广告播放中途退出
- else {
- // 这里可以提示用户尚未完成广告播放
- }
- },
- onError: function (error) {
- console.log(error.code); // 响应状态码,此处为非0状态码
- console.log(error.message); // 错误消息
- }
- });
- };
- //视频广告
- PlatformDianHunWeChat.prototype.showRewardAd = function (adkey, kid, order11Id) {
- //用于加载广告
- var loadRewardedVideoAd = function (options, times) {
- // 先判断 rewardedVideoAd 是否存在再使用
- // 因为当用户的客户端基础库版本低于 2.0.4 时,调用 sdkInstance.createRewardedVideoAd 接口将返回 undefined
- if (!GameController_1.default.rewardedVideoAd) {
- return window['dhSDK'].modal.message("暂不支持激励视频广告");
- }
- // 手动重新加载广告
- GameController_1.default.rewardedVideoAd.load(function (response) {
- // 响应状态码 response.code 为 0 时表示加载成功,可再次调用 show 方法进行展示
- if (response.code == 0) {
- showRewardedVideoAd(options, times);
- }
- // 其他非 0 状态码均表示加载失败,可向用户弹出错误消息 response.message,亦可自定义失败提示
- else {
- window['dhSDK'].modal.message(response.message);
- }
- });
- };
- //用于展示广告
- var showRewardedVideoAd = function (options, times) {
- // 先判断 rewardedVideoAd 是否存在再使用
- // 因为当用户的客户端基础库版本低于 2.0.4 时,调用 sdkInstance.createRewardedVideoAd 接口将返回 undefined
- if (!GameController_1.default.rewardedVideoAd) {
- return window['dhSDK'].modal.message("暂不支持激励视频广告");
- }
- // 广告实例的 show 方法用于展示广告,默认是隐藏的
- GameController_1.default.rewardedVideoAd.show(options, function (response) {
- // 响应状态码 response.code 为 0 时表示展示成功
- if (response.code == 0) {
- console.log("广告展示成功");
- }
- // 其他非 0 状态码均表示展示失败,可尝试利用实例的 load 方法手动重新加载,并在加载成功后再次调用 show 方法进行展示
- else {
- // 重试次数大于0时进行重试
- if (times > 0) {
- loadRewardedVideoAd(options, times--);
- }
- // 反之弹出错误消息 response.message,亦可自定义失败提示
- else {
- window['dhSDK'].modal.message(response.message);
- }
- }
- });
- };
- showRewardedVideoAd({ adPosition: "" }, 3);
- };
- PlatformDianHunWeChat.prototype.checkMsg = function (str, cb) {
- // if (gameMethod.isEmpty(this.mint)) {
- // let cfg = Gamecfg.sensitiveInfo.pool
- // let sessionidInfo = Object.values(cfg)
- // let allSessionidStr = []
- // for (let i = 0; i < sessionidInfo.length; i++) {
- // allSessionidStr.push(sessionidInfo[i].desc)
- // }
- // this.mint = new Mint(allSessionidStr)
- // }
- // try {
- // let tempStr = str.replace(" ","")
- // tempStr = tempStr.replace("&","")
- // const status = this.mint.verify(tempStr)
- // console.log(status) // false
- // if (status) {
- // cb()
- // } else {
- // UIHelp.ShowTips("输入文字带有敏感词,请重新输入")
- // }
- // } catch (error) {
- // UIHelp.ShowTips("输入文字带有敏感词,请重新输入")
- // }
- cb();
- };
- return PlatformDianHunWeChat;
- }(PlatformBase_1.default));
- exports.default = PlatformDianHunWeChat;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvcGxhdC9QbGF0Zm9ybURpYW5IdW5XZUNoYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsbURBQWtEO0FBQ2xELHFDQUE2RDtBQUU3RCxvQ0FBK0I7QUFDL0IsdURBQWdFO0FBQ2hFLHFEQUF1RjtBQUN2Rix5REFBb0Q7QUFDcEQsb0RBQStDO0FBQy9DLDZDQUF3QztBQUN4QyxnREFBMkM7QUFDM0MsK0NBQTBDO0FBRTFDO0lBQW1ELHlDQUFZO0lBRzNEO1FBQUEsWUFDSSxpQkFBTyxTQWlGVjtRQWhGRyxPQUFPO1FBQ1AsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUNmLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLGFBQWE7UUFDYixFQUFFLENBQUMsTUFBTSxDQUFDLFVBQUEsR0FBRztZQUNULElBQUksS0FBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZCxLQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtnQkFDcEIsSUFBSSxnQkFBTSxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUU7b0JBQzlCLGFBQWEsQ0FBQyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO29CQUNuQyxnQkFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7aUJBQzlCO2dCQUNELGdCQUFNLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFBO2dCQUMzQixnQkFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7b0JBQy9CLGdCQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtvQkFDekIsSUFBSSxnQkFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsRUFBRTt3QkFDOUIsYUFBYSxDQUFDLGdCQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7d0JBQ25DLGdCQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtxQkFDOUI7b0JBQ0Qsd0JBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7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Q0FBQyxDQUFDO3FCQUNuRDtpQkFDSjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBQ0YsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELHdDQUFRLEdBQVIsVUFBUyxHQUFXLEVBQUUsRUFBWTtRQUM5Qix1Q0FBdUM7UUFDdkMsMkNBQTJDO1FBQzNDLDZDQUE2QztRQUM3QywrQkFBK0I7UUFDL0IsdURBQXVEO1FBQ3ZELHNEQUFzRDtRQUN0RCxRQUFRO1FBQ1IsNENBQTRDO1FBQzVDLElBQUk7UUFDSixRQUFRO1FBQ1Isd0NBQXdDO1FBQ3hDLHdDQUF3QztRQUN4QywrQ0FBK0M7UUFDL0Msb0NBQW9DO1FBQ3BDLG9CQUFvQjtRQUNwQixlQUFlO1FBQ2YsZUFBZTtRQUNmLDZDQUE2QztRQUM3QyxRQUFRO1FBQ1Isb0JBQW9CO1FBQ3BCLHlDQUF5QztRQUN6QyxJQUFJO1FBQ0osRUFBRSxFQUFFLENBQUE7SUFDUixDQUFDO0lBQ0wsNEJBQUM7QUFBRCxDQXZkQSxBQXVkQyxDQXZka0Qsc0JBQVksR0F1ZDlEIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlj5jmgIHniYjnlLXprYLlsI/muLjmiI/niYjmnKwgc2Rr6YWN572uXG4gKiBcbiAqL1xuaW1wb3J0IE1pbnQgZnJvbSBcIi4uL3V0aWxzL21pbnRGaWx0ZXIvaW5kZXhcIjtcbmltcG9ydCB7IGdhbWVNZXRob2QgfSBmcm9tIFwiLi4vY29tbW9uL2dhbWVNZXRob2RcIjtcbmltcG9ydCB7IFBsYXllckxvZ2luLCBQbGF5ZXJMb2dpblByYW0gfSBmcm9tIFwiLi4vY29tbW9uL1h5Y1wiO1xuaW1wb3J0IHsgU2V2QmFjayB9IGZyb20gXCIuLi9jb21tb24vWHlzXCI7XG5pbXBvcnQgQ29uZmlnIGZyb20gXCIuLi9Db25maWdcIjtcbmltcG9ydCB7IEdhbWVFdmVudCwgTG9hZEV2ZW50IH0gZnJvbSBcIi4uL2RhdGEvY29uc3QvRXZlbnRDb25zdFwiO1xuaW1wb3J0IHsgR2FtZUVyckNvZGUsIFBheVByb2R1Y3RQYXJhbSwgUmVwb3J0Um9sZVR5cGUgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9UeXBlQ29uc3RcIjtcbmltcG9ydCBHYW1lRGF0YUNlbnRlciBmcm9tIFwiLi4vZGF0YS9HYW1lRGF0YUNlbnRlclwiO1xuaW1wb3J0IEdhbWVDb250cm9sbGVyIGZyb20gXCIuLi9HYW1lQ29udHJvbGxlclwiO1xuaW1wb3J0IFVJSGVscCBmcm9tIFwiLi4vbG9naWMvdWkvVUlIZWxwXCI7XG5pbXBvcnQgRXZlbnRNbmcgZnJvbSBcIi4uL21hbmFnZXIvRXZlbnRNbmdcIjtcbmltcG9ydCBQbGF0Zm9ybUJhc2UgZnJvbSBcIi4vUGxhdGZvcm1CYXNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYXRmb3JtRGlhbkh1bldlQ2hhdCBleHRlbmRzIFBsYXRmb3JtQmFzZSB7XG4gICAgaXNHb1BheTogYm9vbGVhblxuICAgIG1pbnQ6IE1pbnQ7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICAgICAgLy8g5bGP5bmV5bi45LquXG4gICAgICAgIHd4LnNldEtlZXBTY3JlZW5Pbih7XG4gICAgICAgICAgICBrZWVwU2NyZWVuT246IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgLy8g54Ot5ZCv5YqoLOaIluWUpOmGkuaXtuinpuWPkVxuICAgICAgICB3eC5vblNob3cocmVzID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzR29QYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzR29QYXkgPSBmYWxzZVxuICAgICAgICAgICAgICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJbmRleCA9IDBcbiAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXgrK1xuICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPj0gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnRpbWUuc2VuZEFkb2soKVxuICAgICAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5hdWRpby5yZXN1bWVNdXNpYygpXG4gICAgICAgICAgICAvLyBJT1Pns7vnu58s5Zyo5ZCO5Y+w5YiH5Zue5pe25Ly85LmO5Zue5aSx5Y675bi45Lqu5Yqf6IO9LOi/memHjOWGjeiwg+eUqOS4gOasoVxuICAgICAgICAgICAgd3guc2V0S2VlcFNjcmVlbk9uKHtcbiAgICAgICAgICAgICAgICBrZWVwU2NyZWVuT246IHRydWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBFdmVudE1uZy5lbWl0KEdhbWVFdmVudC5PTl9TSE9XX0FQUClcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiLS0tLS13eC5vblNob3cg5Zue6LCD6Kem5Y+ROlwiLCByZXMpXG4gICAgICAgIH0pXG4gICAgICAgIC8vIOWIh+WIsOWQjuWPsOaXtuinpuWPkVxuICAgICAgICB3eC5vbkhpZGUocmVzID0+IHtcbiAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2UucmVwb3J0Um9sZShSZXBvcnRSb2xlVHlwZS5vZmZsaW5lKVxuICAgICAgICAgICAgLy8gdGhpcy5kZWFsUXVlcnkocmVzKVxuICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIuYXVkaW8uc3RvcEFsbEVmZmVjdHMoKVxuICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIuYXVkaW8ucGF1c2VNdXNpYygpXG4gICAgICAgIH0pXG4gICAgICAgIC8vIGNjLmdhbWUub24oY2MuZ2FtZS5FVkVOVF9TSE9XLCAoKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAodGhpcy5pc0dvUGF5KSB7XG4gICAgICAgIC8vICAgICAgICAgdGhpcy5pc0dvUGF5ID0gZmFsc2VcbiAgICAgICAgLy8gICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAvLyAgICAgICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAvLyAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPSAwXG4gICAgICAgIC8vICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgLy8gICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID49IDUpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgLy8gICAgICAgICB9LCAxMDAwKVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9KVxuICAgICAgICAvLyDlsI/nqIvluo/mm7TmlrDmnLrliLYgaHR0cHM6Ly9kZXZlbG9wZXJzLndlaXhpbi5xcS5jb20vbWluaWdhbWUvZGV2L2d1aWRlL3J1bnRpbWUvdXBkYXRlLW1lY2hhbmlzbS5odG1sXG4gICAgICAgIGNvbnN0IHVwZGF0ZU1hbmFnZXIgPSB3eC5nZXRVcGRhdGVNYW5hZ2VyKClcbiAgICAgICAgdXBkYXRlTWFuYWdlci5vbkNoZWNrRm9yVXBkYXRlKChyZXMpID0+IHtcbiAgICAgICAgICAgIC8vIOivt+axguWujOaWsOeJiOacrOS/oeaBr+eahOWbnuiwg1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCLor7fmsYLlrozmlrDniYjmnKzkv6Hmga/nmoTlm57osINcIiwgcmVzLmhhc1VwZGF0ZSlcbiAgICAgICAgfSlcbiAgICAgICAgdXBkYXRlTWFuYWdlci5vblVwZGF0ZVJlYWR5KCgpID0+IHtcbiAgICAgICAgICAgIHd4LnNob3dNb2RhbCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmm7TmlrDmj5DnpLonLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfmlrDniYjmnKzlt7Lnu4/lh4blpIflpb3vvIzmmK/lkKbph43lkK/lupTnlKjvvJ8nLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29uZmlybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5paw55qE54mI5pys5bey57uP5LiL6L295aW977yM6LCD55SoIGFwcGx5VXBkYXRlIOW6lOeUqOaWsOeJiOacrOW5tumHjeWQr1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTWFuYWdlci5hcHBseVVwZGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgICB1cGRhdGVNYW5hZ2VyLm9uVXBkYXRlRmFpbGVkKCgpID0+IHtcbiAgICAgICAgICAgIC8vIOaWsOeJiOacrOS4i+i9veWksei0pVxuICAgICAgICB9KVxuICAgICAgICAvL+mcgOimgeWIneWni+WMluW5v+WRilxuICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KEdhbWVDb250cm9sbGVyLnJld2FyZGVkVmlkZW9BZCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFJld2FyZGVkVmlkZW9BZChcImFkdW5pdC03Njg0NjM0Y2VkMzNlZmIyXCIpXG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hvd0xvZ2luVmlldygpOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coXCLliJ3lp4vljJYm55m75b2VU0RLID0+IFwiLCB3aW5kb3dbJ2RoU0RLJ10uc3lzdGVtLnBsYXRmb3JtKVxuICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjI1LCBcImxvZ2luXCIpXG4gICAgICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2UuZGV2aWNlT1MgPSB3aW5kb3dbJ2RoU0RLJ10uc3lzdGVtLnBsYXRmb3JtXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIi0tLS3mi4nlj5bnmbvlvZUtLS0tXCIpXG4gICAgICAgICAgICAgICAgd2luZG93WydkaFNESyddLmxvZ2luKHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnlKjmiLfkv6Hmga/lpoLkuIvvvJpcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi55So5oi35b6u5L+h5ZSv5LiA5qCH6K+Gb3Blbklk5aaC5LiL77yaXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YS5vcGVuSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxvZ2luIGRhdGE9XCIsSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXZlbnRNbmcuZW1pdChMb2FkRXZlbnQuTE9BRF9NRVNTQUdFLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjc1LCBcImxvZ2luXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1zOiBQbGF5ZXJMb2dpblByYW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkOiBDb25maWcucGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiBbZGF0YS5hY2NvdW50SWQsIGRhdGEubG9naW5UeXBlLCBkYXRhLnRva2VuLCB3aW5kb3dbJ2RoU0RLJ10uZGV2aWNlT1MsIHdpbmRvd1snZGhTREsnXS5kZXZpY2VJZCwgd2luZG93WydkaFNESyddLmNoYW5uZWwsIHdpbmRvd1snZGhTREsnXS5tYWluQ2hhbm5lbCwgd2luZG93WydkaFNESyddLnNlY29uZENoYW5uZWxdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+eUtemtgnNka+a8j+aWl+aJk+eCuVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3dbJ2RoU0RLJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5LqL5Lu2SURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV2ZW50SWQgPSBcIjQyMDAwMDo6R0FNRV9DTElFTlRfTE9HSU5fU1RBUlRcIjsgLy8g6KGo56S6U0RL5a6i5oi356uv5LiK5oql55qE5ZCv5Yqo5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS6i+S7tuWPguaVsFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnRQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5b+F5aGr5Y+C5pWwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zW1wibG9nTGV2ZWxcIl0gPSBcImRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRQYXJhbXNbXCJsb2dDb250ZW50XCJdID0gXCJTREvlkK/liqhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5omn6KGM5LiK5oqlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1snZGhTREsnXS50cmFja0V2ZW50KGV2ZW50SWQsIGV2ZW50UGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZUNvbnRyb2xsZXIubmV0d29yay5zZW5kKFBsYXllckxvZ2luLnVybCwgcGFyYW1zLCAocmVzdWx0OiBTZXZCYWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ZCO5q616aqM6K+B6L+U5ZueXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSAhPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4pIHx8IGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luLm1zZ091dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0LnNob3dFcnJEaWFsb2coR2FtZUVyckNvZGUuZXJyR2FtZVBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDEsIFwibG9naW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IDEgJiYgcmVzdWx0LnBsYXRCYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5JZCA9IHJlc3VsdC5wbGF0QmFjay5vcGVuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW5QYXJhbXMgPSBbcmVzdWx0LnBsYXRCYWNrLnRva2VuXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlkI7nq6/pqozor4HmiJDlip9cIiwgdGhpcy5vcGVuSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2luKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v55S16a2Cc2Rr5ryP5paX5omT54K5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93WydkaFNESyddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5LqL5Lu2SURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXZlbnRJZCA9IFwiNDUwMDAwOjpHQU1FX0NMSUVOVF9MT0dJTl9TVUNDRVNTXCI7IC8vIOihqOekulNES+WuouaIt+err+S4iuaKpeeahOWQr+WKqOS6i+S7tlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS6i+S7tuWPguaVsFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBldmVudFBhcmFtcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOW/heWhq+WPguaVsFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zW1wibG9nTGV2ZWxcIl0gPSBcImRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtc1tcImxvZ0NvbnRlbnRcIl0gPSBcIua4uOaIj+WuouaIt+err+eZu+W9leaIkOWKn1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaJp+ihjOS4iuaKpVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1snZGhTREsnXS50cmFja0V2ZW50KGV2ZW50SWQsIGV2ZW50UGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGxheWVyTG9naW4udXJsIOi/lOWbnuaVsOaNruW8guW4uFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luKSB8fCBnYW1lTWV0aG9kLmlzRW1wdHkocmVzdWx0Lndpbi5tc2dPdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyckdhbWVQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOmmluWFiOmAmui/hyBzZGsuZ2V0U2V0dGluZyDmn6Xor6LnlKjmiLfmmK/lkKblt7LmjojmnYPojrflj5bmmLXnp7DlpLTlg49cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ2RoU0RLJ10uZ2V0U2V0dGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHNldHRpbmcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Yik5pat55So5oi35LmL5YmN5piv5ZCm5bey5ZCM5oSP5o6I5p2D6I635Y+W5YW25Liq5Lq65L+h5oGvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDoi6Xlt7Lnu4/mjojmnYPvvIzlj6/ku6Xnm7TmjqXosIPnlKggc2RrLmdldFVzZXJJbmZvIOiOt+WPluaYteensOWktOWDj1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcuYXV0aFNldHRpbmcgJiYgc2V0dGluZy5hdXRoU2V0dGluZ1tcInNjb3BlLnVzZXJJbmZvXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlt7LmjojmnYNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmhhc0F1dGhVc2VySW5mbyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guZ2V0VXNlckluZm8oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nOiBcInpoX0NOXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2UucmVwb3J0VXNlckluZm8ocmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAoKSB7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pW055CG6K6i6ZiF5raI5oGvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5zdWJzY3JpcHRpb25zU2V0dGluZyAmJiBzZXR0aW5nLnN1YnNjcmlwdGlvbnNTZXR0aW5nLml0ZW1TZXR0aW5ncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnN1YnNjcmliZS5yZWNvcmRTdWJzY3JpYmVBbHdheXNTZXR0aW5ncyhzZXR0aW5nLnN1YnNjcmlwdGlvbnNTZXR0aW5nLml0ZW1TZXR0aW5ncylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgVUlIZWxwLlNob3dUaXBzKGVycm9yW1wibWVzc2FnZVwiXSlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyBoZXJlLi4uXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB3aW5kb3dbXCJkaFNES1wiXS5zZXRTaGFyZSh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVVybDogXCJodHRwczovL21tb2NnYW1lLnFwaWMuY24vd2VjaGF0Z2FtZS9JUG8xc3duU3c3am0zN0tycXNrdWlhbkxvR2p5N2pKMFh5QUZib3dWS1ROaWNBNVRJaWJsNzFKUVM1RDlackp2YlFaLzBcIixcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmxJZDogXCIyK0ZtVHlVV1M5Q0IzVW1wcm1KRTdBPT1cIixcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VQcmV2aWV3VXJsOiBcImh0dHBzOi8vbW1vY2dhbWUucXBpYy5jbi93ZWNoYXRnYW1lL0lQbzFzd25TdzdqbTM3S3Jxc2t1aWFuTG9Hank3akowWHlBRmJvd1ZLVE5pY0E1VElpYmw3MUpRUzVEOVpySnZiUVovMFwiLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVByZXZpZXdVcmxJZDogXCIyK0ZtVHlVV1M5Q0IzVW1wcm1KRTdBPT1cIixcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IFwiXCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBVSUhlbHAuU2hvd1RpcHMoXCItLS0tXCIgKyBlcnJvcilcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcGF5KG9yZGVySWQ6IHN0cmluZywgb3JkZXIxMGNzOiBzdHJpbmcsIHBhcmFtOiBQYXlQcm9kdWN0UGFyYW0pOiB2b2lkIHtcbiAgICAgICAgbGV0IHN1Y2Nlc3NGdW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgLy/mi4nlj5bmlK/ku5jmiJDlip9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi55S16a2C5pSv5LuY5oiQ5YqfXCIpXG4gICAgICAgICAgICB3aW5kb3dbJ2RoU0RLJ10udXBsb2FkUm9sZUluZm8oe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiUEFZX1NVQ0NFU1NcIiwgLy8g55m75b2V5ri45oiP5pyN5pe25LygTE9HSU5fR0FNRe+8jOWIm+inkuaXtuS8oENSRUFURV9ST0xF77yM5Y2H57qn5pe25LygTEVWRUxfVVDvvIzlhYXlgLzmiJDlip/ml7bkvKBQQVlfU1VDQ0VTU1xuICAgICAgICAgICAgICAgIGFyZWFJZDogcGFyc2VJbnQoR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8uc2lkKSwgLy8g5ri45oiP5aSn5Yy6SUTvvIzoi6XmuLjmiI/ml6DlpKfljLrmpoLlv7XvvIzlj6/kuI3loavvvIzpu5jorqTlgLzkuLogMe+8jOihqOekuuWIneWni+Wkp+WMuue8luWPt1xuICAgICAgICAgICAgICAgIGFyZWFOYW1lOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnF1ZnVMaXN0W0dhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8/LmE/LnNpZF0ubmFtZSwgLy8g5ri45oiP5aSn5Yy65ZCN56ewXG4gICAgICAgICAgICAgICAgcm9sZUlkOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy51dWlkLCAvLyDop5LoibJJRO+8jOiLpea4uOaIj+aXoOinkuiJsuamguW/te+8jOWPr+S4jeWhq++8jOm7mOiupOWAvOWQjCBhY2NvdW50SWQg6LSm5Y+3SURcbiAgICAgICAgICAgICAgICByb2xlTmFtZTogR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8ubmFtZSwgLy8g6KeS6Imy5ZCNXG4gICAgICAgICAgICAgICAgcm9sZUxldmVsOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5sZXZlbCwgLy8g6KeS6Imy562J57qn77yM6Iul5ri45oiP5peg6KeS6Imy5Y+K562J57qn5qaC5b+177yM5Y+v5aGr5YWz5Y2h562J57qn5oiW5LiN5aGr77yM6buY6K6k5YC85Li6IDFcbiAgICAgICAgICAgICAgICByb2xlVmlwTGV2ZWw6IDEsIC8vIOinkuiJslZJUOetiee6p1xuICAgICAgICAgICAgICAgIC8vIOS7peS4i+WPguaVsOS7heWcqCB0eXBlIOS4uiBQQVlfU1VDQ0VTUyDml7bmiYDpnIDvvIzku6XkuIrkuLrpgJrnlKjlj4LmlbBcbiAgICAgICAgICAgICAgICBpdGVtSWQ6IHBhcmFtLnByb2R1Y3RJZCwgLy8g5ZWG5ZOBSURcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogcGFyYW0ucHJvZHVjdE5hbWUsIC8vIOWVhuWTgeWQjeensFxuICAgICAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVySWQsIC8vIOiuouWNleWUr+S4gOe8luWPt1xuICAgICAgICAgICAgICAgIG9yZGVyUHJpY2U6IHBhcmFtLnByaWNlICogMTAwLCAvLyDllYblk4HmgLvku7fvvIzljbPlrp7pmYXmlK/ku5jku7fmoLzvvIzljZXkvY3kuLrliIbvvIHvvIHvvIFcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogXCJDTllcIiwgLy8g6LSn5biB57G75Z6LXG4gICAgICAgICAgICAgICAgcGF5VHlwZTogXCJ3ZWl4aW5wYXlcIiAvLyDmlK/ku5jmlrnlvI9cbiAgICAgICAgICAgIH0sIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHBhcmFtcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaXNHb1BheSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0lkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPSAwXG4gICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJbmRleCsrXG4gICAgICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID49IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnRpbWUuc2VuZEFkb2soKVxuICAgICAgICAgICAgfSwgMTAwMClcbiAgICAgICAgfVxuICAgICAgICBsZXQgdGltZSA9IEdhbWVEYXRhQ2VudGVyLnRpbWUuc2V2VGltZVxuICAgICAgICBsZXQgb3JkZXJJbmZvID0ge1xuICAgICAgICAgICAgY2FyZE1lc3NhZ2VUaXRsZTogcGFyYW0ucHJvZHVjdE5hbWUsIC8vIOivpemAiemhueS7heWcqOS9v+eUqOi3s+i9rEg1572R6aG15pSv5LuY5pe25b+F5aGr77yM5LiA6Iis5q2k5Y+C5pWw5b+F5aGr77yM5ZugaU9T6K6+5aSH5LuF5pSv5oyB6Lez6L2sSDXnvZHpobXmlK/ku5hcbiAgICAgICAgICAgIGNhcmRNZXNzYWdlSW1hZ2U6IFwiaHR0cDovL3N0YXRpYy5tM2d1by5jb20vb20vbWluaWdhbWUvd3gvcGF5bWVudC5wbmdcIiwgLy8g6K+l6YCJ6aG55LuF5Zyo5L2/55So6Lez6L2sSDXnvZHpobXmlK/ku5jml7blv4XloavvvIzkuIDoiKzmraTlj4LmlbDlv4XloavvvIzlm6BpT1Porr7lpIfku4XmlK/mjIHot7PovaxINee9kemhteaUr+S7mFxuICAgICAgICAgICAgYXJlYUlkOiBwYXJzZUludChHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5zaWQpLFxuICAgICAgICAgICAgYXJlYU5hbWU6IEdhbWVEYXRhQ2VudGVyLnNldkJhY2sucXVmdUxpc3RbR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8uc2lkXS5uYW1lLC8vcGFyc2VJbnQoR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8uc2lkKSxcbiAgICAgICAgICAgIHJvbGVJZDogcGFyc2VJbnQoR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8udXVpZCksXG4gICAgICAgICAgICByb2xlTmFtZTogR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8ubmFtZSxcbiAgICAgICAgICAgIHJvbGVMZXZlbDogR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8ubGV2ZWwsXG4gICAgICAgICAgICBpdGVtSWQ6IHBhcmFtLnByb2R1Y3RJZCxcbiAgICAgICAgICAgIGl0ZW1OYW1lOiBwYXJhbS5wcm9kdWN0TmFtZSxcbiAgICAgICAgICAgIGl0ZW1OdW06IDEsIC8vIOS4gOiIrOWbuuWumuS8oDFcbiAgICAgICAgICAgIGl0ZW1QcmljZTogcGFyYW0ucHJpY2UgKiAxMDAsIC8vIOWVhuWTgeWNleS7t+WNleS9jeS4uuWIhu+8jOivt+azqOaEj+aNoueul++8geS+i+WmguatpOekuuS+i+S4reeahDYwMOihqOekujYwMOWIhu+8jOWNszblhYNcbiAgICAgICAgICAgIGN1cnJlbmN5OiBcIkNOWVwiLFxuICAgICAgICAgICAgcmF0ZTogMTAsXG4gICAgICAgICAgICBtZW1vOiBvcmRlcklkLC8vSlNPTi5zdHJpbmdpZnkoeyBvcmRlcklkOiBvcmRlcklkIH0pLCAvLyDpgI/kvKDlj4LmlbDvvIzlrZfnrKbkuLLnsbvlnovvvJvmlK/ku5jlrozmiJDlkI7vvIxTREvmnI3liqHlmajlsIbpgJrov4fmlK/ku5jlm57osIPljp/moLfov5Tlm57nu5nmuLjmiI/mnI3liqHlmajvvJvov5nph4zmvJTnpLrpgI/kvKDmuLjmiI/kuJrliqHorqLljZXlj7dcbiAgICAgICAgICAgIHJlbWFyazogQ29uZmlnLnBpZCwgLy8g5aSH55So6YCP5Lyg5Y+C5pWwXG4gICAgICAgICAgICBzdWNjZXNzOiBzdWNjZXNzRnVuYyxcbiAgICAgICAgICAgIGZhaWw6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIOatpOWkhOi/lOWbnuaOpeWPo+iwg+eUqOWksei0peeahOmUmeivr+S/oeaBr++8jGVycm9yLmNvZGXkuLpjYW5jZWzml7bvvIzooajnpLrnlKjmiLfkuLvliqjngrnlh7vkuoblj5bmtojmjInpkq7vvIzmraTml7blj6/ku6XkuI3lkJHnlKjmiLflvLnlh7rmj5DnpLpcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PSBcImNhbmNlbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g5q2k5aSE5Y+v5ZCR55So5oi35by55Ye65o6l5Y+j6L+U5Zue55qE6ZSZ6K+v5raI5oGv5oiW57uf5LiA5by55Ye64oCc5pSv5LuY5aSx6LSl4oCdXG4gICAgICAgICAgICAgICAgd2luZG93WydkaFNESyddLm1vZGFsLm1lc3NhZ2UoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgaGVyZS4uLlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwi6LCD55So55S16a2C5pSv5LuY5o6l5Y+jPT5cIiwgSlNPTi5zdHJpbmdpZnkob3JkZXJJbmZvKSlcbiAgICAgICAgdGhpcy5pc0dvUGF5ID0gdHJ1ZTtcbiAgICAgICAgd2luZG93WydkaFNESyddLnBheShvcmRlckluZm8pXG4gICAgfVxuICAgIC8vIOS4iuaKpeinkuiJsuaVsOaNrlxuICAgIHJlcG9ydFJvbGUoZXZlbnQ6IFJlcG9ydFJvbGVUeXBlKTogdm9pZCB7XG4gICAgICAgIC8vIOKAoiDliJ3lp4vljJbmiJDlip/lkI7osIPivaQuIOKAoiDov5vivIrljLrmnI3jgIHliJviu4bjgIHiu4bivornrYnnuqfmm7TmlrDjgIHmiJjivJLmm7TmlrDml7bosIPivaQuXG4gICAgICAgIGlmIChHYW1lRGF0YUNlbnRlci5zZXZCYWNrID09IG51bGwpIHsgcmV0dXJuIH1cbiAgICAgICAgaWYgKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8gPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuaKpeinkuiJsuaVsOaNrjpcIiwgZXZlbnQpXG4gICAgICAgIGxldCBvbmxpbmVUaW1lID0gMFxuICAgICAgICBpZiAoR2FtZURhdGFDZW50ZXIudGltZS5vbmxpbmVUaW1lID4gMCkge1xuICAgICAgICAgICAgb25saW5lVGltZSA9IEdhbWVEYXRhQ2VudGVyLnRpbWUuc2V2VGltZSAtIEdhbWVEYXRhQ2VudGVyLnRpbWUub25saW5lVGltZVxuICAgICAgICB9XG4gICAgICAgIGxldCBpc0NyZWF0ZVJvbGUgPSBmYWxzZVxuICAgICAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICAgICAgICBjYXNlIFJlcG9ydFJvbGVUeXBlLmNyZWF0ZTpcbiAgICAgICAgICAgICAgICBpc0NyZWF0ZVJvbGUgPSB0cnVlXG4gICAgICAgICAgICAgICAgLy/nlLXprYJzZGvmvI/mlpfmiZPngrlcbiAgICAgICAgICAgICAgICBpZiAod2luZG93WydkaFNESyddKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOS6i+S7tklEXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudElkID0gXCI0NTAwMDE6OkdBTUVfQ0xJRU5UX0NSRUFUSU5HX0FfUk9MRVwiOyAvLyDooajnpLpTREvlrqLmiLfnq6/kuIrmiqXnmoTlkK/liqjkuovku7ZcbiAgICAgICAgICAgICAgICAgICAgLy8g5LqL5Lu25Y+C5pWwXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudFBhcmFtcyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAvLyDlv4Xloavlj4LmlbBcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRQYXJhbXNbXCJsb2dMZXZlbFwiXSA9IFwiZFwiO1xuICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtc1tcImxvZ0NvbnRlbnRcIl0gPSBcIua4uOaIj+WuouaIt+err+WIm+inkuaIkOWKn1wiO1xuICAgICAgICAgICAgICAgICAgICAvLyDmiafooYzkuIrmiqVcbiAgICAgICAgICAgICAgICAgICAgd2luZG93WydkaFNESyddLnRyYWNrRXZlbnQoZXZlbnRJZCwgZXZlbnRQYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aW5kb3dbJ2RoU0RLJ10udXBsb2FkUm9sZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkNSRUFURV9ST0xFXCIsIC8vIOeZu+W9lea4uOaIj+acjeaXtuS8oExPR0lOX0dBTUXvvIzliJvop5Lml7bkvKBDUkVBVEVfUk9MRe+8jOWNh+e6p+aXtuS8oExFVkVMX1VQ77yM5YWF5YC85oiQ5Yqf5pe25LygUEFZX1NVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgYXJlYUlkOiBwYXJzZUludChHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5zaWQpLCAvLyDmuLjmiI/lpKfljLpJRO+8jOiLpea4uOaIj+aXoOWkp+WMuuamguW/te+8jOWPr+S4jeWhq++8jOm7mOiupOWAvOS4uiAx77yM6KGo56S65Yid5aeL5aSn5Yy657yW5Y+3XG4gICAgICAgICAgICAgICAgICAgIGFyZWFOYW1lOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnF1ZnVMaXN0W0dhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8/LmE/LnNpZF0ubmFtZSwgLy8g5ri45oiP5aSn5Yy65ZCN56ewXG4gICAgICAgICAgICAgICAgICAgIHJvbGVJZDogR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8udXVpZCwgLy8g6KeS6ImySUTvvIzoi6XmuLjmiI/ml6Dop5LoibLmpoLlv7XvvIzlj6/kuI3loavvvIzpu5jorqTlgLzlkIwgYWNjb3VudElkIOi0puWPt0lEXG4gICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5uYW1lLCAvLyDop5LoibLlkI1cbiAgICAgICAgICAgICAgICAgICAgcm9sZUxldmVsOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5sZXZlbCwgLy8g6KeS6Imy562J57qn77yM6Iul5ri45oiP5peg6KeS6Imy5Y+K562J57qn5qaC5b+177yM5Y+v5aGr5YWz5Y2h562J57qn5oiW5LiN5aGr77yM6buY6K6k5YC85Li6IDFcbiAgICAgICAgICAgICAgICAgICAgcm9sZVZpcExldmVsOiAxLCAvLyDop5LoibJWSVDnrYnnuqdcbiAgICAgICAgICAgICAgICB9LCAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUmVwb3J0Um9sZVR5cGUubGV2ZWx1cDpcbiAgICAgICAgICAgICAgICB3aW5kb3dbJ2RoU0RLJ10udXBsb2FkUm9sZUluZm8oe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkxFVkVMX1VQXCIsIC8vIOeZu+W9lea4uOaIj+acjeaXtuS8oExPR0lOX0dBTUXvvIzliJvop5Lml7bkvKBDUkVBVEVfUk9MRe+8jOWNh+e6p+aXtuS8oExFVkVMX1VQ77yM5YWF5YC85oiQ5Yqf5pe25LygUEFZX1NVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgYXJlYUlkOiBwYXJzZUludChHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5zaWQpLCAvLyDmuLjmiI/lpKfljLpJRO+8jOiLpea4uOaIj+aXoOWkp+WMuuamguW/te+8jOWPr+S4jeWhq++8jOm7mOiupOWAvOS4uiAx77yM6KGo56S65Yid5aeL5aSn5Yy657yW5Y+3XG4gICAgICAgICAgICAgICAgICAgIGFyZWFOYW1lOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnF1ZnVMaXN0W0dhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8/LmE/LnNpZF0ubmFtZSwgLy8g5ri45oiP5aSn5Yy65ZCN56ewXG4gICAgICAgICAgICAgICAgICAgIHJvbGVJZDogR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8udXVpZCwgLy8g6KeS6ImySUTvvIzoi6XmuLjmiI/ml6Dop5LoibLmpoLlv7XvvIzlj6/kuI3loavvvIzpu5jorqTlgLzlkIwgYWNjb3VudElkIOi0puWPt0lEXG4gICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5uYW1lLCAvLyDop5LoibLlkI1cbiAgICAgICAgICAgICAgICAgICAgcm9sZUxldmVsOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5sZXZlbCwgLy8g6KeS6Imy562J57qn77yM6Iul5ri45oiP5peg6KeS6Imy5Y+K562J57qn5qaC5b+177yM5Y+v5aGr5YWz5Y2h562J57qn5oiW5LiN5aGr77yM6buY6K6k5YC85Li6IDFcbiAgICAgICAgICAgICAgICAgICAgcm9sZVZpcExldmVsOiAxLCAvLyDop5LoibJWSVDnrYnnuqdcbiAgICAgICAgICAgICAgICB9LCAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUmVwb3J0Um9sZVR5cGUub2ZmbGluZTpcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBSZXBvcnRSb2xlVHlwZS5vbmxpbmU6XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUmVwb3J0Um9sZVR5cGUub3RoZXI6XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3JlYXRlUm9sZSkge1xuICAgICAgICAgICAgLy8gd2luZG93WydkaFNESyddLmFuYWx5dGljcy5yZWdpc3Rlcih7XG4gICAgICAgICAgICAvLyAgICAgYWNjb3VudElkOiB3aW5kb3dbJ2RoU0RLJ10udXNlckluZm8uYWNjb3VudElkLFxuICAgICAgICAgICAgLy8gICAgIGV4dGVuZFBhcmFtczoge31cbiAgICAgICAgICAgIC8vIH0sICgpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyhwYXJhbXMpO1xuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb3BlblNlcnZpY2UoKSB7XG4gICAgICAgIHdpbmRvd1snZGhTREsnXS5vcGVuQ3VzdG9tZXJTZXJ2aWNlKHtcbiAgICAgICAgICAgIGFyZWFJZDogcGFyc2VJbnQoR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8uc2lkKSxcbiAgICAgICAgICAgIHJvbGVJZDogR2FtZURhdGFDZW50ZXIuc2V2QmFjay51c2VySW5mbz8uYT8udXVpZCxcbiAgICAgICAgICAgIHJvbGVOYW1lOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5uYW1lLFxuICAgICAgICAgICAgcm9sZUxldmVsOiBHYW1lRGF0YUNlbnRlci5zZXZCYWNrLnVzZXJJbmZvPy5hPy5sZXZlbCxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgaGVyZS4uLlxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8g6K6i6ZiF5raI5oGvXG4gICAgc2V0U3Vic2NyaWJlKHRtcGxJZHM6IHN0cmluZ1tdLCBpZHM6IHN0cmluZ1tdKSB7XG5cbiAgICB9XG4gICAgaW5pdFJld2FyZGVkVmlkZW9BZChhZGtleTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5Yid5aeL5YyW5bm/5ZGK5a6e5L6LXCIpXG4gICAgICAgIC8v5Yib5bu65r+A5Yqx6KeG6aKR5bm/5ZGK5a6e5L6L77yb5bu66K6u5o+Q5YmN5Yib5bu65aW95bm/5ZGK5a6e5L6L77yM5Zyo6ZyA6KaB5bGV56S655qE5pe25YCZ55u05o6l6LCD55So5a6e5L6L55qEIHNob3cg5pa55rOV5bGV56S65Y2z5Y+vXG4gICAgICAgIEdhbWVDb250cm9sbGVyLnJld2FyZGVkVmlkZW9BZCA9IHdpbmRvd1snZGhTREsnXS5jcmVhdGVSZXdhcmRlZFZpZGVvQWQoe1xuICAgICAgICAgICAgYWRVbml0SWQ6IGFka2V5LCAvLyDor7fogZTns7vnm7jlhbPov5DokKXkurrlkZjkuo7lvq7kv6HlhazkvJflubPlj7DlkI7lj7DliJvlu7rlubbnlJ/miJBcbiAgICAgICAgICAgIGFkUGxhdGZvcm06IFwid2VpeGluXCIsXG4gICAgICAgICAgICBhZFBvc2l0aW9uOiBcIlwiLFxuICAgICAgICAgICAgb25Mb2FkOiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImluaXRSZXdhcmRlZFZpZGVvQWQ6XCIgKyByZXNwb25zZS5jb2RlKTsgLy8g5ZON5bqU54q25oCB56CB77yM5q2k5aSE5Li6MO+8jOihqOekuuWKoOi9veaIkOWKn1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2xvc2U6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmNvZGUpOyAvLyDlk43lupTnirbmgIHnoIHvvIzmraTlpITkuLowXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSk7IC8vIOWTjeW6lOaVsOaNrlxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEuaXNDb21wbGV0ZWQpOyAvLyDlub/lkYrku7vliqHmmK/lkKblt7LlrozmiJDvvIx0cnVlIOihqOekuuW3suWujOaIkO+8jGZhbHNlIOihqOekuuacquWujOaIkFxuICAgICAgICAgICAgICAgIC8vIOeUqOaIt+W3suWujOaIkOW5v+WRiuS7u+WKoe+8jOWNs+W5v+WRiuato+W4uOaSreaUvue7k+adn1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmlzQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOi/memHjOWPr+S7pemAmuefpea4uOaIj+acjeWKoeWZqOS4i+WPkeW5v+WRiuWlluWKsVxuICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5hZFZpZGVvLm9uWGlhZGFuU3VjYygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOeUqOaIt+acquWujOaIkOW5v+WRiuS7u+WKoe+8jOWNs+W5v+WRiuaSreaUvuS4remAlOmAgOWHulxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyDov5nph4zlj6/ku6Xmj5DnpLrnlKjmiLflsJrmnKrlrozmiJDlub/lkYrmkq3mlL5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25FcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IuY29kZSk7IC8vIOWTjeW6lOeKtuaAgeegge+8jOatpOWkhOS4uumdnjDnirbmgIHnoIFcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5tZXNzYWdlKTsgLy8g6ZSZ6K+v5raI5oGvXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvL+inhumikeW5v+WRilxuICAgIHNob3dSZXdhcmRBZChhZGtleTogc3RyaW5nLCBraWQ6IHN0cmluZywgb3JkZXIxMUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy/nlKjkuo7liqDovb3lub/lkYpcbiAgICAgICAgY29uc3QgbG9hZFJld2FyZGVkVmlkZW9BZCA9IChvcHRpb25zOiBhbnksIHRpbWVzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIC8vIOWFiOWIpOaWrSByZXdhcmRlZFZpZGVvQWQg5piv5ZCm5a2Y5Zyo5YaN5L2/55SoXG4gICAgICAgICAgICAvLyDlm6DkuLrlvZPnlKjmiLfnmoTlrqLmiLfnq6/ln7rnoYDlupPniYjmnKzkvY7kuo4gMi4wLjQg5pe277yM6LCD55SoIHNka0luc3RhbmNlLmNyZWF0ZVJld2FyZGVkVmlkZW9BZCDmjqXlj6PlsIbov5Tlm54gdW5kZWZpbmVkXG4gICAgICAgICAgICBpZiAoIUdhbWVDb250cm9sbGVyLnJld2FyZGVkVmlkZW9BZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3dbJ2RoU0RLJ10ubW9kYWwubWVzc2FnZShcIuaaguS4jeaUr+aMgea/gOWKseinhumikeW5v+WRilwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g5omL5Yqo6YeN5paw5Yqg6L295bm/5ZGKXG4gICAgICAgICAgICBHYW1lQ29udHJvbGxlci5yZXdhcmRlZFZpZGVvQWQubG9hZCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIOWTjeW6lOeKtuaAgeeggSByZXNwb25zZS5jb2RlIOS4uiAwIOaXtuihqOekuuWKoOi9veaIkOWKn++8jOWPr+WGjeasoeiwg+eUqCBzaG93IOaWueazlei/m+ihjOWxleekulxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1Jld2FyZGVkVmlkZW9BZChvcHRpb25zLCB0aW1lcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOWFtuS7lumdniAwIOeKtuaAgeeggeWdh+ihqOekuuWKoOi9veWksei0pe+8jOWPr+WQkeeUqOaIt+W8ueWHuumUmeivr+a2iOaBryByZXNwb25zZS5tZXNzYWdl77yM5Lqm5Y+v6Ieq5a6a5LmJ5aSx6LSl5o+Q56S6XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd1snZGhTREsnXS5tb2RhbC5tZXNzYWdlKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICAvL+eUqOS6juWxleekuuW5v+WRilxuICAgICAgICBjb25zdCBzaG93UmV3YXJkZWRWaWRlb0FkID0gKG9wdGlvbnM6IGFueSwgdGltZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgLy8g5YWI5Yik5patIHJld2FyZGVkVmlkZW9BZCDmmK/lkKblrZjlnKjlho3kvb/nlKhcbiAgICAgICAgICAgIC8vIOWboOS4uuW9k+eUqOaIt+eahOWuouaIt+err+WfuuehgOW6k+eJiOacrOS9juS6jiAyLjAuNCDml7bvvIzosIPnlKggc2RrSW5zdGFuY2UuY3JlYXRlUmV3YXJkZWRWaWRlb0FkIOaOpeWPo+Wwhui/lOWbniB1bmRlZmluZWRcbiAgICAgICAgICAgIGlmICghR2FtZUNvbnRyb2xsZXIucmV3YXJkZWRWaWRlb0FkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvd1snZGhTREsnXS5tb2RhbC5tZXNzYWdlKFwi5pqC5LiN5pSv5oyB5r+A5Yqx6KeG6aKR5bm/5ZGKXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDlub/lkYrlrp7kvovnmoQgc2hvdyDmlrnms5XnlKjkuo7lsZXnpLrlub/lkYrvvIzpu5jorqTmmK/pmpDol4/nmoRcbiAgICAgICAgICAgIEdhbWVDb250cm9sbGVyLnJld2FyZGVkVmlkZW9BZC5zaG93KG9wdGlvbnMsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8g5ZON5bqU54q25oCB56CBIHJlc3BvbnNlLmNvZGUg5Li6IDAg5pe26KGo56S65bGV56S65oiQ5YqfXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuW5v+WRiuWxleekuuaIkOWKn1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g5YW25LuW6Z2eIDAg54q25oCB56CB5Z2H6KGo56S65bGV56S65aSx6LSl77yM5Y+v5bCd6K+V5Yip55So5a6e5L6L55qEIGxvYWQg5pa55rOV5omL5Yqo6YeN5paw5Yqg6L2977yM5bm25Zyo5Yqg6L295oiQ5Yqf5ZCO5YaN5qyh6LCD55SoIHNob3cg5pa55rOV6L+b6KGM5bGV56S6XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOmHjeivleasoeaVsOWkp+S6jjDml7bov5vooYzph43or5VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZFJld2FyZGVkVmlkZW9BZChvcHRpb25zLCB0aW1lcy0tKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyDlj43kuYvlvLnlh7rplJnor6/mtojmga8gcmVzcG9uc2UubWVzc2FnZe+8jOS6puWPr+iHquWumuS5ieWksei0peaPkOekulxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1snZGhTREsnXS5tb2RhbC5tZXNzYWdlKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHNob3dSZXdhcmRlZFZpZGVvQWQoeyBhZFBvc2l0aW9uOiBcIlwiIH0sIDMpO1xuICAgIH1cbiAgICBjaGVja01zZyhzdHI6IHN0cmluZywgY2I6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIC8vIGlmIChnYW1lTWV0aG9kLmlzRW1wdHkodGhpcy5taW50KSkge1xuICAgICAgICAvLyAgICAgbGV0IGNmZyA9IEdhbWVjZmcuc2Vuc2l0aXZlSW5mby5wb29sXG4gICAgICAgIC8vICAgICBsZXQgc2Vzc2lvbmlkSW5mbyA9IE9iamVjdC52YWx1ZXMoY2ZnKVxuICAgICAgICAvLyAgICAgbGV0IGFsbFNlc3Npb25pZFN0ciA9IFtdXG4gICAgICAgIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlc3Npb25pZEluZm8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gICAgICAgICBhbGxTZXNzaW9uaWRTdHIucHVzaChzZXNzaW9uaWRJbmZvW2ldLmRlc2MpXG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICB0aGlzLm1pbnQgPSBuZXcgTWludChhbGxTZXNzaW9uaWRTdHIpXG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gdHJ5IHtcbiAgICAgICAgLy8gICAgIGxldCB0ZW1wU3RyID0gc3RyLnJlcGxhY2UoXCIgXCIsXCJcIilcbiAgICAgICAgLy8gICAgIHRlbXBTdHIgPSB0ZW1wU3RyLnJlcGxhY2UoXCImXCIsXCJcIilcbiAgICAgICAgLy8gICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMubWludC52ZXJpZnkodGVtcFN0cilcbiAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKHN0YXR1cykgLy8gZmFsc2UgXG4gICAgICAgIC8vICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgIC8vICAgICAgICAgY2IoKVxuICAgICAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgICAgICBVSUhlbHAuU2hvd1RpcHMoXCLovpPlhaXmloflrZfluKbmnInmlY/mhJ/or40s6K+36YeN5paw6L6T5YWlXCIpXG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vICAgICBVSUhlbHAuU2hvd1RpcHMoXCLovpPlhaXmloflrZfluKbmnInmlY/mhJ/or40s6K+36YeN5paw6L6T5YWlXCIpXG4gICAgICAgIC8vIH1cbiAgICAgICAgY2IoKVxuICAgIH1cbn0iXX0=
|