| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/mk/system/HttpSystem.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, 'fe015tjuNVJ1rKouaAn8VvC', 'HttpSystem');
- // script/mk/system/HttpSystem.ts
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- /**
- * @description http请求管理类
- * @author 邹勇
- */
- var HttpSystem = /** @class */ (function () {
- function HttpSystem() {
- }
- /**
- * 游戏接口,通用
- * @param url 接口完整地址
- * @param data 加密前数据
- * @param async 是否异步请求(后端要求防阻塞)
- */
- HttpSystem.prototype.sendData = function (url, data, async) {
- if (async === void 0) { async = true; }
- return __awaiter(this, void 0, void 0, function () {
- var encode, dataN, result;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- encode = '';
- dataN = null;
- data.timestamp = Math.floor(new Date().getTime() / 1000);
- data.appVersion = g.appData.appVersion;
- data.tfChannel = g.appData.tfChannel;
- data.versioncfg = g.appData.version;
- encode = mk.encrypt.encrypt(JSON.stringify(data), g.loginData.sessionKey, g.appData.appId);
- dataN = {
- "uin": g.loginData.uin,
- "encrypt": encode
- };
- return [4 /*yield*/, this.sendRequest(url, 'POST', JSON.stringify(dataN), false, async)];
- case 1:
- result = _a.sent();
- return [2 /*return*/, this.checkData(result)];
- }
- });
- });
- };
- /**
- * http请求 登录用
- * @param url 请求头
- * @param method 'GET' || 'POST'
- * @param data 数据
- * @param isRsa 是否加密
- * @param async 是否异步请求
- */
- HttpSystem.prototype.sendRequest = function (url, method, data, isRsa, async) {
- if (method === void 0) { method = 'POST'; }
- if (data === void 0) { data = null; }
- if (isRsa === void 0) { isRsa = true; }
- if (async === void 0) { async = true; }
- url = g.httpData.getServerUrl() + url;
- return new Promise(function (resolve, reject) {
- var requesttimes = 0;
- var httpRequest = new XMLHttpRequest();
- var send = function () {
- httpRequest.open(method, url, async);
- httpRequest.setRequestHeader("Content-Type", 'application/json;charset=UTF-8');
- if (isRsa && data != null) {
- data = mk.encrypt.rsaEncrypt(data);
- }
- httpRequest.send(data);
- };
- // httpRequest.timeout = 30000;
- httpRequest.onreadystatechange = function () {
- if (httpRequest.readyState === 4) {
- if (httpRequest.status === 200) {
- var responseStr = httpRequest.responseText;
- var response = JSON.parse(responseStr);
- mk.console.log('httpResponse', url, response);
- resolve(response);
- }
- else {
- mk.console.error("httpRequest.status", httpRequest.status);
- reject({ errcode: 1, errmsg: "status..." + httpRequest.status });
- }
- }
- };
- httpRequest.ontimeout = function (e) {
- requesttimes++;
- if (requesttimes >= 3) {
- mk.console.error("http.ontimeout", url);
- reject({ errcode: 1, errmsg: "ontimeout" });
- }
- else {
- send();
- }
- };
- httpRequest.onerror = function (e) {
- mk.console.error("http.onerror", url);
- reject({ errcode: 1, errmsg: "onerror" });
- };
- send();
- });
- };
- /**
- * 检测用明文还是密文
- * @param response 返回消息
- * @param forceData true 明文 false 有密文优先密文,没密文情况下用明文
- */
- HttpSystem.prototype.checkData = function (response, forceData) {
- if (forceData === void 0) { forceData = false; }
- var data = null;
- if (forceData) {
- data = response.data;
- }
- else {
- if (response.encrypt) {
- data = mk.encrypt.decrypt(response.encrypt, g.loginData.sessionKey, g.appData.appId);
- data = JSON.parse(data);
- }
- else if (response.data) {
- data = response.data;
- }
- }
- response.data = data;
- return response;
- };
- return HttpSystem;
- }());
- exports.default = HttpSystem;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcc3lzdGVtXFxIdHRwU3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztHQUdHO0FBQ0g7SUFDSTtJQUNBLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNVLDZCQUFRLEdBQXJCLFVBQXNCLEdBQUcsRUFBRSxJQUFTLEVBQUUsS0FBWTtRQUFaLHNCQUFBLEVBQUEsWUFBWTs7Ozs7O3dCQUMxQyxNQUFNLEdBQUcsRUFBRSxDQUFDO3dCQUNaLEtBQUssR0FBRyxJQUFJLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO3dCQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO3dCQUNwQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzRixLQUFLLEdBQUc7NEJBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRzs0QkFDdEIsU0FBUyxFQUFFLE1BQU07eUJBQ3BCLENBQUE7d0JBQ1kscUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FB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LENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw4QkFBUyxHQUFULFVBQVUsUUFBUSxFQUFFLFNBQWlCO1FBQWpCLDBCQUFBLEVBQUEsaUJBQWlCO1FBQ2pDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNmLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDeEI7YUFDSTtZQUNELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckYsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7aUJBQ0ksSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNwQixJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQzthQUN4QjtTQUNKO1FBQ0QsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDckIsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0F4R0EsQUF3R0MsSUFBQSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gaHR0cOivt+axgueuoeeQhuexu1xyXG4gKiBAYXV0aG9yIOmCueWLh1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cFN5c3RlbSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOa4uOaIj+aOpeWPo++8jOmAmueUqFxyXG4gICAgICogQHBhcmFtIHVybCDmjqXlj6PlrozmlbTlnLDlnYBcclxuICAgICAqIEBwYXJhbSBkYXRhIOWKoOWvhuWJjeaVsOaNrlxyXG4gICAgICogQHBhcmFtIGFzeW5jIOaYr+WQpuW8guatpeivt+axgu+8iOWQjuerr+imgeaxgumYsumYu+Whnu+8iVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VuZERhdGEodXJsLCBkYXRhOiBhbnksIGFzeW5jID0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBlbmNvZGUgPSAnJztcclxuICAgICAgICBsZXQgZGF0YU4gPSBudWxsO1xyXG4gICAgICAgIGRhdGEudGltZXN0YW1wID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xyXG4gICAgICAgIGRhdGEuYXBwVmVyc2lvbiA9IGcuYXBwRGF0YS5hcHBWZXJzaW9uO1xyXG4gICAgICAgIGRhdGEudGZDaGFubmVsID0gZy5hcHBEYXRhLnRmQ2hhbm5lbDtcclxuICAgICAgICBkYXRhLnZlcnNpb25jZmcgPSBnLmFwcERhdGEudmVyc2lvbjtcclxuICAgICAgICBlbmNvZGUgPSBtay5lbmNyeXB0LmVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSksIGcubG9naW5EYXRhLnNlc3Npb25LZXksIGcuYXBwRGF0YS5hcHBJZCk7XHJcbiAgICAgICAgZGF0YU4gPSB7XHJcbiAgICAgICAgICAgIFwidWluXCI6IGcubG9naW5EYXRhLnVpbixcclxuICAgICAgICAgICAgXCJlbmNyeXB0XCI6IGVuY29kZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kUmVxdWVzdCh1cmwsICdQT1NUJywgSlNPTi5zdHJpbmdpZnkoZGF0YU4pLCBmYWxzZSwgYXN5bmMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRGF0YShyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaHR0cOivt+axgiDnmbvlvZXnlKhcclxuICAgICAqIEBwYXJhbSB1cmwg6K+35rGC5aS0XHJcbiAgICAgKiBAcGFyYW0gbWV0aG9kICdHRVQnIHx8ICdQT1NUJyBcclxuICAgICAqIEBwYXJhbSBkYXRhIOaVsOaNrlxyXG4gICAgICogQHBhcmFtIGlzUnNhIOaYr+WQpuWKoOWvhlxyXG4gICAgICogQHBhcmFtIGFzeW5jIOaYr+WQpuW8guatpeivt+axglxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VuZFJlcXVlc3QodXJsLCBtZXRob2Q6IHN0cmluZyA9ICdQT1NUJywgZGF0YTogc3RyaW5nID0gbnVsbCwgaXNSc2E6IGJvb2xlYW4gPSB0cnVlLCBhc3luYyA9IHRydWUpIHtcclxuICAgICAgICB1cmwgPSBnLmh0dHBEYXRhLmdldFNlcnZlclVybCgpICsgdXJsO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJlcXVlc3R0aW1lcyA9IDA7XHJcbiAgICAgICAgICAgIGxldCBodHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICAgICAgICBsZXQgc2VuZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGh0dHBSZXF1ZXN0Lm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKTtcclxuICAgICAgICAgICAgICAgIGh0dHBSZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzUnNhICYmIGRhdGEgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBtay5lbmNyeXB0LnJzYUVuY3J5cHQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBodHRwUmVxdWVzdC5zZW5kKGRhdGEpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gaHR0cFJlcXVlc3QudGltZW91dCA9IDMwMDAwO1xyXG4gICAgICAgICAgICBodHRwUmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaHR0cFJlcXVlc3QucmVhZHlTdGF0ZSA9PT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChodHRwUmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VTdHIgPSBodHRwUmVxdWVzdC5yZXNwb25zZVRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtay5jb25zb2xlLmxvZygnaHR0cFJlc3BvbnNlJywgdXJsLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWsuY29uc29sZS5lcnJvcihcImh0dHBSZXF1ZXN0LnN0YXR1c1wiLCBodHRwUmVxdWVzdC5zdGF0dXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoeyBlcnJjb2RlOiAxLCBlcnJtc2c6IFwic3RhdHVzLi4uXCIgKyBodHRwUmVxdWVzdC5zdGF0dXMgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBodHRwUmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgcmVxdWVzdHRpbWVzKys7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdHRpbWVzID49IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBtay5jb25zb2xlLmVycm9yKFwiaHR0cC5vbnRpbWVvdXRcIiwgdXJsKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoeyBlcnJjb2RlOiAxLCBlcnJtc2c6IFwib250aW1lb3V0XCIgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzZW5kKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGh0dHBSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgbWsuY29uc29sZS5lcnJvcihcImh0dHAub25lcnJvclwiLCB1cmwpO1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgZXJyY29kZTogMSwgZXJybXNnOiBcIm9uZXJyb3JcIiB9KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgc2VuZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBcclxuICAgICAqIOajgOa1i+eUqOaYjuaWh+i/mOaYr+WvhuaWh1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIOi/lOWbnua2iOaBr1xyXG4gICAgICogQHBhcmFtIGZvcmNlRGF0YSB0cnVlIOaYjuaWhyAgZmFsc2Ug5pyJ5a+G5paH5LyY5YWI5a+G5paH77yM5rKh5a+G5paH5oOF5Ya15LiL55So5piO5paHXHJcbiAgICAgKi9cclxuICAgIGNoZWNrRGF0YShyZXNwb25zZSwgZm9yY2VEYXRhID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IG51bGxcclxuICAgICAgICBpZiAoZm9yY2VEYXRhKSB7XHJcbiAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVuY3J5cHQpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSBtay5lbmNyeXB0LmRlY3J5cHQocmVzcG9uc2UuZW5jcnlwdCwgZy5sb2dpbkRhdGEuc2Vzc2lvbktleSwgZy5hcHBEYXRhLmFwcElkKTtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3BvbnNlLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|