Sun_moves/temp/quick-scripts/dst/__qc_bundle__.js
2024-06-11 15:58:08 +08:00

6908 lines
870 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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/GameData');
require('./assets/Script/GameManager');
require('./assets/Script/GameOver');
require('./assets/Script/GuideManager');
require('./assets/Script/ListView/ItemRender');
require('./assets/Script/ListView/List');
require('./assets/Script/Load');
require('./assets/Script/Notification');
require('./assets/Script/RankManager');
require('./assets/Script/Storage');
require('./assets/Script/Sun');
require('./assets/Script/crypto/crypto-js.min');
require('./assets/Script/crypto/serverAPI');
require('./assets/Script/tool/AudioManager');
require('./assets/Script/tool/DynamicAtlasManager');
require('./assets/Script/tool/GameTool');
require('./assets/Script/tool/Shake');
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/serverAPI.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, '98307M8uUtLYKaHXPmGgCWf', 'serverAPI');
// Script/crypto/serverAPI.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) {
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: "100009",
secretKey: "CMNhOzBA",
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXHNlcnZlckFQSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0NBQW9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHcEMsd0NBQW1DO0FBQ25DLDZDQUFnRCxDQUFFLFdBQVc7QUFFN0QsNEJBQTRCO0FBQ3RCLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEOztJQTZFQSxDQUFDO0lBNUVDLHNCQUFzQjtJQUNULGlCQUFRLEdBQXJCLFVBQXNCLElBQUksRUFBQyxRQUFRLEVBQUMsSUFBSTt1Q0FBRyxPQUFPOzs7Z0JBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDaEQsR0FBRyxHQUFHLE9BQU8sQ0FBQywrQkFBNkIsTUFBTSxDQUFDLE1BQU0sa0JBQWEsSUFBSSxjQUFTLElBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDckcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O0tBQ2xDO0lBRVksMEJBQWlCLEdBQTlCLFVBQStCLElBQUksRUFBQyxRQUFRO3VDQUFHLE9BQU87OztnQkFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENB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QUFDLENBQUMsRUFBekMsT0FBTyxRQUFBLEVBQUUsV0FBVyxRQUFxQixDQUFDO0lBQ2pELElBQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELE9BQVUsT0FBTyxTQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUksQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsT0FBTyxDQUFDLEdBQVcsRUFBRSxNQUFXO0lBQVgsdUJBQUEsRUFBQSxXQUFXO0lBRXZDLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDbEMsVUFBVSxJQUFJLEdBQUcsQ0FBQTtLQUNsQjtJQUVELGNBQWM7SUFDZCxJQUFJLE9BQU8sR0FBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFckMsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqRCxJQUFNLFVBQVUsR0FBRyxVQUFRLFNBQVcsQ0FBQTtJQUV0QyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckUsY0FBYyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRW5ELE9BQVUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFPLGNBQWdCLENBQUE7QUFDeEQsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCBDcnlwdG9KUyBmcm9tIFwiY3J5cHRvLWpzXCI7XG5cblxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4uL0dhbWVEYXRhJztcbmltcG9ydCBDcnlwdG9KUyA9IHJlcXVpcmUoJy4vY3J5cHRvLWpzLm1pbi5qcycpOyAgLy/lvJXnlKhBRVPmupDnoIFqc1xuXG4vLyBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcblxuQGNjY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBVdGlsIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcbiAgLy/mjpLooYzmppx0eXBlMuS4uuiOt+WPlu+8jHR5cGUx5Li65LiK5LygXG4gIHN0YXRpYyBhc3luYyByYW5rRGF0YSh0eXBlLGNhbGxiYWNrLGRhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgIGRhdGEudXNlcklkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkO1xuICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxuICAgIGNvbnN0IHVybCA9IGFwaVNpZ24oYC9hcGkvZ2V0L3JhbmsvZGF0YT9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZkYXRhVHlwZT0ke3R5cGV9JnRpbWU9JHt0aW1lfWAsIGRhdGEpXG4gICAgdGhpcy5odHRwUG9zdCh1cmwsZGF0YSxjYWxsYmFjayk7XG4gIH1cbiAgXG4gIHN0YXRpYyBhc3luYyB1cGxvYWRVc2VyTG9nRGF0YShkYXRhLGNhbGxiYWNrKTogUHJvbWlzZTxhbnk+IHtcbiAgICBkYXRhLmdhbWVJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcbiAgICBkYXRhLnVzZXJJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZDtcbiAgICBjb25zdCB1cmwgPSAnL2xvZy9jb2xsZWN0L2RhdGEnO1xuICAgIHRoaXMuaHR0cFBvc3QodXJsLGRhdGEsY2FsbGJhY2spO1xuICB9XG4gIC8v5pqC5pe255So5LiN5YiwXG4gIHN0YXRpYyBhc3luYyBnZXRVc2VyUmVjb3JkKGRhdGEsY2FsbGJhY2spOiBQcm9taXNlPGFueT4ge1xuICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgIGRhdGEudXNlcklkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkO1xuICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxuICAgIGNvbnN0IHVybCA9IGFwaVNpZ24oYC9hcGkvZ2V0L3VzZXIvZGF0YT9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZ0aW1lPSR7dGltZX1gLCBkYXRhKVxuICAgIHRoaXMuaHR0cFBvc3QodXJsLGRhdGEsY2FsbGJhY2spO1xuICB9XG5cbiAgc3RhdGljIGh0dHBQb3N0KHVybCxkYXRhLGNhbGxCYWNrKXtcbiAgICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgICAgZGF0YS51c2VySWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQ7XG4gICAgICB2YXIgdXJsRGF0YSA9IFwiaHR0cDovL2FwaS5zcGFya3VzLmNuXCIgKyB1cmw7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcInBhcmFtczpcIixKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB4aHIub3BlbignUE9TVCcsIHVybERhdGEpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAgIHZhciBkYXRhID0geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgaWYoIWRhdGEpe1xuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLliJ3lp4vljJblpLHotKVcIik7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cCBzdWNjZXNzOicgKyBqc29uKTtcbiAgICAgICAgICAgICAgY2FsbEJhY2soanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAvLyAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cCBmYWlsOicgKyB1cmwpO1xuICAgICAgICAgICAgICBjYWxsQmFjayhqc29uKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgc3RhdGljIGh0dHBHZXQodXJsLGNhbGxCYWNrKXtcbiAgICAgIHZhciB1cmxEYXRhID0gXCJodHRwOi8vYXBpLnNwYXJrdXMuY25cIiArIHVybDtcbiAgICAgIGNvbnNvbGUubG9nKHVybERhdGEpO1xuICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybERhdGEpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICBcbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQgJiYgeGhyLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgICAgdmFyIGRhdGEgPSB4aHIucmVzcG9uc2VUZXh0O1xuICAgICAgICAgICAgICBpZihkYXRhKXtcbiAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnaHR0cCBzdWNjZXNzOicgKyBqc29uKTtcbiAgICAgICAgICAgICAgICAgIGNhbGxCYWNrKGpzb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgY2FsbEJhY2soZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnaHR0cCBmYWlsOicgKyB1cmwpO1xuICAgICAgICAgICAgICBjYWxsQmFjayhudWxsKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNwb25zZUhhbmRsZXIocmVzcG9uc2U6IHsgZGF0YTogYW55IH0pIHtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbn1cbi8vIOWTjeW6lOaLpuaIquWZqFxuLy8gUnEuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXNwb25zZUhhbmRsZXIpXG5jb25zdCBjb25maWcgPSB7XG4gIGdhbWVJZDogXCIxMDAwMDlcIixcbiAgc2VjcmV0S2V5OiBcIkNNTmhPekJBXCIsXG4gIEVLOlwiaHVpMjMxJTFcIlxufTtcblxuaW50ZXJmYWNlIENyeXBvdG9UeXBlIHtcbiAgZW5jcnlwdEJ5REVTOiBhbnlcbiAgZGVjcnlwdEJ5REVTOiBhbnlcbiAgaG1hY1NoYTI1NjogYW55XG59XG4gXG5jbGFzcyBDcnlwb3RvIGltcGxlbWVudHMgQ3J5cG90b1R5cGUge1xuICAgIC8vIOWKoOWvhueahOWQkeaYjuWAvO+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)) + 2; //计算创建的item实例数量比当前scrollView容器能放下的item数量再加上2个
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZoneitem的显示范围
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsMkNBQXFDO0FBRS9CLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRTVDLFlBQVk7QUFDWixJQUFZLFFBT1g7QUFQRCxXQUFZLFFBQVE7SUFDaEIsVUFBVTtJQUNWLG1EQUFjLENBQUE7SUFDZCxVQUFVO0lBQ1YsK0NBQVksQ0FBQTtJQUNaLFVBQVU7SUFDVix1Q0FBUSxDQUFBO0FBQ1osQ0FBQyxFQVBXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBT25CO0FBRUQsY0FBYztBQUNkLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUNyQixVQUFVO0lBQ1YsNkRBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDVix5REFBWSxDQUFBO0FBQ2hCLENBQUMsRUFMVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUt4QjtBQUVEOzs7Ozs7O0dBT0c7QUFFSDtJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQXlpQkM7UUF2aUJHLHFEQUFxRDtRQUNyRCxVQUFVO1FBRUgsZ0JBQVUsR0FBWSxJQUFJLENBQUM7UUFFbEMsVUFBVTtRQUVILFVBQUksR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBRTFDLGNBQWM7UUFFUCxlQUFTLEdBQWtCLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFFM0QsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsU0FBUztRQUVGLGlCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRS9C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QUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FDL0c7SUFJMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sZ0JBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7d0NBQzNHO0lBSTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLGdCQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs2Q0FDckc7SUFJL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO2dEQUNsRztJQUlsQztRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7OENBQ3RHO0lBS2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7MENBQ087SUFJNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDOytDQUNyRztJQTFDaEIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQXlpQnhCO0lBQUQsV0FBQztDQXppQkQsQUF5aUJDLENBemlCaUMsRUFBRSxDQUFDLFNBQVMsR0F5aUI3QztrQkF6aUJvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEl0ZW1SZW5kZXIgZnJvbSBcIi4vSXRlbVJlbmRlclwiXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuLyoq5YiX6KGo5o6S5YiX5pa55byPICovXHJcbmV4cG9ydCBlbnVtIExpc3RUeXBlIHtcclxuICAgIC8qKuawtOW5s+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+ihqFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGF0YShpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdCA9IGl0ZW1EYXRhTGlzdC5zbGljZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoq6K6h566X5YiX6KGo55qE5ZCE6aG55Y+C5pWwICovXHJcbiAgICBwcml2YXRlIGNvdW50TGlzdFBhcmFtKCkge1xyXG4gICAgICAgIGxldCBkYXRhTGVuID0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5jb250ZW50LnBhcmVudC53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IGRhdGFMZW4gKiB0aGlzLml0ZW1IZWlnaHQgKyAoZGF0YUxlbiAtIDEpICogdGhpcy5zcGFjZVkgKyB0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbTtcclxuICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKSArIDI7IC8v6K6h566X5Yib5bu655qEaXRlbeWunuS+i+aVsOmHj++8jOavlOW9k+WJjXNjcm9sbFZpZXflrrnlmajog73mlL7kuIvnmoRpdGVt5pWw6YeP5YaN5Yqg5LiKMuS4qlxyXG4gICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gMiArIHRoaXMuaXRlbUhlaWdodCAvIDIgKyB0aGlzLnNwYWNlWTsgLy/orqHnrpdidWZmZXJab25l77yMaXRlbeeahOaYvuekuuiMg+WbtFxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudXBkYXRlVjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IGRhdGFMZW4gKiB0aGlzLml0ZW1XaWR0aCArIChkYXRhTGVuIC0gMSkgKiB0aGlzLnNwYWNlWCArIHRoaXMucGFkZGluZ19sZWZ0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gdGhpcy5jb250ZW50LnBhcmVudC5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpICsgMjtcclxuICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gMiArIHRoaXMuaXRlbVdpZHRoIC8gMiArIHRoaXMuc3BhY2VYO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudWRwYXRlSDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuY29udGVudC5wYXJlbnQud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAvL+WmguaenGxlZnTlkoxyaWdodOmXtOmalOi/h+Wkp++8jOWvvOiHtOaUvuS4jeS4i+S4gOS4qml0ZW3vvIzliJlsZWZ05ZKMcmlnaHTpg73orr7nva7kuLow77yM55u45b2T5LqO5LiN55Sf5pWIXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQgKyB0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYID4gdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX2xlZnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19yaWdodCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInBhZGRpbmdfbGVmdOaIlnBhZGRpbmdfcmlnaHTov4flpKdcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29sID0gTWF0aC5mbG9vcigodGhpcy5jb250ZW50LndpZHRoIC0gdGhpcy5wYWRkaW5nX2xlZnQgLSB0aGlzLnBhZGRpbmdfcmlnaHQpIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFJvdyA9IE1hdGguY2VpbChkYXRhTGVuIC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmdyaWRSb3cgKiB0aGlzLml0ZW1IZWlnaHQgKyAodGhpcy5ncmlkUm93IC0gMSkgKiB0aGlzLnNwYWNlWSArIHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKSAqIHRoaXMuZ3JpZENvbCArIHRoaXMuZ3JpZENvbCAqIDI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gMiArIHRoaXMuaXRlbUhlaWdodCAvIDIgKyB0aGlzLnNwYWNlWTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVHcmlkX1Y7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIC8v6K6h566X6auY6Ze06ZqUXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gdGhpcy5jb250ZW50LnBhcmVudC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAvL+WmguaenGxlZnTlkoxyaWdodOmXtOmalOi/h+Wkp++8jOWvvOiHtOaUvuS4jeS4i+S4gOS4qml0ZW3vvIzliJlsZWZ05ZKMcmlnaHTpg73orr7nva7kuLow77yM55u45b2T5LqO5LiN55Sf5pWIXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b20gKyB0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSA+IHRoaXMuY29udGVudC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfdG9wID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfYnV0dG9tID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGFkZGluZ190b3DmiJZwYWRkaW5nX2J1dHRvbei/h+Wkp1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRSb3cgPSBNYXRoLmZsb29yKCh0aGlzLmNvbnRlbnQuaGVpZ2h0IC0gdGhpcy5wYWRkaW5nX3RvcCAtIHRoaXMucGFkZGluZ19idXR0b20pIC8gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb2wgPSBNYXRoLmNlaWwoZGF0YUxlbiAvIHRoaXMuZ3JpZFJvdyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmdyaWRDb2wgKiB0aGlzLml0ZW1XaWR0aCArICh0aGlzLmdyaWRDb2wgLSAxKSAqIHRoaXMuc3BhY2VYICsgdGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpKSAqIHRoaXMuZ3JpZFJvdyArIHRoaXMuZ3JpZFJvdyAqIDI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAyICsgdGhpcy5pdGVtV2lkdGggLyAyICsgdGhpcy5zcGFjZVg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudXBkYXRlR3JpZF9IO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yib5bu65YiX6KGoIFxyXG4gICAgICogQHBhcmFtIHN0YXJ0SW5kZXgg6LW35aeL5pi+56S655qE5pWw5o2u57Si5byVIDDooajnpLrnrKzkuIDpoblcclxuICAgICAqIEBwYXJhbSBvZmZzZXQgICAgIHNjcm9sbFZpZXflgY/np7vph49cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVMaXN0KHN0YXJ0SW5kZXg6IG51bWJlciwgb2Zmc2V0OiBjYy5WZWMyKSB7XHJcbiAgICAgICAgLy/lvZPpnIDopoHmmL7npLrnmoTmlbDmja7plb/luqYgPiDomZrmi5/liJfooajplb/luqbvvIwg5Yig6Zmk5pyA5pyr5bC+5Yeg5Liq5pWw5o2u5pe277yM5YiX6KGo6ZyA6KaB6YeN572u5L2N572u5Yiwc2Nyb2xsVmlld+acgOW6leerr1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPiB0aGlzLnNwYXduQ291bnQgJiYgKHN0YXJ0SW5kZXggKyB0aGlzLnNwYXduQ291bnQgLSAxKSA+PSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgc3RhcnRJbmRleCA9IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCAtIHRoaXMuc3Bhd25Db3VudDtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5zY3JvbGxWaWV3LmdldE1heFNjcm9sbE9mZnNldCgpO1xyXG5cclxuICAgICAgICAgICAgLy/lvZPpnIDopoHmmL7npLrnmoTmlbDmja7plb/luqYgPD0g6Jma5ouf5YiX6KGo6ZW/5bqm77yMIOmakOiXj+WkmuS9meeahOiZmuaLn+WIl+ihqOmhuSBcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA8PSB0aGlzLnNwYXduQ291bnQpIHtcclxuICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Bhd25Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBjYy5Ob2RlO1xyXG4gICAgICAgICAgICAvL+mcgOimgeaYvuekuueahOaVsOaNrue0ouW8leWcqOaVsOaNruiMg+WbtOWGhe+8jOWImWl0ZW3lrp7kvovmmL7npLrlh7rmnaVcclxuICAgICAgICAgICAgaWYgKGkgKyBzdGFydEluZGV4IDwgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtTGlzdFtpXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuZ2V0SXRlbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXMuY29udGVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuaXRlbUxpc3RbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL+mcgOimgeaYvuekuueahOaVsOaNrue0ouW8lei2hei/h+S6huaVsOaNruiMg+WbtO+8jOWImWl0ZW3lrp7kvovpmpDol4/otbfmnaVcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeWunuS+i+aVsOmHjyA+IOmcgOimgeaYvuekuueahOaVsOaNrumHj1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3QubGVuZ3RoID4gKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCAtIHN0YXJ0SW5kZXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuaXRlbUxpc3QucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtUG9vbC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaSArIHN0YXJ0SW5kZXg7XHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2kgKyBzdGFydEluZGV4XTtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgLy/lm6DkuLpjb250ZW5055qE6ZSa54K5WOaYrzDvvIzmiYDku6VpdGVt55qEeOWAvOaYr2NvbnRlbnQud2l0aC8y6KGo56S65bGF5Lit77yM6ZSa54K5WeaYrzHvvIzmiYDku6VpdGVt55qEeeWAvOS7jmNvbnRlbnTpobbpg6jlkJHkuIvmmK8w5Yiw6LSf5peg56m344CC5omA5LulaXRlbS55PSAtaXRlbS5oZWlnaHQvMuaXtu+8jOaYr+WcqGNvbnRlbnTnmoTpobbpg6jjgIJcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24odGhpcy5jb250ZW50LndpZHRoIC8gMiwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIGkgKyBzdGFydEluZGV4KSAtIHRoaXMuc3BhY2VZICogKGkgKyBzdGFydEluZGV4KSAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgaSArIHN0YXJ0SW5kZXgpICsgdGhpcy5zcGFjZVggKiAoaSArIHN0YXJ0SW5kZXgpICsgdGhpcy5wYWRkaW5nX2xlZnQsIC10aGlzLmNvbnRlbnQuaGVpZ2h0IC8gMik7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IE1hdGguZmxvb3IoKGkgKyBzdGFydEluZGV4KSAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbCA9IChpICsgc3RhcnRJbmRleCkgJSB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpdGVtLndpZHRoICogKDAuNSArIGNvbCkgKyB0aGlzLnNwYWNlWCAqIGNvbCArIHRoaXMucGFkZGluZ19sZWZ0LCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgcm93KSAtIHRoaXMuc3BhY2VZICogcm93IC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gKGkgKyBzdGFydEluZGV4KSAlIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sID0gTWF0aC5mbG9vcigoaSArIHN0YXJ0SW5kZXgpIC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgY29sKSArIHRoaXMuc3BhY2VYICogY29sICsgdGhpcy5wYWRkaW5nX2xlZnQsIC1pdGVtLmhlaWdodCAqICgwLjUgKyByb3cpIC0gdGhpcy5zcGFjZVkgKiByb3cgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2Nyb2xsVmlldy5zY3JvbGxUb09mZnNldChvZmZzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluS4gOS4quWIl+ihqOmhuSAqL1xyXG4gICAgcHJpdmF0ZSBnZXRJdGVtKCkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1Qb29sLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYy5pbnN0YW50aWF0ZSh0aGlzLml0ZW1SZW5kZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1Qb29sLnBvcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuICAgICAgICBpZiAodGhpcy5iU2Nyb2xsaW5nID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lciArPSBkdDtcclxuICAgICAgICBpZiAodGhpcy51cGRhdGVUaW1lciA8IHRoaXMudXBkYXRlSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyID0gMDtcclxuICAgICAgICB0aGlzLmJTY3JvbGxpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZ1bigpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2Nyb2xsaW5nKCkge1xyXG4gICAgICAgIHRoaXMuYlNjcm9sbGluZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq5Z6C55u05o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVYoKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzVXAgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55ID4gdGhpcy5sYXN0Q29udGVudFBvc1k7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkgKiBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzVXApIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4iua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIrovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiL5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4i+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIvovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPiBidWZmZXJab25lICYmIGl0ZW0ueSAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19idXR0b20gPiAtdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4i+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIvovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiK5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4iuaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIrovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnkgKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfdG9wIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWSA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lnk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVkcGF0ZUgoKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzUmlnaHQgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54ID4gdGhpcy5sYXN0Q29udGVudFBvc1g7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSAqIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNSaWdodCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5Y+z5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+WPs+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlt6bmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5bem5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOW3pui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA+IGJ1ZmZlclpvbmUgJiYgaXRlbS54IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2xlZnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5bem5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+W3pui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlj7PmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5Y+z5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOWPs+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA8IC1idWZmZXJab25lICYmIGl0ZW0ueCArIG9mZnNldCArIHRoaXMucGFkZGluZ19yaWdodCA8IHRoaXMuY29udGVudC53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lng7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq572R5qC85Z6C55u05o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUdyaWRfVigpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtOiBjYy5Ob2RlO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNVcCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnkgPiB0aGlzLmxhc3RDb250ZW50UG9zWTtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSAqICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1VwKSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3kuIrmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiK6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4i+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIvmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiL6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnkgLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfYnV0dG9tID4gLXRoaXMuY29udGVudC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpICogdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7Ly9pdGVt5LiL5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4i+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIrmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiK5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4iui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA8IC1idWZmZXJab25lICYmIGl0ZW0ueSArIG9mZnNldCArIHRoaXMucGFkZGluZ190b3AgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkQ29sKSAqIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NZID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICAvKirnvZHmoLzmsLTlubPmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZF9IKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW07XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1JpZ2h0ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueCA+IHRoaXMubGFzdENvbnRlbnRQb3NYO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkgKiAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNSaWdodCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5Y+z5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+WPs+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlt6bmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5bem5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOW3pui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA+IGJ1ZmZlclpvbmUgJiYgaXRlbS54IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2xlZnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KSAqIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5bem5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+W3pui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlj7PmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5Y+z5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOWPs+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA8IC1idWZmZXJab25lICYmIGl0ZW0ueCArIG9mZnNldCArIHRoaXMucGFkZGluZ19yaWdodCA8IHRoaXMuY29udGVudC53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZFJvdykgKiB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lng7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+WaXRlbeWcqHNjcm9sbFZpZXfnmoTlsYDpg6jlnZDmoIcgKi9cclxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25JblZpZXcoaXRlbSkge1xyXG4gICAgICAgIGxldCB3b3JsZFBvcyA9IGl0ZW0ucGFyZW50LmNvbnZlcnRUb1dvcmxkU3BhY2VBUihpdGVtLnBvc2l0aW9uKTtcclxuICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHdvcmxkUG9zKTtcclxuICAgICAgICByZXR1cm4gdmlld1BvcztcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bliJfooajmlbDmja4gKi9cclxuICAgIHB1YmxpYyBnZXRMaXN0RGF0YSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtRGF0YUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlop7liqDkuIDpobnmlbDmja7liLDliJfooajnmoTmnKvlsL5cclxuICAgICAqIEBwYXJhbSBkYXRhIOaVsOaNrlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSXRlbShkYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aKe5Yqg5LiA6aG55pWw5o2u5Yiw5YiX6KGo5oyH5a6a5L2N572uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggICDkvY3nva7vvIww6KGo56S656ysMemhuVxyXG4gICAgICogQHBhcmFtIGRhdGEgIOaVsOaNrlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSXRlbUF0KGluZGV4OiBudW1iZXIsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gIT0gbnVsbCB8fCB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPT0gaW5kZXgpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3Quc3BsaWNlKGluZGV4LCAxLCBkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yig6Zmk5LiA6aG55pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXgg5Yig6Zmk6aG555qE5L2N572uICww6KGo56S656ysMemhuVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVsZXRlSXRlbShpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaUueWPmOS4gOmhueaVsOaNrlxyXG4gICAgICogQHBhcmFtIGluZGV4ICAg5L2N572uLDDooajnpLrnrKwx6aG5XHJcbiAgICAgKiBAcGFyYW0gZGF0YSAg5pu/5o2i55qE5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGFuZ2VJdGVtKGluZGV4OiBudW1iZXIsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W56ys5LiA5LiqSXRlbeeahOS9jee9riAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCkge1xyXG4gICAgICAgIC8v5pi+56S65YiX6KGo5a6e5L6L5Li6MOS4qlxyXG4gICAgICAgIGlmICh0aGlzLml0ZW1MaXN0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRMaXN0UGFyYW0oKTtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVMaXN0KDAsIG5ldyBjYy5WZWMyKDAsIDApKTtcclxuICAgICAgICAgICAgLy/mmL7npLrliJfooajnmoTlrp7kvovkuI3kuLow5Liq77yM5YiZ6ZyA6KaB6YeN5paw5o6S5YiXaXRlbeWunuS+i+aVsOe7hFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIueSAtIGEueTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEueCAtIGIueDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jb3VudExpc3RQYXJhbSgpO1xyXG5cclxuICAgICAgICAgICAgLy/ojrflj5bnrKzkuIDkuKppdGVt5a6e5L6L6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byVXHJcbiAgICAgICAgICAgIHZhciBzdGFydEluZGV4ID0gdGhpcy5pdGVtTGlzdFswXS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcikuaXRlbUluZGV4O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkICYmIHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggKz0gKHN0YXJ0SW5kZXggKyB0aGlzLnNwYXduQ291bnQpICUgdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkICYmIHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCkgJSB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vZ2V0U2Nyb2xsT2Zmc2V0KCnlkoxzY3JvbGxUb09mZnNldCgp55qEeOWAvOaYr+ebuOWPjeeahFxyXG4gICAgICAgICAgICB2YXIgb2Zmc2V0OiBjYy5WZWMyID0gdGhpcy5zY3JvbGxWaWV3LmdldFNjcm9sbE9mZnNldCgpO1xyXG4gICAgICAgICAgICBvZmZzZXQueCA9IC0gb2Zmc2V0Lng7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3Qoc3RhcnRJbmRleCwgb2Zmc2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6ZSA5q+BICovXHJcbiAgICBwdWJsaWMgb25EZXN0cm95KCkge1xyXG4gICAgICAgIC8v5riF55CG5YiX6KGo6aG5XHJcbiAgICAgICAgbGV0IGxlbiA9IHRoaXMuaXRlbUxpc3QubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNjLmlzVmFsaWQodGhpcy5pdGVtTGlzdFtpXSwgdHJ1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3RbaV0uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbUxpc3QubGVuZ3RoID0gMDtcclxuICAgICAgICAvL+a4heeQhuWvueixoeaxoFxyXG4gICAgICAgIGxlbiA9IHRoaXMuaXRlbVBvb2wubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNjLmlzVmFsaWQodGhpcy5pdGVtUG9vbFtpXSwgdHJ1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVBvb2xbaV0uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbVBvb2wubGVuZ3RoID0gMDtcclxuICAgICAgICAvL+a4heeQhuWIl+ihqOaVsOaNrlxyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbn1cclxuIl19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/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, '7cf8cMT5zJA0ZU4Gp0JcL8v', 'Storage');
// Script/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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVM7QUFDVCxJQUFJLGNBQWMsR0FBRztJQUNqQixVQUFVLEVBQUcsVUFBUyxHQUFHO1FBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNsQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFHLE1BQU0sRUFBQztZQUNSLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNELFVBQVUsRUFBRyxVQUFTLEdBQUcsRUFBQyxLQUFLO1FBQzNCLFVBQVU7UUFDVixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUNELGFBQWEsRUFBRyxVQUFTLEdBQUc7UUFDMUIsVUFBVTtRQUNWLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNwQztJQUNILENBQUM7Q0FDSixDQUFDO0FBRU8sd0NBQWMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+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/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/tool/DynamicAtlasManager.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, '3ffacOneORCf6Bc1LFhTCCQ', 'DynamicAtlasManager');
// Script/tool/DynamicAtlasManager.js
"use strict";
cc.Class({
"extends": cc.Component,
properties: {},
onLoad: function onLoad() {
cc.dynamicAtlasManager.enabled = false;
}
});
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxEeW5hbWljQXRsYXNNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwib25Mb2FkIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ0wsYUFBU0QsRUFBRSxDQUFDRSxTQURQO0FBR0xDLEVBQUFBLFVBQVUsRUFBRSxFQUhQO0FBTUxDLEVBQUFBLE1BTkssb0JBTUs7QUFDTkosSUFBQUEsRUFBRSxDQUFDSyxtQkFBSCxDQUF1QkMsT0FBdkIsR0FBaUMsS0FBakM7QUFDSDtBQVJJLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLkNvbXBvbmVudCxcclxuXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgY2MuZHluYW1pY0F0bGFzTWFuYWdlci5lbmFibGVkID0gZmFsc2U7XHJcbiAgICB9LFxyXG59KTtcclxuIl19
//------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() {
return _super !== null && _super.apply(this, arguments) || this;
}
GameData_1 = GameData;
GameData.prototype.onLoad = function () {
if (GameData_1._instance == null) {
GameData_1._instance = this;
cc.game.addPersistRootNode(this.node);
//设置为常驻,绑定音频以及游戏各类信息
this.AudioManager = this.node.getComponent('AudioManager');
}
else {
this.node.destroy();
return;
}
};
GameData.prototype.start = function () {
this.GM_INFO_init();
this.CLICK_init();
this.LEVEL_INFO_init();
//GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次
this.GAME_DATA = [];
};
GameData.prototype.GM_INFO_init = function () {
this.GM_INFO = {
// isEnd: false,
mean_Time: 0,
total: 0,
currSeed: 203213,
gameId: '100009',
userId: 200139,
guide: true,
url: "http://api.sparkus.cn",
success: false,
matchId: null,
custom: 0
};
};
GameData.prototype.CLICK_init = function () {
this.CLICK_DATA =
{
type: 1,
success: false,
round: 0,
totalSunCount: 0,
movedSunCount: 0,
sunSpeed: 0,
overlapSunCount: 0,
colorList: [],
duration: 0,
difficultyLevel: 0,
sunList: [],
stepTimeList: [],
remainder: 120
};
};
GameData.prototype.LEVEL_INFO_init = function () {
this.LEVEL_INFO = [
{
number: 3,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 0 //是否重叠现在0 不重叠 1 重叠1个
},
{
number: 4,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 5,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 3,
moveSpeed: 4,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 0,
moveSpeed: 4,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 3,
moveSpeed: 4,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 8,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 8,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 9,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 9,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 10,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 3,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 4,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 5,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
}
];
};
var GameData_1;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUUxQztJQUFzQyw0QkFBWTtJQUFsRDs7SUFzUkEsQ0FBQztpQkF0Um9CLFFBQVE7SUFnQnpCLHlCQUFNLEdBQU47UUFDSSxJQUFJLFVBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO1lBQzVCLFVBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLG9CQUFvQjtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlEO2FBQ0k7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFRCx3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFDaEIsQ0FBQTtJQUNMLENBQUM7SUFFRCwrQkFBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNYLGdCQUFnQjtZQUNoQixTQUFTLEVBQUMsQ0FBQztZQUNYLEtBQUssRUFBQyxDQUFDO1lBQ1AsUUFBUSxFQUFFLE1BQU07WUFDaEIsTUFBTSxFQUFDLFFBQVE7WUFDZixNQUFNLEVBQUMsTUFBTTtZQUNiLEtBQUssRUFBQyxJQUFJO1lBQ1YsR0FB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QUFDLENBQUM7YUFDWDtZQUNEO2dCQUNJLE1BQU0sRUFBQyxDQUFDO2dCQUNSLFVBQVUsRUFBQyxDQUFDO2dCQUNaLFNBQVMsRUFBQyxDQUFDO2dCQUNYLFdBQVcsRUFBQyxHQUFHO2dCQUNmLE9BQU8sRUFBQyxJQUFJO2dCQUNaLE1BQU0sRUFBQyxDQUFDO2FBQ1g7WUFDRDtnQkFDSSxNQUFNLEVBQUMsQ0FBQztnQkFDUixVQUFVLEVBQUMsQ0FBQztnQkFDWixTQUFTLEVBQUMsQ0FBQztnQkFDWCxXQUFXLEVBQUMsR0FBRztnQkFDZixPQUFPLEVBQUMsSUFBSTtnQkFDWixNQUFNLEVBQUMsQ0FBQzthQUNYO1NBRUosQ0FBQTtJQUNMLENBQUM7O0lBclJnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBc1I1QjtJQUFELGVBQUM7Q0F0UkQsQUFzUkMsQ0F0UnFDLEVBQUUsQ0FBQyxTQUFTLEdBc1JqRDtrQkF0Um9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVEYXRhIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIEdNX0lORk86IHt9O1xyXG4gICAgQXVkaW9NYW5hZ2VyOiBhbnk7Ly/pn7PpopHnrqHnkIZcclxuICAgIEdBTUVfREFUQTogYW55W107Ly/lpIfnlKhcclxuICAgIExFVkVMX0lORk86IHsgLy/nrKzkuIDpmr7luqZcclxuICAgICAgICBudW1iZXI6IG51bWJlcjsgLy/lpKrpmLPmgLvmlbAgXHJcbiAgICAgICAgbW92ZU51bWJlcjogbnVtYmVyOyAvL+WkqumYs+WPr+enu+WKqOS4quaVsFxyXG4gICAgICAgIG1vdmVTcGVlZDogbnVtYmVyOyAvL+WkqumYs+enu+WKqOmAn+W6puetiee6p1xyXG4gICAgICAgIG1heERpc3RhbmNlOiBudW1iZXI7IC8v5biD5bGA5ZCO56e75Yqo5pyA5aSn6Led56a7XHJcbiAgICAgICAgbWF4TW92ZTogbnVtYmVyOyAvL+WIneWni+W4g+WxgOacgOWkp+enu+WKqOi3neemu1xyXG4gICAgICAgIHJlcGVhdDogbnVtYmVyOyAvL+aYr+WQpumHjeWPoO+8jOeOsOWcqDAg5LiN6YeN5Y+gIDEg6YeN5Y+gMeS4qlxyXG4gICAgfVtdO1xyXG4gICAgLy/kuIrmiqXmlbDmja7vvIzmnInnmoTmuLjmiI/kuLrkuIDmlbTlsYDmuLjmiI/kuIDmrKHkuIrmiqXvvIzmnInnmoTkuLrmr4/mrKHmk43kvZzkuIrmiqVcclxuICAgIENMSUNLX0RBVEE6IHsgdHlwZTogbnVtYmVyOyBzdWNjZXNzOiBib29sZWFuOyByb3VuZDogbnVtYmVyOyB0b3RhbFN1bkNvdW50OiBudW1iZXI7IG1vdmVkU3VuQ291bnQ6IG51bWJlcjsgc3VuU3BlZWQ6IG51bWJlcjsgb3ZlcmxhcFN1bkNvdW50OiBudW1iZXI7IGNvbG9yTGlzdDogYW55W107IGR1cmF0aW9uOiBudW1iZXI7IGRpZmZpY3VsdHlMZXZlbDogbnVtYmVyOyBzdW5MaXN0OiBhbnlbXTsgc3RlcFRpbWVMaXN0OiBhbnlbXTsgcmVtYWluZGVyOiBudW1iZXI7IH07XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZiAoR2FtZURhdGEuX2luc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICAgICAgLy/orr7nva7kuLrluLjpqbvvvIznu5Hlrprpn7PpopHku6Xlj4rmuLjmiI/lkITnsbvkv6Hmga9cclxuICAgICAgICAgICAgdGhpcy5BdWRpb01hbmFnZXIgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KCdBdWRpb01hbmFnZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuR01fSU5GT19pbml0KCk7XHJcbiAgICAgICAgdGhpcy5DTElDS19pbml0KCk7XHJcbiAgICAgICAgdGhpcy5MRVZFTF9JTkZPX2luaXQoKTtcclxuICAgICAgICAvL0dBTUVfREFUQSDlup/lvIPkuobvvIzmmoLml7bkuI3liKDpmaTku6XpmLLlkI7pnaLkv67mlLnlm54g5LiA5pW05bGA5Lyg5LiA5qyhXHJcbiAgICAgICAgdGhpcy5HQU1FX0RBVEEgPSBbXHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG5cclxuICAgIEdNX0lORk9faW5pdCgpe1xyXG4gICAgICAgIHRoaXMuR01fSU5GTyA9IHsgXHJcbiAgICAgICAgICAgIC8vIGlzRW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgbWVhbl9UaW1lOjAsICAgICAgICAgICAgICAgIC8v5bmz5Z2H5pS+566t6YCf5bqmXHJcbiAgICAgICAgICAgIHRvdGFsOjAsICAgICAgICAgICAgICAgICAgICAvL+aAu+WFseWvueeahOS4quaVsFxyXG4gICAgICAgICAgICBjdXJyU2VlZDogMjAzMjEzLCAgICAgICAgICAgLy/nlKjkuo7pmo/mnLrmlbDnp43lrZBcclxuICAgICAgICAgICAgZ2FtZUlkOicxMDAwMDknLFxyXG4gICAgICAgICAgICB1c2VySWQ6MjAwMTM5LFxyXG4gICAgICAgICAgICBndWlkZTp0cnVlLCAgICAgICAgICAgICAgICAgLy/mmK/lkKbmnInlvJXlr7xcclxuICAgICAgICAgICAgdXJsOlwiaHR0cDovL2FwaS5zcGFya3VzLmNuXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZmFsc2UsXHJcbiAgICAgICAgICAgIG1hdGNoSWQ6bnVsbCxcclxuICAgICAgICAgICAgY3VzdG9tOiAwXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBDTElDS19pbml0KCl7XHJcbiAgICAgICAgdGhpcy5DTElDS19EQVRBID0gXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOjEsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZmFsc2UsXHJcbiAgICAgICAgICAgIHJvdW5kOjAsXHJcbiAgICAgICAgICAgIHRvdGFsU3VuQ291bnQ6MCxcclxuICAgICAgICAgICAgbW92ZWRTdW5Db3VudDowLFxyXG4gICAgICAgICAgICBzdW5TcGVlZDowLFxyXG4gICAgICAgICAgICBvdmVybGFwU3VuQ291bnQ6MCxcclxuICAgICAgICAgICAgY29sb3JMaXN0OltdLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjowLFxyXG4gICAgICAgICAgICBkaWZmaWN1bHR5TGV2ZWw6MCxcclxuICAgICAgICAgICAgc3VuTGlzdDpbXSxcclxuICAgICAgICAgICAgc3RlcFRpbWVMaXN0OltdLFxyXG4gICAgICAgICAgICByZW1haW5kZXI6MTIwXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgTEVWRUxfSU5GT19pbml0KCl7XHJcbiAgICAgICAgdGhpcy5MRVZFTF9JTkZPID0gW1xyXG4gICAgICAgICAgICB7ICAgLy/nrKzkuIDpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjozLCAgICAgICAvL+WkqumYs+aAu+aVsCBcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCwgICAvL+WkqumYs+WPr+enu+WKqOS4quaVsFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjAsICAgIC8v5aSq6Ziz56e75Yqo6YCf5bqm562J57qnXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsIC8v5biD5bGA5ZCO56e75Yqo5pyA5aSn6Led56a7XHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MCAgICAgICAgLy/mmK/lkKbph43lj6DvvIznjrDlnKgwIOS4jemHjeWPoCAxIOmHjeWPoDHkuKpcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzkuozpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo0LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjowLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjAsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzkuInpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo0LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjowLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjAsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzlm5vpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo1LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjoxLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzkupTpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo1LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjowLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzlha3pmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo2LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjowLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzkuIPpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo2LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjozLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjQsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzlhavpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo3LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjowLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjQsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzkuZ3pmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo3LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjozLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjQsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzljYHpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo3LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjozLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzljYHkuIDpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo4LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjozLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzljYHkuozpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo4LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjo1LFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzljYHkuInpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo5LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjozLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzljYHlm5vpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjo5LFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjo1LFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/nrKzljYHkupTpmr7luqZcclxuICAgICAgICAgICAgICAgIG51bWJlcjoxMCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTEgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTIgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDowLFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTMgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTQgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTUgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTYgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTcgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTggXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMTkgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MixcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8vMjAgXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBdXHJcbiAgICB9XHJcbn1cclxuIl19
//------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, '3fd2fh6vHNJeISUizW09xat', 'GuideManager');
// Script/GuideManager.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 Notification_1 = require("./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;
// LIFE-CYCLE CALLBACKS:
_this.dialog = null;
_this.ball = null;
_this.qiu1 = null;
_this.linePrefab = null;
return _this;
}
// onLoad () {}
NewClass.prototype.start = function () {
GameData_1.default._instance.GM_INFO.custom = 0;
this.init();
this.startGuide(0);
};
//初始化数据
NewClass.prototype.init = function () {
this.custom = 1;
this.ball.zIndex = 100;
this.Pos_Array = [];
this.ball_Array = [];
this.begin = false;
this.clickNow = 0;
this.tip = null;
};
//开始引导方法
NewClass.prototype.startGuide = function (type) {
var _this = this;
var num = this.custom;
var time = 0.5;
var name = "tip" + num;
if (type != 0) {
cc.tween(this.node)
.to(time, { opacity: 255 })
.call(function () {
_this.custom += 1;
if (type != 0)
_this.custom = 2;
if (_this.custom == 2)
_this.createSun(true);
else if (_this.custom == 3)
_this.createSun(false);
else if (_this.custom == 4)
_this.begin = true;
else if (_this.custom == 5)
cc.director.loadScene("GameScene");
})
.start();
}
else {
this.tip = this.dialog.getChildByName(name);
this.tip.active = true;
this.tip.opacity = 0;
cc.tween(this.tip)
.to(time, { opacity: 255 })
.start();
}
};
//清除所有太阳
NewClass.prototype.beginClick = function () {
for (var i = 0; i < this.ball_Array.length; i++) {
this.ball_Array[i].getComponent("Sun").move = false;
}
};
//点击开始游戏,或者点击跳过引导
NewClass.prototype.clickBtn = function () {
cc.director.loadScene("GameScene");
};
//点击下一步按钮
NewClass.prototype.next = function () {
var _this = this;
var time = 0.5;
cc.tween(this.tip)
.to(time, { opacity: 0 })
.call(function () {
_this.custom += 1;
if (_this.custom == 2)
_this.createSun(true);
else if (_this.custom == 3)
_this.createSun(false);
else if (_this.custom == 4)
_this.begin = true;
else if (_this.custom == 5)
cc.director.loadScene("GameScene");
})
.start();
};
//创建太阳
NewClass.prototype.createSun = function (type) {
var _this = this;
if (type == true) {
this.ball_Array = [];
this.Pos_Array.push(cc.v2(-250, -216), cc.v2(200, -115), cc.v2(-35, -500));
var time1 = this.calculateDistance(this.ball.x, this.ball.y, this.Pos_Array[0].x, this.Pos_Array[0].y);
this.ball.opacity = 0;
cc.tween(this.ball)
.to(time1, { position: this.Pos_Array[0] })
.call(function () {
_this.createBall(0, 0, 0, false);
})
.delay(1)
.call(function () {
_this.startGuide(0);
})
.start();
}
else {
var time2 = this.calculateDistance(this.Pos_Array[0].x, this.Pos_Array[0].y, this.Pos_Array[1].x, this.Pos_Array[1].y);
var time3 = this.calculateDistance(this.Pos_Array[1].x, this.Pos_Array[1].y, this.Pos_Array[2].x, this.Pos_Array[2].y);
this.ball.opacity = 255;
this.createLine(cc.v2(this.ball.x, this.ball.y), cc.v2(this.Pos_Array[1].x, this.Pos_Array[1].y), 0.5);
cc.tween(this.ball)
.to(time2, { position: this.Pos_Array[1] })
.call(function () {
_this.createBall(1, 0, 0, false);
})
.delay(0.5)
.call(function () {
_this.createLine(cc.v2(_this.ball.x, _this.ball.y), cc.v2(_this.Pos_Array[2].x, _this.Pos_Array[2].y), 0.5);
})
.to(time3, { position: this.Pos_Array[2] })
.call(function () {
_this.createBall(2, 0, 0, false);
_this.ball.opacity = 0;
})
.delay(0.2)
.call(function () {
_this.destroyLine();
_this.startGuide(0);
})
.start();
}
};
//创建太阳
NewClass.prototype.createBall = function (number, color, speed, repeat) {
var ball = null;
ball = cc.instantiate(this.qiu1);
ball.parent = this.node.getChildByName("Sun");
ball.zIndex = this.Pos_Array.length - number;
ball.setPosition(this.ball.x, this.ball.y);
ball.getComponent("Sun").init(number, color, speed, repeat);
ball.getComponent("Sun").move = true;
this.ball_Array.push(ball);
};
//获取两点之间角度创建连线用
NewClass.prototype.calculateDistance = function (x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 800)
distance = 800;
var time = distance / 800 * 0.8;
return time;
};
//引导成功
NewClass.prototype.passLevel = function () {
var _this = this;
var win = this.node.getChildByName("Win");
win.active = true;
win.setScale(0);
cc.tween(win)
.delay(0.4)
.to(0.01, { scale: 2.5 })
.to(0.35, { scale: 1 })
.delay(0.6)
.call(function () {
win.active = false;
setTimeout(function () {
_this.destroyLine();
var timeArray = [];
var timeCount = 0;
var ball = _this.ball_Array[0];
for (var i = 1; i < _this.ball_Array.length; i++) {
var time = _this.calculateDistance(_this.ball_Array[i].x, _this.ball_Array[i].y, _this.ball_Array[i - 1].x, _this.ball_Array[i - 1].y);
timeArray.push(time);
}
var _loop_1 = function (k) {
setTimeout(function () {
cc.tween(ball)
.to(timeArray[k - 1], { x: _this.ball_Array[k].x, y: _this.ball_Array[k].y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
setTimeout(function () {
_this.ball.opacity = 255;
_this.ball.position = cc.v3(ball.x, ball.y, 0);
_this.ball.active = false;
_this.startGuide(0);
}, 200);
}
})
.start();
}, timeCount * 1000);
timeCount += (timeArray[k - 1] + 0.1);
};
for (var k = 1; k < _this.ball_Array.length; k++) {
_loop_1(k);
}
}, 400);
})
.start();
};
//点击太阳执行方法
NewClass.prototype.clickSun = function (data) {
var _this = this;
if (this.begin == true) {
if (data == this.clickNow) {
GameData_1.default._instance.AudioManager.playAudioButton();
if (this.clickNow > 0) {
this.createLine(cc.v2(this.ball_Array[this.clickNow - 1].x, this.ball_Array[this.clickNow - 1].y), cc.v2(this.ball_Array[this.clickNow].x, this.ball_Array[this.clickNow].y), 0.2);
}
this.clickNow += 1;
GameData_1.default._instance.GM_INFO.total += 1;
setTimeout(function () {
if (_this.ball_Array[_this.clickNow - 1])
_this.ball_Array[_this.clickNow - 1].getChildByName("guang").active = false;
}, 200);
if (this.clickNow == 3) {
this.passLevel();
}
}
else {
this.loseLevel();
}
}
};
//失败事件
NewClass.prototype.loseLevel = function () {
var _this = this;
this.begin = false;
GameData_1.default._instance.AudioManager.playWarning();
this.destroyLine();
var ball = this.ball_Array[0];
var _loop_2 = function (k) {
cc.tween(this_1.ball_Array[k])
.to(0.6, { x: ball.x, y: ball.y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
_this.ball.opacity = 0;
_this.ball.position = cc.v3(ball.x, ball.y, 0);
_this.clearSun();
_this.custom = 1;
_this.startGuide(1);
}
})
.start();
};
var this_1 = this;
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_2(k);
}
//结束页面动画
var over = this.node.getChildByName("Over");
cc.tween(over)
.to(0.25, { opacity: 255 })
.delay(0.1)
.to(0.2, { opacity: 0 })
.delay(0.1)
.to(0.15, { opacity: 255 })
.delay(0.1)
.to(0.1, { opacity: 0 })
.start();
};
//点击太阳事件
NewClass.prototype.clearSun = function () {
for (var k = 0; k < this.ball_Array.length; k++) {
this.ball_Array[k].removeFromParent();
this.ball_Array[k] = null;
}
this.ball_Array = [];
};
//获取时间戳
NewClass.prototype.getTime = function () {
var timestamp = new Date().getTime();
return timestamp;
};
//创造连线,参数起点,终点,连线时间
NewClass.prototype.createLine = function (start, end, time) {
var line = cc.instantiate(this.linePrefab);
line.parent = this.node.getChildByName("Line");
line.setPosition(start.x, start.y);
var dx = end.x - start.x;
var dy = end.y - start.y;
var distance = Math.sqrt(dx * dx + dy * dy);
line.height = distance;
line.getComponent(cc.Sprite).fillRange = 0;
line.angle = -this.calculateAngle(start.x, start.y, end.x, end.y);
cc.tween(line.getComponent(cc.Sprite))
.to(time, { fillRange: 1 })
.start();
};
//摧毁连线
NewClass.prototype.destroyLine = function () {
for (var i = 0; i < this.node.getChildByName("Line").children.length; i++) {
if (this.node.getChildByName("Line").children[i]) {
this.node.getChildByName("Line").children[i].removeFromParent();
this.node.getChildByName("Line").children[i] = null;
}
}
this.node.getChildByName("Line").removeAllChildren();
};
//获取两个点之间的角度 用于写连线 确定连线方向
NewClass.prototype.calculateAngle = function (x1, y1, x2, y2) {
var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI - 90;
return -angle;
};
NewClass.prototype.onEnable = function () {
Notification_1.Notification.on("clickSun", this.clickSun, this);
};
NewClass.prototype.onDisable = function () {
Notification_1.Notification.off("clickSun", this.clickSun);
};
__decorate([
property(cc.Node)
], NewClass.prototype, "dialog", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "ball", void 0);
__decorate([
property(cc.Prefab)
], NewClass.prototype, "qiu1", void 0);
__decorate([
property(cc.Prefab)
], NewClass.prototype, "linePrefab", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHdWlkZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLHVDQUFrQztBQUNsQywrQ0FBOEM7QUFDeEMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUFrVEM7UUFqVEcsd0JBQXdCO1FBRXhCLFlBQU0sR0FBWSxJQUFJLENBQUM7UUFFdkIsVUFBSSxHQUFZLElBQUksQ0FBQztRQUVyQixVQUFJLEdBQWMsSUFBSSxDQUFDO1FBRXZCLGdCQUFVLEdBQWMsSUFBSSxDQUFDOztJQXlTakMsQ0FBQztJQWxTRyxlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELE9BQU87SUFDUCx1QkFBSSxHQUFKO1FBQ0ksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxRQUFRO0lBQ1IsNkJBQVUsR0FBVixVQUFXLElBQUk7UUFBZixpQkF3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SyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2xCLEVBQUUsQ0FBQyxLQUFLLEVBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO2lCQUN0QyxJQUFJLENBQUM7Z0JBQ0YsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQztpQkFDVixJQUFJLENBQUM7Z0JBQ0YsS0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM3RixHQUFHLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQztpQkFDRCxFQUFFLENBQUMsS0FBSyxFQUFDLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztpQkFDdEMsSUFBSSxDQUFDO2dCQUNGLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQztpQkFDVixJQUFJLENBQUM7Z0JBQ0YsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQztpQkFDRCxLQUFLLEVBQUUsQ0FBQztTQUNa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QUUsRUFBRSxFQUFFO1FBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFDLEVBQUUsRUFBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLEdBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUNELDJCQUFRLEdBQVI7UUFDSSwyQkFBWSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsNEJBQVMsR0FBVDtRQUNJLDJCQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQTdTRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzRDQUNLO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFFckI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQzswQ0FDRztJQUV2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO2dEQUNTO0lBVFosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQWtUNUI7SUFBRCxlQUFDO0NBbFRELEFBa1RDLENBbFRxQyxFQUFFLENBQUMsU0FBUyxHQWtUakQ7a0JBbFRvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy/mraTpobXpnaLkuLrlvJXlr7zpobXpnaLvvIzlkI7nu63mm7TmlrDmiJDmqKHmnb/vvIzmmoLml7blgbfmh5LlpI3liLbkuLvmuLjmiI/lnLrmma/ku6PnoIHov5vmnaVcclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4vR2FtZURhdGEnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL05vdGlmaWNhdGlvbic7XHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgZGlhbG9nOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgYmFsbDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgcWl1MTogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBsaW5lUHJlZmFiOiBjYy5QcmVmYWIgPSBudWxsO1xyXG4gICAgY2xpY2tOb3c6bnVtYmVyO1xyXG4gICAgY3VzdG9tOiBudW1iZXI7XHJcbiAgICBQb3NfQXJyYXk6IGFueTtcclxuICAgIGJhbGxfQXJyYXk6IGFueTtcclxuICAgIGJlZ2luOiBib29sZWFuO1xyXG4gICAgdGlwOiBjYy5Ob2RlO1xyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1c3RvbSA9IDA7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5zdGFydEd1aWRlKDApO1xyXG4gICAgfVxyXG4gICAgLy/liJ3lp4vljJbmlbDmja5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLmN1c3RvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5iYWxsLnpJbmRleCA9IDEwMDtcclxuICAgICAgICB0aGlzLlBvc19BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuYmVnaW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNsaWNrTm93ID0gMDtcclxuICAgICAgICB0aGlzLnRpcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICAvL+W8gOWni+W8leWvvOaWueazlVxyXG4gICAgc3RhcnRHdWlkZSh0eXBlKXtcclxuICAgICAgICBsZXQgbnVtID0gdGhpcy5jdXN0b207XHJcbiAgICAgICAgbGV0IHRpbWUgPSAwLjU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInRpcFwiICsgbnVtO1xyXG4gICAgICAgIGlmKHR5cGUhPTApe1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgICAgIC50byh0aW1lLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b20gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUgIT0gMCkgdGhpcy5jdXN0b20gPSAyO1xyXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuY3VzdG9tID09IDIpICB0aGlzLmNyZWF0ZVN1bih0cnVlKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoIHRoaXMuY3VzdG9tID09IDMpICB0aGlzLmNyZWF0ZVN1bihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSA0KSAgdGhpcy5iZWdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSA1KSBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnRpcCA9IHRoaXMuZGlhbG9nLmdldENoaWxkQnlOYW1lKG5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLnRpcC5hY3RpdmUgPSB0cnVlOyB0aGlzLnRpcC5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy50aXApXHJcbiAgICAgICAgICAgIC50byh0aW1lLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5riF6Zmk5omA5pyJ5aSq6ZizXHJcbiAgICBiZWdpbkNsaWNrKCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5iYWxsX0FycmF5Lmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2ldLmdldENvbXBvbmVudChcIlN1blwiKS5tb3ZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ngrnlh7vlvIDlp4vmuLjmiI/vvIzmiJbogIXngrnlh7vot7Pov4flvJXlr7xcclxuICAgIGNsaWNrQnRuKCl7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgfVxyXG4gICAgLy/ngrnlh7vkuIvkuIDmraXmjInpkq5cclxuICAgIG5leHQoKXtcclxuICAgICAgICBsZXQgdGltZSA9IDAuNTtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLnRpcClcclxuICAgICAgICAudG8odGltZSx7b3BhY2l0eTowfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5jdXN0b20gKz0gMTtcclxuICAgICAgICAgICAgaWYoIHRoaXMuY3VzdG9tID09IDIpICB0aGlzLmNyZWF0ZVN1bih0cnVlKTtcclxuICAgICAgICAgICAgZWxzZSBpZiggdGhpcy5jdXN0b20gPT0gMykgIHRoaXMuY3JlYXRlU3VuKGZhbHNlKTtcclxuICAgICAgICAgICAgZWxzZSBpZiggdGhpcy5jdXN0b20gPT0gNCkgIHRoaXMuYmVnaW4gPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSA1KSBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcbiAgICAvL+WIm+W7uuWkqumYs1xyXG4gICAgY3JlYXRlU3VuKHR5cGUpe1xyXG4gICAgICAgIGlmKHR5cGUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLlBvc19BcnJheS5wdXNoKGNjLnYyKC0yNTAsLTIxNiksY2MudjIoMjAwLC0xMTUpLGNjLnYyKC0zNSwtNTAwKSk7XHJcbiAgICAgICAgICAgIGxldCB0aW1lMSA9IHRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5iYWxsLngsdGhpcy5iYWxsLnksdGhpcy5Qb3NfQXJyYXlbMF0ueCx0aGlzLlBvc19BcnJheVswXS55KVxyXG4gICAgICAgICAgICB0aGlzLmJhbGwub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbClcclxuICAgICAgICAgICAgLnRvKHRpbWUxLHtwb3NpdGlvbjp0aGlzLlBvc19BcnJheVswXX0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVCYWxsKDAsMCwwLGZhbHNlKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmRlbGF5KDEpXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydEd1aWRlKDApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgbGV0IHRpbWUyID0gdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLlBvc19BcnJheVswXS54LHRoaXMuUG9zX0FycmF5WzBdLnksdGhpcy5Qb3NfQXJyYXlbMV0ueCx0aGlzLlBvc19BcnJheVsxXS55KVxyXG4gICAgICAgICAgICBsZXQgdGltZTMgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuUG9zX0FycmF5WzFdLngsdGhpcy5Qb3NfQXJyYXlbMV0ueSx0aGlzLlBvc19BcnJheVsyXS54LHRoaXMuUG9zX0FycmF5WzJdLnkpXHJcbiAgICAgICAgICAgIHRoaXMuYmFsbC5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpbmUoY2MudjIodGhpcy5iYWxsLngsdGhpcy5iYWxsLnkpLGNjLnYyKHRoaXMuUG9zX0FycmF5WzFdLngsdGhpcy5Qb3NfQXJyYXlbMV0ueSksXHJcbiAgICAgICAgICAgIDAuNSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbClcclxuICAgICAgICAgICAgLnRvKHRpbWUyLHtwb3NpdGlvbjp0aGlzLlBvc19BcnJheVsxXX0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVCYWxsKDEsMCwwLGZhbHNlKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmRlbGF5KDAuNSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUxpbmUoY2MudjIodGhpcy5iYWxsLngsdGhpcy5iYWxsLnkpLGNjLnYyKHRoaXMuUG9zX0FycmF5WzJdLngsdGhpcy5Qb3NfQXJyYXlbMl0ueSksXHJcbiAgICAgICAgICAgICAgICAwLjUpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudG8odGltZTMse3Bvc2l0aW9uOnRoaXMuUG9zX0FycmF5WzJdfSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJhbGwoMiwwLDAsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYWxsLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC4yKVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUxpbmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRHdWlkZSgwKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIC8v5Yib5bu65aSq6ZizXHJcbiAgICBjcmVhdGVCYWxsKG51bWJlcixjb2xvcixzcGVlZCxyZXBlYXQpe1xyXG4gICAgICAgIGxldCBiYWxsID0gbnVsbDtcclxuICAgICAgICBiYWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5xaXUxKTtcclxuICAgICAgICBiYWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlN1blwiKTtcclxuICAgICAgICBiYWxsLnpJbmRleCA9IHRoaXMuUG9zX0FycmF5Lmxlbmd0aCAtIG51bWJlcjtcclxuICAgICAgICBiYWxsLnNldFBvc2l0aW9uKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55KTtcclxuICAgICAgICBiYWxsLmdldENvbXBvbmVudChcIlN1blwiKS5pbml0KG51bWJlcixjb2xvcixzcGVlZCxyZXBlYXQpO1xyXG4gICAgICAgIGJhbGwuZ2V0Q29tcG9uZW50KFwiU3VuXCIpLm1vdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheS5wdXNoKGJhbGwpO1xyXG4gICAgfVxyXG4gICAgLy/ojrflj5bkuKTngrnkuYvpl7Top5LluqbliJvlu7rov57nur/nlKhcclxuICAgIGNhbGN1bGF0ZURpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSB7XHJcbiAgICAgICAgY29uc3QgZHggPSB4MiAtIHgxO1xyXG4gICAgICAgIGNvbnN0IGR5ID0geTIgLSB5MTtcclxuICAgICAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZHgqZHggKyBkeSpkeSk7XHJcbiAgICAgICAgaWYoZGlzdGFuY2UgPiA4MDApIGRpc3RhbmNlID0gODAwO1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSBkaXN0YW5jZS84MDAgKiAwLjg7XHJcbiAgICAgICAgcmV0dXJuIHRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lvJXlr7zmiJDlip9cclxuICAgIHBhc3NMZXZlbCgpe1xyXG4gICAgICAgIGxldCB3aW4gPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIik7XHJcbiAgICAgICAgd2luLmFjdGl2ZSA9IHRydWU7IHdpbi5zZXRTY2FsZSgwKTtcclxuICAgICAgICBjYy50d2Vlbih3aW4pXHJcbiAgICAgICAgLmRlbGF5KDAuNClcclxuICAgICAgICAudG8oMC4wMSx7c2NhbGU6Mi41fSlcclxuICAgICAgICAudG8oMC4zNSx7c2NhbGU6MX0pXHJcbiAgICAgICAgLmRlbGF5KDAuNilcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgd2luLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveUxpbmUoKTtcclxuICAgICAgICAgICAgICAgIGxldCB0aW1lQXJyYXkgPSBbXTtcclxuICAgICAgICAgICAgICAgIGxldCB0aW1lQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MTsgaTwgdGhpcy5iYWxsX0FycmF5Lmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IHRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5iYWxsX0FycmF5W2ldLngsdGhpcy5iYWxsX0FycmF5W2ldLnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpLTFdLngsdGhpcy5iYWxsX0FycmF5W2ktMV0ueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZUFycmF5LnB1c2godGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGs9MTsgazwgdGhpcy5iYWxsX0FycmF5Lmxlbmd0aDsgaysrKXtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4oYmFsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvKHRpbWVBcnJheVtrLTFdLHt4OnRoaXMuYmFsbF9BcnJheVtrXS54LHk6dGhpcy5iYWxsX0FycmF5W2tdLnl9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGsgPT0gdGhpcy5iYWxsX0FycmF5Lmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbC5wb3NpdGlvbiA9IGNjLnYzKGJhbGwueCxiYWxsLnksMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEd1aWRlKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRpbWVDb3VudCoxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lQ291bnQgKz0gKHRpbWVBcnJheVtrLTFdKzAuMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDQwMCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuICAgIC8v54K55Ye75aSq6Ziz5omn6KGM5pa55rOVXHJcbiAgICBjbGlja1N1bihkYXRhKXtcclxuICAgICAgICBpZih0aGlzLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICBpZihkYXRhID09IHRoaXMuY2xpY2tOb3cpe1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkF1ZGlvTWFuYWdlci5wbGF5QXVkaW9CdXR0b24oKTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY2xpY2tOb3cgPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUxpbmUoY2MudjIodGhpcy5iYWxsX0FycmF5W3RoaXMuY2xpY2tOb3ctMV0ueCx0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXS55KSxcclxuICAgICAgICAgICAgICAgICAgICBjYy52Mih0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vd10ueCx0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vd10ueSksXHJcbiAgICAgICAgICAgICAgICAgICAgMC4yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tOb3cgKz0gMTtcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnRvdGFsICs9IDE7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W3RoaXMuY2xpY2tOb3ctMV0uZ2V0Q2hpbGRCeU5hbWUoXCJndWFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNsaWNrTm93ID09IDMpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFzc0xldmVsKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9zZUxldmVsKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+Wksei0peS6i+S7tlxyXG4gICAgbG9zZUxldmVsKCl7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5BdWRpb01hbmFnZXIucGxheVdhcm5pbmcoKTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lMaW5lKCk7XHJcbiAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgZm9yKGxldCBrPTE7IGs8IHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbF9BcnJheVtrXSlcclxuICAgICAgICAgICAgLnRvKDAuNix7eDpiYWxsLngseTpiYWxsLnl9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmKGsgPT0gdGhpcy5iYWxsX0FycmF5Lmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsLnBvc2l0aW9uID0gY2MudjMoYmFsbC54LGJhbGwueSwwKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU3VuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b20gPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRHdWlkZSgxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KClcclxuICAgICAgICB9XHJcbiAgICAgICAgLy/nu5PmnZ/pobXpnaLliqjnlLtcclxuICAgICAgICBsZXQgb3ZlciA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIk92ZXJcIik7XHJcbiAgICAgICAgY2MudHdlZW4ob3ZlcilcclxuICAgICAgICAudG8oMC4yNSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgIC5kZWxheSgwLjEpXHJcbiAgICAgICAgLnRvKDAuMix7b3BhY2l0eTowfSlcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjE1LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLmRlbGF5KDAuMSlcclxuICAgICAgICAudG8oMC4xLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG4gICAgLy/ngrnlh7vlpKrpmLPkuovku7ZcclxuICAgIGNsZWFyU3VuKCl7XHJcbiAgICAgICAgZm9yKGxldCBrPTA7IGs8IHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheSA9IFtdO1xyXG4gICAgfVxyXG4gICAgLy/ojrflj5bml7bpl7TmiLNcclxuICAgIGdldFRpbWUoKXtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICByZXR1cm4gdGltZXN0YW1wO1xyXG4gICAgfVxyXG4gICAgLy/liJvpgKDov57nur/vvIzlj4LmlbDotbfngrnvvIznu4jngrnvvIzov57nur/ml7bpl7RcclxuICAgIGNyZWF0ZUxpbmUoc3RhcnQsZW5kLHRpbWUpe1xyXG4gICAgICAgIGxldCBsaW5lID0gY2MuaW5zdGFudGlhdGUodGhpcy5saW5lUHJlZmFiKTtcclxuICAgICAgICBsaW5lLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIik7XHJcbiAgICAgICAgbGluZS5zZXRQb3NpdGlvbihzdGFydC54LHN0YXJ0LnkpO1xyXG4gICAgXHJcbiAgICAgICAgY29uc3QgZHggPSBlbmQueCAtIHN0YXJ0Lng7XHJcbiAgICAgICAgY29uc3QgZHkgPSBlbmQueSAtIHN0YXJ0Lnk7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGxpbmUuaGVpZ2h0ID0gZGlzdGFuY2U7XHJcbiAgICAgICAgbGluZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5maWxsUmFuZ2UgPSAwO1xyXG4gICAgICAgIGxpbmUuYW5nbGUgPSAtdGhpcy5jYWxjdWxhdGVBbmdsZShzdGFydC54LHN0YXJ0LnksZW5kLngsZW5kLnkpO1xyXG4gICAgICAgIGNjLnR3ZWVuKGxpbmUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkpXHJcbiAgICAgICAgLnRvKHRpbWUse2ZpbGxSYW5nZToxfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuICAgIC8v5pGn5q+B6L+e57q/XHJcbiAgICBkZXN0cm95TGluZSgpIHtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW5baV0pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKS5jaGlsZHJlbltpXS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLmNoaWxkcmVuW2ldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluS4pOS4queCueS5i+mXtOeahOinkuW6piDnlKjkuo7lhpnov57nur8g56Gu5a6a6L+e57q/5pa55ZCRXHJcbiAgICBjYWxjdWxhdGVBbmdsZSh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoeTIteTEseDIteDEpKjE4MCAvIE1hdGguUEkgLSA5MDtcclxuICAgICAgICByZXR1cm4gLWFuZ2xlO1xyXG4gICAgfVxyXG4gICAgb25FbmFibGUgKCkge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vbihcImNsaWNrU3VuXCIsIHRoaXMuY2xpY2tTdW4sIHRoaXMpO1xyXG4gICAgfVxyXG4gICAgb25EaXNhYmxlICgpIHtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwiY2xpY2tTdW5cIiwgdGhpcy5jbGlja1N1bik7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
//------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, '805c6nf399HWZeuWnNB9CTH', '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 GameData_1 = require("./GameData");
var serverAPI_1 = require("./crypto/serverAPI");
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.count = null;
_this.time = null;
_this.selfNode = null;
_this.one = null;
_this.two = null;
_this.three = null;
_this.four = null;
_this.five = null;
return _this;
}
// onLoad () {}
NewClass.prototype.start = function () {
this.count.string = GameData_1.default._instance.GM_INFO.total;
if (GameData_1.default._instance.GM_INFO.mean_Time > 10) {
GameData_1.default._instance.GM_INFO.mean_Time = (parseInt(Math.random() * 10 + "") + 5) / 10;
}
this.time.string = GameData_1.default._instance.GM_INFO.mean_Time + "s";
this.init();
};
//初始化数据
NewClass.prototype.init = function () {
this.listData = [];
this.selfData = null;
this.one.active = false;
this.two.active = false;
this.three.active = false;
this.four.active = false;
this.five.active = false;
this.getRank();
};
//打开排行榜
NewClass.prototype.openRank = function () {
cc.director.loadScene("RankScene");
};
//重新开始玩
NewClass.prototype.again = function () {
cc.director.loadScene("GameScene");
};
//获取排行榜
NewClass.prototype.getRank = function () {
var postData = {
"page": 1,
"pageSize": 100
};
serverAPI_1.default.rankData(2, this.getRankData.bind(this), postData);
};
//设置排行信息
NewClass.prototype.getRankData = function (data) {
if (data) {
this.listData = data.data.list;
this.selfData = data.data.info;
var rankData = [];
var self = false;
if (this.selfData.nickName.length > 4) {
this.selfData.nickName = this.selfData.nickName.substring(0, 4) + "...";
}
this.selfNode.getChildByName("name").getComponent(cc.Label).string = this.selfData.nickName;
this.selfNode.getChildByName("total").getComponent(cc.Label).string = this.selfData.totalSunCount;
this.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic);
for (var i = 0; i <= this.listData.length - 1; i++) {
rankData.push({ rank: (i + 1), name: this.listData[i].nickName, total: this.listData[i].totalSunCount, pic: this.listData[i].pic });
if (GameData_1.default._instance.GM_INFO.userId == this.listData[i].userId) {
self = true;
this.selfNode.getChildByName("rank").getComponent(cc.Label).string = (i + 1) + "";
}
if (i == (this.listData.length - 1) && self == false) {
this.selfNode.getChildByName("rank").getComponent(cc.Label).string = "99+";
}
if (i < 5)
this.setRank(i, this.listData[i]);
}
}
};
//根据内容填充排行榜
NewClass.prototype.setRank = function (num, data) {
var hitNode = null;
if (num == 0) {
hitNode = this.one;
}
else if (num == 1) {
hitNode = this.two;
}
else if (num == 2) {
hitNode = this.three;
}
else if (num == 3) {
hitNode = this.four;
}
else if (num == 4) {
hitNode = this.five;
}
if (hitNode) {
hitNode.active = true;
if (data.nickName.length > 4) {
data.nickName = data.nickName.substring(0, 4) + "...";
}
hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName;
hitNode.getChildByName("total").getComponent(cc.Label).string = data.totalSunCount;
this.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic);
}
};
//设置头像
NewClass.prototype.setPic = function (node, pic) {
node.active = false;
var url = pic;
setTimeout(function () {
fetch(url)
.then(function (response) {
return response.headers.get('Content-Length');
})
.then(function (errNo) {
if (errNo == "5093") {
node.active = true;
}
})
.catch(function (error) {
console.error('Error fetching X-Info:', error);
});
}, 100);
cc.assetManager.loadRemote(url, { ext: '.jpg' }, function (err, texture) {
if (texture) {
node.active = true;
node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
}
else {
console.log(err, texture);
}
});
};
__decorate([
property(cc.Label)
], NewClass.prototype, "count", void 0);
__decorate([
property(cc.Label)
], NewClass.prototype, "time", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "selfNode", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "one", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "two", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "three", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "four", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "five", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRix1Q0FBa0M7QUFFbEMsZ0RBQTBDO0FBR3BDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMklDO1FBeklHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFFdkIsVUFBSSxHQUFhLElBQUksQ0FBQztRQUV0QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsU0FBRyxHQUFZLElBQUksQ0FBQztRQUVwQixXQUFLLEdBQVksSUFBSSxDQUFDO1FBRXRCLFVBQUksR0FBWSxJQUFJLENBQUM7UUFFckIsVUFBSSxHQUFZLElBQUksQ0FBQzs7SUEySHpCLENBQUM7SUF4SEcsZUFBZTtJQUNmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3JELElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQUM7WUFDekMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQTtTQUM5RTtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFRLENBQUMsU0FB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LEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzt5Q0FDRTtJQUVwQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNFO0lBRXBCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFFdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDRztJQUVyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBaEJKLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EySTVCO0lBQUQsZUFBQztDQTNJRCxBQTJJQyxDQTNJcUMsRUFBRSxDQUFDLFNBQVMsR0EySWpEO2tCQTNJb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgTGlzdCBmcm9tIFwiLi9MaXN0Vmlldy9MaXN0XCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi9jcnlwdG8vc2VydmVyQVBJXCI7XHJcbmltcG9ydCBScSBmcm9tIFwiLi9jcnlwdG8vc2VydmVyQVBJXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGNvdW50OiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0aW1lOiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIHNlbGZOb2RlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgb25lOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdHdvOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdGhyZWU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmb3VyOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgZml2ZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBsaXN0RGF0YTogYW55O1xyXG4gICAgc2VsZkRhdGE6IGFueTtcclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuY291bnQuc3RyaW5nID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udG90YWw7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lID4gMTApe1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUgPSAocGFyc2VJbnQoTWF0aC5yYW5kb20oKSoxMCtcIlwiKSs1KS8xMFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpbWUuc3RyaW5nID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lICsgXCJzXCI7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluaVsOaNrlxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMubGlzdERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGZEYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLm9uZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnR3by5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRocmVlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm91ci5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpdmUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRSYW5rKCk7XHJcbiAgICB9XHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJwYWdlXCI6MSxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOjEwMFxyXG4gICAgICAgIH07IFxyXG4gICAgICAgIEh0dHBVdGlsLnJhbmtEYXRhKDIsdGhpcy5nZXRSYW5rRGF0YS5iaW5kKHRoaXMpLHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIC8v6K6+572u5o6S6KGM5L+h5oGvXHJcbiAgICBnZXRSYW5rRGF0YShkYXRhKXtcclxuICAgICAgICBpZihkYXRhKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IGRhdGEuZGF0YS5saXN0O1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgICAgIGxldCByYW5rRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgc2VsZiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZEYXRhLm5pY2tOYW1lLmxlbmd0aCA+IDQpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmRGF0YS5uaWNrTmFtZT0gdGhpcy5zZWxmRGF0YS5uaWNrTmFtZS5zdWJzdHJpbmcoMCw0KSArIFwiLi4uXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuc2VsZkRhdGEubmlja05hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuc2VsZkRhdGEudG90YWxTdW5Db3VudDtcclxuICAgICAgICAgICAgdGhpcy5zZXRQaWModGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPD10aGlzLmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgICAgICByYW5rRGF0YS5wdXNoKHtyYW5rOihpKzEpLCBuYW1lOnRoaXMubGlzdERhdGFbaV0ubmlja05hbWUsIHRvdGFsOnRoaXMubGlzdERhdGFbaV0udG90YWxTdW5Db3VudCwgcGljOnRoaXMubGlzdERhdGFbaV0ucGljfSk7XHJcbiAgICAgICAgICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPT0gdGhpcy5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoaSA9PSAodGhpcy5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjk5K1wiOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGk8NSkgdGhpcy5zZXRSYW5rKGksdGhpcy5saXN0RGF0YVtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+agueaNruWGheWuueWhq+WFheaOkuihjOamnFxyXG4gICAgc2V0UmFuayhudW0sZGF0YSl7XHJcbiAgICAgICAgdmFyIGhpdE5vZGUgPSBudWxsO1xyXG4gICAgICAgIGlmKG51bSA9PSAwKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAxKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMudHdvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAyKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMudGhyZWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtID09IDMpe1xyXG4gICAgICAgICAgICBoaXROb2RlID0gdGhpcy5mb3VyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSA0KXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZml2ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoaGl0Tm9kZSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYoZGF0YS5uaWNrTmFtZS5sZW5ndGggPiA0KXtcclxuICAgICAgICAgICAgICAgIGRhdGEubmlja05hbWU9IGRhdGEubmlja05hbWUuc3Vic3RyaW5nKDAsNCkgKyBcIi4uLlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnRvdGFsU3VuQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbiAgICAvL+iuvue9ruWktOWDj1xyXG4gICAgcHVibGljIHNldFBpYyhub2RlLHBpYyl7XHJcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgdXJsID0gcGljO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1MZW5ndGgnKTtcclxuICAgICAgICAgICAgfSlcclxuICAgIFxyXG4gICAgICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5qcGcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbn1cclxuIl19
//------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, 'ddac3ZC+9pHQr0Fs9IIhw4a', 'GameTool');
// Script/tool/GameTool.ts
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GameTool = void 0;
var GameData_1 = require("../GameData");
//最大工具类
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);
},
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("不是全面屏");
// canvas.fitWidth = false;
// canvas.fitHeight = true;
}
else {
// console.log("是全面屏");
// canvas.fitWidth = true;
// canvas.fitHeight = false;
}
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;
},
setFrindBlock: function (userid) {
},
//将时间转换为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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxHYW1lVG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBbUM7QUFFbkMsT0FBTztBQUNQLElBQUksUUFBUSxHQUFHO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFDYixRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxDQUFDO0lBQ2IsYUFBYSxFQUFFLFVBQVUsR0FBRyxFQUFFLEdBQUc7UUFDN0IsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDZixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNmLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEcsSUFBSSxHQUFHLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekQsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELDBCQUEwQixFQUFFO1FBQ3hCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNE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LENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxLQUFLLENBQUMsRUFBQztZQUM3QyxJQUFHLE1BQU0sR0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsR0FBRyxHQUFHO2dCQUM3QixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDLEdBQUMsRUFBRSxHQUFDLEdBQUcsQ0FBQzs7Z0JBRXhELE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEdBQUcsQ0FBQztTQUN6RDthQUNJLElBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFDLEtBQUssQ0FBQyxFQUFDO1lBQ2xELElBQUcsTUFBTSxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUc7Z0JBQzdCLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsR0FBQyxFQUFFLEdBQUMsR0FBRyxDQUFDOztnQkFFeEQsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFDO1NBQ3pEO2FBQ0ksSUFBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLEdBQUcs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LENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLFFBQVEsR0FBRyxFQUFFLEVBQUU7WUFDZixRQUFRLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztTQUM3QjtRQUNELElBQUksWUFBWSxHQUFHLEVBQUUsRUFBRTtZQUNuQixZQUFZLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQztTQUNyQztRQUNELFlBQVksR0FBRyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBRWxDLElBQUksU0FBUyxHQUFHLEVBQUUsRUFBRTtZQUNoQixTQUFTLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztTQUMvQjtRQUNELFNBQVMsR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVCLE9BQU8sU0FBUyxHQUFHLFlBQVksR0FBRyxRQUFRLENBQUM7SUFFL0MsQ0FBQztJQUNELFVBQVUsRUFBQztJQUVYLENBQUM7SUFDRCxlQUFlLEVBQUM7SUFFaEIsQ0FBQztDQUVKLENBQUM7QUFDTyw0QkFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfSBmcm9tIFwiLi9TdG9yYWdlXCI7XHJcbi8v5pyA5aSn5bel5YW357G7XHJcbnZhciBHYW1lVG9vbCA9IHtcclxuICAgIF9zdGFydFRpbWU6IDAsXHJcbiAgICBfZW5kVGltZTogMCxcclxuICAgIF90b3RhbFRpbWU6IDAsXHJcbiAgICBnZXRTZWVkUmFuZG9tOiBmdW5jdGlvbiAobWluLCBtYXgpIHsvL+WMheWQq21pbiDkuI3ljIXlkKttYXhcclxuICAgICAgICBtYXggPSBtYXggfHwgMTtcclxuICAgICAgICBtaW4gPSBtaW4gfHwgMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXJyU2VlZCA9IChHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXJyU2VlZCAqIDkzMDEgKyA0OTI5NykgJSAyMzMyODA7XHJcbiAgICAgICAgbGV0IHJuZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1cnJTZWVkIC8gMjMzMjgwLjA7XHJcbiAgICAgICAgbGV0IHRtcCA9IG1pbiArIHJuZCAqIChtYXggLSBtaW4pO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRtcCk7XHJcbiAgICB9LFxyXG4gICAgXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBzaXplID0gY2Mud2luU2l6ZTtcclxuICAgICAgICBsZXQgd2lkdGggPSBzaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBpZiAoKGhlaWdodCAvIHdpZHRoKSA+ICgxNi4yIC8gOSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0OiBmdW5jdGlvbiAoY2FudmFzKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSBHYW1lVG9vbC5nZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZygpO1xyXG4gICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgXHQvLyBjb25zb2xlLmxvZyhcIuS4jeaYr+WFqOmdouWxj1wiKTtcclxuICAgICAgICAgICAgLy8gY2FudmFzLmZpdFdpZHRoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIGNhbnZhcy5maXRIZWlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgXHQvLyBjb25zb2xlLmxvZyhcIuaYr+WFqOmdouWxj1wiKTtcclxuICAgICAgICAgICAgLy8gY2FudmFzLmZpdFdpZHRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gY2FudmFzLmZpdEhlaWdodCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0VGlwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNCkgKyAxO1xyXG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcclxuICAgICAgICAgICAgY2FzZSAxOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLmoLnmja7lsI/nkIPnmoTkvY3nva7vvIzlkIjnkIbmmYPliqjmiYvmnLrvvIznoa7kv53lsI/nkIPkuI3mjonlh7rmnKjmnb/jgIJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgMjoge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5qC55o2u5bCP55CD5L2N572u5o6n5Yi25pmD5Yqo5bmF5bqm77yM6L+H5aSn5oiW6L+H5bCP6YO95LiN5piv5Liq5aW96YCJ5oup44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIDM6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuS4jeimgeiiq+WkqeS4iuaOieiQveeahOmanOeijeWQk+WIsO+8jOacieaXtuWAmeWug+WPjeiAjOS8muW4ruS9oOS/neaMgeW5s+ihoeOAglwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSA0OiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLlsJ3or5XnnYDpobblvIDmjonokL3nmoTpmpznoo3vvIzmmK/kuKrlvojphbfnmoTnjqnms5XjgIJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBiZWdpblRpbWluZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBlbmRUaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLl9lbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgLy8gdGhpcy5fdG90YWxUaW1lID0gZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTtcclxuICAgIH0sXHJcbiAgICAvL+WmguaenOaYr+WIpOaWreaXtuW4uOeahOa4uOaIjyDosIPnlKjmraTmlrnms5VcclxuICAgIHVwZGF0ZVNjb3JlVGltZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgbGV0IHRlbXBUaW1lID0gZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTtcclxuICAgICAgICBpZiAodGVtcFRpbWUgPCAwIHx8IHRlbXBUaW1lID4gNTAwKSB7XHJcbiAgICAgICAgICAgIHRlbXBUaW1lID0gTWF0aC5yb3VuZChjYy5kaXJlY3Rvci5nZXRBbmltYXRpb25JbnRlcnZhbCgpICogMTAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2VuZFRpbWUgKz0gdGVtcFRpbWUgLyAxMDAwO1xyXG4gICAgICAgIHRoaXMuX3RvdGFsVGltZSA9IHRoaXMuX2VuZFRpbWUudG9GaXhlZCgyKTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXJyU2NvcmUgPSB0aGlzLl90b3RhbFRpbWU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gZW5kVGltZTtcclxuICAgIH0sXHJcbiAgICAvL+WAkuiuoeaXtuiwg+eUqOatpOaWueazlVxyXG4gICAgY291bnREb3duOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMuX3RvdGFsVGltZSA9IE1hdGguZmxvb3IoKHRoaXMuX2VuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWUpIC8gMTAwMCk7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ucmVtYWluaW5nVGltZSA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnRvdGFsVGltZSAtIHRoaXMuX3RvdGFsVGltZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0R2FtZUluZm86IGZ1bmN0aW9uKG5vZGUpe1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH0sXHJcbiAgICAvL+agueaNruacjeWKoeWZqOaVsOaNrumHjee9ruaJgOmcgOimgeaJgOacieaVsOaNrlxyXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLmnKzlnLDmlbDmja7kuKLlpLEs6YeN5paw5ZCv5Yqo5ri45oiPXCIpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZSgnTG9hZFNjZW5lJyk7XHJcbiAgICB9LFxyXG5cclxuICAgIHNldEdhbWVJbmZvOiBmdW5jdGlvbihwZCl7XHJcbiAgIFxyXG4gICAgfSxcclxuICAgIC8v6L6T5YWl56eSLOi/lOWbnumcgOimgeWxleekuuaXtumXtOagvOW8j1xyXG4gICAgZ2V0VGltZU1hcmdpbjooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gc2Vjb25kO1xyXG4gICAgICAgIGxldCBob3VyID0gTWF0aC5mbG9vcih0b3RhbCAvICg2MCAqIDYwKSk7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBNYXRoLmZsb29yKGFmdGVySG91ciAvIDYwKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIHJldHVybiAn5Ymp5L2ZOicgKyBob3VyICsgJzonICsgbWluICsgJzonICsgYWZ0ZXJNaW5cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0VGltZU1hcmdpbjI6KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgbWluID0gbnVsbDtcclxuICAgICAgICBsZXQgYWZ0ZXJNaW4gPSBudWxsO1xyXG4gICAgICAgIGxldCBob3VyID0gTWF0aC5mbG9vcih0b3RhbCAvICg2MCAqIDYwKSk7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIG1pbiA9IE1hdGguZmxvb3IoYWZ0ZXJIb3VyIC8gNjApOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgaWYobWluIDwgMTApIG1pbiA9IFwiMFwiK21pbjtcclxuICAgICAgICBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIGFmdGVyTWluID0gXCIwXCIgKyBhZnRlck1pbjtcclxuICAgICAgICByZXR1cm4gJ+WJqeS9mTonICArIG1pbiArICc6JyArIGFmdGVyTWluXHJcbiAgICB9LFxyXG5cclxuICAgIHNldEZyaW5kQmxvY2s6IGZ1bmN0aW9uKHVzZXJpZCl7XHJcblxyXG4gICAgfSxcclxuICAgIC8v5bCG5pe26Ze06L2s5o2i5Li6NTk6MjNcclxuICAgIGdldFRpbWU6IGZ1bmN0aW9uKHRpbWUpe1xyXG4gICAgICAgIHZhciBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgdmFyIG51bWJlcl8xID0gbnVsbDtcclxuICAgICAgICB2YXIgbnVtYmVyXzIgPSBudWxsO1xyXG4gICAgICAgIG51bWJlcl8xID0gTWF0aC5mbG9vcih0aW1lLzYwKVxyXG4gICAgICAgIG51bWJlcl8yID0gdGltZS1udW1iZXJfMSo2MDtcclxuICAgICAgICBpZihudW1iZXJfMSA8IDEwKXtcclxuICAgICAgICAgICAgbnVtYmVyXzEgPSBcIjBcIitudW1iZXJfMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYobnVtYmVyXzIgPCAxMCl7XHJcbiAgICAgICAgICAgIG51bWJlcl8yID0gXCIwXCIrbnVtYmVyXzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhYmVsID0gbnVtYmVyXzEgKyBcIjpcIiArIG51bWJlcl8yO1xyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICAvL251bWJlciDkuLrkvKDov5vmnaXnmoTmlbDlgLwsdHlwZeS4uuacgOWkmuaYvuekuuWHoOS9jeaVsFxyXG4gICAgZ2V0TnVtYmVyOiBmdW5jdGlvbihudW1iZXIsdHlwZSl7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codHlwZSxcIumcgOimgei9rOaNoueahOaVsOWtl+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/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, '971c4vub4BJpqrSCLPJ8g1V', 'AudioManager');
// Script/AudioManager.js
"use strict";
cc.Class({
"extends": cc.Component,
properties: {
//背景音乐
audioGameBgm0: {
"default": null,
type: cc.AudioClip
},
// 按钮点击
audioButtonClick: {
"default": null,
type: cc.AudioClip
},
// 报警音效
audioWarning: {
"default": null,
type: cc.AudioClip
},
//游戏开始音效
audioWin: {
"default": null,
type: cc.AudioClip
},
reward: false,
finish: false,
rewardCount: 0
},
ctor: function ctor() {
this.mAudioMap = {};
/**
* 默认音量大小
* @type {number}
*/
this.bgMusicVolume = 0.1;
this.effectMusicVolume = 1;
this.mMusicSwitch = 1;
this.mEffectSwitch = 1;
},
play: function play(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;
}
var context = cc.audioEngine.play(audioSource, loop, volume);
if (callback) {
cc.audioEngine.setFinishCallback(context, function () {
callback.call(this);
}.bind(this));
}
this.mAudioMap[audioSource] = context;
return audioSource;
} else {
var context = wx.createInnerAudioContext();
context.autoplay = true;
context.loop = loop;
context.obeyMuteSwitch = true;
context.volume = volume;
if (callback) {
context.onEnded(function () {
callback.call(this);
}.bind(this));
} else {
context.offEnded();
} // var audioPath = cc.url.raw("resources/BallMaster/sounds" + audioSource.name + ".mp3");
context.src = audioSource.nativeUrl;
context.play();
this.mAudioMap[audioSource] = context;
return audioSource;
}
},
save: function save() {// 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);
},
onLoad: function onLoad() {
var _this = this;
// cc.wwx.Storage.getItem(cc.wwx.Storage.Key_Setting_Music_Volume, function(volume) {
// this.mMusicSwitch = parseInt(volume);
// }.bind(this), 1);
// cc.wwx.Storage.getItem(cc.wwx.Storage.Key_Setting_Effect_Volume, function(volume) {
// this.mEffectSwitch = parseInt(volume);
// }.bind(this), 1);
this.reward = false;
this.finish = false;
this.rewardCount = 0;
window.addEventListener('rewardCanUse', function () {
// 此时激励可用 游戏内部逻辑
_this.reward = true;
});
'undefined' != typeof window['reward'] ? window.dispatchEvent(window['reward']) : "";
this.preload();
},
preload: function preload() {
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;
// }
// });
// }
});
},
getAudioMusicSwitch: function getAudioMusicSwitch() {
return this.mMusicSwitch;
},
getAudioEffectSwitch: function getAudioEffectSwitch() {
return this.mEffectSwitch;
},
trunAudioSound: function trunAudioSound(on) {
this.switchMusic(on);
this.switchEffect(on);
},
switchMusic: function switchMusic(on) {
if (this.mMusicSwitch != (on ? 1 : 0)) {
this.mMusicSwitch = 1 - this.mMusicSwitch; // this.save();
}
if (on) {
this.playMusicGame();
} else {
this.stopMusic();
}
},
switchEffect: function switchEffect(on) {
if (this.mEffectSwitch != (on ? 1 : 0)) {
this.mEffectSwitch = 1 - this.mEffectSwitch; // this.save();
}
},
onHide: function onHide() {
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();
// }
// }
// }
},
onShow: function onShow() {
cc.audioEngine.resumeAll(); // if (CC_JSB) {
// } else {
// if (!this.mMusicSwitch) return;
// var context = this.mAudioMap[this.mMusicKey];
// if (context) {
// context.play();
// }
// }
},
playMusic: function playMusic(key, callback, loop) {
loop = typeof loop == 'undefined' || loop ? true : false;
this.stopMusic();
this.mMusicKey = this.play(key, loop, callback, true);
},
/**
* 游戏背景音乐
*/
playMusicGame: function playMusicGame() {
this.playMusic(this.audioGameBgm0);
},
/**
* 停止背景音乐播放
*/
stopMusic: function stopMusic() {
// 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);
}
},
// 炸弹、火箭爆炸音效
playBomb: function playBomb() {
return this.play(this.audioBomb, false);
},
//激光音效
playJiGuang: function playJiGuang() {
return this.play(this.audioJiGuang, false);
},
//技能音效
playItem1: function playItem1() {
return this.play(this.audioItem1, false);
},
/*
* 游戏开始音效
*
*/
playGameStart: function playGameStart() {
return this.play(this.audioGameStart, false);
},
/*
* 失败的游戏结束
*/
playGameOver: function playGameOver() {
return this.play(this.audioGameOver, false);
},
/*
* 成功的游戏结束
*/
playGameResultFailed: function playGameResultFailed() {
return this.play(this.audioGameResultFail, false);
},
/*
* 成功的游戏结束
*/
playGameResultSuccess: function playGameResultSuccess() {
return this.play(this.audioGameResultSuccess, false);
},
/**
* 报警的音效
*/
playWarning: function playWarning() {
return this.play(this.audioWarning, false);
},
playWin: function playWin() {
return this.play(this.audioWin, false);
},
/*
* 方块碰撞的声音
*/
playBrick: function playBrick() {
return this.play(this.brickSound, false);
},
//方块破碎的声音
brickBoom: function brickBoom() {
return this.play(this.audioObj, false);
},
/**
* 按钮
*/
playAudioButton: function playAudioButton() {
return this.play(this.audioButtonClick, false);
},
playRandomMatch: function playRandomMatch() {
this.playMusic(this.randomMatchSound);
},
playMatchFoundSound: function playMatchFoundSound() {
this.stopMusic();
return this.play(this.matchFoundSound, false);
}
});
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxBdWRpb01hbmFnZXIuanMiXSwibmFtZXMiOlsiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJhdWRpb0dhbWVCZ20wIiwidHlwZSIsIkF1ZGlvQ2xpcCIsImF1ZGlvQnV0dG9uQ2xpY2siLCJhdWRpb1dhcm5pbmciLCJhdWRpb1dpbiIsInJld2FyZCIsImZpbmlzaCIsInJld2FyZENvdW50IiwiY3RvciIsIm1BdWRpb01hcCIsImJnTXVzaWNWb2x1bWUiLCJlZmZlY3RNdXNpY1ZvbHVtZSIsIm1NdXNpY1N3aXRjaCIsIm1FZmZlY3RTd2l0Y2giLCJwbGF5IiwiYXVkaW9Tb3VyY2UiLCJsb29wIiwiY2FsbGJhY2siLCJpc0JnTXVzaWMiLCJ2b2x1bWUiLCJzeXMiLCJpc0Jyb3dzZXIiLCJicmlja1NvdW5kIiwiY29udGV4dCIsImF1ZGlvRW5naW5lIiwic2V0RmluaXNoQ2FsbGJhY2siLCJjYWxsIiwiYmluZCIsInd4IiwiY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQiLCJhdXRvcGxheSIsIm9iZXlNdXRlU3dpdGNoIiwib25FbmRlZCIsIm9mZkVuZGVkIiwic3JjIiwibmF0aXZlVXJsIiwic2F2ZSIsIm9uTG9hZCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJkaXNwYXRjaEV2ZW50IiwicHJlbG9hZCIsInBsYXRmb3JtIiwiV0VDSEFUX0dBTUUiLCJtdXNpY3MiLCJmb3JFYWNoIiwicGF0aCIsImdldEF1ZGlvTXVzaWNTd2l0Y2giLCJnZXRBdWRpb0VmZmVjdFN3aXRjaCIsInRydW5BdWRpb1NvdW5kIiwib24iLCJzd2l0Y2hNdXNpYyIsInN3aXRjaEVmZmVjdCIsInBsYXlNdXNpY0dhbWUiLCJzdG9wTXVzaWMiLCJvbkhpZGUiLCJwYXVzZUFsbCIsIm9uU2hvdyIsInJlc3VtZUFsbCIsInBsYXlNdXNpYyIsImtleSIsIm1NdXNpY0tleSIsInN0b3AiLCJwbGF5Qm9tYiIsImF1ZGlvQm9tYiIsInBsYXlKaUd1YW5nIiwiYXVkaW9KaUd1YW5nIiwicGxheUl0ZW0xIiwiYXVkaW9JdGVtMSIsInBsYXlHYW1lU3RhcnQiLCJhdWRpb0dhbWVTdGFydCIsInBsYXlHYW1lT3ZlciIsImF1ZGlvR2FtZU92ZXIiLCJwbGF5R2FtZVJlc3VsdEZhaWxlZCIsImF1ZGlvR2FtZVJlc3VsdEZhaWwiLCJwbGF5R2FtZVJlc3VsdFN1Y2Nlc3MiLCJhdWRpb0dhbWVSZXN1bHRTdWNjZXNzIiwicGxheVdhcm5pbmciLCJwbGF5V2luIiwicGxheUJyaWNrIiwiYnJpY2tCb29tIiwiYXVkaW9PYmoiLCJwbGF5QXVkaW9CdXR0b24iLCJwbGF5UmFuZG9tTWF0Y2giLCJyYW5kb21NYXRjaFNvdW5kIiwicGxheU1hdGNoRm91bmRTb3VuZCIsIm1hdGNoRm91bmRTb3VuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQUEsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDTCxhQUFTRCxFQUFFLENBQUNFLFNBRFA7QUFFTEMsRUFBQUEsVUFBVSxFQUFDO0FBQ1A7QUFDQUMsSUFBQUEsYUFBYSxFQUFDO0FBQ1YsaUJBQVEsSUFERTtBQUVWQyxNQUFBQSxJQUFJLEVBQUNMLEVBQUUsQ0FBQ007QUFGRSxLQUZQO0FBTVA7QUFDQUMsSUFBQUEsZ0JBQWdCLEVBQUM7QUFDYixpQkFBUSxJQURLO0FBRWJGLE1BQUFBLElBQUksRUFBQ0wsRUFBRSxDQUFDTTtBQUZLLEtBUFY7QUFXUDtBQUNBRSxJQUFBQSxZQUFZLEVBQUM7QUFDVCxpQkFBUSxJQURDO0FBRVRILE1BQUFBLElBQUksRUFBQ0wsRUFBRSxDQUFDTTtBQUZDLEtBWk47QUFpQlA7QUFDQUcsSUFBQUEsUUFBUSxFQUFDO0FBQ0wsaUJBQVEsSUFESDtBQUVMSixNQUFBQSxJQUFJLEVBQUNMLEVBQUUsQ0FBQ007QUFGSCxLQWxCRjtBQXVCUEksSUFBQUEsTUFBTSxFQUFFLEtBdkJEO0FBd0JQQyxJQUFBQSxNQUFNLEVBQUUsS0F4QkQ7QUF5QlBDLElBQUFBLFdBQVcsRUFB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LG1DQTBRTDtBQUNJLFdBQU8sS0FBSzdELElBQUwsQ0FBVSxLQUFLOEQsc0JBQWYsRUFBc0MsS0FBdEMsQ0FBUDtBQUNILEdBNVFJOztBQTZRTDtBQUNKO0FBQ0E7QUFDSUMsRUFBQUEsV0FoUksseUJBaVJMO0FBQ0ksV0FBTyxLQUFLL0QsSUFBTCxDQUFVLEtBQUtYLFlBQWYsRUFBNEIsS0FBNUIsQ0FBUDtBQUVILEdBcFJJO0FBc1JMMkUsRUFBQUEsT0F0UksscUJBdVJMO0FBQ0ksV0FBTyxLQUFLaEUsSUFBTCxDQUFVLEtBQUtWLFFBQWYsRUFBd0IsS0FBeEIsQ0FBUDtBQUNILEdBelJJOztBQTJSTDtBQUNKO0FBQ0E7QUFDSTJFLEVBQUFBLFNBOVJLLHVCQStSTDtBQUNJLFdBQU8sS0FBS2pFLElBQUwsQ0FBVSxLQUFLUSxVQUFmLEVBQTBCLEtBQTFCLENBQVA7QUFDSCxHQWpTSTtBQWtTTDtBQUNBMEQsRUFBQUEsU0FuU0ssdUJBbVNNO0FBQ1AsV0FBTyxLQUFLbEUsSUFBTCxDQUFVLEtBQUttRSxRQUFmLEVBQXdCLEtBQXhCLENBQVA7QUFDSCxHQXJTSTs7QUFzU0w7QUFDSjtBQUNBO0FBQ0lDLEVBQUFBLGVBelNLLDZCQXlTYztBQUNmLFdBQU8sS0FBS3BFLElBQUwsQ0FBVSxLQUFLWixnQkFBZixFQUFpQyxLQUFqQyxDQUFQO0FBQ0gsR0EzU0k7QUE2U0xpRixFQUFBQSxlQTdTSyw2QkE4U0w7QUFDSSxTQUFLeEIsU0FBTCxDQUFlLEtBQUt5QixnQkFBcEI7QUFDSCxHQWhUSTtBQWlUTEMsRUFBQUEsbUJBalRLLGlDQWtUTDtBQUNJLFNBQUsvQixTQUFMO0FBQ0EsV0FBTyxLQUFLeEMsSUFBTCxDQUFVLEtBQUt3RSxlQUFmLEVBQWdDLEtBQWhDLENBQVA7QUFDSDtBQXJUSSxDQUFUIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxuICAgIHByb3BlcnRpZXM6e1xuICAgICAgICAvL+iDjOaZr+mfs+S5kFxuICAgICAgICBhdWRpb0dhbWVCZ20wOntcbiAgICAgICAgICAgIGRlZmF1bHQ6bnVsbCxcbiAgICAgICAgICAgIHR5cGU6Y2MuQXVkaW9DbGlwXG4gICAgICAgIH0sXG4gICAgICAgIC8vIOaMiemSrueCueWHu1xuICAgICAgICBhdWRpb0J1dHRvbkNsaWNrOntcbiAgICAgICAgICAgIGRlZmF1bHQ6bnVsbCxcbiAgICAgICAgICAgIHR5cGU6Y2MuQXVkaW9DbGlwXG4gICAgICAgIH0sXG4gICAgICAgIC8vIOaKpeitpumfs+aViFxuICAgICAgICBhdWRpb1dhcm5pbmc6e1xuICAgICAgICAgICAgZGVmYXVsdDpudWxsLFxuICAgICAgICAgICAgdHlwZTpjYy5BdWRpb0NsaXBcbiAgICAgICAgfSxcblxuICAgICAgICAvL+a4uOaIj+W8gOWni+mfs+aViFxuICAgICAgICBhdWRpb1dpbjp7XG4gICAgICAgICAgICBkZWZhdWx0Om51bGwsXG4gICAgICAgICAgICB0eXBlOmNjLkF1ZGlvQ2xpcFxuICAgICAgICB9LFxuXG4gICAgICAgIHJld2FyZDogZmFsc2UsXG4gICAgICAgIGZpbmlzaDogZmFsc2UsXG4gICAgICAgIHJld2FyZENvdW50OiAwXG5cbiAgICB9LFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tQXVkaW9NYXAgPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog6buY6K6k6Z+z6YeP5aSn5bCPXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJnTXVzaWNWb2x1bWUgPSAwLjE7XG4gICAgICAgIHRoaXMuZWZmZWN0TXVzaWNWb2x1bWUgPSAxO1xuXG4gICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMTtcbiAgICAgICAgdGhpcy5tRWZmZWN0U3dpdGNoID0gMTtcbiAgICB9LFxuICAgIHBsYXkgOiBmdW5jdGlvbihhdWRpb1NvdXJjZSwgbG9vcCwgY2FsbGJhY2ssIGlzQmdNdXNpYykge1xuICAgICAgICBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xuICAgICAgICBpZiAoIWlzQmdNdXNpYyAmJiAhdGhpcy5tRWZmZWN0U3dpdGNoKSByZXR1cm47XG5cbiAgICAgICAgdmFyIHZvbHVtZSA9IGlzQmdNdXNpYyA/IHRoaXMuYmdNdXNpY1ZvbHVtZSA6IHRoaXMuZWZmZWN0TXVzaWNWb2x1bWU7XG5cbiAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlID09IHRoaXMuYnJpY2tTb3VuZCl7XG4gICAgICAgICAgICAgICAgdm9sdW1lID0gMC4xO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2MuYXVkaW9FbmdpbmUucGxheShhdWRpb1NvdXJjZSwgbG9vcCwgdm9sdW1lKTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayl7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soY29udGV4dCwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSB3eC5jcmVhdGVJbm5lckF1ZGlvQ29udGV4dCgpO1xuICAgICAgICAgICAgY29udGV4dC5hdXRvcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb250ZXh0Lmxvb3AgPSBsb29wO1xuICAgICAgICAgICAgY29udGV4dC5vYmV5TXV0ZVN3aXRjaCA9IHRydWU7XG4gICAgICAgICAgICBjb250ZXh0LnZvbHVtZSA9IHZvbHVtZTtcblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkVuZGVkKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRleHQub2ZmRW5kZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICAvLyB2YXIgYXVkaW9QYXRoID0gY2MudXJsLnJhdyhcInJlc291cmNlcy9CYWxsTWFzdGVyL3NvdW5kc1wiICsgYXVkaW9Tb3VyY2UubmFtZSArIFwiLm1wM1wiKTtcbiAgICAgICAgICAgIGNvbnRleHQuc3JjID0gYXVkaW9Tb3VyY2UubmF0aXZlVXJsO1xuICAgICAgICAgICAgY29udGV4dC5wbGF5KClcbiAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2F1ZGlvU291cmNlXSA9IGNvbnRleHQ7XG4gICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIHNhdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19NdXNpY19Wb2x1bWUsIHRoaXMubU11c2ljU3dpdGNoKTtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCB0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH0sXG4gICAgb25Mb2FkKCkge1xuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5nZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX011c2ljX1ZvbHVtZSwgZnVuY3Rpb24odm9sdW1lKSB7XG4gICAgICAgIC8vICAgICB0aGlzLm1NdXNpY1N3aXRjaCA9IHBhcnNlSW50KHZvbHVtZSk7XG4gICAgICAgIC8vIH0uYmluZCh0aGlzKSwgMSk7XG5cbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2UuZ2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCBmdW5jdGlvbih2b2x1bWUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IHBhcnNlSW50KHZvbHVtZSk7XG4gICAgICAgIC8vIH0uYmluZCh0aGlzKSwgMSk7XG5cbiAgICAgICAgdGhpcy5yZXdhcmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5maW5pc2ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXdhcmRDb3VudCA9IDA7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXdhcmRDYW5Vc2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAvLyDmraTml7bmv4DlirHlj6/nlKgg5ri45oiP5YaF6YOo6YC76L6RXG4gICAgICAgICAgICB0aGlzLnJld2FyZCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICd1bmRlZmluZWQnICE9IHR5cGVvZiB3aW5kb3dbJ3Jld2FyZCddID8gXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KHdpbmRvd1sncmV3YXJkJ10pOlwiXCJcblxuICAgICAgICB0aGlzLnByZWxvYWQoKTtcbiAgICB9LFxuICAgIHByZWxvYWQgOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCEoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHZhciBtdXNpY3MgPSBbXG4gICAgICAgICAgICB0aGlzLmF1ZGlvR2FtZUJnbTAsXG4gICAgICAgIF07XG4gICAgICAgIG11c2ljcy5mb3JFYWNoKGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgICAgIC8vIHZhciBtdXNpY1BhdGggPSB3eERvd25sb2FkZXIuUkVNT1RFX1NFUlZFUl9ST09UICsgcGF0aDtcbiAgICAgICAgICAgIC8vIGlmIChtdXNpY1BhdGggIT0gd3hEb3dubG9hZGVyLlJFTU9URV9TRVJWRVJfUk9PVCAmJiBtdXNpY1BhdGguZW5kc1dpdGgoJy5tcDMnKSkge1xuICAgICAgICAgICAgLy8gICAgIGNjLmxvYWRlci5sb2FkKG11c2ljUGF0aCwgZnVuY3Rpb24oZXJyLCByZW1vdGVVcmwpIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgLy8gICAgIH0pO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICB9KVxuICAgIH0sXG5cbiAgICBnZXRBdWRpb011c2ljU3dpdGNoKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLm1NdXNpY1N3aXRjaDtcblxuICAgIH0sXG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubUVmZmVjdFN3aXRjaDtcbiAgICB9LFxuICAgIHRydW5BdWRpb1NvdW5kKG9uKVxuICAgIHtcbiAgICAgICAgdGhpcy5zd2l0Y2hNdXNpYyhvbik7XG4gICAgICAgIHRoaXMuc3dpdGNoRWZmZWN0KG9uKVxuICAgIH0sXG4gICAgc3dpdGNoTXVzaWMgOiBmdW5jdGlvbihvbikge1xuICAgICAgICBpZiAodGhpcy5tTXVzaWNTd2l0Y2ggIT0gKG9uPzE6MCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgaWYob24pXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMucGxheU11c2ljR2FtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc3dpdGNoRWZmZWN0IDogZnVuY3Rpb24ob24pIHtcbiAgICAgICAgaWYgKHRoaXMubUVmZmVjdFN3aXRjaCAhPSAob24/MTowKSl7XG4gICAgICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxLXRoaXMubUVmZmVjdFN3aXRjaDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2ZSgpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIG9uSGlkZSAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnBhdXNlQWxsKCk7XG5cbiAgICAgICAgLy8gaWYgKENDX0pTQikge1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgZm9yICh2YXIga2V5IGluIHRoaXMubUF1ZGlvTWFwKSB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5tTXVzaWNLZXkpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5tQXVkaW9NYXBba2V5XS5wYXVzZSgpO1xuICAgICAgICAvLyAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2tleV0uc3RvcCgpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH0sXG5cbiAgICBvblNob3cgKCkge1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVBbGwoKTtcblxuICAgICAgICAvLyBpZiAoQ0NfSlNCKSB7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICBpZiAoIXRoaXMubU11c2ljU3dpdGNoKSByZXR1cm47XG4gICAgICAgIC8vICAgICB2YXIgY29udGV4dCA9IHRoaXMubUF1ZGlvTWFwW3RoaXMubU11c2ljS2V5XTtcbiAgICAgICAgLy8gICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgIC8vICAgICAgICAgY29udGV4dC5wbGF5KCk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICB9LFxuICAgIHBsYXlNdXNpYyA6IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2ssIGxvb3ApIHtcblxuICAgICAgICBsb29wID0gdHlwZW9mIGxvb3AgPT0gJ3VuZGVmaW5lZCcgIHx8IGxvb3AgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgdGhpcy5tTXVzaWNLZXkgPSB0aGlzLnBsYXkoa2V5LCBsb29wLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmuLjmiI/og4zmma/pn7PkuZBcbiAgICAgKi9cbiAgICBwbGF5TXVzaWNHYW1lICgpIHtcbiAgICAgICAgdGhpcy5wbGF5TXVzaWModGhpcy5hdWRpb0dhbWVCZ20wKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWBnOatouiDjOaZr+mfs+S5kOaSreaUvlxuICAgICAqL1xuICAgIHN0b3BNdXNpYyAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdzdG9wTXVzaWMgYXVkaW8gZWZmZWN0IHd4OiAnICsgdGhpcy5tTXVzaWNLZXkpO1xuXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YoY29udGV4dCkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcChjb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIC8vIOeCuOW8ueOAgeeBq+eureeIhueCuOmfs+aViFxuICAgIHBsYXlCb21iICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmF1ZGlvQm9tYiwgZmFsc2UpO1xuICAgIH0sXG4gICAgLy/mv4DlhYnpn7PmlYhcbiAgICBwbGF5SmlHdWFuZygpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9KaUd1YW5nLCBmYWxzZSk7XG4gICAgfSxcbiAgICAvL+aKgOiDvemfs+aViFxuICAgIHBsYXlJdGVtMSgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9JdGVtMSwgZmFsc2UpO1xuICAgIH0sXG4gICAgLypcbiAgICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcbiAgICAgKlxuICAgICAqL1xuICAgICBwbGF5R2FtZVN0YXJ0KClcbiAgICAge1xuICAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmF1ZGlvR2FtZVN0YXJ0LCBmYWxzZSk7XG4gICAgIH0sXG4gICAgIC8qXG4gICAgICAqIOWksei0peeahOa4uOaIj+e7k+adn1xuICAgICAgKi9cbiAgICAgcGxheUdhbWVPdmVyKClcbiAgICAge1xuICAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmF1ZGlvR2FtZU92ZXIsZmFsc2UpO1xuICAgICB9LFxuICAgIC8qXG4gICAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICAgKi9cbiAgICBwbGF5R2FtZVJlc3VsdEZhaWxlZCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9HYW1lUmVzdWx0RmFpbCxmYWxzZSk7XG4gICAgfSxcbiAgICAvKlxuICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0U3VjY2VzcygpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9HYW1lUmVzdWx0U3VjY2VzcyxmYWxzZSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmiqXorabnmoTpn7PmlYhcbiAgICAgKi9cbiAgICBwbGF5V2FybmluZygpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9XYXJuaW5nLGZhbHNlKTtcblxuICAgIH0sXG5cbiAgICBwbGF5V2luKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb1dpbixmYWxzZSk7XG4gICAgfSxcblxuICAgIC8qXG4gICAgICog5pa55Z2X56Kw5pKe55qE5aOw6Z+zXG4gICAgICovXG4gICAgcGxheUJyaWNrKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5icmlja1NvdW5kLGZhbHNlKTtcbiAgICB9LFxuICAgIC8v5pa55Z2X56C056KO55qE5aOw6Z+zXG4gICAgYnJpY2tCb29tKCl7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb09iaixmYWxzZSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq5cbiAgICAgKi9cbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9CdXR0b25DbGljaywgZmFsc2UpO1xuICAgIH0sXG5cbiAgICBwbGF5UmFuZG9tTWF0Y2goKVxuICAgIHtcbiAgICAgICAgdGhpcy5wbGF5TXVzaWModGhpcy5yYW5kb21NYXRjaFNvdW5kKTtcbiAgICB9LFxuICAgIHBsYXlNYXRjaEZvdW5kU291bmQoKVxuICAgIHtcbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLm1hdGNoRm91bmRTb3VuZCwgZmFsc2UpO1xuICAgIH1cbn0pOyJdfQ==
//------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, 'e74a999IDFOabyymZgXQIiy', '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 serverAPI_1 = require("./crypto/serverAPI");
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
serverAPI_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].totalSunCount, 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 = i;
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
}
}
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;
this.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = this.selfData.totalSunCount;
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.totalSunCount == 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, 453, 0) })
.call(function () {
_this.Player.getChildByName("rank").active = true;
_this.Player.getChildByName("rank").getChildByName("number")
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
})
.start();
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;
}
}
}
setTimeout(function () {
if (_this.tween)
_this.tween.stop();
_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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSYW5rTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsd0NBQW1DO0FBQ25DLGdEQUEwQztBQUNwQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUM1QyxLQUFLO0FBRUw7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFxS0M7UUFuS0csWUFBTSxHQUFZLElBQUksQ0FBQztRQUV2QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFdBQUssR0FBYyxJQUFJLENBQUM7O0lBK0o1QixDQUFDO0lBdkpHLDRCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU87SUFDUCwwQkFBSSxHQUFKO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRSxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwyQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxP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LENBQUMsQ0FBVSxRQUFROytDQUNiO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBVSxXQUFXO2lEQUNkO0lBRXpCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBUSxRQUFROzhDQUNaO0lBTlAsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQXFLL0I7SUFBRCxrQkFBQztDQXJLRCxBQXFLQyxDQXJLd0MsRUFBRSxDQUFDLFNBQVMsR0FxS3BEO2tCQXJLb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgTGlzdCBmcm9tIFwiLi9MaXN0Vmlldy9MaXN0XCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi9jcnlwdG8vc2VydmVyQVBJXCI7XHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcbi8v5o6S6KGM5qacXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhbmtNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKSAgICAgICAgICAvL+eUqOaIt+S4iuaWueWktOWDj1xyXG4gICAgUGxheWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKSAgICAgICAgICAvL+eUqOaIt+acgOS4i+aWueS4quS6uuS/oeaBr1xyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZSkgICAgICAgIC8v55So5oi35aS05YOP5o2i5Zu+XHJcbiAgICBwaG9uZTogY2MuU3ByaXRlID0gbnVsbDtcclxuICAgIHByaXZhdGUgcmFua0xpc3Q6IExpc3Q7ICAgICAvL+aOkuihjOamnFxyXG4gICAgdHdlZW46IGNjLlR3ZWVuPGNjLk5vZGU+OyAgIC8v5pyA5LiK5pa555So5oi35aS05YOP5Yqo55S7XHJcbiAgICBsaXN0RGF0YTogYW55OyAgICAgICAgICAgICAgLy/mgLvliJfooajkv6Hmga9cclxuICAgIHNlbGZEYXRhOiBhbnk7ICAgICAgICAgICAgICAvL+iHquW3seS/oeaBr1xyXG4gICAgcmFua051bWJlcjogbnVtYmVyOyAgICAgICAgIC8v55So5oi36Ieq5bex5o6S5ZCNIOacieWPr+iDveS4jeWcqOaOkuihjOamnOWGhTk5K1xyXG4gICAgcmFua1RvdGFsOiBudW1iZXI7ICAgICAgICAgIC8v6I635Y+W5o6S6KGM5qac55So5oi35pWw6YePIOeOsOWcqOS4ujEwMFxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5yYW5rTGlzdCA9IGNjLmZpbmQoXCJTY3JvbGxWaWV3XCIsIHRoaXMubm9kZSkuZ2V0Q29tcG9uZW50KExpc3QpO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxpc3REYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxmRGF0YSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yYW5rTnVtYmVyID0gMTAwO1xyXG4gICAgICAgIHRoaXMucmFua1RvdGFsPSAxMDA7XHJcbiAgICAgICAgdGhpcy5zZWxmTm9kZS5vcGFjaXR5ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLlBsYXllci5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuICAgIC8v6LCD55So6I635Y+W5o6S6KGM5qac5o6l5Y+jXHJcbiAgICBnZXRSYW5rKCl7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcInBhZ2VcIjoxLFxyXG4gICAgICAgICAgICBcInBhZ2VTaXplXCI6MTAwXHJcbiAgICAgICAgfTsgXHJcbiAgICAgICAgLy/lm57osIPov5tnZXRSYW5rRGF0YVxyXG4gICAgICAgIEh0dHBVdGlsLnJhbmtEYXRhKDIsdGhpcy5nZXRSYW5rRGF0YS5iaW5kKHRoaXMpLHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIC8v5a6e6ZmF6K6+572u5o6S6KGM5pWw5o2uXHJcbiAgICBnZXRSYW5rRGF0YShkYXRhKXtcclxuXHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhLmRhdGEuaW5mbztcclxuICAgICAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgICAgIGxldCBzZWxmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8PXRoaXMubGlzdERhdGEubGVuZ3RoLTE7aSsrKXtcclxuICAgICAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSwgdG90YWw6dGhpcy5saXN0RGF0YVtpXS50b3RhbFN1bkNvdW50LCBwaWM6dGhpcy5saXN0RGF0YVtpXS5waWN9KTtcclxuICAgICAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZCA9PSB0aGlzLmxpc3REYXRhW2ldLnVzZXJJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYW5rTnVtYmVyID0gaTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9KGkrMSkgKyBcIlwiOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGkgPT0gKHRoaXMubGlzdERhdGEubGVuZ3RoLTEpICYmIHNlbGYgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjk5K1wiOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJhbmtMaXN0LnNldERhdGEocmFua0RhdGEpO1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZEYXRhLm5pY2tOYW1lLmxlbmd0aCA+IDYpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmRGF0YS5uaWNrTmFtZT0gdGhpcy5zZWxmRGF0YS5uaWNrTmFtZS5zdWJzdHJpbmcoMCw2KSArIFwiLi4uXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuc2VsZkRhdGEubmlja05hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuc2VsZkRhdGEudG90YWxTdW5Db3VudDtcclxuICAgICAgICAgICAgdGhpcy5zZXRQaWModGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9PSBcIjFcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPT0gXCIyXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0d29cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID09IFwiM1wiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidGhyZWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcImZvdXJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuc2VsZkRhdGEudG90YWxTdW5Db3VudCA9PSAwKSB0aGlzLnNlbGZOb2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v6L+U5Zue5oyJ6ZKuXHJcbiAgICBiYWNrQ2xpY2soKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+acgOS4iuaWueeUqOaIt+WKqOeUu1xyXG4gICAgcGxheWVyQWN0aW9uKCl7XHJcbiAgICAgICAgLy8tMjU0IDM3NyAgMjEwIDQ1M1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgdGltZSA9IDE7XHJcbiAgICAgICAgdGhpcy50d2VlbiA9IGNjLnR3ZWVuKHRoaXMuUGxheWVyKVxyXG4gICAgICAgIC50bygyLHtwb3NpdGlvbjpjYy52MygyMTAsNDUzLDApfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm51bWJlclwiKVxyXG4gICAgICAgICAgICAuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSAgcGFyc2VJbnQodGltZSoxMDAgKyBcIlwiKSArIFwiJVwiO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgdGltZSA9ICh0aGlzLmxpc3REYXRhLmxlbmd0aCAtIHRoaXMucmFua051bWJlcikvdGhpcy5saXN0RGF0YS5sZW5ndGg7XHJcbiAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPj0gOTkpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnJhbmtOdW1iZXIgPj0gOTkpe1xyXG4gICAgICAgICAgICAgICAgdGltZSA9IChNYXRoLnJhbmRvbSgpKjQ5KzEpLzEwMFxyXG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoSWQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJtYXRjaE51bWJlclwiKTtcclxuICAgICAgICAgICAgICAgIGlmKG1hdGNoSWQgPT0gbnVsbCB8fCBtYXRjaElkID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZSA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudHdlZW4pdGhpcy50d2Vlbi5zdG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1iZXJcIilcclxuICAgICAgICAgICAgLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gIHBhcnNlSW50KHRpbWUqMTAwICsgXCJcIikgKyBcIiVcIjtcclxuICAgICAgICB9LCB0aW1lKjIwMDApO1xyXG5cclxuICAgIH1cclxuICAgIC8v6K6+572u5aS05YOPXHJcbiAgICBwdWJsaWMgc2V0UGljKHBpYyl7XHJcbiAgICAgICAgdGhpcy5waG9uZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5waG9uZS5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBmZXRjaChwaWMpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgIGlmKGVyck5vID09IFwiNTA5M1wiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHBpYywge2V4dDonLnBuZyd9LChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYuUGxheWVyLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRleHR1cmUpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5waG9uZS5ub2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnBob25lLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcInBob25lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKVxyXG4gICAgICAgICAgICAgICAgLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGF5ZXJBY3Rpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGxheWVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/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, 'f2518+0IHRGOY+ueIhGtEeA', 'Notification');
// Script/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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOb3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTTtBQUNOLElBQUksWUFBWSxHQUFHO0lBQ2YsU0FBUyxFQUFFLEVBQUU7SUFDYixFQUFFLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxFQUFFLFVBQVUsTUFBTSxFQUFFLFNBQVM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsR0FBRyxFQUFFLFVBQVUsTUFBTSxFQUFFLFFBQVE7UUFDM0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELFNBQVMsRUFBRSxVQUFVLE1BQU07UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksRUFBRTtRQUNWLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckI7U0FDSjtJQUNMLENBQUM7Q0FDSixDQUFDO0FBRU8sb0NBQVkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+WFqOWxgOmAmuefpVxudmFyIE5vdGlmaWNhdGlvbiA9IHtcbiAgICBfZXZlbnRNYXA6IFtdLFxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFttYXNnSWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdLnB1c2goeyBjYWxsYmFjazogY2FsbGJhY2ssIHRhcmdldDogdGFyZ2V0IH0pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbiAobWFzZ0lkLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZXZlbnRNYXBbbWFzZ0lkXTtcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIGVsZW1lbnQuY2FsbGJhY2suY2FsbChlbGVtZW50LnRhcmdldCwgcGFyYW1ldGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvZmY6IGZ1bmN0aW9uIChtYXNnSWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XG4gICAgICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9mZk1hc2dJZDogZnVuY3Rpb24gKG1hc2dJZCkge1xuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xuICAgIH0sXG5cbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLl9ldmVudE1hcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW2tdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgeyBOb3RpZmljYXRpb24gfTsiXX0=
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/Sun.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, '4be67sdkexCyqLl0NHd9N1f', 'Sun');
// Script/Sun.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 Notification_1 = require("./Notification");
var NewClass = /** @class */ (function (_super) {
__extends(NewClass, _super);
function NewClass() {
return _super !== null && _super.apply(this, arguments) || this;
}
// onLoad () {}
NewClass.prototype.start = function () {
};
//初始化数据
NewClass.prototype.init = function (_id, color, speed, repeat) {
this.touch = true;
this.move = false;
this.id_Number = _id;
this._color = color;
this._speed = speed;
this._repeat = repeat;
//太阳动画
cc.tween(this.node.getChildByName("shan"))
.repeatForever(cc.tween()
.to(1, { opacity: 0, scale: 0.5, })
.delay(0.2)
.to(1, { opacity: 255, scale: 1.2 })
.delay(0.5))
.start();
};
//用于作弊 测试
NewClass.prototype.showNumber = function (type) {
this.node.getChildByName("number").active = type;
if (type == true)
this.node.getChildByName("number").getComponent(cc.Label).string = this.id_Number + "";
};
//点击事件
NewClass.prototype.clickBtn = function (event, data) {
if (data === "1") {
if (this.move == false && this.touch == true) {
if (this.node.parent.parent.name == "GameNode") {
if (this.node.parent.parent.getComponent("GameManager").begin == true) {
cc.tween(this.node.getChildByName("action"))
.to(0.5, { opacity: 0, scale: 1.8 })
.start();
cc.tween(this.node)
.to(0.3, { scale: 1.3 })
.to(0.3, { scale: 1 })
.start();
this.touch = false;
this.node.zIndex = -1;
Notification_1.Notification.emit("clickSun", this.id_Number);
}
}
else {
this.touch = false;
this.node.zIndex = -1;
Notification_1.Notification.emit("clickSun", this.id_Number);
}
}
}
else {
if (this.touch == true && this.node.parent.parent.getComponent("GuideManager").begin == true) {
this.touch = false;
this.node.zIndex = -1;
Notification_1.Notification.emit("clickSun", this.id_Number);
}
}
};
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,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dCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gJy4vR2FtZU1hbmFnZXInO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL05vdGlmaWNhdGlvbic7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBpZF9OdW1iZXI6bnVtYmVyXHJcbiAgICBfc3BlZWQ6bnVtYmVyXHJcbiAgICBfY29sb3I6bnVtYmVyXHJcbiAgICB0b3VjaDpib29sZWFuXHJcbiAgICBfcmVwZWF0OmJvb2xlYW5cclxuICAgIG1vdmU6Ym9vbGVhblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluaVsOaNrlxyXG4gICAgaW5pdChfaWQsY29sb3Isc3BlZWQscmVwZWF0KXtcclxuICAgICAgICB0aGlzLnRvdWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlkX051bWJlciAgPSBfaWQ7XHJcbiAgICAgICAgdGhpcy5fY29sb3IgPSBjb2xvcjtcclxuICAgICAgICB0aGlzLl9zcGVlZCA9IHNwZWVkO1xyXG4gICAgICAgIHRoaXMuX3JlcGVhdCA9IHJlcGVhdDtcclxuICAgICAgICAvL+WkqumYs+WKqOeUu1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNoYW5cIikpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoXHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKClcclxuICAgICAgICAgICAgLnRvKDEse29wYWNpdHk6MCxzY2FsZTowLjUsfSlcclxuICAgICAgICAgICAgLmRlbGF5KDAuMilcclxuICAgICAgICAgICAgLnRvKDEse29wYWNpdHk6MjU1LHNjYWxlOjEuMn0pXHJcbiAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG4gICAgLy/nlKjkuo7kvZzlvIog5rWL6K+VXHJcbiAgICBzaG93TnVtYmVyKHR5cGUpe1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bWJlclwiKS5hY3RpdmUgPSB0eXBlO1xyXG4gICAgICAgIGlmKHR5cGUgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibnVtYmVyXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5pZF9OdW1iZXIgKyBcIlwiO1xyXG4gICAgfVxyXG4gICAgLy/ngrnlh7vkuovku7ZcclxuICAgIGNsaWNrQnRuKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEgPT09IFwiMVwiKXtcclxuICAgICAgICAgICAgaWYoIHRoaXMubW92ZSA9PSBmYWxzZSAmJiB0aGlzLnRvdWNoID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ub2RlLnBhcmVudC5wYXJlbnQubmFtZSA9PSBcIkdhbWVOb2RlXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhY3Rpb25cIikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MCxzY2FsZToxLjh9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudG8oMC4zLHtzY2FsZToxLjN9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudG8oMC4zLHtzY2FsZToxfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImNsaWNrU3VuXCIsdGhpcy5pZF9OdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImNsaWNrU3VuXCIsdGhpcy5pZF9OdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYoIHRoaXMudG91Y2ggPT0gdHJ1ZSAmJiB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDb21wb25lbnQoXCJHdWlkZU1hbmFnZXJcIikuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuekluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImNsaWNrU3VuXCIsdGhpcy5pZF9OdW1iZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
//------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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXGNyeXB0by1qcy5taW4uanMiXSwibmFtZXMiOlsidCIsInIiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwiQ3J5cHRvSlMiLCJlIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvdG90eXBlIiwiaSIsIm4iLCJsaWIiLCJvIiwiQmFzZSIsImV4dGVuZCIsIm1peEluIiwiaGFzT3duUHJvcGVydHkiLCJpbml0IiwiJHN1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ0b1N0cmluZyIsImNsb25lIiwicyIsIldvcmRBcnJheSIsIndvcmRzIiwic2lnQnl0ZXMiLCJsZW5ndGgiLCJjIiwic3RyaW5naWZ5IiwiY29uY2F0IiwiY2xhbXAiLCJjZWlsIiwiY2FsbCIsInNsaWNlIiwicmFuZG9tIiwiYSIsInB1c2giLCJlbmMiLCJIZXgiLCJqb2luIiwicGFyc2UiLCJwYXJzZUludCIsInN1YnN0ciIsImgiLCJMYXRpbjEiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaGFyQ29kZUF0IiwibCIsIlV0ZjgiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJFcnJvciIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZiIsIkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0iLCJyZXNldCIsIl9kYXRhIiwiX25EYXRhQnl0ZXMiLCJfYXBwZW5kIiwiX3Byb2Nlc3MiLCJibG9ja1NpemUiLCJtYXgiLCJfbWluQnVmZmVyU2l6ZSIsIm1pbiIsIl9kb1Byb2Nlc3NCbG9jayIsInUiLCJzcGxpY2UiLCJIYXNoZXIiLCJjZmciLCJfZG9SZXNldCIsInVwZGF0ZSIsImZpbmFsaXplIiwiX2RvRmluYWxpemUiLCJfY3JlYXRlSGVscGVyIiwiX2NyZWF0ZUhtYWNIZWxwZXIiLCJITUFDIiwiYWxnbyIsIk1hdGgiLCJCYXNlNjQiLCJfbWFwIiwiY2hhckF0IiwiX3JldmVyc2VNYXAiLCJpbmRleE9mIiwiYWJzIiwic2luIiwiTUQ1IiwiX2hhc2giLCJkIiwidiIsInAiLCJfIiwieSIsImciLCJCIiwidyIsImsiLCJTIiwibSIsIngiLCJiIiwiSCIsInoiLCJBIiwiQyIsIkQiLCJmbG9vciIsIkhtYWNNRDUiLCJTSEExIiwiSG1hY1NIQTEiLCJzcXJ0IiwicG93IiwiU0hBMjU2IiwiSG1hY1NIQTI1NiIsIlV0ZjE2IiwiVXRmMTZCRSIsIlV0ZjE2TEUiLCJBcnJheUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsImJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiUklQRU1EMTYwIiwiUiIsIkUiLCJNIiwiRiIsIkhtYWNSSVBFTUQxNjAiLCJfaGFzaGVyIiwiX29LZXkiLCJfaUtleSIsIlBCS0RGMiIsImtleVNpemUiLCJoYXNoZXIiLCJpdGVyYXRpb25zIiwiY29tcHV0ZSIsIkV2cEtERiIsIlNIQTIyNCIsIkhtYWNTSEEyMjQiLCJ4NjQiLCJXb3JkIiwiaGlnaCIsImxvdyIsInRvWDMyIiwiU0hBMyIsIm91dHB1dExlbmd0aCIsIl9zdGF0ZSIsIkhtYWNTSEEzIiwiU0hBNTEyIiwiUCIsIlciLCJPIiwiVSIsIkkiLCJLIiwiWCIsIkwiLCJqIiwiTiIsIlQiLCJaIiwicSIsIkciLCJKIiwiJCIsIlEiLCJWIiwiWSIsInR0IiwicnQiLCJldCIsIml0IiwibnQiLCJvdCIsInN0IiwiYXQiLCJjdCIsImh0IiwibHQiLCJmdCIsInV0IiwiZHQiLCJ2dCIsInB0IiwiX3QiLCJ5dCIsImd0IiwiQnQiLCJ3dCIsImt0IiwiU3QiLCJtdCIsInh0IiwiYnQiLCJIbWFjU0hBNTEyIiwiU0hBMzg0IiwiSG1hY1NIQTM4NCIsIkNpcGhlciIsImNyZWF0ZUVuY3J5cHRvciIsIl9FTkNfWEZPUk1fTU9ERSIsImNyZWF0ZURlY3J5cHRvciIsIl9ERUNfWEZPUk1fTU9ERSIsIl94Zm9ybU1vZGUiLCJfa2V5IiwicHJvY2VzcyIsIml2U2l6ZSIsImVuY3J5cHQiLCJkZWNyeXB0IiwiU3RyZWFtQ2lwaGVyIiwibW9kZSIsIkJsb2NrQ2lwaGVyTW9kZSIsIkVuY3J5cHRvciIsIkRlY3J5cHRvciIsIl9jaXBoZXIiLCJfaXYiLCJDQkMiLCJfcHJldkJsb2NrIiwicHJvY2Vzc0Jsb2NrIiwiZW5jcnlwdEJsb2NrIiwiZGVjcnlwdEJsb2NrIiwicGFkIiwiUGtjczciLCJ1bnBhZCIsIkJsb2NrQ2lwaGVyIiwicGFkZGluZyIsIml2IiwiX21vZGUiLCJfX2NyZWF0b3IiLCJDaXBoZXJQYXJhbXMiLCJmb3JtYXR0ZXIiLCJmb3JtYXQiLCJPcGVuU1NMIiwiY2lwaGVydGV4dCIsInNhbHQiLCJTZXJpYWxpemFibGVDaXBoZXIiLCJrZXkiLCJhbGdvcml0aG0iLCJfcGFyc2UiLCJrZGYiLCJleGVjdXRlIiwiUGFzc3dvcmRCYXNlZENpcGhlciIsIkNGQiIsIkVDQiIsIkFuc2lYOTIzIiwiSXNvMTAxMjYiLCJJc285Nzk3MSIsIlplcm9QYWRkaW5nIiwiT0ZCIiwiX2tleXN0cmVhbSIsIk5vUGFkZGluZyIsIkFFUyIsIl9uUm91bmRzIiwiX2tleVByaW9yUmVzZXQiLCJfa2V5U2NoZWR1bGUiLCJfaW52S2V5U2NoZWR1bGUiLCJfZG9DcnlwdEJsb2NrIiwiX2xCbG9jayIsIl9yQmxvY2siLCJERVMiLCJfc3ViS2V5cyIsIl9pbnZTdWJLZXlzIiwiVHJpcGxlREVTIiwiX2RlczEiLCJfZGVzMiIsIl9kZXMzIiwiX1MiLCJfaSIsIl9qIiwiUkM0IiwiUkM0RHJvcCIsImRyb3AiLCJDVFJHbGFkbWFuIiwiX2NvdW50ZXIiLCJfWCIsIl9DIiwiX2IiLCJSYWJiaXQiLCJDVFIiLCJSYWJiaXRMZWdhY3kiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGNBQVUsT0FBT0MsT0FBakIsR0FBeUJDLE1BQU0sQ0FBQ0QsT0FBUCxHQUFlQSxPQUFPLEdBQUNELENBQUMsRUFBakQsR0FBb0QsY0FBWSxPQUFPRyxNQUFuQixJQUEyQkEsTUFBTSxDQUFDQyxHQUFsQyxHQUFzQ0QsTUFBTSxDQUFDLEVBQUQsRUFBSUgsQ0FBSixDQUE1QyxHQUFtREQsQ0FBQyxDQUFDTSxRQUFGLEdBQVdMLENBQUMsRUFBbkg7QUFBc0gsQ0FBcEksU0FBMEksWUFBVTtBQUFDLE1BQUlELENBQUMsR0FBQ0EsQ0FBQyxJQUFFLFVBQVNBLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsUUFBSU0sQ0FBQyxHQUFDQyxNQUFNLENBQUNDLE1BQVAsSUFBZSxZQUFVO0FBQUMsZUFBU1QsQ0FBVCxHQUFZLENBQUU7O0FBQUEsYUFBTyxVQUFTQyxDQUFULEVBQVc7QUFBQyxZQUFJTSxDQUFKO0FBQU0sZUFBT1AsQ0FBQyxDQUFDVSxTQUFGLEdBQVlULENBQVosRUFBY00sQ0FBQyxHQUFDLElBQUlQLENBQUosRUFBaEIsRUFBc0JBLENBQUMsQ0FBQ1UsU0FBRixHQUFZLElBQWxDLEVBQXVDSCxDQUE5QztBQUFnRCxPQUF6RTtBQUEwRSxLQUFuRyxFQUFyQjtBQUFBLFFBQTJISSxDQUFDLEdBQUMsRUFBN0g7QUFBQSxRQUFnSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUNFLEdBQUYsR0FBTSxFQUF4STtBQUFBLFFBQTJJQyxDQUFDLEdBQUNGLENBQUMsQ0FBQ0csSUFBRixHQUFPLFlBQVU7QUFBQyxhQUFNO0FBQUNDLFFBQUFBLE1BQU0sRUFBQyxnQkFBU2hCLENBQVQsRUFBVztBQUFDLGNBQUlDLENBQUMsR0FBQ00sQ0FBQyxDQUFDLElBQUQsQ0FBUDtBQUFjLGlCQUFPUCxDQUFDLElBQUVDLENBQUMsQ0FBQ2dCLEtBQUYsQ0FBUWpCLENBQVIsQ0FBSCxFQUFjQyxDQUFDLENBQUNpQixjQUFGLENBQWlCLE1BQWpCLEtBQTBCLEtBQUtDLElBQUwsS0FBWWxCLENBQUMsQ0FBQ2tCLElBQXhDLEtBQStDbEIsQ0FBQyxDQUFDa0IsSUFBRixHQUFPLFlBQVU7QUFBQ2xCLFlBQUFBLENBQUMsQ0FBQ21CLE1BQUYsQ0FBU0QsSUFBVCxDQUFjRSxLQUFkLENBQW9CLElBQXBCLEVBQXlCQyxTQUF6QjtBQUFvQyxXQUFyRyxDQUFkLEVBQXFIckIsQ0FBQyxDQUFDa0IsSUFBRixDQUFPVCxTQUFQLEdBQWlCVCxDQUF0SSxFQUF3SUEsQ0FBQyxDQUFDbUIsTUFBRixHQUFTLElBQWpKLEVBQXNKbkIsQ0FBN0o7QUFBK0osU0FBak07QUFBa01RLFFBQUFBLE1BQU0sRUFBQyxrQkFBVTtBQUFDLGNBQUlULENBQUMsR0FBQyxLQUFLZ0IsTUFBTCxFQUFOO0FBQW9CLGlCQUFPaEIsQ0FBQyxDQUFDbUIsSUFBRixDQUFPRSxLQUFQLENBQWFyQixDQUFiLEVBQWVzQixTQUFmLEdBQTBCdEIsQ0FBakM7QUFBbUMsU0FBM1E7QUFBNFFtQixRQUFBQSxJQUFJLEVBQUMsZ0JBQVUsQ0FBRSxDQUE3UjtBQUE4UkYsUUFBQUEsS0FBSyxFQUFDLGVBQVNqQixDQUFULEVBQVc7QUFBQyxlQUFJLElBQUlDLENBQVIsSUFBYUQsQ0FBYjtBQUFlQSxZQUFBQSxDQUFDLENBQUNrQixjQUFGLENBQWlCakIsQ0FBakIsTUFBc0IsS0FBS0EsQ0FBTCxJQUFRRCxDQUFDLENBQUNDLENBQUQsQ0FBL0I7QUFBZjs7QUFBbURELFVBQUFBLENBQUMsQ0FBQ2tCLGNBQUYsQ0FBaUIsVUFBakIsTUFBK0IsS0FBS0ssUUFBTCxHQUFjdkIsQ0FBQyxDQUFDdUIsUUFBL0M7QUFBeUQsU0FBNVo7QUFBNlpDLFFBQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLGlCQUFPLEtBQUtMLElBQUwsQ0FBVVQsU0FBVixDQUFvQk0sTUFBcEIsQ0FBMkIsSUFBM0IsQ0FBUDtBQUF3QztBQUF0ZCxPQUFOO0FBQThkLEtBQXplLEVBQXBKO0FBQUEsUUFBZ29CUyxDQUFDLEdBQUNiLENBQUMsQ0FBQ2MsU0FBRixHQUFZWixDQUFDLENBQUNFLE1BQUYsQ0FBUztBQUFDRyxNQUFBQSxJQUFJLEVBQUMsY0FBU25CLENBQVQsRUFBV08sQ0FBWCxFQUFhO0FBQUNQLFFBQUFBLENBQUMsR0FBQyxLQUFLMkIsS0FBTCxHQUFXM0IsQ0FBQyxJQUFFLEVBQWhCLEVBQW1CTyxDQUFDLElBQUVOLENBQUgsR0FBSyxLQUFLMkIsUUFBTCxHQUFjckIsQ0FBbkIsR0FBcUIsS0FBS3FCLFFBQUwsR0FBYyxJQUFFNUIsQ0FBQyxDQUFDNkIsTUFBMUQ7QUFBaUUsT0FBckY7QUFBc0ZOLE1BQUFBLFFBQVEsRUFBQyxrQkFBU3ZCLENBQVQsRUFBVztBQUFDLGVBQU0sQ0FBQ0EsQ0FBQyxJQUFFOEIsQ0FBSixFQUFPQyxTQUFQLENBQWlCLElBQWpCLENBQU47QUFBNkIsT0FBeEk7QUFBeUlDLE1BQUFBLE1BQU0sRUFBQyxnQkFBU2hDLENBQVQsRUFBVztBQUFDLFlBQUlDLENBQUMsR0FBQyxLQUFLMEIsS0FBWDtBQUFBLFlBQWlCcEIsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCaEIsQ0FBQyxHQUFDLEtBQUtpQixRQUFsQztBQUFBLFlBQTJDaEIsQ0FBQyxHQUFDWixDQUFDLENBQUM0QixRQUEvQztBQUF3RCxZQUFHLEtBQUtLLEtBQUwsSUFBYXRCLENBQUMsR0FBQyxDQUFsQixFQUFvQixLQUFJLElBQUlHLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0YsQ0FBZCxFQUFnQkUsQ0FBQyxFQUFqQixFQUFvQjtBQUFDLGNBQUlXLENBQUMsR0FBQ2xCLENBQUMsQ0FBQ08sQ0FBQyxLQUFHLENBQUwsQ0FBRCxLQUFXLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBbEIsR0FBb0IsR0FBMUI7QUFBOEJiLFVBQUFBLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDRyxDQUFGLEtBQU0sQ0FBUCxDQUFELElBQVlXLENBQUMsSUFBRSxLQUFHLENBQUNkLENBQUMsR0FBQ0csQ0FBSCxJQUFNLENBQU4sR0FBUSxDQUExQjtBQUE0QixTQUFuRyxNQUF3RyxLQUFJLElBQUlBLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0YsQ0FBZCxFQUFnQkUsQ0FBQyxJQUFFLENBQW5CO0FBQXFCYixVQUFBQSxDQUFDLENBQUNVLENBQUMsR0FBQ0csQ0FBRixLQUFNLENBQVAsQ0FBRCxHQUFXUCxDQUFDLENBQUNPLENBQUMsS0FBRyxDQUFMLENBQVo7QUFBckI7QUFBeUMsZUFBTyxLQUFLYyxRQUFMLElBQWVoQixDQUFmLEVBQWlCLElBQXhCO0FBQTZCLE9BQWxZO0FBQW1ZcUIsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSWhDLENBQUMsR0FBQyxLQUFLMEIsS0FBWDtBQUFBLFlBQWlCcEIsQ0FBQyxHQUFDLEtBQUtxQixRQUF4QjtBQUFpQzNCLFFBQUFBLENBQUMsQ0FBQ00sQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLGNBQVksS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUE3QixFQUErQk4sQ0FBQyxDQUFDNEIsTUFBRixHQUFTN0IsQ0FBQyxDQUFDa0MsSUFBRixDQUFPM0IsQ0FBQyxHQUFDLENBQVQsQ0FBeEM7QUFBb0QsT0FBemU7QUFBMGVpQixNQUFBQSxLQUFLLEVBQUMsaUJBQVU7QUFBQyxZQUFJeEIsQ0FBQyxHQUFDYyxDQUFDLENBQUNVLEtBQUYsQ0FBUVcsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUF5QixlQUFPbkMsQ0FBQyxDQUFDMkIsS0FBRixHQUFRLEtBQUtBLEtBQUwsQ0FBV1MsS0FBWCxDQUFpQixDQUFqQixDQUFSLEVBQTRCcEMsQ0FBbkM7QUFBcUMsT0FBempCO0FBQTBqQnFDLE1BQUFBLE1BQU0sRUFBQyxnQkFBU3BDLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSU0sQ0FBSixFQUFNSSxDQUFDLEdBQUMsRUFBUixFQUFXQyxDQUFDLEdBQUMsU0FBRkEsQ0FBRSxDQUFTWCxDQUFULEVBQVc7QUFBQyxjQUFJQSxDQUFDLEdBQUNBLENBQU47QUFBQSxjQUFRTSxDQUFDLEdBQUMsU0FBVjtBQUFBLGNBQW9CSSxDQUFDLEdBQUMsVUFBdEI7QUFBaUMsaUJBQU8sWUFBVTtBQUFDSixZQUFBQSxDQUFDLEdBQUMsU0FBTyxRQUFNQSxDQUFiLEtBQWlCQSxDQUFDLElBQUUsRUFBcEIsSUFBd0JJLENBQTFCLEVBQTRCVixDQUFDLEdBQUMsUUFBTSxRQUFNQSxDQUFaLEtBQWdCQSxDQUFDLElBQUUsRUFBbkIsSUFBdUJVLENBQXJEO0FBQXVELGdCQUFJQyxDQUFDLEdBQUMsQ0FBQ0wsQ0FBQyxJQUFFLEVBQUosSUFBUU4sQ0FBUixHQUFVVSxDQUFoQjtBQUFrQixtQkFBT0MsQ0FBQyxJQUFFLFVBQUgsRUFBY0EsQ0FBQyxJQUFFLEVBQWpCLEVBQW9CQSxDQUFDLElBQUVaLENBQUMsQ0FBQ3FDLE1BQUYsS0FBVyxFQUFYLEdBQWMsQ0FBZCxHQUFnQixDQUFDLENBQW5CLENBQTVCO0FBQWtELFdBQTdJO0FBQThJLFNBQXhNLEVBQXlNdkIsQ0FBQyxHQUFDLENBQS9NLEVBQWlOQSxDQUFDLEdBQUNiLENBQW5OLEVBQXFOYSxDQUFDLElBQUUsQ0FBeE4sRUFBME47QUFBQyxjQUFJd0IsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDLGNBQVlMLENBQUMsSUFBRVAsQ0FBQyxDQUFDcUMsTUFBRixFQUFmLENBQUQsQ0FBUDtBQUFvQzlCLFVBQUFBLENBQUMsR0FBQyxZQUFVK0IsQ0FBQyxFQUFiLEVBQWdCM0IsQ0FBQyxDQUFDNEIsSUFBRixDQUFPLGFBQVdELENBQUMsRUFBWixHQUFlLENBQXRCLENBQWhCO0FBQXlDOztBQUFBLGVBQU8sSUFBSWIsQ0FBQyxDQUFDTixJQUFOLENBQVdSLENBQVgsRUFBYVYsQ0FBYixDQUFQO0FBQXVCO0FBQTU0QixLQUFULENBQTlvQjtBQUFBLFFBQXNpRHFDLENBQUMsR0FBQzNCLENBQUMsQ0FBQzZCLEdBQUYsR0FBTSxFQUE5aUQ7QUFBQSxRQUFpakRWLENBQUMsR0FBQ1EsQ0FBQyxDQUFDRyxHQUFGLEdBQU07QUFBQ1YsTUFBQUEsU0FBUyxFQUFDLG1CQUFTL0IsQ0FBVCxFQUFXO0FBQUMsYUFBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQVIsRUFBY3BCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBbEIsRUFBMkJqQixDQUFDLEdBQUMsRUFBN0IsRUFBZ0NDLENBQUMsR0FBQyxDQUF0QyxFQUF3Q0EsQ0FBQyxHQUFDTCxDQUExQyxFQUE0Q0ssQ0FBQyxFQUE3QyxFQUFnRDtBQUFDLGNBQUlFLENBQUMsR0FBQ2IsQ0FBQyxDQUFDVyxDQUFDLEtBQUcsQ0FBTCxDQUFELEtBQVcsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFsQixHQUFvQixHQUExQjtBQUE4QkQsVUFBQUEsQ0FBQyxDQUFDNEIsSUFBRixDQUFPLENBQUN6QixDQUFDLEtBQUcsQ0FBTCxFQUFRUyxRQUFSLENBQWlCLEVBQWpCLENBQVAsR0FBNkJaLENBQUMsQ0FBQzRCLElBQUYsQ0FBTyxDQUFDLEtBQUd6QixDQUFKLEVBQU9TLFFBQVAsQ0FBZ0IsRUFBaEIsQ0FBUCxDQUE3QjtBQUF5RDs7QUFBQSxlQUFPWixDQUFDLENBQUMrQixJQUFGLENBQU8sRUFBUCxDQUFQO0FBQWtCLE9BQWpMO0FBQWtMQyxNQUFBQSxLQUFLLEVBQUMsZUFBUzNDLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFSLEVBQWV0QixDQUFDLEdBQUMsRUFBakIsRUFBb0JJLENBQUMsR0FBQyxDQUExQixFQUE0QkEsQ0FBQyxHQUFDVixDQUE5QixFQUFnQ1UsQ0FBQyxJQUFFLENBQW5DO0FBQXFDSixVQUFBQSxDQUFDLENBQUNJLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVWlDLFFBQVEsQ0FBQzVDLENBQUMsQ0FBQzZDLE1BQUYsQ0FBU2xDLENBQVQsRUFBVyxDQUFYLENBQUQsRUFBZSxFQUFmLENBQVIsSUFBNEIsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUE3QztBQUFyQzs7QUFBb0YsZUFBTyxJQUFJYyxDQUFDLENBQUNOLElBQU4sQ0FBV1osQ0FBWCxFQUFhTixDQUFDLEdBQUMsQ0FBZixDQUFQO0FBQXlCO0FBQWpULEtBQXpqRDtBQUFBLFFBQTQyRDZDLENBQUMsR0FBQ1IsQ0FBQyxDQUFDUyxNQUFGLEdBQVM7QUFBQ2hCLE1BQUFBLFNBQVMsRUFBQyxtQkFBUy9CLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFSLEVBQWNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQWxCLEVBQTJCakIsQ0FBQyxHQUFDLEVBQTdCLEVBQWdDQyxDQUFDLEdBQUMsQ0FBdEMsRUFBd0NBLENBQUMsR0FBQ0wsQ0FBMUMsRUFBNENLLENBQUMsRUFBN0MsRUFBZ0Q7QUFBQyxjQUFJRSxDQUFDLEdBQUNiLENBQUMsQ0FBQ1csQ0FBQyxLQUFHLENBQUwsQ0FBRCxLQUFXLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBbEIsR0FBb0IsR0FBMUI7QUFBOEJELFVBQUFBLENBQUMsQ0FBQzRCLElBQUYsQ0FBT1MsTUFBTSxDQUFDQyxZQUFQLENBQW9CbkMsQ0FBcEIsQ0FBUDtBQUErQjs7QUFBQSxlQUFPSCxDQUFDLENBQUMrQixJQUFGLENBQU8sRUFBUCxDQUFQO0FBQWtCLE9BQXZKO0FBQXdKQyxNQUFBQSxLQUFLLEVBQUMsZUFBUzNDLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFSLEVBQWV0QixDQUFDLEdBQUMsRUFBakIsRUFBb0JJLENBQUMsR0FBQyxDQUExQixFQUE0QkEsQ0FBQyxHQUFDVixDQUE5QixFQUFnQ1UsQ0FBQyxFQUFqQztBQUFvQ0osVUFBQUEsQ0FBQyxDQUFDSSxDQUFDLEtBQUcsQ0FBTCxDQUFELElBQVUsQ0FBQyxNQUFJWCxDQUFDLENBQUNrRCxVQUFGLENBQWF2QyxDQUFiLENBQUwsS0FBdUIsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUF4QztBQUFwQzs7QUFBOEUsZUFBTyxJQUFJYyxDQUFDLENBQUNOLElBQU4sQ0FBV1osQ0FBWCxFQUFhTixDQUFiLENBQVA7QUFBdUI7QUFBL1EsS0FBdjNEO0FBQUEsUUFBd29Fa0QsQ0FBQyxHQUFDYixDQUFDLENBQUNjLElBQUYsR0FBTztBQUFDckIsTUFBQUEsU0FBUyxFQUFDLG1CQUFTL0IsQ0FBVCxFQUFXO0FBQUMsWUFBRztBQUFDLGlCQUFPcUQsa0JBQWtCLENBQUNDLE1BQU0sQ0FBQ1IsQ0FBQyxDQUFDZixTQUFGLENBQVkvQixDQUFaLENBQUQsQ0FBUCxDQUF6QjtBQUFrRCxTQUF0RCxDQUFzRCxPQUFNQSxDQUFOLEVBQVE7QUFBQyxnQkFBTSxJQUFJdUQsS0FBSixDQUFVLHNCQUFWLENBQU47QUFBd0M7QUFBQyxPQUEvSDtBQUFnSVosTUFBQUEsS0FBSyxFQUFDLGVBQVMzQyxDQUFULEVBQVc7QUFBQyxlQUFPOEMsQ0FBQyxDQUFDSCxLQUFGLENBQVFhLFFBQVEsQ0FBQ0Msa0JBQWtCLENBQUN6RCxDQUFELENBQW5CLENBQWhCLENBQVA7QUFBZ0Q7QUFBbE0sS0FBanBFO0FBQUEsUUFBcTFFMEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0Msc0JBQUYsR0FBeUI3QyxDQUFDLENBQUNFLE1BQUYsQ0FBUztBQUFDNEMsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsYUFBS0MsS0FBTCxHQUFXLElBQUlwQyxDQUFDLENBQUNOLElBQU4sRUFBWCxFQUFzQixLQUFLMkMsV0FBTCxHQUFpQixDQUF2QztBQUF5QyxPQUEzRDtBQUE0REMsTUFBQUEsT0FBTyxFQUFDLGlCQUFTL0QsQ0FBVCxFQUFXO0FBQUMsb0JBQVUsT0FBT0EsQ0FBakIsS0FBcUJBLENBQUMsR0FBQ21ELENBQUMsQ0FBQ1IsS0FBRixDQUFRM0MsQ0FBUixDQUF2QixHQUFtQyxLQUFLNkQsS0FBTCxDQUFXN0IsTUFBWCxDQUFrQmhDLENBQWxCLENBQW5DLEVBQXdELEtBQUs4RCxXQUFMLElBQWtCOUQsQ0FBQyxDQUFDNEIsUUFBNUU7QUFBcUYsT0FBcks7QUFBc0tvQyxNQUFBQSxRQUFRLEVBQUMsa0JBQVMvRCxDQUFULEVBQVc7QUFBQyxZQUFJTSxDQUFDLEdBQUMsS0FBS3NELEtBQVg7QUFBQSxZQUFpQmxELENBQUMsR0FBQ0osQ0FBQyxDQUFDb0IsS0FBckI7QUFBQSxZQUEyQmYsQ0FBQyxHQUFDTCxDQUFDLENBQUNxQixRQUEvQjtBQUFBLFlBQXdDZCxDQUFDLEdBQUMsS0FBS21ELFNBQS9DO0FBQUEsWUFBeUQzQixDQUFDLEdBQUMsSUFBRXhCLENBQTdEO0FBQUEsWUFBK0RnQixDQUFDLEdBQUNsQixDQUFDLEdBQUMwQixDQUFuRTtBQUFxRVIsUUFBQUEsQ0FBQyxHQUFDN0IsQ0FBQyxHQUFDRCxDQUFDLENBQUNrQyxJQUFGLENBQU9KLENBQVAsQ0FBRCxHQUFXOUIsQ0FBQyxDQUFDa0UsR0FBRixDQUFNLENBQUMsSUFBRXBDLENBQUgsSUFBTSxLQUFLcUMsY0FBakIsRUFBZ0MsQ0FBaEMsQ0FBZDtBQUFpRCxZQUFJckIsQ0FBQyxHQUFDaEIsQ0FBQyxHQUFDaEIsQ0FBUjtBQUFBLFlBQVVxQyxDQUFDLEdBQUNuRCxDQUFDLENBQUNvRSxHQUFGLENBQU0sSUFBRXRCLENBQVIsRUFBVWxDLENBQVYsQ0FBWjs7QUFBeUIsWUFBR2tDLENBQUgsRUFBSztBQUFDLGVBQUksSUFBSVksQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDWixDQUFkLEVBQWdCWSxDQUFDLElBQUU1QyxDQUFuQjtBQUFxQixpQkFBS3VELGVBQUwsQ0FBcUIxRCxDQUFyQixFQUF1QitDLENBQXZCO0FBQXJCOztBQUErQyxjQUFJWSxDQUFDLEdBQUMzRCxDQUFDLENBQUM0RCxNQUFGLENBQVMsQ0FBVCxFQUFXekIsQ0FBWCxDQUFOO0FBQW9CdkMsVUFBQUEsQ0FBQyxDQUFDcUIsUUFBRixJQUFZdUIsQ0FBWjtBQUFjOztBQUFBLGVBQU8sSUFBSTFCLENBQUMsQ0FBQ04sSUFBTixDQUFXbUQsQ0FBWCxFQUFhbkIsQ0FBYixDQUFQO0FBQXVCLE9BQXhiO0FBQXliM0IsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSXhCLENBQUMsR0FBQ2MsQ0FBQyxDQUFDVSxLQUFGLENBQVFXLElBQVIsQ0FBYSxJQUFiLENBQU47QUFBeUIsZUFBT25DLENBQUMsQ0FBQzZELEtBQUYsR0FBUSxLQUFLQSxLQUFMLENBQVdyQyxLQUFYLEVBQVIsRUFBMkJ4QixDQUFsQztBQUFvQyxPQUF2Z0I7QUFBd2dCbUUsTUFBQUEsY0FBYyxFQUFDO0FBQXZoQixLQUFULENBQWgzRTtBQUFBLFFBQW81RkcsQ0FBQyxJQUFFMUQsQ0FBQyxDQUFDNEQsTUFBRixHQUFTZCxDQUFDLENBQUMxQyxNQUFGLENBQVM7QUFBQ3lELE1BQUFBLEdBQUcsRUFBQzNELENBQUMsQ0FBQ0UsTUFBRixFQUFMO0FBQWdCRyxNQUFBQSxJQUFJLEVBQUMsY0FBU25CLENBQVQsRUFBVztBQUFDLGFBQUt5RSxHQUFMLEdBQVMsS0FBS0EsR0FBTCxDQUFTekQsTUFBVCxDQUFnQmhCLENBQWhCLENBQVQsRUFBNEIsS0FBSzRELEtBQUwsRUFBNUI7QUFBeUMsT0FBMUU7QUFBMkVBLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDRixRQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUXpCLElBQVIsQ0FBYSxJQUFiLEdBQW1CLEtBQUt1QyxRQUFMLEVBQW5CO0FBQW1DLE9BQS9IO0FBQWdJQyxNQUFBQSxNQUFNLEVBQUMsZ0JBQVMzRSxDQUFULEVBQVc7QUFBQyxlQUFPLEtBQUsrRCxPQUFMLENBQWEvRCxDQUFiLEdBQWdCLEtBQUtnRSxRQUFMLEVBQWhCLEVBQWdDLElBQXZDO0FBQTRDLE9BQS9MO0FBQWdNWSxNQUFBQSxRQUFRLEVBQUMsa0JBQVM1RSxDQUFULEVBQVc7QUFBQ0EsUUFBQUEsQ0FBQyxJQUFFLEtBQUsrRCxPQUFMLENBQWEvRCxDQUFiLENBQUg7O0FBQW1CLFlBQUlDLENBQUMsR0FBQyxLQUFLNEUsV0FBTCxFQUFOOztBQUF5QixlQUFPNUUsQ0FBUDtBQUFTLE9BQTFRO0FBQTJRZ0UsTUFBQUEsU0FBUyxFQUFDLEVBQXJSO0FBQXdSYSxNQUFBQSxhQUFhLEVBQUMsdUJBQVM5RSxDQUFULEVBQVc7QUFBQyxlQUFPLFVBQVNDLENBQVQsRUFBV00sQ0FBWCxFQUFhO0FBQUMsaUJBQU8sSUFBSVAsQ0FBQyxDQUFDbUIsSUFBTixDQUFXWixDQUFYLEVBQWNxRSxRQUFkLENBQXVCM0UsQ0FBdkIsQ0FBUDtBQUFpQyxTQUF0RDtBQUF1RCxPQUF6VztBQUEwVzhFLE1BQUFBLGlCQUFpQixFQUFDLDJCQUFTL0UsQ0FBVCxFQUFXO0FBQUMsZUFBTyxVQUFTQyxDQUFULEVBQVdNLENBQVgsRUFBYTtBQUFDLGlCQUFPLElBQUkrRCxDQUFDLENBQUNVLElBQUYsQ0FBTzdELElBQVgsQ0FBZ0JuQixDQUFoQixFQUFrQk8sQ0FBbEIsRUFBcUJxRSxRQUFyQixDQUE4QjNFLENBQTlCLENBQVA7QUFBd0MsU0FBN0Q7QUFBOEQ7QUFBdGMsS0FBVCxDQUFULEVBQTJkVSxDQUFDLENBQUNzRSxJQUFGLEdBQU8sRUFBcGUsQ0FBcjVGOztBQUE2M0csV0FBT3RFLENBQVA7QUFBUyxHQUFwNUcsQ0FBcTVHdUUsSUFBcjVHLENBQVQ7O0FBQW82RyxTQUFPLFlBQVU7QUFBQyxhQUFTakYsQ0FBVCxDQUFXRCxDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQjtBQUFDLFdBQUksSUFBSUksQ0FBQyxHQUFDLEVBQU4sRUFBU0csQ0FBQyxHQUFDLENBQVgsRUFBYVcsQ0FBQyxHQUFDLENBQW5CLEVBQXFCQSxDQUFDLEdBQUN4QixDQUF2QixFQUF5QndCLENBQUMsRUFBMUI7QUFBNkIsWUFBR0EsQ0FBQyxHQUFDLENBQUwsRUFBTztBQUFDLGNBQUlhLENBQUMsR0FBQy9CLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDa0QsVUFBRixDQUFhekIsQ0FBQyxHQUFDLENBQWYsQ0FBRCxDQUFELElBQXNCQSxDQUFDLEdBQUMsQ0FBRixHQUFJLENBQWhDO0FBQUEsY0FBa0NLLENBQUMsR0FBQ3ZCLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDa0QsVUFBRixDQUFhekIsQ0FBYixDQUFELENBQUQsS0FBcUIsSUFBRUEsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUEvRDtBQUFpRWQsVUFBQUEsQ0FBQyxDQUFDRyxDQUFDLEtBQUcsQ0FBTCxDQUFELElBQVUsQ0FBQ3dCLENBQUMsR0FBQ1IsQ0FBSCxLQUFPLEtBQUdoQixDQUFDLEdBQUMsQ0FBRixHQUFJLENBQXhCLEVBQTBCQSxDQUFDLEVBQTNCO0FBQThCO0FBQXBJOztBQUFvSSxhQUFPRixDQUFDLENBQUNILE1BQUYsQ0FBU0UsQ0FBVCxFQUFXRyxDQUFYLENBQVA7QUFBcUI7O0FBQUEsUUFBSVAsQ0FBQyxHQUFDUCxDQUFOO0FBQUEsUUFBUVcsQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQVo7QUFBQSxRQUFnQkQsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQXBCO0FBQUEsUUFBOEJaLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUMsR0FBbEM7QUFBc0MxQixJQUFBQSxDQUFDLENBQUNxRSxNQUFGLEdBQVM7QUFBQ3BELE1BQUFBLFNBQVMsRUFBQyxtQkFBUy9CLENBQVQsRUFBVztBQUFDLFlBQUlDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBUjtBQUFBLFlBQWNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQWxCO0FBQUEsWUFBMkJqQixDQUFDLEdBQUMsS0FBS3lFLElBQWxDO0FBQXVDcEYsUUFBQUEsQ0FBQyxDQUFDaUMsS0FBRjs7QUFBVSxhQUFJLElBQUlyQixDQUFDLEdBQUMsRUFBTixFQUFTRSxDQUFDLEdBQUMsQ0FBZixFQUFpQkEsQ0FBQyxHQUFDUCxDQUFuQixFQUFxQk8sQ0FBQyxJQUFFLENBQXhCO0FBQTBCLGVBQUksSUFBSVcsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsQ0FBTCxDQUFELEtBQVcsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFsQixHQUFvQixHQUExQixFQUE4QndCLENBQUMsR0FBQ3JDLENBQUMsQ0FBQ2EsQ0FBQyxHQUFDLENBQUYsS0FBTSxDQUFQLENBQUQsS0FBYSxLQUFHLENBQUNBLENBQUMsR0FBQyxDQUFILElBQU0sQ0FBTixHQUFRLENBQXhCLEdBQTBCLEdBQTFELEVBQThEZ0IsQ0FBQyxHQUFDN0IsQ0FBQyxDQUFDYSxDQUFDLEdBQUMsQ0FBRixLQUFNLENBQVAsQ0FBRCxLQUFhLEtBQUcsQ0FBQ0EsQ0FBQyxHQUFDLENBQUgsSUFBTSxDQUFOLEdBQVEsQ0FBeEIsR0FBMEIsR0FBMUYsRUFBOEZnQyxDQUFDLEdBQUNyQixDQUFDLElBQUUsRUFBSCxHQUFNYSxDQUFDLElBQUUsQ0FBVCxHQUFXUixDQUEzRyxFQUE2R3FCLENBQUMsR0FBQyxDQUFuSCxFQUFxSEEsQ0FBQyxHQUFDLENBQUYsSUFBS3JDLENBQUMsR0FBQyxNQUFJcUMsQ0FBTixHQUFRNUMsQ0FBbEksRUFBb0k0QyxDQUFDLEVBQXJJO0FBQXdJdkMsWUFBQUEsQ0FBQyxDQUFDMkIsSUFBRixDQUFPNUIsQ0FBQyxDQUFDMEUsTUFBRixDQUFTdkMsQ0FBQyxLQUFHLEtBQUcsSUFBRUssQ0FBTCxDQUFKLEdBQVksRUFBckIsQ0FBUDtBQUF4STtBQUExQjs7QUFBbU0sWUFBSU8sQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDMEUsTUFBRixDQUFTLEVBQVQsQ0FBTjtBQUFtQixZQUFHM0IsQ0FBSCxFQUFLLE9BQUs5QyxDQUFDLENBQUNpQixNQUFGLEdBQVMsQ0FBZDtBQUFpQmpCLFVBQUFBLENBQUMsQ0FBQzJCLElBQUYsQ0FBT21CLENBQVA7QUFBakI7QUFBMkIsZUFBTzlDLENBQUMsQ0FBQzhCLElBQUYsQ0FBTyxFQUFQLENBQVA7QUFBa0IsT0FBaFY7QUFBaVZDLE1BQUFBLEtBQUssRUFBQyxlQUFTM0MsQ0FBVCxFQUFXO0FBQUMsWUFBSU8sQ0FBQyxHQUFDUCxDQUFDLENBQUM2QixNQUFSO0FBQUEsWUFBZWxCLENBQUMsR0FBQyxLQUFLeUUsSUFBdEI7QUFBQSxZQUEyQnhFLENBQUMsR0FBQyxLQUFLMEUsV0FBbEM7O0FBQThDLFlBQUcsQ0FBQzFFLENBQUosRUFBTTtBQUFDQSxVQUFBQSxDQUFDLEdBQUMsS0FBSzBFLFdBQUwsR0FBaUIsRUFBbkI7O0FBQXNCLGVBQUksSUFBSXhFLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0gsQ0FBQyxDQUFDa0IsTUFBaEIsRUFBdUJmLENBQUMsRUFBeEI7QUFBMkJGLFlBQUFBLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDdUMsVUFBRixDQUFhcEMsQ0FBYixDQUFELENBQUQsR0FBbUJBLENBQW5CO0FBQTNCO0FBQWdEOztBQUFBLFlBQUlXLENBQUMsR0FBQ2QsQ0FBQyxDQUFDMEUsTUFBRixDQUFTLEVBQVQsQ0FBTjs7QUFBbUIsWUFBRzVELENBQUgsRUFBSztBQUFDLGNBQUlhLENBQUMsR0FBQ3RDLENBQUMsQ0FBQ3VGLE9BQUYsQ0FBVTlELENBQVYsQ0FBTjtBQUFtQmEsVUFBQUEsQ0FBQyxLQUFHLENBQUMsQ0FBTCxLQUFTL0IsQ0FBQyxHQUFDK0IsQ0FBWDtBQUFjOztBQUFBLGVBQU9yQyxDQUFDLENBQUNELENBQUQsRUFBR08sQ0FBSCxFQUFLSyxDQUFMLENBQVI7QUFBZ0IsT0FBeGlCO0FBQXlpQndFLE1BQUFBLElBQUksRUFBQztBQUE5aUIsS0FBVDtBQUE0bkIsR0FBeDFCLElBQTIxQixVQUFTbkYsQ0FBVCxFQUFXO0FBQUMsYUFBU00sQ0FBVCxDQUFXUCxDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQkksQ0FBakIsRUFBbUJDLENBQW5CLEVBQXFCRSxDQUFyQixFQUF1QlcsQ0FBdkIsRUFBeUI7QUFBQyxVQUFJYSxDQUFDLEdBQUN0QyxDQUFDLElBQUVDLENBQUMsR0FBQ00sQ0FBRixHQUFJLENBQUNOLENBQUQsR0FBR1UsQ0FBVCxDQUFELEdBQWFDLENBQWIsR0FBZWEsQ0FBckI7QUFBdUIsYUFBTSxDQUFDYSxDQUFDLElBQUV4QixDQUFILEdBQUt3QixDQUFDLEtBQUcsS0FBR3hCLENBQWIsSUFBZ0JiLENBQXRCO0FBQXdCOztBQUFBLGFBQVNVLENBQVQsQ0FBV1gsQ0FBWCxFQUFhQyxDQUFiLEVBQWVNLENBQWYsRUFBaUJJLENBQWpCLEVBQW1CQyxDQUFuQixFQUFxQkUsQ0FBckIsRUFBdUJXLENBQXZCLEVBQXlCO0FBQUMsVUFBSWEsQ0FBQyxHQUFDdEMsQ0FBQyxJQUFFQyxDQUFDLEdBQUNVLENBQUYsR0FBSUosQ0FBQyxHQUFDLENBQUNJLENBQVQsQ0FBRCxHQUFhQyxDQUFiLEdBQWVhLENBQXJCO0FBQXVCLGFBQU0sQ0FBQ2EsQ0FBQyxJQUFFeEIsQ0FBSCxHQUFLd0IsQ0FBQyxLQUFHLEtBQUd4QixDQUFiLElBQWdCYixDQUF0QjtBQUF3Qjs7QUFBQSxhQUFTVyxDQUFULENBQVdaLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCSSxDQUFqQixFQUFtQkMsQ0FBbkIsRUFBcUJFLENBQXJCLEVBQXVCVyxDQUF2QixFQUF5QjtBQUFDLFVBQUlhLENBQUMsR0FBQ3RDLENBQUMsSUFBRUMsQ0FBQyxHQUFDTSxDQUFGLEdBQUlJLENBQU4sQ0FBRCxHQUFVQyxDQUFWLEdBQVlhLENBQWxCO0FBQW9CLGFBQU0sQ0FBQ2EsQ0FBQyxJQUFFeEIsQ0FBSCxHQUFLd0IsQ0FBQyxLQUFHLEtBQUd4QixDQUFiLElBQWdCYixDQUF0QjtBQUF3Qjs7QUFBQSxhQUFTYSxDQUFULENBQVdkLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCSSxDQUFqQixFQUFtQkMsQ0FBbkIsRUFBcUJFLENBQXJCLEVBQXVCVyxDQUF2QixFQUF5QjtBQUFDLFVBQUlhLENBQUMsR0FBQ3RDLENBQUMsSUFBRU8sQ0FBQyxJQUFFTixDQUFDLEdBQUMsQ0FBQ1UsQ0FBTCxDQUFILENBQUQsR0FBYUMsQ0FBYixHQUFlYSxDQUFyQjtBQUF1QixhQUFNLENBQUNhLENBQUMsSUFBRXhCLENBQUgsR0FBS3dCLENBQUMsS0FBRyxLQUFHeEIsQ0FBYixJQUFnQmIsQ0FBdEI7QUFBd0I7O0FBQUEsUUFBSXdCLENBQUMsR0FBQ3pCLENBQU47QUFBQSxRQUFRc0MsQ0FBQyxHQUFDYixDQUFDLENBQUNaLEdBQVo7QUFBQSxRQUFnQmlCLENBQUMsR0FBQ1EsQ0FBQyxDQUFDWixTQUFwQjtBQUFBLFFBQThCb0IsQ0FBQyxHQUFDUixDQUFDLENBQUNrQyxNQUFsQztBQUFBLFFBQXlDckIsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDd0QsSUFBN0M7QUFBQSxRQUFrRHZCLENBQUMsR0FBQyxFQUFwRDtBQUF1RCxLQUFDLFlBQVU7QUFBQyxXQUFJLElBQUkxRCxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQjtBQUFxQjBELFFBQUFBLENBQUMsQ0FBQzFELENBQUQsQ0FBRCxHQUFLLGFBQVdDLENBQUMsQ0FBQ3VGLEdBQUYsQ0FBTXZGLENBQUMsQ0FBQ3dGLEdBQUYsQ0FBTXpGLENBQUMsR0FBQyxDQUFSLENBQU4sQ0FBWCxHQUE2QixDQUFsQztBQUFyQjtBQUF5RCxLQUFwRSxFQUFEO0FBQXdFLFFBQUlzRSxDQUFDLEdBQUNuQixDQUFDLENBQUN1QyxHQUFGLEdBQU01QyxDQUFDLENBQUM5QixNQUFGLENBQVM7QUFBQzBELE1BQUFBLFFBQVEsRUFBQyxvQkFBVTtBQUFDLGFBQUtpQixLQUFMLEdBQVcsSUFBSTdELENBQUMsQ0FBQ1gsSUFBTixDQUFXLENBQUMsVUFBRCxFQUFZLFVBQVosRUFBdUIsVUFBdkIsRUFBa0MsU0FBbEMsQ0FBWCxDQUFYO0FBQW9FLE9BQXpGO0FBQTBGa0QsTUFBQUEsZUFBZSxFQUFDLHlCQUFTckUsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFJLElBQUl3QixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQixFQUFxQjtBQUFDLGNBQUlhLENBQUMsR0FBQ3JDLENBQUMsR0FBQ3dCLENBQVI7QUFBQSxjQUFVSyxDQUFDLEdBQUM5QixDQUFDLENBQUNzQyxDQUFELENBQWI7QUFBaUJ0QyxVQUFBQSxDQUFDLENBQUNzQyxDQUFELENBQUQsR0FBSyxZQUFVUixDQUFDLElBQUUsQ0FBSCxHQUFLQSxDQUFDLEtBQUcsRUFBbkIsSUFBdUIsY0FBWUEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLENBQXRCLENBQTVCO0FBQXFEOztBQUFBLFlBQUlnQixDQUFDLEdBQUMsS0FBSzZDLEtBQUwsQ0FBV2hFLEtBQWpCO0FBQUEsWUFBdUJ3QixDQUFDLEdBQUNuRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTFCO0FBQUEsWUFBZ0NxRSxDQUFDLEdBQUN0RSxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQW5DO0FBQUEsWUFBeUMyRixDQUFDLEdBQUM1RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTVDO0FBQUEsWUFBa0Q0RixDQUFDLEdBQUM3RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQXJEO0FBQUEsWUFBMkQ2RixDQUFDLEdBQUM5RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTlEO0FBQUEsWUFBb0U4RixDQUFDLEdBQUMvRixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQXZFO0FBQUEsWUFBNkUrRixDQUFDLEdBQUNoRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQWhGO0FBQUEsWUFBc0ZnRyxDQUFDLEdBQUNqRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQXpGO0FBQUEsWUFBK0ZpRyxDQUFDLEdBQUNsRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQWxHO0FBQUEsWUFBd0drRyxDQUFDLEdBQUNuRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTNHO0FBQUEsWUFBaUhtRyxDQUFDLEdBQUNwRyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQXBIO0FBQUEsWUFBMkhvRyxDQUFDLEdBQUNyRyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQTlIO0FBQUEsWUFBcUlxRyxDQUFDLEdBQUN0RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQXhJO0FBQUEsWUFBK0lzRyxDQUFDLEdBQUN2RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQWxKO0FBQUEsWUFBeUp1RyxDQUFDLEdBQUN4RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQTVKO0FBQUEsWUFBbUt3RyxDQUFDLEdBQUN6RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQXRLO0FBQUEsWUFBNkt5RyxDQUFDLEdBQUM1RCxDQUFDLENBQUMsQ0FBRCxDQUFoTDtBQUFBLFlBQW9MNkQsQ0FBQyxHQUFDN0QsQ0FBQyxDQUFDLENBQUQsQ0FBdkw7QUFBQSxZQUEyTDhELENBQUMsR0FBQzlELENBQUMsQ0FBQyxDQUFELENBQTlMO0FBQUEsWUFBa00rRCxDQUFDLEdBQUMvRCxDQUFDLENBQUMsQ0FBRCxDQUFyTTtBQUF5TTRELFFBQUFBLENBQUMsR0FBQ25HLENBQUMsQ0FBQ21HLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBUzFELENBQVQsRUFBVyxDQUFYLEVBQWFPLENBQUMsQ0FBQyxDQUFELENBQWQsQ0FBSCxFQUFzQm1ELENBQUMsR0FBQ3RHLENBQUMsQ0FBQ3NHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU3RDLENBQVQsRUFBVyxFQUFYLEVBQWNaLENBQUMsQ0FBQyxDQUFELENBQWYsQ0FBekIsRUFBNkNrRCxDQUFDLEdBQUNyRyxDQUFDLENBQUNxRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxFQUFYLEVBQWNsQyxDQUFDLENBQUMsQ0FBRCxDQUFmLENBQWhELEVBQW9FaUQsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsRUFBT0gsQ0FBUCxFQUFTYixDQUFULEVBQVcsRUFBWCxFQUFjbkMsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUF2RSxFQUEyRmdELENBQUMsR0FBQ25HLENBQUMsQ0FBQ21HLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU2YsQ0FBVCxFQUFXLENBQVgsRUFBYXBDLENBQUMsQ0FBQyxDQUFELENBQWQsQ0FBOUYsRUFBaUhtRCxDQUFDLEdBQUN0RyxDQUFDLENBQUNzRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNiLENBQVQsRUFBVyxFQUFYLEVBQWNyQyxDQUFDLENBQUMsQ0FBRCxDQUFmLENBQXBILEVBQXdJa0QsQ0FBQyxHQUFDckcsQ0FBQyxDQUFDcUcsQ0FBRCxFQUFHQyxDQUFILEVBQUtILENBQUwsRUFBT0MsQ0FBUCxFQUFTWCxDQUFULEVBQVcsRUFBWCxFQUFjdEMsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUEzSSxFQUErSmlELENBQUMsR0FBQ3BHLENBQUMsQ0FBQ29HLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU1QsQ0FBVCxFQUFXLEVBQVgsRUFBY3ZDLENBQUMsQ0FBQyxDQUFELENBQWYsQ0FBbEssRUFBc0xnRCxDQUFDLEdBQUNuRyxDQUFDLENBQUNtRyxDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxDQUFYLEVBQWF4QyxDQUFDLENBQUMsQ0FBRCxDQUFkLENBQXpMLEVBQTRNbUQsQ0FBQyxHQUFDdEcsQ0FBQyxDQUFDc0csQ0FBRCxFQUFHSCxDQUFILEVBQUtDLENBQUwsRUFBT0MsQ0FBUCxFQUFTVCxDQUFULEVBQVcsRUFBWCxFQUFjekMsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUEvTSxFQUFtT2tELENBQUMsR0FBQ3JHLENBQUMsQ0FBQ3FHLENBQUQsRUFBR0MsQ0FBSCxFQUFLSCxDQUFMLEVBQU9DLENBQVAsRUFBU1AsQ0FBVCxFQUFXLEVBQVgsRUFBYzFDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBdE8sRUFBMlBpRCxDQUFDLEdBQUNwRyxDQUFDLENBQUNvRyxDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNMLENBQVQsRUFBVyxFQUFYLEVBQWMzQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTlQLEVBQW1SZ0QsQ0FBQyxHQUFDbkcsQ0FBQyxDQUFDbUcsQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsRUFBT0MsQ0FBUCxFQUFTUCxDQUFULEVBQVcsQ0FBWCxFQUFhNUMsQ0FBQyxDQUFDLEVBQUQsQ0FBZCxDQUF0UixFQUEwU21ELENBQUMsR0FBQ3RHLENBQUMsQ0FBQ3NHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU0wsQ0FBVCxFQUFXLEVBQVgsRUFBYzdDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBN1MsRUFBa1VrRCxDQUFDLEdBQUNyRyxDQUFDLENBQUNxRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWM5QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXJVLEVBQTBWaUQsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsRUFBT0gsQ0FBUCxFQUFTRCxDQUFULEVBQVcsRUFBWCxFQUFjL0MsQ0FBQyxDQUFDLEVBQUQsQ0FBZixDQUE3VixFQUFrWGdELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU3ZDLENBQVQsRUFBVyxDQUFYLEVBQWFaLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBclgsRUFBeVltRCxDQUFDLEdBQUNsRyxDQUFDLENBQUNrRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNaLENBQVQsRUFBVyxDQUFYLEVBQWF0QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTVZLEVBQWdha0QsQ0FBQyxHQUFDakcsQ0FBQyxDQUFDaUcsQ0FBRCxFQUFHQyxDQUFILEVBQUtILENBQUwsRUFBT0MsQ0FBUCxFQUFTTixDQUFULEVBQVcsRUFBWCxFQUFjM0MsQ0FBQyxDQUFDLEVBQUQsQ0FBZixDQUFuYSxFQUF3YmlELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU3ZELENBQVQsRUFBVyxFQUFYLEVBQWNPLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBM2IsRUFBZ2RnRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxDQUFYLEVBQWFyQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQW5kLEVBQXVlbUQsQ0FBQyxHQUFDbEcsQ0FBQyxDQUFDa0csQ0FBRCxFQUFHSCxDQUFILEVBQUtDLENBQUwsRUFBT0MsQ0FBUCxFQUFTUixDQUFULEVBQVcsQ0FBWCxFQUFhMUMsQ0FBQyxDQUFDLEVBQUQsQ0FBZCxDQUExZSxFQUE4ZmtELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUQsRUFBR0MsQ0FBSCxFQUFLSCxDQUFMLEVBQU9DLENBQVAsRUFBU0YsQ0FBVCxFQUFXLEVBQVgsRUFBYy9DLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBamdCLEVBQXNoQmlELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU1osQ0FBVCxFQUFXLEVBQVgsRUFBY3BDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBemhCLEVBQThpQmdELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU1YsQ0FBVCxFQUFXLENBQVgsRUFBYXpDLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBampCLEVBQXFrQm1ELENBQUMsR0FBQ2xHLENBQUMsQ0FBQ2tHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU0osQ0FBVCxFQUFXLENBQVgsRUFBYTlDLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBeGtCLEVBQTRsQmtELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUQsRUFBR0MsQ0FBSCxFQUFLSCxDQUFMLEVBQU9DLENBQVAsRUFBU2QsQ0FBVCxFQUFXLEVBQVgsRUFBY25DLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBL2xCLEVBQW9uQmlELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU1IsQ0FBVCxFQUFXLEVBQVgsRUFBY3hDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBdm5CLEVBQTRvQmdELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU04sQ0FBVCxFQUFXLENBQVgsRUFBYTdDLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBL29CLEVBQW1xQm1ELENBQUMsR0FBQ2xHLENBQUMsQ0FBQ2tHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU2hCLENBQVQsRUFBVyxDQUFYLEVBQWFsQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXRxQixFQUEwckJrRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN2QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTdyQixFQUFrdEJpRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNKLENBQVQsRUFBVyxFQUFYLEVBQWM1QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXJ0QixFQUEwdUJnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxDQUFYLEVBQWFyQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTd1QixFQUFpd0JtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN4QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXB3QixFQUF5eEJrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNOLENBQVQsRUFBVyxFQUFYLEVBQWMzQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTV4QixFQUFpekJpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNGLENBQVQsRUFBVyxFQUFYLEVBQWM5QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXB6QixFQUF5MEJnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVN2QyxDQUFULEVBQVcsQ0FBWCxFQUFhWixDQUFDLENBQUMsRUFBRCxDQUFkLENBQTUwQixFQUFnMkJtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxFQUFYLEVBQWNwQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQW4yQixFQUF3M0JrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN2QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTMzQixFQUFnNUJpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNOLENBQVQsRUFBVyxFQUFYLEVBQWMxQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQW41QixFQUF3NkJnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNOLENBQVQsRUFBVyxDQUFYLEVBQWE3QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTM2QixFQUErN0JtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVN6RCxDQUFULEVBQVcsRUFBWCxFQUFjTyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWw4QixFQUF1OUJrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxFQUFYLEVBQWNuQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTE5QixFQUErK0JpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN0QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWwvQixFQUF1Z0NnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxDQUFYLEVBQWF6QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTFnQyxFQUE4aENtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNOLENBQVQsRUFBVyxFQUFYLEVBQWM1QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWppQyxFQUFzakNrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNGLENBQVQsRUFBVyxFQUFYLEVBQWMvQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXpqQyxFQUE4a0NpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNkLENBQVQsRUFBVyxFQUFYLEVBQWNsQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWpsQyxFQUFzbUNnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVMxRCxDQUFULEVBQVcsQ0FBWCxFQUFhTyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXptQyxFQUE2bkNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxFQUFYLEVBQWN2QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWhvQyxFQUFxcENrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWM5QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXhwQyxFQUE2cUNpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNYLENBQVQsRUFBVyxFQUFYLEVBQWNyQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWhyQyxFQUFxc0NnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNQLENBQVQsRUFBVyxDQUFYLEVBQWE1QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXhzQyxFQUE0dENtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxFQUFYLEVBQWNuQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQS90QyxFQUFvdkNrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNQLENBQVQsRUFBVyxFQUFYLEVBQWMxQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXZ2QyxFQUE0d0NpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNwQyxDQUFULEVBQVcsRUFBWCxFQUFjWixDQUFDLENBQUMsRUFBRCxDQUFmLENBQS93QyxFQUFveUNnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxDQUFYLEVBQWF4QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXZ5QyxFQUEyekNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWMvQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTl6QyxFQUFtMUNrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxFQUFYLEVBQWN0QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXQxQyxFQUEyMkNpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWM3QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTkyQyxFQUFtNENnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxDQUFYLEVBQWFwQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXQ0QyxFQUEwNUNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNQLENBQVQsRUFBVyxFQUFYLEVBQWMzQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTc1QyxFQUFrN0NrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxFQUFYLEVBQWNsQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXI3QyxFQUEwOENpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNQLENBQVQsRUFBVyxFQUFYLEVBQWN6QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTc4QyxFQUFrK0NaLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLNEQsQ0FBTCxHQUFPLENBQTkrQyxFQUFnL0M1RCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzZELENBQUwsR0FBTyxDQUE1L0MsRUFBOC9DN0QsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4RCxDQUFMLEdBQU8sQ0FBMWdELEVBQTRnRDlELENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLK0QsQ0FBTCxHQUFPLENBQXhoRDtBQUEwaEQsT0FBdjdEO0FBQXc3RGhDLE1BQUFBLFdBQVcsRUFBQyx1QkFBVTtBQUFDLFlBQUk3RSxDQUFDLEdBQUMsS0FBSzZELEtBQVg7QUFBQSxZQUFpQnRELENBQUMsR0FBQ1AsQ0FBQyxDQUFDMkIsS0FBckI7QUFBQSxZQUEyQmhCLENBQUMsR0FBQyxJQUFFLEtBQUttRCxXQUFwQztBQUFBLFlBQWdEbEQsQ0FBQyxHQUFDLElBQUVaLENBQUMsQ0FBQzRCLFFBQXREO0FBQStEckIsUUFBQUEsQ0FBQyxDQUFDSyxDQUFDLEtBQUcsQ0FBTCxDQUFELElBQVUsT0FBSyxLQUFHQSxDQUFDLEdBQUMsRUFBcEI7QUFBdUIsWUFBSUUsQ0FBQyxHQUFDYixDQUFDLENBQUM2RyxLQUFGLENBQVFuRyxDQUFDLEdBQUMsVUFBVixDQUFOO0FBQUEsWUFBNEJjLENBQUMsR0FBQ2QsQ0FBOUI7QUFBZ0NKLFFBQUFBLENBQUMsQ0FBQyxDQUFDSyxDQUFDLEdBQUMsRUFBRixLQUFPLENBQVAsSUFBVSxDQUFYLElBQWMsRUFBZixDQUFELEdBQW9CLFlBQVVFLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBM0MsRUFBb0VQLENBQUMsQ0FBQyxDQUFDSyxDQUFDLEdBQUMsRUFBRixLQUFPLENBQVAsSUFBVSxDQUFYLElBQWMsRUFBZixDQUFELEdBQW9CLFlBQVVhLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBL0csRUFBd0l6QixDQUFDLENBQUM0QixRQUFGLEdBQVcsS0FBR3JCLENBQUMsQ0FBQ3NCLE1BQUYsR0FBUyxDQUFaLENBQW5KLEVBQWtLLEtBQUttQyxRQUFMLEVBQWxLOztBQUFrTCxhQUFJLElBQUkxQixDQUFDLEdBQUMsS0FBS3FELEtBQVgsRUFBaUI3RCxDQUFDLEdBQUNRLENBQUMsQ0FBQ1gsS0FBckIsRUFBMkJtQixDQUFDLEdBQUMsQ0FBakMsRUFBbUNBLENBQUMsR0FBQyxDQUFyQyxFQUF1Q0EsQ0FBQyxFQUF4QyxFQUEyQztBQUFDLGNBQUlLLENBQUMsR0FBQ3JCLENBQUMsQ0FBQ2dCLENBQUQsQ0FBUDtBQUFXaEIsVUFBQUEsQ0FBQyxDQUFDZ0IsQ0FBRCxDQUFELEdBQUssWUFBVUssQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUE1QjtBQUFxRDs7QUFBQSxlQUFPYixDQUFQO0FBQVMsT0FBNTJFO0FBQTYyRWQsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSXhCLENBQUMsR0FBQzhDLENBQUMsQ0FBQ3RCLEtBQUYsQ0FBUVcsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUF5QixlQUFPbkMsQ0FBQyxDQUFDMkYsS0FBRixHQUFRLEtBQUtBLEtBQUwsQ0FBV25FLEtBQVgsRUFBUixFQUEyQnhCLENBQWxDO0FBQW9DO0FBQTM3RSxLQUFULENBQVo7QUFBbTlFeUIsSUFBQUEsQ0FBQyxDQUFDaUUsR0FBRixHQUFNNUMsQ0FBQyxDQUFDZ0MsYUFBRixDQUFnQlIsQ0FBaEIsQ0FBTixFQUF5QjdDLENBQUMsQ0FBQ3NGLE9BQUYsR0FBVWpFLENBQUMsQ0FBQ2lDLGlCQUFGLENBQW9CVCxDQUFwQixDQUFuQztBQUEwRCxHQUF6N0YsQ0FBMDdGWSxJQUExN0YsQ0FBMzFCLEVBQTJ4SCxZQUFVO0FBQUMsUUFBSWpGLENBQUMsR0FBQ0QsQ0FBTjtBQUFBLFFBQVFPLENBQUMsR0FBQ04sQ0FBQyxDQUFDWSxHQUFaO0FBQUEsUUFBZ0JGLENBQUMsR0FBQ0osQ0FBQyxDQUFDbUIsU0FBcEI7QUFBQSxRQUE4QmQsQ0FBQyxHQUFDTCxDQUFDLENBQUNpRSxNQUFsQztBQUFBLFFBQXlDMUQsQ0FBQyxHQUFDYixDQUFDLENBQUNnRixJQUE3QztBQUFBLFFBQWtEeEQsQ0FBQyxHQUFDLEVBQXBEO0FBQUEsUUFBdURhLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ2tHLElBQUYsR0FBT3BHLENBQUMsQ0FBQ0ksTUFBRixDQUFTO0FBQUMwRCxNQUFBQSxRQUFRLEVBQUMsb0JBQVU7QUFBQyxhQUFLaUIsS0FBTCxHQUFXLElBQUloRixDQUFDLENBQUNRLElBQU4sQ0FBVyxDQUFDLFVBQUQsRUFBWSxVQUFaLEVBQXVCLFVBQXZCLEVBQWtDLFNBQWxDLEVBQTRDLFVBQTVDLENBQVgsQ0FBWDtBQUErRSxPQUFwRztBQUFxR2tELE1BQUFBLGVBQWUsRUFBQyx5QkFBU3JFLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsS0FBS29GLEtBQUwsQ0FBV2hFLEtBQWpCLEVBQXVCaEIsQ0FBQyxHQUFDSixDQUFDLENBQUMsQ0FBRCxDQUExQixFQUE4QkssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBRCxDQUFqQyxFQUFxQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBRCxDQUF4QyxFQUE0QytCLENBQUMsR0FBQy9CLENBQUMsQ0FBQyxDQUFELENBQS9DLEVBQW1EdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUQsQ0FBdEQsRUFBMER1QyxDQUFDLEdBQUMsQ0FBaEUsRUFBa0VBLENBQUMsR0FBQyxFQUFwRSxFQUF1RUEsQ0FBQyxFQUF4RSxFQUEyRTtBQUFDLGNBQUdBLENBQUMsR0FBQyxFQUFMLEVBQVFyQixDQUFDLENBQUNxQixDQUFELENBQUQsR0FBSyxJQUFFOUMsQ0FBQyxDQUFDQyxDQUFDLEdBQUM2QyxDQUFILENBQVIsQ0FBUixLQUEwQjtBQUFDLGdCQUFJSyxDQUFDLEdBQUMxQixDQUFDLENBQUNxQixDQUFDLEdBQUMsQ0FBSCxDQUFELEdBQU9yQixDQUFDLENBQUNxQixDQUFDLEdBQUMsQ0FBSCxDQUFSLEdBQWNyQixDQUFDLENBQUNxQixDQUFDLEdBQUMsRUFBSCxDQUFmLEdBQXNCckIsQ0FBQyxDQUFDcUIsQ0FBQyxHQUFDLEVBQUgsQ0FBN0I7QUFBb0NyQixZQUFBQSxDQUFDLENBQUNxQixDQUFELENBQUQsR0FBS0ssQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQWQ7QUFBaUI7QUFBQSxjQUFJTyxDQUFDLEdBQUMsQ0FBQy9DLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFWLElBQWNtQixDQUFkLEdBQWdCTCxDQUFDLENBQUNxQixDQUFELENBQXZCO0FBQTJCWSxVQUFBQSxDQUFDLElBQUVaLENBQUMsR0FBQyxFQUFGLEdBQUssQ0FBQ2xDLENBQUMsR0FBQ0UsQ0FBRixHQUFJLENBQUNGLENBQUQsR0FBRzBCLENBQVIsSUFBVyxVQUFoQixHQUEyQlEsQ0FBQyxHQUFDLEVBQUYsR0FBSyxDQUFDbEMsQ0FBQyxHQUFDRSxDQUFGLEdBQUl3QixDQUFMLElBQVEsVUFBYixHQUF3QlEsQ0FBQyxHQUFDLEVBQUYsR0FBSyxDQUFDbEMsQ0FBQyxHQUFDRSxDQUFGLEdBQUlGLENBQUMsR0FBQzBCLENBQU4sR0FBUXhCLENBQUMsR0FBQ3dCLENBQVgsSUFBYyxVQUFuQixHQUE4QixDQUFDMUIsQ0FBQyxHQUFDRSxDQUFGLEdBQUl3QixDQUFMLElBQVEsU0FBNUYsRUFBc0dSLENBQUMsR0FBQ1EsQ0FBeEcsRUFBMEdBLENBQUMsR0FBQ3hCLENBQTVHLEVBQThHQSxDQUFDLEdBQUNGLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUExSCxFQUE0SEEsQ0FBQyxHQUFDRCxDQUE5SCxFQUFnSUEsQ0FBQyxHQUFDK0MsQ0FBbEk7QUFBb0k7O0FBQUFuRCxRQUFBQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0ksQ0FBTCxHQUFPLENBQVosRUFBY0osQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtLLENBQUwsR0FBTyxDQUExQixFQUE0QkwsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtPLENBQUwsR0FBTyxDQUF4QyxFQUEwQ1AsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUsrQixDQUFMLEdBQU8sQ0FBdEQsRUFBd0QvQixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS3VCLENBQUwsR0FBTyxDQUFwRTtBQUFzRSxPQUFwZ0I7QUFBcWdCK0MsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLNkQsS0FBWDtBQUFBLFlBQWlCNUQsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCcEIsQ0FBQyxHQUFDLElBQUUsS0FBS3VELFdBQXBDO0FBQUEsWUFBZ0RuRCxDQUFDLEdBQUMsSUFBRVgsQ0FBQyxDQUFDNEIsUUFBdEQ7QUFBK0QsZUFBTzNCLENBQUMsQ0FBQ1UsQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLE9BQUssS0FBR0EsQ0FBQyxHQUFDLEVBQXBCLEVBQXVCVixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEVBQUYsS0FBTyxDQUFQLElBQVUsQ0FBWCxJQUFjLEVBQWYsQ0FBRCxHQUFvQnVFLElBQUksQ0FBQzRCLEtBQUwsQ0FBV3ZHLENBQUMsR0FBQyxVQUFiLENBQTNDLEVBQW9FTixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEVBQUYsS0FBTyxDQUFQLElBQVUsQ0FBWCxJQUFjLEVBQWYsQ0FBRCxHQUFvQkosQ0FBeEYsRUFBMEZQLENBQUMsQ0FBQzRCLFFBQUYsR0FBVyxJQUFFM0IsQ0FBQyxDQUFDNEIsTUFBekcsRUFBZ0gsS0FBS21DLFFBQUwsRUFBaEgsRUFBZ0ksS0FBSzJCLEtBQTVJO0FBQWtKLE9BQTd1QjtBQUE4dUJuRSxNQUFBQSxLQUFLLEVBQUMsaUJBQVU7QUFBQyxZQUFJeEIsQ0FBQyxHQUFDWSxDQUFDLENBQUNZLEtBQUYsQ0FBUVcsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUF5QixlQUFPbkMsQ0FBQyxDQUFDMkYsS0FBRixHQUFRLEtBQUtBLEtBQUwsQ0FBV25FLEtBQVgsRUFBUixFQUEyQnhCLENBQWxDO0FBQW9DO0FBQTV6QixLQUFULENBQWhFO0FBQXc0QkMsSUFBQUEsQ0FBQyxDQUFDK0csSUFBRixHQUFPcEcsQ0FBQyxDQUFDa0UsYUFBRixDQUFnQnhDLENBQWhCLENBQVAsRUFBMEJyQyxDQUFDLENBQUNnSCxRQUFGLEdBQVdyRyxDQUFDLENBQUNtRSxpQkFBRixDQUFvQnpDLENBQXBCLENBQXJDO0FBQTRELEdBQS84QixFQUEzeEgsRUFBNnVKLFVBQVNyQyxDQUFULEVBQVc7QUFBQyxRQUFJTSxDQUFDLEdBQUNQLENBQU47QUFBQSxRQUFRVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBWjtBQUFBLFFBQWdCRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2UsU0FBcEI7QUFBQSxRQUE4QlosQ0FBQyxHQUFDSCxDQUFDLENBQUM2RCxNQUFsQztBQUFBLFFBQXlDL0MsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDMEUsSUFBN0M7QUFBQSxRQUFrRDNDLENBQUMsR0FBQyxFQUFwRDtBQUFBLFFBQXVEUixDQUFDLEdBQUMsRUFBekQ7QUFBNEQsS0FBQyxZQUFVO0FBQUMsZUFBUzlCLENBQVQsQ0FBV0EsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ2lILElBQUYsQ0FBT2xILENBQVAsQ0FBTixFQUFnQlcsQ0FBQyxHQUFDLENBQXRCLEVBQXdCQSxDQUFDLElBQUVKLENBQTNCLEVBQTZCSSxDQUFDLEVBQTlCO0FBQWlDLGNBQUcsRUFBRVgsQ0FBQyxHQUFDVyxDQUFKLENBQUgsRUFBVSxPQUFNLENBQUMsQ0FBUDtBQUEzQzs7QUFBb0QsZUFBTSxDQUFDLENBQVA7QUFBUzs7QUFBQSxlQUFTSixDQUFULENBQVdQLENBQVgsRUFBYTtBQUFDLGVBQU8sY0FBWUEsQ0FBQyxJQUFFLElBQUVBLENBQUosQ0FBYixJQUFxQixDQUE1QjtBQUE4Qjs7QUFBQSxXQUFJLElBQUlXLENBQUMsR0FBQyxDQUFOLEVBQVFDLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEdBQUMsRUFBbEI7QUFBc0JaLFFBQUFBLENBQUMsQ0FBQ1csQ0FBRCxDQUFELEtBQU9DLENBQUMsR0FBQyxDQUFGLEtBQU0wQixDQUFDLENBQUMxQixDQUFELENBQUQsR0FBS0wsQ0FBQyxDQUFDTixDQUFDLENBQUNrSCxHQUFGLENBQU14RyxDQUFOLEVBQVEsRUFBUixDQUFELENBQVosR0FBMkJtQixDQUFDLENBQUNsQixDQUFELENBQUQsR0FBS0wsQ0FBQyxDQUFDTixDQUFDLENBQUNrSCxHQUFGLENBQU14RyxDQUFOLEVBQVEsSUFBRSxDQUFWLENBQUQsQ0FBakMsRUFBZ0RDLENBQUMsRUFBeEQsR0FBNERELENBQUMsRUFBN0Q7QUFBdEI7QUFBc0YsS0FBeE4sRUFBRDtBQUE0TixRQUFJbUMsQ0FBQyxHQUFDLEVBQU47QUFBQSxRQUFTSyxDQUFDLEdBQUMxQixDQUFDLENBQUMyRixNQUFGLEdBQVN0RyxDQUFDLENBQUNFLE1BQUYsQ0FBUztBQUFDMEQsTUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQUMsYUFBS2lCLEtBQUwsR0FBVyxJQUFJL0UsQ0FBQyxDQUFDTyxJQUFOLENBQVdtQixDQUFDLENBQUNGLEtBQUYsQ0FBUSxDQUFSLENBQVgsQ0FBWDtBQUFrQyxPQUF2RDtBQUF3RGlDLE1BQUFBLGVBQWUsRUFBQyx5QkFBU3JFLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsS0FBS29GLEtBQUwsQ0FBV2hFLEtBQWpCLEVBQXVCaEIsQ0FBQyxHQUFDSixDQUFDLENBQUMsQ0FBRCxDQUExQixFQUE4QkssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBRCxDQUFqQyxFQUFxQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBRCxDQUF4QyxFQUE0Q2tCLENBQUMsR0FBQ2xCLENBQUMsQ0FBQyxDQUFELENBQS9DLEVBQW1EK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUQsQ0FBdEQsRUFBMEQ0QyxDQUFDLEdBQUM1QyxDQUFDLENBQUMsQ0FBRCxDQUE3RCxFQUFpRW1ELENBQUMsR0FBQ25ELENBQUMsQ0FBQyxDQUFELENBQXBFLEVBQXdFK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUQsQ0FBM0UsRUFBK0VxRixDQUFDLEdBQUMsQ0FBckYsRUFBdUZBLENBQUMsR0FBQyxFQUF6RixFQUE0RkEsQ0FBQyxFQUE3RixFQUFnRztBQUFDLGNBQUdBLENBQUMsR0FBQyxFQUFMLEVBQVE5QyxDQUFDLENBQUM4QyxDQUFELENBQUQsR0FBSyxJQUFFNUYsQ0FBQyxDQUFDQyxDQUFDLEdBQUMyRixDQUFILENBQVIsQ0FBUixLQUEwQjtBQUFDLGdCQUFJQyxDQUFDLEdBQUMvQyxDQUFDLENBQUM4QyxDQUFDLEdBQUMsRUFBSCxDQUFQO0FBQUEsZ0JBQWNFLENBQUMsR0FBQyxDQUFDRCxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBWCxLQUFlQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsRUFBekIsSUFBNkJBLENBQUMsS0FBRyxDQUFqRDtBQUFBLGdCQUFtREUsQ0FBQyxHQUFDakQsQ0FBQyxDQUFDOEMsQ0FBQyxHQUFDLENBQUgsQ0FBdEQ7QUFBQSxnQkFBNERJLENBQUMsR0FBQyxDQUFDRCxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsRUFBWCxLQUFnQkEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLEVBQTFCLElBQThCQSxDQUFDLEtBQUcsRUFBaEc7QUFBbUdqRCxZQUFBQSxDQUFDLENBQUM4QyxDQUFELENBQUQsR0FBS0UsQ0FBQyxHQUFDaEQsQ0FBQyxDQUFDOEMsQ0FBQyxHQUFDLENBQUgsQ0FBSCxHQUFTSSxDQUFULEdBQVdsRCxDQUFDLENBQUM4QyxDQUFDLEdBQUMsRUFBSCxDQUFqQjtBQUF3QjtBQUFBLGNBQUlLLENBQUMsR0FBQzNELENBQUMsR0FBQ2EsQ0FBRixHQUFJLENBQUNiLENBQUQsR0FBR29CLENBQWI7QUFBQSxjQUFld0MsQ0FBQyxHQUFDdkYsQ0FBQyxHQUFDQyxDQUFGLEdBQUlELENBQUMsR0FBQ0csQ0FBTixHQUFRRixDQUFDLEdBQUNFLENBQTNCO0FBQUEsY0FBNkJxRixDQUFDLEdBQUMsQ0FBQ3hGLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUFYLEtBQWVBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxFQUF6QixLQUE4QkEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLEVBQXhDLENBQS9CO0FBQUEsY0FBMkV5RixDQUFDLEdBQUMsQ0FBQzlELENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUFYLEtBQWVBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxFQUF6QixLQUE4QkEsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQXZDLENBQTdFO0FBQUEsY0FBd0grRCxDQUFDLEdBQUMvQixDQUFDLEdBQUM4QixDQUFGLEdBQUlILENBQUosR0FBTW5FLENBQUMsQ0FBQzhELENBQUQsQ0FBUCxHQUFXOUMsQ0FBQyxDQUFDOEMsQ0FBRCxDQUF0STtBQUFBLGNBQTBJVSxDQUFDLEdBQUNILENBQUMsR0FBQ0QsQ0FBOUk7QUFBZ0o1QixVQUFBQSxDQUFDLEdBQUNaLENBQUYsRUFBSUEsQ0FBQyxHQUFDUCxDQUFOLEVBQVFBLENBQUMsR0FBQ2IsQ0FBVixFQUFZQSxDQUFDLEdBQUNiLENBQUMsR0FBQzRFLENBQUYsR0FBSSxDQUFsQixFQUFvQjVFLENBQUMsR0FBQ1gsQ0FBdEIsRUFBd0JBLENBQUMsR0FBQ0YsQ0FBMUIsRUFBNEJBLENBQUMsR0FBQ0QsQ0FBOUIsRUFBZ0NBLENBQUMsR0FBQzBGLENBQUMsR0FBQ0MsQ0FBRixHQUFJLENBQXRDO0FBQXdDOztBQUFBL0YsUUFBQUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtJLENBQUwsR0FBTyxDQUFaLEVBQWNKLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLSyxDQUFMLEdBQU8sQ0FBMUIsRUFBNEJMLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLTyxDQUFMLEdBQU8sQ0FBeEMsRUFBMENQLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLa0IsQ0FBTCxHQUFPLENBQXRELEVBQXdEbEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUsrQixDQUFMLEdBQU8sQ0FBcEUsRUFBc0UvQixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzRDLENBQUwsR0FBTyxDQUFsRixFQUFvRjVDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLbUQsQ0FBTCxHQUFPLENBQWhHLEVBQWtHbkQsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUsrRCxDQUFMLEdBQU8sQ0FBOUc7QUFBZ0gsT0FBcm5CO0FBQXNuQk8sTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLNkQsS0FBWDtBQUFBLFlBQWlCdEQsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCaEIsQ0FBQyxHQUFDLElBQUUsS0FBS21ELFdBQXBDO0FBQUEsWUFBZ0RsRCxDQUFDLEdBQUMsSUFBRVosQ0FBQyxDQUFDNEIsUUFBdEQ7QUFBK0QsZUFBT3JCLENBQUMsQ0FBQ0ssQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLE9BQUssS0FBR0EsQ0FBQyxHQUFDLEVBQXBCLEVBQXVCTCxDQUFDLENBQUMsQ0FBQ0ssQ0FBQyxHQUFDLEVBQUYsS0FBTyxDQUFQLElBQVUsQ0FBWCxJQUFjLEVBQWYsQ0FBRCxHQUFvQlgsQ0FBQyxDQUFDNkcsS0FBRixDQUFRbkcsQ0FBQyxHQUFDLFVBQVYsQ0FBM0MsRUFBaUVKLENBQUMsQ0FBQyxDQUFDSyxDQUFDLEdBQUMsRUFBRixLQUFPLENBQVAsSUFBVSxDQUFYLElBQWMsRUFBZixDQUFELEdBQW9CRCxDQUFyRixFQUF1RlgsQ0FBQyxDQUFDNEIsUUFBRixHQUFXLElBQUVyQixDQUFDLENBQUNzQixNQUF0RyxFQUE2RyxLQUFLbUMsUUFBTCxFQUE3RyxFQUE2SCxLQUFLMkIsS0FBekk7QUFBK0ksT0FBMzFCO0FBQTQxQm5FLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLFlBQUl4QixDQUFDLEdBQUNjLENBQUMsQ0FBQ1UsS0FBRixDQUFRVyxJQUFSLENBQWEsSUFBYixDQUFOO0FBQXlCLGVBQU9uQyxDQUFDLENBQUMyRixLQUFGLEdBQVEsS0FBS0EsS0FBTCxDQUFXbkUsS0FBWCxFQUFSLEVBQTJCeEIsQ0FBbEM7QUFBb0M7QUFBMTZCLEtBQVQsQ0FBcEI7QUFBMDhCTyxJQUFBQSxDQUFDLENBQUM2RyxNQUFGLEdBQVN0RyxDQUFDLENBQUNnRSxhQUFGLENBQWdCM0IsQ0FBaEIsQ0FBVCxFQUE0QjVDLENBQUMsQ0FBQzhHLFVBQUYsR0FBYXZHLENBQUMsQ0FBQ2lFLGlCQUFGLENBQW9CNUIsQ0FBcEIsQ0FBekM7QUFBZ0UsR0FBOXlDLENBQSt5QytCLElBQS95QyxDQUE3dUosRUFBa2lNLFlBQVU7QUFBQyxhQUFTakYsQ0FBVCxDQUFXRCxDQUFYLEVBQWE7QUFBQyxhQUFPQSxDQUFDLElBQUUsQ0FBSCxHQUFLLFVBQUwsR0FBZ0JBLENBQUMsS0FBRyxDQUFKLEdBQU0sUUFBN0I7QUFBc0M7O0FBQUEsUUFBSU8sQ0FBQyxHQUFDUCxDQUFOO0FBQUEsUUFBUVcsQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQVo7QUFBQSxRQUFnQkQsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQXBCO0FBQUEsUUFBOEJaLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUMsR0FBbEM7QUFBc0MxQixJQUFBQSxDQUFDLENBQUN3RyxLQUFGLEdBQVF4RyxDQUFDLENBQUN5RyxPQUFGLEdBQVU7QUFBQ3hGLE1BQUFBLFNBQVMsRUFBQyxtQkFBUy9CLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFSLEVBQWNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQWxCLEVBQTJCakIsQ0FBQyxHQUFDLEVBQTdCLEVBQWdDQyxDQUFDLEdBQUMsQ0FBdEMsRUFBd0NBLENBQUMsR0FBQ0wsQ0FBMUMsRUFBNENLLENBQUMsSUFBRSxDQUEvQyxFQUFpRDtBQUFDLGNBQUlFLENBQUMsR0FBQ2IsQ0FBQyxDQUFDVyxDQUFDLEtBQUcsQ0FBTCxDQUFELEtBQVcsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFsQixHQUFvQixLQUExQjtBQUFnQ0QsVUFBQUEsQ0FBQyxDQUFDNEIsSUFBRixDQUFPUyxNQUFNLENBQUNDLFlBQVAsQ0FBb0JuQyxDQUFwQixDQUFQO0FBQStCOztBQUFBLGVBQU9ILENBQUMsQ0FBQytCLElBQUYsQ0FBTyxFQUFQLENBQVA7QUFBa0IsT0FBMUo7QUFBMkpDLE1BQUFBLEtBQUssRUFBQyxlQUFTM0MsQ0FBVCxFQUFXO0FBQUMsYUFBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzZCLE1BQVIsRUFBZXRCLENBQUMsR0FBQyxFQUFqQixFQUFvQkksQ0FBQyxHQUFDLENBQTFCLEVBQTRCQSxDQUFDLEdBQUNWLENBQTlCLEVBQWdDVSxDQUFDLEVBQWpDO0FBQW9DSixVQUFBQSxDQUFDLENBQUNJLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVVgsQ0FBQyxDQUFDa0QsVUFBRixDQUFhdkMsQ0FBYixLQUFpQixLQUFHQSxDQUFDLEdBQUMsQ0FBRixHQUFJLEVBQWxDO0FBQXBDOztBQUF5RSxlQUFPQyxDQUFDLENBQUNILE1BQUYsQ0FBU0YsQ0FBVCxFQUFXLElBQUVOLENBQWIsQ0FBUDtBQUF1QjtBQUE3USxLQUFsQjtBQUFpU2EsSUFBQUEsQ0FBQyxDQUFDMEcsT0FBRixHQUFVO0FBQUN6RixNQUFBQSxTQUFTLEVBQUMsbUJBQVMvQixDQUFULEVBQVc7QUFBQyxhQUFJLElBQUlPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMkIsS0FBUixFQUFjaEIsQ0FBQyxHQUFDWCxDQUFDLENBQUM0QixRQUFsQixFQUEyQmhCLENBQUMsR0FBQyxFQUE3QixFQUFnQ0UsQ0FBQyxHQUFDLENBQXRDLEVBQXdDQSxDQUFDLEdBQUNILENBQTFDLEVBQTRDRyxDQUFDLElBQUUsQ0FBL0MsRUFBaUQ7QUFBQyxjQUFJVyxDQUFDLEdBQUN4QixDQUFDLENBQUNNLENBQUMsQ0FBQ08sQ0FBQyxLQUFHLENBQUwsQ0FBRCxLQUFXLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBbEIsR0FBb0IsS0FBckIsQ0FBUDtBQUFtQ0YsVUFBQUEsQ0FBQyxDQUFDMkIsSUFBRixDQUFPUyxNQUFNLENBQUNDLFlBQVAsQ0FBb0J4QixDQUFwQixDQUFQO0FBQStCOztBQUFBLGVBQU9iLENBQUMsQ0FBQzhCLElBQUYsQ0FBTyxFQUFQLENBQVA7QUFBa0IsT0FBN0o7QUFBOEpDLE1BQUFBLEtBQUssRUFBQyxlQUFTM0MsQ0FBVCxFQUFXO0FBQUMsYUFBSSxJQUFJTyxDQUFDLEdBQUNQLENBQUMsQ0FBQzZCLE1BQVIsRUFBZWxCLENBQUMsR0FBQyxFQUFqQixFQUFvQkcsQ0FBQyxHQUFDLENBQTFCLEVBQTRCQSxDQUFDLEdBQUNQLENBQTlCLEVBQWdDTyxDQUFDLEVBQWpDO0FBQW9DSCxVQUFBQSxDQUFDLENBQUNHLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVWIsQ0FBQyxDQUFDRCxDQUFDLENBQUNrRCxVQUFGLENBQWFwQyxDQUFiLEtBQWlCLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksRUFBekIsQ0FBWDtBQUFwQzs7QUFBNEUsZUFBT0YsQ0FBQyxDQUFDSCxNQUFGLENBQVNFLENBQVQsRUFBVyxJQUFFSixDQUFiLENBQVA7QUFBdUI7QUFBblIsS0FBVjtBQUErUixHQUFycUIsRUFBbGlNLEVBQTBzTixZQUFVO0FBQUMsUUFBRyxjQUFZLE9BQU9rSCxXQUF0QixFQUFrQztBQUFDLFVBQUl4SCxDQUFDLEdBQUNELENBQU47QUFBQSxVQUFRTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBWjtBQUFBLFVBQWdCRixDQUFDLEdBQUNKLENBQUMsQ0FBQ21CLFNBQXBCO0FBQUEsVUFBOEJkLENBQUMsR0FBQ0QsQ0FBQyxDQUFDUSxJQUFsQztBQUFBLFVBQXVDTCxDQUFDLEdBQUNILENBQUMsQ0FBQ1EsSUFBRixHQUFPLFVBQVNuQixDQUFULEVBQVc7QUFBQyxZQUFHQSxDQUFDLFlBQVl5SCxXQUFiLEtBQTJCekgsQ0FBQyxHQUFDLElBQUkwSCxVQUFKLENBQWUxSCxDQUFmLENBQTdCLEdBQWdELENBQUNBLENBQUMsWUFBWTJILFNBQWIsSUFBd0IsZUFBYSxPQUFPQyxpQkFBcEIsSUFBdUM1SCxDQUFDLFlBQVk0SCxpQkFBNUUsSUFBK0Y1SCxDQUFDLFlBQVk2SCxVQUE1RyxJQUF3SDdILENBQUMsWUFBWThILFdBQXJJLElBQWtKOUgsQ0FBQyxZQUFZK0gsVUFBL0osSUFBMksvSCxDQUFDLFlBQVlnSSxXQUF4TCxJQUFxTWhJLENBQUMsWUFBWWlJLFlBQWxOLElBQWdPakksQ0FBQyxZQUFZa0ksWUFBOU8sTUFBOFBsSSxDQUFDLEdBQUMsSUFBSTBILFVBQUosQ0FBZTFILENBQUMsQ0FBQ21JLE1BQWpCLEVBQXdCbkksQ0FBQyxDQUFDb0ksVUFBMUIsRUFBcUNwSSxDQUFDLENBQUNxSSxVQUF2QyxDQUFoUSxDQUFoRCxFQUFvV3JJLENBQUMsWUFBWTBILFVBQXBYLEVBQStYO0FBQUMsZUFBSSxJQUFJekgsQ0FBQyxHQUFDRCxDQUFDLENBQUNxSSxVQUFSLEVBQW1COUgsQ0FBQyxHQUFDLEVBQXJCLEVBQXdCSSxDQUFDLEdBQUMsQ0FBOUIsRUFBZ0NBLENBQUMsR0FBQ1YsQ0FBbEMsRUFBb0NVLENBQUMsRUFBckM7QUFBd0NKLFlBQUFBLENBQUMsQ0FBQ0ksQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVWCxDQUFDLENBQUNXLENBQUQsQ0FBRCxJQUFNLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBdkI7QUFBeEM7O0FBQWlFQyxVQUFBQSxDQUFDLENBQUN1QixJQUFGLENBQU8sSUFBUCxFQUFZNUIsQ0FBWixFQUFjTixDQUFkO0FBQWlCLFNBQWxkLE1BQXVkVyxDQUFDLENBQUNTLEtBQUYsQ0FBUSxJQUFSLEVBQWFDLFNBQWI7QUFBd0IsT0FBM2lCOztBQUE0aUJSLE1BQUFBLENBQUMsQ0FBQ0osU0FBRixHQUFZQyxDQUFaO0FBQWM7QUFBQyxHQUF6bUIsRUFBMXNOLEVBQXN6TyxVQUFTVixDQUFULEVBQVc7QUFBQyxhQUFTTSxDQUFULENBQVdQLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCO0FBQUMsYUFBT1AsQ0FBQyxHQUFDQyxDQUFGLEdBQUlNLENBQVg7QUFBYTs7QUFBQSxhQUFTSSxDQUFULENBQVdYLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCO0FBQUMsYUFBT1AsQ0FBQyxHQUFDQyxDQUFGLEdBQUksQ0FBQ0QsQ0FBRCxHQUFHTyxDQUFkO0FBQWdCOztBQUFBLGFBQVNLLENBQVQsQ0FBV1osQ0FBWCxFQUFhQyxDQUFiLEVBQWVNLENBQWYsRUFBaUI7QUFBQyxhQUFNLENBQUNQLENBQUMsR0FBQyxDQUFDQyxDQUFKLElBQU9NLENBQWI7QUFBZTs7QUFBQSxhQUFTTyxDQUFULENBQVdkLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCO0FBQUMsYUFBT1AsQ0FBQyxHQUFDTyxDQUFGLEdBQUlOLENBQUMsR0FBQyxDQUFDTSxDQUFkO0FBQWdCOztBQUFBLGFBQVNrQixDQUFULENBQVd6QixDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQjtBQUFDLGFBQU9QLENBQUMsSUFBRUMsQ0FBQyxHQUFDLENBQUNNLENBQUwsQ0FBUjtBQUFnQjs7QUFBQSxhQUFTK0IsQ0FBVCxDQUFXdEMsQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxhQUFPRCxDQUFDLElBQUVDLENBQUgsR0FBS0QsQ0FBQyxLQUFHLEtBQUdDLENBQW5CO0FBQXFCOztBQUFBLFFBQUk2QixDQUFDLEdBQUM5QixDQUFOO0FBQUEsUUFBUThDLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2pCLEdBQVo7QUFBQSxRQUFnQnNDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBcEI7QUFBQSxRQUE4QmdDLENBQUMsR0FBQ1osQ0FBQyxDQUFDMEIsTUFBbEM7QUFBQSxRQUF5Q0YsQ0FBQyxHQUFDeEMsQ0FBQyxDQUFDbUQsSUFBN0M7QUFBQSxRQUFrRFcsQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsQ0FBRCxFQUFHLENBQUgsRUFBSyxDQUFMLEVBQU8sQ0FBUCxFQUFTLENBQVQsRUFBVyxDQUFYLEVBQWEsQ0FBYixFQUFlLENBQWYsRUFBaUIsQ0FBakIsRUFBbUIsQ0FBbkIsRUFBcUIsRUFBckIsRUFBd0IsRUFBeEIsRUFBMkIsRUFBM0IsRUFBOEIsRUFBOUIsRUFBaUMsRUFBakMsRUFBb0MsRUFBcEMsRUFBdUMsQ0FBdkMsRUFBeUMsQ0FBekMsRUFBMkMsRUFBM0MsRUFBOEMsQ0FBOUMsRUFBZ0QsRUFBaEQsRUFBbUQsQ0FBbkQsRUFBcUQsRUFBckQsRUFBd0QsQ0FBeEQsRUFBMEQsRUFBMUQsRUFBNkQsQ0FBN0QsRUFBK0QsQ0FBL0QsRUFBaUUsQ0FBakUsRUFBbUUsQ0FBbkUsRUFBcUUsRUFBckUsRUFBd0UsRUFBeEUsRUFBMkUsQ0FBM0UsRUFBNkUsQ0FBN0UsRUFBK0UsRUFBL0UsRUFBa0YsRUFBbEYsRUFBcUYsQ0FBckYsRUFBdUYsQ0FBdkYsRUFBeUYsRUFBekYsRUFBNEYsQ0FBNUYsRUFBOEYsQ0FBOUYsRUFBZ0csQ0FBaEcsRUFBa0csQ0FBbEcsRUFBb0csQ0FBcEcsRUFBc0csQ0FBdEcsRUFBd0csRUFBeEcsRUFBMkcsRUFBM0csRUFBOEcsQ0FBOUcsRUFBZ0gsRUFBaEgsRUFBbUgsQ0FBbkgsRUFBcUgsQ0FBckgsRUFBdUgsRUFBdkgsRUFBMEgsRUFBMUgsRUFBNkgsQ0FBN0gsRUFBK0gsQ0FBL0gsRUFBaUksRUFBakksRUFBb0ksQ0FBcEksRUFBc0ksRUFBdEksRUFBeUksQ0FBekksRUFBMkksQ0FBM0ksRUFBNkksRUFBN0ksRUFBZ0osRUFBaEosRUFBbUosQ0FBbkosRUFBcUosQ0FBckosRUFBdUosQ0FBdkosRUFBeUosQ0FBekosRUFBMkosQ0FBM0osRUFBNkosQ0FBN0osRUFBK0osQ0FBL0osRUFBaUssQ0FBakssRUFBbUssRUFBbkssRUFBc0ssQ0FBdEssRUFBd0ssRUFBeEssRUFBMkssRUFBM0ssRUFBOEssQ0FBOUssRUFBZ0wsQ0FBaEwsRUFBa0wsQ0FBbEwsRUFBb0wsRUFBcEwsRUFBdUwsQ0FBdkwsRUFBeUwsRUFBekwsRUFBNEwsRUFBNUwsQ0FBVCxDQUFwRDtBQUFBLFFBQThQb0YsQ0FBQyxHQUFDMUMsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsQ0FBRCxFQUFHLEVBQUgsRUFBTSxDQUFOLEVBQVEsQ0FBUixFQUFVLENBQVYsRUFBWSxDQUFaLEVBQWMsRUFBZCxFQUFpQixDQUFqQixFQUFtQixFQUFuQixFQUFzQixDQUF0QixFQUF3QixFQUF4QixFQUEyQixDQUEzQixFQUE2QixDQUE3QixFQUErQixFQUEvQixFQUFrQyxDQUFsQyxFQUFvQyxFQUFwQyxFQUF1QyxDQUF2QyxFQUF5QyxFQUF6QyxFQUE0QyxDQUE1QyxFQUE4QyxDQUE5QyxFQUFnRCxDQUFoRCxFQUFrRCxFQUFsRCxFQUFxRCxDQUFyRCxFQUF1RCxFQUF2RCxFQUEwRCxFQUExRCxFQUE2RCxFQUE3RCxFQUFnRSxDQUFoRSxFQUFrRSxFQUFsRSxFQUFxRSxDQUFyRSxFQUF1RSxDQUF2RSxFQUF5RSxDQUF6RSxFQUEyRSxDQUEzRSxFQUE2RSxFQUE3RSxFQUFnRixDQUFoRixFQUFrRixDQUFsRixFQUFvRixDQUFwRixFQUFzRixDQUF0RixFQUF3RixFQUF4RixFQUEyRixDQUEzRixFQUE2RixDQUE3RixFQUErRixFQUEvRixFQUFrRyxDQUFsRyxFQUFvRyxFQUFwRyxFQUF1RyxDQUF2RyxFQUF5RyxFQUF6RyxFQUE0RyxDQUE1RyxFQUE4RyxDQUE5RyxFQUFnSCxFQUFoSCxFQUFtSCxDQUFuSCxFQUFxSCxDQUFySCxFQUF1SCxDQUF2SCxFQUF5SCxDQUF6SCxFQUEySCxDQUEzSCxFQUE2SCxFQUE3SCxFQUFnSSxFQUFoSSxFQUFtSSxDQUFuSSxFQUFxSSxDQUFySSxFQUF1SSxFQUF2SSxFQUEwSSxDQUExSSxFQUE0SSxFQUE1SSxFQUErSSxDQUEvSSxFQUFpSixDQUFqSixFQUFtSixFQUFuSixFQUFzSixFQUF0SixFQUF5SixFQUF6SixFQUE0SixFQUE1SixFQUErSixFQUEvSixFQUFrSyxDQUFsSyxFQUFvSyxDQUFwSyxFQUFzSyxDQUF0SyxFQUF3SyxDQUF4SyxFQUEwSyxDQUExSyxFQUE0SyxDQUE1SyxFQUE4SyxDQUE5SyxFQUFnTCxFQUFoTCxFQUFtTCxFQUFuTCxFQUFzTCxDQUF0TCxFQUF3TCxDQUF4TCxFQUEwTCxDQUExTCxFQUE0TCxFQUE1TCxDQUFULENBQWhRO0FBQUEsUUFBMGNxRixDQUFDLEdBQUMzQyxDQUFDLENBQUMxQyxNQUFGLENBQVMsQ0FBQyxFQUFELEVBQUksRUFBSixFQUFPLEVBQVAsRUFBVSxFQUFWLEVBQWEsQ0FBYixFQUFlLENBQWYsRUFBaUIsQ0FBakIsRUFBbUIsQ0FBbkIsRUFBcUIsRUFBckIsRUFBd0IsRUFBeEIsRUFBMkIsRUFBM0IsRUFBOEIsRUFBOUIsRUFBaUMsQ0FBakMsRUFBbUMsQ0FBbkMsRUFBcUMsQ0FBckMsRUFBdUMsQ0FBdkMsRUFBeUMsQ0FBekMsRUFBMkMsQ0FBM0MsRUFBNkMsQ0FBN0MsRUFBK0MsRUFBL0MsRUFBa0QsRUFBbEQsRUFBcUQsQ0FBckQsRUFBdUQsQ0FBdkQsRUFBeUQsRUFBekQsRUFBNEQsQ0FBNUQsRUFBOEQsRUFBOUQsRUFBaUUsRUFBakUsRUFBb0UsQ0FBcEUsRUFBc0UsRUFBdEUsRUFBeUUsQ0FBekUsRUFBMkUsRUFBM0UsRUFBOEUsRUFBOUUsRUFBaUYsRUFBakYsRUFBb0YsRUFBcEYsRUFBdUYsQ0FBdkYsRUFBeUYsQ0FBekYsRUFBMkYsRUFBM0YsRUFBOEYsQ0FBOUYsRUFBZ0csRUFBaEcsRUFBbUcsRUFBbkcsRUFBc0csRUFBdEcsRUFBeUcsQ0FBekcsRUFBMkcsRUFBM0csRUFBOEcsQ0FBOUcsRUFBZ0gsQ0FBaEgsRUFBa0gsRUFBbEgsRUFBcUgsQ0FBckgsRUFBdUgsQ0FBdkgsRUFBeUgsRUFBekgsRUFBNEgsRUFBNUgsRUFBK0gsRUFBL0gsRUFBa0ksRUFBbEksRUFBcUksRUFBckksRUFBd0ksRUFBeEksRUFBMkksQ0FBM0ksRUFBNkksQ0FBN0ksRUFBK0ksQ0FBL0ksRUFBaUosRUFBakosRUFBb0osQ0FBcEosRUFBc0osQ0FBdEosRUFBd0osQ0FBeEosRUFBMEosQ0FBMUosRUFBNEosQ0FBNUosRUFBOEosRUFBOUosRUFBaUssQ0FBakssRUFBbUssRUFBbkssRUFBc0ssQ0FBdEssRUFBd0ssRUFBeEssRUFBMkssQ0FBM0ssRUFBNkssQ0FBN0ssRUFBK0ssRUFBL0ssRUFBa0wsRUFBbEwsRUFBcUwsQ0FBckwsRUFBdUwsRUFBdkwsRUFBMEwsRUFBMUwsRUFBNkwsRUFBN0wsRUFBZ00sRUFBaE0sRUFBbU0sQ0FBbk0sRUFBcU0sQ0FBck0sRUFBdU0sQ0FBdk0s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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/tool/Shake.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, '61affD5SO9Ipo0fGmIeTFTZ', 'Shake');
// Script/tool/Shake.js
"use strict";
/**
* 自定义抖动效果
*/
var Shake = cc.Class({
"extends": cc.Component,
properties: {
//抖动时间
duration: 0,
//X轴抖动范围
shakeX: 0,
shakeY: 0
},
shake: function shake(callback) {
if (this.shaking) {
return;
}
this.callback = callback;
this.shaking = true;
this.dtCost = 0;
this.nodeInitialPos = this.node.getPosition();
this.unschedule(this.doSchedule);
this.schedule(this.doSchedule, 0, cc.macro.REPEAT_FOREVER, 0);
},
doSchedule: function doSchedule(dt) {
var dt2 = dt * 50;
var randX = this.getRandomStrength(-this.shakeX, this.shakeX) * dt2;
var randY = this.getRandomStrength(-this.shakeY, this.shakeY) * dt2;
this.node.setPosition(cc.pAdd(this.nodeInitialPos, cc.v2(randX, randY)));
this.dtCost += dt;
if (this.dtCost >= this.duration) {
this.unschedule(this.doSchedule);
this.node.setPosition(this.nodeInitialPos);
this.shaking = false;
if (this.callback) {
this.callback();
}
}
},
//获取两个数间的随机值
getRandomStrength: function getRandomStrength(min, max) {
return Math.random() * (max - min + 1) + min;
}
});
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxTaGFrZS5qcyJdLCJuYW1lcyI6WyJTaGFrZSIsImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwiZHVyYXRpb24iLCJzaGFrZVgiLCJzaGFrZVkiLCJzaGFrZSIsImNhbGxiYWNrIiwic2hha2luZyIsImR0Q29zdCIsIm5vZGVJbml0aWFsUG9zIiwibm9kZSIsImdldFBvc2l0aW9uIiwidW5zY2hlZHVsZSIsImRvU2NoZWR1bGUiLCJzY2hlZHVsZSIsIm1hY3JvIiwiUkVQRUFUX0ZPUkVWRVIiLCJkdCIsImR0MiIsInJhbmRYIiwiZ2V0UmFuZG9tU3RyZW5ndGgiLCJyYW5kWSIsInNldFBvc2l0aW9uIiwicEFkZCIsInYyIiwibWluIiwibWF4IiwiTWF0aCIsInJhbmRvbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxLQUFLLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ2pCLGFBQVNELEVBQUUsQ0FBQ0UsU0FESztBQUdqQkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1I7QUFDQUMsSUFBQUEsUUFBUSxFQUFFLENBRkY7QUFHUjtBQUNBQyxJQUFBQSxNQUFNLEVBQUUsQ0FKQTtBQUtSQyxJQUFBQSxNQUFNLEVBQUU7QUFMQSxHQUhLO0FBV2pCQyxFQUFBQSxLQUFLLEVBQUUsZUFBVUMsUUFBVixFQUFvQjtBQUN2QixRQUFHLEtBQUtDLE9BQVIsRUFBZ0I7QUFDWjtBQUNIOztBQUNELFNBQUtELFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLElBQWY7QUFDQSxTQUFLQyxNQUFMLEdBQWMsQ0FBZDtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS0MsSUFBTCxDQUFVQyxXQUFWLEVBQXRCO0FBQ0EsU0FBS0MsVUFBTCxDQUFnQixLQUFLQyxVQUFyQjtBQUNBLFNBQUtDLFFBQUwsQ0FBYyxLQUFLRCxVQUFuQixFQUErQixDQUEvQixFQUFrQ2YsRUFBRSxDQUFDaUIsS0FBSCxDQUFTQyxjQUEzQyxFQUEyRCxDQUEzRDtBQUNILEdBckJnQjtBQXNCakJILEVBQUFBLFVBQVUsRUFBRSxvQkFBVUksRUFBVixFQUFjO0FBQ3RCLFFBQUlDLEdBQUcsR0FBR0QsRUFBRSxHQUFHLEVBQWY7QUFDQSxRQUFJRSxLQUFLLEdBQUcsS0FBS0MsaUJBQUwsQ0FBdUIsQ0FBQyxLQUFLakIsTUFBN0IsRUFBcUMsS0FBS0EsTUFBMUMsSUFBb0RlLEdBQWhFO0FBQ0EsUUFBSUcsS0FBSyxHQUFHLEtBQUtELGlCQUFMLENBQXVCLENBQUMsS0FBS2hCLE1BQTdCLEVBQXFDLEtBQUtBLE1BQTFDLElBQW9EYyxHQUFoRTtBQUNBLFNBQUtSLElBQUwsQ0FBVVksV0FBVixDQUFzQnhCLEVBQUUsQ0FBQ3lCLElBQUgsQ0FBUSxLQUFLZCxjQUFiLEVBQTZCWCxFQUFFLENBQUMwQixFQUFILENBQU1MLEtBQU4sRUFBYUUsS0FBYixDQUE3QixDQUF0QjtBQUNBLFNBQUtiLE1BQUwsSUFBZVMsRUFBZjs7QUFDQSxRQUFJLEtBQUtULE1BQUwsSUFBZSxLQUFLTixRQUF4QixFQUFrQztBQUM5QixXQUFLVSxVQUFMLENBQWdCLEtBQUtDLFVBQXJCO0FBQ0EsV0FBS0gsSUFBTCxDQUFVWSxXQUFWLENBQXNCLEtBQUtiLGNBQTNCO0FBQ0EsV0FBS0YsT0FBTCxHQUFlLEtBQWY7O0FBQ0EsVUFBRyxLQUFLRCxRQUFSLEVBQWlCO0FBQ2IsYUFBS0EsUUFBTDtBQUNIO0FBQ0o7QUFDSixHQXBDZ0I7QUFxQ2pCO0FBQ0FjLEVBQUFBLGlCQUFpQixFQUFFLDJCQUFVSyxHQUFWLEVBQWVDLEdBQWYsRUFBb0I7QUFDbkMsV0FBT0MsSUFBSSxDQUFDQyxNQUFMLE1BQWlCRixHQUFHLEdBQUdELEdBQU4sR0FBWSxDQUE3QixJQUFrQ0EsR0FBekM7QUFDSDtBQXhDZ0IsQ0FBVCxDQUFaIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog6Ieq5a6a5LmJ5oqW5Yqo5pWI5p6cXHJcbiAqL1xyXG52YXIgU2hha2UgPSBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcblxyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICAgIC8v5oqW5Yqo5pe26Ze0XHJcbiAgICAgICAgZHVyYXRpb246IDAsXHJcbiAgICAgICAgLy9Y6L205oqW5Yqo6IyD5Zu0XHJcbiAgICAgICAgc2hha2VYOiAwLFxyXG4gICAgICAgIHNoYWtlWTogMCxcclxuICAgIH0sXHJcblxyXG4gICAgc2hha2U6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xyXG4gICAgICAgIGlmKHRoaXMuc2hha2luZyl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc2hha2luZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kdENvc3QgPSAwO1xyXG4gICAgICAgIHRoaXMubm9kZUluaXRpYWxQb3MgPSB0aGlzLm5vZGUuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5kb1NjaGVkdWxlKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMuZG9TY2hlZHVsZSwgMCwgY2MubWFjcm8uUkVQRUFUX0ZPUkVWRVIsIDApO1xyXG4gICAgfSxcclxuICAgIGRvU2NoZWR1bGU6IGZ1bmN0aW9uIChkdCkge1xyXG4gICAgICAgIHZhciBkdDIgPSBkdCAqIDUwO1xyXG4gICAgICAgIHZhciByYW5kWCA9IHRoaXMuZ2V0UmFuZG9tU3RyZW5ndGgoLXRoaXMuc2hha2VYLCB0aGlzLnNoYWtlWCkgKiBkdDI7XHJcbiAgICAgICAgdmFyIHJhbmRZID0gdGhpcy5nZXRSYW5kb21TdHJlbmd0aCgtdGhpcy5zaGFrZVksIHRoaXMuc2hha2VZKSAqIGR0MjtcclxuICAgICAgICB0aGlzLm5vZGUuc2V0UG9zaXRpb24oY2MucEFkZCh0aGlzLm5vZGVJbml0aWFsUG9zLCBjYy52MihyYW5kWCwgcmFuZFkpKSk7XHJcbiAgICAgICAgdGhpcy5kdENvc3QgKz0gZHQ7XHJcbiAgICAgICAgaWYgKHRoaXMuZHRDb3N0ID49IHRoaXMuZHVyYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMuZG9TY2hlZHVsZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRQb3NpdGlvbih0aGlzLm5vZGVJbml0aWFsUG9zKTtcclxuICAgICAgICAgICAgdGhpcy5zaGFraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5Lik5Liq5pWw6Ze055qE6ZqP5py65YC8XHJcbiAgICBnZXRSYW5kb21TdHJlbmd0aDogZnVuY3Rpb24gKG1pbiwgbWF4KSB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkgKyBtaW47XHJcbiAgICB9LFxyXG59KTtcclxuIl19
//------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, '454adgphRpA6oq5lB6Cg1fK', 'Load');
// Script/Load.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, requireComponent = _a.requireComponent;
var GameData_1 = require("./GameData");
var Storage_1 = require("./Storage");
var NewClass = /** @class */ (function (_super) {
__extends(NewClass, _super);
function NewClass() {
return _super !== null && _super.apply(this, arguments) || this;
}
NewClass.prototype.start = function () {
this.Authentication();
};
//鉴权判断有无缓存userid,有的话判断是否过期没有的话重新获取userid 并且缓存上
NewClass.prototype.Authentication = function () {
var name = "user_" + GameData_1.default._instance.GM_INFO.gameId;
var data = Storage_1.StorageMessage.getStorage(name);
if (data == "undifend" || data == null || data == "") {
console.log("没缓存");
this.setUserId(name);
}
else {
console.log("有缓存");
var timestamp = parseInt(new Date().getTime() / 1000 + "");
if ((timestamp - data.time) > 86400) {
console.log("缓存过期");
this.setUserId(name);
return;
}
GameData_1.default._instance.GM_INFO.userId = parseInt(data.userId);
}
};
//设置userId,链接有获取,没有跳转授权
NewClass.prototype.setUserId = function (name) {
GameData_1.default._instance.GM_INFO.userId = this.getUserId();
if (GameData_1.default._instance.GM_INFO.userId == null) {
console.log("链接没ID准备跳转");
var url = "http://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" + location.href;
window.location.href = url;
}
else {
var timestamp = parseInt(new Date().getTime() / 1000 + "");
var idData = {
userId: GameData_1.default._instance.GM_INFO.userId + "",
time: timestamp
};
Storage_1.StorageMessage.setStorage(name, idData);
console.log("有ID", GameData_1.default._instance.GM_INFO.userId);
GameData_1.default._instance.GM_INFO.userId = parseInt(GameData_1.default._instance.GM_INFO.userId);
}
};
//获取user id 有参数为获取gameid userid 时间戳, 无参数为只获取链接尾缀上的userId
NewClass.prototype.getUserId = function () {
var pathStr = window.location.search;
var arr = pathStr.split("&");
if (pathStr.length >= 0 && arr.length > 0) {
var arr2_1 = [];
arr.map(function (item) {
arr2_1.push(item.split("=")[1]);
});
return arr2_1[0];
}
else {
return null;
}
};
//开始游戏,跳转至引导页面
NewClass.prototype.startGame = function () {
cc.director.loadScene("GuideScene");
};
//备用,用来测试跳转 指定关卡
NewClass.prototype.clickBtn = function (event, data) {
GameData_1.default._instance.GM_INFO.custom = parseInt(data);
cc.director.loadScene("GameScene");
};
//打开排行榜
NewClass.prototype.openRank = function () {
cc.director.loadScene("RankScene");
};
NewClass.prototype.update = function (dt) {
};
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNNLElBQUEsS0FBd0MsRUFBRSxDQUFDLFVBQVUsRUFBcEQsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFBLEVBQUUsZ0JBQWdCLHNCQUFpQixDQUFDO0FBQzVELHVDQUFrQztBQUNsQyxxQ0FBMkM7QUFHM0M7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBMEVBLENBQUM7SUF4RUcsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0RBQWdEO0lBQ3hDLGlDQUFjLEdBQXRCO1FBQ0ksSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDdkQsSUFBSSxJQUFJLEdBQUcsd0JBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBRyxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBQztZQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7YUFDRztZQUNBLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELElBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBQztnQkFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJ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QjtJQUFELGVBQUM7Q0ExRUQsQUEwRUMsQ0ExRXFDLEVBQUUsQ0FBQyxTQUFTLEdBMEVqRDtrQkExRW9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5LCByZXF1aXJlQ29tcG9uZW50fSA9IGNjLl9kZWNvcmF0b3I7XHJcbmltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlTWVzc2FnZSB9IGZyb20gXCIuL1N0b3JhZ2VcIjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5BdXRoZW50aWNhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v6Ym05p2D77yM5Yik5pat5pyJ5peg57yT5a2YdXNlcmlkLOacieeahOivneWIpOaWreaYr+WQpui/h+acn++8jOayoeacieeahOivnemHjeaWsOiOt+WPlnVzZXJpZCDlubbkuJTnvJPlrZjkuIpcclxuICAgIHByaXZhdGUgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBsZXQgbmFtZSA9IFwidXNlcl9cIiArIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcclxuICAgICAgICBsZXQgZGF0YSA9IFN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UobmFtZSk7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcInVuZGlmZW5kXCIgfHwgZGF0YT09bnVsbCB8fCBkYXRhID09IFwiXCIpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoee8k+WtmFwiKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRVc2VySWQobmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyJ57yT5a2YXCIpO1xyXG4gICAgICAgICAgICBsZXQgdGltZXN0YW1wID0gcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkvMTAwMCArIFwiXCIpO1xyXG4gICAgICAgICAgICBpZigodGltZXN0YW1wIC0gZGF0YS50aW1lKSA+IDg2NDAwKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi57yT5a2Y6L+H5pyfXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRVc2VySWQobmFtZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkID0gcGFyc2VJbnQoZGF0YS51c2VySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v6K6+572udXNlcklkLOmTvuaOpeacieiOt+WPlu+8jOayoeaciei3s+i9rOaOiOadg1xyXG4gICAgcHJpdmF0ZSBzZXRVc2VySWQobmFtZSl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkID0gdGhpcy5nZXRVc2VySWQoKTtcclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6ZO+5o6l5rKhSUTlh4blpIfot7PovaxcIik7XHJcbiAgICAgICAgICAgIGxldCB1cmwgPSBcImh0dHA6Ly9hcGkuc3Bhcmt1cy5jbi9hcGkvdXNlci9hdXRoL2xvZ2luP2RvbWFpbj1odWkzMjU3OVdkWVBzZ1lxJmNhbGxiYWNrPVwiK2xvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBsZXQgdGltZXN0YW1wID0gcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkvMTAwMCArIFwiXCIpO1xyXG4gICAgICAgICAgICBsZXQgaWREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgdXNlcklkOiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgKyBcIlwiLFxyXG4gICAgICAgICAgICAgICAgdGltZTogdGltZXN0YW1wXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShuYW1lLGlkRGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pyJSUTvvJpcIixHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQpO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPSBwYXJzZUludChHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v6I635Y+WdXNlciBpZCDmnInlj4LmlbDkuLrojrflj5ZnYW1laWQgdXNlcmlkIOaXtumXtOaIs++8jCDml6Dlj4LmlbDkuLrlj6rojrflj5bpk77mjqXlsL7nvIDkuIrnmoR1c2VySWRcclxuICAgIHByaXZhdGUgZ2V0VXNlcklkKCkgeyAgICBcclxuICAgICAgICBsZXQgcGF0aFN0ciA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XHJcbiAgICAgICAgbGV0IGFycj1wYXRoU3RyLnNwbGl0KFwiJlwiKTtcclxuICAgICAgICBpZiAocGF0aFN0ci5sZW5ndGg+PSAwJiZhcnIubGVuZ3RoPjApIHtcclxuICAgICAgICAgICAgbGV0IGFycjI9W107XHJcbiAgICAgICAgICAgIGFyci5tYXAoaXRlbT0+e1xyXG4gICAgICAgICAgICAgICAgYXJyMi5wdXNoKGl0ZW0uc3BsaXQoXCI9XCIpWzFdKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICByZXR1cm4gYXJyMlswXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHdWlkZVNjZW5lXCIpO1xyXG4gICAgfVxyXG4gICAgLy/lpIfnlKjvvIznlKjmnaXmtYvor5Xot7Povawg5oyH5a6a5YWz5Y2hXHJcbiAgICBjbGlja0J0bihldmVudCxkYXRhKXtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXN0b20gPSBwYXJzZUludChkYXRhKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9ICAgXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
//------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, 'b0432BA295DjIOcuitdGKO1', 'GameManager');
// Script/GameManager.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_1 = require("./GameData");
var Notification_1 = require("./Notification");
var serverAPI_1 = require("./crypto/serverAPI");
var GameManager = /** @class */ (function (_super) {
__extends(GameManager, _super);
function GameManager() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.ball = null;
_this.qiu1 = null;
_this.qiu2 = null;
_this.qiu3 = null;
_this.linePrefab = null;
_this.hit = null;
_this.bg1 = null;
_this.bg2 = null;
_this.time = null;
_this.begin = false;
_this.fuhuo = false;
_this.over = false;
_this.show = false;
_this.levelLabel = null;
return _this;
}
GameManager.prototype.onLoad = function () { };
GameManager.prototype.start = function () {
this.fit();
this.init();
};
//初始化数据
GameManager.prototype.init = function () {
this.node.getChildByName("GameOver").zIndex = 100;
this.node.getChildByName("GameOver").active = false;
this.ball.zIndex = 100;
this.bg1 = this.node.getChildByName("bg1");
this.bg2 = this.node.getChildByName("bg2");
this.time = this.node.getChildByName("Top").getChildByName("time").getComponent(cc.Label);
this.node.getChildByName("showBtn").active = false;
this.begin = false;
this.over = false;
this.fuhuo = true;
this.pause = true;
this.show = false;
this.round = 0;
this.level = 2;
this.countTime = 60;
if (GameData_1.default._instance.GM_INFO.custom != 0) {
this.level = GameData_1.default._instance.GM_INFO.custom;
// this.levelLabel.string = this.level + "";
GameData_1.default._instance.GM_INFO.custom += 1;
this.countTime = 12000000;
}
// this.levelLabel.string = this.level + "";
this.timeCount = 0.1;
this.clickNow = 0;
this.clickCount = 0;
this.timeStart = 0;
this.repeat = -1;
this.numberRepeat = -1;
this.route_Array = [];
this.moveArray = [];
this.now_Array = [];
this.ball_Array = [];
this.Pos_Array = [];
this.time_Array = [];
this.color_Array = [];
GameData_1.default._instance.GAME_DATA = [];
GameData_1.default._instance.GM_INFO.success = false;
this.startTime = 0;
this.overTime = 0;
this.winTime = 0;
GameData_1.default._instance.GM_INFO.total = 0;
GameData_1.default._instance.GM_INFO.mean_Time = 0;
this.schedule(this.updateCountDownTime, 1);
this.startGame();
};
//根据是否全面屏,做独立适配方面
GameManager.prototype.fit = function () {
this.fitTop = 450; //600
this.fitBot = -600; //-700
var jg = this.setFit();
if (!jg) {
this.fitTop = 600;
this.fitBot = -700;
}
};
//判断全面屏
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.backScene = function () {
cc.director.loadScene("LoadScene");
};
//下一关或者重新开始或者返回上一关根据level决定
GameManager.prototype.reStart = function (type) {
// if(GameData._instance.GM_INFO.custom != 0){
// cc.director.loadScene("LoadScene");
// return;
// }
this.node.getChildByName("showBtn").active = false;
this.destroyLine();
this.timeCount = 0.1;
this.clickNow = 0;
this.timeStart = 0;
this.repeat = -1;
this.numberRepeat = -1;
this.begin = false;
this.route_Array = [];
this.now_Array = [];
this.ball_Array = [];
this.Pos_Array = [];
this.moveArray = [];
this.time_Array = [];
this.color_Array = [];
if (type == 0) {
this.bgMove(1);
}
else if (type == 1) {
this.startGame();
}
else if (type == 2) {
this.bgMove(-1);
}
};
//获取时间戳
GameManager.prototype.getTime = function () {
var timestamp = new Date().getTime();
return timestamp;
};
//获胜
GameManager.prototype.passLevel = function () {
var _this = this;
this.destroyLine();
if (this.over == false && this.countTime >= 0) {
var timeArray_1 = [];
var timeCount = 0;
var ball_1 = this.ball_Array[0];
for (var i = 1; i < this.ball_Array.length; i++) {
var time = this.calculateDistance(this.ball_Array[i].x, this.ball_Array[i].y, this.ball_Array[i - 1].x, this.ball_Array[i - 1].y, 2);
timeArray_1.push(time);
}
var _loop_1 = function (k) {
setTimeout(function () {
cc.tween(ball_1)
.to(timeArray_1[k - 1], { x: _this.ball_Array[k].x, y: _this.ball_Array[k].y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
setTimeout(function () {
_this.ball.opacity = 255;
_this.ball.position = cc.v3(ball_1.x, ball_1.y, 0);
ball_1.active = false;
_this.clearSun();
_this.reStart(0);
}, 200);
}
})
.start();
}, timeCount * 1000);
timeCount += (timeArray_1[k - 1] + 0.1);
};
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_1(k);
}
}
};
//失败
GameManager.prototype.loseLevel = function (type) {
var _this = this;
this.destroyLine();
if (this.over == false && this.countTime >= 0) {
var ball_2 = this.ball_Array[0];
var _loop_2 = function (k) {
cc.tween(this_1.ball_Array[k])
.to(2, { x: ball_2.x, y: ball_2.y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
_this.ball.opacity = 255;
_this.ball.position = cc.v3(ball_2.x, ball_2.y, 0);
_this.clearSun();
_this.reStart(type);
}
})
.start();
};
var this_1 = this;
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_2(k);
}
}
};
//清理太阳
GameManager.prototype.clearSun = function () {
for (var k = 0; k < this.ball_Array.length; k++) {
this.ball_Array[k].removeFromParent();
this.ball_Array[k] = null;
}
};
//点击太阳执行方法
GameManager.prototype.clickSun = function (data) {
var _this = this;
if (this.begin == true) {
this.clickCount += 1;
var clickTime = this.getTime();
this.time_Array.push((clickTime - this.timeStart));
this.timeStart = this.getTime();
if (data == this.clickNow) {
GameData_1.default._instance.AudioManager.playAudioButton();
if (this.clickNow > 0) {
this.createLine(cc.v2(this.ball_Array[this.clickNow - 1].x, this.ball_Array[this.clickNow - 1].y), cc.v2(this.ball_Array[this.clickNow].x, this.ball_Array[this.clickNow].y), 0.2);
}
this.clickNow += 1;
if (this.ball_Array[this.clickNow - 1])
this.ball_Array[this.clickNow - 1].getChildByName("guang").active = false;
if (this.clickNow == this.now_Array.length) {
this.pause = true;
GameData_1.default._instance.GM_INFO.total += this.clickNow;
this.overTime = this.getTime();
if (this.startTime > 0 && this.overTime > 0) {
GameData_1.default._instance.GM_INFO.mean_Time += (this.overTime - this.startTime);
}
var finish_time = parseInt((this.overTime - this.startTime) / 100 + "");
this.startTime = 0;
this.overTime = 0;
var color = "y";
if (this.level < 4 && this.level > 1)
color = "yr";
else if (this.level >= 4)
color = "yrb";
var win_1 = this.node.getChildByName("Win");
win_1.active = true;
win_1.setScale(0);
GameData_1.default._instance.AudioManager.playWin();
this.round += 1;
var sunArray = [];
if (this.moveArray.length > 0) {
for (var m = 0; m < this.moveArray.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
this.moveArray[m] = 2;
}
sunArray.push(this.moveArray[m]);
}
}
else {
for (var m = 0; m < this.ball_Array.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
sunArray.push(2);
}
else
sunArray.push(0);
}
}
GameData_1.default._instance.CLICK_DATA =
{
type: 1,
success: true,
round: this.round,
totalSunCount: this.now_Array.length,
movedSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveNumber,
sunSpeed: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveSpeed,
overlapSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].repeat,
colorList: this.color_Array,
duration: finish_time / 10,
difficultyLevel: this.level,
sunList: sunArray,
stepTimeList: this.time_Array,
remainder: this.countTime
};
this.setData();
cc.tween(win_1)
.delay(0.4)
.to(0.01, { scale: 2.5 })
.to(0.35, { scale: 1 })
.delay(0.4)
.call(function () {
win_1.active = false;
_this.destroyLine();
if (_this.over == false && _this.countTime >= 0) {
if (_this.level >= 15) {
GameData_1.default._instance.GM_INFO.success = true;
_this.level += 0;
// this.levelLabel.string = this.level + "";
_this.fuhuo = true;
_this.passLevel();
}
else {
_this.level += 1;
// this.levelLabel.string = this.level + "";
_this.fuhuo = true;
_this.passLevel();
}
}
})
.start();
}
}
else {
this.setLoss();
}
}
};
//执行失败
GameManager.prototype.setLoss = function () {
GameData_1.default._instance.AudioManager.playWarning();
this.begin = false;
this.overTime = this.getTime();
if (this.startTime > 0 && this.overTime > 0) {
GameData_1.default._instance.GM_INFO.mean_Time += (this.overTime - this.startTime);
}
var finish_time = parseInt((this.overTime - this.startTime) / 100 + "");
this.startTime = 0;
this.overTime = 0;
var color = "y";
if (this.level < 4 && this.level > 1)
color = "yr";
else if (this.level >= 4)
color = "yrb";
this.round += 1;
var sunArray = [];
if (this.moveArray.length > 0) {
for (var m = 0; m < this.moveArray.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
this.moveArray[m] = 2;
}
sunArray.push(this.moveArray[m]);
}
}
else {
for (var m = 0; m < this.ball_Array.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
sunArray.push(2);
}
else
sunArray.push(0);
}
}
GameData_1.default._instance.CLICK_DATA =
{
type: 1,
success: false,
round: this.round,
totalSunCount: this.now_Array.length,
movedSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveNumber,
sunSpeed: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveSpeed,
overlapSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].repeat,
colorList: this.color_Array,
duration: finish_time / 10,
difficultyLevel: this.level,
sunList: sunArray,
stepTimeList: this.time_Array,
remainder: this.countTime
};
this.setData();
if (this.fuhuo == true) {
this.fuhuo = false;
this.loseLevel(1);
}
else {
if (this.level > 2) {
this.level -= 1;
// this.levelLabel.string = this.level + "";
this.fuhuo = true;
// this.fuhuo = false;
this.loseLevel(2);
}
else {
this.loseLevel(1);
}
}
var over = this.node.getChildByName("Over");
cc.tween(over)
.to(0.25, { opacity: 255 })
.delay(0.1)
.to(0.2, { opacity: 0 })
.delay(0.1)
.to(0.15, { opacity: 255 })
.delay(0.1)
.to(0.1, { opacity: 0 })
.start();
};
//开始游戏
GameManager.prototype.startGame = function () {
if (this.over == false && this.countTime > 0) {
this.pause = true;
this.createSun();
this.begin = false;
cc.tween(this.ball)
.to(0.5, { opacity: 255, scale: 1.3 })
.start();
}
};
//执行太阳运行动画,以及后面移动动画
GameManager.prototype.runGame = function () {
var _this = this;
var time = -650;
var _loop_3 = function (i) {
time = this_2.now_Array[i].time * 1000 + time;
setTimeout(function () {
if (_this.over == false) {
var temp = _this.now_Array[i].timeCount;
if (temp > 0.5)
temp = 0.5;
if (i != 0) {
if (_this.ball && _this.now_Array[i]) {
_this.createLine(cc.v2(_this.ball.x, _this.ball.y), cc.v2(_this.now_Array[i].x, _this.now_Array[i].y), _this.now_Array[i].time - temp);
}
}
cc.tween(_this.ball)
.to(_this.now_Array[i].time - temp, { x: _this.now_Array[i].x, y: _this.now_Array[i].y })
.to(0.1, { scale: 1 })
.call(function () {
_this.createBall(i, _this.now_Array[i].color, _this.now_Array[i].speed, _this.now_Array[i].repeat);
if (i == _this.now_Array.length - 1) {
_this.ball.opacity = 0;
setTimeout(function () {
_this.destroyLine();
_this.beginGame();
if (GameData_1.default._instance.LEVEL_INFO[_this.level - 1].moveNumber < 1) {
_this.pause = false;
}
else {
_this.moveAction();
}
}, 150);
}
})
.start();
}
}, time);
};
var this_2 = this;
for (var i = 0; i < this.now_Array.length; i++) {
_loop_3(i);
}
};
//设置移动重叠数据
GameManager.prototype.createMove = function () {
var _this = this;
if (this.over == false) {
var info = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
//改变移动速度
var speed = 7;
if (info.moveSpeed >= 2) {
speed = 7 - info.moveSpeed / 2;
}
if (info.repeat == 1) {
this.repeat = parseInt((Math.random() * (info.number - 1) + 1) + "");
var tempNumber = 0;
// this.repeat = 4;
if (this.repeat > 4) {
this.numberRepeat = parseInt(Math.random() * 4 + "");
if (this.repeat == (info.number - 1)) //如果是最后一个 不能跟第一个重叠
this.numberRepeat = this.repeat - parseInt((Math.random() * 3 + 2) + "");
tempNumber = this.Pos_Array[this.numberRepeat];
this.Pos_Array[this.repeat] = tempNumber;
}
else { // 0 1 2 3 4 5
// 6 - 3 - 1 = 2 4 01 4
if (this.repeat == 0)
this.repeat = 1;
if ((info.number - 1 - this.repeat) == 2) {
this.numberRepeat = info.number - 1;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else if ((info.number - 1 - this.repeat) == 1) {
this.numberRepeat = this.repeat - 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else if ((info.number - 1 - this.repeat) == 0) {
this.numberRepeat = this.repeat - 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else if ((info.number - 1 - this.repeat) > 2) {
this.numberRepeat = parseInt(Math.random() * (info.number - this.repeat - 2) + "") + this.repeat + 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else {
this.numberRepeat = this.repeat - 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
this.Pos_Array[this.repeat] = tempNumber;
}
}
if (info.moveNumber > 0) {
//0 1 2 3 4 5 6 7 8 9
//可移动区分
var pos_1 = cc.v2(0, 0);
for (var z = 0; z < info.number; z++) {
this.moveArray[z] = 0;
}
for (var p = 0; p < info.moveNumber; p++) {
this.moveArray[info.number - 1 - p] = 1;
}
var timeOut = 0;
//打乱可移动顺序
this.moveArray.sort(function () { return Math.random() - 0.5; });
if (this.moveArray[0] == 1) {
for (var r = info.number - 1; r >= 0; r--) {
if (this.moveArray[r] == 0) {
this.moveArray[r] = 1;
this.moveArray[0] = 0;
r = -1;
}
}
}
//将重叠的设置为不可移动 1 1 1 1 0 0 1 0 0 0 / 2 7
for (var k = 0; k < this.moveArray.length; k++) {
if (this.moveArray[k] == 1 && (k == this.repeat || k == this.numberRepeat)) {
for (var m = this.moveArray.length - 1; m >= 0; m--) {
if (m != k && this.moveArray[m] == 0 && m != this.repeat && m != this.numberRepeat) {
this.moveArray[m] = 1;
this.moveArray[k] = 0;
m = -1;
}
}
}
}
var _loop_4 = function (i) {
if (this_3.moveArray[i] == 1) {
timeOut += 1;
setTimeout(function () {
pos_1 = _this.getPos2(true, i);
_this.Pos_Array[i] = pos_1;
}, timeOut * 300);
}
};
var this_3 = this;
for (var i = 0; i < this.Pos_Array.length; i++) {
_loop_4(i);
}
}
}
};
//移动后数据 重新刷一遍赋值
GameManager.prototype.updateArray = function () {
for (var i = 0; i < this.now_Array.length - 1; i++) {
this.now_Array[i].x = this.Pos_Array[i].x;
this.now_Array[i].y = this.Pos_Array[i].y;
}
};
//太阳初始化后移动方法
GameManager.prototype.moveAction = function () {
var _this = this;
this.updateArray();
var moveArray = this.moveArray;
var info = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
//改变移动速度
var speed = 7;
if (info.moveSpeed >= 2) {
speed = 7 - info.moveSpeed / 2;
}
if (info.moveNumber > 0) {
//0 1 2 3 4 5 6 7 8 9
//可移动区分
//将重叠的设置为不可移动 1 1 1 1 0 0 1 0 0 0 / 2 7
for (var k = 0; k < this.moveArray.length; k++) {
if (this.moveArray[k] == 1 && (k == this.repeat || k == this.numberRepeat)) {
for (var m = this.moveArray.length - 1; m >= 0; m--) {
if (m != k && this.moveArray[m] == 0 && m != this.repeat && m != this.numberRepeat) {
this.moveArray[m] = 1;
this.moveArray[k] = 0;
m = -1;
}
}
}
}
var lastNumber = 0;
//锁定最后一个可移动的
for (var j = 0; j < moveArray.length; j++) {
if (moveArray[j] == 1) {
lastNumber = j;
}
}
var _loop_5 = function (i) {
if (moveArray[i] == 1) {
if (i != lastNumber) { //如果不是最后一个移动的
var time = speed * this_4.calculateDistance(this_4.ball_Array[i].x, this_4.ball_Array[i].y, this_4.Pos_Array[i].x, this_4.Pos_Array[i].y, 3);
this_4.ball_Array[i].getComponent("Sun").move = true;
cc.tween(this_4.ball_Array[i])
.to(time, { position: this_4.Pos_Array[i] })
.call(function () {
_this.ball_Array[i].getComponent("Sun").move = false;
})
.start();
}
//如果是最后一个
else {
var time = speed * this_4.calculateDistance(this_4.ball_Array[i].x, this_4.ball_Array[i].y, this_4.Pos_Array[i].x, this_4.Pos_Array[i].y, 3);
this_4.ball_Array[i].getComponent("Sun").move = true;
cc.tween(this_4.ball_Array[i])
.to(time, { position: this_4.Pos_Array[i] })
.call(function () {
_this.ball_Array[i].getComponent("Sun").move = false;
})
.start();
}
}
};
var this_4 = this;
for (var i = 0; i < this.ball_Array.length; i++) {
_loop_5(i);
}
}
};
//每次重新开始新一轮儿游戏
GameManager.prototype.beginGame = function () {
this.begin = true;
this.startTime = this.getTime();
this.timeStart = this.getTime();
this.pause = false;
// this.node.getChildByName("showBtn").active = true;
};
//暂时作废
// getRandomArray(lastNumber){
// let num = parseInt(Math.random()*8 - 4 + "");
// let jg = num + lastNumber;
// if(num > 1 || num <-1){
// if( num == 0 || ( jg<0 || jg >= this.Pos_Array.length)){
// jg = this.getRandomArray(lastNumber);
// }
// }
// else{
// jg = this.getRandomArray(lastNumber);
// }
// return jg;
// }
//创建太阳所需数据
GameManager.prototype.createSun = function () {
var _this = this;
var levelData = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
var tiemOut = 0;
var _loop_6 = function (l) {
tiemOut += 1;
setTimeout(function () {
if (_this.over == false) {
var pos = _this.getPos(false, l);
_this.Pos_Array.push(pos);
if (_this.Pos_Array.length == levelData.number) {
_this.createMove();
_this.createPos();
}
}
}, tiemOut * 100);
};
for (var l = 0; l < levelData.number; l++) {
_loop_6(l);
}
};
//创建太阳位置,颜色信息等数据
GameManager.prototype.createPos = function () {
var data = { x: this.ball.x, y: this.ball.y, time: 0, timeCount: 0, color: 0, speed: 0, repeat: false };
var levelData = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
//颜色区分
var colorArray = [0, 1];
for (var j = 0; j < levelData.number - 2; j++) {
var colorTemp = parseInt(Math.random() * 3 + "");
if (levelData.number < 6 && colorTemp == 2)
colorTemp = 0;
colorArray.push(colorTemp);
colorArray.sort(function () { return Math.random() - 0.5; });
}
colorArray.sort(function () { return Math.random() - 0.5; });
if (levelData.number == 4)
colorArray = [0, 0, 0, 0];
this.color_Array = colorArray;
//存储太阳数据
for (var i = 0; i < levelData.number; i++) {
var timeCount = this.timeCount + (0.6 - this.calculateDistance(this.ball.x, this.ball.y, this.Pos_Array[i].x, this.Pos_Array[i].y, 1));
var time = this.calculateDistance(this.ball.x, this.ball.y, this.Pos_Array[i].x, this.Pos_Array[i].y, 1) + timeCount;
data = { x: this.Pos_Array[i].x, y: this.Pos_Array[i].y, time: time, timeCount: timeCount, color: colorArray[i], speed: levelData.moveSpeed, repeat: false };
if (this.repeat == i) {
data.repeat = true;
}
else if (this.numberRepeat == i) {
data.repeat = true;
}
this.now_Array.push(data);
}
this.runGame();
};
//获取N个太阳位置的方法和POS2分开两个方法防止递归溢出
GameManager.prototype.getPos = function (type, num) {
var posX = Math.random() * 620 - 310;
var posY = Math.random() * (this.fitTop - this.fitBot) + this.fitBot;
var point = cc.v2(posX, posY);
if (this.Pos_Array.length > 0) {
for (var i = 0; i < this.Pos_Array.length; i++) {
var distance = false;
var pd = false;
if (i == num)
pd = true;
distance = this.getDistance(posX, posY, this.Pos_Array[i].x, this.Pos_Array[i].y, pd);
if (distance == false) {
i = 10000;
point = this.getPos(type, num);
}
if (distance == true && i == (this.Pos_Array.length - 1)) {
i = 10000;
}
}
}
return point;
};
//获取N个太阳可移动位置的方法和POS分开算防止递归溢出
GameManager.prototype.getPos2 = function (type, num) {
var posX = Math.random() * 620 - 310;
var posY = Math.random() * (this.fitTop - this.fitBot) + this.fitBot;
var point = cc.v2(posX, posY);
if (this.Pos_Array.length > 0) {
for (var i = 0; i < this.Pos_Array.length; i++) {
var distance = false;
var pd = false;
if (i == num)
pd = true;
distance = this.getDistance2(posX, posY, this.Pos_Array[i].x, this.Pos_Array[i].y, pd);
if (distance == false) {
i = 10000;
point = this.getPos2(type, num);
}
if (distance == true && i == (this.Pos_Array.length - 1)) {
i = 10000;
}
}
}
return point;
};
//获取两点之间距离,返回判断是否在一定范围内 将来提出到工具类
GameManager.prototype.getDistance = function (x1, y1, x2, y2, num) {
var jg = false;
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 160) {
if (num == true) {
if (distance < GameData_1.default._instance.LEVEL_INFO[this.level - 1].maxMove) {
jg = true;
}
else
jg = false;
}
else {
if (distance < GameData_1.default._instance.LEVEL_INFO[this.level - 1].maxMove) {
jg = true;
}
else
jg = false;
}
}
return jg;
};
//命中动画
GameManager.prototype.hitAction = function (data) {
var _this = this;
this.hit.active = true;
this.hit.opacity = 0;
this.hit.setPosition;
this.hit.setPosition(this.ball_Array[data].x + 35, this.ball_Array[data].y + 35);
cc.tween(this.hit)
.to(0, { opacity: 255 })
.to(0.2, { position: cc.v3(this.hit.x - 35, this.hit.y - 35, 0) })
.delay(0.2)
.to(0.1, { opacity: 0 })
.call(function () {
_this.hit.active = false;
})
.start();
};
//创造太阳
GameManager.prototype.createBall = function (number, color, speed, repeat) {
var ball = null;
if (color == 0)
ball = cc.instantiate(this.qiu1);
else if (color == 1)
ball = cc.instantiate(this.qiu2);
else if (color == 2)
ball = cc.instantiate(this.qiu3);
ball.parent = this.node.getChildByName("Sun");
ball.zIndex = this.now_Array.length - number;
ball.setPosition(this.ball.x, this.ball.y);
ball.getComponent("Sun").init(number, color, speed, repeat);
this.ball_Array.push(ball);
};
//销毁连线
GameManager.prototype.destroyLine = function () {
for (var i = 0; i < this.node.getChildByName("Line").children.length; i++) {
if (this.node.getChildByName("Line").children[i]) {
this.node.getChildByName("Line").children[i].removeFromParent();
this.node.getChildByName("Line").children[i] = null;
}
}
this.node.getChildByName("Line").removeAllChildren();
};
//创建连线
GameManager.prototype.createLine = function (start, end, time) {
var line = cc.instantiate(this.linePrefab);
line.parent = this.node.getChildByName("Line");
line.setPosition(start.x, start.y);
var dx = end.x - start.x;
var dy = end.y - start.y;
var distance = Math.sqrt(dx * dx + dy * dy);
line.height = distance;
line.getComponent(cc.Sprite).fillRange = 0;
line.angle = -this.calculateAngle(start.x, start.y, end.x, end.y);
cc.tween(line.getComponent(cc.Sprite))
.to(time, { fillRange: 1 })
.start();
};
//获取两点之间的角度,将来都可放工具类
GameManager.prototype.calculateAngle = function (x1, y1, x2, y2) {
var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI - 90;
return -angle;
};
//获取两点之间的距离 返回对应时间
GameManager.prototype.calculateDistance = function (x1, y1, x2, y2, num) {
var dx = x2 - x1;
var dy = y2 - y1;
var time = 0;
var distance = Math.sqrt(dx * dx + dy * dy);
if (num == 1) {
if (distance > 800)
distance = 800;
time = distance / 800 * 0.6;
}
else if (num == 2) {
if (distance > 1200)
distance = 1200;
time = distance / 1200 * 1;
}
else if (num == 3) {
if (distance > 1200)
distance = 1200;
time = distance / 1200 * 1.5;
}
return time;
};
//获取两点之间距离 返回距离判断
GameManager.prototype.getDistance2 = function (x1, y1, x2, y2, num) {
var jg = false;
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 160) {
if (num == true) {
if (distance < GameData_1.default._instance.LEVEL_INFO[this.level - 1].maxDistance)
jg = true;
else
jg = false;
}
else {
jg = true;
}
}
return jg;
};
//背景移动
GameManager.prototype.bgMove = function (type) {
var _this = this;
var random = Math.random() * 300 + 300;
var posX = Math.random() * 600 - 300;
var y1 = this.bg1.y - random * type;
var time1 = 0.7 * (random / 400);
cc.tween(this.ball)
.to(0.3, { scale: 1.3 })
.to(time1, { x: posX })
.start();
cc.tween(this.bg1)
.delay(0.3)
.to(time1, { y: y1 })
.start();
setTimeout(function () {
if (_this.over == false)
_this.startGame();
}, time1 * 1500);
};
//时间格式转换
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.updateCountDownTime = function () {
if (this.countTime > 0 && this.pause == false) {
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();
var over = this.node.getChildByName("Over");
cc.tween(over)
.to(0.2, { opacity: 255 })
.delay(0.1)
.to(0.2, { opacity: 0 })
.start();
}
if (this.countTime <= 0) {
this.begin = false;
this.over = true;
this.unschedule(this.updateCountDownTime);
this.setLoss();
var time = 0;
if (this.clickCount > 0)
time = parseInt(GameData_1.default._instance.GM_INFO.mean_Time / this.clickCount + "");
GameData_1.default._instance.GM_INFO.mean_Time = parseInt(time / 100 + "");
GameData_1.default._instance.GM_INFO.mean_Time = GameData_1.default._instance.GM_INFO.mean_Time / 10;
if (time > 10000)
time = (Math.random() * 10 + 5) * 100;
this.setRank(time);
}
}
};
//上传每次操作数据
GameManager.prototype.setData = function () {
GameData_1.default._instance.GAME_DATA = [];
GameData_1.default._instance.GAME_DATA.push(GameData_1.default._instance.CLICK_DATA);
GameData_1.default._instance.CLICK_init();
var data = GameData_1.default._instance.GAME_DATA;
var matchId = this.getMatchId();
console.log(matchId);
var postData = {
"matchId": matchId,
"data": data
};
console.log("上传数据:");
serverAPI_1.default.uploadUserLogData(postData, function () { });
};
//获取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.round == 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.setRank = function (time) {
var postData = {
"type": 1,
"reactionTime": time,
"totalSunCount": GameData_1.default._instance.GM_INFO.total,
"success": GameData_1.default._instance.GM_INFO.success
};
serverAPI_1.default.rankData(1, function () { }, postData);
this.node.getChildByName("GameOver").active = true;
this.node.getChildByName("GameOver").opacity = 0;
cc.tween(this.node.getChildByName("GameOver"))
.to(0.4, { opacity: 255 })
.delay(2)
.to(0.4, { opacity: 50 })
.call(function () {
cc.director.loadScene("OverScene");
})
.start();
};
//作弊,测试用
GameManager.prototype.showNumber = function () {
if (this.show == false)
this.show = true;
else if (this.show == true)
this.show = false;
for (var i = 0; i < this.ball_Array.length; i++) {
this.ball_Array[i].getComponent("Sun").showNumber(this.show);
}
};
GameManager.prototype.onEnable = function () {
Notification_1.Notification.on("clickSun", this.clickSun, this);
};
GameManager.prototype.onDisable = function () {
Notification_1.Notification.off("clickSun", this.clickSun);
};
GameManager.prototype.update = function (dt) {
};
__decorate([
property(cc.Node)
], GameManager.prototype, "ball", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "qiu1", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "qiu2", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "qiu3", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "linePrefab", void 0);
__decorate([
property(cc.Node)
], GameManager.prototype, "hit", void 0);
__decorate([
property(cc.Label)
], GameManager.prototype, "levelLabel", void 0);
GameManager = __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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTO0FBQ0gsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFDMUMsdUNBQWtDO0FBQ2xDLCtDQUE4QztBQUM5QyxnREFBMEM7QUFFMUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFpL0JDO1FBLytCRyxVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBYyxJQUFJLENBQUM7UUFFdkIsVUFBSSxHQUFjLElBQUksQ0FBQztRQUV2QixVQUFJLEdBQWMsSUFBSSxDQUFDO1FBRXZCLGdCQUFVLEdBQWMsSUFBSSxDQUFDO1FBRTdCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFDcEIsU0FBRyxHQUFZLElBQUksQ0FBQztRQUNwQixTQUFHLEdBQVksSUFBSSxDQUFDO1FBQ3BCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFDdEIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFVBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsVUFBSSxHQUFZLEtBQUssQ0FBQztRQW9CdEIsZ0JBQVUsR0FBYSxJQUFJLENBQUM7O0lBMDhCaEMsQ0FBQztJQW44QkcsNEJBQU0sR0FBTixjQUFXLENBQUM7SUFDWiwyQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPO0lBQ1AsMEJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMs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QVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDOzZDQUNHO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7bURBQ1M7SUFFN0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs0Q0FDRTtJQTJCcEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzttREFDUztJQXZDWCxXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBaS9CL0I7SUFBRCxrQkFBQztDQWovQkQsQUFpL0JDLENBai9Cd0MsRUFBRSxDQUFDLFNBQVMsR0FpL0JwRDtrQkFqL0JvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5Li75ri45oiP5o6n5Yi257G7XHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5pbXBvcnQgR2FtZURhdGEgZnJvbSAnLi9HYW1lRGF0YSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IEh0dHBVdGlsIGZyb20gJy4vY3J5cHRvL3NlcnZlckFQSSc7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgYmFsbDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgcWl1MTogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBxaXUyOiBjYy5QcmVmYWIgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHFpdTM6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgbGluZVByZWZhYjogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGl0OiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGJnMTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBiZzI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgdGltZTogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgYmVnaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGZ1aHVvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBvdmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzaG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBjb3VudFRpbWU6bnVtYmVyO1xyXG4gICAgdGltZUNvdW50Om51bWJlcjtcclxuICAgIGZpdFRvcDpudW1iZXI7XHJcbiAgICBmaXRCb3Q6bnVtYmVyO1xyXG4gICAgbGV2ZWw6bnVtYmVyO1xyXG4gICAgY2xpY2tOb3c6bnVtYmVyO1xyXG4gICAgc3RhcnRUaW1lOm51bWJlcjtcclxuICAgIG92ZXJUaW1lOm51bWJlcjtcclxuICAgIHdpblRpbWU6bnVtYmVyO1xyXG4gICAgY2xpY2tDb3VudDpudW1iZXI7XHJcbiAgICB0aW1lU3RhcnQ6bnVtYmVyO1xyXG4gICAgcm91dGVfQXJyYXk6IGFueVtdO1xyXG4gICAgbm93X0FycmF5OiBhbnlbXTtcclxuICAgIGJhbGxfQXJyYXk6IGFueVtdO1xyXG4gICAgTGluZV9BcnJheTogYW55W107XHJcbiAgICBQb3NfQXJyYXk6IGFueVtdO1xyXG4gICAgdGltZV9BcnJheTogYW55W107XHJcbiAgICBjb2xvcl9BcnJheTogYW55W107XHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsZXZlbExhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICBtb3ZlQXJyYXk6IG51bWJlcltdO1xyXG4gICAgcmVwZWF0OiBudW1iZXI7XHJcbiAgICBudW1iZXJSZXBlYXQ6IG51bWJlcjtcclxuICAgIHJvdW5kOiBudW1iZXI7XHJcbiAgICBwYXVzZTogYm9vbGVhbjtcclxuICAgIG9uTG9hZCAoKSB7fVxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuZml0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluaVsOaNrlxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVPdmVyXCIpLnpJbmRleCA9IDEwMDtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lT3ZlclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmJhbGwuekluZGV4ID0gMTAwO1xyXG4gICAgICAgIHRoaXMuYmcxID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmcxXCIpO1xyXG4gICAgICAgIHRoaXMuYmcyID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmcyXCIpO1xyXG4gICAgICAgIHRoaXMudGltZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlRvcFwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJzaG93QnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYmVnaW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm92ZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZ1aHVvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdW5kID0gMDsgXHJcbiAgICAgICAgdGhpcy5sZXZlbCA9IDI7XHJcbiAgICAgICAgdGhpcy5jb3VudFRpbWUgPSA2MDtcclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXN0b20gIT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubGV2ZWwgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXN0b207XHJcbiAgICAgICAgICAgIC8vIHRoaXMubGV2ZWxMYWJlbC5zdHJpbmcgPSB0aGlzLmxldmVsICsgXCJcIjtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VzdG9tICs9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRUaW1lID0gMTIwMDAwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMubGV2ZWxMYWJlbC5zdHJpbmcgPSB0aGlzLmxldmVsICsgXCJcIjtcclxuICAgICAgICB0aGlzLnRpbWVDb3VudCA9IDAuMTtcclxuICAgICAgICB0aGlzLmNsaWNrTm93ID0gMDtcclxuICAgICAgICB0aGlzLmNsaWNrQ291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMudGltZVN0YXJ0ID0gMDtcclxuICAgICAgICB0aGlzLnJlcGVhdCA9IC0xO1xyXG4gICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gLTE7XHJcbiAgICAgICAgdGhpcy5yb3V0ZV9BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubW92ZUFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5ub3dfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmJhbGxfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLlBvc19BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMudGltZV9BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29sb3JfQXJyYXkgPSBbXTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR0FNRV9EQVRBID0gW107XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uc3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcclxuICAgICAgICB0aGlzLm92ZXJUaW1lID0gMDtcclxuICAgICAgICB0aGlzLndpblRpbWUgPSAwO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnRvdGFsID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUgPSAwO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVDb3VudERvd25UaW1lLDEpO1xyXG4gICAgICAgIHRoaXMuc3RhcnRHYW1lKCk7XHJcbiAgICB9XHJcbiAgICAvL+agueaNruaYr+WQpuWFqOmdouWxj++8jOWBmueLrOeri+mAgumFjeaWuemdolxyXG4gICAgZml0KCl7XHJcbiAgICAgICAgdGhpcy5maXRUb3AgPSA0NTA7ICAvLzYwMFxyXG4gICAgICAgIHRoaXMuZml0Qm90ID0gLTYwMDsgLy8tNzAwXHJcbiAgICAgICAgdmFyIGpnID0gdGhpcy5zZXRGaXQoKTtcclxuICAgICAgICBpZighamcpe1xyXG4gICAgICAgICAgICB0aGlzLmZpdFRvcCA9IDYwMDtcclxuICAgICAgICAgICAgdGhpcy5maXRCb3QgPSAtNzAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5Yik5pat5YWo6Z2i5bGPXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZyAoKSB7XHJcbiAgICAgICAgbGV0IHNpemUgPSBjYy53aW5TaXplO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGlmICgoaGVpZ2h0IC8gd2lkdGgpID4gKDE2LjIgLyA5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lhajpnaLlsY/pgILphY1cclxuICAgIHNldEZpdCAoKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSB0aGlzLmdldFNldFNjcmVlblJlc29sdXRpb25GbGFnKCk7XHJcbiAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH1cclxuICAgIC8v6L+U5Zue6aaW6aG1XHJcbiAgICBiYWNrU2NlbmUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+S4i+S4gOWFs++8jOaIluiAhemHjeaWsOW8gOWni++8jOaIluiAhei/lOWbnuS4iuS4gOWFs++8jOagueaNrmxldmVs5Yaz5a6aXHJcbiAgICByZVN0YXJ0KHR5cGUpe1xyXG4gICAgICAgIC8vIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1c3RvbSAhPSAwKXtcclxuICAgICAgICAvLyAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiTG9hZFNjZW5lXCIpO1xyXG4gICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNob3dCdG5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgIHRoaXMudGltZUNvdW50ID0gMC4xO1xyXG4gICAgICAgIHRoaXMuY2xpY2tOb3cgPSAwO1xyXG4gICAgICAgIHRoaXMudGltZVN0YXJ0ID0gMDtcclxuICAgICAgICB0aGlzLnJlcGVhdCA9IC0xO1xyXG4gICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gLTE7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucm91dGVfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLm5vd19BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuUG9zX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5tb3ZlQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLnRpbWVfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbG9yX0FycmF5ID0gW107XHJcbiAgICAgICAgaWYodHlwZSA9PSAwKXtcclxuICAgICAgICAgICAgdGhpcy5iZ01vdmUoMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodHlwZSA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IDIpe1xyXG4gICAgICAgICAgICB0aGlzLmJnTW92ZSgtMSk7XHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaXtumXtOaIs1xyXG4gICAgZ2V0VGltZSgpe1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHJldHVybiB0aW1lc3RhbXA7XHJcbiAgICB9XHJcbiAgICAvL+iOt+iDnFxyXG4gICAgcGFzc0xldmVsKCl7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmNvdW50VGltZSA+PSAwKXtcclxuICAgICAgICAgICAgbGV0IHRpbWVBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgdGltZUNvdW50ID0gMDtcclxuICAgICAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0xOyBpPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbWUgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuYmFsbF9BcnJheVtpXS54LHRoaXMuYmFsbF9BcnJheVtpXS55LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpLTFdLngsdGhpcy5iYWxsX0FycmF5W2ktMV0ueSwyKTtcclxuICAgICAgICAgICAgICAgIHRpbWVBcnJheS5wdXNoKHRpbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvcihsZXQgaz0xOyBrPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBrKyspe1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4oYmFsbClcclxuICAgICAgICAgICAgICAgICAgICAudG8odGltZUFycmF5W2stMV0se3g6dGhpcy5iYWxsX0FycmF5W2tdLngseTp0aGlzLmJhbGxfQXJyYXlba10ueX0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoayA9PSB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsLnBvc2l0aW9uID0gY2MudjMoYmFsbC54LGJhbGwueSwwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxsLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTdW4oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlU3RhcnQoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgIH0sIHRpbWVDb3VudCoxMDAwKTtcclxuICAgICAgICAgICAgICAgIHRpbWVDb3VudCArPSAodGltZUFycmF5W2stMV0rMC4xKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5aSx6LSlXHJcbiAgICBsb3NlTGV2ZWwodHlwZSl7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmNvdW50VGltZSA+PSAwKXtcclxuICAgICAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgICAgIGZvcihsZXQgaz0xOyBrPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBrKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5iYWxsX0FycmF5W2tdKVxyXG4gICAgICAgICAgICAgICAgLnRvKDIse3g6YmFsbC54LHk6YmFsbC55fSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihrID09IHRoaXMuYmFsbF9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbC5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwucG9zaXRpb24gPSBjYy52MyhiYWxsLngsYmFsbC55LDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU3VuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVTdGFydCh0eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5riF55CG5aSq6ZizXHJcbiAgICBjbGVhclN1bigpe1xyXG4gICAgICAgIGZvcihsZXQgaz0wOyBrPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBrKyspe1xyXG4gICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlba10ucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlba10gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v54K55Ye75aSq6Ziz5omn6KGM5pa55rOVXHJcbiAgICBjbGlja1N1bihkYXRhKXtcclxuICAgICAgICBpZih0aGlzLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrQ291bnQgKz0gMTtcclxuICAgICAgICAgICAgbGV0IGNsaWNrVGltZSA9IHRoaXMuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnRpbWVfQXJyYXkucHVzaCgoY2xpY2tUaW1lIC0gdGhpcy50aW1lU3RhcnQpKVxyXG4gICAgICAgICAgICB0aGlzLnRpbWVTdGFydCA9IHRoaXMuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZihkYXRhID09IHRoaXMuY2xpY2tOb3cpe1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkF1ZGlvTWFuYWdlci5wbGF5QXVkaW9CdXR0b24oKTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY2xpY2tOb3cgPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUxpbmUoY2MudjIodGhpcy5iYWxsX0FycmF5W3RoaXMuY2xpY2tOb3ctMV0ueCx0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXS55KSxcclxuICAgICAgICAgICAgICAgICAgICBjYy52Mih0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vd10ueCx0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vd10ueSksXHJcbiAgICAgICAgICAgICAgICAgICAgMC4yKTsgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tOb3cgKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93LTFdKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93LTFdLmdldENoaWxkQnlOYW1lKFwiZ3VhbmdcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNsaWNrTm93ID09IHRoaXMubm93X0FycmF5Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udG90YWwgKz0gdGhpcy5jbGlja05vdztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJUaW1lID0gdGhpcy5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zdGFydFRpbWUgPiAwICYmIHRoaXMub3ZlclRpbWUgPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lICs9ICh0aGlzLm92ZXJUaW1lIC0gdGhpcy5zdGFydFRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmluaXNoX3RpbWUgPSBwYXJzZUludCgodGhpcy5vdmVyVGltZSAtIHRoaXMuc3RhcnRUaW1lKS8xMDArXCJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWUgPSAwOyB0aGlzLm92ZXJUaW1lID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3IgPSBcInlcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmxldmVsIDwgNCAmJiB0aGlzLmxldmVsID4gMSljb2xvciA9IFwieXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMubGV2ZWwgPj0gNCkgY29sb3IgPSBcInlyYlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB3aW4gPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luLmFjdGl2ZSA9IHRydWU7IHdpbi5zZXRTY2FsZSgwKTtcclxuICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQXVkaW9NYW5hZ2VyLnBsYXlXaW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdW5kICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1bkFycmF5ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlQXJyYXkubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgbT0wIDsgbTx0aGlzLm1vdmVBcnJheS5sZW5ndGg7bSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG0gPT0gdGhpcy5yZXBlYXQgfHwgbSA9PSB0aGlzLm51bWJlclJlcGVhdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQXJyYXlbbV0gPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VuQXJyYXkucHVzaCh0aGlzLm1vdmVBcnJheVttXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBtPTAgOyBtPHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7bSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG0gPT0gdGhpcy5yZXBlYXQgfHwgbSA9PSB0aGlzLm51bWJlclJlcGVhdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VuQXJyYXkucHVzaCgyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW5BcnJheS5wdXNoKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBID0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6MSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6dHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kOnRoaXMucm91bmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFN1bkNvdW50OnRoaXMubm93X0FycmF5Lmxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkU3VuQ291bnQ6R2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5tb3ZlTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VuU3BlZWQ6R2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5tb3ZlU3BlZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwU3VuQ291bnQ6R2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5yZXBlYXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckxpc3Q6dGhpcy5jb2xvcl9BcnJheSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOmZpbmlzaF90aW1lLzEwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0eUxldmVsOnRoaXMubGV2ZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW5MaXN0OnN1bkFycmF5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFRpbWVMaXN0OnRoaXMudGltZV9BcnJheSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcjp0aGlzLmNvdW50VGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4od2luKVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxheSgwLjQpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMDEse3NjYWxlOjIuNX0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMzUse3NjYWxlOjF9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxheSgwLjQpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm92ZXIgPT0gZmFsc2UgJiYgdGhpcy5jb3VudFRpbWUgPj0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmxldmVsID49IDE1KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5zdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxldmVsICs9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5sZXZlbExhYmVsLnN0cmluZyA9IHRoaXMubGV2ZWwgKyBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnVodW8gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFzc0xldmVsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmxldmVsTGFiZWwuc3RyaW5nID0gdGhpcy5sZXZlbCArIFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mdWh1byA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXNzTGV2ZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9zcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/miafooYzlpLHotKVcclxuICAgIHNldExvc3MoKXtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQXVkaW9NYW5hZ2VyLnBsYXlXYXJuaW5nKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3ZlclRpbWUgPSB0aGlzLmdldFRpbWUoKTtcclxuICAgICAgICBpZih0aGlzLnN0YXJ0VGltZSA+IDAgJiYgdGhpcy5vdmVyVGltZSA+IDApe1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUgKz0gKHRoaXMub3ZlclRpbWUgLSB0aGlzLnN0YXJ0VGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBmaW5pc2hfdGltZSA9IHBhcnNlSW50KCh0aGlzLm92ZXJUaW1lIC0gdGhpcy5zdGFydFRpbWUpLzEwMCtcIlwiKTtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IDA7IHRoaXMub3ZlclRpbWUgPSAwO1xyXG4gICAgICAgIGxldCBjb2xvciA9IFwieVwiO1xyXG4gICAgICAgIGlmKHRoaXMubGV2ZWwgPCA0ICYmIHRoaXMubGV2ZWwgPiAxKWNvbG9yID0gXCJ5clwiO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5sZXZlbCA+PSA0KSBjb2xvciA9IFwieXJiXCI7XHJcbiAgICAgICAgdGhpcy5yb3VuZCArPSAxO1xyXG4gICAgICAgIGxldCBzdW5BcnJheSA9IFtdO1xyXG4gICAgICAgIGlmKHRoaXMubW92ZUFycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IG09MCA7IG08dGhpcy5tb3ZlQXJyYXkubGVuZ3RoO20rKyl7XHJcbiAgICAgICAgICAgICAgICBpZihtID09IHRoaXMucmVwZWF0IHx8IG0gPT0gdGhpcy5udW1iZXJSZXBlYXQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W21dID0gMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN1bkFycmF5LnB1c2godGhpcy5tb3ZlQXJyYXlbbV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGZvcihsZXQgbT0wIDsgbTx0aGlzLmJhbGxfQXJyYXkubGVuZ3RoO20rKyl7XHJcbiAgICAgICAgICAgICAgICBpZihtID09IHRoaXMucmVwZWF0IHx8IG0gPT0gdGhpcy5udW1iZXJSZXBlYXQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bkFycmF5LnB1c2goMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgc3VuQXJyYXkucHVzaCgwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQSA9IFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZToxLFxyXG4gICAgICAgICAgICBzdWNjZXNzOmZhbHNlLFxyXG4gICAgICAgICAgICByb3VuZDp0aGlzLnJvdW5kLFxyXG4gICAgICAgICAgICB0b3RhbFN1bkNvdW50OnRoaXMubm93X0FycmF5Lmxlbmd0aCxcclxuICAgICAgICAgICAgbW92ZWRTdW5Db3VudDpHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1vdmVOdW1iZXIsXHJcbiAgICAgICAgICAgIHN1blNwZWVkOkdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPW3RoaXMubGV2ZWwtMV0ubW92ZVNwZWVkLFxyXG4gICAgICAgICAgICBvdmVybGFwU3VuQ291bnQ6R2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5yZXBlYXQsXHJcbiAgICAgICAgICAgIGNvbG9yTGlzdDp0aGlzLmNvbG9yX0FycmF5LFxyXG4gICAgICAgICAgICBkdXJhdGlvbjpmaW5pc2hfdGltZS8xMCxcclxuICAgICAgICAgICAgZGlmZmljdWx0eUxldmVsOnRoaXMubGV2ZWwsXHJcbiAgICAgICAgICAgIHN1bkxpc3Q6c3VuQXJyYXksXHJcbiAgICAgICAgICAgIHN0ZXBUaW1lTGlzdDp0aGlzLnRpbWVfQXJyYXksXHJcbiAgICAgICAgICAgIHJlbWFpbmRlcjp0aGlzLmNvdW50VGltZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldERhdGEoKTtcclxuICAgICAgICBpZih0aGlzLmZ1aHVvID09IHRydWUpe1xyXG4gICAgICAgICAgICB0aGlzLmZ1aHVvID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9zZUxldmVsKDEpO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYodGhpcy5sZXZlbCA+IDIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5sZXZlbExhYmVsLnN0cmluZyA9IHRoaXMubGV2ZWwgKyBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mdWh1byA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmZ1aHVvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvc2VMZXZlbCgyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb3NlTGV2ZWwoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG92ZXIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJPdmVyXCIpO1xyXG4gICAgICAgIGNjLnR3ZWVuKG92ZXIpXHJcbiAgICAgICAgLnRvKDAuMjUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjIse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmRlbGF5KDAuMSlcclxuICAgICAgICAudG8oMC4xNSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgIC5kZWxheSgwLjEpXHJcbiAgICAgICAgLnRvKDAuMSx7b3BhY2l0eTowfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuICAgIC8v5byA5aeL5ri45oiPXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBpZih0aGlzLm92ZXIgPT0gZmFsc2UgJiYgdGhpcy5jb3VudFRpbWUgPiAwKXtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3VuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYmVnaW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5iYWxsKVxyXG4gICAgICAgICAgICAudG8oMC41LHtvcGFjaXR5OjI1NSxzY2FsZToxLjN9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+aJp+ihjOWkqumYs+i/kOihjOWKqOeUu++8jOS7peWPiuWQjumdouenu+WKqOWKqOeUu1xyXG4gICAgcnVuR2FtZSgpe1xyXG4gICAgICAgIGxldCB0aW1lID0gLTY1MDtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vd19BcnJheS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLm5vd19BcnJheVtpXS50aW1lKjEwMDAgKyB0aW1lO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSB0aGlzLm5vd19BcnJheVtpXS50aW1lQ291bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGVtcCA+IDAuNSkgdGVtcCA9IDAuNTtcclxuICAgICAgICAgICAgICAgICAgICBpZihpICE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJhbGwgJiYgdGhpcy5ub3dfQXJyYXlbaV0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVMaW5lKGNjLnYyKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55KSxjYy52Mih0aGlzLm5vd19BcnJheVtpXS54LHRoaXMubm93X0FycmF5W2ldLnkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3dfQXJyYXlbaV0udGltZS10ZW1wKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLmJhbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKHRoaXMubm93X0FycmF5W2ldLnRpbWUtdGVtcCx7eDp0aGlzLm5vd19BcnJheVtpXS54LHk6dGhpcy5ub3dfQXJyYXlbaV0ueX0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMSx7c2NhbGU6MX0pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVCYWxsKGksdGhpcy5ub3dfQXJyYXlbaV0uY29sb3IsdGhpcy5ub3dfQXJyYXlbaV0uc3BlZWQsdGhpcy5ub3dfQXJyYXlbaV0ucmVwZWF0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaSA9PSB0aGlzLm5vd19BcnJheS5sZW5ndGggLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW5HYW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5tb3ZlTnVtYmVyPDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/orr7nva7np7vliqjph43lj6DmlbDmja5cclxuICAgIGNyZWF0ZU1vdmUoKXtcclxuICAgICAgICBpZih0aGlzLm92ZXIgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICBsZXQgaW5mbyA9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPW3RoaXMubGV2ZWwtMV07XHJcbiAgICAgICAgICAgIC8v5pS55Y+Y56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIHZhciBzcGVlZCA9IDc7XHJcbiAgICAgICAgICAgIGlmKGluZm8ubW92ZVNwZWVkID49IDIpe1xyXG4gICAgICAgICAgICAgICAgc3BlZWQgPSA3IC0gaW5mby5tb3ZlU3BlZWQvMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpbmZvLnJlcGVhdCA9PSAxKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwZWF0ICA9IHBhcnNlSW50KChNYXRoLnJhbmRvbSgpKihpbmZvLm51bWJlci0xKSsxKSArIFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBOdW1iZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5yZXBlYXQgPSA0O1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yZXBlYXQgID4gNCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJSZXBlYXQgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpKjQgKyBcIlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnJlcGVhdCAgPT0gKGluZm8ubnVtYmVyLTEpKSAgLy/lpoLmnpzmmK/mnIDlkI7kuIDkuKog5LiN6IO96Lef56ys5LiA5Liq6YeN5Y+gXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJSZXBlYXQgPSB0aGlzLnJlcGVhdCAgLSBwYXJzZUludCggKE1hdGgucmFuZG9tKCkqMyArIDIpKyBcIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBOdW1iZXIgPSAgdGhpcy5Qb3NfQXJyYXlbdGhpcy5udW1iZXJSZXBlYXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUG9zX0FycmF5W3RoaXMucmVwZWF0IF0gPSB0ZW1wTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXsgLy8gMCAxIDIgMyA0IDUgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gNiAtIDMgLSAxICA9IDIgNCAgMDEgNFxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMucmVwZWF0ICA9PSAwKSB0aGlzLnJlcGVhdCAgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKChpbmZvLm51bWJlci0xLXRoaXMucmVwZWF0ICkgPT0gMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gaW5mby5udW1iZXIgLSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTnVtYmVyID0gIHRoaXMuUG9zX0FycmF5W3RoaXMubnVtYmVyUmVwZWF0XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZigoaW5mby5udW1iZXItMS10aGlzLnJlcGVhdCApID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IHRoaXMucmVwZWF0IC0gMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE51bWJlciA9ICB0aGlzLlBvc19BcnJheVt0aGlzLm51bWJlclJlcGVhdF07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKChpbmZvLm51bWJlci0xLXRoaXMucmVwZWF0ICkgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gdGhpcy5yZXBlYXQgLSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTnVtYmVyID0gIHRoaXMuUG9zX0FycmF5W3RoaXMubnVtYmVyUmVwZWF0XTtcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoKGluZm8ubnVtYmVyLTEtdGhpcy5yZXBlYXQgKSA+IDIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkqKGluZm8ubnVtYmVyLXRoaXMucmVwZWF0IC0yKSArIFwiXCIpICsgdGhpcy5yZXBlYXQgICsgMiA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBOdW1iZXIgPSAgdGhpcy5Qb3NfQXJyYXlbdGhpcy5udW1iZXJSZXBlYXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IHRoaXMucmVwZWF0IC0gMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE51bWJlciA9ICB0aGlzLlBvc19BcnJheVt0aGlzLm51bWJlclJlcGVhdF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUG9zX0FycmF5W3RoaXMucmVwZWF0XSA9IHRlbXBOdW1iZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoaW5mby5tb3ZlTnVtYmVyID4gMCl7XHJcbiAgICAgICAgICAgICAgICAvLzAgMSAyIDMgNCA1IDYgNyA4IDlcclxuICAgICAgICAgICAgICAgIC8v5Y+v56e75Yqo5Yy65YiGXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgej0wOyB6PGluZm8ubnVtYmVyOyB6Kyspe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W3pdID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvcihsZXQgcD0wOyBwPGluZm8ubW92ZU51bWJlcjsgcCsrKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVBcnJheVtpbmZvLm51bWJlci0xLXBdID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCB0aW1lT3V0ID0gMDtcclxuICAgICAgICAgICAgICAgIC8v5omT5Lmx5Y+v56e75Yqo6aG65bqPXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVBcnJheS5zb3J0KCgpID0+IE1hdGgucmFuZG9tKCkgLSAwLjUpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlQXJyYXlbMF0gPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCByPWluZm8ubnVtYmVyLTE7IHI+PTA7IHItLSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZUFycmF5W3JdID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQXJyYXlbcl0gPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQXJyYXlbMF0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/lsIbph43lj6DnmoTorr7nva7kuLrkuI3lj6/np7vliqggIDEgMSAxIDEgMCAwIDEgMCAwIDAgICAvIDIgN1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBrID0wOyBrPHRoaXMubW92ZUFycmF5Lmxlbmd0aDtrKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZUFycmF5W2tdPT0xICYmIChrID09IHRoaXMucmVwZWF0IHx8IGsgPT0gdGhpcy5udW1iZXJSZXBlYXQpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBtID0gdGhpcy5tb3ZlQXJyYXkubGVuZ3RoLTE7IG0gPj0gMDsgbS0tKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG0gIT0gayAmJiB0aGlzLm1vdmVBcnJheVttXSA9PSAwICYmIG0hPSB0aGlzLnJlcGVhdCAmJiBtIT0gdGhpcy5udW1iZXJSZXBlYXQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W21dID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVBcnJheVtrXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSAgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9MDsgaTx0aGlzLlBvc19BcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVBcnJheSBbaV0gPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPdXQgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSB0aGlzLmdldFBvczIodHJ1ZSxpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUG9zX0FycmF5W2ldID0gcG9zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aW1lT3V0KjMwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v56e75Yqo5ZCO5pWw5o2uIOmHjeaWsOWIt+S4gOmBjei1i+WAvFxyXG4gICAgdXBkYXRlQXJyYXkoKXtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vd19BcnJheS5sZW5ndGgtMTtpKyspe1xyXG4gICAgICAgICAgICB0aGlzLm5vd19BcnJheVtpXS54ID0gdGhpcy5Qb3NfQXJyYXlbaV0ueDtcclxuICAgICAgICAgICAgdGhpcy5ub3dfQXJyYXlbaV0ueSA9IHRoaXMuUG9zX0FycmF5W2ldLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/lpKrpmLPliJ3lp4vljJblkI7np7vliqjmlrnms5VcclxuICAgIG1vdmVBY3Rpb24oKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFycmF5KCk7XHJcbiAgICAgICAgbGV0IG1vdmVBcnJheSA9IHRoaXMubW92ZUFycmF5O1xyXG4gICAgICAgIGxldCBpbmZvID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXTtcclxuICAgICAgICAvL+aUueWPmOenu+WKqOmAn+W6plxyXG4gICAgICAgIHZhciBzcGVlZCA9IDc7XHJcbiAgICAgICAgaWYoaW5mby5tb3ZlU3BlZWQgPj0gMil7XHJcbiAgICAgICAgICAgIHNwZWVkID0gNyAtIGluZm8ubW92ZVNwZWVkLzI7XHJcbiAgICAgICAgfSAgXHJcbiAgICAgICAgaWYoaW5mby5tb3ZlTnVtYmVyID4gMCl7XHJcbiAgICAgICAgICAgIC8vMCAxIDIgMyA0IDUgNiA3IDggOVxyXG4gICAgICAgICAgICAvL+WPr+enu+WKqOWMuuWIhlxyXG4gICAgICAgICAgICAvL+WwhumHjeWPoOeahOiuvue9ruS4uuS4jeWPr+enu+WKqCAgMSAxIDEgMSAwIDAgMSAwIDAgMCAgIC8gMiA3XHJcbiAgICAgICAgICAgIGZvcihsZXQgayA9MDsgazx0aGlzLm1vdmVBcnJheS5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZUFycmF5W2tdPT0xICYmIChrID09IHRoaXMucmVwZWF0IHx8IGsgPT0gdGhpcy5udW1iZXJSZXBlYXQpKXtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IG0gPSB0aGlzLm1vdmVBcnJheS5sZW5ndGgtMTsgbSA+PSAwOyBtLS0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihtICE9IGsgJiYgdGhpcy5tb3ZlQXJyYXlbbV0gPT0gMCAmJiBtIT0gdGhpcy5yZXBlYXQgJiYgbSE9IHRoaXMubnVtYmVyUmVwZWF0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W21dID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W2tdID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGxhc3ROdW1iZXIgPSAwO1xyXG4gICAgICAgICAgICAvL+mUgeWumuacgOWQjuS4gOS4quWPr+enu+WKqOeahFxyXG4gICAgICAgICAgICBmb3IobGV0IGogPTA7IGo8bW92ZUFycmF5Lmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYobW92ZUFycmF5W2pdPT0xKXtcclxuICAgICAgICAgICAgICAgICAgICBsYXN0TnVtYmVyID0gajtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPTA7IGk8dGhpcy5iYWxsX0FycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYobW92ZUFycmF5W2ldID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgIT0gbGFzdE51bWJlcil7ICAgIC8v5aaC5p6c5LiN5piv5pyA5ZCO5LiA5Liq56e75Yqo55qEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gc3BlZWQqdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLmJhbGxfQXJyYXlbaV0ueCx0aGlzLmJhbGxfQXJyYXlbaV0ueSx0aGlzLlBvc19BcnJheVtpXS54LHRoaXMuUG9zX0FycmF5W2ldLnksMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpXS5nZXRDb21wb25lbnQoXCJTdW5cIikubW92ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbF9BcnJheVtpXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvKHRpbWUse3Bvc2l0aW9uOnRoaXMuUG9zX0FycmF5W2ldfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiU3VuXCIpLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8v5aaC5p6c5piv5pyA5ZCO5LiA5LiqXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBzcGVlZCp0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuYmFsbF9BcnJheVtpXS54LHRoaXMuYmFsbF9BcnJheVtpXS55LHRoaXMuUG9zX0FycmF5W2ldLngsdGhpcy5Qb3NfQXJyYXlbaV0ueSwzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2ldLmdldENvbXBvbmVudChcIlN1blwiKS5tb3ZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5iYWxsX0FycmF5W2ldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudG8odGltZSx7cG9zaXRpb246dGhpcy5Qb3NfQXJyYXlbaV19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiU3VuXCIpLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5q+P5qyh6YeN5paw5byA5aeL5paw5LiA6L2u5YS/5ri45oiPXHJcbiAgICBiZWdpbkdhbWUoKXtcclxuICAgICAgICB0aGlzLmJlZ2luID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHRoaXMuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMudGltZVN0YXJ0ID0gdGhpcy5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNob3dCdG5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8v5pqC5pe25L2c5bqfXHJcbiAgICAvLyBnZXRSYW5kb21BcnJheShsYXN0TnVtYmVyKXtcclxuICAgIC8vICAgICBsZXQgbnVtID0gIHBhcnNlSW50KE1hdGgucmFuZG9tKCkqOCAtIDQgKyBcIlwiKTtcclxuICAgIC8vICAgICBsZXQgamcgPSBudW0gKyBsYXN0TnVtYmVyO1xyXG4gICAgLy8gICAgIGlmKG51bSA+IDEgfHwgbnVtIDwtMSl7XHJcbiAgICAvLyAgICAgICAgIGlmKCBudW0gPT0gMCB8fCAoIGpnPDAgfHwgamcgPj0gdGhpcy5Qb3NfQXJyYXkubGVuZ3RoKSl7XHJcbiAgICAvLyAgICAgICAgICAgICBqZyA9IHRoaXMuZ2V0UmFuZG9tQXJyYXkobGFzdE51bWJlcik7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgZWxzZXtcclxuICAgIC8vICAgICAgICAgamcgPSB0aGlzLmdldFJhbmRvbUFycmF5KGxhc3ROdW1iZXIpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gamc7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy/liJvlu7rlpKrpmLPmiYDpnIDmlbDmja5cclxuICAgIGNyZWF0ZVN1bigpe1xyXG4gICAgICAgIGxldCBsZXZlbERhdGEgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdO1xyXG4gICAgICAgIGxldCB0aWVtT3V0ID0gMDtcclxuICAgICAgICBmb3IobGV0IGw9MDsgbDxsZXZlbERhdGEubnVtYmVyO2wrKyl7XHJcbiAgICAgICAgICAgIHRpZW1PdXQgKz0gMTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm92ZXIgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLmdldFBvcyhmYWxzZSxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlBvc19BcnJheS5wdXNoKHBvcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5Qb3NfQXJyYXkubGVuZ3RoID09IGxldmVsRGF0YS5udW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQb3MoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9LCB0aWVtT3V0KjEwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/liJvlu7rlpKrpmLPkvY3nva7vvIzpopzoibLkv6Hmga/nrYnmlbDmja5cclxuICAgIGNyZWF0ZVBvcygpe1xyXG4gICAgICAgIGxldCBkYXRhID0ge3g6dGhpcy5iYWxsLngseTp0aGlzLmJhbGwueSx0aW1lOjAsdGltZUNvdW50OjAsY29sb3I6MCxzcGVlZDowLHJlcGVhdDpmYWxzZX07XHJcbiAgICAgICAgbGV0IGxldmVsRGF0YSA9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPW3RoaXMubGV2ZWwtMV07XHJcbiAgICAgICAgLy/popzoibLljLrliIZcclxuICAgICAgICBsZXQgY29sb3JBcnJheSA9IFswLDFdO1xyXG4gICAgICAgIGZvcihsZXQgaj0wOyBqPGxldmVsRGF0YS5udW1iZXItMjtqKyspe1xyXG4gICAgICAgICAgICBsZXQgY29sb3JUZW1wID0gcGFyc2VJbnQoTWF0aC5yYW5kb20oKSozK1wiXCIpO1xyXG4gICAgICAgICAgICBpZihsZXZlbERhdGEubnVtYmVyIDwgNiAmJiBjb2xvclRlbXAgPT0gMikgY29sb3JUZW1wID0gMDtcclxuICAgICAgICAgICAgY29sb3JBcnJheS5wdXNoKGNvbG9yVGVtcCk7XHJcbiAgICAgICAgICAgIGNvbG9yQXJyYXkuc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sb3JBcnJheS5zb3J0KCgpID0+IE1hdGgucmFuZG9tKCkgLSAwLjUpO1xyXG4gICAgICAgIGlmKGxldmVsRGF0YS5udW1iZXIgPT0gNCkgY29sb3JBcnJheSA9IFswLDAsMCwwXTtcclxuICAgICAgICB0aGlzLmNvbG9yX0FycmF5ID0gY29sb3JBcnJheTtcclxuICAgICAgICAvL+WtmOWCqOWkqumYs+aVsOaNrlxyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGxldmVsRGF0YS5udW1iZXI7aSsrKXtcclxuICAgICAgICAgICAgbGV0IHRpbWVDb3VudCA9IHRoaXMudGltZUNvdW50ICsgKDAuNi10aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55LHRoaXMuUG9zX0FycmF5W2ldLngsdGhpcy5Qb3NfQXJyYXlbaV0ueSwxKSk7XHJcbiAgICAgICAgICAgIGxldCB0aW1lID0gdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLmJhbGwueCx0aGlzLmJhbGwueSx0aGlzLlBvc19BcnJheVtpXS54LHRoaXMuUG9zX0FycmF5W2ldLnksMSkrdGltZUNvdW50O1xyXG4gICAgICAgICAgICBkYXRhID0ge3g6dGhpcy5Qb3NfQXJyYXlbaV0ueCx5OnRoaXMuUG9zX0FycmF5W2ldLnksdGltZTp0aW1lLHRpbWVDb3VudDp0aW1lQ291bnQsY29sb3I6Y29sb3JBcnJheVtpXSxzcGVlZDpsZXZlbERhdGEubW92ZVNwZWVkLHJlcGVhdDpmYWxzZX07XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVwZWF0ID09IGkpe1xyXG4gICAgICAgICAgICAgICAgZGF0YS5yZXBlYXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5udW1iZXJSZXBlYXQgPT0gaSl7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnJlcGVhdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub3dfQXJyYXkucHVzaChkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ydW5HYW1lKCk7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPlu+8jE7kuKrlpKrpmLPkvY3nva7nmoTmlrnms5XvvIzlkoxQT1My5YiG5byA5Lik5Liq5pa55rOV77yM6Ziy5q2i6YCS5b2S5rqi5Ye6XHJcbiAgICBnZXRQb3ModHlwZSxudW0pe1xyXG4gICAgICAgIGxldCBwb3NYID0gTWF0aC5yYW5kb20oKSo2MjAgLSAzMTA7XHJcbiAgICAgICAgbGV0IHBvc1kgPSBNYXRoLnJhbmRvbSgpKih0aGlzLmZpdFRvcC10aGlzLmZpdEJvdCkgKyB0aGlzLmZpdEJvdDtcclxuICAgICAgICBsZXQgcG9pbnQgPSBjYy52Mihwb3NYLHBvc1kpO1xyXG4gICAgICAgIGlmKHRoaXMuUG9zX0FycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLlBvc19BcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZihpID09IG51bSkgcGQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKHBvc1gscG9zWSx0aGlzLlBvc19BcnJheVtpXS54LHRoaXMuUG9zX0FycmF5W2ldLnkscGQpXHJcbiAgICAgICAgICAgICAgICBpZihkaXN0YW5jZSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ID0gdGhpcy5nZXRQb3ModHlwZSxudW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UgPT0gdHJ1ZSAmJiBpID09ICh0aGlzLlBvc19BcnJheS5sZW5ndGgtMSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGkgPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwb2ludDtcclxuICAgIH1cclxuICAgIC8v6I635Y+W77yMTuS4quWkqumYs+WPr+enu+WKqOS9jee9rueahOaWueazle+8jOWSjFBPU+WIhuW8gOeul+mYsuatoumAkuW9kua6ouWHulxyXG4gICAgZ2V0UG9zMih0eXBlLG51bSl7XHJcbiAgICAgICAgbGV0IHBvc1ggPSBNYXRoLnJhbmRvbSgpKjYyMCAtIDMxMDtcclxuICAgICAgICBsZXQgcG9zWSA9IE1hdGgucmFuZG9tKCkqKHRoaXMuZml0VG9wLXRoaXMuZml0Qm90KSArIHRoaXMuZml0Qm90O1xyXG4gICAgICAgIGxldCBwb2ludCA9IGNjLnYyKHBvc1gscG9zWSk7XHJcbiAgICAgICAgaWYodGhpcy5Qb3NfQXJyYXkubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMuUG9zX0FycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmKGkgPT0gbnVtKSBwZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UyKHBvc1gscG9zWSx0aGlzLlBvc19BcnJheVtpXS54LHRoaXMuUG9zX0FycmF5W2ldLnkscGQpXHJcbiAgICAgICAgICAgICAgICBpZihkaXN0YW5jZSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ID0gdGhpcy5nZXRQb3MyKHR5cGUsbnVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGRpc3RhbmNlID09IHRydWUgJiYgaSA9PSAodGhpcy5Qb3NfQXJyYXkubGVuZ3RoLTEpKXtcclxuICAgICAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9pbnQ7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluS4pOeCueS5i+mXtOi3neemu++8jOi/lOWbnuWIpOaWreaYr+WQpuWcqOS4gOWumuiMg+WbtOWGhSDlsIbmnaXmj5Dlh7rliLDlt6XlhbfnsbtcclxuICAgIGdldERpc3RhbmNlKHgxLCB5MSwgeDIsIHkyLG51bSkge1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGR4ID0geDIgLSB4MTtcclxuICAgICAgICBjb25zdCBkeSA9IHkyIC0geTE7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlID4gMTYwKXtcclxuICAgICAgICAgICAgaWYobnVtID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UgPCBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1heE1vdmUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBlbHNlIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGlmKGRpc3RhbmNlIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5tYXhNb3ZlKXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgZWxzZSBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuICAgIC8v5ZG95Lit5Yqo55S7XHJcbiAgICBoaXRBY3Rpb24oZGF0YSl7XHJcbiAgICAgICAgdGhpcy5oaXQuYWN0aXZlID0gdHJ1ZTsgdGhpcy5oaXQub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5oaXQuc2V0UG9zaXRpb25cclxuICAgICAgICB0aGlzLmhpdC5zZXRQb3NpdGlvbih0aGlzLmJhbGxfQXJyYXlbZGF0YV0ueCszNSx0aGlzLmJhbGxfQXJyYXlbZGF0YV0ueSszNSk7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5oaXQpXHJcbiAgICAgICAgLnRvKDAse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAudG8oMC4yLHtwb3NpdGlvbjpjYy52Myh0aGlzLmhpdC54LTM1LHRoaXMuaGl0LnktMzUsMCl9KVxyXG4gICAgICAgIC5kZWxheSgwLjIpXHJcbiAgICAgICAgLnRvKDAuMSx7b3BhY2l0eTowfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuICAgIC8v5Yib6YCg5aSq6ZizXHJcbiAgICBjcmVhdGVCYWxsKG51bWJlcixjb2xvcixzcGVlZCxyZXBlYXQpe1xyXG4gICAgICAgIGxldCBiYWxsID0gbnVsbDtcclxuICAgICAgICBpZihjb2xvciA9PSAwKWJhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLnFpdTEpO1xyXG4gICAgICAgIGVsc2UgaWYoY29sb3IgPT0gMSliYWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5xaXUyKTtcclxuICAgICAgICBlbHNlIGlmKGNvbG9yID09IDIpYmFsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMucWl1Myk7XHJcbiAgICAgICAgYmFsbC5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTdW5cIik7XHJcbiAgICAgICAgYmFsbC56SW5kZXggPSB0aGlzLm5vd19BcnJheS5sZW5ndGggLSBudW1iZXI7XHJcbiAgICAgICAgYmFsbC5zZXRQb3NpdGlvbih0aGlzLmJhbGwueCx0aGlzLmJhbGwueSk7XHJcbiAgICAgICAgYmFsbC5nZXRDb21wb25lbnQoXCJTdW5cIikuaW5pdChudW1iZXIsY29sb3Isc3BlZWQscmVwZWF0KTtcclxuICAgICAgICB0aGlzLmJhbGxfQXJyYXkucHVzaChiYWxsKTtcclxuICAgIH1cclxuICAgIC8v6ZSA5q+B6L+e57q/XHJcbiAgICBkZXN0cm95TGluZSgpIHtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW5baV0pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKS5jaGlsZHJlbltpXS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLmNoaWxkcmVuW2ldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICB9XHJcbiAgICAvL+WIm+W7uui/nue6v1xyXG4gICAgY3JlYXRlTGluZShzdGFydCxlbmQsdGltZSl7XHJcbiAgICAgICAgbGV0IGxpbmUgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLmxpbmVQcmVmYWIpO1xyXG4gICAgICAgIGxpbmUucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKTtcclxuICAgICAgICBsaW5lLnNldFBvc2l0aW9uKHN0YXJ0Lngsc3RhcnQueSk7XHJcbiAgICAgICAgY29uc3QgZHggPSBlbmQueCAtIHN0YXJ0Lng7XHJcbiAgICAgICAgY29uc3QgZHkgPSBlbmQueSAtIHN0YXJ0Lnk7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGxpbmUuaGVpZ2h0ID0gZGlzdGFuY2U7XHJcbiAgICAgICAgbGluZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5maWxsUmFuZ2UgPSAwO1xyXG4gICAgICAgIGxpbmUuYW5nbGUgPSAtdGhpcy5jYWxjdWxhdGVBbmdsZShzdGFydC54LHN0YXJ0LnksZW5kLngsZW5kLnkpO1xyXG4gICAgICAgIGNjLnR3ZWVuKGxpbmUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkpXHJcbiAgICAgICAgLnRvKHRpbWUse2ZpbGxSYW5nZToxfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuICAgIC8v6I635Y+W5Lik54K55LmL6Ze055qE6KeS5bqm77yM5bCG5p2l6YO95Y+v5pS+5bel5YW357G7XHJcbiAgICBjYWxjdWxhdGVBbmdsZSh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoeTIteTEseDIteDEpKjE4MCAvIE1hdGguUEkgLSA5MDtcclxuICAgICAgICByZXR1cm4gLWFuZ2xlO1xyXG4gICAgfVxyXG4gICAgLy/ojrflj5bkuKTngrnkuYvpl7TnmoTot53nprsg6L+U5Zue5a+55bqU5pe26Ze0XHJcbiAgICBjYWxjdWxhdGVEaXN0YW5jZSh4MSwgeTEsIHgyLCB5MiwgbnVtKSB7XHJcbiAgICAgICAgY29uc3QgZHggPSB4MiAtIHgxO1xyXG4gICAgICAgIGNvbnN0IGR5ID0geTIgLSB5MTtcclxuICAgICAgICBsZXQgdGltZSA9IDA7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGlmKG51bSA9PSAxKXtcclxuICAgICAgICAgICAgaWYoZGlzdGFuY2UgPiA4MDApIGRpc3RhbmNlID0gODAwO1xyXG4gICAgICAgICAgICB0aW1lID0gZGlzdGFuY2UvODAwICogMC42O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAyKXtcclxuICAgICAgICAgICAgaWYoZGlzdGFuY2UgPiAxMjAwKSBkaXN0YW5jZSA9IDEyMDA7XHJcbiAgICAgICAgICAgIHRpbWUgPSBkaXN0YW5jZS8xMjAwICogMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMyl7XHJcbiAgICAgICAgICAgIGlmKGRpc3RhbmNlID4gMTIwMCkgZGlzdGFuY2UgPSAxMjAwO1xyXG4gICAgICAgICAgICB0aW1lID0gZGlzdGFuY2UvMTIwMCAqIDEuNTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aW1lO1xyXG4gICAgfVxyXG4gICAgLy/ojrflj5bkuKTngrnkuYvpl7Tot53nprsgIOi/lOWbnui3neemu+WIpOaWrVxyXG4gICAgZ2V0RGlzdGFuY2UyKHgxLCB5MSwgeDIsIHkyLG51bSkge1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGR4ID0geDIgLSB4MTtcclxuICAgICAgICBjb25zdCBkeSA9IHkyIC0geTE7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlID4gMTYwKXtcclxuICAgICAgICAgICAgaWYobnVtID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UgPCBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1heERpc3RhbmNlKSBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcbiAgICAvL+iDjOaZr+enu+WKqFxyXG4gICAgYmdNb3ZlKHR5cGUpe1xyXG4gICAgICAgIGxldCByYW5kb20gPSBNYXRoLnJhbmRvbSgpKjMwMCArIDMwMDtcclxuICAgICAgICBsZXQgcG9zWCA9IE1hdGgucmFuZG9tKCkqNjAwIC0gMzAwO1xyXG4gICAgICAgIGxldCB5MSA9IHRoaXMuYmcxLnkgLSByYW5kb20qdHlwZTtcclxuICAgICAgICBsZXQgdGltZTEgPSAwLjcqKHJhbmRvbS80MDApO1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbClcclxuICAgICAgICAudG8oMC4zLHtzY2FsZToxLjN9KVxyXG4gICAgICAgIC50byh0aW1lMSx7eDpwb3NYfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLmJnMSlcclxuICAgICAgICAuZGVsYXkoMC4zKVxyXG4gICAgICAgIC50byh0aW1lMSx7eTp5MX0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSkgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9LCB0aW1lMSoxNTAwKTtcclxuICAgIH1cclxuICAgIC8v5pe26Ze05qC85byP6L2s5o2iXHJcbiAgICBnZXRUaW1lTWFyZ2luKHNlY29uZDpudW1iZXIpIHtcclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIHRvdGFsID0gc2Vjb25kO1xyXG4gICAgICAgIGxldCBob3VyID0gMDtcclxuICAgICAgICBob3VyID0gcGFyc2VJbnQoKHRvdGFsIC8gMzYwMCkgKyBcIlwiKTsvL+iuoeeul+aVtOaVsOWwj+aXtuaVsFxyXG4gICAgICAgIGxldCBhZnRlckhvdXIgPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwOy8v5Y+W5b6X566X5Ye65bCP5pe25pWw5ZCO5Ymp5L2Z55qE56eS5pWwXHJcbiAgICAgICAgbGV0IG1pbiA9IHBhcnNlSW50KChhZnRlckhvdXIgLyA2MCkrXCJcIik7Ly/orqHnrpfmlbTmlbDliIZcclxuICAgICAgICBsZXQgbSA9IFwiXCIgKyBtaW47ICBcclxuICAgICAgICBpZihtaW4gPCAxMCkgbSA9IFwiMFwiK21pbjtcclxuICAgICAgICBsZXQgYWZ0ZXJNaW4gPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWlhbyA9IGFmdGVyTWluICsgXCJcIjtcclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBtaWFvID0gXCIwXCIgKyBhZnRlck1pbjtcclxuICAgICAgICByZXR1cm4gbSArICc6JyArIG1pYW9cclxuICAgIH1cclxuICAgIC8v5aaC5p6c5piv5YCS6K6h5pe2IOiwg+eUqOatpOaWueazlVxyXG4gICAgdXBkYXRlQ291bnREb3duVGltZSAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY291bnRUaW1lID4gMCAmJiB0aGlzLnBhdXNlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRUaW1lIC09IDE7XHJcbiAgICAgICAgICAgIHRoaXMudGltZS5zdHJpbmcgPSB0aGlzLmdldFRpbWVNYXJnaW4odGhpcy5jb3VudFRpbWUpO1xyXG4gICAgICAgICAgICBpZih0aGlzLmNvdW50VGltZSA8IDUpe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy50aW1lLm5vZGUpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yNSx7c2NhbGU6MS41LGNvbG9yOmNjLmNvbG9yKDI1NSwwLDApfSlcclxuICAgICAgICAgICAgICAgIC50bygwLjI1LHtzY2FsZToxLGNvbG9yOmNjLmNvbG9yKDI1NSwyNTUsMjU1KX0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKVxyXG4gICAgICAgICAgICAgICAgbGV0IG92ZXIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJPdmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4ob3ZlcilcclxuICAgICAgICAgICAgICAgIC50bygwLjIse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjEpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5jb3VudFRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJlZ2luID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlQ291bnREb3duVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldExvc3MoKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lID0gMDtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY2xpY2tDb3VudCA+IDApIHRpbWUgPSBwYXJzZUludChHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUvdGhpcy5jbGlja0NvdW50ICsgXCJcIik7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUgPSBwYXJzZUludCh0aW1lLzEwMCArIFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lIC8xMDtcclxuICAgICAgICAgICAgICAgIGlmKHRpbWUgPiAxMDAwMCkgdGltZSA9IChNYXRoLnJhbmRvbSgpKjEwKzUpKjEwMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmFuayh0aW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5LiK5Lyg5q+P5qyh5pON5L2c5pWw5o2uXHJcbiAgICBzZXREYXRhKCl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HQU1FX0RBVEEucHVzaChHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQSk7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX2luaXQoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HQU1FX0RBVEE7XHJcbiAgICAgICAgbGV0IG1hdGNoSWQgPSB0aGlzLmdldE1hdGNoSWQoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhtYXRjaElkKTtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOaVsOaNrjpcIilcclxuICAgICAgICBIdHRwVXRpbC51cGxvYWRVc2VyTG9nRGF0YShwb3N0RGF0YSxmdW5jdGlvbigpe30pXHJcbiAgICB9XHJcbiAgICAvL+iOt+WPlm1hdGNoSWQgIOeUqOS6juS4iuS8oOavj+asoeeCueWHu+aVsOaNrumHjOmdouiusOW9lWlk5pa55L6/5p+l6K+iXHJcbiAgICBnZXRNYXRjaElkICgpe1xyXG4gICAgICAgIGxldCBtYXRjaElkID0gY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibWF0Y2hJZFwiKTtcclxuICAgICAgICBpZihtYXRjaElkID09IFwidW5kaWZlbmRcIiB8fCBtYXRjaElkPT1udWxsKXtcclxuICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYodGhpcy5jb250YWluc05hbmFuYShtYXRjaElkKSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGxldCBjaGFyID0gcGFyc2VJbnQobWF0Y2hJZFsxMF0pO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBjaGFyICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkICA9IG1hdGNoSWQuc2xpY2UoMCwgMTApICsgY2hhciArIFwiXCI7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tYXRjaElkID0gbWF0Y2hJZDtcclxuICAgICAgICAgICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixtYXRjaElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWF0Y2hJZDtcclxuICAgIH1cclxuICAgIC8v5qOA5rWLbWF0Y2hJZCDlpoLmnpzmnInnvJPlrZjku6XliY3nmoRuYW5hbmHmlbDmja7muIXpmaRcclxuICAgIGNvbnRhaW5zTmFuYW5hKHN0cikge1xyXG4gICAgICAgIHJldHVybiAvbmEvaS50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOiuvue9rk1hdGNoSWRcclxuICAgIHNldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgLy8g5a6a5LmJ5YyF5ZCr5Y+v55So5a2X56ym55qE5a2X56ym6ZuGXHJcbiAgICAgICAgY29uc3QgY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgLy8g5Yib5bu65LiA5Liq5pWw57uE5Lul5L+d5a2Y6ZqP5py65a2X56ymXHJcbiAgICAgICAgY29uc3QgdXVpZEFycmF5ID0gW107XHJcbiAgICAgICAgLy8g5b6q546vMTDmrKEg55Sf5oiQMTDkvY3nmoRVVUlEXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDpmo/mnLrntKLlvJXvvIzojIPlm7TmmK/lrZfnrKbpm4bnmoTplb/luqZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIC8vIOS7juWtl+espumbhuS4reiOt+WPlumaj+acuuWtl+esplxyXG4gICAgICAgICAgICBjb25zdCByYW5kb21DaGFyID0gY2hhcmFjdGVycy5jaGFyQXQocmFuZG9tSW5kZXgpO1xyXG4gICAgICAgICAgICAvLyDlsIblrZfnrKbmt7vliqDliLDmlbDnu4TkuK1cclxuICAgICAgICAgICAgdXVpZEFycmF5LnB1c2gocmFuZG9tQ2hhcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkYXRhID0gIHV1aWRBcnJheS5qb2luKCcnKSArIDEgKyBcIlwiO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoTnVtYmVyXCIsMSk7XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLGRhdGEpO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1hdGNoSWQgPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG4gICAgLy/kuIrkvKDmjpLooYzmppzmlbDmja5cclxuICAgIHNldFJhbmsodGltZSl7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcInR5cGVcIjoxLFxyXG4gICAgICAgICAgICBcInJlYWN0aW9uVGltZVwiOiB0aW1lLFxyXG4gICAgICAgICAgICBcInRvdGFsU3VuQ291bnRcIjogR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udG90YWwsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiOiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5zdWNjZXNzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBIdHRwVXRpbC5yYW5rRGF0YSgxLGZ1bmN0aW9uKCl7fSxwb3N0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZU92ZXJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lT3ZlclwiKS5vcGFjaXR5ID0gMDtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lT3ZlclwiKSlcclxuICAgICAgICAudG8oMC40LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLmRlbGF5KDIpXHJcbiAgICAgICAgLnRvKDAuNCx7b3BhY2l0eTo1MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIk92ZXJTY2VuZVwiKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpXHJcbiAgICB9XHJcbiAgICAvL+S9nOW8iu+8jOa1i+ivleeUqFxyXG4gICAgc2hvd051bWJlcigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2hvdyA9PSBmYWxzZSkgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuc2hvdyA9PSB0cnVlKSB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiU3VuXCIpLnNob3dOdW1iZXIodGhpcy5zaG93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkVuYWJsZSAoKSB7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwiY2xpY2tTdW5cIiwgdGhpcy5jbGlja1N1biwgdGhpcyk7XHJcbiAgICB9XHJcbiAgICBvbkRpc2FibGUgKCkge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJjbGlja1N1blwiLCB0aGlzLmNsaWNrU3VuKTtcclxuICAgIH1cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuICAgIH1cclxufVxyXG4iXX0=
//------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 > 6) {
this.data.name = this.data.name.substring(0, 6) + "...";
}
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;
this.node.getChildByName("pic").getChildByName("icon").active = false;
this.node.getChildByName("pic").getChildByName("pic").active = false;
var self = this;
var url = this.data.pic;
fetch(url)
.then(function (response) {
return response.headers.get('Content-Length');
})
.then(function (errNo) {
// console.log(this.data.rank,'X-Info:', errNo); // 输出X-ErrNo的值
if (errNo == "5093") {
// console.log(this.data.rank,"没头像");
_this.node.getChildByName("pic").getChildByName("icon").active = true;
}
})
.catch(function (error) {
console.error('Error fetching X-Info:', error);
});
cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) {
if (texture) {
_this.node.getChildByName("pic").getChildByName("pic").active = true;
var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite);
sprite.spriteFrame = new cc.SpriteFrame(texture);
// console.log(this.data.rank,"设置头像成功",err);
}
else {
// console.log("设置头像失败",url);
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcSXRlbVJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUF3Qyw4QkFBWTtJQUFwRDtRQUFBLHFFQXFFQztRQXBFRyxRQUFRO1FBQ0QsVUFBSSxHQUFPLElBQUksQ0FBQztRQUN2QixjQUFjO1FBQ1AsZUFBUyxHQUFVLENBQUMsQ0FBQzs7SUFpRWhDLENBQUM7SUEvREcsYUFBYTtJQUNOLGdDQUFXLEdBQWxCO1FBQ0ksSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFB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QUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEVBQUMsVUFBQyxHQUFHLEVBQUUsT0FBb0I7WUFDbkUsSUFBRyxPQUFPLEVBQUM7Z0JBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRSxJQUFJLENBQUM7Z0JBQ25FLElBQUksTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRixNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakQsNENBQTRDO2FBQy9DO2lCQUNHO2dCQUNBLDZCQUE2QjtnQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsT0FBTyxDQUFDLENBQUE7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFsRWdCLFVBQVU7UUFEOUIsT0FBTztPQUNhLFVBQVUsQ0FxRTlCO0lBQUQsaUJBQUM7Q0FyRUQsQUFxRUMsQ0FyRXVDLEVBQUUsQ0FBQyxTQUFTLEdBcUVuRDtrQkFyRW9CLFVBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirmlbDmja7mlLnlj5jml7bosIPnlKggKi9cclxuICAgIHB1YmxpYyBkYXRhQ2hhbmdlZCgpe1xyXG4gICAgICAgIGlmKHRoaXMuZGF0YS5uYW1lLmxlbmd0aCA+IDYpe1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEubmFtZSA9IHRoaXMuZGF0YS5uYW1lLnN1YnN0cmluZygwLDYpICsgXCIuLi5cIlxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5kYXRhLnJhbmsgKyBcIlwiO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEubmFtZSArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEudG90YWwgKyBcIlwiO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInR3b1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidGhyZWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5kYXRhLnJhbmsgPT0gMSl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGEucmFuayA9PSAyKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInR3b1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDMpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidGhyZWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBpYygpO1xyXG4gICAgfSAgIFxyXG4gICAgXHJcbiAgICBwdWJsaWMgc2V0UGljKCl7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuYWN0aXZlPSBmYWxzZTtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuZGF0YS5waWM7XHJcbiAgICAgICAgZmV0Y2godXJsKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIC50aGVuKGVyck5vID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssJ1gtSW5mbzonLCBlcnJObyk7IC8vIOi+k+WHulgtRXJyTm/nmoTlgLxcclxuICAgICAgICAgICAgaWYoZXJyTm8gPT0gXCI1MDkzXCIpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssXCLmsqHlpLTlg49cIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodXJsLCB7ZXh0OicucG5nJ30sKGVyciwgdGV4dHVyZTpjYy5UZXh0dXJlMkQpID0+IHtcclxuICAgICAgICAgICAgaWYodGV4dHVyZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuYWN0aXZlPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNwcml0ZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5yYW5rLFwi6K6+572u5aS05YOP5oiQ5YqfXCIsZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLorr7nva7lpLTlg4/lpLHotKVcIix1cmwpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyLHRleHR1cmUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIl19
//------QC-SOURCE-SPLIT------