6611 lines
828 KiB
JavaScript
6611 lines
828 KiB
JavaScript
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/__qc_index__.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);}
|
||
require('./assets/Script/Block');
|
||
require('./assets/Script/Camera');
|
||
require('./assets/Script/GameData');
|
||
require('./assets/Script/GameManager');
|
||
require('./assets/Script/GameOver');
|
||
require('./assets/Script/GameScene');
|
||
require('./assets/Script/GuideManager');
|
||
require('./assets/Script/ListView/ItemRender');
|
||
require('./assets/Script/ListView/List');
|
||
require('./assets/Script/Load');
|
||
require('./assets/Script/Player');
|
||
require('./assets/Script/RankManager');
|
||
require('./assets/Script/crypto/HttpUtil');
|
||
require('./assets/Script/crypto/crypto-js.min');
|
||
require('./assets/Script/tool/AudioManager');
|
||
require('./assets/Script/tool/GameTool');
|
||
require('./assets/Script/tool/Notification');
|
||
require('./assets/Script/tool/Storage');
|
||
require('./assets/migration/use_v2.1-2.2.1_cc.Toggle_event');
|
||
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/crypto/HttpUtil.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, '9ed319W0ElIkJ/97wj9KJh8', 'HttpUtil');
|
||
// Script/crypto/HttpUtil.ts
|
||
|
||
"use strict";
|
||
// import CryptoJS from "crypto-js";
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
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 });
|
||
var GameData_1 = require("../GameData");
|
||
var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js
|
||
// import axios from 'axios'
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var HttpUtil = /** @class */ (function (_super) {
|
||
__extends(HttpUtil, _super);
|
||
function HttpUtil() {
|
||
return _super !== null && _super.apply(this, arguments) || this;
|
||
}
|
||
//排行榜type2为获取,type1为上传
|
||
HttpUtil.rankData = function (type, callback, data) {
|
||
return __awaiter(this, void 0, Promise, function () {
|
||
var time, url;
|
||
return __generator(this, function (_a) {
|
||
// let data2 = {
|
||
// gameId:null,
|
||
// userId:null,
|
||
// data:null
|
||
// }
|
||
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
|
||
data.userId = GameData_1.default._instance.GM_INFO.userId;
|
||
time = Math.floor((new Date().getTime()) / 1000);
|
||
url = apiSign("/api/get/rank/data?gameId=" + config.gameId + "&dataType=" + type + "&time=" + time, data);
|
||
this.httpPost(url, data, callback);
|
||
return [2 /*return*/];
|
||
});
|
||
});
|
||
};
|
||
HttpUtil.uploadUserLogData = function (data, callback) {
|
||
return __awaiter(this, void 0, Promise, function () {
|
||
var url;
|
||
return __generator(this, function (_a) {
|
||
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
|
||
data.userId = GameData_1.default._instance.GM_INFO.userId;
|
||
url = '/log/collect/data';
|
||
this.httpPost(url, data, callback);
|
||
return [2 /*return*/];
|
||
});
|
||
});
|
||
};
|
||
//暂时用不到
|
||
HttpUtil.getUserRecord = function (data, callback) {
|
||
return __awaiter(this, void 0, Promise, function () {
|
||
var time, url;
|
||
return __generator(this, function (_a) {
|
||
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
|
||
data.userId = GameData_1.default._instance.GM_INFO.userId;
|
||
time = Math.floor((new Date().getTime()) / 1000);
|
||
url = apiSign("/api/get/user/data?gameId=" + config.gameId + "&time=" + time, data);
|
||
this.httpPost(url, data, callback);
|
||
return [2 /*return*/];
|
||
});
|
||
});
|
||
};
|
||
HttpUtil.httpPost = function (url, data, callBack) {
|
||
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
|
||
data.userId = GameData_1.default._instance.GM_INFO.userId;
|
||
var urlData = "http://api.sparkus.cn" + url;
|
||
// console.log("params:",JSON.stringify(data));
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open('POST', urlData);
|
||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||
xhr.onreadystatechange = function () {
|
||
if (xhr.readyState == 4 && xhr.status == 200) {
|
||
var data = xhr.responseText;
|
||
if (!data) {
|
||
// console.log("初始化失败");
|
||
return;
|
||
}
|
||
var json = JSON.parse(data);
|
||
// console.log('http success:' + json);
|
||
callBack(json);
|
||
}
|
||
else {
|
||
// var json = JSON.parse(data);
|
||
// console.log('http fail:' + url);
|
||
callBack(json);
|
||
}
|
||
};
|
||
xhr.send(JSON.stringify(data));
|
||
};
|
||
HttpUtil.httpGet = function (url, callBack) {
|
||
var urlData = "http://api.sparkus.cn" + url;
|
||
console.log(urlData);
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open('GET', urlData);
|
||
xhr.setRequestHeader('Content-Type', 'text/plain');
|
||
xhr.onreadystatechange = function () {
|
||
if (xhr.readyState == 4 && xhr.status == 200) {
|
||
var data = xhr.responseText;
|
||
if (data) {
|
||
var json = JSON.parse(data);
|
||
console.info('http success:' + json);
|
||
callBack(json);
|
||
}
|
||
else
|
||
callBack(data);
|
||
}
|
||
else {
|
||
console.info('http fail:' + url);
|
||
callBack(null);
|
||
}
|
||
};
|
||
xhr.send();
|
||
};
|
||
HttpUtil = __decorate([
|
||
ccclass
|
||
], HttpUtil);
|
||
return HttpUtil;
|
||
}(cc.Component));
|
||
exports.default = HttpUtil;
|
||
function responseHandler(response) {
|
||
return response.data;
|
||
}
|
||
// 响应拦截器
|
||
// Rq.interceptors.response.use(responseHandler)
|
||
var config = {
|
||
gameId: "100001",
|
||
secretKey: "zDLsruVI",
|
||
EK: "hui231%1"
|
||
};
|
||
var Crypoto = /** @class */ (function () {
|
||
function Crypoto() {
|
||
// 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致
|
||
this.keyHex = this.getHetKey();
|
||
}
|
||
Crypoto.prototype.getHetKey = function () {
|
||
return CryptoJS.enc.Utf8.parse(config.EK);
|
||
};
|
||
/** DES加密 */
|
||
Crypoto.prototype.encryptByDES = function (message, secret) {
|
||
if (!message) {
|
||
return message;
|
||
}
|
||
var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex;
|
||
var encrypted = CryptoJS.DES.encrypt(message, key, {
|
||
mode: CryptoJS.mode.ECB,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
});
|
||
return encrypted.toString();
|
||
};
|
||
/** DES解密 */
|
||
Crypoto.prototype.decryptByDES = function (message, secret) {
|
||
var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex;
|
||
var decrypted = CryptoJS.DES.decrypt({
|
||
ciphertext: CryptoJS.enc.Base64.parse(message)
|
||
}, key, {
|
||
mode: CryptoJS.mode.ECB,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
});
|
||
return decrypted.toString(CryptoJS.enc.Utf8);
|
||
};
|
||
/** hmacSHA256加密 */
|
||
Crypoto.prototype.hmacSha256 = function (message, secret) {
|
||
var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex;
|
||
var hash = CryptoJS.HmacSHA256(message, keyHex);
|
||
return hash.toString();
|
||
};
|
||
/** hmacSHA256验证 */
|
||
Crypoto.prototype.verifyHmacSha256 = function (message, signature) {
|
||
var hash = CryptoJS.HmacSHA256(message, this.keyHex);
|
||
return hash.toString() === signature;
|
||
};
|
||
/** CBC加密 */
|
||
Crypoto.prototype.encryptCBC = function (word) {
|
||
if (!word) {
|
||
return word;
|
||
}
|
||
var srcs = CryptoJS.enc.Utf8.parse(word);
|
||
var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, {
|
||
iv: this.keyHex,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
});
|
||
return encrypted.toString();
|
||
};
|
||
/** CBC解密 */
|
||
Crypoto.prototype.decryptCBC = function (word) {
|
||
if (!word) {
|
||
return word;
|
||
}
|
||
var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
|
||
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
|
||
var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, {
|
||
iv: this.keyHex,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
});
|
||
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
|
||
return decryptedStr.toString();
|
||
};
|
||
return Crypoto;
|
||
}());
|
||
var fxCry = new Crypoto();
|
||
function isEmpty(data) {
|
||
return data === "" || data === null || data === undefined || data.length === 0 || JSON.stringify(data) == "{}";
|
||
}
|
||
function getQueryString(obj) {
|
||
// 首先对对象的键进行排序并过滤空值
|
||
var sortedKeys = Object.keys(obj).sort();
|
||
var sortedObj = {};
|
||
for (var i = 0; i < sortedKeys.length; i++) {
|
||
if (isEmpty(obj[sortedKeys[i]])) {
|
||
continue;
|
||
}
|
||
sortedObj[sortedKeys[i]] = obj[sortedKeys[i]];
|
||
}
|
||
// 然后将排序后的对象转换为查询字符串
|
||
var params = [];
|
||
for (var key in sortedObj) {
|
||
params.push(encodeURIComponent(key) + "=" + encodeURIComponent(sortedObj[key]));
|
||
}
|
||
return params.join('&');
|
||
}
|
||
/**
|
||
* 组装签名字符串
|
||
* @param string url: 请求地址
|
||
* @param string postStr: post参数的a=1&b=2
|
||
* @returns
|
||
*/
|
||
function genSignStr(url, postStr) {
|
||
var lessUrl = url.replace('?', '');
|
||
lessUrl = lessUrl + "&" + postStr;
|
||
return encodeURIComponent(fxCry.hmacSha256(lessUrl));
|
||
}
|
||
// 对参数进行统一urlencode
|
||
function urlencode(url) {
|
||
var _a = url.split("?", 2), baseUrl = _a[0], queryString = _a[1];
|
||
var params = new URLSearchParams(queryString);
|
||
return baseUrl + "?" + params.toString();
|
||
}
|
||
/**
|
||
*
|
||
* @param url {string} 接口地址
|
||
* @param params {object} 需要加密的参数对象
|
||
*/
|
||
function apiSign(url, params) {
|
||
if (params === void 0) { params = {}; }
|
||
var convertUrl = url.trim();
|
||
if (convertUrl.indexOf('?') === -1) {
|
||
convertUrl += '?';
|
||
}
|
||
// 传入参数转换拼接字符串
|
||
var postStr = getQueryString(params);
|
||
var signedStr = genSignStr(convertUrl, postStr);
|
||
var encryptStr = "sign=" + signedStr;
|
||
var encryptSignStr = fxCry.encryptByDES(encryptStr, config.secretKey);
|
||
encryptSignStr = encodeURIComponent(encryptSignStr);
|
||
return urlencode(convertUrl) + "&_p=" + encryptSignStr;
|
||
}
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXEh0dHBVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQ0FBb0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdwQyx3Q0FBbUM7QUFDbkMsNkNBQWdELENBQUUsV0FBVztBQUU3RCw0QkFBNEI7QUFDdEIsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBMEZBLENBQUM7SUF6RkMsc0JBQXNCO0lBQ1QsaUJBQVEsR0FBckIsVUFBc0IsSUFBSSxFQUFDLFFBQVEsRUFBQyxJQUFJO3VDQUFHLE9BQU87OztnQkFDaEQsZ0JBQWdCO2dCQUNoQixpQkFBaUI7Z0JBQ2pCLGlCQUFpQjtnQkFDakIsY0FBYztnQkFDZCxJQUFJO2dCQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQVExQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDaEQsR0FBRyxHQUFHLE9BQU8sQ0FBQywrQkFBNkIsTUFBTSxDQUFDLE1BQU0sa0JBQWEsSUFBSSxjQUFTLElBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFFckcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O0tBQ2xDO0lBRVksMEJBQWlCLEdBQTlCLFVBQStCLElBQUksRUFBQyxRQUFRO3VDQUFH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U0FBUyxDQUFDLEdBQVc7SUFDdEIsSUFBQSxLQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBekMsT0FBTyxRQUFBLEVBQUUsV0FBVyxRQUFxQixDQUFDO0lBQ2pELElBQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELE9BQVUsT0FBTyxTQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUksQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsT0FBTyxDQUFDLEdBQVcsRUFBRSxNQUFXO0lBQVgsdUJBQUEsRUFBQSxXQUFXO0lBRXZDLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDbEMsVUFBVSxJQUFJLEdBQUcsQ0FBQTtLQUNsQjtJQUVELGNBQWM7SUFDZCxJQUFJLE9BQU8sR0FBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFckMsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqRCxJQUFNLFVBQVUsR0FBRyxVQUFRLFNBQVcsQ0FBQTtJQUV0QyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckUsY0FBYyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRW5ELE9BQVUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFPLGNBQWdCLENBQUE7QUFDeEQsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCBDcnlwdG9KUyBmcm9tIFwiY3J5cHRvLWpzXCI7XG5cblxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4uL0dhbWVEYXRhJztcbmltcG9ydCBDcnlwdG9KUyA9IHJlcXVpcmUoJy4vY3J5cHRvLWpzLm1pbi5qcycpOyAgLy/lvJXnlKhBRVPmupDnoIFqc1xuXG4vLyBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcblxuQGNjY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBVdGlsIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcbiAgLy/mjpLooYzmppx0eXBlMuS4uuiOt+WPlu+8jHR5cGUx5Li65LiK5LygXG4gIHN0YXRpYyBhc3luYyByYW5rRGF0YSh0eXBlLGNhbGxiYWNrLGRhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIGxldCBkYXRhMiA9IHtcbiAgICAvLyAgIGdhbWVJZDpudWxsLFxuICAgIC8vICAgdXNlcklkOm51bGwsXG4gICAgLy8gICBkYXRhOm51bGxcbiAgICAvLyB9XG4gICAgZGF0YS5nYW1lSWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5nYW1lSWQ7XG4gICAgZGF0YS51c2VySWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQ7XG4gICAgLy8gZGF0YTIuZGF0YSA9IGRhdGE7XG4gICAgLy8gbGV0IHNodWp1ID0ge1xuICAgIC8vICAgZGF0YTpkYXRhLFxuICAgIC8vICAgZ2FtZUlkIDogR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkLFxuICAgIC8vICAgdXNlcklkIDogIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZFxuICAgIC8vIH07XG5cbiAgICBjb25zdCB0aW1lID0gTWF0aC5mbG9vcigobmV3IERhdGUoKS5nZXRUaW1lKCkpIC8gMTAwMClcbiAgICBjb25zdCB1cmwgPSBhcGlTaWduKGAvYXBpL2dldC9yYW5rL2RhdGE/Z2FtZUlkPSR7Y29uZmlnLmdhbWVJZH0mZGF0YVR5cGU9JHt0eXBlfSZ0aW1lPSR7dGltZX1gLCBkYXRhKVxuXG4gICAgdGhpcy5odHRwUG9zdCh1cmwsZGF0YSxjYWxsYmFjayk7XG4gIH1cbiAgXG4gIHN0YXRpYyBhc3luYyB1cGxvYWRVc2VyTG9nRGF0YShkYXRhLGNhbGxiYWNrKTogUHJvbWlzZTxhbnk+IHtcbiAgICBkYXRhLmdhbWVJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcbiAgICBkYXRhLnVzZXJJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZDtcbiAgICBjb25zdCB1cmwgPSAnL2xvZy9jb2xsZWN0L2RhdGEnO1xuICAgIHRoaXMuaHR0cFBvc3QodXJsLGRhdGEsY2FsbGJhY2spO1xuICB9XG4gIC8v5pqC5pe255So5LiN5YiwXG4gIHN0YXRpYyBhc3luYyBnZXRVc2VyUmVjb3JkKGRhdGEsY2FsbGJhY2spOiBQcm9taXNlPGFueT4ge1xuICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgIGRhdGEudXNlcklkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkO1xuICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxuICAgIGNvbnN0IHVybCA9IGFwaVNpZ24oYC9hcGkvZ2V0L3VzZXIvZGF0YT9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZ0aW1lPSR7dGltZX1gLCBkYXRhKVxuICAgIHRoaXMuaHR0cFBvc3QodXJsLGRhdGEsY2FsbGJhY2spO1xuICB9XG5cbiAgc3RhdGljIGh0dHBQb3N0KHVybCxkYXRhLGNhbGxCYWNrKXtcbiAgICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgICAgZGF0YS51c2VySWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQ7XG4gICAgICB2YXIgdXJsRGF0YSA9IFwiaHR0cDovL2FwaS5zcGFya3VzLmNuXCIgKyB1cmw7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcInBhcmFtczpcIixKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB4aHIub3BlbignUE9TVCcsIHVybERhdGEpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAgIHZhciBkYXRhID0geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgaWYoIWRhdGEpe1xuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLliJ3lp4vljJblpLHotKVcIik7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cCBzdWNjZXNzOicgKyBqc29uKTtcbiAgICAgICAgICAgICAgY2FsbEJhY2soanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAvLyAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cCBmYWlsOicgKyB1cmwpO1xuICAgICAgICAgICAgICBjYWxsQmFjayhqc29uKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgc3RhdGljIGh0dHBHZXQodXJsLGNhbGxCYWNrKXtcbiAgICAgIHZhciB1cmxEYXRhID0gXCJodHRwOi8vYXBpLnNwYXJrdXMuY25cIiArIHVybDtcbiAgICAgIGNvbnNvbGUubG9nKHVybERhdGEpO1xuICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybERhdGEpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICBcbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQgJiYgeGhyLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgICAgdmFyIGRhdGEgPSB4aHIucmVzcG9uc2VUZXh0O1xuICAgICAgICAgICAgICBpZihkYXRhKXtcbiAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnaHR0cCBzdWNjZXNzOicgKyBqc29uKTtcbiAgICAgICAgICAgICAgICAgIGNhbGxCYWNrKGpzb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgY2FsbEJhY2soZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnaHR0cCBmYWlsOicgKyB1cmwpO1xuICAgICAgICAgICAgICBjYWxsQmFjayhudWxsKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNwb25zZUhhbmRsZXIocmVzcG9uc2U6IHsgZGF0YTogYW55IH0pIHtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbn1cbi8vIOWTjeW6lOaLpuaIquWZqFxuLy8gUnEuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXNwb25zZUhhbmRsZXIpXG5jb25zdCBjb25maWcgPSB7XG4gIGdhbWVJZDogXCIxMDAwMDFcIixcbiAgc2VjcmV0S2V5OiBcInpETHNydVZJXCIsXG4gIEVLOlwiaHVpMjMxJTFcIlxufTtcblxuaW50ZXJmYWNlIENyeXBvdG9UeXBlIHtcbiAgZW5jcnlwdEJ5REVTOiBhbnlcbiAgZGVjcnlwdEJ5REVTOiBhbnlcbiAgaG1hY1NoYTI1NjogYW55XG59XG4gXG5jbGFzcyBDcnlwb3RvIGltcGxlbWVudHMgQ3J5cG90b1R5cGUge1xuICAgIC8vIOWKoOWvhueahOWQkeaYjuWAvO+8jOiHquW3seagueaNrumhueebruWunumZheaDheWGteWumu+8jOmcgOimgei3n+WQjuerr+W8gOWPkeS/neaMgeS4gOiHtFxuICAgIHByaXZhdGUga2V5SGV4ID0gdGhpcy5nZXRIZXRLZXkoKVxuIFxuICAgIHByaXZhdGUgZ2V0SGV0S2V5KCkge1xuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY29uZmlnLkVLKTtcbiAgICB9XG5cbiAgICAvKiogREVT5Yqg5a+GICovXG4gICAgZW5jcnlwdEJ5REVTKG1lc3NhZ2U6IHN0cmluZywgc2VjcmV0Pzogc3RyaW5nKSB7XG4gICAgICBpZighbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuICAgICAgY29uc3QgZW5jcnlwdGVkID0gQ3J5cHRvSlMuREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCB7XG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCLFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygpXG4gICAgfVxuXG4gICAgLyoqIERFU+ino+WvhiAqL1xuICAgIGRlY3J5cHRCeURFUyhtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuXG4gICAgICBjb25zdCBkZWNyeXB0ZWQgPSBDcnlwdG9KUy5ERVMuZGVjcnlwdCh7XG4gICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UobWVzc2FnZSlcbiAgICAgIH0sIGtleSwge1xuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkVDQixcbiAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KVxuICAgIH1cblxuICAgIC8qKiBobWFjU0hBMjU25Yqg5a+GICovXG4gICAgaG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xuICAgICAgY29uc3Qga2V5SGV4ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuICAgICAgXG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCBrZXlIZXgpO1xuICAgICAgcmV0dXJuIGhhc2gudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIC8qKiBobWFjU0hBMjU26aqM6K+BICovXG4gICAgdmVyaWZ5SG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCB0aGlzLmtleUhleCk7XG4gICAgICByZXR1cm4gaGFzaC50b1N0cmluZygpID09PSBzaWduYXR1cmVcbiAgICB9XG4gXG4gICAgLyoqIENCQ+WKoOWvhiAqL1xuICAgIGVuY3J5cHRDQkMod29yZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghd29yZCkge1xuICAgICAgICAgICAgcmV0dXJuIHdvcmQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjcyA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHdvcmQpO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChzcmNzLCB0aGlzLmtleUhleCwge1xuICAgICAgICAgICAgaXY6IHRoaXMua2V5SGV4LFxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXG4gICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmdcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoKTsgXG4gICAgfVxuIFxuICAgIC8qKiBDQkPop6Plr4YgKi9cbiAgICBkZWNyeXB0Q0JDKHdvcmQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXdvcmQpIHtcbiAgICAgICAgICAgIHJldHVybiB3b3JkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZEhleFN0ciA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2Uod29yZCk7XG4gICAgICAgIGNvbnN0IHNyY3MgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShlbmNyeXB0ZWRIZXhTdHIpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3JjcywgdGhpcy5rZXlIZXgsIHtcbiAgICAgICAgICAgIGl2OiB0aGlzLmtleUhleCxcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRTdHIgPSBkZWNyeXB0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgICAgICAgcmV0dXJuIGRlY3J5cHRlZFN0ci50b1N0cmluZygpO1xuICAgIH1cbn1cbmNvbnN0IGZ4Q3J5ID0gbmV3IENyeXBvdG8oKTtcblxuZnVuY3Rpb24gaXNFbXB0eShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSBcIlwiIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEubGVuZ3RoID09PSAwIHx8IEpTT04uc3RyaW5naWZ5KGRhdGEpID09IFwie31cIlxufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVN0cmluZyhvYmopIHtcbiAgLy8g6aaW5YWI5a+55a+56LGh55qE6ZSu6L+b6KGM5o6S5bqP5bm26L+H5ruk56m65YC8XG4gIGNvbnN0IHNvcnRlZEtleXMgPSBPYmplY3Qua2V5cyhvYmopLnNvcnQoKTtcbiAgY29uc3Qgc29ydGVkT2JqID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0VtcHR5KG9ialtzb3J0ZWRLZXlzW2ldXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBzb3J0ZWRPYmpbc29ydGVkS2V5c1tpXV0gPSBvYmpbc29ydGVkS2V5c1tpXV07XG4gIH1cbiAgXG4gIC8vIOeEtuWQjuWwhuaOkuW6j+WQjueahOWvueixoei9rOaNouS4uuafpeivouWtl+espuS4slxuICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgaW4gc29ydGVkT2JqKSB7XG4gICAgcGFyYW1zLnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNvcnRlZE9ialtrZXldKX1gKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKTtcbn1cblxuXG4vKipcbiAqIOe7hOijheetvuWQjeWtl+espuS4slxuICogQHBhcmFtIHN0cmluZyB1cmw6IOivt+axguWcsOWdgCBcbiAqIEBwYXJhbSBzdHJpbmcgcG9zdFN0cjogcG9zdOWPguaVsOeahGE9MSZiPTIgXG4gKiBAcmV0dXJucyBcbiAqL1xuXG5mdW5jdGlvbiBnZW5TaWduU3RyKHVybDogc3RyaW5nLCBwb3N0U3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgbGVzc1VybCA9IHVybC5yZXBsYWNlKCc/JywgJycpXG4gIGxlc3NVcmwgPSBsZXNzVXJsICsgXCImXCIgKyBwb3N0U3RyXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZnhDcnkuaG1hY1NoYTI1NihsZXNzVXJsKSlcbn1cbi8vIOWvueWPguaVsOi/m+ihjOe7n+S4gHVybGVuY29kZVxuZnVuY3Rpb24gdXJsZW5jb2RlKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgW2Jhc2VVcmwsIHF1ZXJ5U3RyaW5nXSA9IHVybC5zcGxpdChcIj9cIiwgMik7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICByZXR1cm4gYCR7YmFzZVVybH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHVybCB7c3RyaW5nfSDmjqXlj6PlnLDlnYBcbiAqIEBwYXJhbSBwYXJhbXMge29iamVjdH0g6ZyA6KaB5Yqg5a+G55qE5Y+C5pWw5a+56LGhXG4gKi9cbmZ1bmN0aW9uIGFwaVNpZ24odXJsOiBzdHJpbmcsIHBhcmFtcyA9IHt9KSB7XG5cbiAgbGV0IGNvbnZlcnRVcmwgPSB1cmwudHJpbSgpXG4gIGlmIChjb252ZXJ0VXJsLmluZGV4T2YoJz8nKSA9PT0gLTEpIHtcbiAgICBjb252ZXJ0VXJsICs9ICc/J1xuICB9XG4gIFxuICAvLyDkvKDlhaXlj4LmlbDovazmjaLmi7zmjqXlrZfnrKbkuLJcbiAgbGV0IHBvc3RTdHIgPSAgZ2V0UXVlcnlTdHJpbmcocGFyYW1zKVxuIFxuICBjb25zdCBzaWduZWRTdHIgPSBnZW5TaWduU3RyKGNvbnZlcnRVcmwsIHBvc3RTdHIpXG4gIGNvbnN0IGVuY3J5cHRTdHIgPSBgc2lnbj0ke3NpZ25lZFN0cn1gXG5cbiAgbGV0IGVuY3J5cHRTaWduU3RyID0gZnhDcnkuZW5jcnlwdEJ5REVTKGVuY3J5cHRTdHIsIGNvbmZpZy5zZWNyZXRLZXkpXG4gIGVuY3J5cHRTaWduU3RyID0gZW5jb2RlVVJJQ29tcG9uZW50KGVuY3J5cHRTaWduU3RyKVxuXG4gIHJldHVybiBgJHt1cmxlbmNvZGUoY29udmVydFVybCl9Jl9wPSR7ZW5jcnlwdFNpZ25TdHJ9YFxufVxuXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/ListView/List.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, 'd5421HgLShFKIjj5f18m1mi', 'List');
|
||
// Script/ListView/List.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.StartAxisType = exports.ListType = void 0;
|
||
var ItemRender_1 = require("./ItemRender");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
/**列表排列方式 */
|
||
var ListType;
|
||
(function (ListType) {
|
||
/**水平排列 */
|
||
ListType[ListType["Horizontal"] = 1] = "Horizontal";
|
||
/**垂直排列 */
|
||
ListType[ListType["Vertical"] = 2] = "Vertical";
|
||
/**网格排列 */
|
||
ListType[ListType["Grid"] = 3] = "Grid";
|
||
})(ListType = exports.ListType || (exports.ListType = {}));
|
||
/**网格布局中的方向 */
|
||
var StartAxisType;
|
||
(function (StartAxisType) {
|
||
/**水平排列 */
|
||
StartAxisType[StartAxisType["Horizontal"] = 1] = "Horizontal";
|
||
/**垂直排列 */
|
||
StartAxisType[StartAxisType["Vertical"] = 2] = "Vertical";
|
||
})(StartAxisType = exports.StartAxisType || (exports.StartAxisType = {}));
|
||
/**
|
||
* 列表
|
||
* 根据cocos_example的listView改动而来
|
||
* @author chenkai 2020.7.8
|
||
* @example
|
||
* 1.创建cocos的ScrollView组件,添加List,设置List属性即可
|
||
*
|
||
*/
|
||
var List = /** @class */ (function (_super) {
|
||
__extends(List, _super);
|
||
function List() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
//==================== 属性面板 =========================
|
||
/**列表选项 */
|
||
_this.itemRender = null;
|
||
/**排列方式 */
|
||
_this.type = ListType.Vertical;
|
||
/**网格布局中的方向 */
|
||
_this.startAxis = StartAxisType.Horizontal;
|
||
/**列表项之间X间隔 */
|
||
_this.spaceX = 0;
|
||
/**列表项之间Y间隔 */
|
||
_this.spaceY = 0;
|
||
/**上间距 */
|
||
_this.padding_top = 0;
|
||
/**下间距 */
|
||
_this.padding_buttom = 0;
|
||
/**左间距 */
|
||
_this.padding_left = 0;
|
||
_this._padding = 0;
|
||
/**右间距 */
|
||
_this.padding_right = 0;
|
||
//====================== 滚动容器 ===============================
|
||
/**列表滚动容器 */
|
||
_this.scrollView = null;
|
||
/**scrollView的内容容器 */
|
||
_this.content = null;
|
||
//======================== 列表项 ===========================
|
||
/**列表项数据 */
|
||
_this.itemDataList = [];
|
||
/**应创建的实例数量 */
|
||
_this.spawnCount = 0;
|
||
/**存放列表项实例的数组 */
|
||
_this.itemList = [];
|
||
/**item的高度 */
|
||
_this.itemHeight = 0;
|
||
/**item的宽度 */
|
||
_this.itemWidth = 0;
|
||
/**存放不再使用中的列表项 */
|
||
_this.itemPool = [];
|
||
//======================= 计算参数 ==========================
|
||
/**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */
|
||
_this.halfScrollView = 0;
|
||
/**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */
|
||
_this.lastContentPosX = 0;
|
||
/**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */
|
||
_this.lastContentPosY = 0;
|
||
/**网格行数 */
|
||
_this.gridRow = 0;
|
||
/**网格列数 */
|
||
_this.gridCol = 0;
|
||
/**刷新时间,单位s */
|
||
_this.updateTimer = 0;
|
||
/**刷新间隔,单位s */
|
||
_this.updateInterval = 0.1;
|
||
/**是否滚动容器 */
|
||
_this.bScrolling = false;
|
||
/**刷新的函数 */
|
||
_this.updateFun = function () { };
|
||
return _this;
|
||
}
|
||
List.prototype.onLoad = function () {
|
||
this.itemHeight = this.itemRender.height;
|
||
this.itemWidth = this.itemRender.width;
|
||
this.scrollView = this.node.getComponent(cc.ScrollView);
|
||
this.content = this.scrollView.content;
|
||
this.content.anchorX = 0;
|
||
this.content.anchorY = 1;
|
||
this.content.removeAllChildren();
|
||
this.scrollView.node.on("scrolling", this.onScrolling, this);
|
||
};
|
||
/**
|
||
* 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据)
|
||
* @param itemDataList item数据列表
|
||
*/
|
||
List.prototype.setData = function (itemDataList) {
|
||
this.itemDataList = itemDataList.slice();
|
||
this.updateContent();
|
||
};
|
||
/**计算列表的各项参数 */
|
||
List.prototype.countListParam = function () {
|
||
var dataLen = this.itemDataList.length;
|
||
if (this.type == ListType.Vertical) {
|
||
this.scrollView.horizontal = false;
|
||
this.scrollView.vertical = true;
|
||
this.content.width = this.content.parent.width;
|
||
this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom;
|
||
this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 5; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个
|
||
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围
|
||
this.updateFun = this.updateV;
|
||
}
|
||
else if (this.type == ListType.Horizontal) {
|
||
this.scrollView.horizontal = true;
|
||
this.scrollView.vertical = false;
|
||
this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right;
|
||
this.content.height = this.content.parent.height;
|
||
this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2;
|
||
this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX;
|
||
this.updateFun = this.udpateH;
|
||
}
|
||
else if (this.type == ListType.Grid) {
|
||
if (this.startAxis == StartAxisType.Vertical) {
|
||
this.scrollView.horizontal = false;
|
||
this.scrollView.vertical = true;
|
||
this.content.width = this.content.parent.width;
|
||
//如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效
|
||
if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) {
|
||
this.padding_left = 0;
|
||
this.padding_right = 0;
|
||
console.error("padding_left或padding_right过大");
|
||
}
|
||
this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX));
|
||
this.gridRow = Math.ceil(dataLen / this.gridCol);
|
||
this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom;
|
||
this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2;
|
||
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY;
|
||
this.updateFun = this.updateGrid_V;
|
||
}
|
||
else if (this.startAxis == StartAxisType.Horizontal) {
|
||
this.scrollView.horizontal = true;
|
||
this.scrollView.vertical = false;
|
||
//计算高间隔
|
||
this.content.height = this.content.parent.height;
|
||
//如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效
|
||
if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) {
|
||
this.padding_top = 0;
|
||
this.padding_buttom = 0;
|
||
console.error("padding_top或padding_buttom过大");
|
||
}
|
||
this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY));
|
||
this.gridCol = Math.ceil(dataLen / this.gridRow);
|
||
this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right;
|
||
this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2;
|
||
this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX;
|
||
this.updateFun = this.updateGrid_H;
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* 创建列表
|
||
* @param startIndex 起始显示的数据索引 0表示第一项
|
||
* @param offset scrollView偏移量
|
||
*/
|
||
List.prototype.createList = function (startIndex, offset) {
|
||
//当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端
|
||
if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) {
|
||
startIndex = this.itemDataList.length - this.spawnCount;
|
||
offset = this.scrollView.getMaxScrollOffset();
|
||
//当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项
|
||
}
|
||
else if (this.itemDataList.length <= this.spawnCount) {
|
||
startIndex = 0;
|
||
}
|
||
for (var i = 0; i < this.spawnCount; i++) {
|
||
var item = void 0;
|
||
//需要显示的数据索引在数据范围内,则item实例显示出来
|
||
if (i + startIndex < this.itemDataList.length) {
|
||
if (this.itemList[i] == null) {
|
||
item = this.getItem();
|
||
this.itemList.push(item);
|
||
item.parent = this.content;
|
||
}
|
||
else {
|
||
item = this.itemList[i];
|
||
}
|
||
//需要显示的数据索引超过了数据范围,则item实例隐藏起来
|
||
}
|
||
else {
|
||
//item实例数量 > 需要显示的数据量
|
||
if (this.itemList.length > (this.itemDataList.length - startIndex)) {
|
||
item = this.itemList.pop();
|
||
item.removeFromParent();
|
||
this.itemPool.push(item);
|
||
}
|
||
continue;
|
||
}
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
itemRender.itemIndex = i + startIndex;
|
||
itemRender.data = this.itemDataList[i + startIndex];
|
||
itemRender.dataChanged();
|
||
if (this.type == ListType.Vertical) {
|
||
//因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。
|
||
item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top);
|
||
}
|
||
else if (this.type == ListType.Horizontal) {
|
||
item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2);
|
||
}
|
||
else if (this.type == ListType.Grid) {
|
||
if (this.startAxis == StartAxisType.Vertical) {
|
||
var row = Math.floor((i + startIndex) / this.gridCol);
|
||
var col = (i + startIndex) % this.gridCol;
|
||
item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top);
|
||
item.opacity = 255;
|
||
}
|
||
else if (this.startAxis == StartAxisType.Horizontal) {
|
||
var row = (i + startIndex) % this.gridRow;
|
||
var col = Math.floor((i + startIndex) / this.gridRow);
|
||
item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top);
|
||
item.opacity = 255;
|
||
}
|
||
}
|
||
}
|
||
this.scrollView.scrollToOffset(offset);
|
||
};
|
||
/**获取一个列表项 */
|
||
List.prototype.getItem = function () {
|
||
if (this.itemPool.length == 0) {
|
||
return cc.instantiate(this.itemRender);
|
||
}
|
||
else {
|
||
return this.itemPool.pop();
|
||
}
|
||
};
|
||
List.prototype.update = function (dt) {
|
||
if (this.bScrolling == false) {
|
||
return;
|
||
}
|
||
this.updateTimer += dt;
|
||
if (this.updateTimer < this.updateInterval) {
|
||
return;
|
||
}
|
||
this.updateTimer = 0;
|
||
this.bScrolling = false;
|
||
this.updateFun();
|
||
};
|
||
List.prototype.onScrolling = function () {
|
||
this.bScrolling = true;
|
||
};
|
||
/**垂直排列 */
|
||
List.prototype.updateV = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isUp = this.scrollView.content.y > this.lastContentPosY;
|
||
var offset = (this.itemHeight + this.spaceY) * items.length;
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isUp) {
|
||
//item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界
|
||
if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.y = item.y - offset;
|
||
}
|
||
}
|
||
else {
|
||
//item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界
|
||
if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.y = item.y + offset;
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosY = this.scrollView.content.y;
|
||
};
|
||
/**水平排列 */
|
||
List.prototype.udpateH = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isRight = this.scrollView.content.x > this.lastContentPosX;
|
||
var offset = (this.itemWidth + this.spaceX) * items.length;
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isRight) {
|
||
//item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界
|
||
if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.x = item.x - offset;
|
||
}
|
||
}
|
||
else {
|
||
//item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界
|
||
if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.x = item.x + offset;
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosX = this.scrollView.content.x;
|
||
};
|
||
/**网格垂直排列 */
|
||
List.prototype.updateGrid_V = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isUp = this.scrollView.content.y > this.lastContentPosY;
|
||
var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol);
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isUp) {
|
||
//item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界
|
||
if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.y = item.y - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.y = item.y - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界
|
||
if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.y = item.y + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.y = item.y + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosY = this.scrollView.content.y;
|
||
};
|
||
/**网格水平排列 */
|
||
List.prototype.updateGrid_H = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isRight = this.scrollView.content.x > this.lastContentPosX;
|
||
var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow);
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isRight) {
|
||
//item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界
|
||
if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.x = item.x - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.x = item.x - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
//item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界
|
||
if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.x = item.x + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.x = item.x + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosX = this.scrollView.content.x;
|
||
};
|
||
/**获取item在scrollView的局部坐标 */
|
||
List.prototype.getPositionInView = function (item) {
|
||
var worldPos = item.parent.convertToWorldSpaceAR(item.position);
|
||
var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos);
|
||
return viewPos;
|
||
};
|
||
/**获取列表数据 */
|
||
List.prototype.getListData = function () {
|
||
return this.itemDataList;
|
||
};
|
||
/**
|
||
* 增加一项数据到列表的末尾
|
||
* @param data 数据
|
||
*/
|
||
List.prototype.addItem = function (data) {
|
||
this.itemDataList.push(data);
|
||
this.updateContent();
|
||
};
|
||
/**
|
||
* 增加一项数据到列表指定位置
|
||
* @param index 位置,0表示第1项
|
||
* @param data 数据
|
||
*/
|
||
List.prototype.addItemAt = function (index, data) {
|
||
if (this.itemDataList[index] != null || this.itemDataList.length == index) {
|
||
this.itemDataList.splice(index, 1, data);
|
||
this.updateContent();
|
||
}
|
||
};
|
||
/**
|
||
* 删除一项数据
|
||
* @param index 删除项的位置 ,0表示第1项
|
||
*/
|
||
List.prototype.deleteItem = function (index) {
|
||
if (this.itemDataList[index] != null) {
|
||
this.itemDataList.splice(index, 1);
|
||
this.updateContent();
|
||
}
|
||
};
|
||
/**
|
||
* 改变一项数据
|
||
* @param index 位置,0表示第1项
|
||
* @param data 替换的数据
|
||
*/
|
||
List.prototype.changeItem = function (index, data) {
|
||
if (this.itemDataList[index] != null) {
|
||
this.itemDataList[index] = data;
|
||
this.updateContent();
|
||
}
|
||
};
|
||
/**获取第一个Item的位置 */
|
||
List.prototype.updateContent = function () {
|
||
//显示列表实例为0个
|
||
if (this.itemList.length == 0) {
|
||
this.countListParam();
|
||
this.createList(0, new cc.Vec2(0, 0));
|
||
//显示列表的实例不为0个,则需要重新排列item实例数组
|
||
}
|
||
else {
|
||
if (this.type == ListType.Vertical) {
|
||
this.itemList.sort(function (a, b) {
|
||
return b.y - a.y;
|
||
});
|
||
}
|
||
else if (this.type == ListType.Horizontal) {
|
||
this.itemList.sort(function (a, b) {
|
||
return a.x - b.x;
|
||
});
|
||
}
|
||
else if (this.type == ListType.Grid) {
|
||
if (this.startAxis == StartAxisType.Vertical) {
|
||
this.itemList.sort(function (a, b) {
|
||
return a.x - b.x;
|
||
});
|
||
this.itemList.sort(function (a, b) {
|
||
return b.y - a.y;
|
||
});
|
||
}
|
||
else if (this.startAxis == StartAxisType.Horizontal) {
|
||
this.itemList.sort(function (a, b) {
|
||
return b.y - a.y;
|
||
});
|
||
this.itemList.sort(function (a, b) {
|
||
return a.x - b.x;
|
||
});
|
||
}
|
||
}
|
||
this.countListParam();
|
||
//获取第一个item实例需要显示的数据索引
|
||
var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex;
|
||
if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) {
|
||
startIndex += (startIndex + this.spawnCount) % this.gridCol;
|
||
}
|
||
else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) {
|
||
startIndex += (startIndex + this.spawnCount) % this.gridRow;
|
||
}
|
||
//getScrollOffset()和scrollToOffset()的x值是相反的
|
||
var offset = this.scrollView.getScrollOffset();
|
||
offset.x = -offset.x;
|
||
this.createList(startIndex, offset);
|
||
}
|
||
};
|
||
/**销毁 */
|
||
List.prototype.onDestroy = function () {
|
||
//清理列表项
|
||
var len = this.itemList.length;
|
||
for (var i = 0; i < len; i++) {
|
||
if (cc.isValid(this.itemList[i], true)) {
|
||
this.itemList[i].destroy();
|
||
}
|
||
}
|
||
this.itemList.length = 0;
|
||
//清理对象池
|
||
len = this.itemPool.length;
|
||
for (var i = 0; i < len; i++) {
|
||
if (cc.isValid(this.itemPool[i], true)) {
|
||
this.itemPool[i].destroy();
|
||
}
|
||
}
|
||
this.itemPool.length = 0;
|
||
//清理列表数据
|
||
this.itemDataList.length = 0;
|
||
};
|
||
__decorate([
|
||
property({ type: cc.Node, tooltip: "列表项" })
|
||
], List.prototype, "itemRender", void 0);
|
||
__decorate([
|
||
property({ type: cc.Enum(ListType), tooltip: "排列方式" })
|
||
], List.prototype, "type", void 0);
|
||
__decorate([
|
||
property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } })
|
||
], List.prototype, "startAxis", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } })
|
||
], List.prototype, "spaceX", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } })
|
||
], List.prototype, "spaceY", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_top", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_buttom", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_left", void 0);
|
||
__decorate([
|
||
property(cc.Integer)
|
||
], List.prototype, "_padding", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_right", void 0);
|
||
List = __decorate([
|
||
ccclass
|
||
], List);
|
||
return List;
|
||
}(cc.Component));
|
||
exports.default = List;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsMkNBQXFDO0FBRS9CLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRTVDLFlBQVk7QUFDWixJQUFZLFFBT1g7QUFQRCxXQUFZLFFBQVE7SUFDaEIsVUFBVTtJQUNWLG1EQUFjLENBQUE7SUFDZCxVQUFVO0lBQ1YsK0NBQVksQ0FBQTtJQUNaLFVBQVU7SUFDVix1Q0FBUSxDQUFBO0FBQ1osQ0FBQyxFQVBXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBT25CO0FBRUQsY0FBYztBQUNkLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUNyQixVQUFVO0lBQ1YsNkRBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDVix5REFBWSxDQUFBO0FBQ2hCLENBQUMsRUFMVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUt4QjtBQUVEOzs7Ozs7O0dBT0c7QUFFSDtJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQXdpQkM7UUF0aUJHLHFEQUFxRDtRQUNyRCxVQUFVO1FBRUgsZ0JBQVUsR0FBWSxJQUFJLENBQUM7UUFFbEMsVUFBVTtRQUVILFVBQUksR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBRTFDLGNBQWM7UUFFUCxlQUFTLEdBQWtCLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFFM0QsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsU0FBUztRQUVGLGlCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRS9C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QUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FDL0c7SUFJMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sZ0JBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7d0NBQzNHO0lBSTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLGdCQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs2Q0FDckc7SUFJL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO2dEQUNsRztJQUlsQztRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7OENBQ3RHO0lBS2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7MENBQ087SUFJNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDOytDQUNyRztJQTFDaEIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQXdpQnhCO0lBQUQsV0FBQztDQXhpQkQsQUF3aUJDLENBeGlCaUMsRUFBRSxDQUFDLFNBQVMsR0F3aUI3QztrQkF4aUJvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEl0ZW1SZW5kZXIgZnJvbSBcIi4vSXRlbVJlbmRlclwiXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuLyoq5YiX6KGo5o6S5YiX5pa55byPICovXHJcbmV4cG9ydCBlbnVtIExpc3RUeXBlIHtcclxuICAgIC8qKuawtOW5s+aOkuWIlyAqL1xyXG4gICAgSG9yaXpvbnRhbCA9IDEsXHJcbiAgICAvKirlnoLnm7TmjpLliJcgKi9cclxuICAgIFZlcnRpY2FsID0gMixcclxuICAgIC8qKue9keagvOaOkuWIlyAqL1xyXG4gICAgR3JpZCA9IDNcclxufVxyXG5cclxuLyoq572R5qC85biD5bGA5Lit55qE5pa55ZCRICovXHJcbmV4cG9ydCBlbnVtIFN0YXJ0QXhpc1R5cGUge1xyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBIb3Jpem9udGFsID0gMSxcclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgVmVydGljYWwgPSAyLFxyXG59XHJcblxyXG4vKipcclxuICog5YiX6KGoXHJcbiAqIOagueaNrmNvY29zX2V4YW1wbGXnmoRsaXN0Vmlld+aUueWKqOiAjOadpVxyXG4gKiBAYXV0aG9yIGNoZW5rYWkgMjAyMC43LjhcclxuICogQGV4YW1wbGVcclxuICogIDEu5Yib5bu6Y29jb3PnmoRTY3JvbGxWaWV357uE5Lu277yM5re75YqgTGlzdO+8jOiuvue9rkxpc3TlsZ7mgKfljbPlj69cclxuICogIFxyXG4gKi9cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlzdCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgLy89PT09PT09PT09PT09PT09PT09PSDlsZ7mgKfpnaLmnb8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoq5YiX6KGo6YCJ6aG5ICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5Ob2RlLCB0b29sdGlwOiBcIuWIl+ihqOmhuVwiIH0pXHJcbiAgICBwdWJsaWMgaXRlbVJlbmRlcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgLyoq5o6S5YiX5pa55byPICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5FbnVtKExpc3RUeXBlKSwgdG9vbHRpcDogXCLmjpLliJfmlrnlvI9cIiB9KVxyXG4gICAgcHVibGljIHR5cGU6IExpc3RUeXBlID0gTGlzdFR5cGUuVmVydGljYWw7XHJcblxyXG4gICAgLyoq572R5qC85biD5bGA5Lit55qE5pa55ZCRICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5FbnVtKFN0YXJ0QXhpc1R5cGUpLCB0b29sdGlwOiBcIue9keagvOW4g+WxgOS4reeahOaWueWQkVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgfSB9KVxyXG4gICAgcHVibGljIHN0YXJ0QXhpczogU3RhcnRBeGlzVHlwZSA9IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAvKirliJfooajpobnkuYvpl7RY6Ze06ZqUICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuWIl+ihqOmhuVjpl7TpmpRcIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkgfSB9KVxyXG4gICAgcHVibGljIHNwYWNlWDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirliJfooajpobnkuYvpl7RZ6Ze06ZqUICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuWIl+ihqOmhuVnpl7TpmpRcIiwgdmlzaWJsZSgpIHsgcmV0dXJuIHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCB9IH0pXHJcbiAgICBwdWJsaWMgc3BhY2VZOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuS4iumXtOi3nSAqL1xyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogY2MuSW50ZWdlciwgdG9vbHRpcDogXCLkuIrpl7Tot51cIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX3RvcDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirkuIvpl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5LiL6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgcGFkZGluZ19idXR0b206IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5bem6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuW3pumXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgcGFkZGluZ19sZWZ0OiBudW1iZXIgPSAwO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkludGVnZXIpXHJcbiAgICBwdWJsaWMgX3BhZGRpbmc6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5Y+z6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuWPs+mXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgcGFkZGluZ19yaWdodDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT0g5rua5Yqo5a655ZmoID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKuWIl+ihqOa7muWKqOWuueWZqCAqL1xyXG4gICAgcHVibGljIHNjcm9sbFZpZXc6IGNjLlNjcm9sbFZpZXcgPSBudWxsO1xyXG4gICAgLyoqc2Nyb2xsVmlld+eahOWGheWuueWuueWZqCAqL1xyXG4gICAgcHJpdmF0ZSBjb250ZW50OiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PSDliJfooajpobkgPT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirliJfooajpobnmlbDmja4gKi9cclxuICAgIHByaXZhdGUgaXRlbURhdGFMaXN0OiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAvKirlupTliJvlu7rnmoTlrp7kvovmlbDph48gKi9cclxuICAgIHByaXZhdGUgc3Bhd25Db3VudDogbnVtYmVyID0gMDtcclxuICAgIC8qKuWtmOaUvuWIl+ihqOmhueWunuS+i+eahOaVsOe7hCAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtTGlzdDogQXJyYXk8Y2MuTm9kZT4gPSBbXTtcclxuICAgIC8qKml0ZW3nmoTpq5jluqYgKi9cclxuICAgIHByaXZhdGUgaXRlbUhlaWdodDogbnVtYmVyID0gMDtcclxuICAgIC8qKml0ZW3nmoTlrr3luqYgKi9cclxuICAgIHByaXZhdGUgaXRlbVdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5a2Y5pS+5LiN5YaN5L2/55So5Lit55qE5YiX6KGo6aG5ICovXHJcbiAgICBwcml2YXRlIGl0ZW1Qb29sOiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT0g6K6h566X5Y+C5pWwID09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirot53nprtzY3JvbGxWaWV35Lit5b+D54K555qE6Led56a777yM6LaF6L+H6L+Z5Liq6Led56a755qEaXRlbeS8muiiq+mHjee9ru+8jOS4gOiIrOiuvue9ruS4uiBzY3JvbGxWSWV3LmhlaWdodC8yICsgaXRlbS5oZWlndC8yICsgc3BhY2XvvIzlm6DkuLrov5nkuKrot53nprtpdGVt5q2j5aW96LaF5Ye6c2Nyb2xsVmlld+aYvuekuuiMg+WbtCAqL1xyXG4gICAgcHJpdmF0ZSBoYWxmU2Nyb2xsVmlldzogbnVtYmVyID0gMDtcclxuICAgIC8qKuS4iuS4gOasoWNvbnRlbnTnmoRY5YC877yM55So5LqO5ZKM546w5ZyoY29udGVudOeahFjlgLzmr5TovoPvvIzlvpflh7rmmK/lkJHlt6bov5jmmK/lkJHlj7Pmu5rliqggKi9cclxuICAgIHByaXZhdGUgbGFzdENvbnRlbnRQb3NYOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5LiK5LiA5qyhY29udGVudOeahFnlgLzvvIznlKjkuo7lkoznjrDlnKhjb250ZW5055qEWeWAvOavlOi+g++8jOW+l+WHuuaYr+WQkeS4iui/mOaYr+WQkeS4i+a7muWKqCAqL1xyXG4gICAgcHJpdmF0ZSBsYXN0Q29udGVudFBvc1k6IG51bWJlciA9IDA7XHJcbiAgICAvKirnvZHmoLzooYzmlbAgKi9cclxuICAgIHByaXZhdGUgZ3JpZFJvdzogbnVtYmVyID0gMDtcclxuICAgIC8qKue9keagvOWIl+aVsCAqL1xyXG4gICAgcHJpdmF0ZSBncmlkQ29sOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5Yi35paw5pe26Ze077yM5Y2V5L2NcyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lcjogbnVtYmVyID0gMDtcclxuICAgIC8qKuWIt+aWsOmXtOmalO+8jOWNleS9jXMgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlSW50ZXJ2YWw6IG51bWJlciA9IDAuMTtcclxuICAgIC8qKuaYr+WQpua7muWKqOWuueWZqCAqL1xyXG4gICAgcHJpdmF0ZSBiU2Nyb2xsaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKirliLfmlrDnmoTlh73mlbAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlRnVuOiBGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsgfTtcclxuXHJcbiAgICBvbkxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtSGVpZ2h0ID0gdGhpcy5pdGVtUmVuZGVyLmhlaWdodDtcclxuICAgICAgICB0aGlzLml0ZW1XaWR0aCA9IHRoaXMuaXRlbVJlbmRlci53aWR0aDtcclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNjcm9sbFZpZXcpO1xyXG4gICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50O1xyXG4gICAgICAgIHRoaXMuY29udGVudC5hbmNob3JYID0gMDtcclxuICAgICAgICB0aGlzLmNvbnRlbnQuYW5jaG9yWSA9IDE7XHJcbiAgICAgICAgdGhpcy5jb250ZW50LnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lm5vZGUub24oXCJzY3JvbGxpbmdcIiwgdGhpcy5vblNjcm9sbGluZywgdGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJfooajmlbDmja4gKOWIl+ihqOaVsOaNruWkjeWItuS9v+eUqO+8jOWmguaenOWIl+ihqOaVsOaNruaUueWPmO+8jOWImemcgOimgemHjeaWsOiuvue9ruS4gOmBjeaVsOaNrilcclxuICAgICAqIEBwYXJhbSBpdGVtRGF0YUxpc3QgaXRlbeaVsOaNruWIl+ihqFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGF0YShpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdCA9IGl0ZW1EYXRhTGlzdC5zbGljZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiuoeeul+WIl+ihqOeahOWQhOmhueWPguaVsCAqL1xyXG4gICAgcHJpdmF0ZSBjb3VudExpc3RQYXJhbSgpIHtcclxuICAgICAgICBsZXQgZGF0YUxlbiA9IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuY29udGVudC5wYXJlbnQud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSBkYXRhTGVuICogdGhpcy5pdGVtSGVpZ2h0ICsgKGRhdGFMZW4gLSAxKSAqIHRoaXMuc3BhY2VZICsgdGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b207XHJcbiAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSkgKyA1OyAvL+iuoeeul+WIm+W7uueahGl0ZW3lrp7kvovmlbDph4/vvIzmr5TlvZPliY1zY3JvbGxWaWV35a655Zmo6IO95pS+5LiL55qEaXRlbeaVsOmHj+WGjeWKoOS4ijLkuKpcclxuICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvIDIgKyB0aGlzLml0ZW1IZWlnaHQgLyAyICsgdGhpcy5zcGFjZVk7IC8v6K6h566XYnVmZmVyWm9uZe+8jGl0ZW3nmoTmmL7npLrojIPlm7RcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZVY7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSBkYXRhTGVuICogdGhpcy5pdGVtV2lkdGggKyAoZGF0YUxlbiAtIDEpICogdGhpcy5zcGFjZVggKyB0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodDtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuY29udGVudC5wYXJlbnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpKSArIDI7XHJcbiAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvIDIgKyB0aGlzLml0ZW1XaWR0aCAvIDIgKyB0aGlzLnNwYWNlWDtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVkcGF0ZUg7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmNvbnRlbnQucGFyZW50LndpZHRoO1xyXG4gICAgICAgICAgICAgICAgLy/lpoLmnpxsZWZ05ZKMcmlnaHTpl7TpmpTov4flpKfvvIzlr7zoh7TmlL7kuI3kuIvkuIDkuKppdGVt77yM5YiZbGVmdOWSjHJpZ2h06YO96K6+572u5Li6MO+8jOebuOW9k+S6juS4jeeUn+aViFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFkZGluZ19sZWZ0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0ICsgdGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCA+IHRoaXMuY29udGVudC53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19sZWZ0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfcmlnaHQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYWRkaW5nX2xlZnTmiJZwYWRkaW5nX3JpZ2h06L+H5aSnXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbCA9IE1hdGguZmxvb3IoKHRoaXMuY29udGVudC53aWR0aCAtIHRoaXMucGFkZGluZ19sZWZ0IC0gdGhpcy5wYWRkaW5nX3JpZ2h0KSAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRSb3cgPSBNYXRoLmNlaWwoZGF0YUxlbiAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gdGhpcy5ncmlkUm93ICogdGhpcy5pdGVtSGVpZ2h0ICsgKHRoaXMuZ3JpZFJvdyAtIDEpICogdGhpcy5zcGFjZVkgKyB0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSkgKiB0aGlzLmdyaWRDb2wgKyB0aGlzLmdyaWRDb2wgKiAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvIDIgKyB0aGlzLml0ZW1IZWlnaHQgLyAyICsgdGhpcy5zcGFjZVk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudXBkYXRlR3JpZF9WO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvL+iuoeeul+mrmOmXtOmalFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuY29udGVudC5wYXJlbnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgLy/lpoLmnpxsZWZ05ZKMcmlnaHTpl7TpmpTov4flpKfvvIzlr7zoh7TmlL7kuI3kuIvkuIDkuKppdGVt77yM5YiZbGVmdOWSjHJpZ2h06YO96K6+572u5Li6MO+8jOebuOW9k+S6juS4jeeUn+aViFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tICsgdGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkgPiB0aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX3RvcCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX2J1dHRvbSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInBhZGRpbmdfdG9w5oiWcGFkZGluZ19idXR0b23ov4flpKdcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkUm93ID0gTWF0aC5mbG9vcigodGhpcy5jb250ZW50LmhlaWdodCAtIHRoaXMucGFkZGluZ190b3AgLSB0aGlzLnBhZGRpbmdfYnV0dG9tKSAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29sID0gTWF0aC5jZWlsKGRhdGFMZW4gLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5ncmlkQ29sICogdGhpcy5pdGVtV2lkdGggKyAodGhpcy5ncmlkQ29sIC0gMSkgKiB0aGlzLnNwYWNlWCArIHRoaXMucGFkZGluZ19sZWZ0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSkgKiB0aGlzLmdyaWRSb3cgKyB0aGlzLmdyaWRSb3cgKiAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gMiArIHRoaXMuaXRlbVdpZHRoIC8gMiArIHRoaXMuc3BhY2VYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZUdyaWRfSDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIm+W7uuWIl+ihqCBcclxuICAgICAqIEBwYXJhbSBzdGFydEluZGV4IOi1t+Wni+aYvuekuueahOaVsOaNrue0ouW8lSAw6KGo56S656ys5LiA6aG5XHJcbiAgICAgKiBAcGFyYW0gb2Zmc2V0ICAgICBzY3JvbGxWaWV35YGP56e76YePXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlTGlzdChzdGFydEluZGV4OiBudW1iZXIsIG9mZnNldDogY2MuVmVjMikge1xyXG4gICAgICAgIC8v5b2T6ZyA6KaB5pi+56S655qE5pWw5o2u6ZW/5bqmID4g6Jma5ouf5YiX6KGo6ZW/5bqm77yMIOWIoOmZpOacgOacq+WwvuWHoOS4quaVsOaNruaXtu+8jOWIl+ihqOmcgOimgemHjee9ruS9jee9ruWIsHNjcm9sbFZpZXfmnIDlupXnq69cclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID4gdGhpcy5zcGF3bkNvdW50ICYmIChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50IC0gMSkgPj0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0SW5kZXggPSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggLSB0aGlzLnNwYXduQ291bnQ7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuc2Nyb2xsVmlldy5nZXRNYXhTY3JvbGxPZmZzZXQoKTtcclxuXHJcbiAgICAgICAgICAgIC8v5b2T6ZyA6KaB5pi+56S655qE5pWw5o2u6ZW/5bqmIDw9IOiZmuaLn+WIl+ihqOmVv+W6pu+8jCDpmpDol4/lpJrkvZnnmoTomZrmi5/liJfooajpobkgXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPD0gdGhpcy5zcGF3bkNvdW50KSB7XHJcbiAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNwYXduQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogY2MuTm9kZTtcclxuICAgICAgICAgICAgLy/pnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJXlnKjmlbDmja7ojIPlm7TlhoXvvIzliJlpdGVt5a6e5L6L5pi+56S65Ye65p2lXHJcbiAgICAgICAgICAgIGlmIChpICsgc3RhcnRJbmRleCA8IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3RbaV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLmdldEl0ZW0oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSB0aGlzLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1MaXN0W2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/pnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJXotoXov4fkuobmlbDmja7ojIPlm7TvvIzliJlpdGVt5a6e5L6L6ZqQ6JeP6LW35p2lXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lrp7kvovmlbDph48gPiDpnIDopoHmmL7npLrnmoTmlbDmja7ph49cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1MaXN0Lmxlbmd0aCA+ICh0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggLSBzdGFydEluZGV4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1MaXN0LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVBvb2wucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGkgKyBzdGFydEluZGV4O1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpICsgc3RhcnRJbmRleF07XHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIC8v5Zug5Li6Y29udGVudOeahOmUmueCuVjmmK8w77yM5omA5LulaXRlbeeahHjlgLzmmK9jb250ZW50LndpdGgvMuihqOekuuWxheS4re+8jOmUmueCuVnmmK8x77yM5omA5LulaXRlbeeahHnlgLzku45jb250ZW506aG26YOo5ZCR5LiL5pivMOWIsOi0n+aXoOept+OAguaJgOS7pWl0ZW0ueT0gLWl0ZW0uaGVpZ2h0LzLml7bvvIzmmK/lnKhjb250ZW5055qE6aG26YOo44CCXHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKHRoaXMuY29udGVudC53aWR0aCAvIDIsIC1pdGVtLmhlaWdodCAqICgwLjUgKyBpICsgc3RhcnRJbmRleCkgLSB0aGlzLnNwYWNlWSAqIChpICsgc3RhcnRJbmRleCkgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpdGVtLndpZHRoICogKDAuNSArIGkgKyBzdGFydEluZGV4KSArIHRoaXMuc3BhY2VYICogKGkgKyBzdGFydEluZGV4KSArIHRoaXMucGFkZGluZ19sZWZ0LCAtdGhpcy5jb250ZW50LmhlaWdodCAvIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBNYXRoLmZsb29yKChpICsgc3RhcnRJbmRleCkgLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSAoaSArIHN0YXJ0SW5kZXgpICUgdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBjb2wpICsgdGhpcy5zcGFjZVggKiBjb2wgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIHJvdykgLSB0aGlzLnNwYWNlWSAqIHJvdyAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IChpICsgc3RhcnRJbmRleCkgJSB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbCA9IE1hdGguZmxvb3IoKGkgKyBzdGFydEluZGV4KSAvIHRoaXMuZ3JpZFJvdyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpdGVtLndpZHRoICogKDAuNSArIGNvbCkgKyB0aGlzLnNwYWNlWCAqIGNvbCArIHRoaXMucGFkZGluZ19sZWZ0LCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgcm93KSAtIHRoaXMuc3BhY2VZICogcm93IC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcuc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bkuIDkuKrliJfooajpobkgKi9cclxuICAgIHByaXZhdGUgZ2V0SXRlbSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtUG9vbC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2MuaW5zdGFudGlhdGUodGhpcy5pdGVtUmVuZGVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtUG9vbC5wb3AoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYlNjcm9sbGluZyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgKz0gZHQ7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlVGltZXIgPCB0aGlzLnVwZGF0ZUludGVydmFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lciA9IDA7XHJcbiAgICAgICAgdGhpcy5iU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGdW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNjcm9sbGluZygpIHtcclxuICAgICAgICB0aGlzLmJTY3JvbGxpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVWKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW07XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1VwID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueSA+IHRoaXMubGFzdENvbnRlbnRQb3NZO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpICogaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1VwKSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3kuIrmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiK6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4i+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIvmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiL6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnkgLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfYnV0dG9tID4gLXRoaXMuY29udGVudC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3kuIvmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiL6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4iuaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIrmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiK6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS55ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3RvcCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1kgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuawtOW5s+aOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1ZHBhdGVIKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW07XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1JpZ2h0ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueCA+IHRoaXMubGFzdENvbnRlbnRQb3NYO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkgKiBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzUmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeWPs+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflj7PovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5bem5pa55aSN55So77yMaXRlbeenu+WKqOWIsOW3puaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlt6bovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPiBidWZmZXJab25lICYmIGl0ZW0ueCAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19sZWZ0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeW3pua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflt6bovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5Y+z5pa55aSN55So77yMaXRlbeenu+WKqOWIsOWPs+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlj7PovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnggKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfcmlnaHQgPCB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1ggPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKue9keagvOWeguebtOaOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkX1YoKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTogY2MuTm9kZTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzVXAgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55ID4gdGhpcy5sYXN0Q29udGVudFBvc1k7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkgKiAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNVcCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiK5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4iui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIvmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiL5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4i+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA+IGJ1ZmZlclpvbmUgJiYgaXRlbS55IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2J1dHRvbSA+IC10aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkQ29sKSAqIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Ugey8vaXRlbeS4i+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIvovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiK5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4iuaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIrovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnkgKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfdG9wIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCkgKiB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWSA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lnk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq572R5qC85rC05bmz5o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUdyaWRfSCgpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNSaWdodCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnggPiB0aGlzLmxhc3RDb250ZW50UG9zWDtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpICogKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZFJvdyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzUmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeWPs+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflj7PovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5bem5pa55aSN55So77yMaXRlbeenu+WKqOWIsOW3puaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlt6bovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPiBidWZmZXJab25lICYmIGl0ZW0ueCAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19sZWZ0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZFJvdykgKiB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeW3pua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflt6bovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5Y+z5pa55aSN55So77yMaXRlbeenu+WKqOWIsOWPs+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlj7PovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnggKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfcmlnaHQgPCB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpICogdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1ggPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPlml0ZW3lnKhzY3JvbGxWaWV355qE5bGA6YOo5Z2Q5qCHICovXHJcbiAgICBwcml2YXRlIGdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pIHtcclxuICAgICAgICBsZXQgd29ybGRQb3MgPSBpdGVtLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoaXRlbS5wb3NpdGlvbik7XHJcbiAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5jb252ZXJ0VG9Ob2RlU3BhY2VBUih3b3JsZFBvcyk7XHJcbiAgICAgICAgcmV0dXJuIHZpZXdQb3M7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W5YiX6KGo5pWw5o2uICovXHJcbiAgICBwdWJsaWMgZ2V0TGlzdERhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbURhdGFMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aKe5Yqg5LiA6aG55pWw5o2u5Yiw5YiX6KGo55qE5pyr5bC+XHJcbiAgICAgKiBAcGFyYW0gZGF0YSDmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEl0ZW0oZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3QucHVzaChkYXRhKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWinuWKoOS4gOmhueaVsOaNruWIsOWIl+ihqOaMh+WumuS9jee9rlxyXG4gICAgICogQHBhcmFtIGluZGV4ICAg5L2N572u77yMMOihqOekuuesrDHpoblcclxuICAgICAqIEBwYXJhbSBkYXRhICDmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEl0ZW1BdChpbmRleDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwgfHwgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnNwbGljZShpbmRleCwgMSwgZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIoOmZpOS4gOmhueaVsOaNrlxyXG4gICAgICogQHBhcmFtIGluZGV4IOWIoOmZpOmhueeahOS9jee9riAsMOihqOekuuesrDHpoblcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0ZUl0ZW0oaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmlLnlj5jkuIDpobnmlbDmja5cclxuICAgICAqIEBwYXJhbSBpbmRleCAgIOS9jee9riww6KGo56S656ysMemhuVxyXG4gICAgICogQHBhcmFtIGRhdGEgIOabv+aNoueahOaVsOaNrlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hhbmdlSXRlbShpbmRleDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluesrOS4gOS4qkl0ZW3nmoTkvY3nva4gKi9cclxuICAgIHByaXZhdGUgdXBkYXRlQ29udGVudCgpIHtcclxuICAgICAgICAvL+aYvuekuuWIl+ihqOWunuS+i+S4ujDkuKpcclxuICAgICAgICBpZiAodGhpcy5pdGVtTGlzdC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50TGlzdFBhcmFtKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlzdCgwLCBuZXcgY2MuVmVjMigwLCAwKSk7XHJcbiAgICAgICAgICAgIC8v5pi+56S65YiX6KGo55qE5a6e5L6L5LiN5Li6MOS4qu+8jOWImemcgOimgemHjeaWsOaOkuWIl2l0ZW3lrp7kvovmlbDnu4RcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIueSAtIGEueTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEueCAtIGIueDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEueCAtIGIueDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIueSAtIGEueTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY291bnRMaXN0UGFyYW0oKTtcclxuXHJcbiAgICAgICAgICAgIC8v6I635Y+W56ys5LiA5LiqaXRlbeWunuS+i+mcgOimgeaYvuekuueahOaVsOaNrue0ouW8lVxyXG4gICAgICAgICAgICB2YXIgc3RhcnRJbmRleCA9IHRoaXMuaXRlbUxpc3RbMF0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpLml0ZW1JbmRleDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCAmJiB0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ICs9IChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50KSAlIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCAmJiB0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggKz0gKHN0YXJ0SW5kZXggKyB0aGlzLnNwYXduQ291bnQpICUgdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2dldFNjcm9sbE9mZnNldCgp5ZKMc2Nyb2xsVG9PZmZzZXQoKeeahHjlgLzmmK/nm7jlj43nmoRcclxuICAgICAgICAgICAgdmFyIG9mZnNldDogY2MuVmVjMiA9IHRoaXMuc2Nyb2xsVmlldy5nZXRTY3JvbGxPZmZzZXQoKTtcclxuICAgICAgICAgICAgb2Zmc2V0LnggPSAtIG9mZnNldC54O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVMaXN0KHN0YXJ0SW5kZXgsIG9mZnNldCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKumUgOavgSAqL1xyXG4gICAgcHVibGljIG9uRGVzdHJveSgpIHtcclxuICAgICAgICAvL+a4heeQhuWIl+ihqOmhuVxyXG4gICAgICAgIGxldCBsZW4gPSB0aGlzLml0ZW1MaXN0Lmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5pc1ZhbGlkKHRoaXMuaXRlbUxpc3RbaV0sIHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0W2ldLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLml0ZW1MaXN0Lmxlbmd0aCA9IDA7XHJcbiAgICAgICAgLy/muIXnkIblr7nosaHmsaBcclxuICAgICAgICBsZW4gPSB0aGlzLml0ZW1Qb29sLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5pc1ZhbGlkKHRoaXMuaXRlbVBvb2xbaV0sIHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Qb29sW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLml0ZW1Qb29sLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgLy/muIXnkIbliJfooajmlbDmja5cclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/GameTool.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, '35a73aTEIBAZoXKp/xutwzU', 'GameTool');
|
||
// Script/tool/GameTool.ts
|
||
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.GameTool = void 0;
|
||
var GameData_1 = require("../GameData");
|
||
var HttpUtil_1 = require("../crypto/HttpUtil");
|
||
var Storage_1 = require("./Storage");
|
||
//最大工具类
|
||
var GameTool = {
|
||
_startTime: 0,
|
||
_endTime: 0,
|
||
_totalTime: 0,
|
||
getSeedRandom: function (min, max) {
|
||
max = max || 1;
|
||
min = min || 0;
|
||
GameData_1.default._instance.GM_INFO.currSeed = (GameData_1.default._instance.GM_INFO.currSeed * 9301 + 49297) % 233280;
|
||
var rnd = GameData_1.default._instance.GM_INFO.currSeed / 233280.0;
|
||
var tmp = min + rnd * (max - min);
|
||
return Math.floor(tmp);
|
||
},
|
||
//获取userId
|
||
Authentication: function () {
|
||
var name = "user_" + GameData_1.default._instance.GM_INFO.gameId;
|
||
var data = JSON.parse(localStorage.getItem(name));
|
||
if (data == "undifend" || data == null || data == "") {
|
||
var url = "http://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" + location.href;
|
||
window.location.href = url;
|
||
}
|
||
else {
|
||
Storage_1.StorageMessage.setStorage(name, data);
|
||
GameData_1.default._instance.GM_INFO.userId = parseInt(data.userId);
|
||
}
|
||
},
|
||
//埋点上传
|
||
setGameData: function () {
|
||
//GAME_DATA 初始化 每次清零
|
||
GameData_1.default._instance.GAME_DATA = [];
|
||
GameData_1.default._instance.GAME_DATA.push(GameData_1.default._instance.CLICK_DATA);
|
||
//GAME_DATA 赋值后 CLICK_DATA清零
|
||
GameData_1.default._instance.CLICK_init();
|
||
var matchId = this.getMatchId();
|
||
var postData = {
|
||
"matchId": matchId,
|
||
"data": GameData_1.default._instance.GAME_DATA
|
||
};
|
||
// console.log("上传数据:",postData);
|
||
HttpUtil_1.default.uploadUserLogData(postData, function () { });
|
||
},
|
||
setRank: function () {
|
||
//GAME_DATA 初始化 每次清零
|
||
var postData = {
|
||
"type": 1,
|
||
"round": "1",
|
||
"score": GameData_1.default._instance.GM_INFO.score,
|
||
"success": GameData_1.default._instance.GM_INFO.success
|
||
};
|
||
HttpUtil_1.default.rankData(1, function () { }, postData);
|
||
},
|
||
//获取matchId 用于上传每次点击数据里面记录id方便查询
|
||
getMatchId: function () {
|
||
var matchId = cc.sys.localStorage.getItem("matchId");
|
||
if (matchId == "undifend" || matchId == null) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
if (this.containsNanana(matchId) == true) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
var char = parseInt(matchId[10]);
|
||
if (this.level == 1) {
|
||
char += 1;
|
||
}
|
||
matchId = matchId.slice(0, 10) + char + "";
|
||
GameData_1.default._instance.GM_INFO.matchId = matchId;
|
||
cc.sys.localStorage.setItem("matchId", matchId);
|
||
}
|
||
}
|
||
return matchId;
|
||
},
|
||
//检测matchId 如果有缓存以前的nanana数据清除
|
||
containsNanana: function (str) {
|
||
return /na/i.test(str);
|
||
},
|
||
//重新设置MatchId
|
||
setMatchId: function () {
|
||
// 定义包含可用字符的字符集
|
||
var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||
// 创建一个数组以保存随机字符
|
||
var uuidArray = [];
|
||
// 循环10次 生成10位的UUID
|
||
for (var i = 0; i < 10; i++) {
|
||
// 生成随机索引,范围是字符集的长度
|
||
var randomIndex = Math.floor(Math.random() * characters.length);
|
||
// 从字符集中获取随机字符
|
||
var randomChar = characters.charAt(randomIndex);
|
||
// 将字符添加到数组中
|
||
uuidArray.push(randomChar);
|
||
}
|
||
var data = uuidArray.join('') + 1 + "";
|
||
cc.sys.localStorage.setItem("matchNumber", 1);
|
||
cc.sys.localStorage.setItem("matchId", data);
|
||
GameData_1.default._instance.GM_INFO.matchId = data;
|
||
return data;
|
||
},
|
||
getSetScreenResolutionFlag: function () {
|
||
var size = cc.winSize;
|
||
var width = size.width;
|
||
var height = size.height;
|
||
if ((height / width) > (16.2 / 9))
|
||
return false;
|
||
return true;
|
||
},
|
||
//判断全面屏适配
|
||
setFit: function (canvas) {
|
||
var flag = GameTool.getSetScreenResolutionFlag();
|
||
if (flag) {
|
||
// console.log("不是全面屏");
|
||
}
|
||
else {
|
||
// console.log("是全面屏");
|
||
}
|
||
return flag;
|
||
},
|
||
getTip: function () {
|
||
var index = Math.floor(Math.random() * 4) + 1;
|
||
switch (index) {
|
||
case 1: {
|
||
return "根据小球的位置,合理晃动手机,确保小球不掉出木板。";
|
||
}
|
||
case 2: {
|
||
return "根据小球位置控制晃动幅度,过大或过小都不是个好选择。";
|
||
}
|
||
case 3: {
|
||
return "不要被天上掉落的障碍吓到,有时候它反而会帮你保持平衡。";
|
||
}
|
||
case 4: {
|
||
return "尝试着顶开掉落的障碍,是个很酷的玩法。";
|
||
}
|
||
}
|
||
},
|
||
beginTiming: function () {
|
||
this._startTime = new Date().getTime();
|
||
},
|
||
endTiming: function () {
|
||
this._endTime = new Date().getTime();
|
||
// this._totalTime = endTime - this._startTime;
|
||
},
|
||
//如果是判断时常的游戏 调用此方法
|
||
updateScoreTime: function () {
|
||
var endTime = new Date().getTime();
|
||
var tempTime = endTime - this._startTime;
|
||
if (tempTime < 0 || tempTime > 500) {
|
||
tempTime = Math.round(cc.director.getAnimationInterval() * 1000);
|
||
}
|
||
this._endTime += tempTime / 1000;
|
||
this._totalTime = this._endTime.toFixed(2);
|
||
GameData_1.default._instance.GM_INFO.currScore = this._totalTime;
|
||
this._startTime = endTime;
|
||
},
|
||
//倒计时调用此方法
|
||
countDown: function () {
|
||
this._endTime = new Date().getTime();
|
||
this._totalTime = Math.floor((this._endTime - this._startTime) / 1000);
|
||
GameData_1.default._instance.GM_INFO.remainingTime = GameData_1.default._instance.GM_INFO.totalTime - this._totalTime;
|
||
},
|
||
getGameInfo: function (node) {
|
||
var jg = false;
|
||
return jg;
|
||
},
|
||
//根据服务器数据重置所需要所有数据
|
||
reset: function () {
|
||
// console.log("本地数据丢失,重新启动游戏");
|
||
cc.director.loadScene('LoadScene');
|
||
},
|
||
setGameInfo: function (pd) {
|
||
},
|
||
//输入秒,返回需要展示时间格式
|
||
getTimeMargin: function (second) {
|
||
var total = second;
|
||
var hour = Math.floor(total / (60 * 60)); //计算整数小时数
|
||
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
|
||
var min = Math.floor(afterHour / 60); //计算整数分
|
||
var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
|
||
return '剩余:' + hour + ':' + min + ':' + afterMin;
|
||
},
|
||
getTimeMargin2: function (second) {
|
||
var total = second;
|
||
var min = null;
|
||
var afterMin = null;
|
||
var hour = Math.floor(total / (60 * 60)); //计算整数小时数
|
||
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
|
||
min = Math.floor(afterHour / 60); //计算整数分
|
||
if (min < 10)
|
||
min = "0" + min;
|
||
afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
|
||
if (afterMin < 10)
|
||
afterMin = "0" + afterMin;
|
||
return '剩余:' + min + ':' + afterMin;
|
||
},
|
||
//将时间转换为59:23
|
||
getTime: function (time) {
|
||
var label = "";
|
||
var number_1 = null;
|
||
var number_2 = null;
|
||
number_1 = Math.floor(time / 60);
|
||
number_2 = time - number_1 * 60;
|
||
if (number_1 < 10) {
|
||
number_1 = "0" + number_1;
|
||
}
|
||
if (number_2 < 10) {
|
||
number_2 = "0" + number_2;
|
||
}
|
||
label = number_1 + ":" + number_2;
|
||
return label;
|
||
},
|
||
//number 为传进来的数值,type为最多显示几位数
|
||
getNumber: function (number, type) {
|
||
// console.log(type,"需要转换的数字为:",number);
|
||
var count = 1000;
|
||
var place = type - 3;
|
||
if (number > Math.pow(count, 8) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 8) < 100)
|
||
number = Math.floor(number / Math.pow(count, 8) * 10) / 10 + "S";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 8)) + "S";
|
||
}
|
||
else if (number > Math.pow(count, 7) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 7) < 100)
|
||
number = Math.floor(number / Math.pow(count, 7) * 10) / 10 + "s";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 7)) + "s";
|
||
}
|
||
else if (number > Math.pow(count, 6) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 6) < 100)
|
||
number = Math.floor(number / Math.pow(count, 6) * 10) / 10 + "Q";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 6)) + "Q";
|
||
}
|
||
else if (number > Math.pow(count, 5) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 5) < 100)
|
||
number = Math.floor(number / Math.pow(count, 5) * 10) / 10 + "q";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 5)) + "q";
|
||
}
|
||
else if (number > Math.pow(count, 4) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 4) < 100)
|
||
number = Math.floor(number / Math.pow(count, 4) * 10) / 10 + "t";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 4)) + "t";
|
||
}
|
||
else if (number > Math.pow(count, 3) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 3) < 100)
|
||
number = Math.floor(number / Math.pow(count, 3) * 10) / 10 + "b";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 3)) + "b";
|
||
}
|
||
else if (number > Math.pow(count, 2) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 2) < 100)
|
||
number = Math.floor(number / Math.pow(count, 2) * 10) / 10 + "m";
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 2)) + "m";
|
||
}
|
||
else if (number > Math.pow(count, 1) * Math.pow(10, place)) {
|
||
if (number / Math.pow(count, 1) < 100) {
|
||
number = Math.floor(number / Math.pow(count, 1) * 10) / 10 + "k";
|
||
}
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 1)) + "k";
|
||
}
|
||
else {
|
||
number = Math.floor(number / Math.pow(count, 0)) + "";
|
||
}
|
||
// console.log("结果为"+type+"位数",number);
|
||
return number;
|
||
},
|
||
begainTiming: function () {
|
||
this._startTime = new Date().getTime();
|
||
},
|
||
endTiming2: function () {
|
||
var endTime = new Date().getTime();
|
||
this._endTime = endTime;
|
||
this._totalTime = endTime - this._startTime;
|
||
},
|
||
getScoreTime: function () {
|
||
var endTime = new Date().getTime();
|
||
var tempTime = endTime - this._startTime;
|
||
if (tempTime < 0 || tempTime > 500) {
|
||
tempTime = Math.round(cc.director.getAnimationInterval() * 1000);
|
||
}
|
||
GameData_1.default._instance.GM_INFO.currScore += tempTime;
|
||
this._startTime = endTime;
|
||
},
|
||
getFormatTime: function (time) {
|
||
var date = new Date();
|
||
date.setTime(time);
|
||
var ms = date.getMilliseconds();
|
||
// let msString = date.getMilliseconds();
|
||
var msString = null;
|
||
var secondString = null;
|
||
var minString = null;
|
||
msString = Math.floor(ms / 10) % 100;
|
||
secondString = date.getSeconds();
|
||
minString = date.getMinutes();
|
||
if (msString < 10) {
|
||
msString = "0" + msString;
|
||
}
|
||
if (secondString < 10) {
|
||
secondString = "0" + secondString;
|
||
}
|
||
secondString = secondString + ":";
|
||
if (minString < 10) {
|
||
minString = "0" + minString;
|
||
}
|
||
minString = minString + ":";
|
||
return minString + secondString + msString;
|
||
},
|
||
pushLister: function () {
|
||
},
|
||
removeAllLister: function () {
|
||
},
|
||
};
|
||
exports.GameTool = GameTool;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxHYW1lVG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBbUM7QUFDbkMsK0NBQTBDO0FBQzFDLHFDQUEyQztBQUMzQyxPQUFPO0FBQ1AsSUFBSSxRQUFRLEdBQUc7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFDYixhQUFhLEVBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRztRQUM3QixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNmLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2Ysa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNwRyxJQUFJLEdBQUcsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6RCxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsVUFBVTtJQUNWLGNBQWM7UUFDVixJQUFJLElBQUksR0FBRyxPQUFPLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFHLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFB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OUIsSUFBSSxRQUFRLEdBQUcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUM7U0FDN0I7UUFDRCxJQUFJLFlBQVksR0FBRyxFQUFFLEVBQUU7WUFDbkIsWUFBWSxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUM7U0FDckM7UUFDRCxZQUFZLEdBQUcsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUVsQyxJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7WUFDaEIsU0FBUyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7U0FDL0I7UUFDRCxTQUFTLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1QixPQUFPLFNBQVMsR0FBRyxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBRS9DLENBQUM7SUFDRCxVQUFVLEVBQUM7SUFFWCxDQUFDO0lBQ0QsZUFBZSxFQUFDO0lBRWhCLENBQUM7Q0FFSixDQUFDO0FBQ08sNEJBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4uL0dhbWVEYXRhXCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi4vY3J5cHRvL0h0dHBVdGlsXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VNZXNzYWdlIH0gZnJvbSBcIi4vU3RvcmFnZVwiO1xyXG4vL+acgOWkp+W3peWFt+exu1xyXG52YXIgR2FtZVRvb2wgPSB7XHJcbiAgICBfc3RhcnRUaW1lOiAwLFxyXG4gICAgX2VuZFRpbWU6IDAsXHJcbiAgICBfdG90YWxUaW1lOiAwLFxyXG4gICAgZ2V0U2VlZFJhbmRvbTogZnVuY3Rpb24gKG1pbiwgbWF4KSB7Ly/ljIXlkKttaW4g5LiN5YyF5ZCrbWF4XHJcbiAgICAgICAgbWF4ID0gbWF4IHx8IDE7XHJcbiAgICAgICAgbWluID0gbWluIHx8IDA7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VyclNlZWQgPSAoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VyclNlZWQgKiA5MzAxICsgNDkyOTcpICUgMjMzMjgwO1xyXG4gICAgICAgIGxldCBybmQgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXJyU2VlZCAvIDIzMzI4MC4wO1xyXG4gICAgICAgIGxldCB0bXAgPSBtaW4gKyBybmQgKiAobWF4IC0gbWluKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0bXApO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+WdXNlcklkXHJcbiAgICBBdXRoZW50aWNhdGlvbigpe1xyXG4gICAgICAgIGxldCBuYW1lID0gXCJ1c2VyX1wiICsgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcInVuZGlmZW5kXCIgfHwgZGF0YT09bnVsbCB8fCBkYXRhID09IFwiXCIpe1xyXG4gICAgICAgICAgICBsZXQgdXJsID0gXCJodHRwOi8vYXBpLnNwYXJrdXMuY24vYXBpL3VzZXIvYXV0aC9sb2dpbj9kb21haW49aHVpMzI1NzlXZFlQc2dZcSZjYWxsYmFjaz1cIitsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShuYW1lLGRhdGEpO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPSBwYXJzZUludChkYXRhLnVzZXJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+Wfi+eCueS4iuS8oFxyXG4gICAgc2V0R2FtZURhdGEoKXtcclxuICAgICAgICAvL0dBTUVfREFUQSDliJ3lp4vljJYg5q+P5qyh5riF6Zu2XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HQU1FX0RBVEEucHVzaChHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQSk7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg6LWL5YC85ZCOIENMSUNLX0RBVEHmuIXpm7YgXHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX2luaXQoKTtcclxuXHJcbiAgICAgICAgbGV0IG1hdGNoSWQgPSB0aGlzLmdldE1hdGNoSWQoKTtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBHYW1lRGF0YS5faW5zdGFuY2UuR0FNRV9EQVRBXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oOaVsOaNrjpcIixwb3N0RGF0YSk7XHJcbiAgICAgICAgSHR0cFV0aWwudXBsb2FkVXNlckxvZ0RhdGEocG9zdERhdGEsZnVuY3Rpb24oKXt9KVxyXG4gICAgfSxcclxuXHJcbiAgICBzZXRSYW5rKCl7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg5Yid5aeL5YyWIOavj+asoea4hembtlxyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6MSxcclxuICAgICAgICAgICAgXCJyb3VuZFwiOlwiMVwiLFxyXG4gICAgICAgICAgICBcInNjb3JlXCI6IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnNjb3JlLFxyXG4gICAgICAgICAgICBcInN1Y2Nlc3NcIjogR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uc3VjY2Vzc1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBIdHRwVXRpbC5yYW5rRGF0YSgxLGZ1bmN0aW9uKCl7fSxwb3N0RGF0YSk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+WbWF0Y2hJZCAg55So5LqO5LiK5Lyg5q+P5qyh54K55Ye75pWw5o2u6YeM6Z2i6K6w5b2VaWTmlrnkvr/mn6Xor6JcclxuICAgIGdldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgbGV0IG1hdGNoSWQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJtYXRjaElkXCIpO1xyXG4gICAgICAgIGlmKG1hdGNoSWQgPT0gXCJ1bmRpZmVuZFwiIHx8IG1hdGNoSWQ9PW51bGwpe1xyXG4gICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBpZih0aGlzLmNvbnRhaW5zTmFuYW5hKG1hdGNoSWQpID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoYXIgPSBwYXJzZUludChtYXRjaElkWzEwXSk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmxldmVsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYXIgKz0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1hdGNoSWQgID0gbWF0Y2hJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1hdGNoSWQgPSBtYXRjaElkO1xyXG4gICAgICAgICAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLG1hdGNoSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaElkO1xyXG4gICAgfSxcclxuICAgIC8v5qOA5rWLbWF0Y2hJZCDlpoLmnpzmnInnvJPlrZjku6XliY3nmoRuYW5hbmHmlbDmja7muIXpmaRcclxuICAgIGNvbnRhaW5zTmFuYW5hKHN0cikge1xyXG4gICAgICAgIHJldHVybiAvbmEvaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG4gICAgLy/ph43mlrDorr7nva5NYXRjaElkXHJcbiAgICBzZXRNYXRjaElkICgpe1xyXG4gICAgICAgIC8vIOWumuS5ieWMheWQq+WPr+eUqOWtl+espueahOWtl+espumbhlxyXG4gICAgICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODknO1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4quaVsOe7hOS7peS/neWtmOmaj+acuuWtl+esplxyXG4gICAgICAgIGNvbnN0IHV1aWRBcnJheSA9IFtdO1xyXG4gICAgICAgIC8vIOW+queOrzEw5qyhIOeUn+aIkDEw5L2N55qEVVVJRFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6ZqP5py657Si5byV77yM6IyD5Zu05piv5a2X56ym6ZuG55qE6ZW/5bqmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyDku47lrZfnrKbpm4bkuK3ojrflj5bpmo/mnLrlrZfnrKZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tQ2hhciA9IGNoYXJhY3RlcnMuY2hhckF0KHJhbmRvbUluZGV4KTtcclxuICAgICAgICAgICAgLy8g5bCG5a2X56ym5re75Yqg5Yiw5pWw57uE5LitXHJcbiAgICAgICAgICAgIHV1aWRBcnJheS5wdXNoKHJhbmRvbUNoYXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YSA9ICB1dWlkQXJyYXkuam9pbignJykgKyAxICsgXCJcIjtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaE51bWJlclwiLDEpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixkYXRhKTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICBcclxuICAgIGdldFNldFNjcmVlblJlc29sdXRpb25GbGFnOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHNpemUgPSBjYy53aW5TaXplO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGlmICgoaGVpZ2h0IC8gd2lkdGgpID4gKDE2LjIgLyA5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIC8v5Yik5pat5YWo6Z2i5bGP6YCC6YWNXHJcbiAgICBzZXRGaXQ6IGZ1bmN0aW9uIChjYW52YXMpIHtcclxuICAgICAgICBsZXQgZmxhZyA9IEdhbWVUb29sLmdldFNldFNjcmVlblJlc29sdXRpb25GbGFnKCk7XHJcbiAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBcdC8vIGNvbnNvbGUubG9nKFwi5LiN5piv5YWo6Z2i5bGPXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgXHQvLyBjb25zb2xlLmxvZyhcIuaYr+WFqOmdouWxj1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZsYWc7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQpICsgMTtcclxuICAgICAgICBzd2l0Y2ggKGluZGV4KSB7XHJcbiAgICAgICAgICAgIGNhc2UgMToge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5qC55o2u5bCP55CD55qE5L2N572u77yM5ZCI55CG5pmD5Yqo5omL5py677yM56Gu5L+d5bCP55CD5LiN5o6J5Ye65pyo5p2/44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuagueaNruWwj+eQg+S9jee9ruaOp+WItuaZg+WKqOW5heW6pu+8jOi/h+Wkp+aIlui/h+Wwj+mDveS4jeaYr+S4quWlvemAieaLqeOAglwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAzOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLkuI3opoHooqvlpKnkuIrmjonokL3nmoTpmpznoo3lkJPliLDvvIzmnInml7blgJnlroPlj43ogIzkvJrluK7kvaDkv53mjIHlubPooaHjgIJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgNDoge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5bCd6K+V552A6aG25byA5o6J6JC955qE6Zqc56KN77yM5piv5Liq5b6I6YW355qE546p5rOV44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYmVnaW5UaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZW5kVGltaW5nOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuX3RvdGFsVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICB9LFxyXG4gICAgLy/lpoLmnpzmmK/liKTmlq3ml7bluLjnmoTmuLjmiI8g6LCD55So5q2k5pa55rOVXHJcbiAgICB1cGRhdGVTY29yZVRpbWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGxldCB0ZW1wVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICAgICAgaWYgKHRlbXBUaW1lIDwgMCB8fCB0ZW1wVGltZSA+IDUwMCkge1xyXG4gICAgICAgICAgICB0ZW1wVGltZSA9IE1hdGgucm91bmQoY2MuZGlyZWN0b3IuZ2V0QW5pbWF0aW9uSW50ZXJ2YWwoKSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9lbmRUaW1lICs9IHRlbXBUaW1lIC8gMTAwMDtcclxuICAgICAgICB0aGlzLl90b3RhbFRpbWUgPSB0aGlzLl9lbmRUaW1lLnRvRml4ZWQoMik7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VyclNjb3JlID0gdGhpcy5fdG90YWxUaW1lO1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IGVuZFRpbWU7XHJcbiAgICB9LFxyXG4gICAgLy/lgJLorqHml7bosIPnlKjmraTmlrnms5VcclxuICAgIGNvdW50RG93bjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX2VuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLl90b3RhbFRpbWUgPSBNYXRoLmZsb29yKCh0aGlzLl9lbmRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIDEwMDApO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnJlbWFpbmluZ1RpbWUgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy50b3RhbFRpbWUgLSB0aGlzLl90b3RhbFRpbWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEdhbWVJbmZvOiBmdW5jdGlvbihub2RlKXtcclxuICAgICAgICB2YXIgamcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9LFxyXG4gICAgLy/moLnmja7mnI3liqHlmajmlbDmja7ph43nva7miYDpnIDopoHmiYDmnInmlbDmja5cclxuICAgIHJlc2V0OiBmdW5jdGlvbigpe1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pys5Zyw5pWw5o2u5Lii5aSxLOmHjeaWsOWQr+WKqOa4uOaIj1wiKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoJ0xvYWRTY2VuZScpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzZXRHYW1lSW5mbzogZnVuY3Rpb24ocGQpe1xyXG4gICBcclxuICAgIH0sXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVNYXJnaW46KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgaG91ciA9IE1hdGguZmxvb3IodG90YWwgLyAoNjAgKiA2MCkpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcihhZnRlckhvdXIgLyA2MCk7Ly/orqHnrpfmlbTmlbDliIZcclxuICAgICAgICBsZXQgYWZ0ZXJNaW4gPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICByZXR1cm4gJ+WJqeS9mTonICsgaG91ciArICc6JyArIG1pbiArICc6JyArIGFmdGVyTWluXHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpbWVNYXJnaW4yOihzZWNvbmQpID0+IHtcclxuICAgICAgICBsZXQgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XHJcbiAgICAgICAgbGV0IGFmdGVyTWluID0gbnVsbDtcclxuICAgICAgICBsZXQgaG91ciA9IE1hdGguZmxvb3IodG90YWwgLyAoNjAgKiA2MCkpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBtaW4gPSBNYXRoLmZsb29yKGFmdGVySG91ciAvIDYwKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtaW4gPSBcIjBcIittaW47XHJcbiAgICAgICAgYWZ0ZXJNaW4gPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBhZnRlck1pbiA9IFwiMFwiICsgYWZ0ZXJNaW47XHJcbiAgICAgICAgcmV0dXJuICfliankvZk6JyAgKyBtaW4gKyAnOicgKyBhZnRlck1pblxyXG4gICAgfSxcclxuICAgIC8v5bCG5pe26Ze06L2s5o2i5Li6NTk6MjNcclxuICAgIGdldFRpbWU6IGZ1bmN0aW9uKHRpbWUpe1xyXG4gICAgICAgIHZhciBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgdmFyIG51bWJlcl8xID0gbnVsbDtcclxuICAgICAgICB2YXIgbnVtYmVyXzIgPSBudWxsO1xyXG4gICAgICAgIG51bWJlcl8xID0gTWF0aC5mbG9vcih0aW1lLzYwKVxyXG4gICAgICAgIG51bWJlcl8yID0gdGltZS1udW1iZXJfMSo2MDtcclxuICAgICAgICBpZihudW1iZXJfMSA8IDEwKXtcclxuICAgICAgICAgICAgbnVtYmVyXzEgPSBcIjBcIitudW1iZXJfMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYobnVtYmVyXzIgPCAxMCl7XHJcbiAgICAgICAgICAgIG51bWJlcl8yID0gXCIwXCIrbnVtYmVyXzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhYmVsID0gbnVtYmVyXzEgKyBcIjpcIiArIG51bWJlcl8yO1xyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICAvL251bWJlciDkuLrkvKDov5vmnaXnmoTmlbDlgLwsdHlwZeS4uuacgOWkmuaYvuekuuWHoOS9jeaVsFxyXG4gICAgZ2V0TnVtYmVyOiBmdW5jdGlvbihudW1iZXIsdHlwZSl7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codHlwZSxcIumcgOimgei9rOaNoueahOaVsOWtl+S4ujpcIixudW1iZXIpO1xyXG4gICAgICAgIHZhciBjb3VudCA9IDEwMDA7XHJcbiAgICAgICAgdmFyIHBsYWNlID0gdHlwZSAtIDM7XHJcbiAgICAgICAgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsOCkqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDgpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsOCkqMTApLzEwK1wiU1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw4KSkrXCJTXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNykqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDcpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNykqMTApLzEwK1wic1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw3KSkrXCJzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNikqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDYpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNikqMTApLzEwK1wiUVwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw2KSkrXCJRXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNSkqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDUpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNSkqMTApLzEwK1wicVwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw1KSkrXCJxXCI7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDQpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCw0KSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyL01hdGgucG93KGNvdW50LDQpKjEwKS8xMCtcInRcIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNCkpK1widFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDMpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwzKSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyL01hdGgucG93KGNvdW50LDMpKjEwKS8xMCtcImJcIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsMykpK1wiYlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDIpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwyKSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyL01hdGgucG93KGNvdW50LDIpKjEwKS8xMCtcIm1cIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsMikpK1wibVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDEpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwxKSA8IDEwMCl7XHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCwxKSoxMCkvMTArXCJrXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsMSkpK1wia1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCwwKSkrXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLnu5PmnpzkuLpcIit0eXBlK1wi5L2N5pWwXCIsbnVtYmVyKTtcclxuICAgICAgICByZXR1cm4gbnVtYmVyO1xyXG4gICAgfSxcclxuXHJcbiAgICBiZWdhaW5UaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZW5kVGltaW5nMjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgdGhpcy5fdG90YWxUaW1lID0gZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTtcclxuICAgIH0sXHJcbiAgICBnZXRTY29yZVRpbWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGxldCB0ZW1wVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICAgICAgaWYgKHRlbXBUaW1lIDwgMCB8fCB0ZW1wVGltZSA+IDUwMCkge1xyXG4gICAgICAgICAgICB0ZW1wVGltZSA9IE1hdGgucm91bmQoY2MuZGlyZWN0b3IuZ2V0QW5pbWF0aW9uSW50ZXJ2YWwoKSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXJyU2NvcmUgKz0gdGVtcFRpbWU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gZW5kVGltZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0Rm9ybWF0VGltZTogZnVuY3Rpb24gKHRpbWUpIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgZGF0ZS5zZXRUaW1lKHRpbWUpO1xyXG4gICAgICAgIGxldCBtcyA9IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XHJcbiAgICAgICAgLy8gbGV0IG1zU3RyaW5nID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcclxuICAgICAgICBsZXQgbXNTdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIGxldCBzZWNvbmRTdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIGxldCBtaW5TdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIG1zU3RyaW5nID0gTWF0aC5mbG9vcihtcyAvIDEwKSAlIDEwMDtcclxuICAgICAgICBzZWNvbmRTdHJpbmcgPSBkYXRlLmdldFNlY29uZHMoKTtcclxuICAgICAgICBtaW5TdHJpbmcgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgICBpZiAobXNTdHJpbmcgPCAxMCkge1xyXG4gICAgICAgICAgICBtc1N0cmluZyA9IFwiMFwiICsgbXNTdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWNvbmRTdHJpbmcgPCAxMCkge1xyXG4gICAgICAgICAgICBzZWNvbmRTdHJpbmcgPSBcIjBcIiArIHNlY29uZFN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgc2Vjb25kU3RyaW5nID0gc2Vjb25kU3RyaW5nICsgXCI6XCI7XHJcblxyXG4gICAgICAgIGlmIChtaW5TdHJpbmcgPCAxMCkge1xyXG4gICAgICAgICAgICBtaW5TdHJpbmcgPSBcIjBcIiArIG1pblN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgbWluU3RyaW5nID0gbWluU3RyaW5nICsgXCI6XCI7XHJcbiAgICAgICAgcmV0dXJuIG1pblN0cmluZyArIHNlY29uZFN0cmluZyArIG1zU3RyaW5nO1xyXG5cclxuICAgIH0sXHJcbiAgICBwdXNoTGlzdGVyOmZ1bmN0aW9uICgpIHtcclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICByZW1vdmVBbGxMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuXHJcbn07XHJcbmV4cG9ydCB7IEdhbWVUb29sIH07Il19
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.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, '7a231Rz0d9LBYYgY3bDYlLB', 'use_v2.1-2.2.1_cc.Toggle_event');
|
||
// migration/use_v2.1-2.2.1_cc.Toggle_event.js
|
||
|
||
"use strict";
|
||
|
||
/*
|
||
* This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version.
|
||
* You do not need to manually add this script in any other project.
|
||
* If you don't use cc.Toggle in your project, you can delete this script directly.
|
||
* If your project is hosted in VCS such as git, submit this script together.
|
||
*
|
||
* 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程,
|
||
* 你无需在任何其它项目中手动添加此脚本。
|
||
* 如果你的项目中没用到 Toggle,可直接删除该脚本。
|
||
* 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。
|
||
*/
|
||
if (cc.Toggle) {
|
||
// Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code
|
||
// 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件
|
||
cc.Toggle._triggerEventInScript_isChecked = true;
|
||
}
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnQuanMiXSwibmFtZXMiOlsiY2MiLCJUb2dnbGUiLCJfdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxFQUFFLENBQUNDLE1BQVAsRUFBZTtBQUNYO0FBQ0E7QUFDQUQsRUFBQUEsRUFBRSxDQUFDQyxNQUFILENBQVVDLCtCQUFWLEdBQTRDLElBQTVDO0FBQ0giLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoaXMgc2NyaXB0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IENvY29zIENyZWF0b3IgYW5kIGlzIG9ubHkgdXNlZCBmb3IgcHJvamVjdHMgY29tcGF0aWJsZSB3aXRoIHRoZSB2Mi4xLjAg772eIDIuMi4xIHZlcnNpb24uXHJcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBtYW51YWxseSBhZGQgdGhpcyBzY3JpcHQgaW4gYW55IG90aGVyIHByb2plY3QuXHJcbiAqIElmIHlvdSBkb24ndCB1c2UgY2MuVG9nZ2xlIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBkZWxldGUgdGhpcyBzY3JpcHQgZGlyZWN0bHkuXHJcbiAqIElmIHlvdXIgcHJvamVjdCBpcyBob3N0ZWQgaW4gVkNTIHN1Y2ggYXMgZ2l0LCBzdWJtaXQgdGhpcyBzY3JpcHQgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIOatpOiEmuacrOeUsSBDb2NvcyBDcmVhdG9yIOiHquWKqOeUn+aIkO+8jOS7heeUqOS6juWFvOWuuSB2Mi4xLjAgfiAyLjIuMSDniYjmnKznmoTlt6XnqIvvvIxcclxuICog5L2g5peg6ZyA5Zyo5Lu75L2V5YW25a6D6aG555uu5Lit5omL5Yqo5re75Yqg5q2k6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruS4reayoeeUqOWIsCBUb2dnbGXvvIzlj6/nm7TmjqXliKDpmaTor6XohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5pyJ5omY566h5LqOIGdpdCDnrYnniYjmnKzlupPvvIzor7flsIbmraTohJrmnKzkuIDlubbkuIrkvKDjgIJcclxuICovXHJcblxyXG5pZiAoY2MuVG9nZ2xlKSB7XHJcbiAgICAvLyBXaGV0aGVyIHRvIHRyaWdnZXIgJ3RvZ2dsZScgYW5kICdjaGVja0V2ZW50cycgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nICd0b2dnbGUuaXNDaGVja2VkJyBpbiB0aGUgY29kZVxyXG4gICAgLy8g5Zyo5Luj56CB5Lit5L+u5pS5ICd0b2dnbGUuaXNDaGVja2VkJyDml7bmmK/lkKbop6blj5EgJ3RvZ2dsZScg5LiOICdjaGVja0V2ZW50cycg5LqL5Lu2XHJcbiAgICBjYy5Ub2dnbGUuX3RyaWdnZXJFdmVudEluU2NyaXB0X2lzQ2hlY2tlZCA9IHRydWU7XHJcbn1cclxuIl19
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/RankManager.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, '9c7ccNc8VlJ9Jy7qfTPoy0E', 'RankManager');
|
||
// Script/RankManager.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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var List_1 = require("./ListView/List");
|
||
var HttpUtil_1 = require("./crypto/HttpUtil");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
//排行榜
|
||
var RankManager = /** @class */ (function (_super) {
|
||
__extends(RankManager, _super);
|
||
function RankManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.Player = null;
|
||
_this.selfNode = null;
|
||
_this.phone = null;
|
||
return _this;
|
||
}
|
||
RankManager.prototype.onLoad = function () {
|
||
this.init();
|
||
};
|
||
//初始化数据
|
||
RankManager.prototype.init = function () {
|
||
this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default);
|
||
this.Player.getChildByName("rank").active = false;
|
||
this.listData = [];
|
||
this.selfData = null;
|
||
this.rankNumber = 100;
|
||
this.rankTotal = 100;
|
||
this.selfNode.opacity = 0;
|
||
};
|
||
RankManager.prototype.start = function () {
|
||
this.Player.active = false;
|
||
this.getRank();
|
||
};
|
||
//调用获取排行榜接口
|
||
RankManager.prototype.getRank = function () {
|
||
var postData = {
|
||
"page": 1,
|
||
"pageSize": 100
|
||
};
|
||
//回调进getRankData
|
||
HttpUtil_1.default.rankData(2, this.getRankData.bind(this), postData);
|
||
};
|
||
//实际设置排行数据
|
||
RankManager.prototype.getRankData = function (data) {
|
||
if (data) {
|
||
// console.log(data);
|
||
this.listData = data.data.list;
|
||
this.selfData = data.data.info;
|
||
var rankData = [];
|
||
var self = false;
|
||
for (var i = 0; i <= this.listData.length - 1; i++) {
|
||
rankData.push({ rank: (i + 1), name: this.listData[i].nickName, total: this.listData[i].score, pic: this.listData[i].pic });
|
||
if (GameData_1.default._instance.GM_INFO.userId == this.listData[i].userId) {
|
||
self = true;
|
||
this.rankNumber = i;
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + "";
|
||
}
|
||
if (i == (this.listData.length - 1) && self == false) {
|
||
this.rankNumber = 101;
|
||
//如果列表大于99显示99+ 否则显示未排名
|
||
if (this.listData.length >= 99)
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
|
||
else
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "未排名";
|
||
}
|
||
}
|
||
//如果排行榜列表没有人
|
||
if (this.listData.length == 0)
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "未排名";
|
||
this.rankList.setData(rankData);
|
||
if (this.selfData.nickName.length > 6) {
|
||
this.selfData.nickName = this.selfData.nickName.substring(0, 6) + "...";
|
||
}
|
||
this.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = this.selfData.nickName;
|
||
//如果没有排行分数信息
|
||
if (this.selfData.score) {
|
||
this.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = this.selfData.score;
|
||
}
|
||
this.setPic(this.selfData.pic);
|
||
if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "1") {
|
||
this.selfNode.getChildByName("rank").getChildByName("one").active = true;
|
||
}
|
||
else if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "2") {
|
||
this.selfNode.getChildByName("rank").getChildByName("two").active = true;
|
||
}
|
||
else if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "3") {
|
||
this.selfNode.getChildByName("rank").getChildByName("three").active = true;
|
||
}
|
||
else {
|
||
// this.selfNode.getChildByName("four").active = true;
|
||
}
|
||
this.selfNode.opacity = 255;
|
||
if (this.selfData.score == 0)
|
||
this.selfNode.opacity = 0;
|
||
}
|
||
};
|
||
//返回按钮
|
||
RankManager.prototype.backClick = function () {
|
||
cc.director.loadScene("LoadScene");
|
||
};
|
||
//最上方用户动画
|
||
RankManager.prototype.playerAction = function () {
|
||
var _this = this;
|
||
//-254 377 210 453
|
||
this.Player.getChildByName("rank").active = false;
|
||
var time = 1;
|
||
this.tween = cc.tween(this.Player)
|
||
.to(2, { position: cc.v3(210, 485, 0) })
|
||
.call(function () {
|
||
_this.Player.getChildByName("rank").active = true;
|
||
_this.Player.getChildByName("rank").getChildByName("number")
|
||
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
|
||
})
|
||
.start();
|
||
if (this.listData.length > 0) {
|
||
time = (this.listData.length - this.rankNumber) / this.listData.length;
|
||
if (this.listData.length >= 99) {
|
||
if (this.rankNumber >= 99) {
|
||
time = (Math.random() * 49 + 1) / 100;
|
||
var matchId = cc.sys.localStorage.getItem("matchNumber");
|
||
if (matchId == null || matchId == undefined) {
|
||
time = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
time = 0;
|
||
}
|
||
setTimeout(function () {
|
||
if (_this.tween)
|
||
_this.tween.stop();
|
||
if (_this.Player) {
|
||
_this.Player.getChildByName("rank").active = true;
|
||
_this.Player.getChildByName("rank").getChildByName("number")
|
||
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
|
||
}
|
||
}, time * 2000);
|
||
};
|
||
//设置头像
|
||
RankManager.prototype.setPic = function (pic) {
|
||
var _this = this;
|
||
this.phone.node.parent.getChildByName("icon").active = false;
|
||
this.phone.node.active = false;
|
||
this.Player.active = true;
|
||
this.Player.opacity = 0;
|
||
this.Player.getChildByName("mask").getChildByName("icon").active = false;
|
||
this.Player.getChildByName("mask").getChildByName("phone").active = false;
|
||
fetch(pic)
|
||
.then(function (response) {
|
||
return response.headers.get('Content-Length');
|
||
})
|
||
.then(function (errNo) {
|
||
if (errNo == "5093") {
|
||
_this.phone.node.parent.getChildByName("icon").active = true;
|
||
_this.Player.getChildByName("mask").getChildByName("icon").active = true;
|
||
}
|
||
})
|
||
.catch(function (error) {
|
||
console.error('Error fetching X-Info:', error);
|
||
});
|
||
var self = this;
|
||
cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) {
|
||
self.Player.opacity = 255;
|
||
if (texture) {
|
||
self.phone.node.active = true;
|
||
self.phone.spriteFrame = new cc.SpriteFrame(texture);
|
||
self.Player.getChildByName("mask").getChildByName("icon").active = false;
|
||
self.Player.getChildByName("mask").getChildByName("phone").active = true;
|
||
self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite)
|
||
.spriteFrame = new cc.SpriteFrame(texture);
|
||
setTimeout(function () {
|
||
self.playerAction();
|
||
}, 500);
|
||
}
|
||
else {
|
||
self.Player.getChildByName("mask").getChildByName("icon").active = true;
|
||
setTimeout(function () {
|
||
self.playerAction();
|
||
}, 500);
|
||
}
|
||
});
|
||
};
|
||
__decorate([
|
||
property(cc.Node) //用户上方头像
|
||
], RankManager.prototype, "Player", void 0);
|
||
__decorate([
|
||
property(cc.Node) //用户最下方个人信息
|
||
], RankManager.prototype, "selfNode", void 0);
|
||
__decorate([
|
||
property(cc.Sprite) //用户头像换图
|
||
], RankManager.prototype, "phone", void 0);
|
||
RankManager = __decorate([
|
||
ccclass
|
||
], RankManager);
|
||
return RankManager;
|
||
}(cc.Component));
|
||
exports.default = RankManager;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSYW5rTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsd0NBQW1DO0FBQ25DLDhDQUF5QztBQUVuQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUM1QyxLQUFLO0FBRUw7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFzTEM7UUFwTEcsWUFBTSxHQUFZLElBQUksQ0FBQztRQUV2QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFdBQUssR0FBYyxJQUFJLENBQUM7O0lBZ0w1QixDQUFDO0lBeEtHLDRCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU87SUFDUCwwQkFBSSxHQUFKO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRSxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwyQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxP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Q0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztxQkFDakYsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0MsVUFBVSxDQUFDO29CQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ1g7aUJBQ0c7Z0JBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ3hFLFVBQVUsQ0FBQztvQkFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO1FBRUwsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBbExEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBVSxRQUFROytDQUNiO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBVSxXQUFXO2lEQUNkO0lBRXpCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBUSxRQUFROzhDQUNaO0lBTlAsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQXNML0I7SUFBRCxrQkFBQztDQXRMRCxBQXNMQyxDQXRMd0MsRUFBRSxDQUFDLFNBQVMsR0FzTHBEO2tCQXRMb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgTGlzdCBmcm9tIFwiLi9MaXN0Vmlldy9MaXN0XCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi9jcnlwdG8vSHR0cFV0aWxcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcbi8v5o6S6KGM5qacXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhbmtNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKSAgICAgICAgICAvL+eUqOaIt+S4iuaWueWktOWDj1xyXG4gICAgUGxheWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKSAgICAgICAgICAvL+eUqOaIt+acgOS4i+aWueS4quS6uuS/oeaBr1xyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZSkgICAgICAgIC8v55So5oi35aS05YOP5o2i5Zu+XHJcbiAgICBwaG9uZTogY2MuU3ByaXRlID0gbnVsbDtcclxuICAgIHByaXZhdGUgcmFua0xpc3Q6IExpc3Q7ICAgICAvL+aOkuihjOamnFxyXG4gICAgdHdlZW46IGNjLlR3ZWVuPGNjLk5vZGU+OyAgIC8v5pyA5LiK5pa555So5oi35aS05YOP5Yqo55S7XHJcbiAgICBsaXN0RGF0YTogYW55OyAgICAgICAgICAgICAgLy/mgLvliJfooajkv6Hmga9cclxuICAgIHNlbGZEYXRhOiBhbnk7ICAgICAgICAgICAgICAvL+iHquW3seS/oeaBr1xyXG4gICAgcmFua051bWJlcjogbnVtYmVyOyAgICAgICAgIC8v55So5oi36Ieq5bex5o6S5ZCNIOacieWPr+iDveS4jeWcqOaOkuihjOamnOWGhTk5K1xyXG4gICAgcmFua1RvdGFsOiBudW1iZXI7ICAgICAgICAgIC8v6I635Y+W5o6S6KGM5qac55So5oi35pWw6YePIOeOsOWcqOS4ujEwMFxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5yYW5rTGlzdCA9IGNjLmZpbmQoXCJTY3JvbGxWaWV3XCIsIHRoaXMubm9kZSkuZ2V0Q29tcG9uZW50KExpc3QpO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxpc3REYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxmRGF0YSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yYW5rTnVtYmVyID0gMTAwO1xyXG4gICAgICAgIHRoaXMucmFua1RvdGFsPSAxMDA7XHJcbiAgICAgICAgdGhpcy5zZWxmTm9kZS5vcGFjaXR5ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLlBsYXllci5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuICAgIC8v6LCD55So6I635Y+W5o6S6KGM5qac5o6l5Y+jXHJcbiAgICBnZXRSYW5rKCl7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcInBhZ2VcIjoxLFxyXG4gICAgICAgICAgICBcInBhZ2VTaXplXCI6MTAwXHJcbiAgICAgICAgfTsgXHJcbiAgICAgICAgLy/lm57osIPov5tnZXRSYW5rRGF0YVxyXG4gICAgICAgIEh0dHBVdGlsLnJhbmtEYXRhKDIsdGhpcy5nZXRSYW5rRGF0YS5iaW5kKHRoaXMpLHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIC8v5a6e6ZmF6K6+572u5o6S6KGM5pWw5o2uXHJcbiAgICBnZXRSYW5rRGF0YShkYXRhKXtcclxuXHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhLmRhdGEuaW5mbztcclxuICAgICAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgICAgIGxldCBzZWxmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8PXRoaXMubGlzdERhdGEubGVuZ3RoLTE7aSsrKXtcclxuICAgICAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSwgdG90YWw6dGhpcy5saXN0RGF0YVtpXS5zY29yZSwgcGljOnRoaXMubGlzdERhdGFbaV0ucGljfSk7XHJcbiAgICAgICAgICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPT0gdGhpcy5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPShpKzEpICsgXCJcIjsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihpID09ICh0aGlzLmxpc3REYXRhLmxlbmd0aC0xKSAmJiBzZWxmID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSAxMDE7XHJcbiAgICAgICAgICAgICAgICAgICAgLy/lpoLmnpzliJfooajlpKfkuo45OeaYvuekujk5KyDlkKbliJnmmL7npLrmnKrmjpLlkI1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmxpc3REYXRhLmxlbmd0aCA+PSA5OSl0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFwiOTkrXCI7IFxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIuacquaOkuWQjVwiIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5aaC5p6c5o6S6KGM5qac5YiX6KGo5rKh5pyJ5Lq6XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGlzdERhdGEubGVuZ3RoID09IDApIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCLmnKrmjpLlkI1cIiBcclxuICAgICAgICAgICAgdGhpcy5yYW5rTGlzdC5zZXREYXRhKHJhbmtEYXRhKTtcclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmRGF0YS5uaWNrTmFtZS5sZW5ndGggPiA2KXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEubmlja05hbWU9IHRoaXMuc2VsZkRhdGEubmlja05hbWUuc3Vic3RyaW5nKDAsNikgKyBcIi4uLlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICAvL+WmguaenOayoeacieaOkuihjOWIhuaVsOS/oeaBr1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZEYXRhLnNjb3JlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuc2VsZkRhdGEuc2NvcmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGljKHRoaXMuc2VsZkRhdGEucGljKTtcclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID09IFwiMlwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9PSBcIjNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmb3VyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZEYXRhLnNjb3JlID09IDApIHRoaXMuc2VsZk5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ov5Tlm57mjInpkq5cclxuICAgIGJhY2tDbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5pyA5LiK5pa555So5oi35Yqo55S7XHJcbiAgICBwbGF5ZXJBY3Rpb24oKXtcclxuICAgICAgICAvLy0yNTQgMzc3ICAyMTAgNDUzXHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxMCw0ODUsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICBpZih0aGlzLmxpc3REYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICB0aW1lID0gKHRoaXMubGlzdERhdGEubGVuZ3RoIC0gdGhpcy5yYW5rTnVtYmVyKS90aGlzLmxpc3REYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPj0gOTkpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yYW5rTnVtYmVyID49IDk5KXtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lID0gKE1hdGgucmFuZG9tKCkqNDkrMSkvMTAwXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoSWQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJtYXRjaE51bWJlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihtYXRjaElkID09IG51bGwgfHwgbWF0Y2hJZCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGltZSA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy50d2Vlbil0aGlzLnR3ZWVuLnN0b3AoKTtcclxuICAgICAgICAgICAgaWYodGhpcy5QbGF5ZXIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSwgdGltZSoyMDAwKTtcclxuXHJcbiAgICB9XHJcbiAgICAvL+iuvue9ruWktOWDj1xyXG4gICAgcHVibGljIHNldFBpYyhwaWMpe1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBsYXllci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgZmV0Y2gocGljKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBob25lLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBYLUluZm86JywgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShwaWMsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLlBsYXllci5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHNlbGYucGhvbmUubm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5waG9uZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSlcclxuICAgICAgICAgICAgICAgIC5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGxheWVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnBsYXllckFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/Player.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, '7fd74nqW4BCN6aFalN5nmyL', 'Player');
|
||
// Script/Player.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var GameManager_1 = require("./GameManager");
|
||
var AudioManager_1 = require("./tool/AudioManager");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
0;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.add = null;
|
||
_this.plist = null;
|
||
return _this;
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
this.init();
|
||
};
|
||
NewClass.prototype.init = function () {
|
||
this.jumpState = 0;
|
||
this.jumpHeight = this.node.y;
|
||
this.basicHeight = this.node.y;
|
||
this.up = true;
|
||
this.double = false;
|
||
this.death = false;
|
||
this.jumpAction = null;
|
||
this.block = null;
|
||
this.interfere = false;
|
||
};
|
||
//跳动
|
||
NewClass.prototype.jump = function () {
|
||
var _this = this;
|
||
if (this.jumpState < 2) {
|
||
if (this.jumpState == 0) {
|
||
if (this.death == false) {
|
||
this.node.getChildByName("sp").getComponent(sp.Skeleton).setAnimation(1, "jump", false);
|
||
}
|
||
}
|
||
else if (this.jumpState == 1 || this.node.y > (this.jumpHeight + GameData_1.default._instance.GM_INFO.jumpHeight - 5)) {
|
||
if (this.death == false) {
|
||
this.node.getChildByName("sp").getComponent(sp.Skeleton).setAnimation(1, "jump", false);
|
||
}
|
||
}
|
||
setTimeout(function () {
|
||
if (_this.jumpState == 0) {
|
||
if (_this.block) {
|
||
_this.block.getComponent("Block").hide();
|
||
_this.block = null;
|
||
}
|
||
GameData_1.default._instance.CLICK_DATA.jumps = 1;
|
||
AudioManager_1.default._instance.playJump();
|
||
_this.basicHeight = _this.node.y;
|
||
_this.jumpState += 1;
|
||
_this.up = true;
|
||
Notification_1.Notification.emit("showGround", _this.node.y);
|
||
_this.jumpAction = cc.tween(_this.node)
|
||
.to(GameData_1.default._instance.GM_INFO.jumpUpTime, { position: cc.v3(0, _this.jumpHeight + GameData_1.default._instance.GM_INFO.jumpHeight, 0) }, { easing: 'quadOut' })
|
||
.call(function () {
|
||
_this.up = false;
|
||
_this.jumpState = -1;
|
||
var temp = _this.node.y - _this.jumpHeight;
|
||
console.log("距离", temp);
|
||
})
|
||
.to(GameData_1.default._instance.GM_INFO.jumpDownTime, { position: cc.v3(0, _this.jumpHeight, 0) }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.jumpHeight = _this.node.y;
|
||
_this.jumpState = -1;
|
||
_this.up = true;
|
||
})
|
||
.start();
|
||
}
|
||
else if (_this.jumpState == 1 || _this.node.y > (_this.jumpHeight + GameData_1.default._instance.GM_INFO.jumpHeight - 15)) {
|
||
if (_this.jumpAction)
|
||
_this.jumpAction.stop();
|
||
AudioManager_1.default._instance.playJump();
|
||
GameData_1.default._instance.CLICK_DATA.jumps = 2;
|
||
_this.jumpState = 2;
|
||
_this.up = true;
|
||
_this.jumpAction = cc.tween(_this.node)
|
||
.to(GameData_1.default._instance.GM_INFO.jumpUpTime, { position: cc.v3(0, _this.node.y + GameData_1.default._instance.GM_INFO.jumpHeight, 0) }, { easing: 'quadOut' })
|
||
.call(function () {
|
||
_this.up = false;
|
||
})
|
||
.to(GameData_1.default._instance.GM_INFO.jumpDownTime * 1.5, { position: cc.v3(0, _this.jumpHeight, 0) }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.jumpState = -1;
|
||
_this.jumpHeight = _this.node.y;
|
||
_this.up = true;
|
||
})
|
||
.start();
|
||
}
|
||
}, 100);
|
||
}
|
||
};
|
||
NewClass.prototype.onCollisionEnter = function (other, self) {
|
||
if (GameManager_1.default._instance) {
|
||
if (GameManager_1.default._instance.over == true) {
|
||
return;
|
||
}
|
||
}
|
||
var max = other.name.length;
|
||
var num = 6;
|
||
if (other.node.name != "Ground") {
|
||
if (other.node.getComponent("Block").num > 9)
|
||
num = 7;
|
||
}
|
||
var ColliderName = other.name.substring(num, max);
|
||
//获取碰撞体名字
|
||
if (ColliderName == "<PolygonCollider>") {
|
||
if (this.node.y <= other.node.y && this.up == true && this.death == false) {
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
AudioManager_1.default._instance.playGround();
|
||
// console.log("死亡1");
|
||
this.gameDeath();
|
||
}
|
||
else if (other.node.name == "Ground" && this.death == false) {
|
||
// if(this.jumpAction)this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
// console.log("死亡2");
|
||
this.gameDeath();
|
||
}
|
||
else {
|
||
// console.log("没碰到边缘",this.up,this.node.y,other.node.y,this.jumpState,this.up);
|
||
}
|
||
}
|
||
if (ColliderName == "<BoxCollider>") {
|
||
if (this.death == true) {
|
||
// console.log("已经死亡");
|
||
return;
|
||
}
|
||
//
|
||
var portrait = Math.abs(this.node.y - other.node.y);
|
||
var width = other.node.width / 2;
|
||
var pos = Math.abs(this.node.x - other.node.x);
|
||
var distance = pos / width;
|
||
// console.log("我的位置:",this.node.x,"块的位置:",other.node.x,"块的宽度:",width,"百分比:",distance);
|
||
if (this.up == true) {
|
||
// console.log("死亡4");
|
||
AudioManager_1.default._instance.playGround();
|
||
this.gameDeath();
|
||
}
|
||
else {
|
||
if (distance * 100 < GameData_1.default._instance.GM_INFO.distanceMin && this.jumpState != 0) {
|
||
// console.log("成功1");
|
||
console.log("百分比:", distance * 100 + "%");
|
||
this.success(other, distance * 100);
|
||
}
|
||
else {
|
||
if (portrait >= 20 || distance * 100 > GameData_1.default._instance.GM_INFO.distanceMax) {
|
||
// console.log("死亡3","落差:",portrait,"状态:",this.up);
|
||
AudioManager_1.default._instance.playGround();
|
||
this.gameDeath();
|
||
}
|
||
else {
|
||
// console.log("成功2");
|
||
console.log("百分比:", distance * 100 + "%");
|
||
this.success(other, distance * 100);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
NewClass.prototype.success = function (other, distance) {
|
||
GameData_1.default._instance.CLICK_DATA.percent = Math.floor(distance);
|
||
if (GameManager_1.default._instance)
|
||
GameManager_1.default._instance.destroyBlock();
|
||
this.add.active = true;
|
||
this.add.opacity = 0;
|
||
var number = 1;
|
||
if (distance <= 7.5)
|
||
number = 3;
|
||
else if (distance <= 15)
|
||
number = 2;
|
||
GameData_1.default._instance.CLICK_DATA.accuracy = number;
|
||
this.add.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.plist.getSpriteFrames()[number];
|
||
this.add.getChildByName("jia").getComponent(cc.Sprite).spriteFrame = this.plist.getSpriteFrames()[number + 3];
|
||
this.addAction();
|
||
this.node.getChildByName("guang").active = true;
|
||
this.node.getChildByName("guang").getComponent(sp.Skeleton).setAnimation(0, "double_1", false);
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
if (this.death == false) {
|
||
this.node.getChildByName("sp").getComponent(sp.Skeleton).setAnimation(1, "jump", false);
|
||
}
|
||
this.block = other.node;
|
||
this.block.getComponent("Block").setScore(number);
|
||
this.basicHeight = this.node.y;
|
||
if (number > 1) {
|
||
AudioManager_1.default._instance.playPz();
|
||
if (this.double == false) {
|
||
this.double = true;
|
||
GameData_1.default._instance.LEVEL_INFO.doubleHit = 1.05;
|
||
}
|
||
else {
|
||
GameData_1.default._instance.LEVEL_INFO.doubleHit += GameData_1.default._instance.LEVEL_INFO.doubleAdd;
|
||
}
|
||
var combo = (GameData_1.default._instance.LEVEL_INFO.doubleHit - 1) * (1 / 0.05);
|
||
GameData_1.default._instance.CLICK_DATA.combo = parseInt(combo + "");
|
||
}
|
||
else {
|
||
AudioManager_1.default._instance.playLuo();
|
||
this.double = false;
|
||
GameData_1.default._instance.CLICK_DATA.combo = 0;
|
||
}
|
||
Notification_1.Notification.emit("setData", null);
|
||
setTimeout(function () {
|
||
Notification_1.Notification.emit("createBlock", null);
|
||
}, 10);
|
||
if (number > 1 && GameData_1.default._instance.LEVEL_INFO.doubleSuccess != 0) {
|
||
GameData_1.default._instance.LEVEL_INFO.doubleSuccess -= 1;
|
||
}
|
||
else {
|
||
if (GameData_1.default._instance.LEVEL_INFO.doubleSuccess != 0 && GameData_1.default._instance.LEVEL_INFO.doubleSuccess < 3) {
|
||
GameData_1.default._instance.LEVEL_INFO.doubleSuccess = 3;
|
||
}
|
||
}
|
||
if (GameData_1.default._instance.LEVEL_INFO.doubleSuccess == 0) {
|
||
setTimeout(function () {
|
||
Notification_1.Notification.emit("createCrackBlock", null);
|
||
}, 20);
|
||
}
|
||
else {
|
||
GameManager_1.default._instance.interfere = false;
|
||
GameData_1.default._instance.CLICK_DATA.fake = GameManager_1.default._instance.interfere;
|
||
}
|
||
this.jumpState = 0;
|
||
this.up = true;
|
||
this.node.y = other.node.y - 3 + other.node.height / 2;
|
||
this.jumpHeight = this.node.y;
|
||
};
|
||
NewClass.prototype.gameDeath = function () {
|
||
// console.log("条失败");
|
||
GameData_1.default._instance.CLICK_DATA.combo = 0;
|
||
GameData_1.default._instance.CLICK_DATA.accuracy = 0;
|
||
GameData_1.default._instance.CLICK_DATA.percent = -1;
|
||
Notification_1.Notification.emit("setData", null);
|
||
this.double = false;
|
||
GameData_1.default._instance.LEVEL_INFO.doubleSuccess = 3;
|
||
this.death = true;
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
Notification_1.Notification.emit("death", null);
|
||
};
|
||
NewClass.prototype.xinAction = function () {
|
||
// console.log("生命:",GameData._instance.GM_INFO.life);
|
||
if (GameData_1.default._instance.GM_INFO.life >= 0) {
|
||
var xin = this.node.getChildByName("xin");
|
||
xin.y = 120;
|
||
cc.tween(xin)
|
||
.to(0.2, { opacity: 255, y: xin.y + 50 })
|
||
.delay(0.5)
|
||
.to(0.3, { opacity: 0, y: xin.y + 100 })
|
||
.call(function () {
|
||
})
|
||
.start();
|
||
}
|
||
};
|
||
NewClass.prototype.addAction = function () {
|
||
var _this = this;
|
||
this.add.y = 120;
|
||
cc.tween(this.add)
|
||
.to(0.2, { opacity: 255, y: this.add.y + 50 })
|
||
.delay(0.5)
|
||
.to(0.3, { opacity: 0, y: this.add.y + 100 })
|
||
.call(function () {
|
||
_this.add.active = false;
|
||
})
|
||
.start();
|
||
};
|
||
NewClass.prototype.update = function (dt) {
|
||
// if(this.death == true && this.node.y > -500 && GameManager._instance.over == false){
|
||
// // this.node.y -= 3;
|
||
// // if(this.node.y <= -500){
|
||
// // this.node.y = -500;
|
||
// // }
|
||
// }
|
||
};
|
||
__decorate([
|
||
property(cc.Node)
|
||
], NewClass.prototype, "add", void 0);
|
||
__decorate([
|
||
property(cc.SpriteAtlas)
|
||
], NewClass.prototype, "plist", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsdUNBQWtDO0FBQ2xDLDZDQUF3QztBQUN4QyxvREFBK0M7QUFDL0Msb0RBQW1EO0FBQzdDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBQUEsQ0FBQyxDQUFBO0FBRzNDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBc1NDO1FBblNHLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFrQixJQUFJLENBQUM7O0lBaVNoQyxDQUFDO0lBdFJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsdUJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFF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QUFHLENBQUM7YUFDVixFQUFFLENBQUMsR0FBRyxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsR0FBRyxFQUFDLENBQUM7YUFDcEMsSUFBSSxDQUFDO1lBQ0gsS0FBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQzthQUNELEtBQUssRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBUSxFQUFFO1FBQ04sdUZBQXVGO1FBQ3ZGLDJCQUEyQjtRQUMzQixrQ0FBa0M7UUFDbEMsaUNBQWlDO1FBQ2pDLFlBQVk7UUFDWixJQUFJO0lBQ1IsQ0FBQztJQWxTRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNFO0lBRXBCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7MkNBQ0c7SUFMWCxRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBc1M1QjtJQUFELGVBQUM7Q0F0U0QsQUFzU0MsQ0F0U3FDLEVBQUUsQ0FBQyxTQUFTLEdBc1NqRDtrQkF0U29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4vdG9vbC9BdWRpb01hbmFnZXJcIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi90b29sL05vdGlmaWNhdGlvbic7XHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yOzBcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGFkZDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlQXRsYXMpXHJcbiAgICBwbGlzdDogY2MuU3ByaXRlQXRsYXMgPW51bGw7XHJcblxyXG4gICAgYmFzaWNIZWlnaHQ6bnVtYmVyICAvL+avj+asoei3s+i3g+WJjeWfuuehgOmrmOW6plxyXG4gICAganVtcFN0YXRlOm51bWJlcjsgICAvL+i3s+i3g+eKtuaAge+8jOaOp+WItjHmrrXot7My5q616LezXHJcbiAgICBqdW1wSGVpZ2h0Om51bWJlcjsgIC8v6Lez6LeD6auY5bqmXHJcbiAgICBqdW1wQWN0aW9uOiBjYy5Ud2VlbjxjYy5Ob2RlPjsvL+i3s+i3g3R3ZWVu5Yqo55S777yM55So5LqO5YGc5q2i5o6n5Yi2XHJcbiAgICB1cDpib29sZWFuOyAgICAgICAgIC8v6Lez6LeD5LiK5Y2H5LiL6ZmN54q25oCB5Yik5patXHJcbiAgICBibG9jazogY2MuTm9kZTtcclxuICAgIGRlYXRoOmJvb2xlYW47XHJcbiAgICBpbnRlcmZlcmU6Ym9vbGVhbjtcclxuICAgIGRvdWJsZTpib29sZWFuO1xyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLmp1bXBTdGF0ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5qdW1wSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgdGhpcy5iYXNpY0hlaWdodCA9IHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMudXAgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZG91YmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kZWF0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuanVtcEFjdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ibG9jayA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pbnRlcmZlcmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvL+i3s+WKqFxyXG4gICAganVtcCgpe1xyXG4gICAgICAgIGlmKHRoaXMuanVtcFN0YXRlIDwgMil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuanVtcFN0YXRlID09IDApe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5kZWF0aCA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3BcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcImp1bXBcIixmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLmp1bXBTdGF0ZSA9PSAxIHx8IHRoaXMubm9kZS55ID4gKHRoaXMuanVtcEhlaWdodCtHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wSGVpZ2h0LTUpKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZGVhdGggPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNwXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJqdW1wXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5qdW1wU3RhdGUgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ibG9jayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuanVtcHMgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUp1bXAoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2ljSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wU3RhdGUgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcInNob3dHcm91bmRcIix0aGlzLm5vZGUueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wQWN0aW9uID0gY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgICAgICAgICAgICAgIC50byhHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wVXBUaW1lLHtwb3NpdGlvbjpjYy52MygwLHRoaXMuanVtcEhlaWdodCtHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wSGVpZ2h0LDApfSx7ZWFzaW5nOidxdWFkT3V0J30pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXAgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLm5vZGUueSAtIHRoaXMuanVtcEhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLot53nprtcIix0ZW1wKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmp1bXBEb3duVGltZSx7cG9zaXRpb246Y2MudjMoMCx0aGlzLmp1bXBIZWlnaHQsMCl9LHtlYXNpbmc6J2N1YmljSW4nfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuanVtcFN0YXRlID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMuanVtcFN0YXRlID09IDEgfHwgdGhpcy5ub2RlLnkgPiAodGhpcy5qdW1wSGVpZ2h0K0dhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmp1bXBIZWlnaHQtMTUpKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmp1bXBBY3Rpb24pdGhpcy5qdW1wQWN0aW9uLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlKdW1wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuanVtcHMgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuanVtcFN0YXRlID0gMjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmp1bXBBY3Rpb24gPSBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmp1bXBVcFRpbWUse3Bvc2l0aW9uOmNjLnYzKDAsdGhpcy5ub2RlLnkrR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uanVtcEhlaWdodCwwKX0se2Vhc2luZzoncXVhZE91dCd9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAudG8oR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uanVtcERvd25UaW1lKjEuNSx7cG9zaXRpb246Y2MudjMoMCx0aGlzLmp1bXBIZWlnaHQsMCl9LHtlYXNpbmc6J2N1YmljSW4nfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNvbGxpc2lvbkVudGVyKG90aGVyOiBjYy5Db2xsaWRlciwgc2VsZjogY2MuQ29sbGlkZXIpIHtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Upe1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Uub3ZlciA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG1heCA9IG90aGVyLm5hbWUubGVuZ3RoO1xyXG4gICAgICAgIGxldCBudW0gPSA2O1xyXG4gICAgICAgIGlmKG90aGVyLm5vZGUubmFtZSAhPSBcIkdyb3VuZFwiKXtcclxuICAgICAgICAgICAgaWYob3RoZXIubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5udW0gPiA5KSBudW0gPSA3OyBcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIGxldCBDb2xsaWRlck5hbWUgPSBvdGhlci5uYW1lLnN1YnN0cmluZyhudW0sbWF4KTtcclxuICAgICAgICAvL+iOt+WPlueisOaSnuS9k+WQjeWtl1xyXG4gICAgICAgIGlmKENvbGxpZGVyTmFtZSA9PSBcIjxQb2x5Z29uQ29sbGlkZXI+XCIpe1xyXG4gICAgICAgICAgICBpZih0aGlzLm5vZGUueSA8PSBvdGhlci5ub2RlLnkgJiYgdGhpcy51cCA9PSB0cnVlICYmIHRoaXMuZGVhdGggPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5qdW1wQWN0aW9uKXRoaXMuanVtcEFjdGlvbi5zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmp1bXBTdGF0ZSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5R3JvdW5kKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuatu+S6oTFcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbWVEZWF0aCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYob3RoZXIubm9kZS5uYW1lID09IFwiR3JvdW5kXCIgJiYgdGhpcy5kZWF0aCA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAvLyBpZih0aGlzLmp1bXBBY3Rpb24pdGhpcy5qdW1wQWN0aW9uLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuanVtcFN0YXRlID0gLTE7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuatu+S6oTJcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbWVEZWF0aCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuayoeeisOWIsOi+uee8mFwiLHRoaXMudXAsdGhpcy5ub2RlLnksb3RoZXIubm9kZS55LHRoaXMuanVtcFN0YXRlLHRoaXMudXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKENvbGxpZGVyTmFtZSA9PSBcIjxCb3hDb2xsaWRlcj5cIiApe1xyXG4gICAgICAgICAgICBpZih0aGlzLmRlYXRoID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlt7Lnu4/mrbvkuqFcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgbGV0IHBvcnRyYWl0ID0gTWF0aC5hYnModGhpcy5ub2RlLnktb3RoZXIubm9kZS55KVxyXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBvdGhlci5ub2RlLndpZHRoLzI7XHJcbiAgICAgICAgICAgIGxldCBwb3MgPSBNYXRoLmFicyh0aGlzLm5vZGUueCAtIG90aGVyLm5vZGUueCk7XHJcbiAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9cG9zL3dpZHRoO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaIkeeahOS9jee9rjpcIix0aGlzLm5vZGUueCxcIuWdl+eahOS9jee9rjpcIixvdGhlci5ub2RlLngsXCLlnZfnmoTlrr3luqY6XCIsd2lkdGgsXCLnmb7liIbmr5Q6XCIsZGlzdGFuY2UpO1xyXG5cclxuICAgICAgICAgICAgaWYodGhpcy51cCA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5q275LqhNFwiKTtcclxuICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUdyb3VuZCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYW1lRGVhdGgoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UqMTAwIDwgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlzdGFuY2VNaW4gJiYgdGhpcy5qdW1wU3RhdGUgIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiJDlip8xXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi55m+5YiG5q+UOlwiLGRpc3RhbmNlKjEwMCtcIiVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKG90aGVyLGRpc3RhbmNlKjEwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBvcnRyYWl0ID49IDIwIHx8IGRpc3RhbmNlKjEwMCA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmRpc3RhbmNlTWF4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmrbvkuqEzXCIsXCLokL3lt646XCIscG9ydHJhaXQsXCLnirbmgIE6XCIsdGhpcy51cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUdyb3VuZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbWVEZWF0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaIkOWKnzJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi55m+5YiG5q+UOlwiLGRpc3RhbmNlKjEwMCtcIiVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhvdGhlcixkaXN0YW5jZSoxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdWNjZXNzKG90aGVyLGRpc3RhbmNlKXtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5wZXJjZW50ID0gTWF0aC5mbG9vcihkaXN0YW5jZSk7XHJcbiAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlKUdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5kZXN0cm95QmxvY2soKTtcclxuICAgICAgICB0aGlzLmFkZC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIGxldCBudW1iZXIgPSAxO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlIDw9IDcuNSkgbnVtYmVyID0gMztcclxuICAgICAgICBlbHNlIGlmKGRpc3RhbmNlIDw9IDE1KSBudW1iZXIgPSAyO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmFjY3VyYWN5ID0gbnVtYmVyO1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5hZGQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5wbGlzdC5nZXRTcHJpdGVGcmFtZXMoKVtudW1iZXJdO1xyXG4gICAgICAgIHRoaXMuYWRkLmdldENoaWxkQnlOYW1lKFwiamlhXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5wbGlzdC5nZXRTcHJpdGVGcmFtZXMoKVtudW1iZXIrM107XHJcbiAgICAgICAgdGhpcy5hZGRBY3Rpb24oKTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJndWFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImd1YW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDAsXCJkb3VibGVfMVwiLGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLmp1bXBBY3Rpb24pdGhpcy5qdW1wQWN0aW9uLnN0b3AoKTtcclxuICAgICAgICBpZih0aGlzLmRlYXRoID09IGZhbHNlKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3BcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcImp1bXBcIixmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmJsb2NrID0gb3RoZXIubm9kZTtcclxuICAgICAgICB0aGlzLmJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNldFNjb3JlKG51bWJlcik7XHJcbiAgICAgICAgdGhpcy5iYXNpY0hlaWdodCA9IHRoaXMubm9kZS55O1xyXG4gICAgICAgIGlmKG51bWJlciA+IDEpe1xyXG4gICAgICAgICAgICBBdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlQeigpO1xyXG4gICAgICAgICAgICBpZih0aGlzLmRvdWJsZSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvdWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVIaXQgPSAxLjA1O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVIaXQgKz0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlQWRkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBjb21ibyA9IChHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVIaXQtMSkqKDEvMC4wNSk7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmNvbWJvID0gcGFyc2VJbnQoY29tYm8gKyBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5THVvKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZG91YmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmNvbWJvID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwic2V0RGF0YVwiLG51bGwpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImNyZWF0ZUJsb2NrXCIsbnVsbCk7XHJcbiAgICAgICAgfSwgMTApO1xyXG4gIFxyXG4gICAgICAgIGlmKG51bWJlciA+IDEgJiYgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlU3VjY2VzcyAhPSAwICl7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmRvdWJsZVN1Y2Nlc3MgLT0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlU3VjY2VzcyAhPSAwICYmIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmRvdWJsZVN1Y2Nlc3M8Myl7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVTdWNjZXNzID0gMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVTdWNjZXNzID09IDApe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwiY3JlYXRlQ3JhY2tCbG9ja1wiLG51bGwpO1xyXG4gICAgICAgICAgICB9LCAyMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5pbnRlcmZlcmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZmFrZSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5pbnRlcmZlcmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuanVtcFN0YXRlID0gMDtcclxuICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUueSA9IG90aGVyLm5vZGUueS0zK290aGVyLm5vZGUuaGVpZ2h0LzI7XHJcbiAgICAgICAgdGhpcy5qdW1wSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2FtZURlYXRoKCl7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnaHlpLHotKVcIik7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuY29tYm8gPSAwO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmFjY3VyYWN5ID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5wZXJjZW50ID0gLTE7XHJcblxyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwic2V0RGF0YVwiLG51bGwpO1xyXG4gICAgICAgIHRoaXMuZG91YmxlID0gZmFsc2U7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlU3VjY2VzcyA9IDM7XHJcbiAgICAgICAgdGhpcy5kZWF0aCA9IHRydWU7XHJcbiAgICAgICAgaWYodGhpcy5qdW1wQWN0aW9uKXRoaXMuanVtcEFjdGlvbi5zdG9wKCk7XHJcbiAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAtMTtcclxuICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImRlYXRoXCIsbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgeGluQWN0aW9uKCl7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLnlJ/lkb06XCIsR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSk7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA+PSAwKXtcclxuICAgICAgICAgICAgbGV0IHhpbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInhpblwiKTtcclxuICAgICAgICAgICAgeGluLnkgPSAxMjA7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHhpbilcclxuICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTUseTp4aW4ueSs1MH0pXHJcbiAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgIC50bygwLjMse29wYWNpdHk6MCx5Onhpbi55KzEwMH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZEFjdGlvbigpe1xyXG4gICAgICAgIHRoaXMuYWRkLnkgPSAxMjA7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5hZGQpXHJcbiAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTUseTp0aGlzLmFkZC55KzUwfSlcclxuICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgIC50bygwLjMse29wYWNpdHk6MCx5OnRoaXMuYWRkLnkrMTAwfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICB0aGlzLmFkZC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuICAgICAgICAvLyBpZih0aGlzLmRlYXRoID09IHRydWUgJiYgdGhpcy5ub2RlLnkgPiAtNTAwICYmIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5vdmVyID09IGZhbHNlKXtcclxuICAgICAgICAvLyAgICAgLy8gdGhpcy5ub2RlLnkgLT0gMztcclxuICAgICAgICAvLyAgICAgLy8gaWYodGhpcy5ub2RlLnkgPD0gLTUwMCl7XHJcbiAgICAgICAgLy8gICAgIC8vICAgICB0aGlzLm5vZGUueSA9IC01MDA7XHJcbiAgICAgICAgLy8gICAgIC8vIH0gXHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/Load.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, '08fd79IH4NDy6e43JUK4PUm', 'Load');
|
||
// Script/Load.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
// GameTool.Authentication();
|
||
};
|
||
NewClass.prototype.click = function () {
|
||
cc.director.loadScene("GuideScene");
|
||
// cc.director.loadScene("GameScene");
|
||
};
|
||
NewClass.prototype.openRank = function () {
|
||
cc.director.loadScene("RankScene");
|
||
};
|
||
__decorate([
|
||
property(cc.Label)
|
||
], NewClass.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], NewClass.prototype, "text", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBeUJDO1FBdEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFrQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBakJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLDZCQUE2QjtJQUNqQyxDQUFDO0lBRUQsd0JBQUssR0FBTDtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLHNDQUFzQztJQUMxQyxDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFwQkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBeUI1QjtJQUFELGVBQUM7Q0F6QkQsQUF5QkMsQ0F6QnFDLEVBQUUsQ0FBQyxTQUFTLEdBeUJqRDtrQkF6Qm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IHsgR2FtZVRvb2wgfSBmcm9tIFwiLi90b29sL0dhbWVUb29sXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VNZXNzYWdlIH0gZnJvbSBcIi4vdG9vbC9TdG9yYWdlXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy8gR2FtZVRvb2wuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkd1aWRlU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5SYW5rKCl7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiUmFua1NjZW5lXCIpO1xyXG4gICAgfVxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/GameScene.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, 'd14c5oIAFtGepa7XMccAMNQ', 'GameScene');
|
||
// Script/GameScene.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
};
|
||
__decorate([
|
||
property(cc.Label)
|
||
], NewClass.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], NewClass.prototype, "text", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUFpQkM7UUFkRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O1FBVXZCLGlCQUFpQjtJQUNyQixDQUFDO0lBVEcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO0lBRUEsQ0FBQztJQVhEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7MkNBQ0k7SUFHdkI7UUFEQyxRQUFROzBDQUNjO0lBTk4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQWlCNUI7SUFBRCxlQUFDO0NBakJELEFBaUJDLENBakJxQyxFQUFFLENBQUMsU0FBUyxHQWlCakQ7a0JBakJvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/Storage.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, 'e4f51plCa5CE6sxRV+Bx5GJ', 'Storage');
|
||
// Script/tool/Storage.ts
|
||
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.StorageMessage = void 0;
|
||
//缓存浏览器数据
|
||
var StorageMessage = {
|
||
getStorage: function (key) {
|
||
var result = null;
|
||
if (cc.sys.localStorage.getItem(key)) {
|
||
var result = cc.sys.localStorage.getItem(key);
|
||
}
|
||
if (result) {
|
||
result = JSON.parse(result);
|
||
}
|
||
return result;
|
||
},
|
||
setStorage: function (key, value) {
|
||
//主动拉起分享接口
|
||
var temp = JSON.stringify(value);
|
||
cc.sys.localStorage.setItem(key, temp);
|
||
},
|
||
removeStorage: function (key) {
|
||
//主动删除消息接口
|
||
if (cc.sys.localStorage.getItem(key)) {
|
||
cc.sys.localStorage.removeItem(key);
|
||
}
|
||
},
|
||
};
|
||
exports.StorageMessage = StorageMessage;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxTdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVM7QUFDVCxJQUFJLGNBQWMsR0FBRztJQUNqQixVQUFVLEVBQUcsVUFBUyxHQUFHO1FBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNsQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFHLE1BQU0sRUFBQztZQUNSLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNELFVBQVUsRUFBRyxVQUFTLEdBQUcsRUFBQyxLQUFLO1FBQzNCLFVBQVU7UUFDVixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUNELGFBQWEsRUFBRyxVQUFTLEdBQUc7UUFDMUIsVUFBVTtRQUNWLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNwQztJQUNILENBQUM7Q0FDSixDQUFDO0FBRU8sd0NBQWMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+e8k+WtmOa1j+iniOWZqOaVsOaNrlxudmFyIFN0b3JhZ2VNZXNzYWdlID0ge1xuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgaWYoY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYocmVzdWx0KXtcbiAgICAgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHNldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXksdmFsdWUpe1xuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xuICAgICAgICB2YXIgdGVtcCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGVtcClcbiAgICB9LFxuICAgIHJlbW92ZVN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xuICAgICAgLy/kuLvliqjliKDpmaTmtojmga/mjqXlj6NcbiAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgICAgIH1cbiAgICB9LFxufTtcblxuZXhwb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfTsiXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/GameData.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, 'f2f0bI5PsVI+o18xF6G+KVa', 'GameData');
|
||
// Script/GameData.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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var GameData = /** @class */ (function (_super) {
|
||
__extends(GameData, _super);
|
||
function GameData() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
GameData_1 = GameData;
|
||
// 0.15 0.37 0.8 获得三个星星 -2167.675 -2054 两个尺寸的屏幕的补偿值
|
||
GameData.prototype.onLoad = function () {
|
||
if (GameData_1._instance == null) {
|
||
GameData_1._instance = this;
|
||
// cc.game.addPersistRootNode(this.node);
|
||
this.AudioManager = this.node.getComponent('BallAudioManager');
|
||
}
|
||
else {
|
||
this.node.destroy();
|
||
return;
|
||
}
|
||
};
|
||
GameData.prototype.start = function () {
|
||
//GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次
|
||
this.GAME_DATA = [];
|
||
this.GM_INFO_init(); //GM_INFO存储 一些游戏数据,这些数据至少是当局内不会重置清零的
|
||
this.LEVEL_init(); //每局游戏内游戏参数,可复活清零或者重玩清零
|
||
this.BLOCK_INFO_init(); //每个游戏不同,此游戏为跳板参数
|
||
this.CLICK_init(); //埋点数据,用于上传重要数据
|
||
};
|
||
GameData.prototype.GM_INFO_init = function () {
|
||
this.GM_INFO = {
|
||
// isEnd: false,
|
||
mean_Time: 0,
|
||
total: 0,
|
||
currSeed: 203213,
|
||
gameId: '100001',
|
||
userId: "",
|
||
guide: true,
|
||
url: "http://dev.api.sparkus.cn",
|
||
custom: 0,
|
||
//从这开始
|
||
jumpUpTime: 0.5,
|
||
jumpDownTime: 0.4,
|
||
jumpHeight: 150,
|
||
blockMin: 30,
|
||
blockMax: -10,
|
||
blockScale: 5,
|
||
distanceMin: 100,
|
||
distanceMax: 110,
|
||
life: 3,
|
||
levelMax: 1,
|
||
difficultyMax: 1,
|
||
score: 0,
|
||
success: true,
|
||
probation: true //试用期
|
||
};
|
||
};
|
||
GameData.prototype.CLICK_init = function () {
|
||
GameData_1._instance.CLICK_DATA =
|
||
{
|
||
type: 1,
|
||
level: 0,
|
||
block: 0,
|
||
percent: 0,
|
||
getScore: 0,
|
||
totalScore: 0,
|
||
difficulty: 0,
|
||
height: false,
|
||
combo: 0,
|
||
accuracy: 0,
|
||
jumps: 0,
|
||
timer: 0,
|
||
fake: false,
|
||
fakeSpeed: 0,
|
||
speed: 0,
|
||
round: 0,
|
||
};
|
||
};
|
||
GameData.prototype.LEVEL_init = function () {
|
||
this.LEVEL_INFO =
|
||
{
|
||
speed: 1,
|
||
addSpeed: 0.02,
|
||
reduceSpeed: 0,
|
||
jiansu: 3,
|
||
round1: 10,
|
||
round2: 20,
|
||
round3: 30,
|
||
doubleSuccess: 3,
|
||
fastSpeed: 3.5,
|
||
slowSpeed: 4.5,
|
||
doubleHit: 1,
|
||
doubleAdd: 0.05,
|
||
doubleMax: 2,
|
||
layer: 100,
|
||
layerAdd: 2,
|
||
star1: 0.2,
|
||
star2: 0.4,
|
||
star3: 0.8,
|
||
scoreMax: 120000,
|
||
levelMax: 1,
|
||
difficultyMax: 1 //最高难度系数
|
||
};
|
||
};
|
||
GameData.prototype.BLOCK_INFO_init = function () {
|
||
this.BLOCK_INFO = [
|
||
{
|
||
name: "block1",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block2",
|
||
speed: 9,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block3",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block4",
|
||
speed: 9,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block5",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block6",
|
||
speed: 7,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block7",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block8",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block9",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block10",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block11",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block12",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block0",
|
||
speed: 14,
|
||
thickness: false,
|
||
},
|
||
];
|
||
};
|
||
var GameData_1;
|
||
__decorate([
|
||
property(cc.Label)
|
||
], GameData.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], GameData.prototype, "text", void 0);
|
||
GameData = GameData_1 = __decorate([
|
||
ccclass
|
||
], GameData);
|
||
return GameData;
|
||
}(cc.Component));
|
||
exports.default = GameData;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQTZPQztRQTNPRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBVyxPQUFPLENBQUM7O1FBd092QixpQkFBaUI7SUFDckIsQ0FBQztpQkE3T29CLFFBQVE7SUE4RHpCLHVEQUF1RDtJQUN2RCx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxVQUFRLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUM1QixVQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMxQix5Q0FBeUM7WUFFekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2xFO2FBQ0k7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFRCx3QkFBSyxHQUFMO1FBQ0ksbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFDaEIsQ0FBQTtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFJLG9DQUFvQztRQUM1RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBTSx1QkFBdUI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsaUJBQWlCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFNLGVBQWU7SUFDM0MsQ0FBQztJQUVELCtCQUFZLEdBQVo7UUFDSSxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsZ0JBQWdCO1lBQ2hCLFNBQVMsRUFBQyxDQUFDO1lB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O1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFDLFFBQVE7Z0JBQ2IsS0FBSyxFQUFDLENBQUM7Z0JBQ1AsU0FBUyxFQUFDLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUMsUUFBUTtnQkFDYixLQUFLLEVBQUMsRUFBRTtnQkFDUixTQUFTLEVBQUMsSUFBSTthQUNqQjtZQUNEO2dCQUNJLElBQUksRUFBQyxRQUFRO2dCQUNiLEtBQUssRUFBQyxFQUFFO2dCQUNSLFNBQVMsRUFBQyxJQUFJO2FBQ2pCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFDLFFBQVE7Z0JBQ2IsS0FBSyxFQUFDLEVBQUU7Z0JBQ1IsU0FBUyxFQUFDLElBQUk7YUFDakI7WUFDRDtnQkFDSSxJQUFJLEVBQUMsU0FBUztnQkFDZCxLQUFLLEVBQUMsRUFBRTtnQkFDUixTQUFTLEVBQUMsSUFBSTthQUNqQjtZQUNEO2dCQUNJLElBQUksRUFBQyxTQUFTO2dCQUNkLEtBQUssRUFBQyxFQUFFO2dCQUNSLFNBQVMsRUFBQyxJQUFJO2FBQ2pCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFDLFNBQVM7Z0JBQ2QsS0FBSyxFQUFDLEVBQUU7Z0JBQ1IsU0FBUyxFQUFDLElBQUk7YUFDakI7WUFDRDtnQkFDSSxJQUFJLEVBQUMsUUFBUTtnQkFDYixLQUFLLEVBQUMsRUFBRTtnQkFDUixTQUFTLEVBQUMsS0FBSzthQUNsQjtTQUNKLENBQUE7SUFDTCxDQUFDOztJQXhPRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBRXZCO1FBREMsUUFBUTswQ0FDYztJQUpOLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E2TzVCO0lBQUQsZUFBQztDQTdPRCxBQTZPQyxDQTdPcUMsRUFBRSxDQUFDLFNBQVMsR0E2T2pEO2tCQTdPb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVEYXRhIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICBHTV9JTkZPOiB7fTtcclxuICAgIEdBTUVfREFUQTogYW55W107Ly/lpIfnlKhcclxuICAgIEF1ZGlvTWFuYWdlcjogYW55O1xyXG4gICAgQkxPQ0tfSU5GTzogeyAvL+mavuW6puaOp+WItlxyXG4gICAgICAgIG5hbWU6IHN0cmluZzsgLy/lnZflkI3lrZdcclxuICAgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgIHNwZWVkOiBudW1iZXI7IC8v5q+P5Liq5Z2X55qE5Z+656GA6YCf5bqmXHJcbiAgICAgICAgdGhpY2tuZXNzOiBib29sZWFuO1xyXG4gICAgfVtdO1xyXG4gICAgQ0xJQ0tfREFUQToge1xyXG4gICAgICAgIHR5cGU6IG51bWJlcjsgLy/pu5jorqTnsbvlnotcclxuICAgICAgICBsZXZlbDogbnVtYmVyOyAvL+WxguaVsFxyXG4gICAgICAgIGJsb2NrOiBudW1iZXI7IC8v5Z2X55qE5ZCN5a2XXHJcbiAgICAgICAgcGVyY2VudDogbnVtYmVyOyAvL+i3neemu+S4reW/g+eZvuWIhuavlFxyXG4gICAgICAgIGdldFNjb3JlOiBudW1iZXI7IC8v5pys6L2u6I635b6X5YiG5pWwXHJcbiAgICAgICAgdG90YWxTY29yZTogbnVtYmVyOyAvL+acrOi9rui/h+WQjuaAu+WIhuaVsFxyXG4gICAgICAgIGRpZmZpY3VsdHk6IG51bWJlcjsgLy/mnKzova7pmr7luqbns7vmlbBcclxuICAgICAgICBoZWlnaHQ6IGJvb2xlYW47IC8v5pys6L2u5piv5ZCm5aKe6auYXHJcbiAgICAgICAgY29tYm86IG51bWJlcjsgLy/ov57lh7vmlbBcclxuICAgICAgICBhY2N1cmFjeTogbnVtYmVyOyAvL+eyvuWHhuW6piAoMC0zKSAwIOWksei0peaOieiQvVxyXG4gICAgICAgIGp1bXBzOiBudW1iZXI7IC8v5pys6L2u546p5a626Lez6LeD5qyh5pWw77yMMeaIluiAhTJcclxuICAgICAgICB0aW1lcjogbnVtYmVyOyAvL+acrOWxgOa4uOaIj+WJqeS9meaXtumXtFxyXG4gICAgICAgIGZha2U6IGJvb2xlYW47IC8v5piv5ZCm5pyJ5bmz5Y+w5bmy5omw6aG5XHJcbiAgICAgICAgZmFrZVNwZWVkOiBudW1iZXI7IC8v5YGH5bmz5Y+w56e75Yqo6YCf5bqmXHJcbiAgICAgICAgc3BlZWQ6bnVtYmVyOyAgLy/nnJ/lubPlj7Dnp7vliqjpgJ/luqZcclxuICAgICAgICByb3VuZDpudW1iZXI7ICAvL+WbnuWQiOaVsFxyXG4gICAgICAgIGxldmVsTWF4Om51bWJlciwgICAgICAvL+acgOmrmOWxguaVsFxyXG4gICAgICAgIGRpZmZpY3VsdHlNYXg6bnVtYmVyICAvL+acgOmrmOmavuW6puezu+aVsFxyXG4gICAgfTtcclxuICAgIExFVkVMX0lORk86IHsgLy/pmr7luqbmjqfliLZcclxuICAgICAgICBzcGVlZDogbnVtYmVyOyAvL+mAn+W6puWKoOaIkOWfuuehgFxyXG4gICAgICAgIGFkZFNwZWVkOiBudW1iZXI7IC8v6YCf5bqm5Yqg5oiQ57O75pWwXHJcbiAgICAgICAgcmVkdWNlU3BlZWQ6IG51bWJlcjsgLy/pgJ/luqblop7liqDojIPlm7RcclxuICAgICAgICBqaWFuc3U6IG51bWJlcjsgLy/pgJ/luqblop7liqDnmoTojIPlm7TliqDlgLxcclxuICAgICAgICByb3VuZDE6IG51bWJlcjsgLy/liqDpgJ/ojIPlm7TmjqfliLblm57lkIjmoaPmlbAgMiDlsI/kuo7ov5nlm57lkIjkuLozZG91YmxlIGhpdFxyXG4gICAgICAgIHJvdW5kMjogbnVtYmVyOyAvL+WKoOmAn+iMg+WbtOaOp+WItuWbnuWQiOaho+aVsCAxXHJcbiAgICAgICAgcm91bmQzOiBudW1iZXI7IC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDAuNVxyXG4gICAgICAgIGRvdWJsZVN1Y2Nlc3M6IG51bWJlcjsgLy/ov57lh7vmrKHmlbAoTuasoeS7peS4iizlvIDlkK/lubLmibDpobkpXHJcbiAgICAgICAgZmFzdFNwZWVkOiBudW1iZXI7IC8v55+u6JaE5Z2X5pyA5b+r6YCf5bqmXHJcbiAgICAgICAgc2xvd1NwZWVkOiBudW1iZXI7IC8v5Y6a5Z2X5pyA5Z2X6YCf5bqmXHJcbiAgICAgICAgZG91YmxlSGl0OiBudW1iZXI7IC8v6L+e5Ye75Yqg5oiQXHJcbiAgICAgICAgZG91YmxlQWRkOiBudW1iZXI7IC8v5q+P5qyh6L+e5Ye75ZCOIOi/nuWHu+WKoOaIkFxyXG4gICAgICAgIGRvdWJsZU1heDogbnVtYmVyOyAvL+i/nuWHu+WKoOaIkOacgOWkp+WAvFxyXG4gICAgICAgIGxheWVyOiBudW1iZXI7IC8v5bGC57qn5Yqg5oiQXHJcbiAgICAgICAgbGF5ZXJBZGQ6IG51bWJlcjsgLy/mr4/mrKHlsYLnuqfmj5DljYfvvIzlsYLnuqfliqDmiJDnmoTliqDmiJBcclxuICAgICAgICBzdGFyMTogbnVtYmVyOyAvL+iOt+W+l+S4gOmil+aYn+eZvuWIhuavlFxyXG4gICAgICAgIHN0YXIyOiBudW1iZXI7IC8v6I635b6X5Lik6aKX5pif55m+5YiG5q+UXHJcbiAgICAgICAgc3RhcjM6IG51bWJlcjsgLy/ojrflvpfkuInpopfmmJ/nmb7liIbmr5RcclxuICAgICAgICBzY29yZU1heDogbnVtYmVyOyAvL+aaguaXtuaAu+WIhlxyXG4gICAgICAgIGxldmVsTWF4OiBudW1iZXI7IC8v5pyA6auY5bGC5pWwXHJcbiAgICAgICAgZGlmZmljdWx0eU1heDogbnVtYmVyOyAvL+acgOmrmOmavuW6puezu+aVsFxyXG4gICAgfTtcclxuXHJcblxyXG5cclxuXHJcbiAgICAvLyAwLjE1IDAuMzcgMC44ICDojrflvpfkuInkuKrmmJ/mmJ8gIC0yMTY3LjY3NSAgLTIwNTQgIOS4pOS4quWwuuWvuOeahOWxj+W5leeahOihpeWBv+WAvFxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZiAoR2FtZURhdGEuX2luc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuQXVkaW9NYW5hZ2VyID0gdGhpcy5ub2RlLmdldENvbXBvbmVudCgnQmFsbEF1ZGlvTWFuYWdlcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg5bqf5byD5LqG77yM5pqC5pe25LiN5Yig6Zmk5Lul6Ziy5ZCO6Z2i5L+u5pS55ZueIOS4gOaVtOWxgOS8oOS4gOasoVxyXG4gICAgICAgIHRoaXMuR0FNRV9EQVRBID0gW1xyXG4gICAgICAgIF1cclxuICAgICAgICB0aGlzLkdNX0lORk9faW5pdCgpOyAgICAvL0dNX0lORk/lrZjlgqgg5LiA5Lqb5ri45oiP5pWw5o2u77yM6L+Z5Lqb5pWw5o2u6Iez5bCR5piv5b2T5bGA5YaF5LiN5Lya6YeN572u5riF6Zu255qEXHJcbiAgICAgICAgdGhpcy5MRVZFTF9pbml0KCk7ICAgICAgLy/mr4/lsYDmuLjmiI/lhoXmuLjmiI/lj4LmlbDvvIzlj6/lpI3mtLvmuIXpm7bmiJbogIXph43njqnmuIXpm7ZcclxuICAgICAgICB0aGlzLkJMT0NLX0lORk9faW5pdCgpOyAvL+avj+S4qua4uOaIj+S4jeWQjO+8jOatpOa4uOaIj+S4uui3s+adv+WPguaVsFxyXG4gICAgICAgIHRoaXMuQ0xJQ0tfaW5pdCgpOyAgICAgIC8v5Z+L54K55pWw5o2uLOeUqOS6juS4iuS8oOmHjeimgeaVsOaNrlxyXG4gICAgfVxyXG5cclxuICAgIEdNX0lORk9faW5pdCgpe1xyXG4gICAgICAgIHRoaXMuR01fSU5GTyA9IHsgXHJcbiAgICAgICAgICAgIC8vIGlzRW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgbWVhbl9UaW1lOjAsICAgICAgICAgICAgICAgIC8v5bmz5Z2H5pS+566t6YCf5bqmXHJcbiAgICAgICAgICAgIHRvdGFsOjAsICAgICAgICAgICAgICAgICAgICAvL+aAu+WFseWvueeahOS4quaVsFxyXG4gICAgICAgICAgICBjdXJyU2VlZDogMjAzMjEzLCAgICAgICAgICAgLy/nlKjkuo7pmo/mnLrmlbDnp43lrZBcclxuICAgICAgICAgICAgZ2FtZUlkOicxMDAwMDEnLFxyXG4gICAgICAgICAgICB1c2VySWQ6XCJcIixcclxuICAgICAgICAgICAgZ3VpZGU6dHJ1ZSwgICAgICAgICAgICAgICAgIC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgICAgIHVybDpcImh0dHA6Ly9kZXYuYXBpLnNwYXJrdXMuY25cIixcclxuICAgICAgICAgICAgY3VzdG9tOiAwLFxyXG5cclxuICAgICAgICAgICAgLy/ku47ov5nlvIDlp4tcclxuICAgICAgICAgICAganVtcFVwVGltZTowLjUsICAgICAgICAgICAgIC8v6LW36Lez5pe26Ze0XHJcbiAgICAgICAgICAgIGp1bXBEb3duVGltZTowLjQsICAgICAgICAgICAvL+iQveWcsOaXtumXtFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAganVtcEhlaWdodDoxNTAsICAgICAgICAgICAgIC8v6Lez6LeD6auY5bqmXHJcbiAgICAgICAgICAgIGJsb2NrTWluOjMwLCAgICAgICAgICAgICAgICAvL+iWhOWdl+WinuWKoOmrmOW6plxyXG4gICAgICAgICAgICBibG9ja01heDotMTAsICAgICAgICAgICAgICAgICAvL+WOmuWdl+WinuWKoOmrmOW6pu+8iOWcqOiHqui6q+mrmOW6puWfuuehgOS4iu+8ieatpOWAvOWPr+S7peS4uui0n+WAvFxyXG4gICAgICAgICAgICBibG9ja1NjYWxlOjUsICAgICAgICAgICAgICAgLy/mrKHlgLzmu6HlgLzkuLrlnZfnp43nsbvmgLvkuKrmlbAxMiw25Li655m+5YiG5LmLNTDljprvvIw1MOiWhO+8jOS4quaVsOWinuWKoO+8jOWOmuW6puavlOS+i+mZjeS9jiAgICBcclxuICAgICAgICAgICAgZGlzdGFuY2VNaW46MTAwLCAgICAgICAgICAgIC8v6JC95Zyw6IyD5Zu05Zyo55m+5YiG55m+5YaF5b+F5oiQ5Yqf77yM5Y+v5pS55Y+CXHJcbiAgICAgICAgICAgIGRpc3RhbmNlTWF4OjExMCwgICAgICAgICAgICAvL+iQveWcsOiMg+WbtOacgOWkp+WAvO+8jOW8seWkp+S6ju+8jOWIpOaWreiEmuWcqOWklumdolxyXG4gICAgICAgICAgICBsaWZlOjMsICAgICAgICAgICAgICAgICAgIC8v5Y+v5aSN5rS75qyh5pWwXHJcbiAgICAgICAgICAgIGxldmVsTWF4OjEsICAgICAgICAgICAgICAvL+acgOmrmOWxguaVsFxyXG4gICAgICAgICAgICBkaWZmaWN1bHR5TWF4OjEsICAgICAgICAgLy/mnIDpq5jpmr7luqbns7vmlbBcclxuICAgICAgICAgICAgc2NvcmU6MCwgICAgICAgICAgICAgICAgICAvL+aAu+WIhlxyXG4gICAgICAgICAgICBzdWNjZXNzOnRydWUsICAgICAgICAgICAgLy/mmK/lkKbmiJDlip9cclxuICAgICAgICAgICAgcHJvYmF0aW9uOnRydWUgICAgICAgICAgIC8v6K+V55So5pyfXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBDTElDS19pbml0KCl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEgPSBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6MSwgICAgICAgICAgICAgLy/pu5jorqTnsbvlnotcclxuICAgICAgICAgICAgbGV2ZWw6MCwgICAgICAgICAgICAvL+WxguaVsFxyXG4gICAgICAgICAgICBibG9jazowLCAgICAgICAgICAgIC8v5Z2X55qE5ZCN5a2XXHJcbiAgICAgICAgICAgIHBlcmNlbnQ6MCwgICAgICAgICAgLy/ot53nprvkuK3lv4Pnmb7liIbmr5RcclxuICAgICAgICAgICAgZ2V0U2NvcmU6MCwgICAgICAgICAvL+acrOi9ruiOt+W+l+WIhuaVsFxyXG4gICAgICAgICAgICB0b3RhbFNjb3JlOjAsICAgICAgIC8v5pys6L2u6L+H5ZCO5oC75YiG5pWwXHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHk6MCwgICAgICAgLy/mnKzova7pmr7luqbns7vmlbBcclxuICAgICAgICAgICAgaGVpZ2h0OmZhbHNlLCAgICAgICAvL+acrOi9ruaYr+WQpuWinumrmFxyXG4gICAgICAgICAgICBjb21ibzowLCAgICAgICAgICAgIC8v6L+e5Ye75pWwXHJcbiAgICAgICAgICAgIGFjY3VyYWN5OjAsICAgICAgICAgLy/nsr7lh4bluqYgKDAtMykgMCDlpLHotKXmjonokL1cclxuICAgICAgICAgICAganVtcHM6MCwgICAgICAgICAgICAvL+acrOi9rueOqeWutui3s+i3g+asoeaVsO+8jDHmiJbogIUyXHJcbiAgICAgICAgICAgIHRpbWVyOjAsICAgICAgICAgICAgLy/mnKzlsYDmuLjmiI/liankvZnml7bpl7RcclxuICAgICAgICAgICAgZmFrZTpmYWxzZSwgICAgICAgICAvL+aYr+WQpuacieW5s+WPsOW5suaJsOmhuVxyXG4gICAgICAgICAgICBmYWtlU3BlZWQ6MCwgICAgICAgIC8v5YGH5bmz5Y+w56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIHNwZWVkOjAsICAgICAgICAgICAgIC8v55yf5bmz5Y+w56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIHJvdW5kOjAsICAgICAgICAgICAgLy/lm57lkIjmlbBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgTEVWRUxfaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuTEVWRUxfSU5GTyA9IFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIHNwZWVkOjEsICAgICAgLy/pgJ/luqbliqDmiJDln7rnoYBcclxuICAgICAgICAgICAgICAgIGFkZFNwZWVkOjAuMDIsICAgLy/pgJ/luqbliqDmiJDns7vmlbBcclxuICAgICAgICAgICAgICAgIHJlZHVjZVNwZWVkOjAsICAvL+mAn+W6puWinuWKoOiMg+WbtFxyXG4gICAgICAgICAgICAgICAgamlhbnN1OjMsICAgLy/pgJ/luqblop7liqDnmoTojIPlm7TliqDlgLxcclxuICAgICAgICAgICAgICAgIHJvdW5kMToxMCwgIC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDIg5bCP5LqO6L+Z5Zue5ZCI5Li6M2RvdWJsZSBoaXRcclxuICAgICAgICAgICAgICAgIHJvdW5kMjoyMCwgIC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDFcclxuICAgICAgICAgICAgICAgIHJvdW5kMzozMCwgIC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDAuNVxyXG4gICAgICAgICAgICAgICAgZG91YmxlU3VjY2VzczozLCAgICAvL+i/nuWHu+asoeaVsChO5qyh5Lul5LiKLOW8gOWQr+W5suaJsOmhuSlcclxuICAgICAgICAgICAgICAgIGZhc3RTcGVlZDozLjUsICAvL+efruiWhOWdl+acgOW/q+mAn+W6plxyXG4gICAgICAgICAgICAgICAgc2xvd1NwZWVkOjQuNSwgIC8v5Y6a5Z2X5pyA5Z2X6YCf5bqmXHJcbiAgICAgICAgICAgICAgICBkb3VibGVIaXQ6MSwgICAgLy/ov57lh7vliqDmiJBcclxuICAgICAgICAgICAgICAgIGRvdWJsZUFkZDowLjA1LCAvL+avj+asoei/nuWHu+WQjiDov57lh7vliqDmiJBcclxuICAgICAgICAgICAgICAgIGRvdWJsZU1heDoyLCAgICAvL+i/nuWHu+WKoOaIkOacgOWkp+WAvFxyXG4gICAgICAgICAgICAgICAgbGF5ZXI6MTAwLCAgICAgIC8v5bGC57qn5Yqg5oiQXHJcbiAgICAgICAgICAgICAgICBsYXllckFkZDoyLCAgICAgIC8v5q+P5qyh5bGC57qn5o+Q5Y2H77yM5bGC57qn5Yqg5oiQ55qE5Yqg5oiQXHJcbiAgICAgICAgICAgICAgICBzdGFyMTowLjIsICAgICAgLy/ojrflvpfkuIDpopfmmJ/nmb7liIbmr5RcclxuICAgICAgICAgICAgICAgIHN0YXIyOjAuNCwgICAgICAvL+iOt+W+l+S4pOmil+aYn+eZvuWIhuavlFxyXG4gICAgICAgICAgICAgICAgc3RhcjM6MC44LCAgICAgICAvL+iOt+W+l+S4iemil+aYn+eZvuWIhuavlFxyXG4gICAgICAgICAgICAgICAgc2NvcmVNYXg6MTIwMDAwLCAvL+aaguaXtuaAu+WIhlxyXG4gICAgICAgICAgICAgICAgbGV2ZWxNYXg6MSwgICAgICAvL+acgOmrmOWxguaVsFxyXG4gICAgICAgICAgICAgICAgZGlmZmljdWx0eU1heDoxICAvL+acgOmrmOmavuW6puezu+aVsFxyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQkxPQ0tfSU5GT19pbml0KCl7XHJcbiAgICAgICAgdGhpcy5CTE9DS19JTkZPID0gW1xyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazFcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazJcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OSwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazNcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazRcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OSwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazVcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazZcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6NywgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazdcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazhcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazlcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazEwXCIsICAgICAgLy/lnZflkI3lrZdcclxuICAgICAgICAgICAgICAgIHNwZWVkOjEwLCAgICAgICAgICAgIC8v5q+P5Liq5Z2X55qE5Z+656GA6YCf5bqmXHJcbiAgICAgICAgICAgICAgICB0aGlja25lc3M6dHJ1ZSwgICAgLy/lvZPliY3lnZfnmoTljprluqZcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v6Zq+5bqm5o6n5Yi2XHJcbiAgICAgICAgICAgICAgICBuYW1lOlwiYmxvY2sxMVwiLCAgICAgIC8v5Z2X5ZCN5a2XXHJcbiAgICAgICAgICAgICAgICBzcGVlZDoxMCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOnRydWUsICAgIC8v5b2T5YmN5Z2X55qE5Y6a5bqmXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvL+mavuW6puaOp+WItlxyXG4gICAgICAgICAgICAgICAgbmFtZTpcImJsb2NrMTJcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazBcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTQsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczpmYWxzZSwgICAgLy/lvZPliY3lnZfnmoTljprluqZcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/AudioManager.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, '7574f5PdlZP4Kt9dxMgkIPZ', 'AudioManager');
|
||
// Script/tool/AudioManager.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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var AudioManager = /** @class */ (function (_super) {
|
||
__extends(AudioManager, _super);
|
||
function AudioManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
//背景音乐
|
||
_this.audioGameBgm0 = null;
|
||
//跳跃
|
||
_this.jump = null;
|
||
//落地上
|
||
_this.luodi = null;
|
||
//碰撞
|
||
_this.pz = null;
|
||
//落方块上
|
||
_this.luodui = null;
|
||
return _this;
|
||
}
|
||
AudioManager_1 = AudioManager;
|
||
AudioManager.prototype.ctor = function () {
|
||
this.mAudioMap = {};
|
||
/**
|
||
* 默认音量大小
|
||
* @type {number}
|
||
*/
|
||
this.bgMusicVolume = 0.1;
|
||
this.effectMusicVolume = 1;
|
||
this.mMusicSwitch = 1;
|
||
this.mEffectSwitch = 1;
|
||
};
|
||
AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) {
|
||
if (isBgMusic && !this.mMusicSwitch)
|
||
return;
|
||
if (!isBgMusic && !this.mEffectSwitch)
|
||
return;
|
||
var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume;
|
||
if (cc.sys.isBrowser) {
|
||
if (audioSource == this.brickSound) {
|
||
volume = 0.1;
|
||
}
|
||
volume = 1;
|
||
var context = cc.audioEngine.play(audioSource, loop, volume);
|
||
if (callback) {
|
||
cc.audioEngine.setFinishCallback(context, function () {
|
||
callback.call(this);
|
||
}.bind(this));
|
||
}
|
||
// cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src);
|
||
this.mAudioMap[audioSource] = context;
|
||
return audioSource;
|
||
}
|
||
else {
|
||
return audioSource;
|
||
}
|
||
};
|
||
AudioManager.prototype.save = function () {
|
||
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch);
|
||
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch);
|
||
};
|
||
AudioManager.prototype.onLoad = function () {
|
||
if (AudioManager_1._instance == null) {
|
||
AudioManager_1._instance = this;
|
||
cc.game.addPersistRootNode(this.node);
|
||
}
|
||
else {
|
||
this.node.destroy();
|
||
return;
|
||
}
|
||
this.reward = false;
|
||
this.finish = false;
|
||
this.rewardCount = 0;
|
||
this.ctor();
|
||
this.preload();
|
||
};
|
||
AudioManager.prototype.preload = function () {
|
||
if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) {
|
||
return;
|
||
}
|
||
var musics = [
|
||
this.audioGameBgm0,
|
||
];
|
||
musics.forEach(function (path) {
|
||
// var musicPath = wxDownloader.REMOTE_SERVER_ROOT + path;
|
||
// if (musicPath != wxDownloader.REMOTE_SERVER_ROOT && musicPath.endsWith('.mp3')) {
|
||
// cc.loader.load(musicPath, function(err, remoteUrl) {
|
||
// if (err) {
|
||
// cc.error(err.message || err);
|
||
// return;
|
||
// }
|
||
// });
|
||
// }
|
||
});
|
||
};
|
||
AudioManager.prototype.getAudioMusicSwitch = function () {
|
||
return this.mMusicSwitch;
|
||
};
|
||
AudioManager.prototype.getAudioEffectSwitch = function () {
|
||
return this.mEffectSwitch;
|
||
};
|
||
AudioManager.prototype.trunAudioSound = function (on) {
|
||
this.switchMusic(on);
|
||
this.switchEffect(on);
|
||
};
|
||
AudioManager.prototype.switchMusic = function (on) {
|
||
if (this.mMusicSwitch != (on ? 1 : 0)) {
|
||
this.mMusicSwitch = 1 - this.mMusicSwitch;
|
||
// this.save();
|
||
}
|
||
if (on) {
|
||
this.playMusicGame();
|
||
}
|
||
else {
|
||
this.stopMusic();
|
||
}
|
||
};
|
||
AudioManager.prototype.switchEffect = function (on) {
|
||
if (this.mEffectSwitch != (on ? 1 : 0)) {
|
||
this.mEffectSwitch = 1 - this.mEffectSwitch;
|
||
// this.save();
|
||
}
|
||
};
|
||
AudioManager.prototype.onHide = function () {
|
||
cc.audioEngine.pauseAll();
|
||
// if (CC_JSB) {
|
||
// } else {
|
||
// for (var key in this.mAudioMap) {
|
||
// if (key === this.mMusicKey) {
|
||
// this.mAudioMap[key].pause();
|
||
// } else {
|
||
// this.mAudioMap[key].stop();
|
||
// }
|
||
// }
|
||
// }
|
||
};
|
||
AudioManager.prototype.onShow = function () {
|
||
cc.audioEngine.resumeAll();
|
||
// if (CC_JSB) {
|
||
// } else {
|
||
// if (!this.mMusicSwitch) return;
|
||
// var context = this.mAudioMap[this.mMusicKey];
|
||
// if (context) {
|
||
// context.play();
|
||
// }
|
||
// }
|
||
};
|
||
AudioManager.prototype.playMusic = function (key, callback, loop) {
|
||
loop = typeof loop == 'undefined' || loop ? true : false;
|
||
this.stopMusic();
|
||
this.mMusicKey = this.play(key, loop, callback, true);
|
||
};
|
||
/**
|
||
* 游戏背景音乐
|
||
*/
|
||
AudioManager.prototype.playMusicGame = function () {
|
||
this.playMusic(this.audioGameBgm0, {}, true);
|
||
};
|
||
/**
|
||
* 停止背景音乐播放
|
||
*/
|
||
AudioManager.prototype.stopMusic = function () {
|
||
// cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey);
|
||
var context = this.mAudioMap[this.mMusicKey];
|
||
if (typeof (context) != 'undefined') {
|
||
if (cc.sys.isBrowser) {
|
||
cc.audioEngine.stop(context);
|
||
}
|
||
else {
|
||
context.stop();
|
||
}
|
||
cc.audioEngine.stop(context);
|
||
}
|
||
};
|
||
// 炸弹、火箭爆炸音效
|
||
AudioManager.prototype.playJump = function () {
|
||
return this.play(this.jump, false, null, this.mEffectSwitch);
|
||
};
|
||
//激光音效
|
||
AudioManager.prototype.playLuo = function () {
|
||
return this.play(this.luodui, false, null, this.mEffectSwitch);
|
||
};
|
||
//技能音效
|
||
AudioManager.prototype.playGround = function () {
|
||
return this.play(this.luodi, false, null, this.mEffectSwitch);
|
||
};
|
||
//技能音效
|
||
AudioManager.prototype.playPz = function () {
|
||
return this.play(this.pz, false, null, this.mEffectSwitch);
|
||
};
|
||
/*
|
||
* 游戏开始音效
|
||
*
|
||
*/
|
||
AudioManager.prototype.playGameStart = function () {
|
||
};
|
||
/*
|
||
* 失败的游戏结束
|
||
*/
|
||
AudioManager.prototype.playGameOver = function () {
|
||
};
|
||
/*
|
||
* 成功的游戏结束
|
||
*/
|
||
AudioManager.prototype.playGameResultFailed = function () {
|
||
};
|
||
/*
|
||
* 成功的游戏结束
|
||
*/
|
||
AudioManager.prototype.playGameResultSuccess = function () {
|
||
};
|
||
/**
|
||
* 报警的音效
|
||
*/
|
||
AudioManager.prototype.playWarning = function () {
|
||
};
|
||
/*
|
||
* 方块碰撞的声音
|
||
*/
|
||
AudioManager.prototype.playBrick = function () {
|
||
// return this.play(this.brickSound,false);
|
||
};
|
||
//方块破碎的声音
|
||
AudioManager.prototype.brickBoom = function () {
|
||
};
|
||
/**
|
||
* 按钮
|
||
*/
|
||
AudioManager.prototype.playAudioButton = function () {
|
||
};
|
||
AudioManager.prototype.playRandomMatch = function () {
|
||
this.playMusic(this.audioGameBgm0, {}, true);
|
||
};
|
||
AudioManager.prototype.playMatchFoundSound = function () {
|
||
this.stopMusic();
|
||
// return this.play(this.matchFoundSound, false);
|
||
};
|
||
var AudioManager_1;
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "audioGameBgm0", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "jump", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "luodi", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "pz", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "luodui", void 0);
|
||
AudioManager = AudioManager_1 = __decorate([
|
||
ccclass
|
||
], AudioManager);
|
||
return AudioManager;
|
||
}(cc.Component));
|
||
exports.default = AudioManager;
|
||
;
|
||
// export { AudioManager };
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUErUkM7UUE3UkcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUNuQyxJQUFJO1FBRUosVUFBSSxHQUFpQixJQUFJLENBQUM7UUFDMUIsS0FBSztRQUVMLFdBQUssR0FBaUIsSUFBSSxDQUFDO1FBQzNCLElBQUk7UUFFSixRQUFFLEdBQWlCLElBQUksQ0FBQztRQUN4QixNQUFNO1FBRU4sWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBK1FoQyxDQUFDO3FCQS9Sb0IsWUFBWTtJQStCN0IsMkJBQUksR0FBSjtRQUVJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCOzs7V0FHRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELDJCQUFJLEdBQUosVUFBTSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBQ3hDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDOUMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJ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K1JoQyxDQUFDO0FBRUYsMkJBQTJCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9NYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcblxuICAgIC8v6IOM5pmv6Z+z5LmQXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBhdWRpb0dhbWVCZ20wOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIC8v6Lez6LeDXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBqdW1wOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIC8v6JC95Zyw5LiKXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBsdW9kaTogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICAvL+eisOaSnlxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgcHo6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgLy/okL3mlrnlnZfkuIpcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGx1b2R1aTogY2MuQXVkaW9DbGlwID0gbnVsbDtcblxuICAgIG1BdWRpb01hcDoge307XG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xuICAgIGVmZmVjdE11c2ljVm9sdW1lOiBudW1iZXI7XG4gICAgbU11c2ljU3dpdGNoOiBudW1iZXI7XG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xuICAgIGJyaWNrU291bmQ6IGFueTtcbiAgICByZXdhcmQ6IGJvb2xlYW47XG4gICAgZmluaXNoOiBib29sZWFuO1xuICAgIHJld2FyZENvdW50OiBudW1iZXI7XG5cbiAgICBtTXVzaWNLZXk6IGFueTtcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XG5cbiAgICBjdG9yICgpIHtcbiAgICAgICAgXG4gICAgICAgIHRoaXMubUF1ZGlvTWFwID0ge307XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDpu5jorqTpn7Pph4/lpKflsI9cbiAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYmdNdXNpY1ZvbHVtZSA9IDAuMTtcbiAgICAgICAgdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZSA9IDE7XG5cbiAgICAgICAgdGhpcy5tTXVzaWNTd2l0Y2ggPSAxO1xuICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxO1xuICAgIH1cbiAgICBwbGF5IChhdWRpb1NvdXJjZSwgbG9vcCwgY2FsbGJhY2ssIGlzQmdNdXNpYykge1xuICAgICAgICBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xuICAgICAgICBpZiAoIWlzQmdNdXNpYyAmJiAhdGhpcy5tRWZmZWN0U3dpdGNoKSByZXR1cm47XG4gICAgICAgIHZhciB2b2x1bWUgPSBpc0JnTXVzaWMgPyB0aGlzLmJnTXVzaWNWb2x1bWUgOiB0aGlzLmVmZmVjdE11c2ljVm9sdW1lO1xuXG4gICAgICAgIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBpZihhdWRpb1NvdXJjZSA9PSB0aGlzLmJyaWNrU291bmQpe1xuICAgICAgICAgICAgICAgIHZvbHVtZSA9IDAuMTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB2b2x1bWUgPSAxO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGF1ZGlvU291cmNlLCBsb29wLCB2b2x1bWUpO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKXtcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygncGxheSBhdWRpbyBlZmZlY3QgaXNCcm93c2VyOiAnICsgY29udGV4dC5zcmMpO1xuXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2F2ZSAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfTXVzaWNfVm9sdW1lLCB0aGlzLm1NdXNpY1N3aXRjaCk7XG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfRWZmZWN0X1ZvbHVtZSwgdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG4gICAgb25Mb2FkKCkge1xuXG4gICAgICAgIGlmIChBdWRpb01hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXdhcmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5maW5pc2ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXdhcmRDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuY3RvcigpO1xuXG4gICAgICAgIHRoaXMucHJlbG9hZCgpO1xuICAgIH1cbiAgICBwcmVsb2FkICgpIHtcbiAgICAgICAgaWYgKCEoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHZhciBtdXNpY3MgPSBbXG4gICAgICAgICAgICB0aGlzLmF1ZGlvR2FtZUJnbTAsXG4gICAgICAgIF07XG4gICAgICAgIG11c2ljcy5mb3JFYWNoKGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgICAgIC8vIHZhciBtdXNpY1BhdGggPSB3eERvd25sb2FkZXIuUkVNT1RFX1NFUlZFUl9ST09UICsgcGF0aDtcbiAgICAgICAgICAgIC8vIGlmIChtdXNpY1BhdGggIT0gd3hEb3dubG9hZGVyLlJFTU9URV9TRVJWRVJfUk9PVCAmJiBtdXNpY1BhdGguZW5kc1dpdGgoJy5tcDMnKSkge1xuICAgICAgICAgICAgLy8gICAgIGNjLmxvYWRlci5sb2FkKG11c2ljUGF0aCwgZnVuY3Rpb24oZXJyLCByZW1vdGVVcmwpIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldEF1ZGlvTXVzaWNTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubU11c2ljU3dpdGNoO1xuXG4gICAgfVxuICAgIGdldEF1ZGlvRWZmZWN0U3dpdGNoKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLm1FZmZlY3RTd2l0Y2g7XG4gICAgfVxuICAgIHRydW5BdWRpb1NvdW5kKG9uKVxuICAgIHtcbiAgICAgICAgdGhpcy5zd2l0Y2hNdXNpYyhvbik7XG4gICAgICAgIHRoaXMuc3dpdGNoRWZmZWN0KG9uKVxuICAgIH1cbiAgICBzd2l0Y2hNdXNpYyAob24pIHtcbiAgICAgICAgaWYgKHRoaXMubU11c2ljU3dpdGNoICE9IChvbj8xOjApKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLm1NdXNpY1N3aXRjaCA9IDEtdGhpcy5tTXVzaWNTd2l0Y2g7XG4gICAgICAgICAgICAvLyB0aGlzLnNhdmUoKTtcbiAgICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGlmKG9uKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLnBsYXlNdXNpY0dhbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3dpdGNoRWZmZWN0IChvbikge1xuICAgICAgICBpZiAodGhpcy5tRWZmZWN0U3dpdGNoICE9IChvbj8xOjApKXtcbiAgICAgICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDEtdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG5cbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkhpZGUgKCkge1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5wYXVzZUFsbCgpO1xuXG4gICAgICAgIC8vIGlmIChDQ19KU0IpIHtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIGZvciAodmFyIGtleSBpbiB0aGlzLm1BdWRpb01hcCkge1xuICAgICAgICAvLyAgICAgICAgIGlmIChrZXkgPT09IHRoaXMubU11c2ljS2V5KSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2tleV0ucGF1c2UoKTtcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLm1BdWRpb01hcFtrZXldLnN0b3AoKTtcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBvblNob3cgKCkge1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVBbGwoKTtcblxuICAgICAgICAvLyBpZiAoQ0NfSlNCKSB7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICBpZiAoIXRoaXMubU11c2ljU3dpdGNoKSByZXR1cm47XG4gICAgICAgIC8vICAgICB2YXIgY29udGV4dCA9IHRoaXMubUF1ZGlvTWFwW3RoaXMubU11c2ljS2V5XTtcbiAgICAgICAgLy8gICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgIC8vICAgICAgICAgY29udGV4dC5wbGF5KCk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgcGxheU11c2ljIChrZXksIGNhbGxiYWNrLCBsb29wKSB7XG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgdGhpcy5tTXVzaWNLZXkgPSB0aGlzLnBsYXkoa2V5LCBsb29wLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOa4uOaIj+iDjOaZr+mfs+S5kFxuICAgICAqL1xuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLmF1ZGlvR2FtZUJnbTAse30sdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWBnOatouiDjOaZr+mfs+S5kOaSreaUvlxuICAgICAqL1xuICAgIHN0b3BNdXNpYyAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdzdG9wTXVzaWMgYXVkaW8gZWZmZWN0IHd4OiAnICsgdGhpcy5tTXVzaWNLZXkpO1xuXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YoY29udGV4dCkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcChjb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g54K45by544CB54Gr566t54iG54K46Z+z5pWIXG4gICAgcGxheUp1bXAgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuanVtcCwgZmFsc2UsbnVsbCx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbiAgICAvL+a/gOWFiemfs+aViFxuICAgIHBsYXlMdW8oKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmx1b2R1aSwgZmFsc2UsbnVsbCx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbiAgICAvL+aKgOiDvemfs+aViFxuICAgIHBsYXlHcm91bmQoKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmx1b2RpLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuXG4gICAgLy/mioDog73pn7PmlYhcbiAgICBwbGF5UHooKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLnB6LCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIC8qXG4gICAgICog5ri45oiP5byA5aeL6Z+z5pWIXG4gICAgICpcbiAgICAgKi9cbiAgICAgcGxheUdhbWVTdGFydCgpXG4gICAgIHtcbiAgICAgXG4gICAgIH1cbiAgICAgLypcbiAgICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXG4gICAgICAqL1xuICAgICBwbGF5R2FtZU92ZXIoKVxuICAgICB7XG4gICBcbiAgICAgfVxuICAgIC8qXG4gICAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICAgKi9cbiAgICBwbGF5R2FtZVJlc3VsdEZhaWxlZCgpXG4gICAge1xuXG4gICAgfVxuICAgIC8qXG4gICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXG4gICovXG4gICAgcGxheUdhbWVSZXN1bHRTdWNjZXNzKClcbiAgICB7XG5cbiAgICB9XG4gICAgLyoqXG4gICAgICog5oql6K2m55qE6Z+z5pWIXG4gICAgICovXG4gICAgcGxheVdhcm5pbmcoKVxuICAgIHtcblxuICAgIH1cblxuICAgIC8qXG4gICAgICog5pa55Z2X56Kw5pKe55qE5aOw6Z+zXG4gICAgICovXG4gICAgcGxheUJyaWNrKClcbiAgICB7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLnBsYXkodGhpcy5icmlja1NvdW5kLGZhbHNlKTtcbiAgICB9XG4gICAgLy/mlrnlnZfnoLTnoo7nmoTlo7Dpn7NcbiAgICBicmlja0Jvb20oKXtcbiAgIFxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmjInpkq5cbiAgICAgKi9cbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xuIFxuICAgIH1cblxuICAgIHBsYXlSYW5kb21NYXRjaCgpXG4gICAge1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLmF1ZGlvR2FtZUJnbTAse30sdHJ1ZSk7XG4gICAgfVxuICAgIHBsYXlNYXRjaEZvdW5kU291bmQoKVxuICAgIHtcbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMucGxheSh0aGlzLm1hdGNoRm91bmRTb3VuZCwgZmFsc2UpO1xuICAgIH1cblxufTtcblxuLy8gZXhwb3J0IHsgQXVkaW9NYW5hZ2VyIH07Il19
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/GameOver.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, '53de0OgdaRLNq9UFqvuJI/u', 'GameOver');
|
||
// Script/GameOver.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
};
|
||
NewClass.prototype.reStart = function () {
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
__decorate([
|
||
property(cc.Label)
|
||
], NewClass.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], NewClass.prototype, "text", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFCQztRQWxCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O1FBY3ZCLGlCQUFpQjtJQUNyQixDQUFDO0lBYkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO0lBRUEsQ0FBQztJQUVELDBCQUFPLEdBQVA7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBZkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBcUI1QjtJQUFELGVBQUM7Q0FyQkQsQUFxQkMsQ0FyQnFDLEVBQUUsQ0FBQyxTQUFTLEdBcUJqRDtrQkFyQm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlU3RhcnQoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/Block.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, '2bf4dXY+rJG37abLKiCEh7s', 'Block');
|
||
// Script/Block.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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var GameManager_1 = require("./GameManager");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
NewClass.prototype.onLoad = function () {
|
||
this.node.getComponent(cc.PolygonCollider).enabled = true;
|
||
this.speed = 10;
|
||
this.num = 0;
|
||
this.move = false;
|
||
if (this.node.name.length > 6) {
|
||
this.num = parseInt(this.node.name.substring(5, 7));
|
||
}
|
||
else
|
||
this.num = parseInt(this.node.name.substring(5, 6));
|
||
this.speed = GameData_1.default._instance.BLOCK_INFO[this.num - 1].speed;
|
||
this.init();
|
||
};
|
||
NewClass.prototype.start = function () {
|
||
};
|
||
NewClass.prototype.init = function () {
|
||
var _this = this;
|
||
this.getSpeed();
|
||
if (this.num > GameData_1.default._instance.GM_INFO.blockScale) {
|
||
if (this.speed < GameData_1.default._instance.LEVEL_INFO.slowSpeed)
|
||
this.speed = GameData_1.default._instance.LEVEL_INFO.slowSpeed;
|
||
}
|
||
else {
|
||
if (this.speed < GameData_1.default._instance.LEVEL_INFO.fastSpeed)
|
||
this.speed = GameData_1.default._instance.LEVEL_INFO.fastSpeed;
|
||
}
|
||
if (this.num != 13 && !GameData_1.default._instance.GM_INFO.probation) {
|
||
GameData_1.default._instance.CLICK_DATA.block = this.num;
|
||
GameData_1.default._instance.CLICK_DATA.speed = this.speed;
|
||
this.getDifficulty();
|
||
}
|
||
else {
|
||
this.node.getComponent(cc.PolygonCollider).enabled = false;
|
||
this.node.getComponent(cc.BoxCollider).enabled = false;
|
||
GameData_1.default._instance.CLICK_DATA.fakeSpeed = this.speed;
|
||
}
|
||
this.move = true;
|
||
this.tween =
|
||
cc.tween(this.node)
|
||
.to(this.speed, { x: -this.node.x })
|
||
.call(function () {
|
||
_this.move = false;
|
||
})
|
||
.start();
|
||
};
|
||
NewClass.prototype.getSpeed = function () {
|
||
//先加范围 厚的
|
||
var reduceSpeed = GameData_1.default._instance.LEVEL_INFO.reduceSpeed;
|
||
reduceSpeed = parseInt(Math.random() * reduceSpeed + "");
|
||
this.speed = this.speed - reduceSpeed / 10;
|
||
//最后乘以系数
|
||
this.speed = this.speed / GameData_1.default._instance.LEVEL_INFO.speed;
|
||
this.speed = parseInt(this.speed * 10 + "") / 10;
|
||
};
|
||
NewClass.prototype.getDifficulty = function () {
|
||
var difficulty1 = 0;
|
||
var sudu = Math.abs(this.speed - GameManager_1.default._instance.oldSpeed);
|
||
difficulty1 = (sudu / 10 + 1) * (11 - this.speed);
|
||
if (difficulty1 <= 1)
|
||
difficulty1 = 1;
|
||
else if (difficulty1 >= 7)
|
||
difficulty1 = 7;
|
||
var difficulty2 = 0;
|
||
if (this.node.width < 180)
|
||
difficulty2 = 0;
|
||
else if (this.node.width < 199)
|
||
difficulty2 = 0.5;
|
||
else
|
||
difficulty2 = 1;
|
||
var difficulty3 = 0;
|
||
if (GameManager_1.default._instance.interfere == true) {
|
||
difficulty3 = 1;
|
||
}
|
||
var difficulty4 = 0;
|
||
if (this.num > 6) {
|
||
difficulty4 = 1;
|
||
}
|
||
GameManager_1.default._instance.oldSpeed = this.speed;
|
||
this.difficulty = 0;
|
||
this.difficulty = difficulty1 + difficulty2 + difficulty3 + difficulty4;
|
||
this.difficulty = parseInt(this.difficulty * 10 + "");
|
||
GameData_1.default._instance.CLICK_DATA.difficulty = this.difficulty / 10;
|
||
if (GameData_1.default._instance.CLICK_DATA.difficulty > GameData_1.default._instance.GM_INFO.difficultyMax)
|
||
GameData_1.default._instance.GM_INFO.difficultyMax = GameData_1.default._instance.CLICK_DATA.difficulty;
|
||
};
|
||
NewClass.prototype.setScore = function (fen) {
|
||
var score = 0;
|
||
var difficulty = this.difficulty / 10;
|
||
var layer = GameData_1.default._instance.LEVEL_INFO.layer;
|
||
var doubleHit = GameData_1.default._instance.LEVEL_INFO.doubleHit;
|
||
score = parseInt(fen * difficulty * layer * doubleHit + "");
|
||
Notification_1.Notification.emit("addScore", score);
|
||
};
|
||
NewClass.prototype.hide = function () {
|
||
var _this = this;
|
||
cc.tween(this.node)
|
||
.to(0.2, { opacity: 0 })
|
||
.call(function () {
|
||
_this.node.active = false;
|
||
_this.node.removeFromParent();
|
||
_this.node = null;
|
||
})
|
||
.start();
|
||
};
|
||
NewClass.prototype.onCollisionEnter = function (other, self) {
|
||
if (GameManager_1.default._instance) {
|
||
if (GameManager_1.default._instance.over == true) {
|
||
return;
|
||
}
|
||
}
|
||
if (other.node.name == "Player") {
|
||
var max = self.name.length;
|
||
var ColliderName = other.name.substring(6, max);
|
||
if (this.move == true) {
|
||
if (this.tween) {
|
||
this.tween.stop();
|
||
}
|
||
}
|
||
}
|
||
};
|
||
NewClass.prototype.update = function (dt) {
|
||
};
|
||
__decorate([
|
||
property(cc.Label)
|
||
], NewClass.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], NewClass.prototype, "text", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsNkNBQXdDO0FBQ3hDLG9EQUFtRDtBQUM3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXdJQztRQXJJRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O0lBa0kzQixDQUFDO0lBM0hHLHdCQUF3QjtJQUV4Qix5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JEOztZQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FB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QUFDLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsV0FBVyxHQUFHLENBQUMsSUFBSSxHQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBRyxXQUFXLElBQUksQ0FBQztZQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDaEMsSUFBRyxXQUFXLElBQUksQ0FBQztZQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRztZQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDckMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHO1lBQUUsV0FBVyxHQUFHLEdBQUcsQ0FBQzs7WUFDNUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBRyxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFDO1lBQ3ZDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBQztZQUNaLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsR0FBRyxXQUFXLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxHQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUMsRUFBRSxDQUFDO1FBQzlELElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYTtZQUNsRixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDNUYsQ0FBQztJQUVELDJCQUFRLEdBQVIsVUFBUyxHQUFHO1FBQ1IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEMsSUFBSSxLQUFLLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNoRCxJQUFJLFNBQVMsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3hELEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVELDJCQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsdUJBQUksR0FBSjtRQUFBLGlCQVNDO1FBUkcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDbkIsSUFBSSxDQUFDO1lBQ0YsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLEtBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QixLQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUM7YUFDRCxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFRCxtQ0FBZ0IsR0FBaEIsVUFBaUIsS0FBa0IsRUFBRSxJQUFpQjtRQUNsRCxJQUFHLHFCQUFXLENBQUMsU0FBUyxFQUFDO1lBQ3JCLElBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDbEMsT0FBTzthQUNWO1NBQ0o7UUFDRCxJQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQztZQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDakIsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFDO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3JCO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtJQUNWLENBQUM7SUFwSUQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBd0k1QjtJQUFELGVBQUM7Q0F4SUQsQUF3SUMsQ0F4SXFDLEVBQUUsQ0FBQyxTQUFTLEdBd0lqRDtrQkF4SW9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHR3ZWVuOiBjYy5Ud2VlbjxjYy5Ob2RlPjtcclxuICAgIHNwZWVkOiBudW1iZXI7ICAvL+enu+WKqOmAn+W6pu+8jOaXtumXtOWPguaVsO+8jOS9jeenu+S4quWbuuWumlxyXG4gICAgbW92ZTogYm9vbGVhbjsgIC8v5piv5ZCm5Zyo56e75Yqo54q25oCB44CCXHJcbiAgICBudW06IG51bWJlcjtcclxuICAgIGRpZmZpY3VsdHk6IG51bWJlcjtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuUG9seWdvbkNvbGxpZGVyKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNwZWVkID0gMTA7XHJcbiAgICAgICAgdGhpcy5udW0gPSAwO1xyXG4gICAgICAgIHRoaXMubW92ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5uYW1lLmxlbmd0aCA+IDYpe1xyXG4gICAgICAgICAgICB0aGlzLm51bSA9IHBhcnNlSW50KHRoaXMubm9kZS5uYW1lLnN1YnN0cmluZyg1LDcpKVxyXG4gICAgICAgIH1lbHNlICB0aGlzLm51bSA9IHBhcnNlSW50KHRoaXMubm9kZS5uYW1lLnN1YnN0cmluZyg1LDYpKVxyXG4gICAgICAgIHRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuQkxPQ0tfSU5GT1t0aGlzLm51bS0xXS5zcGVlZDtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuZ2V0U3BlZWQoKTtcclxuICAgICAgICBpZih0aGlzLm51bSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrU2NhbGUpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnNwZWVkIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc2xvd1NwZWVkKXRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zbG93U3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZih0aGlzLnNwZWVkIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZmFzdFNwZWVkKXRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5mYXN0U3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMubnVtICE9IDEzICYmICFHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24pe1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5ibG9jayA9IHRoaXMubnVtO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5zcGVlZCA9IHRoaXMuc3BlZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGlmZmljdWx0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlBvbHlnb25Db2xsaWRlcikuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLkJveENvbGxpZGVyKS5lbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmZha2VTcGVlZCA9IHRoaXMuc3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW92ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50d2VlbiA9IFxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAudG8odGhpcy5zcGVlZCx7eDotdGhpcy5ub2RlLnh9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNwZWVkKCl7XHJcbiAgICAgICAgLy/lhYjliqDojIPlm7QgIOWOmueahFxyXG4gICAgICAgIGxldCByZWR1Y2VTcGVlZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJlZHVjZVNwZWVkO1xyXG4gICAgICAgIHJlZHVjZVNwZWVkID0gcGFyc2VJbnQoTWF0aC5yYW5kb20oKSpyZWR1Y2VTcGVlZCArIFwiXCIpO1xyXG4gICBcclxuICAgICAgICB0aGlzLnNwZWVkID0gdGhpcy5zcGVlZCAtIHJlZHVjZVNwZWVkLzEwO1xyXG4gICAgICAgIC8v5pyA5ZCO5LmY5Lul57O75pWwXHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHRoaXMuc3BlZWQvR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQ7XHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHBhcnNlSW50KHRoaXMuc3BlZWQqMTAgKyBcIlwiKS8xMDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGlmZmljdWx0eSgpe1xyXG4gICAgICAgIHZhciBkaWZmaWN1bHR5MSA9IDA7XHJcbiAgICAgICAgdmFyIHN1ZHUgPSBNYXRoLmFicyh0aGlzLnNwZWVkIC0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLm9sZFNwZWVkKTtcclxuICAgICAgICBkaWZmaWN1bHR5MSA9IChzdWR1LzEwKzEpKigxMS10aGlzLnNwZWVkKTtcclxuICAgICAgICBpZihkaWZmaWN1bHR5MSA8PSAxKSBkaWZmaWN1bHR5MSA9IDE7XHJcbiAgICAgICAgZWxzZSBpZihkaWZmaWN1bHR5MSA+PSA3KSBkaWZmaWN1bHR5MSA9IDc7XHJcbiAgICAgICAgdmFyIGRpZmZpY3VsdHkyID0gMDtcclxuICAgICAgICBpZih0aGlzLm5vZGUud2lkdGggPCAxODApIGRpZmZpY3VsdHkyID0gMDtcclxuICAgICAgICBlbHNlIGlmKHRoaXMubm9kZS53aWR0aCA8IDE5OSkgZGlmZmljdWx0eTIgPSAwLjU7XHJcbiAgICAgICAgZWxzZSBkaWZmaWN1bHR5MiA9IDE7XHJcbiAgICAgICAgdmFyIGRpZmZpY3VsdHkzID0gMDtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuaW50ZXJmZXJlID09IHRydWUpe1xyXG4gICAgICAgICAgICBkaWZmaWN1bHR5MyA9IDE7XHJcbiAgICAgICAgfSBcclxuICAgICAgICB2YXIgZGlmZmljdWx0eTQgPSAwO1xyXG4gICAgICAgIGlmKHRoaXMubnVtID4gNil7XHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHk0ID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLm9sZFNwZWVkID0gdGhpcy5zcGVlZDtcclxuICAgICAgICB0aGlzLmRpZmZpY3VsdHkgID0gMDtcclxuICAgICAgICB0aGlzLmRpZmZpY3VsdHkgPSBkaWZmaWN1bHR5MSArIGRpZmZpY3VsdHkyICsgZGlmZmljdWx0eTMgKyBkaWZmaWN1bHR5NDtcclxuICAgICAgICB0aGlzLmRpZmZpY3VsdHkgID0gcGFyc2VJbnQodGhpcy5kaWZmaWN1bHR5ICoxMCArIFwiXCIpO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmRpZmZpY3VsdHkgPSB0aGlzLmRpZmZpY3VsdHkvMTA7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZGlmZmljdWx0eSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmRpZmZpY3VsdHlNYXgpXHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmRpZmZpY3VsdHlNYXggPSBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5kaWZmaWN1bHR5O1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNjb3JlKGZlbil7XHJcbiAgICAgICAgbGV0IHNjb3JlID0gMDtcclxuICAgICAgICBsZXQgZGlmZmljdWx0eSA9IHRoaXMuZGlmZmljdWx0eSAvIDEwO1xyXG4gICAgICAgIGxldCBsYXllciA9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmxheWVyO1xyXG4gICAgICAgIGxldCBkb3VibGVIaXQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVIaXQ7XHJcbiAgICAgICAgc2NvcmUgPSBwYXJzZUludChmZW4gKiBkaWZmaWN1bHR5ICogbGF5ZXIgKiBkb3VibGVIaXQgKyBcIlwiKTtcclxuICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImFkZFNjb3JlXCIsc2NvcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGUoKXtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgLnRvKDAuMix7b3BhY2l0eTowfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUgPSBudWxsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db2xsaXNpb25FbnRlcihvdGhlcjogY2MuQ29sbGlkZXIsIHNlbGY6IGNjLkNvbGxpZGVyKSB7XHJcbiAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlKXtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLm92ZXIgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYob3RoZXIubm9kZS5uYW1lID09IFwiUGxheWVyXCIpe1xyXG4gICAgICAgICAgICBsZXQgbWF4ID0gc2VsZi5uYW1lLmxlbmd0aDtcclxuICAgICAgICAgICAgbGV0IENvbGxpZGVyTmFtZSA9IG90aGVyLm5hbWUuc3Vic3RyaW5nKDYsbWF4KTtcclxuICAgICAgICAgICAgaWYodGhpcy5tb3ZlID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50d2Vlbil7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50d2Vlbi5zdG9wKCk7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICB9XHJcbn1cclxuIl19
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/GameManager.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, 'b26a49RCSFPT4C+F7xAd62t', 'GameManager');
|
||
// Script/GameManager.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var GameTool_1 = require("./tool/GameTool");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var GameManager = /** @class */ (function (_super) {
|
||
__extends(GameManager, _super);
|
||
function GameManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.Camera = null;
|
||
_this.topUI = null;
|
||
_this.Player = null;
|
||
_this.Ground = null;
|
||
_this.Xin = null;
|
||
_this.time = null;
|
||
_this.GameOver = null;
|
||
_this.Tip = null;
|
||
_this.blockPrefab = [];
|
||
return _this;
|
||
}
|
||
GameManager_1 = GameManager;
|
||
// LIFE-CYCLE CALLBACKS:
|
||
GameManager.prototype.onLoad = function () {
|
||
// cc.game.setFrameRate(59.9);
|
||
// 示例使用
|
||
var manager = cc.director.getCollisionManager();
|
||
manager.enabled = true;
|
||
// manager.enabledDebugDraw = true;
|
||
GameManager_1._instance = this;
|
||
GameData_1.default._instance.GM_INFO.probation = false;
|
||
};
|
||
GameManager.prototype.onEnable = function () {
|
||
Notification_1.Notification.on("createBlock", this.createBlock, this);
|
||
Notification_1.Notification.on("addScore", this.addScore, this);
|
||
Notification_1.Notification.on("createCrackBlock", this.createCrackBlock, this);
|
||
Notification_1.Notification.on("showGround", this.showGround, this);
|
||
Notification_1.Notification.on("death", this.getDeath, this);
|
||
Notification_1.Notification.on("jump", this.jump, this);
|
||
Notification_1.Notification.on("setData", this.setData, this);
|
||
};
|
||
GameManager.prototype.onDestroy = function () {
|
||
Notification_1.Notification.off("createBlock", this.createBlock);
|
||
Notification_1.Notification.off("addScore", this.addScore);
|
||
Notification_1.Notification.off("createBlock", this.createCrackBlock);
|
||
Notification_1.Notification.off("death", this.getDeath);
|
||
Notification_1.Notification.off("jump", this.jump);
|
||
Notification_1.Notification.off("showGround", this.showGround);
|
||
Notification_1.Notification.off("setData", this.setData);
|
||
};
|
||
GameManager.prototype.init = function () {
|
||
this.drop = this.topUI.y - this.Camera.node.y;
|
||
this.score = 0;
|
||
this.oldSpeed = 10;
|
||
this.begin = true;
|
||
this.over = false;
|
||
this.interfere = false;
|
||
this.round = 0;
|
||
this.level = 0;
|
||
GameData_1.default._instance.GM_INFO.levelMax = 1;
|
||
GameData_1.default._instance.GM_INFO.difficultyMax = 1;
|
||
GameData_1.default._instance.GM_INFO.life = 3;
|
||
this.blockArray = [];
|
||
this.cameraMove = false;
|
||
this.countTime = 120;
|
||
this.topUI.getChildByName("xin1").active = true;
|
||
this.topUI.getChildByName("xin2").active = true;
|
||
this.topUI.getChildByName("xin3").active = true;
|
||
this.topUI.getChildByName("star1").active = false;
|
||
this.topUI.getChildByName("star2").active = false;
|
||
this.topUI.getChildByName("star3").active = false;
|
||
GameData_1.default._instance.LEVEL_init();
|
||
this.schedule(this.updateCountDownTime, 1);
|
||
};
|
||
GameManager.prototype.start = function () {
|
||
// this.node.on(cc.Node.EventType.TOUCH_START, this.jump, this);
|
||
this.fit();
|
||
this.init();
|
||
if (GameData_1.default._instance.GM_INFO.probation)
|
||
this.startGuide();
|
||
else
|
||
this.startGame();
|
||
};
|
||
//根据是否全面屏,做独立适配方面
|
||
GameManager.prototype.fit = function () {
|
||
this.node.getChildByName("bg2").y = -2167.675;
|
||
var jg = this.setFit();
|
||
if (!jg) {
|
||
this.node.getChildByName("bg2").y = -2100;
|
||
this.topUI.y = 660;
|
||
}
|
||
};
|
||
//判断全面屏
|
||
GameManager.prototype.getSetScreenResolutionFlag = function () {
|
||
var size = cc.winSize;
|
||
var width = size.width;
|
||
var height = size.height;
|
||
if ((height / width) > (16.2 / 9))
|
||
return false;
|
||
return true;
|
||
};
|
||
//判断全面屏适配
|
||
GameManager.prototype.setFit = function () {
|
||
var flag = this.getSetScreenResolutionFlag();
|
||
if (flag) {
|
||
}
|
||
else {
|
||
}
|
||
return flag;
|
||
};
|
||
GameManager.prototype.startGuide = function () {
|
||
//打开卷
|
||
var left = this.Tip.getChildByName("left");
|
||
var right = this.Tip.getChildByName("right");
|
||
var tip = this.Tip.getChildByName("tip");
|
||
left.width = 0;
|
||
right.width = 0;
|
||
tip.opacity = 0;
|
||
// cc.tween(left)
|
||
// .to(0.25,{width:348})
|
||
// .start();
|
||
// cc.tween(right)
|
||
// .to(0.25,{width:348})
|
||
// .start();
|
||
// cc.tween(tip)
|
||
// .delay(0.15)
|
||
// .to(0.15,{opacity:255})
|
||
// .start();
|
||
};
|
||
GameManager.prototype.showGround = function (tempY) {
|
||
var _this = this;
|
||
setTimeout(function () {
|
||
_this.Ground.active = true;
|
||
_this.Ground.y = tempY;
|
||
}, 500);
|
||
};
|
||
GameManager.prototype.jump = function () {
|
||
this.Player.getComponent("Player").jump();
|
||
};
|
||
GameManager.prototype.startGame = function () {
|
||
this.createBlock();
|
||
};
|
||
GameManager.prototype.addScore = function (score) {
|
||
var _this = this;
|
||
GameData_1.default._instance.CLICK_DATA.getScore = parseInt(score);
|
||
GameManager_1._instance.score += parseInt(score);
|
||
GameData_1.default._instance.CLICK_DATA.totalScore = GameManager_1._instance.score;
|
||
this.topUI.getChildByName("nandu").getComponent(cc.Label).string = GameManager_1._instance.score + "";
|
||
var scale = GameManager_1._instance.score / GameData_1.default._instance.LEVEL_INFO.scoreMax;
|
||
cc.tween(this.topUI.getChildByName("progress").getComponent(cc.Sprite))
|
||
.to(0.5, { fillRange: scale })
|
||
.call(function () {
|
||
if (scale >= GameData_1.default._instance.LEVEL_INFO.star1 && !_this.topUI.getChildByName("star1").active) {
|
||
_this.topUI.getChildByName("star1").active = true;
|
||
}
|
||
if (scale >= GameData_1.default._instance.LEVEL_INFO.star2 && !_this.topUI.getChildByName("star2").active) {
|
||
_this.topUI.getChildByName("star2").active = true;
|
||
}
|
||
if (scale >= GameData_1.default._instance.LEVEL_INFO.star3 && !_this.topUI.getChildByName("star3").active) {
|
||
_this.topUI.getChildByName("star3").active = true;
|
||
// GameData._instance.scoreMax = 150000;
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
GameManager.prototype.createBlock = function () {
|
||
if (this.over == false && this.begin == true) {
|
||
this.Ground.active = false;
|
||
var num = Math.floor(Math.random() * 12);
|
||
if (this.round <= 10 && num == 5) {
|
||
num = Math.floor(Math.random() * 6 + 6);
|
||
}
|
||
var block = cc.instantiate(this.blockPrefab[num]);
|
||
var height = this.Player.getComponent("Player").basicHeight + GameData_1.default._instance.GM_INFO.blockMin;
|
||
if (num > GameData_1.default._instance.GM_INFO.blockScale) {
|
||
height += block.height + GameData_1.default._instance.GM_INFO.blockMax;
|
||
GameData_1.default._instance.CLICK_DATA.height = true;
|
||
}
|
||
if (height >= 0 && this.cameraMove == false) {
|
||
this.countHeight = this.Player.getComponent("Player").basicHeight - this.Camera.node.y;
|
||
this.cameraMove = true;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 480 : -480, height));
|
||
block.parent = this.node.getChildByName("Block");
|
||
block.zIndex = 10;
|
||
this.round += 1;
|
||
this.level += 1;
|
||
if (this.round > GameData_1.default._instance.GM_INFO.levelMax)
|
||
GameData_1.default._instance.GM_INFO.levelMax = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.level = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.round = this.level;
|
||
GameData_1.default._instance.LEVEL_INFO.layer += GameData_1.default._instance.LEVEL_INFO.layerAdd;
|
||
GameData_1.default._instance.LEVEL_INFO.speed += GameData_1.default._instance.LEVEL_INFO.addSpeed;
|
||
if (GameData_1.default._instance.LEVEL_INFO.reduceSpeed <= 100)
|
||
GameData_1.default._instance.LEVEL_INFO.reduceSpeed += GameData_1.default._instance.LEVEL_INFO.jiansu;
|
||
if (this.round == GameData_1.default._instance.LEVEL_INFO.round1)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 2;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round2)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 1;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round3)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 0.5;
|
||
}
|
||
};
|
||
//虚假碎裂块
|
||
GameManager.prototype.createCrackBlock = function () {
|
||
this.interfere = true;
|
||
GameData_1.default._instance.CLICK_DATA.fake = this.interfere;
|
||
if (this.round > 1)
|
||
this.destroyBlock();
|
||
if (this.over == false && this.begin == true) {
|
||
var block = cc.instantiate(this.blockPrefab[12]);
|
||
var height = this.Player.getComponent("Player").basicHeight;
|
||
if (GameData_1.default._instance.CLICK_DATA.height == true) {
|
||
height += block.height / 2;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 480 : -480, height));
|
||
block.parent = this.node.getChildByName("CrackBlock");
|
||
block.zIndex = 1;
|
||
}
|
||
};
|
||
GameManager.prototype.destroyBlock = function () {
|
||
if (this.node) {
|
||
if (this.node.getChildByName("CrackBlock")) {
|
||
if (this.node.getChildByName("CrackBlock").children) {
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
block2[i].getComponent("Block").hide();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
GameManager.prototype.xinAction = function () {
|
||
var xin = this.topUI.getChildByName("xin1");
|
||
if (GameData_1.default._instance.GM_INFO.life == 2)
|
||
xin = this.topUI.getChildByName("xin3");
|
||
else if (GameData_1.default._instance.GM_INFO.life == 1)
|
||
xin = this.topUI.getChildByName("xin2");
|
||
cc.tween(xin)
|
||
.to(0.6, { scale: 1.6, opacity: 0 })
|
||
.call(function () {
|
||
xin.active = false;
|
||
})
|
||
.start();
|
||
};
|
||
//死亡
|
||
GameManager.prototype.getDeath = function () {
|
||
if (GameData_1.default._instance.GM_INFO.life > 0) {
|
||
GameData_1.default._instance.GM_INFO.life -= 1;
|
||
this.getDevive(1);
|
||
}
|
||
else {
|
||
GameData_1.default._instance.GM_INFO.life = -1;
|
||
this.getDevive(3);
|
||
}
|
||
};
|
||
//复活
|
||
GameManager.prototype.getDevive = function (time) {
|
||
var _this = this;
|
||
this.round = 0;
|
||
GameData_1.default._instance.LEVEL_init();
|
||
if (this.topUI.getChildByName("star3").active == true) {
|
||
// GameData._instance.LEVEL_INFO.scoreMax = 150000;
|
||
}
|
||
this.interfere = false;
|
||
GameData_1.default._instance.CLICK_DATA.fake = this.interfere;
|
||
var block = this.node.getChildByName("Block").children;
|
||
for (var i = 0; i < block.length; i++) {
|
||
if (block[i]) {
|
||
block[i].active = false;
|
||
}
|
||
}
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
block2[i].active = false;
|
||
}
|
||
}
|
||
// this.blockArray = [];
|
||
var actionTime = 1;
|
||
if (this.Player.y > 500) {
|
||
actionTime = (this.Player.y + 500) / 1000 * actionTime;
|
||
}
|
||
cc.tween(this.Player)
|
||
.to(actionTime, { y: -500 }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.Player.getComponent("Player").xinAction();
|
||
})
|
||
.delay(0.5)
|
||
.call(function () {
|
||
_this.xinAction();
|
||
_this.Player.getComponent("Player").init();
|
||
if (time > 1) {
|
||
_this.Xin.parent.active = true;
|
||
_this.Xin.getComponent(cc.Sprite).fillRange = 0;
|
||
cc.tween(_this.Xin.getComponent(cc.Sprite))
|
||
.to(time, { fillRange: 1 })
|
||
.delay(0.3)
|
||
.call(function () {
|
||
_this.Xin.parent.active = false;
|
||
})
|
||
.delay(0)
|
||
.call(function () {
|
||
_this.createBlock();
|
||
})
|
||
.start();
|
||
}
|
||
else {
|
||
setTimeout(function () {
|
||
_this.createBlock();
|
||
}, (time + 0.5) * 1000);
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
GameManager.prototype.setData = function () {
|
||
GameData_1.default._instance.CLICK_DATA.timer = this.countTime;
|
||
GameData_1.default._instance.CLICK_DATA.level = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.round = this.level;
|
||
//CLICK_DATA 数据处理完毕后调用上传接口 上传接口内CLICK_DATA不做改变
|
||
GameTool_1.GameTool.setGameData();
|
||
};
|
||
//获取matchId 用于上传每次点击数据里面记录id方便查询
|
||
GameManager.prototype.getMatchId = function () {
|
||
var matchId = cc.sys.localStorage.getItem("matchId");
|
||
if (matchId == "undifend" || matchId == null) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
if (this.containsNanana(matchId) == true) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
var char = parseInt(matchId[10]);
|
||
if (this.level == 1) {
|
||
char += 1;
|
||
}
|
||
matchId = matchId.slice(0, 10) + char + "";
|
||
GameData_1.default._instance.GM_INFO.matchId = matchId;
|
||
cc.sys.localStorage.setItem("matchId", matchId);
|
||
}
|
||
}
|
||
return matchId;
|
||
};
|
||
//检测matchId 如果有缓存以前的nanana数据清除
|
||
GameManager.prototype.containsNanana = function (str) {
|
||
return /na/i.test(str);
|
||
};
|
||
//重新设置MatchId
|
||
GameManager.prototype.setMatchId = function () {
|
||
// 定义包含可用字符的字符集
|
||
var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||
// 创建一个数组以保存随机字符
|
||
var uuidArray = [];
|
||
// 循环10次 生成10位的UUID
|
||
for (var i = 0; i < 10; i++) {
|
||
// 生成随机索引,范围是字符集的长度
|
||
var randomIndex = Math.floor(Math.random() * characters.length);
|
||
// 从字符集中获取随机字符
|
||
var randomChar = characters.charAt(randomIndex);
|
||
// 将字符添加到数组中
|
||
uuidArray.push(randomChar);
|
||
}
|
||
var data = uuidArray.join('') + 1 + "";
|
||
cc.sys.localStorage.setItem("matchNumber", 1);
|
||
cc.sys.localStorage.setItem("matchId", data);
|
||
GameData_1.default._instance.GM_INFO.matchId = data;
|
||
return data;
|
||
};
|
||
GameManager.prototype.updateCountDownTime = function () {
|
||
var _this = this;
|
||
if (this.countTime > 0) {
|
||
this.countTime -= 1;
|
||
this.time.string = this.getTimeMargin(this.countTime);
|
||
if (this.countTime < 5) {
|
||
cc.tween(this.time.node)
|
||
.to(0.25, { scale: 1.5, color: cc.color(255, 0, 0) })
|
||
.to(0.25, { scale: 1, color: cc.color(255, 255, 255) })
|
||
.start();
|
||
}
|
||
if (this.countTime <= 0) {
|
||
this.unschedule(this.updateCountDownTime);
|
||
this.begin = false;
|
||
this.over = true;
|
||
this.overStop();
|
||
this.setRank();
|
||
setTimeout(function () {
|
||
_this.overOpen();
|
||
}, 2000);
|
||
}
|
||
}
|
||
};
|
||
//停止所有动画
|
||
GameManager.prototype.overStop = function () {
|
||
if (this.Player.getComponent("Player").jumpAction)
|
||
this.Player.getComponent("Player").jumpAction.stop();
|
||
var block = this.node.getChildByName("Block").children;
|
||
for (var i = 0; i < block.length; i++) {
|
||
if (block[i]) {
|
||
if (block[i].getComponent("Block").tween)
|
||
block[i].getComponent("Block").tween.stop();
|
||
}
|
||
}
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
if (block2[i].getComponent("Block").tween)
|
||
block2[i].getComponent("Block").tween.stop();
|
||
}
|
||
}
|
||
};
|
||
GameManager.prototype.setRank = function () {
|
||
GameData_1.default._instance.GM_INFO.score = this.score;
|
||
GameTool_1.GameTool.setRank();
|
||
};
|
||
GameManager.prototype.overOpen = function () {
|
||
this.Player.active = false;
|
||
var block = this.node.getChildByName("Block").children;
|
||
for (var i = 0; i < block.length; i++) {
|
||
if (block[i]) {
|
||
block[i].active = false;
|
||
}
|
||
}
|
||
this.destroyBlock();
|
||
this.GameOver.active = true;
|
||
this.GameOver.getChildByName("score").getComponent(cc.Label).string = this.score + "";
|
||
this.GameOver.getChildByName("level").getComponent(cc.Label).string =
|
||
GameData_1.default._instance.GM_INFO.levelMax + "";
|
||
this.GameOver.getChildByName("difficulty").getComponent(cc.Label).string =
|
||
GameData_1.default._instance.GM_INFO.difficultyMax + "";
|
||
};
|
||
GameManager.prototype.backLoad = function () {
|
||
cc.director.loadScene("LoadScene");
|
||
};
|
||
GameManager.prototype.again = function () {
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
GameManager.prototype.openRank = function () {
|
||
cc.director.loadScene("RankScene");
|
||
};
|
||
//时间格式转换
|
||
GameManager.prototype.getTimeMargin = function (second) {
|
||
var total = 0;
|
||
total = second;
|
||
var hour = 0;
|
||
hour = parseInt((total / 3600) + ""); //计算整数小时数
|
||
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
|
||
var min = parseInt((afterHour / 60) + ""); //计算整数分
|
||
var m = "" + min;
|
||
if (min < 10)
|
||
m = "0" + min;
|
||
var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
|
||
var miao = afterMin + "";
|
||
if (afterMin < 10)
|
||
miao = "0" + afterMin;
|
||
return m + ':' + miao;
|
||
};
|
||
GameManager.prototype.update = function (dt) {
|
||
if (this.cameraMove == true && this.over == false) {
|
||
this.Camera.node.y = this.Player.y - this.countHeight;
|
||
if (this.Camera.node.y <= 0)
|
||
this.Camera.node.y = 0;
|
||
this.topUI.y = this.Camera.node.y + this.drop;
|
||
}
|
||
};
|
||
var GameManager_1;
|
||
__decorate([
|
||
property(cc.Camera)
|
||
], GameManager.prototype, "Camera", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "topUI", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Player", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Ground", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Xin", void 0);
|
||
__decorate([
|
||
property(cc.Label)
|
||
], GameManager.prototype, "time", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "GameOver", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Tip", void 0);
|
||
__decorate([
|
||
property([cc.Prefab])
|
||
], GameManager.prototype, "blockPrefab", void 0);
|
||
GameManager = GameManager_1 = __decorate([
|
||
ccclass
|
||
], GameManager);
|
||
return GameManager;
|
||
}(cc.Component));
|
||
exports.default = GameManager;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRix1Q0FBa0M7QUFFbEMsNENBQTJDO0FBQzNDLG9EQUFtRDtBQUU3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUF5QywrQkFBWTtJQUFyRDtRQUFBLHFFQXdmQztRQXJmRyxZQUFNLEdBQWMsSUFBSSxDQUFDO1FBR3pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFHcEIsVUFBSSxHQUFhLElBQUksQ0FBQztRQUd0QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBR3pCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFHcEIsaUJBQVcsR0FBc0IsRUFBRSxDQUFDOztJQTZkeEMsQ0FBQztvQkF4Zm9CLFdBQVc7SUE2QzVCLHdCQUF3QjtJQUl4Qiw0QkFBTSxHQUFOO1FBQ0ksOEJBQThCO1FBQzlCLE9BQU87UUFDUCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDdkIsbUNBQW1DO1FBQ25DLGFBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzdCLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2pELENBQUM7SUFFUyw4QkFBUSxHQUFsQjtRQUNJLDJCQUFZLENBQUMsRUFB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QUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBd2YvQjtJQUFELGtCQUFDO0NBeGZELEFBd2ZDLENBeGZ3QyxFQUFFLENBQUMsU0FBUyxHQXdmcEQ7a0JBeGZvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4vR2FtZURhdGEnO1xyXG5pbXBvcnQgSHR0cFV0aWwgZnJvbSAnLi9jcnlwdG8vSHR0cFV0aWwnO1xyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gJy4vdG9vbC9HYW1lVG9vbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYW1lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkNhbWVyYSlcclxuICAgIENhbWVyYTogY2MuQ2FtZXJhID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIHRvcFVJOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFBsYXllcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBHcm91bmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgWGluOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0aW1lOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBHYW1lT3ZlcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBUaXA6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShbY2MuUHJlZmFiXSlcclxuICAgIGJsb2NrUHJlZmFiIDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIFxyXG5cclxuICAgIHJvdW5kOiBudW1iZXI7ICAgICAgLy/lm57lkIhcclxuICAgIGxldmVsOiBudW1iZXI7ICAgICAgLy/lm57lkIhcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIGJsb2NrQXJyYXk6IGFueTtcclxuICAgIGNhbWVyYU1vdmU6Ym9vbGVhblxyXG4gICAgY291bnRIZWlnaHQ6bnVtYmVyO1xyXG4gICAgY291bnRUaW1lOiBudW1iZXI7XHJcbiAgICBvdmVyOiBib29sZWFuO1xyXG4gICAgYmVnaW46IGJvb2xlYW47XHJcbiAgICBpbnRlcmZlcmU6IGJvb2xlYW47XHJcbiAgICBvbGRTcGVlZDogbnVtYmVyOyAgICAgIC8v5LiK5LiA5Zue5ZCI6YCf5bqmXHJcbiAgICBzY29yZTogbnVtYmVyOyAgICAgIC8v5oC75b6X5YiGXHJcbiAgICBkaWZmaWN1bHR5TWF4Om51bWJlcjsgLy/mnIDpq5jpmr7luqbns7vmlbBcclxuICAgIGRyb3A6IG51bWJlcjsgICAgICAvL+aRhOWDj+acuuiQveW3rlxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIC8vIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDU5LjkpO1xyXG4gICAgICAgIC8vIOekuuS+i+S9v+eUqFxyXG4gICAgICAgIHZhciBtYW5hZ2VyID0gY2MuZGlyZWN0b3IuZ2V0Q29sbGlzaW9uTWFuYWdlcigpO1xyXG4gICAgICAgIG1hbmFnZXIuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gbWFuYWdlci5lbmFibGVkRGVidWdEcmF3ID0gdHJ1ZTtcclxuICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnByb2JhdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkVuYWJsZSgpOiB2b2lkIHtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJjcmVhdGVCbG9ja1wiLHRoaXMuY3JlYXRlQmxvY2ssdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwiYWRkU2NvcmVcIix0aGlzLmFkZFNjb3JlLHRoaXMpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vbihcImNyZWF0ZUNyYWNrQmxvY2tcIix0aGlzLmNyZWF0ZUNyYWNrQmxvY2ssdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwic2hvd0dyb3VuZFwiLHRoaXMuc2hvd0dyb3VuZCx0aGlzKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJkZWF0aFwiLHRoaXMuZ2V0RGVhdGgsdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwianVtcFwiLHRoaXMuanVtcCx0aGlzKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJzZXREYXRhXCIsdGhpcy5zZXREYXRhLHRoaXMpO1xyXG4gICAgICAgIFxyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJjcmVhdGVCbG9ja1wiLHRoaXMuY3JlYXRlQmxvY2spO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJhZGRTY29yZVwiLHRoaXMuYWRkU2NvcmUpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJjcmVhdGVCbG9ja1wiLHRoaXMuY3JlYXRlQ3JhY2tCbG9jayk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9mZihcImRlYXRoXCIsdGhpcy5nZXREZWF0aCk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9mZihcImp1bXBcIix0aGlzLmp1bXApO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJzaG93R3JvdW5kXCIsdGhpcy5zaG93R3JvdW5kKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwic2V0RGF0YVwiLHRoaXMuc2V0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuZHJvcCA9IHRoaXMudG9wVUkueSAtIHRoaXMuQ2FtZXJhLm5vZGUueTtcclxuICAgICAgICB0aGlzLnNjb3JlID0gMDtcclxuICAgICAgICB0aGlzLm9sZFNwZWVkID0gMTA7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vdmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbnRlcmZlcmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdW5kID0gMDtcclxuICAgICAgICB0aGlzLmxldmVsID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5sZXZlbE1heCA9IDE7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlmZmljdWx0eU1heCA9IDE7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA9IDM7XHJcbiAgICAgICAgdGhpcy5ibG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5jYW1lcmFNb3ZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb3VudFRpbWUgPSAxMjA7XHJcbiAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInhpbjFcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwieGluMlwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJ4aW4zXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInN0YXIxXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwic3RhcjNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX2luaXQoKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlQ291bnREb3duVGltZSwxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLmp1bXAsIHRoaXMpO1xyXG4gICAgICAgIHRoaXMuZml0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ucHJvYmF0aW9uKSB0aGlzLnN0YXJ0R3VpZGUoKTtcclxuICAgICAgICBlbHNlIHRoaXMuc3RhcnRHYW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/moLnmja7mmK/lkKblhajpnaLlsY/vvIzlgZrni6znq4vpgILphY3mlrnpnaJcclxuICAgIGZpdCgpe1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImJnMlwiKS55ID0gLTIxNjcuNjc1O1xyXG4gICAgICAgIHZhciBqZyA9IHRoaXMuc2V0Rml0KCk7XHJcbiAgICAgICAgaWYoIWpnKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmcyXCIpLnkgPSAtMjEwMDtcclxuICAgICAgICAgICAgdGhpcy50b3BVSS55ID0gNjYwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreWFqOmdouWxj1xyXG4gICAgZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcgKCkge1xyXG4gICAgICAgIGxldCBzaXplID0gY2Mud2luU2l6ZTtcclxuICAgICAgICBsZXQgd2lkdGggPSBzaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBpZiAoKGhlaWdodCAvIHdpZHRoKSA+ICgxNi4yIC8gOSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8v5Yik5pat5YWo6Z2i5bGP6YCC6YWNXHJcbiAgICBzZXRGaXQgKCkge1xyXG4gICAgICAgIGxldCBmbGFnID0gdGhpcy5nZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZygpO1xyXG4gICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZsYWc7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHdWlkZSgpe1xyXG4gICAgICAgIC8v5omT5byA5Y23XHJcbiAgICAgICAgbGV0IGxlZnQgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcImxlZnRcIik7XHJcbiAgICAgICAgbGV0IHJpZ2h0ID0gdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJyaWdodFwiKTtcclxuICAgICAgICBsZXQgdGlwID0gdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIik7XHJcbiAgICAgICAgbGVmdC53aWR0aCA9IDA7IHJpZ2h0LndpZHRoID0gMDt0aXAub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgLy8gY2MudHdlZW4obGVmdClcclxuICAgICAgICAvLyAudG8oMC4yNSx7d2lkdGg6MzQ4fSlcclxuICAgICAgICAvLyAuc3RhcnQoKTtcclxuICAgICAgICAvLyBjYy50d2VlbihyaWdodClcclxuICAgICAgICAvLyAudG8oMC4yNSx7d2lkdGg6MzQ4fSlcclxuICAgICAgICAvLyAuc3RhcnQoKTtcclxuICAgICAgICAvLyBjYy50d2Vlbih0aXApXHJcbiAgICAgICAgLy8gLmRlbGF5KDAuMTUpXHJcbiAgICAgICAgLy8gLnRvKDAuMTUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAvLyAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93R3JvdW5kKHRlbXBZKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Hcm91bmQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5Hcm91bmQueSA9IHRlbXBZO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcblxyXG4gICAganVtcCgpe1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCl7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlQmxvY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRTY29yZShzY29yZSl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZ2V0U2NvcmUgPSBwYXJzZUludChzY29yZSk7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLnNjb3JlICs9IHBhcnNlSW50KHNjb3JlKTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS50b3RhbFNjb3JlID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLnNjb3JlO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJuYW5kdVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyAgPSBHYW1lTWFuYWdlci5faW5zdGFuY2Uuc2NvcmUgKyBcIlwiO1xyXG4gICAgICAgIHZhciBzY2FsZSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zY29yZS9HYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zY29yZU1heDtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwicHJvZ3Jlc3NcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkpXHJcbiAgICAgICAgLnRvKDAuNSx7ZmlsbFJhbmdlOnNjYWxlfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgaWYoc2NhbGUgPj0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3RhcjEgJiYgIXRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMVwiKS5hY3RpdmUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInN0YXIxXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoc2NhbGUgPj0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3RhcjIgJiYgIXRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMlwiKS5hY3RpdmUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInN0YXIyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoc2NhbGUgPj0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3RhcjMgJiYgIXRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyM1wiKS5hY3RpdmUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInN0YXIzXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyBHYW1lRGF0YS5faW5zdGFuY2Uuc2NvcmVNYXggPSAxNTAwMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUJsb2NrKCl7XHJcbiAgICAgICAgaWYodGhpcy5vdmVyID09IGZhbHNlICYmIHRoaXMuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRoaXMuR3JvdW5kLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEyKTtcclxuICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA8PSAxMCAmJiBudW0gPT0gNSl7XHJcbiAgICAgICAgICAgICAgICBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNiArIDYpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLmJsb2NrUHJlZmFiW251bV0pO1xyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmJhc2ljSGVpZ2h0ICsgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYmxvY2tNaW47XHJcbiAgICAgICAgICAgIGlmKG51bSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrU2NhbGUpe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ICs9IGJsb2NrLmhlaWdodCArIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrTWF4O1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuaGVpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgIGlmKGhlaWdodCA+PSAwICYmIHRoaXMuY2FtZXJhTW92ZSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50SGVpZ2h0ID0gdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmJhc2ljSGVpZ2h0IC0gdGhpcy5DYW1lcmEubm9kZS55O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW1lcmFNb3ZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52Mih0aGlzLnJvdW5kJTI9PTA/NDgwOi00ODAsaGVpZ2h0KSk7XHJcbiAgICAgICAgICAgIGJsb2NrLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICBibG9jay56SW5kZXggPSAxMDtcclxuICAgICAgICAgICAgdGhpcy5yb3VuZCArPSAxO1xyXG4gICAgICAgICAgICB0aGlzLmxldmVsICs9IDE7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucm91bmQgPiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5sZXZlbE1heCkgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGV2ZWxNYXggPSB0aGlzLnJvdW5kO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5sZXZlbCA9IHRoaXMucm91bmQ7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLnJvdW5kID0gdGhpcy5sZXZlbDtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ubGF5ZXIgKz0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ubGF5ZXJBZGQ7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkICs9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmFkZFNwZWVkO1xyXG5cclxuICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucmVkdWNlU3BlZWQgPD0gMTAwKVxyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucmVkdWNlU3BlZWQgKz0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uamlhbnN1O1xyXG4gICAgICAgICAgICBpZih0aGlzLnJvdW5kID09IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJvdW5kMSkgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uamlhbnN1ID0gMjtcclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnJvdW5kID09IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJvdW5kMikgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uamlhbnN1ID0gMTtcclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnJvdW5kID09IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJvdW5kMykgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uamlhbnN1ID0gMC41O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+iZmuWBh+eijuijguWdl1xyXG4gICAgY3JlYXRlQ3JhY2tCbG9jaygpe1xyXG4gICAgICAgIHRoaXMuaW50ZXJmZXJlID0gdHJ1ZTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5mYWtlID0gdGhpcy5pbnRlcmZlcmU7XHJcbiAgICAgICAgaWYodGhpcy5yb3VuZCA+IDEpIHRoaXMuZGVzdHJveUJsb2NrKCk7XHJcbiAgICAgICAgaWYodGhpcy5vdmVyID09IGZhbHNlICYmIHRoaXMuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHZhciBibG9jayA9IGNjLmluc3RhbnRpYXRlKHRoaXMuYmxvY2tQcmVmYWJbMTJdKTtcclxuICAgICAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5iYXNpY0hlaWdodDtcclxuICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuaGVpZ2h0ID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ICs9IGJsb2NrLmhlaWdodC8yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKGNjLnYyKHRoaXMucm91bmQlMj09MD80ODA6LTQ4MCxoZWlnaHQpKTtcclxuICAgICAgICAgICAgYmxvY2sucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQ3JhY2tCbG9ja1wiKTtcclxuICAgICAgICAgICAgYmxvY2suekluZGV4ID0gMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGRlc3Ryb3lCbG9jaygpe1xyXG4gICAgICAgIGlmKHRoaXMubm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQ3JhY2tCbG9ja1wiKS5jaGlsZHJlbil7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrMiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2syLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2syW2ldKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrMltpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgeGluQWN0aW9uKCl7XHJcbiAgICAgICAgbGV0IHhpbiAgPSAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInhpbjFcIik7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA9PSAyKSB4aW4gPSB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwieGluM1wiKTtcclxuICAgICAgICBlbHNlIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxpZmUgPT0gMSkgIHhpbiA9IHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJ4aW4yXCIpO1xyXG4gICAgICAgIGNjLnR3ZWVuKHhpbilcclxuICAgICAgICAudG8oMC42LHtzY2FsZToxLjYsb3BhY2l0eTowfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgeGluLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcbiAgICAvL+atu+S6oVxyXG4gICAgZ2V0RGVhdGgoKXtcclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5saWZlID4gMCl7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxpZmUgLT0gMTtcclxuICAgICAgICAgICAgdGhpcy5nZXREZXZpdmUoMSk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxpZmUgPSAtMTtcclxuICAgICAgICAgICAgdGhpcy5nZXREZXZpdmUoMyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/lpI3mtLtcclxuICAgIGdldERldml2ZSh0aW1lKXtcclxuICAgICAgICB0aGlzLnJvdW5kID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfaW5pdCgpO1xyXG4gICAgICAgIGlmKHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyM1wiKS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIC8vIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNjb3JlTWF4ID0gMTUwMDAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmludGVyZmVyZSA9IGZhbHNlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmZha2UgPSB0aGlzLmludGVyZmVyZTtcclxuICAgICAgICB2YXIgYmxvY2sgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlbjtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTxibG9jay5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKGJsb2NrW2ldKXtcclxuICAgICAgICAgICAgICAgIGJsb2NrW2ldLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBibG9jazIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJDcmFja0Jsb2NrXCIpLmNoaWxkcmVuO1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGJsb2NrMi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKGJsb2NrMltpXSl7XHJcbiAgICAgICAgICAgICAgICBibG9jazJbaV0uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5ibG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgbGV0IGFjdGlvblRpbWUgPSAxO1xyXG4gICAgICAgIGlmKHRoaXMuUGxheWVyLnkgPiA1MDApe1xyXG4gICAgICAgICAgICBhY3Rpb25UaW1lID0gKHRoaXMuUGxheWVyLnkgKyA1MDApLzEwMDAqYWN0aW9uVGltZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKGFjdGlvblRpbWUse3k6LTUwMH0se2Vhc2luZzonY3ViaWNJbid9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS54aW5BY3Rpb24oKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMueGluQWN0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5pbml0KCk7XHJcbiAgICAgICAgICAgIGlmKHRpbWUgPiAxKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuWGluLnBhcmVudC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5YaW4uZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuZmlsbFJhbmdlID0gMDtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuWGluLmdldENvbXBvbmVudChjYy5TcHJpdGUpKVxyXG4gICAgICAgICAgICAgICAgLnRvKHRpbWUse2ZpbGxSYW5nZToxfSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjMpXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlhpbi5wYXJlbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmRlbGF5KDApXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJsb2NrKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIH0sICh0aW1lKzAuNSkqMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGEoKXtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS50aW1lciA9IHRoaXMuY291bnRUaW1lO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmxldmVsID0gdGhpcy5yb3VuZDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5yb3VuZCA9IHRoaXMubGV2ZWw7XHJcbiAgICAgICAgLy9DTElDS19EQVRBIOaVsOaNruWkhOeQhuWujOavleWQjuiwg+eUqOS4iuS8oOaOpeWPoyAg5LiK5Lyg5o6l5Y+j5YaFQ0xJQ0tfREFUQeS4jeWBmuaUueWPmFxyXG4gICAgICAgIEdhbWVUb29sLnNldEdhbWVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/ojrflj5ZtYXRjaElkICDnlKjkuo7kuIrkvKDmr4/mrKHngrnlh7vmlbDmja7ph4zpnaLorrDlvZVpZOaWueS+v+afpeivolxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciA9IHBhcnNlSW50KG1hdGNoSWRbMTBdKTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubGV2ZWwgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhciArPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWF0Y2hJZCAgPSBtYXRjaElkLnNsaWNlKDAsIDEwKSArIGNoYXIgKyBcIlwiO1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWF0Y2hJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaElkXCIsbWF0Y2hJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9XHJcbiAgICAvL+ajgOa1i21hdGNoSWQg5aaC5p6c5pyJ57yT5a2Y5Lul5YmN55qEbmFuYW5h5pWw5o2u5riF6ZmkXHJcbiAgICBjb250YWluc05hbmFuYShzdHIpIHtcclxuICAgICAgICByZXR1cm4gL25hL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG4gICAgLy/ph43mlrDorr7nva5NYXRjaElkXHJcbiAgICBzZXRNYXRjaElkICgpe1xyXG4gICAgICAgIC8vIOWumuS5ieWMheWQq+WPr+eUqOWtl+espueahOWtl+espumbhlxyXG4gICAgICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODknO1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4quaVsOe7hOS7peS/neWtmOmaj+acuuWtl+esplxyXG4gICAgICAgIGNvbnN0IHV1aWRBcnJheSA9IFtdO1xyXG4gICAgICAgIC8vIOW+queOrzEw5qyhIOeUn+aIkDEw5L2N55qEVVVJRFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6ZqP5py657Si5byV77yM6IyD5Zu05piv5a2X56ym6ZuG55qE6ZW/5bqmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyDku47lrZfnrKbpm4bkuK3ojrflj5bpmo/mnLrlrZfnrKZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tQ2hhciA9IGNoYXJhY3RlcnMuY2hhckF0KHJhbmRvbUluZGV4KTtcclxuICAgICAgICAgICAgLy8g5bCG5a2X56ym5re75Yqg5Yiw5pWw57uE5LitXHJcbiAgICAgICAgICAgIHV1aWRBcnJheS5wdXNoKHJhbmRvbUNoYXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YSA9ICB1dWlkQXJyYXkuam9pbignJykgKyAxICsgXCJcIjtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaE51bWJlclwiLDEpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixkYXRhKTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDb3VudERvd25UaW1lICgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb3VudFRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRUaW1lIC09IDE7XHJcbiAgICAgICAgICAgIHRoaXMudGltZS5zdHJpbmcgPSB0aGlzLmdldFRpbWVNYXJnaW4odGhpcy5jb3VudFRpbWUpO1xyXG4gICAgICAgICAgICBpZih0aGlzLmNvdW50VGltZSA8IDUpe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy50aW1lLm5vZGUpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yNSx7c2NhbGU6MS41LGNvbG9yOmNjLmNvbG9yKDI1NSwwLDApfSlcclxuICAgICAgICAgICAgICAgIC50bygwLjI1LHtzY2FsZToxLGNvbG9yOmNjLmNvbG9yKDI1NSwyNTUsMjU1KX0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY291bnRUaW1lIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlQ291bnREb3duVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJlZ2luID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyU3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSYW5rKCk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5YGc5q2i5omA5pyJ5Yqo55S7XHJcbiAgICBvdmVyU3RvcCgpe1xyXG4gICAgICAgIGlmKHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wQWN0aW9uKVxyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuanVtcEFjdGlvbi5zdG9wKCk7XHJcbiAgICAgICAgdmFyIGJsb2NrID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmxvY2tcIikuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2subGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZihibG9ja1tpXSl7XHJcbiAgICAgICAgICAgICAgICBpZihibG9ja1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50d2VlbilcclxuICAgICAgICAgICAgICAgICAgICBibG9ja1tpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50d2Vlbi5zdG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGJsb2NrMiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2syLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoYmxvY2syW2ldKXtcclxuICAgICAgICAgICAgICAgIGlmKGJsb2NrMltpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50d2VlbilcclxuICAgICAgICAgICAgICAgICAgICBibG9jazJbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHdlZW4uc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldFJhbmsoKXtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5zY29yZSA9IHRoaXMuc2NvcmU7XHJcbiAgICAgICAgR2FtZVRvb2wuc2V0UmFuaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG92ZXJPcGVuKCl7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIGJsb2NrID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmxvY2tcIikuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2subGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZihibG9ja1tpXSl7XHJcbiAgICAgICAgICAgICAgICBibG9ja1tpXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRlc3Ryb3lCbG9jaygpO1xyXG4gICAgICAgIHRoaXMuR2FtZU92ZXIuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkdhbWVPdmVyLmdldENoaWxkQnlOYW1lKFwic2NvcmVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnNjb3JlICsgXCJcIjtcclxuICAgICAgICB0aGlzLkdhbWVPdmVyLmdldENoaWxkQnlOYW1lKFwibGV2ZWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5sZXZlbE1heCArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5HYW1lT3Zlci5nZXRDaGlsZEJ5TmFtZShcImRpZmZpY3VsdHlcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5kaWZmaWN1bHR5TWF4ICsgXCJcIjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgYmFja0xvYWQoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy/ml7bpl7TmoLzlvI/ovazmjaJcclxuICAgIGdldFRpbWVNYXJnaW4oc2Vjb25kOm51bWJlcikge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IGhvdXIgPSAwO1xyXG4gICAgICAgIGhvdXIgPSBwYXJzZUludCgodG90YWwgLyAzNjAwKSArIFwiXCIpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoKGFmdGVySG91ciAvIDYwKStcIlwiKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBtID0gXCJcIiArIG1pbjsgIFxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIG1pYW8gPSBcIjBcIiArIGFmdGVyTWluO1xyXG4gICAgICAgIHJldHVybiBtICsgJzonICsgbWlhb1xyXG4gICAgfVxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgICAgIGlmKHRoaXMuY2FtZXJhTW92ZSA9PSB0cnVlICYmIHRoaXMub3ZlciA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgIHRoaXMuQ2FtZXJhLm5vZGUueSA9IHRoaXMuUGxheWVyLnkgLSB0aGlzLmNvdW50SGVpZ2h0O1xyXG4gICAgICAgICAgICBpZih0aGlzLkNhbWVyYS5ub2RlLnkgPD0gMCkgdGhpcy5DYW1lcmEubm9kZS55ID0gMDtcclxuICAgICAgICAgICAgdGhpcy50b3BVSS55ID0gdGhpcy5DYW1lcmEubm9kZS55ICsgdGhpcy5kcm9wO1xyXG4gICAgICAgIH1cclxuIFxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/Camera.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, 'ba5152SuShBF7Gc5uHiGsp0', 'Camera');
|
||
// Script/Camera.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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
var GameData_1 = require("./GameData");
|
||
var GameManager_1 = require("./GameManager");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
this.node.on(cc.Node.EventType.TOUCH_START, this.jump, this);
|
||
};
|
||
NewClass.prototype.jump = function () {
|
||
if (GameManager_1.default._instance) {
|
||
if (GameManager_1.default._instance.over == false && GameManager_1.default._instance.begin == true) {
|
||
Notification_1.Notification.emit("jump", null);
|
||
}
|
||
}
|
||
else if (GameData_1.default._instance.GM_INFO.probation == true) {
|
||
Notification_1.Notification.emit("jump", null);
|
||
}
|
||
};
|
||
__decorate([
|
||
property(cc.Label)
|
||
], NewClass.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], NewClass.prototype, "text", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7QUFDbEYsdUNBQWtDO0FBQ2xDLDZDQUF3QztBQUN4QyxvREFBbUQ7QUFDN0MsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUE4QkM7UUEzQkcsV0FBSyxHQUFhLElBQUksQ0FBQztRQUd2QixVQUFJLEdBQVcsT0FBTyxDQUFDOztRQXVCdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUF0Qkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELHVCQUFJLEdBQUo7UUFDSSxJQUFHLHFCQUFXLENBQUMsU0FBUyxFQUFDO1lBQ3JCLElBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFDO2dCQUMxRSwyQkFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEM7U0FDSjthQUNJLElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7WUFDakQsMkJBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBRUwsQ0FBQztJQXZCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E4QjVCO0lBQUQsZUFBQztDQTlCRCxBQThCQyxDQTlCcUMsRUFBRSxDQUFDLFNBQVMsR0E4QmpEO2tCQTlCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4vR2FtZURhdGEnO1xyXG5pbXBvcnQgR2FtZU1hbmFnZXIgZnJvbSAnLi9HYW1lTWFuYWdlcic7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLmp1bXAsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGp1bXAoKXtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Upe1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Uub3ZlciA9PSBmYWxzZSAmJiBHYW1lTWFuYWdlci5faW5zdGFuY2UuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImp1bXBcIixudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnByb2JhdGlvbiA9PSB0cnVlKXtcclxuICAgICAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJqdW1wXCIsbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICBcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/ListView/ItemRender.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, 'ca0f9k0oBVDbpQC+OMNTF3m', 'ItemRender');
|
||
// Script/ListView/ItemRender.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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var ItemRender = /** @class */ (function (_super) {
|
||
__extends(ItemRender, _super);
|
||
function ItemRender() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
/**数据 */
|
||
_this.data = null;
|
||
/**索引 0表示第一项*/
|
||
_this.itemIndex = 0;
|
||
return _this;
|
||
}
|
||
/**数据改变时调用 */
|
||
ItemRender.prototype.dataChanged = function () {
|
||
if (this.data.name.length > 7) {
|
||
this.data.name = this.data.name.substring(0, 7) + "...";
|
||
}
|
||
this.node.getChildByName("rankLab").getComponent(cc.Label).string = this.data.rank + "";
|
||
this.node.getChildByName("nameLab").getComponent(cc.Label).string = this.data.name + "";
|
||
this.node.getChildByName("totalLab").getComponent(cc.Label).string = this.data.total + "";
|
||
this.node.getChildByName("rank").getChildByName("one").active = false;
|
||
this.node.getChildByName("rank").getChildByName("two").active = false;
|
||
this.node.getChildByName("rank").getChildByName("three").active = false;
|
||
if (this.data.rank == 1) {
|
||
this.node.getChildByName("rank").getChildByName("one").active = true;
|
||
this.node.getChildByName("rankLab").active = false;
|
||
}
|
||
else if (this.data.rank == 2) {
|
||
this.node.getChildByName("rank").getChildByName("two").active = true;
|
||
this.node.getChildByName("rankLab").active = false;
|
||
}
|
||
else if (this.data.rank == 3) {
|
||
this.node.getChildByName("rank").getChildByName("three").active = true;
|
||
this.node.getChildByName("rankLab").active = false;
|
||
}
|
||
else {
|
||
this.node.getChildByName("rankLab").active = true;
|
||
}
|
||
this.setPic();
|
||
};
|
||
ItemRender.prototype.setPic = function () {
|
||
var _this = this;
|
||
var url = this.data.pic;
|
||
cc.assetManager.loadRemote(url, { ext: '.jpg' }, function (err, texture) {
|
||
if (texture) {
|
||
var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite);
|
||
sprite.spriteFrame = new cc.SpriteFrame(texture);
|
||
// console.log("设置头像成功");
|
||
}
|
||
else {
|
||
// console.log(err,texture)
|
||
}
|
||
});
|
||
};
|
||
ItemRender = __decorate([
|
||
ccclass
|
||
], ItemRender);
|
||
return ItemRender;
|
||
}(cc.Component));
|
||
exports.default = ItemRender;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcSXRlbVJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUF3Qyw4QkFBWTtJQUFwRDtRQUFBLHFFQWlEQztRQWhERyxRQUFRO1FBQ0QsVUFBSSxHQUFPLElBQUksQ0FBQztRQUN2QixjQUFjO1FBQ1AsZUFBUyxHQUFVLENBQUMsQ0FBQzs7SUE2Q2hDLENBQUM7SUEzQ0csYUFBYTtJQUNOLGdDQUFXLEdBQWxCO1FBQ0ksSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDMUYsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEUsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUN0RDthQUNJLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDdEQ7YUFDSSxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3REO2FBQUk7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSwyQkFBTSxHQUFiO1FBQUEsaUJBWUM7UUFYRyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN4QixFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEVBQUMsVUFBQyxHQUFHLEVBQUUsT0FBb0I7WUFDbkUsSUFBRyxPQUFPLEVBQUM7Z0JBQ1AsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCx5QkFBeUI7YUFDNUI7aUJBQ0c7Z0JBQ0EsMkJBQTJCO2FBQzlCO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBOUNnQixVQUFVO1FBRDlCLE9BQU87T0FDYSxVQUFVLENBaUQ5QjtJQUFELGlCQUFDO0NBakRELEFBaURDLENBakR1QyxFQUFFLENBQUMsU0FBUyxHQWlEbkQ7a0JBakRvQixVQUFVIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpc3QsIHsgTGlzdFR5cGUgfSBmcm9tIFwiLi9MaXN0XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSXRlbVJlbmRlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICAvKirmlbDmja4gKi9cclxuICAgIHB1YmxpYyBkYXRhOmFueSA9IG51bGw7XHJcbiAgICAvKirntKLlvJUgMOihqOekuuesrOS4gOmhuSovXHJcbiAgICBwdWJsaWMgaXRlbUluZGV4Om51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICBpZih0aGlzLmRhdGEubmFtZS5sZW5ndGggPiA3KXtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLm5hbWUgPSB0aGlzLmRhdGEubmFtZS5zdWJzdHJpbmcoMCw3KSArIFwiLi4uXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5yYW5rICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5kYXRhLm5hbWUgKyBcIlwiO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRvdGFsTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5kYXRhLnRvdGFsICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwib25lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0d29cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMuZGF0YS5yYW5rID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwib25lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMil7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0d29cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGEucmFuayA9PSAzKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRQaWMoKTtcclxuICAgIH0gICBcclxuICAgIFxyXG4gICAgcHVibGljIHNldFBpYygpe1xyXG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmRhdGEucGljO1xyXG4gICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHVybCwge2V4dDonLmpwZyd9LChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRleHR1cmUpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHNwcml0ZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6K6+572u5aS05YOP5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/Notification.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, 'bc645/UI1FCCZN1kaSNle9o', 'Notification');
|
||
// Script/tool/Notification.ts
|
||
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.Notification = void 0;
|
||
//全局通知
|
||
var Notification = {
|
||
_eventMap: [],
|
||
on: function (masgId, callback, target) {
|
||
if (this._eventMap[masgId] === undefined) {
|
||
this._eventMap[masgId] = [];
|
||
}
|
||
this._eventMap[masgId].push({ callback: callback, target: target });
|
||
},
|
||
emit: function (masgId, parameter) {
|
||
var array = this._eventMap[masgId];
|
||
if (array === undefined)
|
||
return;
|
||
for (var i = 0; i < array.length; i++) {
|
||
var element = array[i];
|
||
if (element)
|
||
element.callback.call(element.target, parameter);
|
||
}
|
||
},
|
||
off: function (masgId, callback) {
|
||
var array = this._eventMap[masgId];
|
||
if (array === undefined)
|
||
return;
|
||
for (var i = 0; i < array.length; i++) {
|
||
var element = array[i];
|
||
if (element && element.callback === callback) {
|
||
array[i] = undefined;
|
||
break;
|
||
}
|
||
}
|
||
},
|
||
offMasgId: function (masgId) {
|
||
this._eventMap[masgId] = undefined;
|
||
},
|
||
removeAllMsg: function () {
|
||
for (var k in this._eventMap) {
|
||
if (this._eventMap[k]) {
|
||
this.offMasgId(k);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
exports.Notification = Notification;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxOb3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTTtBQUNOLElBQUksWUFBWSxHQUFHO0lBQ2YsU0FBUyxFQUFFLEVBQUU7SUFDYixFQUFFLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxFQUFFLFVBQVUsTUFBTSxFQUFFLFNBQVM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsR0FBRyxFQUFFLFVBQVUsTUFBTSxFQUFFLFFBQVE7UUFDM0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELFNBQVMsRUFBRSxVQUFVLE1BQU07UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksRUFBRTtRQUNWLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckI7U0FDSjtJQUNMLENBQUM7Q0FDSixDQUFDO0FBRU8sb0NBQVkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+WFqOWxgOmAmuefpVxudmFyIE5vdGlmaWNhdGlvbiA9IHtcbiAgICBfZXZlbnRNYXA6IFtdLFxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFttYXNnSWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdLnB1c2goeyBjYWxsYmFjazogY2FsbGJhY2ssIHRhcmdldDogdGFyZ2V0IH0pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbiAobWFzZ0lkLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZXZlbnRNYXBbbWFzZ0lkXTtcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIGVsZW1lbnQuY2FsbGJhY2suY2FsbChlbGVtZW50LnRhcmdldCwgcGFyYW1ldGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvZmY6IGZ1bmN0aW9uIChtYXNnSWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XG4gICAgICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9mZk1hc2dJZDogZnVuY3Rpb24gKG1hc2dJZCkge1xuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xuICAgIH0sXG5cbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLl9ldmVudE1hcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW2tdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgeyBOb3RpZmljYXRpb24gfTsiXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/crypto/crypto-js.min.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, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min');
|
||
// Script/crypto/crypto-js.min.js
|
||
|
||
"use strict";
|
||
|
||
!function (t, r) {
|
||
"object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r();
|
||
}(void 0, function () {
|
||
var t = t || function (t, r) {
|
||
var e = Object.create || function () {
|
||
function t() {}
|
||
|
||
return function (r) {
|
||
var e;
|
||
return t.prototype = r, e = new t(), t.prototype = null, e;
|
||
};
|
||
}(),
|
||
i = {},
|
||
n = i.lib = {},
|
||
o = n.Base = function () {
|
||
return {
|
||
extend: function extend(t) {
|
||
var r = e(this);
|
||
return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () {
|
||
r.$super.init.apply(this, arguments);
|
||
}), r.init.prototype = r, r.$super = this, r;
|
||
},
|
||
create: function create() {
|
||
var t = this.extend();
|
||
return t.init.apply(t, arguments), t;
|
||
},
|
||
init: function init() {},
|
||
mixIn: function mixIn(t) {
|
||
for (var r in t) {
|
||
t.hasOwnProperty(r) && (this[r] = t[r]);
|
||
}
|
||
|
||
t.hasOwnProperty("toString") && (this.toString = t.toString);
|
||
},
|
||
clone: function clone() {
|
||
return this.init.prototype.extend(this);
|
||
}
|
||
};
|
||
}(),
|
||
s = n.WordArray = o.extend({
|
||
init: function init(t, e) {
|
||
t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length;
|
||
},
|
||
toString: function toString(t) {
|
||
return (t || c).stringify(this);
|
||
},
|
||
concat: function concat(t) {
|
||
var r = this.words,
|
||
e = t.words,
|
||
i = this.sigBytes,
|
||
n = t.sigBytes;
|
||
if (this.clamp(), i % 4) for (var o = 0; o < n; o++) {
|
||
var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255;
|
||
r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8;
|
||
} else for (var o = 0; o < n; o += 4) {
|
||
r[i + o >>> 2] = e[o >>> 2];
|
||
}
|
||
return this.sigBytes += n, this;
|
||
},
|
||
clamp: function clamp() {
|
||
var r = this.words,
|
||
e = this.sigBytes;
|
||
r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4);
|
||
},
|
||
clone: function clone() {
|
||
var t = o.clone.call(this);
|
||
return t.words = this.words.slice(0), t;
|
||
},
|
||
random: function random(r) {
|
||
for (var e, i = [], n = function n(r) {
|
||
var r = r,
|
||
e = 987654321,
|
||
i = 4294967295;
|
||
return function () {
|
||
e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i;
|
||
var n = (e << 16) + r & i;
|
||
return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1);
|
||
};
|
||
}, o = 0; o < r; o += 4) {
|
||
var a = n(4294967296 * (e || t.random()));
|
||
e = 987654071 * a(), i.push(4294967296 * a() | 0);
|
||
}
|
||
|
||
return new s.init(i, r);
|
||
}
|
||
}),
|
||
a = i.enc = {},
|
||
c = a.Hex = {
|
||
stringify: function stringify(t) {
|
||
for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) {
|
||
var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255;
|
||
i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16));
|
||
}
|
||
|
||
return i.join("");
|
||
},
|
||
parse: function parse(t) {
|
||
for (var r = t.length, e = [], i = 0; i < r; i += 2) {
|
||
e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4;
|
||
}
|
||
|
||
return new s.init(e, r / 2);
|
||
}
|
||
},
|
||
h = a.Latin1 = {
|
||
stringify: function stringify(t) {
|
||
for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) {
|
||
var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255;
|
||
i.push(String.fromCharCode(o));
|
||
}
|
||
|
||
return i.join("");
|
||
},
|
||
parse: function parse(t) {
|
||
for (var r = t.length, e = [], i = 0; i < r; i++) {
|
||
e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8;
|
||
}
|
||
|
||
return new s.init(e, r);
|
||
}
|
||
},
|
||
l = a.Utf8 = {
|
||
stringify: function stringify(t) {
|
||
try {
|
||
return decodeURIComponent(escape(h.stringify(t)));
|
||
} catch (t) {
|
||
throw new Error("Malformed UTF-8 data");
|
||
}
|
||
},
|
||
parse: function parse(t) {
|
||
return h.parse(unescape(encodeURIComponent(t)));
|
||
}
|
||
},
|
||
f = n.BufferedBlockAlgorithm = o.extend({
|
||
reset: function reset() {
|
||
this._data = new s.init(), this._nDataBytes = 0;
|
||
},
|
||
_append: function _append(t) {
|
||
"string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes;
|
||
},
|
||
_process: function _process(r) {
|
||
var e = this._data,
|
||
i = e.words,
|
||
n = e.sigBytes,
|
||
o = this.blockSize,
|
||
a = 4 * o,
|
||
c = n / a;
|
||
c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0);
|
||
var h = c * o,
|
||
l = t.min(4 * h, n);
|
||
|
||
if (h) {
|
||
for (var f = 0; f < h; f += o) {
|
||
this._doProcessBlock(i, f);
|
||
}
|
||
|
||
var u = i.splice(0, h);
|
||
e.sigBytes -= l;
|
||
}
|
||
|
||
return new s.init(u, l);
|
||
},
|
||
clone: function clone() {
|
||
var t = o.clone.call(this);
|
||
return t._data = this._data.clone(), t;
|
||
},
|
||
_minBufferSize: 0
|
||
}),
|
||
u = (n.Hasher = f.extend({
|
||
cfg: o.extend(),
|
||
init: function init(t) {
|
||
this.cfg = this.cfg.extend(t), this.reset();
|
||
},
|
||
reset: function reset() {
|
||
f.reset.call(this), this._doReset();
|
||
},
|
||
update: function update(t) {
|
||
return this._append(t), this._process(), this;
|
||
},
|
||
finalize: function finalize(t) {
|
||
t && this._append(t);
|
||
|
||
var r = this._doFinalize();
|
||
|
||
return r;
|
||
},
|
||
blockSize: 16,
|
||
_createHelper: function _createHelper(t) {
|
||
return function (r, e) {
|
||
return new t.init(e).finalize(r);
|
||
};
|
||
},
|
||
_createHmacHelper: function _createHmacHelper(t) {
|
||
return function (r, e) {
|
||
return new u.HMAC.init(t, e).finalize(r);
|
||
};
|
||
}
|
||
}), i.algo = {});
|
||
|
||
return i;
|
||
}(Math);
|
||
|
||
return function () {
|
||
function r(t, r, e) {
|
||
for (var i = [], o = 0, s = 0; s < r; s++) {
|
||
if (s % 4) {
|
||
var a = e[t.charCodeAt(s - 1)] << s % 4 * 2,
|
||
c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2;
|
||
i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++;
|
||
}
|
||
}
|
||
|
||
return n.create(i, o);
|
||
}
|
||
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.WordArray,
|
||
o = e.enc;
|
||
o.Base64 = {
|
||
stringify: function stringify(t) {
|
||
var r = t.words,
|
||
e = t.sigBytes,
|
||
i = this._map;
|
||
t.clamp();
|
||
|
||
for (var n = [], o = 0; o < e; o += 3) {
|
||
for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) {
|
||
n.push(i.charAt(h >>> 6 * (3 - l) & 63));
|
||
}
|
||
}
|
||
|
||
var f = i.charAt(64);
|
||
if (f) for (; n.length % 4;) {
|
||
n.push(f);
|
||
}
|
||
return n.join("");
|
||
},
|
||
parse: function parse(t) {
|
||
var e = t.length,
|
||
i = this._map,
|
||
n = this._reverseMap;
|
||
|
||
if (!n) {
|
||
n = this._reverseMap = [];
|
||
|
||
for (var o = 0; o < i.length; o++) {
|
||
n[i.charCodeAt(o)] = o;
|
||
}
|
||
}
|
||
|
||
var s = i.charAt(64);
|
||
|
||
if (s) {
|
||
var a = t.indexOf(s);
|
||
a !== -1 && (e = a);
|
||
}
|
||
|
||
return r(t, e, n);
|
||
},
|
||
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
||
};
|
||
}(), function (r) {
|
||
function e(t, r, e, i, n, o, s) {
|
||
var a = t + (r & e | ~r & i) + n + s;
|
||
return (a << o | a >>> 32 - o) + r;
|
||
}
|
||
|
||
function i(t, r, e, i, n, o, s) {
|
||
var a = t + (r & i | e & ~i) + n + s;
|
||
return (a << o | a >>> 32 - o) + r;
|
||
}
|
||
|
||
function n(t, r, e, i, n, o, s) {
|
||
var a = t + (r ^ e ^ i) + n + s;
|
||
return (a << o | a >>> 32 - o) + r;
|
||
}
|
||
|
||
function o(t, r, e, i, n, o, s) {
|
||
var a = t + (e ^ (r | ~i)) + n + s;
|
||
return (a << o | a >>> 32 - o) + r;
|
||
}
|
||
|
||
var s = t,
|
||
a = s.lib,
|
||
c = a.WordArray,
|
||
h = a.Hasher,
|
||
l = s.algo,
|
||
f = [];
|
||
!function () {
|
||
for (var t = 0; t < 64; t++) {
|
||
f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0;
|
||
}
|
||
}();
|
||
var u = l.MD5 = h.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]);
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
for (var s = 0; s < 16; s++) {
|
||
var a = r + s,
|
||
c = t[a];
|
||
t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8);
|
||
}
|
||
|
||
var h = this._hash.words,
|
||
l = t[r + 0],
|
||
u = t[r + 1],
|
||
d = t[r + 2],
|
||
v = t[r + 3],
|
||
p = t[r + 4],
|
||
_ = t[r + 5],
|
||
y = t[r + 6],
|
||
g = t[r + 7],
|
||
B = t[r + 8],
|
||
w = t[r + 9],
|
||
k = t[r + 10],
|
||
S = t[r + 11],
|
||
m = t[r + 12],
|
||
x = t[r + 13],
|
||
b = t[r + 14],
|
||
H = t[r + 15],
|
||
z = h[0],
|
||
A = h[1],
|
||
C = h[2],
|
||
D = h[3];
|
||
z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0;
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._data,
|
||
e = t.words,
|
||
i = 8 * this._nDataBytes,
|
||
n = 8 * t.sigBytes;
|
||
e[n >>> 5] |= 128 << 24 - n % 32;
|
||
var o = r.floor(i / 4294967296),
|
||
s = i;
|
||
e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process();
|
||
|
||
for (var a = this._hash, c = a.words, h = 0; h < 4; h++) {
|
||
var l = c[h];
|
||
c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8);
|
||
}
|
||
|
||
return a;
|
||
},
|
||
clone: function clone() {
|
||
var t = h.clone.call(this);
|
||
return t._hash = this._hash.clone(), t;
|
||
}
|
||
});
|
||
s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u);
|
||
}(Math), function () {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.WordArray,
|
||
n = e.Hasher,
|
||
o = r.algo,
|
||
s = [],
|
||
a = o.SHA1 = n.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) {
|
||
if (h < 16) s[h] = 0 | t[r + h];else {
|
||
var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16];
|
||
s[h] = l << 1 | l >>> 31;
|
||
}
|
||
var f = (i << 5 | i >>> 27) + c + s[h];
|
||
f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f;
|
||
}
|
||
|
||
e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0;
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._data,
|
||
r = t.words,
|
||
e = 8 * this._nDataBytes,
|
||
i = 8 * t.sigBytes;
|
||
return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash;
|
||
},
|
||
clone: function clone() {
|
||
var t = n.clone.call(this);
|
||
return t._hash = this._hash.clone(), t;
|
||
}
|
||
});
|
||
r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a);
|
||
}(), function (r) {
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.WordArray,
|
||
o = i.Hasher,
|
||
s = e.algo,
|
||
a = [],
|
||
c = [];
|
||
!function () {
|
||
function t(t) {
|
||
for (var e = r.sqrt(t), i = 2; i <= e; i++) {
|
||
if (!(t % i)) return !1;
|
||
}
|
||
|
||
return !0;
|
||
}
|
||
|
||
function e(t) {
|
||
return 4294967296 * (t - (0 | t)) | 0;
|
||
}
|
||
|
||
for (var i = 2, n = 0; n < 64;) {
|
||
t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++;
|
||
}
|
||
}();
|
||
var h = [],
|
||
l = s.SHA256 = o.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = new n.init(a.slice(0));
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) {
|
||
if (d < 16) h[d] = 0 | t[r + d];else {
|
||
var v = h[d - 15],
|
||
p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3,
|
||
_ = h[d - 2],
|
||
y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10;
|
||
h[d] = p + h[d - 7] + y + h[d - 16];
|
||
}
|
||
var g = a & l ^ ~a & f,
|
||
B = i & n ^ i & o ^ n & o,
|
||
w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22),
|
||
k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25),
|
||
S = u + k + g + c[d] + h[d],
|
||
m = w + B;
|
||
u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0;
|
||
}
|
||
|
||
e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0;
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._data,
|
||
e = t.words,
|
||
i = 8 * this._nDataBytes,
|
||
n = 8 * t.sigBytes;
|
||
return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash;
|
||
},
|
||
clone: function clone() {
|
||
var t = o.clone.call(this);
|
||
return t._hash = this._hash.clone(), t;
|
||
}
|
||
});
|
||
e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l);
|
||
}(Math), function () {
|
||
function r(t) {
|
||
return t << 8 & 4278255360 | t >>> 8 & 16711935;
|
||
}
|
||
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.WordArray,
|
||
o = e.enc;
|
||
o.Utf16 = o.Utf16BE = {
|
||
stringify: function stringify(t) {
|
||
for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) {
|
||
var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535;
|
||
i.push(String.fromCharCode(o));
|
||
}
|
||
|
||
return i.join("");
|
||
},
|
||
parse: function parse(t) {
|
||
for (var r = t.length, e = [], i = 0; i < r; i++) {
|
||
e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16;
|
||
}
|
||
|
||
return n.create(e, 2 * r);
|
||
}
|
||
};
|
||
o.Utf16LE = {
|
||
stringify: function stringify(t) {
|
||
for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) {
|
||
var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535);
|
||
n.push(String.fromCharCode(s));
|
||
}
|
||
|
||
return n.join("");
|
||
},
|
||
parse: function parse(t) {
|
||
for (var e = t.length, i = [], o = 0; o < e; o++) {
|
||
i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16);
|
||
}
|
||
|
||
return n.create(i, 2 * e);
|
||
}
|
||
};
|
||
}(), function () {
|
||
if ("function" == typeof ArrayBuffer) {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.WordArray,
|
||
n = i.init,
|
||
o = i.init = function (t) {
|
||
if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) {
|
||
for (var r = t.byteLength, e = [], i = 0; i < r; i++) {
|
||
e[i >>> 2] |= t[i] << 24 - i % 4 * 8;
|
||
}
|
||
|
||
n.call(this, e, r);
|
||
} else n.apply(this, arguments);
|
||
};
|
||
|
||
o.prototype = i;
|
||
}
|
||
}(), function (r) {
|
||
function e(t, r, e) {
|
||
return t ^ r ^ e;
|
||
}
|
||
|
||
function i(t, r, e) {
|
||
return t & r | ~t & e;
|
||
}
|
||
|
||
function n(t, r, e) {
|
||
return (t | ~r) ^ e;
|
||
}
|
||
|
||
function o(t, r, e) {
|
||
return t & e | r & ~e;
|
||
}
|
||
|
||
function s(t, r, e) {
|
||
return t ^ (r | ~e);
|
||
}
|
||
|
||
function a(t, r) {
|
||
return t << r | t >>> 32 - r;
|
||
}
|
||
|
||
var c = t,
|
||
h = c.lib,
|
||
l = h.WordArray,
|
||
f = h.Hasher,
|
||
u = c.algo,
|
||
d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]),
|
||
v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]),
|
||
p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]),
|
||
_ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]),
|
||
y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]),
|
||
g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]),
|
||
B = u.RIPEMD160 = f.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
for (var c = 0; c < 16; c++) {
|
||
var h = r + c,
|
||
l = t[h];
|
||
t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8);
|
||
}
|
||
|
||
var f,
|
||
u,
|
||
B,
|
||
w,
|
||
k,
|
||
S,
|
||
m,
|
||
x,
|
||
b,
|
||
H,
|
||
z = this._hash.words,
|
||
A = y.words,
|
||
C = g.words,
|
||
D = d.words,
|
||
R = v.words,
|
||
E = p.words,
|
||
M = _.words;
|
||
S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4];
|
||
|
||
for (var F, c = 0; c < 80; c += 1) {
|
||
F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F;
|
||
}
|
||
|
||
F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F;
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._data,
|
||
r = t.words,
|
||
e = 8 * this._nDataBytes,
|
||
i = 8 * t.sigBytes;
|
||
r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process();
|
||
|
||
for (var n = this._hash, o = n.words, s = 0; s < 5; s++) {
|
||
var a = o[s];
|
||
o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8);
|
||
}
|
||
|
||
return n;
|
||
},
|
||
clone: function clone() {
|
||
var t = f.clone.call(this);
|
||
return t._hash = this._hash.clone(), t;
|
||
}
|
||
});
|
||
|
||
c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B);
|
||
}(Math), function () {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.Base,
|
||
n = r.enc,
|
||
o = n.Utf8,
|
||
s = r.algo;
|
||
s.HMAC = i.extend({
|
||
init: function init(t, r) {
|
||
t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r));
|
||
var e = t.blockSize,
|
||
i = 4 * e;
|
||
r.sigBytes > i && (r = t.finalize(r)), r.clamp();
|
||
|
||
for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) {
|
||
a[h] ^= 1549556828, c[h] ^= 909522486;
|
||
}
|
||
|
||
n.sigBytes = s.sigBytes = i, this.reset();
|
||
},
|
||
reset: function reset() {
|
||
var t = this._hasher;
|
||
t.reset(), t.update(this._iKey);
|
||
},
|
||
update: function update(t) {
|
||
return this._hasher.update(t), this;
|
||
},
|
||
finalize: function finalize(t) {
|
||
var r = this._hasher,
|
||
e = r.finalize(t);
|
||
r.reset();
|
||
var i = r.finalize(this._oKey.clone().concat(e));
|
||
return i;
|
||
}
|
||
});
|
||
}(), function () {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.Base,
|
||
n = e.WordArray,
|
||
o = r.algo,
|
||
s = o.SHA1,
|
||
a = o.HMAC,
|
||
c = o.PBKDF2 = i.extend({
|
||
cfg: i.extend({
|
||
keySize: 4,
|
||
hasher: s,
|
||
iterations: 1
|
||
}),
|
||
init: function init(t) {
|
||
this.cfg = this.cfg.extend(t);
|
||
},
|
||
compute: function compute(t, r) {
|
||
for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) {
|
||
var u = i.update(r).finalize(s);
|
||
i.reset();
|
||
|
||
for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) {
|
||
p = i.finalize(p), i.reset();
|
||
|
||
for (var y = p.words, g = 0; g < v; g++) {
|
||
d[g] ^= y[g];
|
||
}
|
||
}
|
||
|
||
o.concat(u), h[0]++;
|
||
}
|
||
|
||
return o.sigBytes = 4 * l, o;
|
||
}
|
||
});
|
||
|
||
r.PBKDF2 = function (t, r, e) {
|
||
return c.create(e).compute(t, r);
|
||
};
|
||
}(), function () {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.Base,
|
||
n = e.WordArray,
|
||
o = r.algo,
|
||
s = o.MD5,
|
||
a = o.EvpKDF = i.extend({
|
||
cfg: i.extend({
|
||
keySize: 4,
|
||
hasher: s,
|
||
iterations: 1
|
||
}),
|
||
init: function init(t) {
|
||
this.cfg = this.cfg.extend(t);
|
||
},
|
||
compute: function compute(t, r) {
|
||
for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) {
|
||
h && i.update(h);
|
||
var h = i.update(t).finalize(r);
|
||
i.reset();
|
||
|
||
for (var l = 1; l < c; l++) {
|
||
h = i.finalize(h), i.reset();
|
||
}
|
||
|
||
o.concat(h);
|
||
}
|
||
|
||
return o.sigBytes = 4 * a, o;
|
||
}
|
||
});
|
||
|
||
r.EvpKDF = function (t, r, e) {
|
||
return a.create(e).compute(t, r);
|
||
};
|
||
}(), function () {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.WordArray,
|
||
n = r.algo,
|
||
o = n.SHA256,
|
||
s = n.SHA224 = o.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]);
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = o._doFinalize.call(this);
|
||
|
||
return t.sigBytes -= 4, t;
|
||
}
|
||
});
|
||
r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s);
|
||
}(), function (r) {
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.Base,
|
||
o = i.WordArray,
|
||
s = e.x64 = {};
|
||
s.Word = n.extend({
|
||
init: function init(t, r) {
|
||
this.high = t, this.low = r;
|
||
}
|
||
}), s.WordArray = n.extend({
|
||
init: function init(t, e) {
|
||
t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length;
|
||
},
|
||
toX32: function toX32() {
|
||
for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) {
|
||
var n = t[i];
|
||
e.push(n.high), e.push(n.low);
|
||
}
|
||
|
||
return o.create(e, this.sigBytes);
|
||
},
|
||
clone: function clone() {
|
||
for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) {
|
||
r[i] = r[i].clone();
|
||
}
|
||
|
||
return t;
|
||
}
|
||
});
|
||
}(), function (r) {
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.WordArray,
|
||
o = i.Hasher,
|
||
s = e.x64,
|
||
a = s.Word,
|
||
c = e.algo,
|
||
h = [],
|
||
l = [],
|
||
f = [];
|
||
!function () {
|
||
for (var t = 1, r = 0, e = 0; e < 24; e++) {
|
||
h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64;
|
||
var i = r % 5,
|
||
n = (2 * t + 3 * r) % 5;
|
||
t = i, r = n;
|
||
}
|
||
|
||
for (var t = 0; t < 5; t++) {
|
||
for (var r = 0; r < 5; r++) {
|
||
l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5;
|
||
}
|
||
}
|
||
|
||
for (var o = 1, s = 0; s < 24; s++) {
|
||
for (var c = 0, u = 0, d = 0; d < 7; d++) {
|
||
if (1 & o) {
|
||
var v = (1 << d) - 1;
|
||
v < 32 ? u ^= 1 << v : c ^= 1 << v - 32;
|
||
}
|
||
|
||
128 & o ? o = o << 1 ^ 113 : o <<= 1;
|
||
}
|
||
|
||
f[s] = a.create(c, u);
|
||
}
|
||
}();
|
||
var u = [];
|
||
!function () {
|
||
for (var t = 0; t < 25; t++) {
|
||
u[t] = a.create();
|
||
}
|
||
}();
|
||
var d = c.SHA3 = o.extend({
|
||
cfg: o.cfg.extend({
|
||
outputLength: 512
|
||
}),
|
||
_doReset: function _doReset() {
|
||
for (var t = this._state = [], r = 0; r < 25; r++) {
|
||
t[r] = new a.init();
|
||
}
|
||
|
||
this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) {
|
||
var o = t[r + 2 * n],
|
||
s = t[r + 2 * n + 1];
|
||
o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8);
|
||
var a = e[n];
|
||
a.high ^= s, a.low ^= o;
|
||
}
|
||
|
||
for (var c = 0; c < 24; c++) {
|
||
for (var d = 0; d < 5; d++) {
|
||
for (var v = 0, p = 0, _ = 0; _ < 5; _++) {
|
||
var a = e[d + 5 * _];
|
||
v ^= a.high, p ^= a.low;
|
||
}
|
||
|
||
var y = u[d];
|
||
y.high = v, y.low = p;
|
||
}
|
||
|
||
for (var d = 0; d < 5; d++) {
|
||
for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) {
|
||
var a = e[d + 5 * _];
|
||
a.high ^= v, a.low ^= p;
|
||
}
|
||
}
|
||
|
||
for (var S = 1; S < 25; S++) {
|
||
var a = e[S],
|
||
m = a.high,
|
||
x = a.low,
|
||
b = h[S];
|
||
if (b < 32) var v = m << b | x >>> 32 - b,
|
||
p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b,
|
||
p = m << b - 32 | x >>> 64 - b;
|
||
var H = u[l[S]];
|
||
H.high = v, H.low = p;
|
||
}
|
||
|
||
var z = u[0],
|
||
A = e[0];
|
||
z.high = A.high, z.low = A.low;
|
||
|
||
for (var d = 0; d < 5; d++) {
|
||
for (var _ = 0; _ < 5; _++) {
|
||
var S = d + 5 * _,
|
||
a = e[S],
|
||
C = u[S],
|
||
D = u[(d + 1) % 5 + 5 * _],
|
||
R = u[(d + 2) % 5 + 5 * _];
|
||
a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low;
|
||
}
|
||
}
|
||
|
||
var a = e[0],
|
||
E = f[c];
|
||
a.high ^= E.high, a.low ^= E.low;
|
||
}
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._data,
|
||
e = t.words,
|
||
i = (8 * this._nDataBytes, 8 * t.sigBytes),
|
||
o = 32 * this.blockSize;
|
||
e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process();
|
||
|
||
for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) {
|
||
var f = s[l],
|
||
u = f.high,
|
||
d = f.low;
|
||
u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u);
|
||
}
|
||
|
||
return new n.init(h, a);
|
||
},
|
||
clone: function clone() {
|
||
for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) {
|
||
r[e] = r[e].clone();
|
||
}
|
||
|
||
return t;
|
||
}
|
||
});
|
||
e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d);
|
||
}(Math), function () {
|
||
function r() {
|
||
return s.create.apply(s, arguments);
|
||
}
|
||
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.Hasher,
|
||
o = e.x64,
|
||
s = o.Word,
|
||
a = o.WordArray,
|
||
c = e.algo,
|
||
h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)],
|
||
l = [];
|
||
!function () {
|
||
for (var t = 0; t < 80; t++) {
|
||
l[t] = r();
|
||
}
|
||
}();
|
||
var f = c.SHA512 = n.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]);
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) {
|
||
var Z = l[T];
|
||
if (T < 16) var q = Z.high = 0 | t[r + 2 * T],
|
||
G = Z.low = 0 | t[r + 2 * T + 1];else {
|
||
var J = l[T - 15],
|
||
$ = J.high,
|
||
Q = J.low,
|
||
V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7,
|
||
Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25),
|
||
tt = l[T - 2],
|
||
rt = tt.high,
|
||
et = tt.low,
|
||
it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6,
|
||
nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26),
|
||
ot = l[T - 7],
|
||
st = ot.high,
|
||
at = ot.low,
|
||
ct = l[T - 16],
|
||
ht = ct.high,
|
||
lt = ct.low,
|
||
G = Y + at,
|
||
q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0),
|
||
G = G + nt,
|
||
q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0),
|
||
G = G + lt,
|
||
q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0);
|
||
Z.high = q, Z.low = G;
|
||
}
|
||
|
||
var ft = O & I ^ ~O & X,
|
||
ut = U & K ^ ~U & L,
|
||
dt = C & R ^ C & M ^ R & M,
|
||
vt = D & E ^ D & F ^ E & F,
|
||
pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7),
|
||
_t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7),
|
||
yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9),
|
||
gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9),
|
||
Bt = h[T],
|
||
wt = Bt.high,
|
||
kt = Bt.low,
|
||
St = N + gt,
|
||
mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0),
|
||
St = St + ut,
|
||
mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0),
|
||
St = St + kt,
|
||
mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0),
|
||
St = St + G,
|
||
mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0),
|
||
xt = _t + vt,
|
||
bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0);
|
||
|
||
j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0;
|
||
}
|
||
|
||
v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0);
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._data,
|
||
r = t.words,
|
||
e = 8 * this._nDataBytes,
|
||
i = 8 * t.sigBytes;
|
||
r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process();
|
||
|
||
var n = this._hash.toX32();
|
||
|
||
return n;
|
||
},
|
||
clone: function clone() {
|
||
var t = n.clone.call(this);
|
||
return t._hash = this._hash.clone(), t;
|
||
},
|
||
blockSize: 32
|
||
});
|
||
e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f);
|
||
}(), function () {
|
||
var r = t,
|
||
e = r.x64,
|
||
i = e.Word,
|
||
n = e.WordArray,
|
||
o = r.algo,
|
||
s = o.SHA512,
|
||
a = o.SHA384 = s.extend({
|
||
_doReset: function _doReset() {
|
||
this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]);
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = s._doFinalize.call(this);
|
||
|
||
return t.sigBytes -= 16, t;
|
||
}
|
||
});
|
||
r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a);
|
||
}(), t.lib.Cipher || function (r) {
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.Base,
|
||
o = i.WordArray,
|
||
s = i.BufferedBlockAlgorithm,
|
||
a = e.enc,
|
||
c = (a.Utf8, a.Base64),
|
||
h = e.algo,
|
||
l = h.EvpKDF,
|
||
f = i.Cipher = s.extend({
|
||
cfg: n.extend(),
|
||
createEncryptor: function createEncryptor(t, r) {
|
||
return this.create(this._ENC_XFORM_MODE, t, r);
|
||
},
|
||
createDecryptor: function createDecryptor(t, r) {
|
||
return this.create(this._DEC_XFORM_MODE, t, r);
|
||
},
|
||
init: function init(t, r, e) {
|
||
this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset();
|
||
},
|
||
reset: function reset() {
|
||
s.reset.call(this), this._doReset();
|
||
},
|
||
process: function process(t) {
|
||
return this._append(t), this._process();
|
||
},
|
||
finalize: function finalize(t) {
|
||
t && this._append(t);
|
||
|
||
var r = this._doFinalize();
|
||
|
||
return r;
|
||
},
|
||
keySize: 4,
|
||
ivSize: 4,
|
||
_ENC_XFORM_MODE: 1,
|
||
_DEC_XFORM_MODE: 2,
|
||
_createHelper: function () {
|
||
function t(t) {
|
||
return "string" == typeof t ? m : w;
|
||
}
|
||
|
||
return function (r) {
|
||
return {
|
||
encrypt: function encrypt(e, i, n) {
|
||
return t(i).encrypt(r, e, i, n);
|
||
},
|
||
decrypt: function decrypt(e, i, n) {
|
||
return t(i).decrypt(r, e, i, n);
|
||
}
|
||
};
|
||
};
|
||
}()
|
||
}),
|
||
u = (i.StreamCipher = f.extend({
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this._process(!0);
|
||
|
||
return t;
|
||
},
|
||
blockSize: 1
|
||
}), e.mode = {}),
|
||
d = i.BlockCipherMode = n.extend({
|
||
createEncryptor: function createEncryptor(t, r) {
|
||
return this.Encryptor.create(t, r);
|
||
},
|
||
createDecryptor: function createDecryptor(t, r) {
|
||
return this.Decryptor.create(t, r);
|
||
},
|
||
init: function init(t, r) {
|
||
this._cipher = t, this._iv = r;
|
||
}
|
||
}),
|
||
v = u.CBC = function () {
|
||
function t(t, e, i) {
|
||
var n = this._iv;
|
||
|
||
if (n) {
|
||
var o = n;
|
||
this._iv = r;
|
||
} else var o = this._prevBlock;
|
||
|
||
for (var s = 0; s < i; s++) {
|
||
t[e + s] ^= o[s];
|
||
}
|
||
}
|
||
|
||
var e = d.extend();
|
||
return e.Encryptor = e.extend({
|
||
processBlock: function processBlock(r, e) {
|
||
var i = this._cipher,
|
||
n = i.blockSize;
|
||
t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n);
|
||
}
|
||
}), e.Decryptor = e.extend({
|
||
processBlock: function processBlock(r, e) {
|
||
var i = this._cipher,
|
||
n = i.blockSize,
|
||
o = r.slice(e, e + n);
|
||
i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o;
|
||
}
|
||
}), e;
|
||
}(),
|
||
p = e.pad = {},
|
||
_ = p.Pkcs7 = {
|
||
pad: function pad(t, r) {
|
||
for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) {
|
||
s.push(n);
|
||
}
|
||
|
||
var c = o.create(s, i);
|
||
t.concat(c);
|
||
},
|
||
unpad: function unpad(t) {
|
||
var r = 255 & t.words[t.sigBytes - 1 >>> 2];
|
||
t.sigBytes -= r;
|
||
}
|
||
},
|
||
y = (i.BlockCipher = f.extend({
|
||
cfg: f.cfg.extend({
|
||
mode: v,
|
||
padding: _
|
||
}),
|
||
reset: function reset() {
|
||
f.reset.call(this);
|
||
var t = this.cfg,
|
||
r = t.iv,
|
||
e = t.mode;
|
||
if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else {
|
||
var i = e.createDecryptor;
|
||
this._minBufferSize = 1;
|
||
}
|
||
this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i);
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, r) {
|
||
this._mode.processBlock(t, r);
|
||
},
|
||
_doFinalize: function _doFinalize() {
|
||
var t = this.cfg.padding;
|
||
|
||
if (this._xformMode == this._ENC_XFORM_MODE) {
|
||
t.pad(this._data, this.blockSize);
|
||
|
||
var r = this._process(!0);
|
||
} else {
|
||
var r = this._process(!0);
|
||
|
||
t.unpad(r);
|
||
}
|
||
|
||
return r;
|
||
},
|
||
blockSize: 4
|
||
}), i.CipherParams = n.extend({
|
||
init: function init(t) {
|
||
this.mixIn(t);
|
||
},
|
||
toString: function toString(t) {
|
||
return (t || this.formatter).stringify(this);
|
||
}
|
||
})),
|
||
g = e.format = {},
|
||
B = g.OpenSSL = {
|
||
stringify: function stringify(t) {
|
||
var r = t.ciphertext,
|
||
e = t.salt;
|
||
if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r;
|
||
return i.toString(c);
|
||
},
|
||
parse: function parse(t) {
|
||
var r = c.parse(t),
|
||
e = r.words;
|
||
|
||
if (1398893684 == e[0] && 1701076831 == e[1]) {
|
||
var i = o.create(e.slice(2, 4));
|
||
e.splice(0, 4), r.sigBytes -= 16;
|
||
}
|
||
|
||
return y.create({
|
||
ciphertext: r,
|
||
salt: i
|
||
});
|
||
}
|
||
},
|
||
w = i.SerializableCipher = n.extend({
|
||
cfg: n.extend({
|
||
format: B
|
||
}),
|
||
encrypt: function encrypt(t, r, e, i) {
|
||
i = this.cfg.extend(i);
|
||
var n = t.createEncryptor(e, i),
|
||
o = n.finalize(r),
|
||
s = n.cfg;
|
||
return y.create({
|
||
ciphertext: o,
|
||
key: e,
|
||
iv: s.iv,
|
||
algorithm: t,
|
||
mode: s.mode,
|
||
padding: s.padding,
|
||
blockSize: t.blockSize,
|
||
formatter: i.format
|
||
});
|
||
},
|
||
decrypt: function decrypt(t, r, e, i) {
|
||
i = this.cfg.extend(i), r = this._parse(r, i.format);
|
||
var n = t.createDecryptor(e, i).finalize(r.ciphertext);
|
||
return n;
|
||
},
|
||
_parse: function _parse(t, r) {
|
||
return "string" == typeof t ? r.parse(t, this) : t;
|
||
}
|
||
}),
|
||
k = e.kdf = {},
|
||
S = k.OpenSSL = {
|
||
execute: function execute(t, r, e, i) {
|
||
i || (i = o.random(8));
|
||
var n = l.create({
|
||
keySize: r + e
|
||
}).compute(t, i),
|
||
s = o.create(n.words.slice(r), 4 * e);
|
||
return n.sigBytes = 4 * r, y.create({
|
||
key: n,
|
||
iv: s,
|
||
salt: i
|
||
});
|
||
}
|
||
},
|
||
m = i.PasswordBasedCipher = w.extend({
|
||
cfg: w.cfg.extend({
|
||
kdf: S
|
||
}),
|
||
encrypt: function encrypt(t, r, e, i) {
|
||
i = this.cfg.extend(i);
|
||
var n = i.kdf.execute(e, t.keySize, t.ivSize);
|
||
i.iv = n.iv;
|
||
var o = w.encrypt.call(this, t, r, n.key, i);
|
||
return o.mixIn(n), o;
|
||
},
|
||
decrypt: function decrypt(t, r, e, i) {
|
||
i = this.cfg.extend(i), r = this._parse(r, i.format);
|
||
var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt);
|
||
i.iv = n.iv;
|
||
var o = w.decrypt.call(this, t, r, n.key, i);
|
||
return o;
|
||
}
|
||
});
|
||
}(), t.mode.CFB = function () {
|
||
function r(t, r, e, i) {
|
||
var n = this._iv;
|
||
|
||
if (n) {
|
||
var o = n.slice(0);
|
||
this._iv = void 0;
|
||
} else var o = this._prevBlock;
|
||
|
||
i.encryptBlock(o, 0);
|
||
|
||
for (var s = 0; s < e; s++) {
|
||
t[r + s] ^= o[s];
|
||
}
|
||
}
|
||
|
||
var e = t.lib.BlockCipherMode.extend();
|
||
return e.Encryptor = e.extend({
|
||
processBlock: function processBlock(t, e) {
|
||
var i = this._cipher,
|
||
n = i.blockSize;
|
||
r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n);
|
||
}
|
||
}), e.Decryptor = e.extend({
|
||
processBlock: function processBlock(t, e) {
|
||
var i = this._cipher,
|
||
n = i.blockSize,
|
||
o = t.slice(e, e + n);
|
||
r.call(this, t, e, n, i), this._prevBlock = o;
|
||
}
|
||
}), e;
|
||
}(), t.mode.ECB = function () {
|
||
var r = t.lib.BlockCipherMode.extend();
|
||
return r.Encryptor = r.extend({
|
||
processBlock: function processBlock(t, r) {
|
||
this._cipher.encryptBlock(t, r);
|
||
}
|
||
}), r.Decryptor = r.extend({
|
||
processBlock: function processBlock(t, r) {
|
||
this._cipher.decryptBlock(t, r);
|
||
}
|
||
}), r;
|
||
}(), t.pad.AnsiX923 = {
|
||
pad: function pad(t, r) {
|
||
var e = t.sigBytes,
|
||
i = 4 * r,
|
||
n = i - e % i,
|
||
o = e + n - 1;
|
||
t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n;
|
||
},
|
||
unpad: function unpad(t) {
|
||
var r = 255 & t.words[t.sigBytes - 1 >>> 2];
|
||
t.sigBytes -= r;
|
||
}
|
||
}, t.pad.Iso10126 = {
|
||
pad: function pad(r, e) {
|
||
var i = 4 * e,
|
||
n = i - r.sigBytes % i;
|
||
r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1));
|
||
},
|
||
unpad: function unpad(t) {
|
||
var r = 255 & t.words[t.sigBytes - 1 >>> 2];
|
||
t.sigBytes -= r;
|
||
}
|
||
}, t.pad.Iso97971 = {
|
||
pad: function pad(r, e) {
|
||
r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e);
|
||
},
|
||
unpad: function unpad(r) {
|
||
t.pad.ZeroPadding.unpad(r), r.sigBytes--;
|
||
}
|
||
}, t.mode.OFB = function () {
|
||
var r = t.lib.BlockCipherMode.extend(),
|
||
e = r.Encryptor = r.extend({
|
||
processBlock: function processBlock(t, r) {
|
||
var e = this._cipher,
|
||
i = e.blockSize,
|
||
n = this._iv,
|
||
o = this._keystream;
|
||
n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0);
|
||
|
||
for (var s = 0; s < i; s++) {
|
||
t[r + s] ^= o[s];
|
||
}
|
||
}
|
||
});
|
||
return r.Decryptor = e, r;
|
||
}(), t.pad.NoPadding = {
|
||
pad: function pad() {},
|
||
unpad: function unpad() {}
|
||
}, function (r) {
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.CipherParams,
|
||
o = e.enc,
|
||
s = o.Hex,
|
||
a = e.format;
|
||
a.Hex = {
|
||
stringify: function stringify(t) {
|
||
return t.ciphertext.toString(s);
|
||
},
|
||
parse: function parse(t) {
|
||
var r = s.parse(t);
|
||
return n.create({
|
||
ciphertext: r
|
||
});
|
||
}
|
||
};
|
||
}(), function () {
|
||
var r = t,
|
||
e = r.lib,
|
||
i = e.BlockCipher,
|
||
n = r.algo,
|
||
o = [],
|
||
s = [],
|
||
a = [],
|
||
c = [],
|
||
h = [],
|
||
l = [],
|
||
f = [],
|
||
u = [],
|
||
d = [],
|
||
v = [];
|
||
!function () {
|
||
for (var t = [], r = 0; r < 256; r++) {
|
||
r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283;
|
||
}
|
||
|
||
for (var e = 0, i = 0, r = 0; r < 256; r++) {
|
||
var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4;
|
||
n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e;
|
||
var p = t[e],
|
||
_ = t[p],
|
||
y = t[_],
|
||
g = 257 * t[n] ^ 16843008 * n;
|
||
a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g;
|
||
var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e;
|
||
f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1;
|
||
}
|
||
}();
|
||
|
||
var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
|
||
_ = n.AES = i.extend({
|
||
_doReset: function _doReset() {
|
||
if (!this._nRounds || this._keyPriorReset !== this._key) {
|
||
for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) {
|
||
if (a < e) s[a] = r[a];else {
|
||
var c = s[a - 1];
|
||
a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c;
|
||
}
|
||
}
|
||
|
||
for (var h = this._invKeySchedule = [], l = 0; l < n; l++) {
|
||
var a = n - l;
|
||
if (l % 4) var c = s[a];else var c = s[a - 4];
|
||
l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]];
|
||
}
|
||
}
|
||
},
|
||
encryptBlock: function encryptBlock(t, r) {
|
||
this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o);
|
||
},
|
||
decryptBlock: function decryptBlock(t, r) {
|
||
var e = t[r + 1];
|
||
t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s);
|
||
var e = t[r + 1];
|
||
t[r + 1] = t[r + 3], t[r + 3] = e;
|
||
},
|
||
_doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) {
|
||
for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) {
|
||
var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++],
|
||
_ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++],
|
||
y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++],
|
||
g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++];
|
||
|
||
h = p, l = _, f = y, u = g;
|
||
}
|
||
|
||
var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++],
|
||
_ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++],
|
||
y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++],
|
||
g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++];
|
||
|
||
t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g;
|
||
},
|
||
keySize: 8
|
||
});
|
||
|
||
r.AES = i._createHelper(_);
|
||
}(), function () {
|
||
function r(t, r) {
|
||
var e = (this._lBlock >>> t ^ this._rBlock) & r;
|
||
this._rBlock ^= e, this._lBlock ^= e << t;
|
||
}
|
||
|
||
function e(t, r) {
|
||
var e = (this._rBlock >>> t ^ this._lBlock) & r;
|
||
this._lBlock ^= e, this._rBlock ^= e << t;
|
||
}
|
||
|
||
var i = t,
|
||
n = i.lib,
|
||
o = n.WordArray,
|
||
s = n.BlockCipher,
|
||
a = i.algo,
|
||
c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4],
|
||
h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32],
|
||
l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28],
|
||
f = [{
|
||
0: 8421888,
|
||
268435456: 32768,
|
||
536870912: 8421378,
|
||
805306368: 2,
|
||
1073741824: 512,
|
||
1342177280: 8421890,
|
||
1610612736: 8389122,
|
||
1879048192: 8388608,
|
||
2147483648: 514,
|
||
2415919104: 8389120,
|
||
2684354560: 33280,
|
||
2952790016: 8421376,
|
||
3221225472: 32770,
|
||
3489660928: 8388610,
|
||
3758096384: 0,
|
||
4026531840: 33282,
|
||
134217728: 0,
|
||
402653184: 8421890,
|
||
671088640: 33282,
|
||
939524096: 32768,
|
||
1207959552: 8421888,
|
||
1476395008: 512,
|
||
1744830464: 8421378,
|
||
2013265920: 2,
|
||
2281701376: 8389120,
|
||
2550136832: 33280,
|
||
2818572288: 8421376,
|
||
3087007744: 8389122,
|
||
3355443200: 8388610,
|
||
3623878656: 32770,
|
||
3892314112: 514,
|
||
4160749568: 8388608,
|
||
1: 32768,
|
||
268435457: 2,
|
||
536870913: 8421888,
|
||
805306369: 8388608,
|
||
1073741825: 8421378,
|
||
1342177281: 33280,
|
||
1610612737: 512,
|
||
1879048193: 8389122,
|
||
2147483649: 8421890,
|
||
2415919105: 8421376,
|
||
2684354561: 8388610,
|
||
2952790017: 33282,
|
||
3221225473: 514,
|
||
3489660929: 8389120,
|
||
3758096385: 32770,
|
||
4026531841: 0,
|
||
134217729: 8421890,
|
||
402653185: 8421376,
|
||
671088641: 8388608,
|
||
939524097: 512,
|
||
1207959553: 32768,
|
||
1476395009: 8388610,
|
||
1744830465: 2,
|
||
2013265921: 33282,
|
||
2281701377: 32770,
|
||
2550136833: 8389122,
|
||
2818572289: 514,
|
||
3087007745: 8421888,
|
||
3355443201: 8389120,
|
||
3623878657: 0,
|
||
3892314113: 33280,
|
||
4160749569: 8421378
|
||
}, {
|
||
0: 1074282512,
|
||
16777216: 16384,
|
||
33554432: 524288,
|
||
50331648: 1074266128,
|
||
67108864: 1073741840,
|
||
83886080: 1074282496,
|
||
100663296: 1073758208,
|
||
117440512: 16,
|
||
134217728: 540672,
|
||
150994944: 1073758224,
|
||
167772160: 1073741824,
|
||
184549376: 540688,
|
||
201326592: 524304,
|
||
218103808: 0,
|
||
234881024: 16400,
|
||
251658240: 1074266112,
|
||
8388608: 1073758208,
|
||
25165824: 540688,
|
||
41943040: 16,
|
||
58720256: 1073758224,
|
||
75497472: 1074282512,
|
||
92274688: 1073741824,
|
||
109051904: 524288,
|
||
125829120: 1074266128,
|
||
142606336: 524304,
|
||
159383552: 0,
|
||
176160768: 16384,
|
||
192937984: 1074266112,
|
||
209715200: 1073741840,
|
||
226492416: 540672,
|
||
243269632: 1074282496,
|
||
260046848: 16400,
|
||
268435456: 0,
|
||
285212672: 1074266128,
|
||
301989888: 1073758224,
|
||
318767104: 1074282496,
|
||
335544320: 1074266112,
|
||
352321536: 16,
|
||
369098752: 540688,
|
||
385875968: 16384,
|
||
402653184: 16400,
|
||
419430400: 524288,
|
||
436207616: 524304,
|
||
452984832: 1073741840,
|
||
469762048: 540672,
|
||
486539264: 1073758208,
|
||
503316480: 1073741824,
|
||
520093696: 1074282512,
|
||
276824064: 540688,
|
||
293601280: 524288,
|
||
310378496: 1074266112,
|
||
327155712: 16384,
|
||
343932928: 1073758208,
|
||
360710144: 1074282512,
|
||
377487360: 16,
|
||
394264576: 1073741824,
|
||
411041792: 1074282496,
|
||
427819008: 1073741840,
|
||
444596224: 1073758224,
|
||
461373440: 524304,
|
||
478150656: 0,
|
||
494927872: 16400,
|
||
511705088: 1074266128,
|
||
528482304: 540672
|
||
}, {
|
||
0: 260,
|
||
1048576: 0,
|
||
2097152: 67109120,
|
||
3145728: 65796,
|
||
4194304: 65540,
|
||
5242880: 67108868,
|
||
6291456: 67174660,
|
||
7340032: 67174400,
|
||
8388608: 67108864,
|
||
9437184: 67174656,
|
||
10485760: 65792,
|
||
11534336: 67174404,
|
||
12582912: 67109124,
|
||
13631488: 65536,
|
||
14680064: 4,
|
||
15728640: 256,
|
||
524288: 67174656,
|
||
1572864: 67174404,
|
||
2621440: 0,
|
||
3670016: 67109120,
|
||
4718592: 67108868,
|
||
5767168: 65536,
|
||
6815744: 65540,
|
||
7864320: 260,
|
||
8912896: 4,
|
||
9961472: 256,
|
||
11010048: 67174400,
|
||
12058624: 65796,
|
||
13107200: 65792,
|
||
14155776: 67109124,
|
||
15204352: 67174660,
|
||
16252928: 67108864,
|
||
16777216: 67174656,
|
||
17825792: 65540,
|
||
18874368: 65536,
|
||
19922944: 67109120,
|
||
20971520: 256,
|
||
22020096: 67174660,
|
||
23068672: 67108868,
|
||
24117248: 0,
|
||
25165824: 67109124,
|
||
26214400: 67108864,
|
||
27262976: 4,
|
||
28311552: 65792,
|
||
29360128: 67174400,
|
||
30408704: 260,
|
||
31457280: 65796,
|
||
32505856: 67174404,
|
||
17301504: 67108864,
|
||
18350080: 260,
|
||
19398656: 67174656,
|
||
20447232: 0,
|
||
21495808: 65540,
|
||
22544384: 67109120,
|
||
23592960: 256,
|
||
24641536: 67174404,
|
||
25690112: 65536,
|
||
26738688: 67174660,
|
||
27787264: 65796,
|
||
28835840: 67108868,
|
||
29884416: 67109124,
|
||
30932992: 67174400,
|
||
31981568: 4,
|
||
33030144: 65792
|
||
}, {
|
||
0: 2151682048,
|
||
65536: 2147487808,
|
||
131072: 4198464,
|
||
196608: 2151677952,
|
||
262144: 0,
|
||
327680: 4198400,
|
||
393216: 2147483712,
|
||
458752: 4194368,
|
||
524288: 2147483648,
|
||
589824: 4194304,
|
||
655360: 64,
|
||
720896: 2147487744,
|
||
786432: 2151678016,
|
||
851968: 4160,
|
||
917504: 4096,
|
||
983040: 2151682112,
|
||
32768: 2147487808,
|
||
98304: 64,
|
||
163840: 2151678016,
|
||
229376: 2147487744,
|
||
294912: 4198400,
|
||
360448: 2151682112,
|
||
425984: 0,
|
||
491520: 2151677952,
|
||
557056: 4096,
|
||
622592: 2151682048,
|
||
688128: 4194304,
|
||
753664: 4160,
|
||
819200: 2147483648,
|
||
884736: 4194368,
|
||
950272: 4198464,
|
||
1015808: 2147483712,
|
||
1048576: 4194368,
|
||
1114112: 4198400,
|
||
1179648: 2147483712,
|
||
1245184: 0,
|
||
1310720: 4160,
|
||
1376256: 2151678016,
|
||
1441792: 2151682048,
|
||
1507328: 2147487808,
|
||
1572864: 2151682112,
|
||
1638400: 2147483648,
|
||
1703936: 2151677952,
|
||
1769472: 4198464,
|
||
1835008: 2147487744,
|
||
1900544: 4194304,
|
||
1966080: 64,
|
||
2031616: 4096,
|
||
1081344: 2151677952,
|
||
1146880: 2151682112,
|
||
1212416: 0,
|
||
1277952: 4198400,
|
||
1343488: 4194368,
|
||
1409024: 2147483648,
|
||
1474560: 2147487808,
|
||
1540096: 64,
|
||
1605632: 2147483712,
|
||
1671168: 4096,
|
||
1736704: 2147487744,
|
||
1802240: 2151678016,
|
||
1867776: 4160,
|
||
1933312: 2151682048,
|
||
1998848: 4194304,
|
||
2064384: 4198464
|
||
}, {
|
||
0: 128,
|
||
4096: 17039360,
|
||
8192: 262144,
|
||
12288: 536870912,
|
||
16384: 537133184,
|
||
20480: 16777344,
|
||
24576: 553648256,
|
||
28672: 262272,
|
||
32768: 16777216,
|
||
36864: 537133056,
|
||
40960: 536871040,
|
||
45056: 553910400,
|
||
49152: 553910272,
|
||
53248: 0,
|
||
57344: 17039488,
|
||
61440: 553648128,
|
||
2048: 17039488,
|
||
6144: 553648256,
|
||
10240: 128,
|
||
14336: 17039360,
|
||
18432: 262144,
|
||
22528: 537133184,
|
||
26624: 553910272,
|
||
30720: 536870912,
|
||
34816: 537133056,
|
||
38912: 0,
|
||
43008: 553910400,
|
||
47104: 16777344,
|
||
51200: 536871040,
|
||
55296: 553648128,
|
||
59392: 16777216,
|
||
63488: 262272,
|
||
65536: 262144,
|
||
69632: 128,
|
||
73728: 536870912,
|
||
77824: 553648256,
|
||
81920: 16777344,
|
||
86016: 553910272,
|
||
90112: 537133184,
|
||
94208: 16777216,
|
||
98304: 553910400,
|
||
102400: 553648128,
|
||
106496: 17039360,
|
||
110592: 537133056,
|
||
114688: 262272,
|
||
118784: 536871040,
|
||
122880: 0,
|
||
126976: 17039488,
|
||
67584: 553648256,
|
||
71680: 16777216,
|
||
75776: 17039360,
|
||
79872: 537133184,
|
||
83968: 536870912,
|
||
88064: 17039488,
|
||
92160: 128,
|
||
96256: 553910272,
|
||
100352: 262272,
|
||
104448: 553910400,
|
||
108544: 0,
|
||
112640: 553648128,
|
||
116736: 16777344,
|
||
120832: 262144,
|
||
124928: 537133056,
|
||
129024: 536871040
|
||
}, {
|
||
0: 268435464,
|
||
256: 8192,
|
||
512: 270532608,
|
||
768: 270540808,
|
||
1024: 268443648,
|
||
1280: 2097152,
|
||
1536: 2097160,
|
||
1792: 268435456,
|
||
2048: 0,
|
||
2304: 268443656,
|
||
2560: 2105344,
|
||
2816: 8,
|
||
3072: 270532616,
|
||
3328: 2105352,
|
||
3584: 8200,
|
||
3840: 270540800,
|
||
128: 270532608,
|
||
384: 270540808,
|
||
640: 8,
|
||
896: 2097152,
|
||
1152: 2105352,
|
||
1408: 268435464,
|
||
1664: 268443648,
|
||
1920: 8200,
|
||
2176: 2097160,
|
||
2432: 8192,
|
||
2688: 268443656,
|
||
2944: 270532616,
|
||
3200: 0,
|
||
3456: 270540800,
|
||
3712: 2105344,
|
||
3968: 268435456,
|
||
4096: 268443648,
|
||
4352: 270532616,
|
||
4608: 270540808,
|
||
4864: 8200,
|
||
5120: 2097152,
|
||
5376: 268435456,
|
||
5632: 268435464,
|
||
5888: 2105344,
|
||
6144: 2105352,
|
||
6400: 0,
|
||
6656: 8,
|
||
6912: 270532608,
|
||
7168: 8192,
|
||
7424: 268443656,
|
||
7680: 270540800,
|
||
7936: 2097160,
|
||
4224: 8,
|
||
4480: 2105344,
|
||
4736: 2097152,
|
||
4992: 268435464,
|
||
5248: 268443648,
|
||
5504: 8200,
|
||
5760: 270540808,
|
||
6016: 270532608,
|
||
6272: 270540800,
|
||
6528: 270532616,
|
||
6784: 8192,
|
||
7040: 2105352,
|
||
7296: 2097160,
|
||
7552: 0,
|
||
7808: 268435456,
|
||
8064: 268443656
|
||
}, {
|
||
0: 1048576,
|
||
16: 33555457,
|
||
32: 1024,
|
||
48: 1049601,
|
||
64: 34604033,
|
||
80: 0,
|
||
96: 1,
|
||
112: 34603009,
|
||
128: 33555456,
|
||
144: 1048577,
|
||
160: 33554433,
|
||
176: 34604032,
|
||
192: 34603008,
|
||
208: 1025,
|
||
224: 1049600,
|
||
240: 33554432,
|
||
8: 34603009,
|
||
24: 0,
|
||
40: 33555457,
|
||
56: 34604032,
|
||
72: 1048576,
|
||
88: 33554433,
|
||
104: 33554432,
|
||
120: 1025,
|
||
136: 1049601,
|
||
152: 33555456,
|
||
168: 34603008,
|
||
184: 1048577,
|
||
200: 1024,
|
||
216: 34604033,
|
||
232: 1,
|
||
248: 1049600,
|
||
256: 33554432,
|
||
272: 1048576,
|
||
288: 33555457,
|
||
304: 34603009,
|
||
320: 1048577,
|
||
336: 33555456,
|
||
352: 34604032,
|
||
368: 1049601,
|
||
384: 1025,
|
||
400: 34604033,
|
||
416: 1049600,
|
||
432: 1,
|
||
448: 0,
|
||
464: 34603008,
|
||
480: 33554433,
|
||
496: 1024,
|
||
264: 1049600,
|
||
280: 33555457,
|
||
296: 34603009,
|
||
312: 1,
|
||
328: 33554432,
|
||
344: 1048576,
|
||
360: 1025,
|
||
376: 34604032,
|
||
392: 33554433,
|
||
408: 34603008,
|
||
424: 0,
|
||
440: 34604033,
|
||
456: 1049601,
|
||
472: 1024,
|
||
488: 33555456,
|
||
504: 1048577
|
||
}, {
|
||
0: 134219808,
|
||
1: 131072,
|
||
2: 134217728,
|
||
3: 32,
|
||
4: 131104,
|
||
5: 134350880,
|
||
6: 134350848,
|
||
7: 2048,
|
||
8: 134348800,
|
||
9: 134219776,
|
||
10: 133120,
|
||
11: 134348832,
|
||
12: 2080,
|
||
13: 0,
|
||
14: 134217760,
|
||
15: 133152,
|
||
2147483648: 2048,
|
||
2147483649: 134350880,
|
||
2147483650: 134219808,
|
||
2147483651: 134217728,
|
||
2147483652: 134348800,
|
||
2147483653: 133120,
|
||
2147483654: 133152,
|
||
2147483655: 32,
|
||
2147483656: 134217760,
|
||
2147483657: 2080,
|
||
2147483658: 131104,
|
||
2147483659: 134350848,
|
||
2147483660: 0,
|
||
2147483661: 134348832,
|
||
2147483662: 134219776,
|
||
2147483663: 131072,
|
||
16: 133152,
|
||
17: 134350848,
|
||
18: 32,
|
||
19: 2048,
|
||
20: 134219776,
|
||
21: 134217760,
|
||
22: 134348832,
|
||
23: 131072,
|
||
24: 0,
|
||
25: 131104,
|
||
26: 134348800,
|
||
27: 134219808,
|
||
28: 134350880,
|
||
29: 133120,
|
||
30: 2080,
|
||
31: 134217728,
|
||
2147483664: 131072,
|
||
2147483665: 2048,
|
||
2147483666: 134348832,
|
||
2147483667: 133152,
|
||
2147483668: 32,
|
||
2147483669: 134348800,
|
||
2147483670: 134217728,
|
||
2147483671: 134219808,
|
||
2147483672: 134350880,
|
||
2147483673: 134217760,
|
||
2147483674: 134219776,
|
||
2147483675: 0,
|
||
2147483676: 133120,
|
||
2147483677: 2080,
|
||
2147483678: 131104,
|
||
2147483679: 134350848
|
||
}],
|
||
u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],
|
||
d = a.DES = s.extend({
|
||
_doReset: function _doReset() {
|
||
for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) {
|
||
var n = c[i] - 1;
|
||
e[i] = r[n >>> 5] >>> 31 - n % 32 & 1;
|
||
}
|
||
|
||
for (var o = this._subKeys = [], s = 0; s < 16; s++) {
|
||
for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) {
|
||
a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6;
|
||
}
|
||
|
||
a[0] = a[0] << 1 | a[0] >>> 31;
|
||
|
||
for (var i = 1; i < 7; i++) {
|
||
a[i] = a[i] >>> 4 * (i - 1) + 3;
|
||
}
|
||
|
||
a[7] = a[7] << 5 | a[7] >>> 27;
|
||
}
|
||
|
||
for (var u = this._invSubKeys = [], i = 0; i < 16; i++) {
|
||
u[i] = o[15 - i];
|
||
}
|
||
},
|
||
encryptBlock: function encryptBlock(t, r) {
|
||
this._doCryptBlock(t, r, this._subKeys);
|
||
},
|
||
decryptBlock: function decryptBlock(t, r) {
|
||
this._doCryptBlock(t, r, this._invSubKeys);
|
||
},
|
||
_doCryptBlock: function _doCryptBlock(t, i, n) {
|
||
this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765);
|
||
|
||
for (var o = 0; o < 16; o++) {
|
||
for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) {
|
||
h |= f[l][((c ^ s[l]) & u[l]) >>> 0];
|
||
}
|
||
|
||
this._lBlock = c, this._rBlock = a ^ h;
|
||
}
|
||
|
||
var d = this._lBlock;
|
||
this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock;
|
||
},
|
||
keySize: 2,
|
||
ivSize: 2,
|
||
blockSize: 2
|
||
});
|
||
i.DES = s._createHelper(d);
|
||
var v = a.TripleDES = s.extend({
|
||
_doReset: function _doReset() {
|
||
var t = this._key,
|
||
r = t.words;
|
||
this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6)));
|
||
},
|
||
encryptBlock: function encryptBlock(t, r) {
|
||
this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r);
|
||
},
|
||
decryptBlock: function decryptBlock(t, r) {
|
||
this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r);
|
||
},
|
||
keySize: 6,
|
||
ivSize: 2,
|
||
blockSize: 2
|
||
});
|
||
i.TripleDES = s._createHelper(v);
|
||
}(), function () {
|
||
function r() {
|
||
for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) {
|
||
r = (r + 1) % 256, e = (e + t[r]) % 256;
|
||
var o = t[r];
|
||
t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n;
|
||
}
|
||
|
||
return this._i = r, this._j = e, i;
|
||
}
|
||
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.StreamCipher,
|
||
o = e.algo,
|
||
s = o.RC4 = n.extend({
|
||
_doReset: function _doReset() {
|
||
for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) {
|
||
i[n] = n;
|
||
}
|
||
|
||
for (var n = 0, o = 0; n < 256; n++) {
|
||
var s = n % e,
|
||
a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255;
|
||
o = (o + i[n] + a) % 256;
|
||
var c = i[n];
|
||
i[n] = i[o], i[o] = c;
|
||
}
|
||
|
||
this._i = this._j = 0;
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, e) {
|
||
t[e] ^= r.call(this);
|
||
},
|
||
keySize: 8,
|
||
ivSize: 0
|
||
});
|
||
e.RC4 = n._createHelper(s);
|
||
var a = o.RC4Drop = s.extend({
|
||
cfg: s.cfg.extend({
|
||
drop: 192
|
||
}),
|
||
_doReset: function _doReset() {
|
||
s._doReset.call(this);
|
||
|
||
for (var t = this.cfg.drop; t > 0; t--) {
|
||
r.call(this);
|
||
}
|
||
}
|
||
});
|
||
e.RC4Drop = n._createHelper(a);
|
||
}(), t.mode.CTRGladman = function () {
|
||
function r(t) {
|
||
if (255 === (t >> 24 & 255)) {
|
||
var r = t >> 16 & 255,
|
||
e = t >> 8 & 255,
|
||
i = 255 & t;
|
||
255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i;
|
||
} else t += 1 << 24;
|
||
|
||
return t;
|
||
}
|
||
|
||
function e(t) {
|
||
return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t;
|
||
}
|
||
|
||
var i = t.lib.BlockCipherMode.extend(),
|
||
n = i.Encryptor = i.extend({
|
||
processBlock: function processBlock(t, r) {
|
||
var i = this._cipher,
|
||
n = i.blockSize,
|
||
o = this._iv,
|
||
s = this._counter;
|
||
o && (s = this._counter = o.slice(0), this._iv = void 0), e(s);
|
||
var a = s.slice(0);
|
||
i.encryptBlock(a, 0);
|
||
|
||
for (var c = 0; c < n; c++) {
|
||
t[r + c] ^= a[c];
|
||
}
|
||
}
|
||
});
|
||
return i.Decryptor = n, i;
|
||
}(), function () {
|
||
function r() {
|
||
for (var t = this._X, r = this._C, e = 0; e < 8; e++) {
|
||
a[e] = r[e];
|
||
}
|
||
|
||
r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0;
|
||
|
||
for (var e = 0; e < 8; e++) {
|
||
var i = t[e] + r[e],
|
||
n = 65535 & i,
|
||
o = i >>> 16,
|
||
s = ((n * n >>> 17) + n * o >>> 15) + o * o,
|
||
h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0);
|
||
c[e] = s ^ h;
|
||
}
|
||
|
||
t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0;
|
||
}
|
||
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.StreamCipher,
|
||
o = e.algo,
|
||
s = [],
|
||
a = [],
|
||
c = [],
|
||
h = o.Rabbit = n.extend({
|
||
_doReset: function _doReset() {
|
||
for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) {
|
||
t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8);
|
||
}
|
||
|
||
var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16],
|
||
o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]];
|
||
this._b = 0;
|
||
|
||
for (var i = 0; i < 4; i++) {
|
||
r.call(this);
|
||
}
|
||
|
||
for (var i = 0; i < 8; i++) {
|
||
o[i] ^= n[i + 4 & 7];
|
||
}
|
||
|
||
if (e) {
|
||
var s = e.words,
|
||
a = s[0],
|
||
c = s[1],
|
||
h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8),
|
||
l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8),
|
||
f = h >>> 16 | 4294901760 & l,
|
||
u = l << 16 | 65535 & h;
|
||
o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u;
|
||
|
||
for (var i = 0; i < 4; i++) {
|
||
r.call(this);
|
||
}
|
||
}
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, e) {
|
||
var i = this._X;
|
||
r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16;
|
||
|
||
for (var n = 0; n < 4; n++) {
|
||
s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n];
|
||
}
|
||
},
|
||
blockSize: 4,
|
||
ivSize: 2
|
||
});
|
||
e.Rabbit = n._createHelper(h);
|
||
}(), t.mode.CTR = function () {
|
||
var r = t.lib.BlockCipherMode.extend(),
|
||
e = r.Encryptor = r.extend({
|
||
processBlock: function processBlock(t, r) {
|
||
var e = this._cipher,
|
||
i = e.blockSize,
|
||
n = this._iv,
|
||
o = this._counter;
|
||
n && (o = this._counter = n.slice(0), this._iv = void 0);
|
||
var s = o.slice(0);
|
||
e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0;
|
||
|
||
for (var a = 0; a < i; a++) {
|
||
t[r + a] ^= s[a];
|
||
}
|
||
}
|
||
});
|
||
return r.Decryptor = e, r;
|
||
}(), function () {
|
||
function r() {
|
||
for (var t = this._X, r = this._C, e = 0; e < 8; e++) {
|
||
a[e] = r[e];
|
||
}
|
||
|
||
r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0;
|
||
|
||
for (var e = 0; e < 8; e++) {
|
||
var i = t[e] + r[e],
|
||
n = 65535 & i,
|
||
o = i >>> 16,
|
||
s = ((n * n >>> 17) + n * o >>> 15) + o * o,
|
||
h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0);
|
||
c[e] = s ^ h;
|
||
}
|
||
|
||
t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0;
|
||
}
|
||
|
||
var e = t,
|
||
i = e.lib,
|
||
n = i.StreamCipher,
|
||
o = e.algo,
|
||
s = [],
|
||
a = [],
|
||
c = [],
|
||
h = o.RabbitLegacy = n.extend({
|
||
_doReset: function _doReset() {
|
||
var t = this._key.words,
|
||
e = this.cfg.iv,
|
||
i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16],
|
||
n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]];
|
||
this._b = 0;
|
||
|
||
for (var o = 0; o < 4; o++) {
|
||
r.call(this);
|
||
}
|
||
|
||
for (var o = 0; o < 8; o++) {
|
||
n[o] ^= i[o + 4 & 7];
|
||
}
|
||
|
||
if (e) {
|
||
var s = e.words,
|
||
a = s[0],
|
||
c = s[1],
|
||
h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8),
|
||
l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8),
|
||
f = h >>> 16 | 4294901760 & l,
|
||
u = l << 16 | 65535 & h;
|
||
n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u;
|
||
|
||
for (var o = 0; o < 4; o++) {
|
||
r.call(this);
|
||
}
|
||
}
|
||
},
|
||
_doProcessBlock: function _doProcessBlock(t, e) {
|
||
var i = this._X;
|
||
r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16;
|
||
|
||
for (var n = 0; n < 4; n++) {
|
||
s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n];
|
||
}
|
||
},
|
||
blockSize: 4,
|
||
ivSize: 2
|
||
});
|
||
e.RabbitLegacy = n._createHelper(h);
|
||
}(), t.pad.ZeroPadding = {
|
||
pad: function pad(t, r) {
|
||
var e = 4 * r;
|
||
t.clamp(), t.sigBytes += e - (t.sigBytes % e || e);
|
||
},
|
||
unpad: function unpad(t) {
|
||
for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) {
|
||
e--;
|
||
}
|
||
|
||
t.sigBytes = e + 1;
|
||
}
|
||
}, t;
|
||
}); //# sourceMappingURL=crypto-js.min.js.map
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXGNyeXB0by1qcy5taW4uanMiXSwibmFtZXMiOlsidCIsInIiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwiQ3J5cHRvSlMiLCJlIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvdG90eXBlIiwiaSIsIm4iLCJsaWIiLCJvIiwiQmFzZSIsImV4dGVuZCIsIm1peEluIiwiaGFzT3duUHJvcGVydHkiLCJpbml0IiwiJHN1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ0b1N0cmluZyIsImNsb25lIiwicyIsIldvcmRBcnJheSIsIndvcmRzIiwic2lnQnl0ZXMiLCJsZW5ndGgiLCJjIiwic3RyaW5naWZ5IiwiY29uY2F0IiwiY2xhbXAiLCJjZWlsIiwiY2FsbCIsInNsaWNlIiwicmFuZG9tIiwiYSIsInB1c2giLCJlbmMiLCJIZXgiLCJqb2luIiwicGFyc2UiLCJwYXJzZUludCIsInN1YnN0ciIsImgiLCJMYXRpbjEiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaGFyQ29kZUF0IiwibCIsIlV0ZjgiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJFcnJvciIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZiIsIkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0iLCJyZXNldCIsIl9kYXRhIiwiX25EYXRhQnl0ZXMiLCJfYXBwZW5kIiwiX3Byb2Nlc3MiLCJibG9ja1NpemUiLCJtYXgiLCJfbWluQnVmZmVyU2l6ZSIsIm1pbiIsIl9kb1Byb2Nlc3NCbG9jayIsInUiLCJzcGxpY2UiLCJIYXNoZXIiLCJjZmciLCJfZG9SZXNldCIsInVwZGF0ZSIsImZpbmFsaXplIiwiX2RvRmluYWxpemUiLCJfY3JlYXRlSGVscGVyIiwiX2NyZWF0ZUhtYWNIZWxwZXIiLCJITUFDIiwiYWxnbyIsIk1hdGgiLCJCYXNlNjQiLCJfbWFwIiwiY2hhckF0IiwiX3JldmVyc2VNYXAiLCJpbmRleE9mIiwiYWJzIiwic2luIiwiTUQ1IiwiX2hhc2giLCJkIiwidiIsInAiLCJfIiwieSIsImciLCJCIiwidyIsImsiLCJTIiwibSIsIngiLCJiIiwiSCIsInoiLCJBIiwiQyIsIkQiLCJmbG9vciIsIkhtYWNNRDUiLCJTSEExIiwiSG1hY1NIQTEiLCJzcXJ0IiwicG93IiwiU0hBMjU2IiwiSG1hY1NIQTI1NiIsIlV0ZjE2IiwiVXRmMTZCRSIsIlV0ZjE2TEUiLCJBcnJheUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsImJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiUklQRU1EMTYwIiwiUiIsIkUiLCJNIiwiRiIsIkhtYWNSSVBFTUQxNjAiLCJfaGFzaGVyIiwiX29LZXkiLCJfaUtleSIsIlBCS0RGMiIsImtleVNpemUiLCJoYXNoZXIiLCJpdGVyYXRpb25zIiwiY29tcHV0ZSIsIkV2cEtERiIsIlNIQTIyNCIsIkhtYWNTSEEyMjQiLCJ4NjQiLCJXb3JkIiwiaGlnaCIsImxvdyIsInRvWDMyIiwiU0hBMyIsIm91dHB1dExlbmd0aCIsIl9zdGF0ZSIsIkhtYWNTSEEzIiwiU0hBNTEyIiwiUCIsIlciLCJPIiwiVSIsIkkiLCJLIiwiWCIsIkwiLCJqIiwiTiIsIlQiLCJaIiwicSIsIkciLCJKIiwiJCIsIlEiLCJWIiwiWSIsInR0IiwicnQiLCJldCIsIml0IiwibnQiLCJvdCIsInN0IiwiYXQiLCJjdCIsImh0IiwibHQiLCJmdCIsInV0IiwiZHQiLCJ2dCIsInB0IiwiX3QiLCJ5dCIsImd0IiwiQnQiLCJ3dCIsImt0IiwiU3QiLCJtdCIsInh0IiwiYnQiLCJIbWFjU0hBNTEyIiwiU0hBMzg0IiwiSG1hY1NIQTM4NCIsIkNpcGhlciIsImNyZWF0ZUVuY3J5cHRvciIsIl9FTkNfWEZPUk1fTU9ERSIsImNyZWF0ZURlY3J5cHRvciIsIl9ERUNfWEZPUk1fTU9ERSIsIl94Zm9ybU1vZGUiLCJfa2V5IiwicHJvY2VzcyIsIml2U2l6ZSIsImVuY3J5cHQiLCJkZWNyeXB0IiwiU3RyZWFtQ2lwaGVyIiwibW9kZSIsIkJsb2NrQ2lwaGVyTW9kZSIsIkVuY3J5cHRvciIsIkRlY3J5cHRvciIsIl9jaXBoZXIiLCJfaXYiLCJDQkMiLCJfcHJldkJsb2NrIiwicHJvY2Vzc0Jsb2NrIiwiZW5jcnlwdEJsb2NrIiwiZGVjcnlwdEJsb2NrIiwicGFkIiwiUGtjczciLCJ1bnBhZCIsIkJsb2NrQ2lwaGVyIiwicGFkZGluZyIsIml2IiwiX21vZGUiLCJfX2NyZWF0b3IiLCJDaXBoZXJQYXJhbXMiLCJmb3JtYXR0ZXIiLCJmb3JtYXQiLCJPcGVuU1NMIiwiY2lwaGVydGV4dCIsInNhbHQiLCJTZXJpYWxpemFibGVDaXBoZXIiLCJrZXkiLCJhbGdvcml0aG0iLCJfcGFyc2UiLCJrZGYiLCJleGVjdXRlIiwiUGFzc3dvcmRCYXNlZENpcGhlciIsIkNGQiIsIkVDQiIsIkFuc2lYOTIzIiwiSXNvMTAxMjYiLCJJc285Nzk3MSIsIlplcm9QYWRkaW5nIiwiT0ZCIiwiX2tleXN0cmVhbSIsIk5vUGFkZGluZyIsIkFFUyIsIl9uUm91bmRzIiwiX2tleVByaW9yUmVzZXQiLCJfa2V5U2NoZWR1bGUiLCJfaW52S2V5U2NoZWR1bGUiLCJfZG9DcnlwdEJsb2NrIiwiX2xCbG9jayIsIl9yQmxvY2siLCJERVMiLCJfc3ViS2V5cyIsIl9pbnZTdWJLZXlzIiwiVHJpcGxlREVTIiwiX2RlczEiLCJfZGVzMiIsIl9kZXMzIiwiX1MiLCJfaSIsIl9qIiwiUkM0IiwiUkM0RHJvcCIsImRyb3AiLCJDVFJHbGFkbWFuIiwiX2NvdW50ZXIiLCJfWCIsIl9DIiwiX2IiLCJSYWJiaXQiLCJDVFIiLCJSYWJiaXRMZWdhY3kiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGNBQVUsT0FB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YixFQUFlLENBQWYsRUFBaUIsQ0FBakIsRUFBbUIsQ0FBbkIsRUFBcUIsRUFBckIsRUFBd0IsRUFBeEIsRUFBMkIsRUFBM0IsRUFBOEIsRUFBOUIsRUFBaUMsQ0FBakMsRUFBbUMsQ0FBbkMsRUFBcUMsQ0FBckMsRUFBdUMsQ0FBdkMsRUFBeUMsQ0FBekMsRUFBMkMsQ0FBM0MsRUFBNkMsQ0FBN0MsRUFBK0MsRUFBL0MsRUFBa0QsRUFBbEQsRUFBcUQsQ0FBckQsRUFBdUQsQ0FBdkQsRUFBeUQsRUFBekQsRUFBNEQsQ0FBNUQsRUFBOEQsRUFBOUQsRUFBaUUsRUFBakUsRUFBb0UsQ0FBcEUsRUFBc0UsRUFBdEUsRUFBeUUsQ0FBekUsRUFBMkUsRUFBM0UsRUFBOEUsRUFBOUUsRUFBaUYsRUFBakYsRUFBb0YsRUFBcEYsRUFBdUYsQ0FBdkYsRUFBeUYsQ0FBekYsRUFBMkYsRUFBM0YsRUFBOEYsQ0FBOUYsRUFBZ0csRUFBaEcsRUFBbUcsRUFBbkcsRUFBc0csRUFBdEcsRUFBeUcsQ0FBekcsRUFBMkcsRUFBM0csRUFBOEcsQ0FBOUcsRUFBZ0gsQ0FBaEgsRUFBa0gsRUFBbEgsRUFBcUgsQ0FBckgsRUFBdUgsQ0FBdkgsRUFBeUgsRUFBekgsRUFBNEgsRUFBNUgsRUFBK0gsRUFBL0gsRUFBa0ksRUFBbEksRUFBcUksRUFBckksRUFBd0ksRUFBeEksRUFBMkksQ0FBM0ksRUFBNkksQ0FBN0ksRUFBK0ksQ0FBL0ksRUFBaUosRUFBakosRUFBb0osQ0FBcEosRUFBc0osQ0FBdEosRUFBd0osQ0FBeEosRUFBMEosQ0FBMUosRUFBNEosQ0FBNUosRUFBOEosRUFBOUosRUFBaUssQ0FBakssRUFBbUssRUFBbkssRUFBc0ssQ0FBdEssRUFBd0ssRUFBeEssRUFBMkssQ0FBM0ssRUFBNkssQ0FBN0ssRUFBK0ssRUFBL0ssRUFBa0wsRUFBbEwsRUFBcUwsQ0FBckwsRUFBdUwsRUFBdkwsRUFBMEwsRUFBMUwsRUFBNkwsRUFBN0wsRUFBZ00sRUFBaE0sRUFBbU0sQ0FBbk0sRUFBcU0sQ0FBck0sRUFBdU0sQ0FBdk0s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R0FBQyxDQUFiO0FBQWU7QUFBMUssR0FEbnlYLEVBQys4WFAsQ0FEdDlYO0FBQ3c5WCxDQURqaGYsQ0FBRCxFQUVBIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxyKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1leHBvcnRzPXIoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHIpOnQuQ3J5cHRvSlM9cigpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIHQ9dHx8ZnVuY3Rpb24odCxyKXt2YXIgZT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBlO3JldHVybiB0LnByb3RvdHlwZT1yLGU9bmV3IHQsdC5wcm90b3R5cGU9bnVsbCxlfX0oKSxpPXt9LG49aS5saWI9e30sbz1uLkJhc2U9ZnVuY3Rpb24oKXtyZXR1cm57ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciByPWUodGhpcyk7cmV0dXJuIHQmJnIubWl4SW4odCksci5oYXNPd25Qcm9wZXJ0eShcImluaXRcIikmJnRoaXMuaW5pdCE9PXIuaW5pdHx8KHIuaW5pdD1mdW5jdGlvbigpe3IuJHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksci5pbml0LnByb3RvdHlwZT1yLHIuJHN1cGVyPXRoaXMscn0sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5leHRlbmQoKTtyZXR1cm4gdC5pbml0LmFwcGx5KHQsYXJndW1lbnRzKSx0fSxpbml0OmZ1bmN0aW9uKCl7fSxtaXhJbjpmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYodGhpc1tyXT10W3JdKTt0Lmhhc093blByb3BlcnR5KFwidG9TdHJpbmdcIikmJih0aGlzLnRvU3RyaW5nPXQudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpLHM9bi5Xb3JkQXJyYXk9by5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz00KnQubGVuZ3RofSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8Yykuc3RyaW5naWZ5KHRoaXMpfSxjb25jYXQ6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy53b3JkcyxlPXQud29yZHMsaT10aGlzLnNpZ0J5dGVzLG49dC5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksaSU0KWZvcih2YXIgbz0wO288bjtvKyspe3ZhciBzPWVbbz4+PjJdPj4+MjQtbyU0KjgmMjU1O3JbaStvPj4+Ml18PXM8PDI0LShpK28pJTQqOH1lbHNlIGZvcih2YXIgbz0wO288bjtvKz00KXJbaStvPj4+Ml09ZVtvPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPW4sdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLndvcmRzLGU9dGhpcy5zaWdCeXRlcztyW2U+Pj4yXSY9NDI5NDk2NzI5NTw8MzItZSU0Kjgsci5sZW5ndGg9dC5jZWlsKGUvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksdH0scmFuZG9tOmZ1bmN0aW9uKHIpe2Zvcih2YXIgZSxpPVtdLG49ZnVuY3Rpb24ocil7dmFyIHI9cixlPTk4NzY1NDMyMSxpPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7ZT0zNjk2OSooNjU1MzUmZSkrKGU+PjE2KSZpLHI9MThlMyooNjU1MzUmcikrKHI+PjE2KSZpO3ZhciBuPShlPDwxNikrciZpO3JldHVybiBuLz00Mjk0OTY3Mjk2LG4rPS41LG4qKHQucmFuZG9tKCk+LjU/MTotMSl9fSxvPTA7bzxyO28rPTQpe3ZhciBhPW4oNDI5NDk2NzI5NiooZXx8dC5yYW5kb20oKSkpO2U9OTg3NjU0MDcxKmEoKSxpLnB1c2goNDI5NDk2NzI5NiphKCl8MCl9cmV0dXJuIG5ldyBzLmluaXQoaSxyKX19KSxhPWkuZW5jPXt9LGM9YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKChvPj4+NCkudG9TdHJpbmcoMTYpKSxpLnB1c2goKDE1Jm8pLnRvU3RyaW5nKDE2KSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKz0yKWVbaT4+PjNdfD1wYXJzZUludCh0LnN1YnN0cihpLDIpLDE2KTw8MjQtaSU4KjQ7cmV0dXJuIG5ldyBzLmluaXQoZSxyLzIpfX0saD1hLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bisrKXt2YXIgbz1yW24+Pj4yXT4+PjI0LW4lNCo4JjI1NTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PSgyNTUmdC5jaGFyQ29kZUF0KGkpKTw8MjQtaSU0Kjg7cmV0dXJuIG5ldyBzLmluaXQoZSxyKX19LGw9YS5VdGY4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGguc3RyaW5naWZ5KHQpKSl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiTWFsZm9ybWVkIFVURi04IGRhdGFcIil9fSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gaC5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX19LGY9bi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPW8uZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IHMuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24odCl7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PWwucGFyc2UodCkpLHRoaXMuX2RhdGEuY29uY2F0KHQpLHRoaXMuX25EYXRhQnl0ZXMrPXQuc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKHIpe3ZhciBlPXRoaXMuX2RhdGEsaT1lLndvcmRzLG49ZS5zaWdCeXRlcyxvPXRoaXMuYmxvY2tTaXplLGE9NCpvLGM9bi9hO2M9cj90LmNlaWwoYyk6dC5tYXgoKDB8YyktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTt2YXIgaD1jKm8sbD10Lm1pbig0Kmgsbik7aWYoaCl7Zm9yKHZhciBmPTA7ZjxoO2YrPW8pdGhpcy5fZG9Qcm9jZXNzQmxvY2soaSxmKTt2YXIgdT1pLnNwbGljZSgwLGgpO2Uuc2lnQnl0ZXMtPWx9cmV0dXJuIG5ldyBzLmluaXQodSxsKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLHR9LF9taW5CdWZmZXJTaXplOjB9KSx1PShuLkhhc2hlcj1mLmV4dGVuZCh7Y2ZnOm8uZXh0ZW5kKCksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwZW5kKHQpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxibG9ja1NpemU6MTYsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHQuaW5pdChlKS5maW5hbGl6ZShyKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiBuZXcgdS5ITUFDLmluaXQodCxlKS5maW5hbGl6ZShyKX19fSksaS5hbGdvPXt9KTtyZXR1cm4gaX0oTWF0aCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIsZSl7Zm9yKHZhciBpPVtdLG89MCxzPTA7czxyO3MrKylpZihzJTQpe3ZhciBhPWVbdC5jaGFyQ29kZUF0KHMtMSldPDxzJTQqMixjPWVbdC5jaGFyQ29kZUF0KHMpXT4+PjYtcyU0KjI7aVtvPj4+Ml18PShhfGMpPDwyNC1vJTQqOCxvKyt9cmV0dXJuIG4uY3JlYXRlKGksbyl9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLkJhc2U2ND17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9dGhpcy5fbWFwO3QuY2xhbXAoKTtmb3IodmFyIG49W10sbz0wO288ZTtvKz0zKWZvcih2YXIgcz1yW28+Pj4yXT4+PjI0LW8lNCo4JjI1NSxhPXJbbysxPj4+Ml0+Pj4yNC0obysxKSU0KjgmMjU1LGM9cltvKzI+Pj4yXT4+PjI0LShvKzIpJTQqOCYyNTUsaD1zPDwxNnxhPDw4fGMsbD0wO2w8NCYmbysuNzUqbDxlO2wrKyluLnB1c2goaS5jaGFyQXQoaD4+PjYqKDMtbCkmNjMpKTt2YXIgZj1pLmNoYXJBdCg2NCk7aWYoZilmb3IoO24ubGVuZ3RoJTQ7KW4ucHVzaChmKTtyZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxpPXRoaXMuX21hcCxuPXRoaXMuX3JldmVyc2VNYXA7aWYoIW4pe249dGhpcy5fcmV2ZXJzZU1hcD1bXTtmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyluW2kuY2hhckNvZGVBdChvKV09b312YXIgcz1pLmNoYXJBdCg2NCk7aWYocyl7dmFyIGE9dC5pbmRleE9mKHMpO2EhPT0tMSYmKGU9YSl9cmV0dXJuIHIodCxlLG4pfSxfbWFwOlwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIn19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyJmV8fnImaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIGkodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZpfGUmfmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBuKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHJeZV5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbyh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhlXihyfH5pKSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfXZhciBzPXQsYT1zLmxpYixjPWEuV29yZEFycmF5LGg9YS5IYXNoZXIsbD1zLmFsZ28sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDY0O3QrKylmW3RdPTQyOTQ5NjcyOTYqci5hYnMoci5zaW4odCsxKSl8MH0oKTt2YXIgdT1sLk1ENT1oLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBjLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIHM9MDtzPDE2O3MrKyl7dmFyIGE9citzLGM9dFthXTt0W2FdPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpfXZhciBoPXRoaXMuX2hhc2gud29yZHMsbD10W3IrMF0sdT10W3IrMV0sZD10W3IrMl0sdj10W3IrM10scD10W3IrNF0sXz10W3IrNV0seT10W3IrNl0sZz10W3IrN10sQj10W3IrOF0sdz10W3IrOV0saz10W3IrMTBdLFM9dFtyKzExXSxtPXRbcisxMl0seD10W3IrMTNdLGI9dFtyKzE0XSxIPXRbcisxNV0sej1oWzBdLEE9aFsxXSxDPWhbMl0sRD1oWzNdO3o9ZSh6LEEsQyxELGwsNyxmWzBdKSxEPWUoRCx6LEEsQyx1LDEyLGZbMV0pLEM9ZShDLEQseixBLGQsMTcsZlsyXSksQT1lKEEsQyxELHosdiwyMixmWzNdKSx6PWUoeixBLEMsRCxwLDcsZls0XSksRD1lKEQseixBLEMsXywxMixmWzVdKSxDPWUoQyxELHosQSx5LDE3LGZbNl0pLEE9ZShBLEMsRCx6LGcsMjIsZls3XSksej1lKHosQSxDLEQsQiw3LGZbOF0pLEQ9ZShELHosQSxDLHcsMTIsZls5XSksQz1lKEMsRCx6LEEsaywxNyxmWzEwXSksQT1lKEEsQyxELHosUywyMixmWzExXSksej1lKHosQSxDLEQsbSw3LGZbMTJdKSxEPWUoRCx6LEEsQyx4LDEyLGZbMTNdKSxDPWUoQyxELHosQSxiLDE3LGZbMTRdKSxBPWUoQSxDLEQseixILDIyLGZbMTVdKSx6PWkoeixBLEMsRCx1LDUsZlsxNl0pLEQ9aShELHosQSxDLHksOSxmWzE3XSksQz1pKEMsRCx6LEEsUywxNCxmWzE4XSksQT1pKEEsQyxELHosbCwyMCxmWzE5XSksej1pKHosQSxDLEQsXyw1LGZbMjBdKSxEPWkoRCx6LEEsQyxrLDksZlsyMV0pLEM9aShDLEQseixBLEgsMTQsZlsyMl0pLEE9aShBLEMsRCx6LHAsMjAsZlsyM10pLHo9aSh6LEEsQyxELHcsNSxmWzI0XSksRD1pKEQseixBLEMsYiw5LGZbMjVdKSxDPWkoQyxELHosQSx2LDE0LGZbMjZdKSxBPWkoQSxDLEQseixCLDIwLGZbMjddKSx6PWkoeixBLEMsRCx4LDUsZlsyOF0pLEQ9aShELHosQSxDLGQsOSxmWzI5XSksQz1pKEMsRCx6LEEsZywxNCxmWzMwXSksQT1pKEEsQyxELHosbSwyMCxmWzMxXSksej1uKHosQSxDLEQsXyw0LGZbMzJdKSxEPW4oRCx6LEEsQyxCLDExLGZbMzNdKSxDPW4oQyxELHosQSxTLDE2LGZbMzRdKSxBPW4oQSxDLEQseixiLDIzLGZbMzVdKSx6PW4oeixBLEMsRCx1LDQsZlszNl0pLEQ9bihELHosQSxDLHAsMTEsZlszN10pLEM9bihDLEQseixBLGcsMTYsZlszOF0pLEE9bihBLEMsRCx6LGssMjMsZlszOV0pLHo9bih6LEEsQyxELHgsNCxmWzQwXSksRD1uKEQseixBLEMsbCwxMSxmWzQxXSksQz1uKEMsRCx6LEEsdiwxNixmWzQyXSksQT1uKEEsQyxELHoseSwyMyxmWzQzXSksej1uKHosQSxDLEQsdyw0LGZbNDRdKSxEPW4oRCx6LEEsQyxtLDExLGZbNDVdKSxDPW4oQyxELHosQSxILDE2LGZbNDZdKSxBPW4oQSxDLEQseixkLDIzLGZbNDddKSx6PW8oeixBLEMsRCxsLDYsZls0OF0pLEQ9byhELHosQSxDLGcsMTAsZls0OV0pLEM9byhDLEQseixBLGIsMTUsZls1MF0pLEE9byhBLEMsRCx6LF8sMjEsZls1MV0pLHo9byh6LEEsQyxELG0sNixmWzUyXSksRD1vKEQseixBLEMsdiwxMCxmWzUzXSksQz1vKEMsRCx6LEEsaywxNSxmWzU0XSksQT1vKEEsQyxELHosdSwyMSxmWzU1XSksej1vKHosQSxDLEQsQiw2LGZbNTZdKSxEPW8oRCx6LEEsQyxILDEwLGZbNTddKSxDPW8oQyxELHosQSx5LDE1LGZbNThdKSxBPW8oQSxDLEQseix4LDIxLGZbNTldKSx6PW8oeixBLEMsRCxwLDYsZls2MF0pLEQ9byhELHosQSxDLFMsMTAsZls2MV0pLEM9byhDLEQseixBLGQsMTUsZls2Ml0pLEE9byhBLEMsRCx6LHcsMjEsZls2M10pLGhbMF09aFswXSt6fDAsaFsxXT1oWzFdK0F8MCxoWzJdPWhbMl0rQ3wwLGhbM109aFszXStEfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7ZVtuPj4+NV18PTEyODw8MjQtbiUzMjt2YXIgbz1yLmZsb29yKGkvNDI5NDk2NzI5Nikscz1pO2VbKG4rNjQ+Pj45PDw0KSsxNV09MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCksZVsobis2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KSx0LnNpZ0J5dGVzPTQqKGUubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIGE9dGhpcy5faGFzaCxjPWEud29yZHMsaD0wO2g8NDtoKyspe3ZhciBsPWNbaF07Y1toXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX1yZXR1cm4gYX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1oLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7cy5NRDU9aC5fY3JlYXRlSGVscGVyKHUpLHMuSG1hY01ENT1oLl9jcmVhdGVIbWFjSGVscGVyKHUpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49ZS5IYXNoZXIsbz1yLmFsZ28scz1bXSxhPW8uU0hBMT1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBpLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLGE9ZVszXSxjPWVbNF0saD0wO2g8ODA7aCsrKXtpZihoPDE2KXNbaF09MHx0W3IraF07ZWxzZXt2YXIgbD1zW2gtM11ec1toLThdXnNbaC0xNF1ec1toLTE2XTtzW2hdPWw8PDF8bD4+PjMxfXZhciBmPShpPDw1fGk+Pj4yNykrYytzW2hdO2YrPWg8MjA/KG4mb3x+biZhKSsxNTE4NTAwMjQ5Omg8NDA/KG5eb15hKSsxODU5Nzc1MzkzOmg8NjA/KG4mb3xuJmF8byZhKS0xODk0MDA3NTg4OihuXm9eYSktODk5NDk3NTE0LGM9YSxhPW8sbz1uPDwzMHxuPj4+MixuPWksaT1mfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXSthfDAsZVs0XT1lWzRdK2N8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyZXR1cm4gcltpPj4+NV18PTEyODw8MjQtaSUzMixyWyhpKzY0Pj4+OTw8NCkrMTRdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzY0Pj4+OTw8NCkrMTVdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtyLlNIQTE9bi5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTE9bi5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS5hbGdvLGE9W10sYz1bXTshZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZT1yLnNxcnQodCksaT0yO2k8PWU7aSsrKWlmKCEodCVpKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBlKHQpe3JldHVybiA0Mjk0OTY3Mjk2Kih0LSgwfHQpKXwwfWZvcih2YXIgaT0yLG49MDtuPDY0Oyl0KGkpJiYobjw4JiYoYVtuXT1lKHIucG93KGksLjUpKSksY1tuXT1lKHIucG93KGksMS8zKSksbisrKSxpKyt9KCk7dmFyIGg9W10sbD1zLlNIQTI1Nj1vLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoYS5zbGljZSgwKSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sbD1lWzVdLGY9ZVs2XSx1PWVbN10sZD0wO2Q8NjQ7ZCsrKXtpZihkPDE2KWhbZF09MHx0W3IrZF07ZWxzZXt2YXIgdj1oW2QtMTVdLHA9KHY8PDI1fHY+Pj43KV4odjw8MTR8dj4+PjE4KV52Pj4+MyxfPWhbZC0yXSx5PShfPDwxNXxfPj4+MTcpXihfPDwxM3xfPj4+MTkpXl8+Pj4xMDtoW2RdPXAraFtkLTddK3kraFtkLTE2XX12YXIgZz1hJmxefmEmZixCPWkmbl5pJm9ebiZvLHc9KGk8PDMwfGk+Pj4yKV4oaTw8MTl8aT4+PjEzKV4oaTw8MTB8aT4+PjIyKSxrPShhPDwyNnxhPj4+NileKGE8PDIxfGE+Pj4xMSleKGE8PDd8YT4+PjI1KSxTPXUraytnK2NbZF0raFtkXSxtPXcrQjt1PWYsZj1sLGw9YSxhPXMrU3wwLHM9byxvPW4sbj1pLGk9UyttfDB9ZVswXT1lWzBdK2l8MCxlWzFdPWVbMV0rbnwwLGVbMl09ZVsyXStvfDAsZVszXT1lWzNdK3N8MCxlWzRdPWVbNF0rYXwwLGVbNV09ZVs1XStsfDAsZVs2XT1lWzZdK2Z8MCxlWzddPWVbN10rdXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO3JldHVybiBlW24+Pj41XXw9MTI4PDwyNC1uJTMyLGVbKG4rNjQ+Pj45PDw0KSsxNF09ci5mbG9vcihpLzQyOTQ5NjcyOTYpLGVbKG4rNjQ+Pj45PDw0KSsxNV09aSx0LnNpZ0J5dGVzPTQqZS5sZW5ndGgsdGhpcy5fcHJvY2VzcygpLHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2UuU0hBMjU2PW8uX2NyZWF0ZUhlbHBlcihsKSxlLkhtYWNTSEEyNTY9by5fY3JlYXRlSG1hY0hlbHBlcihsKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQpe3JldHVybiB0PDw4JjQyNzgyNTUzNjB8dD4+PjgmMTY3MTE5MzV9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLlV0ZjE2PW8uVXRmMTZCRT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bis9Mil7dmFyIG89cltuPj4+Ml0+Pj4xNi1uJTQqOCY2NTUzNTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+MV18PXQuY2hhckNvZGVBdChpKTw8MTYtaSUyKjE2O3JldHVybiBuLmNyZWF0ZShlLDIqcil9fTtvLlV0ZjE2TEU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC53b3JkcyxpPXQuc2lnQnl0ZXMsbj1bXSxvPTA7bzxpO28rPTIpe3ZhciBzPXIoZVtvPj4+Ml0+Pj4xNi1vJTQqOCY2NTUzNSk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocykpfXJldHVybiBuLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxpPVtdLG89MDtvPGU7bysrKWlbbz4+PjFdfD1yKHQuY2hhckNvZGVBdChvKTw8MTYtbyUyKjE2KTtyZXR1cm4gbi5jcmVhdGUoaSwyKmUpfX19KCksZnVuY3Rpb24oKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBBcnJheUJ1ZmZlcil7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1pLmluaXQsbz1pLmluaXQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYodD1uZXcgVWludDhBcnJheSh0KSksKHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OENsYW1wZWRBcnJheSYmdCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx0IGluc3RhbmNlb2YgSW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgSW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHI9dC5ieXRlTGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PXRbaV08PDI0LWklNCo4O24uY2FsbCh0aGlzLGUscil9ZWxzZSBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07by5wcm90b3R5cGU9aX19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSl7cmV0dXJuIHRecl5lfWZ1bmN0aW9uIGkodCxyLGUpe3JldHVybiB0JnJ8fnQmZX1mdW5jdGlvbiBuKHQscixlKXtyZXR1cm4odHx+cileZX1mdW5jdGlvbiBvKHQscixlKXtyZXR1cm4gdCZlfHImfmV9ZnVuY3Rpb24gcyh0LHIsZSl7cmV0dXJuIHReKHJ8fmUpfWZ1bmN0aW9uIGEodCxyKXtyZXR1cm4gdDw8cnx0Pj4+MzItcn12YXIgYz10LGg9Yy5saWIsbD1oLldvcmRBcnJheSxmPWguSGFzaGVyLHU9Yy5hbGdvLGQ9bC5jcmVhdGUoWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10pLHY9bC5jcmVhdGUoWzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0pLHA9bC5jcmVhdGUoWzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdKSxfPWwuY3JlYXRlKFs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXSkseT1sLmNyZWF0ZShbMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSksZz1sLmNyZWF0ZShbMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXSksQj11LlJJUEVNRDE2MD1mLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPWwuY3JlYXRlKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGM9MDtjPDE2O2MrKyl7dmFyIGg9citjLGw9dFtoXTt0W2hdPTE2NzExOTM1JihsPDw4fGw+Pj4yNCl8NDI3ODI1NTM2MCYobDw8MjR8bD4+PjgpfXZhciBmLHUsQix3LGssUyxtLHgsYixILHo9dGhpcy5faGFzaC53b3JkcyxBPXkud29yZHMsQz1nLndvcmRzLEQ9ZC53b3JkcyxSPXYud29yZHMsRT1wLndvcmRzLE09Xy53b3JkcztTPWY9elswXSxtPXU9elsxXSx4PUI9elsyXSxiPXc9elszXSxIPWs9els0XTtmb3IodmFyIEYsYz0wO2M8ODA7Yys9MSlGPWYrdFtyK0RbY11dfDAsRis9YzwxNj9lKHUsQix3KStBWzBdOmM8MzI/aSh1LEIsdykrQVsxXTpjPDQ4P24odSxCLHcpK0FbMl06Yzw2ND9vKHUsQix3KStBWzNdOnModSxCLHcpK0FbNF0sRnw9MCxGPWEoRixFW2NdKSxGPUYra3wwLGY9ayxrPXcsdz1hKEIsMTApLEI9dSx1PUYsRj1TK3RbcitSW2NdXXwwLEYrPWM8MTY/cyhtLHgsYikrQ1swXTpjPDMyP28obSx4LGIpK0NbMV06Yzw0OD9uKG0seCxiKStDWzJdOmM8NjQ/aShtLHgsYikrQ1szXTplKG0seCxiKStDWzRdLEZ8PTAsRj1hKEYsTVtjXSksRj1GK0h8MCxTPUgsSD1iLGI9YSh4LDEwKSx4PW0sbT1GO0Y9elsxXStCK2J8MCx6WzFdPXpbMl0rdytIfDAselsyXT16WzNdK2srU3wwLHpbM109els0XStmK218MCx6WzRdPXpbMF0rdSt4fDAselswXT1GfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoZTw8OHxlPj4+MjQpfDQyNzgyNTUzNjAmKGU8PDI0fGU+Pj44KSx0LnNpZ0J5dGVzPTQqKHIubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIG49dGhpcy5faGFzaCxvPW4ud29yZHMscz0wO3M8NTtzKyspe3ZhciBhPW9bc107b1tzXT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KX1yZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1mLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7Yy5SSVBFTUQxNjA9Zi5fY3JlYXRlSGVscGVyKEIpLGMuSG1hY1JJUEVNRDE2MD1mLl9jcmVhdGVIbWFjSGVscGVyKEIpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPXIuZW5jLG89bi5VdGY4LHM9ci5hbGdvO3MuSE1BQz1pLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3Q9dGhpcy5faGFzaGVyPW5ldyB0LmluaXQsXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW8ucGFyc2UocikpO3ZhciBlPXQuYmxvY2tTaXplLGk9NCplO3Iuc2lnQnl0ZXM+aSYmKHI9dC5maW5hbGl6ZShyKSksci5jbGFtcCgpO2Zvcih2YXIgbj10aGlzLl9vS2V5PXIuY2xvbmUoKSxzPXRoaXMuX2lLZXk9ci5jbG9uZSgpLGE9bi53b3JkcyxjPXMud29yZHMsaD0wO2g8ZTtoKyspYVtoXV49MTU0OTU1NjgyOCxjW2hdXj05MDk1MjI0ODY7bi5zaWdCeXRlcz1zLnNpZ0J5dGVzPWksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaGVyLnVwZGF0ZSh0KSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt2YXIgcj10aGlzLl9oYXNoZXIsZT1yLmZpbmFsaXplKHQpO3IucmVzZXQoKTt2YXIgaT1yLmZpbmFsaXplKHRoaXMuX29LZXkuY2xvbmUoKS5jb25jYXQoZSkpO3JldHVybiBpfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLlNIQTEsYT1vLkhNQUMsYz1vLlBCS0RGMj1pLmV4dGVuZCh7Y2ZnOmkuZXh0ZW5kKHtrZXlTaXplOjQsaGFzaGVyOnMsaXRlcmF0aW9uczoxfSksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCl9LGNvbXB1dGU6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5jZmcsaT1hLmNyZWF0ZShlLmhhc2hlcix0KSxvPW4uY3JlYXRlKCkscz1uLmNyZWF0ZShbMV0pLGM9by53b3JkcyxoPXMud29yZHMsbD1lLmtleVNpemUsZj1lLml0ZXJhdGlvbnM7Yy5sZW5ndGg8bDspe3ZhciB1PWkudXBkYXRlKHIpLmZpbmFsaXplKHMpO2kucmVzZXQoKTtmb3IodmFyIGQ9dS53b3Jkcyx2PWQubGVuZ3RoLHA9dSxfPTE7XzxmO18rKyl7cD1pLmZpbmFsaXplKHApLGkucmVzZXQoKTtmb3IodmFyIHk9cC53b3JkcyxnPTA7Zzx2O2crKylkW2ddXj15W2ddfW8uY29uY2F0KHUpLGhbMF0rK31yZXR1cm4gby5zaWdCeXRlcz00Kmwsb319KTtyLlBCS0RGMj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGMuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uTUQ1LGE9by5FdnBLREY9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9ZS5oYXNoZXIuY3JlYXRlKCksbz1uLmNyZWF0ZSgpLHM9by53b3JkcyxhPWUua2V5U2l6ZSxjPWUuaXRlcmF0aW9ucztzLmxlbmd0aDxhOyl7aCYmaS51cGRhdGUoaCk7dmFyIGg9aS51cGRhdGUodCkuZmluYWxpemUocik7aS5yZXNldCgpO2Zvcih2YXIgbD0xO2w8YztsKyspaD1pLmZpbmFsaXplKGgpLGkucmVzZXQoKTtvLmNvbmNhdChoKX1yZXR1cm4gby5zaWdCeXRlcz00KmEsb319KTtyLkV2cEtERj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGEuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPXIuYWxnbyxvPW4uU0hBMjU2LHM9bi5TSEEyMjQ9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9by5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT00LHR9fSk7ci5TSEEyMjQ9by5fY3JlYXRlSGVscGVyKHMpLHIuSG1hY1NIQTIyND1vLl9jcmVhdGVIbWFjSGVscGVyKHMpfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9ZS54NjQ9e307cy5Xb3JkPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQscil7dGhpcy5oaWdoPXQsdGhpcy5sb3c9cn19KSxzLldvcmRBcnJheT1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3Q9dGhpcy53b3Jkcz10fHxbXSxlIT1yP3RoaXMuc2lnQnl0ZXM9ZTp0aGlzLnNpZ0J5dGVzPTgqdC5sZW5ndGh9LHRvWDMyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMud29yZHMscj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKXt2YXIgbj10W2ldO2UucHVzaChuLmhpZ2gpLGUucHVzaChuLmxvdyl9cmV0dXJuIG8uY3JlYXRlKGUsdGhpcy5zaWdCeXRlcyl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKSxyPXQud29yZHM9dGhpcy53b3Jkcy5zbGljZSgwKSxlPXIubGVuZ3RoLGk9MDtpPGU7aSsrKXJbaV09cltpXS5jbG9uZSgpO3JldHVybiB0fX0pfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89aS5IYXNoZXIscz1lLng2NCxhPXMuV29yZCxjPWUuYWxnbyxoPVtdLGw9W10sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MSxyPTAsZT0wO2U8MjQ7ZSsrKXtoW3QrNSpyXT0oZSsxKSooZSsyKS8yJTY0O3ZhciBpPXIlNSxuPSgyKnQrMypyKSU1O3Q9aSxyPW59Zm9yKHZhciB0PTA7dDw1O3QrKylmb3IodmFyIHI9MDtyPDU7cisrKWxbdCs1KnJdPXIrKDIqdCszKnIpJTUqNTtmb3IodmFyIG89MSxzPTA7czwyNDtzKyspe2Zvcih2YXIgYz0wLHU9MCxkPTA7ZDw3O2QrKyl7aWYoMSZvKXt2YXIgdj0oMTw8ZCktMTt2PDMyP3VePTE8PHY6Y149MTw8di0zMn0xMjgmbz9vPW88PDFeMTEzOm88PD0xfWZbc109YS5jcmVhdGUoYyx1KX19KCk7dmFyIHU9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwyNTt0KyspdVt0XT1hLmNyZWF0ZSgpfSgpO3ZhciBkPWMuU0hBMz1vLmV4dGVuZCh7Y2ZnOm8uY2ZnLmV4dGVuZCh7b3V0cHV0TGVuZ3RoOjUxMn0pLF9kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3N0YXRlPVtdLHI9MDtyPDI1O3IrKyl0W3JdPW5ldyBhLmluaXQ7dGhpcy5ibG9ja1NpemU9KDE2MDAtMip0aGlzLmNmZy5vdXRwdXRMZW5ndGgpLzMyfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5fc3RhdGUsaT10aGlzLmJsb2NrU2l6ZS8yLG49MDtuPGk7bisrKXt2YXIgbz10W3IrMipuXSxzPXRbcisyKm4rMV07bz0xNjcxMTkzNSYobzw8OHxvPj4+MjQpfDQyNzgyNTUzNjAmKG88PDI0fG8+Pj44KSxzPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpO3ZhciBhPWVbbl07YS5oaWdoXj1zLGEubG93Xj1vfWZvcih2YXIgYz0wO2M8MjQ7YysrKXtmb3IodmFyIGQ9MDtkPDU7ZCsrKXtmb3IodmFyIHY9MCxwPTAsXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO3ZePWEuaGlnaCxwXj1hLmxvd312YXIgeT11W2RdO3kuaGlnaD12LHkubG93PXB9Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIGc9dVsoZCs0KSU1XSxCPXVbKGQrMSklNV0sdz1CLmhpZ2gsaz1CLmxvdyx2PWcuaGlnaF4odzw8MXxrPj4+MzEpLHA9Zy5sb3deKGs8PDF8dz4+PjMxKSxfPTA7Xzw1O18rKyl7dmFyIGE9ZVtkKzUqX107YS5oaWdoXj12LGEubG93Xj1wfWZvcih2YXIgUz0xO1M8MjU7UysrKXt2YXIgYT1lW1NdLG09YS5oaWdoLHg9YS5sb3csYj1oW1NdO2lmKGI8MzIpdmFyIHY9bTw8Ynx4Pj4+MzItYixwPXg8PGJ8bT4+PjMyLWI7ZWxzZSB2YXIgdj14PDxiLTMyfG0+Pj42NC1iLHA9bTw8Yi0zMnx4Pj4+NjQtYjt2YXIgSD11W2xbU11dO0guaGlnaD12LEgubG93PXB9dmFyIHo9dVswXSxBPWVbMF07ei5oaWdoPUEuaGlnaCx6Lmxvdz1BLmxvdztmb3IodmFyIGQ9MDtkPDU7ZCsrKWZvcih2YXIgXz0wO188NTtfKyspe3ZhciBTPWQrNSpfLGE9ZVtTXSxDPXVbU10sRD11WyhkKzEpJTUrNSpfXSxSPXVbKGQrMiklNSs1Kl9dO2EuaGlnaD1DLmhpZ2hefkQuaGlnaCZSLmhpZ2gsYS5sb3c9Qy5sb3defkQubG93JlIubG93fXZhciBhPWVbMF0sRT1mW2NdO2EuaGlnaF49RS5oaWdoLGEubG93Xj1FLmxvd319LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT0oOCp0aGlzLl9uRGF0YUJ5dGVzLDgqdC5zaWdCeXRlcyksbz0zMip0aGlzLmJsb2NrU2l6ZTtlW2k+Pj41XXw9MTw8MjQtaSUzMixlWyhyLmNlaWwoKGkrMSkvbykqbz4+PjUpLTFdfD0xMjgsdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIHM9dGhpcy5fc3RhdGUsYT10aGlzLmNmZy5vdXRwdXRMZW5ndGgvOCxjPWEvOCxoPVtdLGw9MDtsPGM7bCsrKXt2YXIgZj1zW2xdLHU9Zi5oaWdoLGQ9Zi5sb3c7dT0xNjcxMTkzNSYodTw8OHx1Pj4+MjQpfDQyNzgyNTUzNjAmKHU8PDI0fHU+Pj44KSxkPTE2NzExOTM1JihkPDw4fGQ+Pj4yNCl8NDI3ODI1NTM2MCYoZDw8MjR8ZD4+PjgpLGgucHVzaChkKSxoLnB1c2godSl9cmV0dXJuIG5ldyBuLmluaXQoaCxhKX0sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpLHI9dC5fc3RhdGU9dGhpcy5fc3RhdGUuc2xpY2UoMCksZT0wO2U8MjU7ZSsrKXJbZV09cltlXS5jbG9uZSgpO3JldHVybiB0fX0pO2UuU0hBMz1vLl9jcmVhdGVIZWxwZXIoZCksZS5IbWFjU0hBMz1vLl9jcmVhdGVIbWFjSGVscGVyKGQpfShNYXRoKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gcy5jcmVhdGUuYXBwbHkocyxhcmd1bWVudHMpfXZhciBlPXQsaT1lLmxpYixuPWkuSGFzaGVyLG89ZS54NjQscz1vLldvcmQsYT1vLldvcmRBcnJheSxjPWUuYWxnbyxoPVtyKDExMTYzNTI0MDgsMzYwOTc2NzQ1OCkscigxODk5NDQ3NDQxLDYwMjg5MTcyNSkscigzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLHIoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxyKDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxyKDE1MDg5NzA5OTMsMzA1MzgzNDI2NSkscigyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLHIoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxyKDM2MjQzODEwODAsMjczNDg4MzM5NCkscigzMTA1OTg0MDEsMTE2NDk5NjU0Mikscig2MDcyMjUyNzgsMTMyMzYxMDc2NCkscigxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLHIoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxyKDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxyKDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxyKDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCkscigzODM1MzkwNDAxLDI2NjY2MTM0NTgpLHIoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLHIoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLHIoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLHIoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLHIoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxyKDE1NTUwODE2OTIsMzE3NTIxODEzMikscigxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLHIoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxyKDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxyKDI5NTI5OTY4MDgsMjU2NjU5NDg3OSkscigzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLHIoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxyKDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSkscigxMTM5MjY5OTMsMzc1ODMyNjM4MykscigzMzgyNDE4OTUsMTY4NzE3OTM2KSxyKDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxyKDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxyKDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSkscigxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLHIoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxyKDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCkscigyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLHIoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLHIoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxyKDI4MjAzMDI0MTEsMzE1ODQ1NDI3MykscigzMjU5NzMwODAwLDM1MDU5NTI2NTcpLHIoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLHIoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxyKDM2MDAzNTI4MDQsMTQzMjcyNTc3Nikscig0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLHIoMjc1NDIzMzQ0LDg1MTE2OTcyMCkscig0MzAyMjc3MzQsMzEwMDgyMzc1Mikscig1MDY5NDg2MTYsMTM2MzI1ODE5NSkscig2NTkwNjA1NTYsMzc1MDY4NTU5Mykscig4ODM5OTc4NzcsMzc4NTA1MDI4MCkscig5NTgxMzk1NzEsMzMxODMwNzQyNykscigxMzIyODIyMjE4LDM4MTI3MjM0MDMpLHIoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxyKDE3NDc4NzM3NzksMzYwMjAzNjg5OSkscigxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLHIoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxyKDIyMjc3MzA0NTIsMjcxNjkwNDMwNikscigyMzYxODUyNDI0LDQ0Mjc3NjA0NCkscigyNDI4NDM2NDc0LDU5MzY5ODM0NCkscigyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLHIoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxyKDMzMjkzMjUyOTgsMzgxNTkyMDQyNykscigzMzkxNTY5NjE0LDM5MjgzODM5MDApLHIoMzUxNTI2NzI3MSw1NjYyODA3MTEpLHIoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxyKDQxMTg2MzAyNzEsNDAwMDIzOTk5MikscigxMTY0MTg0NzQsMTkxNDEzODU1NCkscigxNzQyOTI0MjEsMjczMTA1NTI3MCkscigyODkzODAzNTYsMzIwMzk5MzAwNikscig0NjAzOTMyNjksMzIwNjIwMzE1KSxyKDY4NTQ3MTczMyw1ODc0OTY4MzYpLHIoODUyMTQyOTcxLDEwODY3OTI4NTEpLHIoMTAxNzAzNjI5OCwzNjU1NDMxMDApLHIoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxyKDEyODgwMzM0NzAsMzQwOTg1NTE1OCkscigxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLHIoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLHIoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0sbD1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDgwO3QrKylsW3RdPXIoKX0oKTt2YXIgZj1jLlNIQTUxMj1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBhLmluaXQoW25ldyBzLmluaXQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKSxuZXcgcy5pbml0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSksbmV3IHMuaW5pdCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpLG5ldyBzLmluaXQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KSxuZXcgcy5pbml0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyksbmV3IHMuaW5pdCgyNjAwODIyOTI0LDcyNTUxMTE5OSksbmV3IHMuaW5pdCg1Mjg3MzQ2MzUsNDIxNTM4OTU0NyksbmV3IHMuaW5pdCgxNTQxNDU5MjI1LDMyNzAzMzIwOSldKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX2hhc2gud29yZHMsaT1lWzBdLG49ZVsxXSxvPWVbMl0scz1lWzNdLGE9ZVs0XSxjPWVbNV0sZj1lWzZdLHU9ZVs3XSxkPWkuaGlnaCx2PWkubG93LHA9bi5oaWdoLF89bi5sb3cseT1vLmhpZ2gsZz1vLmxvdyxCPXMuaGlnaCx3PXMubG93LGs9YS5oaWdoLFM9YS5sb3csbT1jLmhpZ2gseD1jLmxvdyxiPWYuaGlnaCxIPWYubG93LHo9dS5oaWdoLEE9dS5sb3csQz1kLEQ9dixSPXAsRT1fLE09eSxGPWcsUD1CLFc9dyxPPWssVT1TLEk9bSxLPXgsWD1iLEw9SCxqPXosTj1BLFQ9MDtUPDgwO1QrKyl7dmFyIFo9bFtUXTtpZihUPDE2KXZhciBxPVouaGlnaD0wfHRbcisyKlRdLEc9Wi5sb3c9MHx0W3IrMipUKzFdO2Vsc2V7dmFyIEo9bFtULTE1XSwkPUouaGlnaCxRPUoubG93LFY9KCQ+Pj4xfFE8PDMxKV4oJD4+Pjh8UTw8MjQpXiQ+Pj43LFk9KFE+Pj4xfCQ8PDMxKV4oUT4+Pjh8JDw8MjQpXihRPj4+N3wkPDwyNSksdHQ9bFtULTJdLHJ0PXR0LmhpZ2gsZXQ9dHQubG93LGl0PShydD4+PjE5fGV0PDwxMyleKHJ0PDwzfGV0Pj4+MjkpXnJ0Pj4+NixudD0oZXQ+Pj4xOXxydDw8MTMpXihldDw8M3xydD4+PjI5KV4oZXQ+Pj42fHJ0PDwyNiksb3Q9bFtULTddLHN0PW90LmhpZ2gsYXQ9b3QubG93LGN0PWxbVC0xNl0saHQ9Y3QuaGlnaCxsdD1jdC5sb3csRz1ZK2F0LHE9VitzdCsoRz4+PjA8WT4+PjA/MTowKSxHPUcrbnQscT1xK2l0KyhHPj4+MDxudD4+PjA/MTowKSxHPUcrbHQscT1xK2h0KyhHPj4+MDxsdD4+PjA/MTowKTtaLmhpZ2g9cSxaLmxvdz1HfXZhciBmdD1PJklefk8mWCx1dD1VJkteflUmTCxkdD1DJlJeQyZNXlImTSx2dD1EJkVeRCZGXkUmRixwdD0oQz4+PjI4fEQ8PDQpXihDPDwzMHxEPj4+MileKEM8PDI1fEQ+Pj43KSxfdD0oRD4+PjI4fEM8PDQpXihEPDwzMHxDPj4+MileKEQ8PDI1fEM+Pj43KSx5dD0oTz4+PjE0fFU8PDE4KV4oTz4+PjE4fFU8PDE0KV4oTzw8MjN8VT4+PjkpLGd0PShVPj4+MTR8Tzw8MTgpXihVPj4+MTh8Tzw8MTQpXihVPDwyM3xPPj4+OSksQnQ9aFtUXSx3dD1CdC5oaWdoLGt0PUJ0LmxvdyxTdD1OK2d0LG10PWoreXQrKFN0Pj4+MDxOPj4+MD8xOjApLFN0PVN0K3V0LG10PW10K2Z0KyhTdD4+PjA8dXQ+Pj4wPzE6MCksU3Q9U3Qra3QsbXQ9bXQrd3QrKFN0Pj4+MDxrdD4+PjA/MTowKSxTdD1TdCtHLG10PW10K3ErKFN0Pj4+MDxHPj4+MD8xOjApLHh0PV90K3Z0LGJ0PXB0K2R0Kyh4dD4+PjA8X3Q+Pj4wPzE6MCk7aj1YLE49TCxYPUksTD1LLEk9TyxLPVUsVT1XK1N0fDAsTz1QK210KyhVPj4+MDxXPj4+MD8xOjApfDAsUD1NLFc9RixNPVIsRj1FLFI9QyxFPUQsRD1TdCt4dHwwLEM9bXQrYnQrKEQ+Pj4wPFN0Pj4+MD8xOjApfDB9dj1pLmxvdz12K0QsaS5oaWdoPWQrQysodj4+PjA8RD4+PjA/MTowKSxfPW4ubG93PV8rRSxuLmhpZ2g9cCtSKyhfPj4+MDxFPj4+MD8xOjApLGc9by5sb3c9ZytGLG8uaGlnaD15K00rKGc+Pj4wPEY+Pj4wPzE6MCksdz1zLmxvdz13K1cscy5oaWdoPUIrUCsodz4+PjA8Vz4+PjA/MTowKSxTPWEubG93PVMrVSxhLmhpZ2g9aytPKyhTPj4+MDxVPj4+MD8xOjApLHg9Yy5sb3c9eCtLLGMuaGlnaD1tK0krKHg+Pj4wPEs+Pj4wPzE6MCksSD1mLmxvdz1IK0wsZi5oaWdoPWIrWCsoSD4+PjA8TD4+PjA/MTowKSxBPXUubG93PUErTix1LmhpZ2g9eitqKyhBPj4+MDxOPj4+MD8xOjApfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSsxMjg+Pj4xMDw8NSkrMzBdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzEyOD4+PjEwPDw1KSszMV09ZSx0LnNpZ0J5dGVzPTQqci5sZW5ndGgsdGhpcy5fcHJvY2VzcygpO3ZhciBuPXRoaXMuX2hhc2gudG9YMzIoKTtyZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9LGJsb2NrU2l6ZTozMn0pO2UuU0hBNTEyPW4uX2NyZWF0ZUhlbHBlcihmKSxlLkhtYWNTSEE1MTI9bi5fY3JlYXRlSG1hY0hlbHBlcihmKX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLng2NCxpPWUuV29yZCxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEE1MTIsYT1vLlNIQTM4ND1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoW25ldyBpLmluaXQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKSxuZXcgaS5pbml0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKSxuZXcgaS5pbml0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KSxuZXcgaS5pbml0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KSxuZXcgaS5pbml0KDE3MzE0MDU0MTUsNDI5MDc3NTg1NyksbmV3IGkuaW5pdCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpLG5ldyBpLmluaXQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KSxuZXcgaS5pbml0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCldKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD1zLl9kb0ZpbmFsaXplLmNhbGwodGhpcyk7cmV0dXJuIHQuc2lnQnl0ZXMtPTE2LHR9fSk7ci5TSEEzODQ9cy5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTM4ND1zLl9jcmVhdGVIbWFjSGVscGVyKGEpfSgpLHQubGliLkNpcGhlcnx8ZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5CYXNlLG89aS5Xb3JkQXJyYXkscz1pLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0sYT1lLmVuYyxjPShhLlV0ZjgsYS5CYXNlNjQpLGg9ZS5hbGdvLGw9aC5FdnBLREYsZj1pLkNpcGhlcj1zLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKCksY3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSx0LHIpfSxpbml0OmZ1bmN0aW9uKHQscixlKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoZSksdGhpcy5feGZvcm1Nb2RlPXQsdGhpcy5fa2V5PXIsdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3MucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCl9LGZpbmFsaXplOmZ1bmN0aW9uKHQpe3QmJnRoaXMuX2FwcGVuZCh0KTt2YXIgcj10aGlzLl9kb0ZpbmFsaXplKCk7cmV0dXJuIHJ9LGtleVNpemU6NCxpdlNpemU6NCxfRU5DX1hGT1JNX01PREU6MSxfREVDX1hGT1JNX01PREU6MixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9tOnd9cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5lbmNyeXB0KHIsZSxpLG4pfSxkZWNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5kZWNyeXB0KHIsZSxpLG4pfX19fSgpfSksdT0oaS5TdHJlYW1DaXBoZXI9Zi5leHRlbmQoe19kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcHJvY2VzcyghMCk7cmV0dXJuIHR9LGJsb2NrU2l6ZToxfSksZS5tb2RlPXt9KSxkPWkuQmxvY2tDaXBoZXJNb2RlPW4uZXh0ZW5kKHtjcmVhdGVFbmNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLkRlY3J5cHRvci5jcmVhdGUodCxyKX0saW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlcj10LHRoaXMuX2l2PXJ9fSksdj11LkNCQz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW47dGhpcy5faXY9cn1lbHNlIHZhciBvPXRoaXMuX3ByZXZCbG9jaztmb3IodmFyIHM9MDtzPGk7cysrKXRbZStzXV49b1tzXX12YXIgZT1kLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7dC5jYWxsKHRoaXMscixlLG4pLGkuZW5jcnlwdEJsb2NrKHIsZSksdGhpcy5fcHJldkJsb2NrPXIuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocixlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXIuc2xpY2UoZSxlK24pO2kuZGVjcnlwdEJsb2NrKHIsZSksdC5jYWxsKHRoaXMscixlLG4pLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCkscD1lLnBhZD17fSxfPXAuUGtjczc9e3BhZDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT00KnIsaT1lLXQuc2lnQnl0ZXMlZSxuPWk8PDI0fGk8PDE2fGk8PDh8aSxzPVtdLGE9MDthPGk7YSs9NClzLnB1c2gobik7dmFyIGM9by5jcmVhdGUocyxpKTt0LmNvbmNhdChjKX0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHk9KGkuQmxvY2tDaXBoZXI9Zi5leHRlbmQoe2NmZzpmLmNmZy5leHRlbmQoe21vZGU6dixwYWRkaW5nOl99KSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKTt2YXIgdD10aGlzLmNmZyxyPXQuaXYsZT10Lm1vZGU7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl2YXIgaT1lLmNyZWF0ZUVuY3J5cHRvcjtlbHNle3ZhciBpPWUuY3JlYXRlRGVjcnlwdG9yO3RoaXMuX21pbkJ1ZmZlclNpemU9MX10aGlzLl9tb2RlJiZ0aGlzLl9tb2RlLl9fY3JlYXRvcj09aT90aGlzLl9tb2RlLmluaXQodGhpcyxyJiZyLndvcmRzKToodGhpcy5fbW9kZT1pLmNhbGwoZSx0aGlzLHImJnIud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPWkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayh0LHIpfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2ZnLnBhZGRpbmc7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl7dC5wYWQodGhpcy5fZGF0YSx0aGlzLmJsb2NrU2l6ZSk7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCl9ZWxzZXt2YXIgcj10aGlzLl9wcm9jZXNzKCEwKTt0LnVucGFkKHIpfXJldHVybiByfSxibG9ja1NpemU6NH0pLGkuQ2lwaGVyUGFyYW1zPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMubWl4SW4odCl9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybih0fHx0aGlzLmZvcm1hdHRlcikuc3RyaW5naWZ5KHRoaXMpfX0pKSxnPWUuZm9ybWF0PXt9LEI9Zy5PcGVuU1NMPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIHI9dC5jaXBoZXJ0ZXh0LGU9dC5zYWx0O2lmKGUpdmFyIGk9by5jcmVhdGUoWzEzOTg4OTM2ODQsMTcwMTA3NjgzMV0pLmNvbmNhdChlKS5jb25jYXQocik7ZWxzZSB2YXIgaT1yO3JldHVybiBpLnRvU3RyaW5nKGMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1jLnBhcnNlKHQpLGU9ci53b3JkcztpZigxMzk4ODkzNjg0PT1lWzBdJiYxNzAxMDc2ODMxPT1lWzFdKXt2YXIgaT1vLmNyZWF0ZShlLnNsaWNlKDIsNCkpO2Uuc3BsaWNlKDAsNCksci5zaWdCeXRlcy09MTZ9cmV0dXJuIHkuY3JlYXRlKHtjaXBoZXJ0ZXh0OnIsc2FsdDppfSl9fSx3PWkuU2VyaWFsaXphYmxlQ2lwaGVyPW4uZXh0ZW5kKHtjZmc6bi5leHRlbmQoe2Zvcm1hdDpCfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj10LmNyZWF0ZUVuY3J5cHRvcihlLGkpLG89bi5maW5hbGl6ZShyKSxzPW4uY2ZnO3JldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpvLGtleTplLGl2OnMuaXYsYWxnb3JpdGhtOnQsbW9kZTpzLm1vZGUscGFkZGluZzpzLnBhZGRpbmcsYmxvY2tTaXplOnQuYmxvY2tTaXplLGZvcm1hdHRlcjppLmZvcm1hdH0pfSxkZWNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpLHI9dGhpcy5fcGFyc2UocixpLmZvcm1hdCk7dmFyIG49dC5jcmVhdGVEZWNyeXB0b3IoZSxpKS5maW5hbGl6ZShyLmNpcGhlcnRleHQpO3JldHVybiBufSxfcGFyc2U6ZnVuY3Rpb24odCxyKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9yLnBhcnNlKHQsdGhpcyk6dH19KSxrPWUua2RmPXt9LFM9ay5PcGVuU1NMPXtleGVjdXRlOmZ1bmN0aW9uKHQscixlLGkpe2l8fChpPW8ucmFuZG9tKDgpKTt2YXIgbj1sLmNyZWF0ZSh7a2V5U2l6ZTpyK2V9KS5jb21wdXRlKHQsaSkscz1vLmNyZWF0ZShuLndvcmRzLnNsaWNlKHIpLDQqZSk7cmV0dXJuIG4uc2lnQnl0ZXM9NCpyLHkuY3JlYXRlKHtrZXk6bixpdjpzLHNhbHQ6aX0pfX0sbT1pLlBhc3N3b3JkQmFzZWRDaXBoZXI9dy5leHRlbmQoe2NmZzp3LmNmZy5leHRlbmQoe2tkZjpTfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplKTtpLml2PW4uaXY7dmFyIG89dy5lbmNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG8ubWl4SW4obiksb30sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPWkua2RmLmV4ZWN1dGUoZSx0LmtleVNpemUsdC5pdlNpemUsci5zYWx0KTtpLml2PW4uaXY7dmFyIG89dy5kZWNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG99fSl9KCksdC5tb2RlLkNGQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUsaSl7dmFyIG49dGhpcy5faXY7aWYobil7dmFyIG89bi5zbGljZSgwKTt0aGlzLl9pdj12b2lkIDB9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7aS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGU7cysrKXRbcitzXV49b1tzXX12YXIgZT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7cmV0dXJuIGUuRW5jcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZTtyLmNhbGwodGhpcyx0LGUsbixpKSx0aGlzLl9wcmV2QmxvY2s9dC5zbGljZShlLGUrbil9fSksZS5EZWNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dC5zbGljZShlLGUrbik7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPW99fSksZX0oKSx0Lm1vZGUuRUNCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiByLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0LHIpfX0pLHIuRGVjcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQscil9fSkscn0oKSx0LnBhZC5BbnNpWDkyMz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9dC5zaWdCeXRlcyxpPTQqcixuPWktZSVpLG89ZStuLTE7dC5jbGFtcCgpLHQud29yZHNbbz4+PjJdfD1uPDwyNC1vJTQqOCx0LnNpZ0J5dGVzKz1ufSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvMTAxMjY9e3BhZDpmdW5jdGlvbihyLGUpe3ZhciBpPTQqZSxuPWktci5zaWdCeXRlcyVpO3IuY29uY2F0KHQubGliLldvcmRBcnJheS5yYW5kb20obi0xKSkuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoW248PDI0XSwxKSl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx0LnBhZC5Jc285Nzk3MT17cGFkOmZ1bmN0aW9uKHIsZSl7ci5jb25jYXQodC5saWIuV29yZEFycmF5LmNyZWF0ZShbMjE0NzQ4MzY0OF0sMSkpLHQucGFkLlplcm9QYWRkaW5nLnBhZChyLGUpfSx1bnBhZDpmdW5jdGlvbihyKXt0LnBhZC5aZXJvUGFkZGluZy51bnBhZChyKSxyLnNpZ0J5dGVzLS19fSx0Lm1vZGUuT0ZCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9rZXlzdHJlYW07biYmKG89dGhpcy5fa2V5c3RyZWFtPW4uc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKSxlLmVuY3J5cHRCbG9jayhvLDApO2Zvcih2YXIgcz0wO3M8aTtzKyspdFtyK3NdXj1vW3NdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksdC5wYWQuTm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5DaXBoZXJQYXJhbXMsbz1lLmVuYyxzPW8uSGV4LGE9ZS5mb3JtYXQ7YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaXBoZXJ0ZXh0LnRvU3RyaW5nKHMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1zLnBhcnNlKHQpO3JldHVybiBuLmNyZWF0ZSh7Y2lwaGVydGV4dDpyfSl9fX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmxvY2tDaXBoZXIsbj1yLmFsZ28sbz1bXSxzPVtdLGE9W10sYz1bXSxoPVtdLGw9W10sZj1bXSx1PVtdLGQ9W10sdj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10scj0wO3I8MjU2O3IrKylyPDEyOD90W3JdPXI8PDE6dFtyXT1yPDwxXjI4Mztmb3IodmFyIGU9MCxpPTAscj0wO3I8MjU2O3IrKyl7dmFyIG49aV5pPDwxXmk8PDJeaTw8M15pPDw0O249bj4+PjheMjU1Jm5eOTksb1tlXT1uLHNbbl09ZTt2YXIgcD10W2VdLF89dFtwXSx5PXRbX10sZz0yNTcqdFtuXV4xNjg0MzAwOCpuO2FbZV09Zzw8MjR8Zz4+PjgsY1tlXT1nPDwxNnxnPj4+MTYsaFtlXT1nPDw4fGc+Pj4yNCxsW2VdPWc7dmFyIGc9MTY4NDMwMDkqeV42NTUzNypfXjI1NypwXjE2ODQzMDA4KmU7ZltuXT1nPDwyNHxnPj4+OCx1W25dPWc8PDE2fGc+Pj4xNixkW25dPWc8PDh8Zz4+PjI0LHZbbl09ZyxlPyhlPXBedFt0W3RbeV5wXV1dLGlePXRbdFtpXV0pOmU9aT0xfX0oKTt2YXIgcD1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sXz1uLkFFUz1pLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7Zm9yKHZhciB0PXRoaXMuX2tleVByaW9yUmVzZXQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMvNCxpPXRoaXMuX25Sb3VuZHM9ZSs2LG49NCooaSsxKSxzPXRoaXMuX2tleVNjaGVkdWxlPVtdLGE9MDthPG47YSsrKWlmKGE8ZSlzW2FdPXJbYV07ZWxzZXt2YXIgYz1zW2EtMV07YSVlP2U+NiYmYSVlPT00JiYoYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSk6KGM9Yzw8OHxjPj4+MjQsYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSxjXj1wW2EvZXwwXTw8MjQpLHNbYV09c1thLWVdXmN9Zm9yKHZhciBoPXRoaXMuX2ludktleVNjaGVkdWxlPVtdLGw9MDtsPG47bCsrKXt2YXIgYT1uLWw7aWYobCU0KXZhciBjPXNbYV07ZWxzZSB2YXIgYz1zW2EtNF07bDw0fHxhPD00P2hbbF09YzpoW2xdPWZbb1tjPj4+MjRdXV51W29bYz4+PjE2JjI1NV1dXmRbb1tjPj4+OCYyNTVdXV52W29bMjU1JmNdXX19fSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2tleVNjaGVkdWxlLGEsYyxoLGwsbyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRbcisxXTt0W3IrMV09dFtyKzNdLHRbciszXT1lLHRoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52S2V5U2NoZWR1bGUsZix1LGQsdixzKTt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LHIsZSxpLG4sbyxzLGEpe2Zvcih2YXIgYz10aGlzLl9uUm91bmRzLGg9dFtyXV5lWzBdLGw9dFtyKzFdXmVbMV0sZj10W3IrMl1eZVsyXSx1PXRbciszXV5lWzNdLGQ9NCx2PTE7djxjO3YrKyl7dmFyIHA9aVtoPj4+MjRdXm5bbD4+PjE2JjI1NV1eb1tmPj4+OCYyNTVdXnNbMjU1JnVdXmVbZCsrXSxfPWlbbD4+PjI0XV5uW2Y+Pj4xNiYyNTVdXm9bdT4+PjgmMjU1XV5zWzI1NSZoXV5lW2QrK10seT1pW2Y+Pj4yNF1eblt1Pj4+MTYmMjU1XV5vW2g+Pj44JjI1NV1ec1syNTUmbF1eZVtkKytdLGc9aVt1Pj4+MjRdXm5baD4+PjE2JjI1NV1eb1tsPj4+OCYyNTVdXnNbMjU1JmZdXmVbZCsrXTtoPXAsbD1fLGY9eSx1PWd9dmFyIHA9KGFbaD4+PjI0XTw8MjR8YVtsPj4+MTYmMjU1XTw8MTZ8YVtmPj4+OCYyNTVdPDw4fGFbMjU1JnVdKV5lW2QrK10sXz0oYVtsPj4+MjRdPDwyNHxhW2Y+Pj4xNiYyNTVdPDwxNnxhW3U+Pj44JjI1NV08PDh8YVsyNTUmaF0pXmVbZCsrXSx5PShhW2Y+Pj4yNF08PDI0fGFbdT4+PjE2JjI1NV08PDE2fGFbaD4+PjgmMjU1XTw8OHxhWzI1NSZsXSleZVtkKytdLGc9KGFbdT4+PjI0XTw8MjR8YVtoPj4+MTYmMjU1XTw8MTZ8YVtsPj4+OCYyNTVdPDw4fGFbMjU1JmZdKV5lW2QrK107dFtyXT1wLHRbcisxXT1fLHRbcisyXT15LHRbciszXT1nfSxrZXlTaXplOjh9KTtyLkFFUz1pLl9jcmVhdGVIZWxwZXIoXyl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscil7dmFyIGU9KHRoaXMuX2xCbG9jaz4+PnRedGhpcy5fckJsb2NrKSZyO3RoaXMuX3JCbG9ja149ZSx0aGlzLl9sQmxvY2tePWU8PHR9ZnVuY3Rpb24gZSh0LHIpe3ZhciBlPSh0aGlzLl9yQmxvY2s+Pj50XnRoaXMuX2xCbG9jaykmcjt0aGlzLl9sQmxvY2tePWUsdGhpcy5fckJsb2NrXj1lPDx0O1xufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3J5cHRvLWpzLm1pbi5qcy5tYXAiXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/GuideManager.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, 'bbcb1nm5dBMPapiV+lYynqt', 'GuideManager');
|
||
// Script/GuideManager.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
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 __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var GuideManager = /** @class */ (function (_super) {
|
||
__extends(GuideManager, _super);
|
||
function GuideManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.Camera = null;
|
||
_this.topUI = null;
|
||
_this.Player = null;
|
||
_this.Ground = null;
|
||
_this.Xin = null;
|
||
_this.time = null;
|
||
_this.Tip = null;
|
||
_this.blockPrefab = [];
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
GuideManager.prototype.onLoad = function () {
|
||
// 示例使用
|
||
var manager = cc.director.getCollisionManager();
|
||
manager.enabled = true;
|
||
GameData_1.default._instance.GM_INFO.probation = true;
|
||
};
|
||
GuideManager.prototype.onEnable = function () {
|
||
Notification_1.Notification.on("createBlock", this.createBlock, this);
|
||
Notification_1.Notification.on("addScore", this.addScore, this);
|
||
Notification_1.Notification.on("createCrackBlock", this.createCrackBlock, this);
|
||
Notification_1.Notification.on("showGround", this.showGround, this);
|
||
Notification_1.Notification.on("death", this.getDeath, this);
|
||
Notification_1.Notification.on("jump", this.jump, this);
|
||
};
|
||
GuideManager.prototype.onDestroy = function () {
|
||
Notification_1.Notification.off("createBlock", this.createBlock);
|
||
Notification_1.Notification.off("addScore", this.addScore);
|
||
Notification_1.Notification.off("createBlock", this.createCrackBlock);
|
||
Notification_1.Notification.off("death", this.getDeath);
|
||
Notification_1.Notification.off("jump", this.jump);
|
||
Notification_1.Notification.off("showGround", this.showGround);
|
||
};
|
||
GuideManager.prototype.init = function () {
|
||
this.score = 0;
|
||
this.oldSpeed = 10;
|
||
this.begin = true;
|
||
this.over = false;
|
||
this.interfere = false;
|
||
this.round = 0;
|
||
this.level = 0;
|
||
GameData_1.default._instance.GM_INFO.levelMax = 1;
|
||
GameData_1.default._instance.GM_INFO.difficultyMax = 1;
|
||
GameData_1.default._instance.GM_INFO.life = 3;
|
||
this.blockArray = [];
|
||
this.cameraMove = false;
|
||
this.countTime = 12;
|
||
this.topUI.getChildByName("xin1").active = true;
|
||
this.topUI.getChildByName("xin2").active = true;
|
||
this.topUI.getChildByName("xin3").active = true;
|
||
this.topUI.getChildByName("star1").active = false;
|
||
this.topUI.getChildByName("star2").active = false;
|
||
this.topUI.getChildByName("star3").active = false;
|
||
GameData_1.default._instance.LEVEL_init();
|
||
};
|
||
GuideManager.prototype.start = function () {
|
||
// this.node.on(cc.Node.EventType.TOUCH_START, this.jump, this);
|
||
this.fit();
|
||
this.init();
|
||
this.startGuide();
|
||
this.startGame();
|
||
};
|
||
//根据是否全面屏,做独立适配方面
|
||
GuideManager.prototype.fit = function () {
|
||
this.node.getChildByName("bg2").y = -2167.675;
|
||
var jg = this.setFit();
|
||
if (!jg) {
|
||
this.node.getChildByName("bg2").y = -2100;
|
||
}
|
||
};
|
||
//判断全面屏
|
||
GuideManager.prototype.getSetScreenResolutionFlag = function () {
|
||
var size = cc.winSize;
|
||
var width = size.width;
|
||
var height = size.height;
|
||
if ((height / width) > (16.2 / 9))
|
||
return false;
|
||
return true;
|
||
};
|
||
//判断全面屏适配
|
||
GuideManager.prototype.setFit = function () {
|
||
var flag = this.getSetScreenResolutionFlag();
|
||
if (flag) {
|
||
}
|
||
else {
|
||
}
|
||
return flag;
|
||
};
|
||
GuideManager.prototype.startGuide = function () {
|
||
//打开卷
|
||
var left = this.Tip.getChildByName("left");
|
||
var right = this.Tip.getChildByName("right");
|
||
var tip = this.Tip.getChildByName("tip");
|
||
left.width = 0;
|
||
right.width = 0;
|
||
tip.opacity = 0;
|
||
cc.tween(left)
|
||
.to(0.25, { width: 348 })
|
||
.start();
|
||
cc.tween(right)
|
||
.to(0.25, { width: 348 })
|
||
.start();
|
||
cc.tween(tip)
|
||
.delay(0.15)
|
||
.to(0.15, { opacity: 255 })
|
||
.start();
|
||
};
|
||
GuideManager.prototype.showGround = function (tempY) {
|
||
var _this = this;
|
||
setTimeout(function () {
|
||
_this.Ground.active = true;
|
||
_this.Ground.y = tempY;
|
||
}, 500);
|
||
};
|
||
GuideManager.prototype.jump = function () {
|
||
this.Player.getComponent("Player").jump();
|
||
};
|
||
GuideManager.prototype.startGame = function () {
|
||
this.createBlock();
|
||
};
|
||
GuideManager.prototype.addScore = function (score) {
|
||
};
|
||
GuideManager.prototype.createBlock = function () {
|
||
if (this.over == false && this.begin == true) {
|
||
this.Ground.active = false;
|
||
var num = Math.floor(Math.random() * 12);
|
||
if (this.round <= 10 && num == 5) {
|
||
num = Math.floor(Math.random() * 6 + 6);
|
||
}
|
||
// num = 2;
|
||
var block = cc.instantiate(this.blockPrefab[num]);
|
||
var height = this.Player.getComponent("Player").basicHeight + GameData_1.default._instance.GM_INFO.blockMin;
|
||
if (num > GameData_1.default._instance.GM_INFO.blockScale) {
|
||
height += block.height + GameData_1.default._instance.GM_INFO.blockMax;
|
||
GameData_1.default._instance.CLICK_DATA.height = true;
|
||
}
|
||
if (height >= -120 && this.cameraMove == false) {
|
||
this.countHeight = this.Player.getComponent("Player").basicHeight - this.Camera.node.y;
|
||
this.cameraMove = true;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 500 : -500, height));
|
||
block.parent = this.node.getChildByName("Block");
|
||
this.round += 1;
|
||
this.level += 1;
|
||
if (this.round > GameData_1.default._instance.GM_INFO.levelMax)
|
||
GameData_1.default._instance.GM_INFO.levelMax = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.level = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.round = this.level;
|
||
GameData_1.default._instance.LEVEL_INFO.layer += GameData_1.default._instance.LEVEL_INFO.layerAdd;
|
||
GameData_1.default._instance.LEVEL_INFO.speed += GameData_1.default._instance.LEVEL_INFO.addSpeed;
|
||
if (GameData_1.default._instance.LEVEL_INFO.reduceSpeed <= 100)
|
||
GameData_1.default._instance.LEVEL_INFO.reduceSpeed += GameData_1.default._instance.LEVEL_INFO.jiansu;
|
||
if (this.round == GameData_1.default._instance.LEVEL_INFO.round1)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 2;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round2)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 1;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round3)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 0.5;
|
||
}
|
||
};
|
||
//虚假碎裂块
|
||
GuideManager.prototype.createCrackBlock = function () {
|
||
this.interfere = true;
|
||
GameData_1.default._instance.CLICK_DATA.fake = this.interfere;
|
||
if (this.round > 1)
|
||
this.destroyBlock();
|
||
if (this.over == false && this.begin == true) {
|
||
var block = cc.instantiate(this.blockPrefab[12]);
|
||
var height = this.Player.getComponent("Player").basicHeight;
|
||
if (GameData_1.default._instance.CLICK_DATA.height == true) {
|
||
height += block.height / 2;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 500 : -500, height));
|
||
block.parent = this.node.getChildByName("CrackBlock");
|
||
}
|
||
};
|
||
GuideManager.prototype.destroyBlock = function () {
|
||
if (this.node) {
|
||
if (this.node.getChildByName("CrackBlock")) {
|
||
if (this.node.getChildByName("CrackBlock").children) {
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
block2[i].getComponent("Block").hide();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
GuideManager.prototype.xinAction = function () {
|
||
};
|
||
//死亡
|
||
GuideManager.prototype.getDeath = function () {
|
||
this.getDevive(1);
|
||
};
|
||
//复活
|
||
GuideManager.prototype.getDevive = function (time) {
|
||
var _this = this;
|
||
this.round = 0;
|
||
GameData_1.default._instance.LEVEL_init();
|
||
if (this.topUI.getChildByName("star3").active == true) {
|
||
// GameData._instance.LEVEL_INFO.scoreMax = 150000;
|
||
}
|
||
this.interfere = false;
|
||
GameData_1.default._instance.CLICK_DATA.fake = this.interfere;
|
||
var block = this.node.getChildByName("Block").children;
|
||
for (var i = 0; i < block.length; i++) {
|
||
if (block[i]) {
|
||
block[i].getComponent("Block").hide();
|
||
}
|
||
}
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
block2[i].getComponent("Block").hide();
|
||
}
|
||
}
|
||
// this.blockArray = [];
|
||
var actionTime = 0.5;
|
||
if (this.Player.y > 500) {
|
||
actionTime = (this.Player.y + 500) / 1000 * actionTime;
|
||
}
|
||
cc.tween(this.Player)
|
||
.to(actionTime, { position: cc.v3(0, -500, 0) })
|
||
.call(function () {
|
||
_this.Player.getComponent("Player").xinAction();
|
||
})
|
||
.delay(0.5)
|
||
.call(function () {
|
||
_this.xinAction();
|
||
_this.Player.getComponent("Player").init();
|
||
if (time > 1) {
|
||
_this.Xin.parent.active = true;
|
||
_this.Xin.getComponent(cc.Sprite).fillRange = 0;
|
||
cc.tween(_this.Xin.getComponent(cc.Sprite))
|
||
.to(time, { fillRange: 1 })
|
||
.delay(0.3)
|
||
.call(function () {
|
||
_this.Xin.parent.active = false;
|
||
})
|
||
.delay(0)
|
||
.call(function () {
|
||
_this.createBlock();
|
||
})
|
||
.start();
|
||
}
|
||
else {
|
||
setTimeout(function () {
|
||
_this.createBlock();
|
||
}, (time + 0.5) * 1000);
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
__decorate([
|
||
property(cc.Camera)
|
||
], GuideManager.prototype, "Camera", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GuideManager.prototype, "topUI", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GuideManager.prototype, "Player", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GuideManager.prototype, "Ground", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GuideManager.prototype, "Xin", void 0);
|
||
__decorate([
|
||
property(cc.Label)
|
||
], GuideManager.prototype, "time", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GuideManager.prototype, "Tip", void 0);
|
||
__decorate([
|
||
property([cc.Prefab])
|
||
], GuideManager.prototype, "blockPrefab", void 0);
|
||
GuideManager = __decorate([
|
||
ccclass
|
||
], GuideManager);
|
||
return GuideManager;
|
||
}(cc.Component));
|
||
exports.default = GuideManager;
|
||
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHdWlkZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsdUNBQWtDO0FBR2xDLG9EQUFtRDtBQUU3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUEyQyxnQ0FBWTtJQUF2RDtRQUFBLHFFQTRTQztRQXpTRyxZQUFNLEdBQWMsSUFBSSxDQUFDO1FBR3pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFHcEIsVUFBSSxHQUFhLElBQUksQ0FBQztRQUd0QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBR3BCLGlCQUFXLEdBQXNCLEVBQUUsQ0FBQzs7UUFtUnBDLGlCQUFpQjtJQUNyQixDQUFDO0lBblFHLHdCQUF3QjtJQUl4Qiw2QkFBTSxHQUFOO1FBQ0ksT0FBTztRQUNQLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNoRCxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN2QixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRVMsK0JBQVEsR0FBbEI7UUFDSSwyQkFBWSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCwyQkFBWSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUMsSUFBSSxDQUFDLFFB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U0FBUyxHQTRTdEQ7a0JBNVNvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4vR2FtZURhdGEnO1xyXG5pbXBvcnQgSHR0cFV0aWwgZnJvbSAnLi9jcnlwdG8vSHR0cFV0aWwnO1xyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gJy4vdG9vbC9HYW1lVG9vbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHdWlkZU1hbmFnZXIgIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuQ2FtZXJhKVxyXG4gICAgQ2FtZXJhOiBjYy5DYW1lcmEgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdG9wVUk6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgUGxheWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIEdyb3VuZDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBYaW46IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFRpcDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KFtjYy5QcmVmYWJdKVxyXG4gICAgYmxvY2tQcmVmYWIgOiBBcnJheTxjYy5QcmVmYWI+ID0gW107XHJcblxyXG4gICAgXHJcblxyXG4gICAgcm91bmQ6IG51bWJlcjsgICAgICAvL+WbnuWQiFxyXG4gICAgbGV2ZWw6IG51bWJlcjsgICAgICAvL+WbnuWQiFxyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgYmxvY2tBcnJheTogYW55O1xyXG4gICAgY2FtZXJhTW92ZTpib29sZWFuXHJcbiAgICBjb3VudEhlaWdodDpudW1iZXI7XHJcbiAgICBjb3VudFRpbWU6IG51bWJlcjtcclxuICAgIG92ZXI6IGJvb2xlYW47XHJcbiAgICBiZWdpbjogYm9vbGVhbjtcclxuICAgIGludGVyZmVyZTogYm9vbGVhbjtcclxuICAgIG9sZFNwZWVkOiBudW1iZXI7ICAgICAgLy/kuIrkuIDlm57lkIjpgJ/luqZcclxuICAgIHNjb3JlOiBudW1iZXI7ICAgICAgLy/mgLvlvpfliIZcclxuICAgIGRpZmZpY3VsdHlNYXg6bnVtYmVyOyAvL+acgOmrmOmavuW6puezu+aVsFxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIC8vIOekuuS+i+S9v+eUqFxyXG4gICAgICAgIHZhciBtYW5hZ2VyID0gY2MuZGlyZWN0b3IuZ2V0Q29sbGlzaW9uTWFuYWdlcigpO1xyXG4gICAgICAgIG1hbmFnZXIuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ucHJvYmF0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25FbmFibGUoKTogdm9pZCB7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwiY3JlYXRlQmxvY2tcIix0aGlzLmNyZWF0ZUJsb2NrLHRoaXMpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vbihcImFkZFNjb3JlXCIsdGhpcy5hZGRTY29yZSx0aGlzKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJjcmVhdGVDcmFja0Jsb2NrXCIsdGhpcy5jcmVhdGVDcmFja0Jsb2NrLHRoaXMpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vbihcInNob3dHcm91bmRcIix0aGlzLnNob3dHcm91bmQsdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwiZGVhdGhcIix0aGlzLmdldERlYXRoLHRoaXMpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vbihcImp1bXBcIix0aGlzLmp1bXAsdGhpcyk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwiY3JlYXRlQmxvY2tcIix0aGlzLmNyZWF0ZUJsb2NrKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwiYWRkU2NvcmVcIix0aGlzLmFkZFNjb3JlKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwiY3JlYXRlQmxvY2tcIix0aGlzLmNyZWF0ZUNyYWNrQmxvY2spO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJkZWF0aFwiLHRoaXMuZ2V0RGVhdGgpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJqdW1wXCIsdGhpcy5qdW1wKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwic2hvd0dyb3VuZFwiLHRoaXMuc2hvd0dyb3VuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuc2NvcmUgPSAwO1xyXG4gICAgICAgIHRoaXMub2xkU3BlZWQgPSAxMDtcclxuICAgICAgICB0aGlzLmJlZ2luID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmludGVyZmVyZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucm91bmQgPSAwO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSAwO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxldmVsTWF4ID0gMTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5kaWZmaWN1bHR5TWF4ID0gMTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5saWZlID0gMztcclxuICAgICAgICB0aGlzLmJsb2NrQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNhbWVyYU1vdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvdW50VGltZSA9IDEyO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJ4aW4xXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInhpbjJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwieGluM1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwic3RhcjJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInN0YXIzXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9pbml0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICAvLyB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMuanVtcCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5maXQoKTtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0R3VpZGUoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0R2FtZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5qC55o2u5piv5ZCm5YWo6Z2i5bGP77yM5YGa54us56uL6YCC6YWN5pa56Z2iXHJcbiAgICBmaXQoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiZzJcIikueSA9IC0yMTY3LjY3NTtcclxuICAgICAgICB2YXIgamcgPSB0aGlzLnNldEZpdCgpO1xyXG4gICAgICAgIGlmKCFqZyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImJnMlwiKS55ID0gLTIxMDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lhajpnaLlsY9cclxuICAgIGdldFNldFNjcmVlblJlc29sdXRpb25GbGFnICgpIHtcclxuICAgICAgICBsZXQgc2l6ZSA9IGNjLndpblNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKChoZWlnaHQgLyB3aWR0aCkgPiAoMTYuMiAvIDkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0ICgpIHtcclxuICAgICAgICBsZXQgZmxhZyA9IHRoaXMuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmbGFnO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R3VpZGUoKXtcclxuICAgICAgICAvL+aJk+W8gOWNt1xyXG4gICAgICAgIGxldCBsZWZ0ID0gdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGxldCByaWdodCA9IHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwicmlnaHRcIik7XHJcbiAgICAgICAgbGV0IHRpcCA9IHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwidGlwXCIpO1xyXG4gICAgICAgIGxlZnQud2lkdGggPSAwOyByaWdodC53aWR0aCA9IDA7dGlwLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIGNjLnR3ZWVuKGxlZnQpXHJcbiAgICAgICAgLnRvKDAuMjUse3dpZHRoOjM0OH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgY2MudHdlZW4ocmlnaHQpXHJcbiAgICAgICAgLnRvKDAuMjUse3dpZHRoOjM0OH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgY2MudHdlZW4odGlwKVxyXG4gICAgICAgIC5kZWxheSgwLjE1KVxyXG4gICAgICAgIC50bygwLjE1LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0dyb3VuZCh0ZW1wWSl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuR3JvdW5kLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuR3JvdW5kLnkgPSB0ZW1wWTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG5cclxuICAgIGp1bXAoKXtcclxuICAgICAgICB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuanVtcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQmxvY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRTY29yZShzY29yZSl7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUJsb2NrKCl7XHJcbiAgICAgICAgaWYodGhpcy5vdmVyID09IGZhbHNlICYmIHRoaXMuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRoaXMuR3JvdW5kLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEyKTtcclxuICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA8PSAxMCAmJiBudW0gPT0gNSl7XHJcbiAgICAgICAgICAgICAgICBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNiArIDYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG51bSA9IDI7XHJcbiAgICAgICAgICAgIHZhciBibG9jayA9IGNjLmluc3RhbnRpYXRlKHRoaXMuYmxvY2tQcmVmYWJbbnVtXSk7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuYmFzaWNIZWlnaHQgKyBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5ibG9ja01pbjtcclxuICAgICAgICAgICAgaWYobnVtID4gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYmxvY2tTY2FsZSl7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQgKz0gYmxvY2suaGVpZ2h0ICsgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYmxvY2tNYXg7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5oZWlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgaWYoaGVpZ2h0ID49IC0xMjAgJiYgdGhpcy5jYW1lcmFNb3ZlID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnRIZWlnaHQgPSB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuYmFzaWNIZWlnaHQgLSB0aGlzLkNhbWVyYS5ub2RlLnk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbWVyYU1vdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKGNjLnYyKHRoaXMucm91bmQlMj09MD81MDA6LTUwMCxoZWlnaHQpKTtcclxuICAgICAgICAgICAgYmxvY2sucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmxvY2tcIik7XHJcbiAgICAgICAgICAgIHRoaXMucm91bmQgKz0gMTtcclxuICAgICAgICAgICAgdGhpcy5sZXZlbCArPSAxO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJvdW5kID4gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGV2ZWxNYXgpIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxldmVsTWF4ID0gdGhpcy5yb3VuZDtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEubGV2ZWwgPSB0aGlzLnJvdW5kO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5yb3VuZCA9IHRoaXMubGV2ZWw7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmxheWVyICs9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmxheWVyQWRkO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zcGVlZCArPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5hZGRTcGVlZDtcclxuXHJcbiAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJlZHVjZVNwZWVkIDw9IDEwMClcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJlZHVjZVNwZWVkICs9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmppYW5zdTtcclxuICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA9PSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yb3VuZDEpIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmppYW5zdSA9IDI7XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5yb3VuZCA9PSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yb3VuZDIpIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmppYW5zdSA9IDE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5yb3VuZCA9PSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yb3VuZDMpIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmppYW5zdSA9IDAuNTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/omZrlgYfnoo7oo4LlnZdcclxuICAgIGNyZWF0ZUNyYWNrQmxvY2soKXtcclxuICAgICAgICB0aGlzLmludGVyZmVyZSA9IHRydWU7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZmFrZSA9IHRoaXMuaW50ZXJmZXJlO1xyXG4gICAgICAgIGlmKHRoaXMucm91bmQgPiAxKSB0aGlzLmRlc3Ryb3lCbG9jaygpO1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICB2YXIgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLmJsb2NrUHJlZmFiWzEyXSk7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuYmFzaWNIZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmhlaWdodCA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGhlaWdodCArPSBibG9jay5oZWlnaHQvMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52Mih0aGlzLnJvdW5kJTI9PTA/NTAwOi01MDAsaGVpZ2h0KSk7XHJcbiAgICAgICAgICAgIGJsb2NrLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXN0cm95QmxvY2soKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUpe1xyXG4gICAgICAgICAgICBpZih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJDcmFja0Jsb2NrXCIpKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikuY2hpbGRyZW4pe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9jazIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJDcmFja0Jsb2NrXCIpLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPGJsb2NrMi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrMltpXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazJbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHhpbkFjdGlvbigpe1xyXG5cclxuICAgIH1cclxuICAgIC8v5q275LqhXHJcbiAgICBnZXREZWF0aCgpe1xyXG4gICAgICAgIHRoaXMuZ2V0RGV2aXZlKDEpO1xyXG4gICAgfVxyXG4gICAgLy/lpI3mtLtcclxuICAgIGdldERldml2ZSh0aW1lKXtcclxuICAgICAgICB0aGlzLnJvdW5kID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfaW5pdCgpO1xyXG4gICAgICAgIGlmKHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyM1wiKS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIC8vIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNjb3JlTWF4ID0gMTUwMDAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmludGVyZmVyZSA9IGZhbHNlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmZha2UgPSB0aGlzLmludGVyZmVyZTtcclxuICAgICAgICB2YXIgYmxvY2sgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlbjtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTxibG9jay5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKGJsb2NrW2ldKXtcclxuICAgICAgICAgICAgICAgIGJsb2NrW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYmxvY2syID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQ3JhY2tCbG9ja1wiKS5jaGlsZHJlbjtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTxibG9jazIubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZihibG9jazJbaV0pe1xyXG4gICAgICAgICAgICAgICAgYmxvY2syW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmJsb2NrQXJyYXkgPSBbXTtcclxuICAgICAgICBsZXQgYWN0aW9uVGltZSA9IDAuNTtcclxuICAgICAgICBpZih0aGlzLlBsYXllci55ID4gNTAwKXtcclxuICAgICAgICAgICAgYWN0aW9uVGltZSA9ICh0aGlzLlBsYXllci55ICsgNTAwKS8xMDAwKmFjdGlvblRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMuUGxheWVyKVxyXG4gICAgICAgIC50byhhY3Rpb25UaW1lLHtwb3NpdGlvbjpjYy52MygwLC01MDAsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS54aW5BY3Rpb24oKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMueGluQWN0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5pbml0KCk7XHJcbiAgICAgICAgICAgIGlmKHRpbWUgPiAxKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuWGluLnBhcmVudC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5YaW4uZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuZmlsbFJhbmdlID0gMDtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuWGluLmdldENvbXBvbmVudChjYy5TcHJpdGUpKVxyXG4gICAgICAgICAgICAgICAgLnRvKHRpbWUse2ZpbGxSYW5nZToxfSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjMpXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlhpbi5wYXJlbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmRlbGF5KDApXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJsb2NrKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIH0sICh0aW1lKzAuNSkqMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19
|
||
//------QC-SOURCE-SPLIT------
|