I18nUtil.js 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/utils/I18nUtil.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'bf0c5vcbKpFaKAHudea+RTS', 'I18nUtil');
  13. // script/utils/I18nUtil.ts
  14. "use strict";
  15. var __spreadArrays = (this && this.__spreadArrays) || function () {
  16. for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
  17. for (var r = Array(s), k = 0, i = 0; i < il; i++)
  18. for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
  19. r[k] = a[j];
  20. return r;
  21. };
  22. Object.defineProperty(exports, "__esModule", { value: true });
  23. exports.I18n = void 0;
  24. var Config_1 = require("../Config");
  25. var gameCfg_1 = require("../common/gameCfg");
  26. var TypeConst_1 = require("../data/const/TypeConst");
  27. var Load_1 = require("./Load");
  28. var I18n = /** @class */ (function () {
  29. function I18n() {
  30. }
  31. I18n.getI18nText = function (key) {
  32. var args = [];
  33. for (var _i = 1; _i < arguments.length; _i++) {
  34. args[_i - 1] = arguments[_i];
  35. }
  36. var i18n = gameCfg_1.default.languageClientText.getItem(key);
  37. var str = key;
  38. if (!i18n || !i18n[Config_1.default.lang]) {
  39. if (CC_PREVIEW)
  40. console.warn("\u591A\u8BED\u8A00languageText: " + key + "," + Config_1.default.lang + "\u4E0D\u5B58\u5728");
  41. }
  42. else
  43. str = i18n[Config_1.default.lang];
  44. return I18n.format(str, args);
  45. };
  46. I18n.getI18nLang = function (key) {
  47. var args = [];
  48. for (var _i = 1; _i < arguments.length; _i++) {
  49. args[_i - 1] = arguments[_i];
  50. }
  51. var i18n = gameCfg_1.default.languageLang.getItem(key);
  52. var str = key;
  53. if (!i18n || !i18n[Config_1.default.lang]) {
  54. if (CC_PREVIEW)
  55. console.warn("\u591A\u8BED\u8A00languageLang: " + key + "," + Config_1.default.lang + "\u4E0D\u5B58\u5728");
  56. }
  57. else
  58. str = i18n[Config_1.default.lang];
  59. return I18n.format(str, args);
  60. };
  61. I18n.format = function (str, args) {
  62. var result = str;
  63. args.forEach(function (element, index) {
  64. result = result.replace("{" + index + "}", element);
  65. });
  66. return result;
  67. };
  68. I18n.getI18nLangArr = function (key) {
  69. var i18n = gameCfg_1.default.languageLang.getItem(key);
  70. var arr = this.temp;
  71. if (!i18n || !i18n[Config_1.default.lang]) {
  72. if (CC_PREVIEW)
  73. console.warn("\u591A\u8BED\u8A00languageLangArr: " + key + "," + Config_1.default.lang + "\u4E0D\u5B58\u5728");
  74. return arr;
  75. }
  76. else {
  77. try {
  78. arr = JSON.parse(i18n[Config_1.default.lang]);
  79. }
  80. catch (e) {
  81. if (CC_PREVIEW)
  82. console.error(e);
  83. }
  84. }
  85. return arr;
  86. };
  87. /**
  88. * 如果是zh-cn,则从原路径读取
  89. */
  90. I18n.LoadI18nTexture = function (node, url, callback) {
  91. if (callback === void 0) { callback = null; }
  92. var u = url;
  93. if (Config_1.default.lang != TypeConst_1.Lang.lang_zh_cn)
  94. u = Config_1.default.lang + "/" + url;
  95. Load_1.default.loadTexture(node, u, function (isSucc) {
  96. if (!isSucc) {
  97. console.warn(Config_1.default.lang + ": " + node.name + "\u8282\u70B9\u4E0A\u7684\u8D44\u6E90" + url + "\u52A0\u8F7D\u5931\u8D25");
  98. }
  99. if (callback)
  100. callback(isSucc);
  101. });
  102. };
  103. I18n.getEpsTypeName = function (type) {
  104. return I18n.getI18nText("common_eptype_" + type);
  105. };
  106. I18n.getMoneyDesc = function (money) {
  107. return I18n.getI18nText("money_desc", money);
  108. };
  109. I18n.getTaskDescKey = function (id) {
  110. return "task_desc_name_" + id;
  111. };
  112. I18n.getTaskDesc = function (id) {
  113. var args = [];
  114. for (var _i = 1; _i < arguments.length; _i++) {
  115. args[_i - 1] = arguments[_i];
  116. }
  117. return I18n.getI18nLang.apply(I18n, __spreadArrays([I18n.getTaskDescKey(id)], args));
  118. };
  119. I18n.getUserEpDesc = function (key) {
  120. var args = [];
  121. for (var _i = 1; _i < arguments.length; _i++) {
  122. args[_i - 1] = arguments[_i];
  123. }
  124. return I18n.getI18nLang.apply(I18n, __spreadArrays(["user_ep_desc_" + key], args));
  125. };
  126. I18n.getFazhenInfoName = function (id) {
  127. return I18n.getI18nLang("equip_info_name_" + id);
  128. };
  129. I18n.getFazhenSkillDesc = function (id) {
  130. var args = [];
  131. for (var _i = 1; _i < arguments.length; _i++) {
  132. args[_i - 1] = arguments[_i];
  133. }
  134. return I18n.getI18nLang.apply(I18n, __spreadArrays(["fazhen_skill_desc_" + id], args));
  135. };
  136. I18n.getFazhenSkillName = function (id) {
  137. var args = [];
  138. for (var _i = 1; _i < arguments.length; _i++) {
  139. args[_i - 1] = arguments[_i];
  140. }
  141. return I18n.getI18nLang("fazhen_skill_name_" + id);
  142. };
  143. I18n.getFazhenInfoDesc = function (id) {
  144. return I18n.getI18nLang("fazhen_info_desc_" + id);
  145. };
  146. I18n.getFushiEpDesc = function (key) {
  147. return I18n.getI18nLang("fushi_ep_desc_" + key);
  148. };
  149. I18n.getFushiItemName = function (id) {
  150. return I18n.getI18nLang("fushi_item_name_" + id);
  151. };
  152. I18n.getFushiEpName = function (key) {
  153. return I18n.getI18nLang("fushi_ep_name_" + key);
  154. };
  155. I18n.getFushiTaskdescContent = function (kind) {
  156. var args = [];
  157. for (var _i = 1; _i < arguments.length; _i++) {
  158. args[_i - 1] = arguments[_i];
  159. }
  160. return I18n.getI18nLang.apply(I18n, __spreadArrays(["fushi_taskdesc_content_" + kind], args));
  161. };
  162. I18n.getFushiTaskdescName = function (kind) {
  163. var args = [];
  164. for (var _i = 1; _i < arguments.length; _i++) {
  165. args[_i - 1] = arguments[_i];
  166. }
  167. return I18n.getI18nLang.apply(I18n, __spreadArrays(["fushi_taskdesc_name_" + kind], args));
  168. };
  169. I18n.getGuideInfoParam = function (id) {
  170. return I18n.getI18nLangArr("guide_info_pram_" + id);
  171. };
  172. I18n.getPveInfoName = function (id) {
  173. return I18n.getI18nLang("pve_info_name_" + id);
  174. };
  175. I18n.getJinxiuByTzDesc = function (tzid) {
  176. return I18n.getI18nLang("jinxiu_info_desc_" + tzid);
  177. };
  178. I18n.getJinxiuByTzName = function (tzid) {
  179. return I18n.getI18nLang("jinxiu_info_tzName" + tzid);
  180. };
  181. I18n.getYixiangInfoDesc = function (id) {
  182. return I18n.getI18nLang("yixiang_info_desc_" + id);
  183. };
  184. I18n.getYixiangInfoName = function (id) {
  185. return I18n.getI18nLang("yixiang_info_name_" + id);
  186. };
  187. I18n.getYixiangInfoSource = function (id) {
  188. return I18n.getI18nLang("yixiang_info_source_" + id);
  189. };
  190. I18n.getLiudaoInfoName = function (id) {
  191. return I18n.getI18nLang("liudao_info_name_" + id);
  192. };
  193. I18n.getLonggongJiaofuName = function (id) {
  194. return I18n.getI18nLang("longgong_jiaofu_name_" + id);
  195. };
  196. I18n.getDongtianPvdtName = function (id) {
  197. return I18n.getI18nLang("dongtian_pvdt_name_" + id);
  198. };
  199. I18n.getEquipPifugetDesc = function (id) {
  200. return I18n.getI18nLang("equip_pifu_getDesc_" + id);
  201. };
  202. I18n.getDongtianCarName = function (id) {
  203. return I18n.getI18nLang("dongtian_car_name_" + id);
  204. };
  205. I18n.getDongtianXlLvName = function (type, id) {
  206. return I18n.getI18nLang("dongtian_xlLv_name_" + type + "_" + id);
  207. };
  208. I18n.getPveJingyingName = function (id) {
  209. return I18n.getI18nLang("pve_jingying_name_" + id);
  210. };
  211. I18n.getPvwTypeName = function (id) {
  212. return I18n.getI18nLang("pvw_type_name_" + id);
  213. };
  214. I18n.getPvwMonsterName = function (id) {
  215. return I18n.getI18nLang("pvw_monster_name_" + id);
  216. };
  217. I18n.getReddotInfoName = function (id) {
  218. return I18n.getI18nLang("reddot_info_name_" + id);
  219. };
  220. I18n.getShengqiInfoName = function (id) {
  221. return I18n.getI18nLang("shengqi_info_name_" + id);
  222. };
  223. I18n.getShengqiInfoDesc = function (id) {
  224. return I18n.getI18nLang("shengqi_info_desc_" + id);
  225. };
  226. I18n.getShengqiInfoSkillDesc = function (id) {
  227. return I18n.getI18nLang("shengqi_info_skillDesc_" + id);
  228. };
  229. I18n.getShengqiInfoChipName = function (id) {
  230. return I18n.getI18nLang("shengqi_info_chipName_" + id);
  231. };
  232. I18n.getShengqiInfoChipDesc = function (id) {
  233. return I18n.getI18nLang("shengqi_info_chipDesc_" + id);
  234. };
  235. I18n.getShopCoinName = function (id) {
  236. return I18n.getI18nLang("shop_coin_name_" + id);
  237. };
  238. I18n.getShopDiamondName = function (id) {
  239. return I18n.getI18nLang("shop_diamond_name_" + id);
  240. };
  241. I18n.getShopKind11Title = function (id) {
  242. return I18n.getI18nLang("shop_kind11_title_" + id);
  243. };
  244. I18n.getSubscribeInfoContent = function (id) {
  245. return I18n.getI18nLang("subscribe_info_content_" + id);
  246. };
  247. I18n.getXianlvInfoName = function (id) {
  248. return I18n.getI18nLang("xianlv_info_name_" + id);
  249. };
  250. I18n.getMonClubBossName = function (id) {
  251. return I18n.getI18nLang("mon_clubBoss_name_" + id);
  252. };
  253. I18n.getHelpInfoDesc = function (id) {
  254. return I18n.getI18nLang("help_info_desc_" + id);
  255. };
  256. I18n.getXianlvSkill_DescDesc = function (id) {
  257. return I18n.getI18nLang("xianlv_skill_desc_desc_" + id);
  258. };
  259. I18n.getXianlvSkillName = function (id) {
  260. return I18n.getI18nLang("xianlv_skill_name_" + id);
  261. };
  262. I18n.getXiantuInfoName = function (id) {
  263. var kaiqiCfg = gameCfg_1.default.kaiqiInfo.getItem(id.toString());
  264. return I18n.getI18nLang(kaiqiCfg.name);
  265. };
  266. I18n.getXiantuInfoDesc = function (id) {
  267. var kaiqiCfg = gameCfg_1.default.kaiqiInfo.getItem(id.toString());
  268. return I18n.getI18nLang(kaiqiCfg.desc);
  269. };
  270. I18n.getZhaocaiPinzhirwdTitle = function (pinzhi) {
  271. return I18n.getI18nLang("zhaocai_pinzhi_rwdTitle_" + pinzhi);
  272. };
  273. I18n.getClubMijiName = function (type, id) {
  274. return I18n.getI18nLang("club_miji_name_" + type + "_" + id);
  275. };
  276. // 宗门旗帜描述
  277. I18n.getClubFlagDesc = function (id) {
  278. var args = [];
  279. for (var _i = 1; _i < arguments.length; _i++) {
  280. args[_i - 1] = arguments[_i];
  281. }
  282. return I18n.getI18nLang("club_flag_desc_" + id, args);
  283. };
  284. I18n.getFazhenJibanName = function (id) {
  285. return I18n.getI18nLang("fazhen_jiban_name_" + id);
  286. };
  287. I18n.getBaoshiInfoName = function (id) {
  288. return I18n.getI18nLang("baoshi_info_name_" + id);
  289. };
  290. I18n.getChenghaoInfoName = function (id) {
  291. return I18n.getI18nLang("chenghao_info_name_" + id);
  292. };
  293. I18n.getChenghaoInfoDesc = function (id) {
  294. return I18n.getI18nLang("chenghao_info_desc_" + id);
  295. };
  296. I18n.getEquipPifuName = function (id) {
  297. return I18n.getI18nLang("equip_pifu_name_" + id);
  298. };
  299. I18n.getEquipPifuDesc = function (id) {
  300. return I18n.getI18nLang("equip_pifu_desc_" + id);
  301. };
  302. I18n.getBaoshiItemName = function (id) {
  303. return I18n.getI18nLang("baoshi_item_name_" + id);
  304. };
  305. I18n.getBaoshiItemDesc = function (id) {
  306. return I18n.getI18nLang("baoshi_item_desc_" + id);
  307. };
  308. I18n.getJumpInfoName = function (id) {
  309. return I18n.getI18nLang("jump_info_name_" + id);
  310. };
  311. I18n.getShopFushizName = function (id) {
  312. return I18n.getI18nLang("shop_fushiz_name_" + id);
  313. };
  314. I18n.getReddotInfoDesc = function (id) {
  315. return I18n.getI18nLang("reddot_info_desc_" + id);
  316. };
  317. I18n.getFushiJitanName = function (id, saveid) {
  318. return I18n.getI18nLang("fushi_jitan_name_" + id + "_" + saveid);
  319. };
  320. I18n.getFushiItemDesc = function (id) {
  321. return I18n.getI18nLang("fushi_item_desc_" + id);
  322. };
  323. I18n.getJingguaiInfoName = function (id) {
  324. return I18n.getI18nLang("jingguai_info_name_" + id);
  325. };
  326. I18n.getJingguaiInfoDesc = function (id) {
  327. return I18n.getI18nLang("jingguai_info_desc_" + id);
  328. };
  329. I18n.getJingguaiPinzhiName = function (id) {
  330. return I18n.getI18nLang("jingguai_pinzhi_name_" + id);
  331. };
  332. I18n.getLiantiJingluoName = function (id) {
  333. return I18n.getI18nLang("lianti_jingluo_name_" + id);
  334. };
  335. I18n.getLiantiTipoDesc = function (id) {
  336. return I18n.getI18nLang("lianti_tipo_desc_" + id);
  337. };
  338. I18n.getShopJintiaoName = function (id) {
  339. return I18n.getI18nLang("shop_jintiao_name_" + id);
  340. };
  341. I18n.getMonXiongshouName = function (id) {
  342. return I18n.getI18nLang("mon_xiongshou_name_" + id);
  343. };
  344. I18n.getXiongshouMFDesc = function (id) {
  345. return I18n.getI18nLang("xiongshou_MF_desc_" + id);
  346. };
  347. I18n.getXiongshouNLName = function (id) {
  348. return I18n.getI18nLang("xiongshou_NL_name_" + id);
  349. };
  350. I18n.getXiongshouNLDes = function (id) {
  351. return I18n.getI18nLang("xiongshou_NL_des_" + id);
  352. };
  353. I18n.getDiZiPuGongDesc = function (key) {
  354. return I18n.getI18nLang("" + key);
  355. };
  356. //==========================================================================遮天==========================================================================
  357. I18n.getItemMoneyName = function (id) {
  358. // 道具名字
  359. return I18n.getI18nLang("item_money_name_" + id);
  360. };
  361. I18n.getItemMoneyDesc = function (id) {
  362. // 道具描述
  363. return I18n.getI18nLang("item_money_desc_" + id);
  364. };
  365. I18n.getZhenFaInfoName = function (id) {
  366. return I18n.getI18nLang("zhenfa_info_name_" + id);
  367. };
  368. I18n.getShouLingName = function (id) {
  369. return I18n.getI18nLang("shouling_name_" + id);
  370. };
  371. I18n.getShoulingSkillDesc = function (key) {
  372. return I18n.getI18nLang("" + key);
  373. };
  374. I18n.getShoulingTuJianName = function (key) {
  375. return I18n.getI18nLang("shouling_jiban_name_" + key);
  376. };
  377. I18n.getDiziBaseName = function (id) {
  378. var diziBase = gameCfg_1.default.huobanBase.getItem(id);
  379. return I18n.getI18nLang(diziBase === null || diziBase === void 0 ? void 0 : diziBase.name);
  380. };
  381. I18n.getDaoyouBaseDesc = function (id) {
  382. return I18n.getI18nLang("daoyou_base_desc_" + id);
  383. };
  384. I18n.getDaoYouSkillTypeName = function (id) {
  385. var args = [];
  386. for (var _i = 1; _i < arguments.length; _i++) {
  387. args[_i - 1] = arguments[_i];
  388. }
  389. return I18n.getI18nLang.apply(I18n, __spreadArrays(["daoyou_skillType_skillName_" + id], args));
  390. };
  391. I18n.getJingjieStepTitle = function (id) {
  392. return I18n.getI18nLang("jingjie_step_title_" + id);
  393. };
  394. I18n.getJingjieStepMiniTitle = function (id) {
  395. var title = I18n.getI18nLang("jingjie_step_title_" + id);
  396. var splitTitle = title.split("·");
  397. return splitTitle[splitTitle.length - 1];
  398. };
  399. I18n.getDiziJingjieStepTitle = function (pinzhi, jingjie) {
  400. var diziTuPoCfg = gameCfg_1.default.huobanTupo.getItem(pinzhi, jingjie);
  401. return I18n.getI18nLang(diziTuPoCfg.jingjie);
  402. };
  403. I18n.getDiziJingjieStepMiniTitle = function (pinzhi, jingjie) {
  404. var diziTuPoCfg = gameCfg_1.default.huobanTupo.getItem(pinzhi, jingjie);
  405. var title = I18n.getI18nLang(diziTuPoCfg.jingjie);
  406. var splitTitle = title.split("·");
  407. return splitTitle[splitTitle.length - 1];
  408. };
  409. I18n.getDiziJingjieStepDoubleTitle = function (pinzhi, jingjie) {
  410. var diziTuPoCfg = gameCfg_1.default.huobanTupo.getItem(pinzhi, jingjie);
  411. var title = I18n.getI18nLang(diziTuPoCfg.jingjie);
  412. var splitTitle = title.split("·");
  413. return [splitTitle[0], splitTitle[splitTitle.length - 1]];
  414. };
  415. I18n.getDaDiGuZiName = function (id) {
  416. // 古字名字
  417. return I18n.getI18nLang("dadiguzi_info_name_" + id);
  418. };
  419. I18n.getDaDiGuZiBuWeiName = function (id) {
  420. // 古字部位名字
  421. return I18n.getI18nLang("dadiguzi_info_buwei_" + id);
  422. };
  423. I18n.getDaDiGuZiTypeName = function (id) {
  424. // 古字类型名字(灵脉)
  425. return I18n.getI18nLang("dadiguzi_type_name_" + id);
  426. };
  427. I18n.getDaDiGuZiShuFaName = function (id) {
  428. // 术法名字
  429. return I18n.getI18nLang("shufa_name_des" + id);
  430. };
  431. I18n.getDaDiGuZiShuFaTypeName = function (id) {
  432. // 术法类型名字
  433. return I18n.getI18nLang("dadiguzi_xfinfo_type_" + id);
  434. };
  435. I18n.getDaDiGuZiSfinfoDesc = function (id) {
  436. // 术法技能描述
  437. return I18n.getI18nLang(id);
  438. };
  439. I18n.getDaDiGuZiXftjName = function (id) {
  440. // 图鉴名字
  441. return I18n.getI18nLang("dadiguzi_xftj_name_" + id);
  442. };
  443. I18n.getDaDiGuZiMingwenName = function (id) {
  444. // 铭文名字
  445. return I18n.getI18nLang("dadiguzi_mingwen_name_" + id);
  446. };
  447. I18n.getDaDiGuZiLingmaiDesc = function (id, count) {
  448. // 灵脉描述
  449. return I18n.getI18nLang("dadiguzi_lingmai_desc_" + id + "_" + count);
  450. };
  451. I18n.getDaoWenTzName = function (id) {
  452. // 道纹套装名字
  453. return I18n.getI18nLang("daowen_tz_info_name_" + id);
  454. };
  455. I18n.getDaoWenBwName = function (id) {
  456. // 道纹部位名字
  457. return I18n.getI18nLang("daowen_slot_name_" + id);
  458. };
  459. I18n.getDaoWenTzDesc = function (id) {
  460. // 道纹套装描述
  461. return I18n.getI18nLang("daowen_skill_des" + id);
  462. };
  463. I18n.getUserEpName = function (key) {
  464. // 属性名字
  465. return I18n.getI18nLang("user_ep_name_" + key);
  466. };
  467. I18n.getSkinName = function (key) {
  468. // 皮肤名字
  469. return I18n.getI18nLang("skin_skin_name_" + key);
  470. };
  471. I18n.getDiZiTuJianName = function (id) {
  472. // 图鉴名字
  473. return I18n.getI18nLang("dizi_tujian_name_" + id);
  474. };
  475. I18n.getDouFaNpcName = function (id, name) {
  476. if (id.toString().length < 6) //NPC读语言表
  477. {
  478. var npcName = I18n.getI18nLang("doufa_npc_name_" + id);
  479. return npcName;
  480. }
  481. return name;
  482. };
  483. I18n.getDouLuoNpcName = function (id, name) {
  484. if (id.toString().length < 6) //NPC读语言表
  485. {
  486. var npcCfg = gameCfg_1.default.douLuoNpc.getItem(id.toString());
  487. var npcName = I18n.getI18nLang(npcCfg === null || npcCfg === void 0 ? void 0 : npcCfg.name);
  488. return npcName;
  489. }
  490. return name;
  491. };
  492. I18n.getDouLuoNpcServer = function (id, name) {
  493. if (id.toString().length < 6) //NPC读语言表
  494. {
  495. var npcCfg = gameCfg_1.default.douLuoNpc.getItem(id.toString());
  496. var npcName = I18n.getI18nLang(npcCfg === null || npcCfg === void 0 ? void 0 : npcCfg.sevname);
  497. return npcName;
  498. }
  499. return name;
  500. };
  501. I18n.getYaoTianNpcName = function (id, name) {
  502. if (id.toString().length < 6) //NPC读语言表
  503. {
  504. var npcName = I18n.getI18nLang(name);
  505. return npcName;
  506. }
  507. return name;
  508. };
  509. I18n.getJingjieStepTitleByKey = function (key) {
  510. return I18n.getI18nLang(key);
  511. };
  512. I18n.getCnNum = function (key) {
  513. // 中文数字一到十
  514. return I18n.getI18nLang("number_" + key);
  515. };
  516. I18n.temp = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
  517. return I18n;
  518. }());
  519. exports.I18n = I18n;
  520. cc._RF.pop();
  521. }
  522. if (nodeEnv) {
  523. __define(__module.exports, __require, __module);
  524. }
  525. else {
  526. __quick_compile_project__.registerModuleFunc(__filename, function () {
  527. __define(__module.exports, __require, __module);
  528. });
  529. }
  530. })();
  531. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvdXRpbHMvSTE4blV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9DQUErQjtBQUMvQiw2Q0FBd0M7QUFFeEMscURBQXVFO0FBQ3ZFLCtCQUEwQjtBQUUxQjtJQUFBO0lBb2lCQSxDQUFDO0lBbmlCTyxnQkFBVyxHQUFsQixVQUFtQixHQUFXO1FBQUUsY0FBTzthQUFQLFVBQU8sRUFBUCxxQkFBTyxFQUFQLElBQU87WUFBUCw2QkFBTzs7UUFDdEMsSUFBSSxJQUFJLEdBQUcsaUJBQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFHLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLFVBQVU7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBb0IsR0FBRyxTQUFJLGdCQUFNLENBQUMsSUFBSSx1QkFBSyxDQUFDLENBQUM7U0FDMUU7O1lBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLGdCQUFXLEdBQWxCLFVBQW1CLEdBQVc7UUFBRSxjQUFPO2FBQVAsVUFBTyxFQUFQLHFCQUFPLEVBQVAsSUFBTztZQUFQLDZCQUFPOztRQUN0QyxJQUFJLElBQUksR0FBRyxpQkFBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxHQUFHLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJ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R0FBRyxpQkFBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEQsT0FBTyxPQUFPLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLHNCQUFpQixHQUF4QixVQUF5QixFQUFtQixFQUFFLElBQVk7UUFDekQsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQyxTQUFTO1NBQ3RDO1lBQ0MsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxPQUFPLE9BQU8sQ0FBQztTQUNmO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sNkJBQXdCLEdBQS9CLFVBQWdDLEdBQVc7UUFDMUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxhQUFRLEdBQWYsVUFBZ0IsR0FBb0I7UUFDbkMsVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFVLEdBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUF4Z0JlLFNBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBeWdCakUsV0FBQztDQXBpQkQsQUFvaUJDLElBQUE7QUFwaUJZLG9CQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZyBmcm9tIFwiLi4vQ29uZmlnXCI7XG5pbXBvcnQgR2FtZWNmZyBmcm9tIFwiLi4vY29tbW9uL2dhbWVDZmdcIjtcbmltcG9ydCB7IGdhbWVNZXRob2QgfSBmcm9tIFwiLi4vY29tbW9uL2dhbWVNZXRob2RcIjtcbmltcG9ydCB7IEZpZ2h0VHlwZU1hcCwgTGFuZywgVGFza0tpbmQgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9UeXBlQ29uc3RcIjtcbmltcG9ydCBMb2FkIGZyb20gXCIuL0xvYWRcIjtcblxuZXhwb3J0IGNsYXNzIEkxOG4ge1xuXHRzdGF0aWMgZ2V0STE4blRleHQoa2V5OiBzdHJpbmcsIC4uLmFyZ3MpIHtcblx0XHRsZXQgaTE4biA9IEdhbWVjZmcubGFuZ3VhZ2VDbGllbnRUZXh0LmdldEl0ZW0oa2V5KTtcblx0XHRsZXQgc3RyOiBzdHJpbmcgPSBrZXk7XG5cdFx0aWYgKCFpMThuIHx8ICFpMThuW0NvbmZpZy5sYW5nXSkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg5aSa6K+t6KiAbGFuZ3VhZ2VUZXh0OiAke2tleX0sJHtDb25maWcubGFuZ33kuI3lrZjlnKhgKTtcblx0XHR9IGVsc2Ugc3RyID0gaTE4bltDb25maWcubGFuZ107XG5cdFx0cmV0dXJuIEkxOG4uZm9ybWF0KHN0ciwgYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0STE4bkxhbmcoa2V5OiBzdHJpbmcsIC4uLmFyZ3MpIHtcblx0XHRsZXQgaTE4biA9IEdhbWVjZmcubGFuZ3VhZ2VMYW5nLmdldEl0ZW0oa2V5KTtcblx0XHRsZXQgc3RyOiBzdHJpbmcgPSBrZXk7XG5cdFx0aWYgKCFpMThuIHx8ICFpMThuW0NvbmZpZy5sYW5nXSkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg5aSa6K+t6KiAbGFuZ3VhZ2VMYW5nOiAke2tleX0sJHtDb25maWcubGFuZ33kuI3lrZjlnKhgKTtcblx0XHR9IGVsc2Ugc3RyID0gaTE4bltDb25maWcubGFuZ107XG5cdFx0cmV0dXJuIEkxOG4uZm9ybWF0KHN0ciwgYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZm9ybWF0KHN0cjogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xuXHRcdGxldCByZXN1bHQgPSBzdHI7XG5cdFx0YXJncy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuXHRcdFx0cmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoYHske2luZGV4fX1gLCBlbGVtZW50KTtcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0c3RhdGljIHJlYWRvbmx5IHRlbXAgPSBbe30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwge31dO1xuXHRzdGF0aWMgZ2V0STE4bkxhbmdBcnIoa2V5OiBzdHJpbmcpIHtcblx0XHRsZXQgaTE4biA9IEdhbWVjZmcubGFuZ3VhZ2VMYW5nLmdldEl0ZW0oa2V5KTtcblx0XHRsZXQgYXJyOiBhbnkgPSB0aGlzLnRlbXA7XG5cdFx0aWYgKCFpMThuIHx8ICFpMThuW0NvbmZpZy5sYW5nXSkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg5aSa6K+t6KiAbGFuZ3VhZ2VMYW5nQXJyOiAke2tleX0sJHtDb25maWcubGFuZ33kuI3lrZjlnKhgKTtcblx0XHRcdHJldHVybiBhcnI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFyciA9IEpTT04ucGFyc2UoaTE4bltDb25maWcubGFuZ10pO1xuXHRcdFx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLmVycm9yKGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYXJyO1xuXHR9XG5cblx0LyoqXG5cdCAqIOWmguaenOaYr3poLWNu77yM5YiZ5LuO5Y6f6Lev5b6E6K+75Y+WXG5cdCAqL1xuXHRzdGF0aWMgTG9hZEkxOG5UZXh0dXJlKG5vZGU6IGNjLk5vZGUsIHVybDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24gPSBudWxsKSB7XG5cdFx0bGV0IHUgPSB1cmw7XG5cdFx0aWYgKENvbmZpZy5sYW5nICE9IExhbmcubGFuZ196aF9jbikgdSA9IGAke0NvbmZpZy5sYW5nfS8ke3VybH1gO1xuXHRcdExvYWQubG9hZFRleHR1cmUobm9kZSwgdSwgKGlzU3VjYykgPT4ge1xuXHRcdFx0aWYgKCFpc1N1Y2MpIHtcblx0XHRcdFx0Y29uc29sZS53YXJuKGAke0NvbmZpZy5sYW5nfTogJHtub2RlLm5hbWV96IqC54K55LiK55qE6LWE5rqQJHt1cmx95Yqg6L295aSx6LSlYCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGlzU3VjYyk7XG5cdFx0fSk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RXBzVHlwZU5hbWUodHlwZTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4blRleHQoYGNvbW1vbl9lcHR5cGVfJHt0eXBlfWApO1xuXHR9XG5cblx0c3RhdGljIGdldE1vbmV5RGVzYyhtb25leTogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4blRleHQoXCJtb25leV9kZXNjXCIsIG1vbmV5KTtcblx0fVxuXG5cdHN0YXRpYyBnZXRUYXNrRGVzY0tleShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGB0YXNrX2Rlc2NfbmFtZV8ke2lkfWA7XG5cdH1cblxuXHRzdGF0aWMgZ2V0VGFza0Rlc2MoaWQ6IG51bWJlciB8IHN0cmluZywgLi4uYXJncykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKEkxOG4uZ2V0VGFza0Rlc2NLZXkoaWQpLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRVc2VyRXBEZXNjKGtleTogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHVzZXJfZXBfZGVzY18ke2tleX1gLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGYXpoZW5JbmZvTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGVxdWlwX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZhemhlblNraWxsRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGZhemhlbl9za2lsbF9kZXNjXyR7aWR9YCwgLi4uYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RmF6aGVuU2tpbGxOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIsIC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZmF6aGVuX3NraWxsX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGYXpoZW5JbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGZhemhlbl9pbmZvX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaUVwRGVzYyhrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9lcF9kZXNjXyR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZ1c2hpSXRlbU5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9pdGVtX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaUVwTmFtZShrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9lcF9uYW1lXyR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZ1c2hpVGFza2Rlc2NDb250ZW50KGtpbmQ6IHN0cmluZyB8IG51bWJlciwgLi4uYXJncykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV90YXNrZGVzY19jb250ZW50XyR7a2luZH1gLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaVRhc2tkZXNjTmFtZShraW5kOiBzdHJpbmcgfCBudW1iZXIsIC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZnVzaGlfdGFza2Rlc2NfbmFtZV8ke2tpbmR9YCwgLi4uYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0R3VpZGVJbmZvUGFyYW0oaWQ6IHN0cmluZyB8IG51bWJlcik6IGFueVtdIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZ0FycihgZ3VpZGVfaW5mb19wcmFtXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0UHZlSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBwdmVfaW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SmlueGl1QnlUekRlc2ModHppZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGppbnhpdV9pbmZvX2Rlc2NfJHt0emlkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEppbnhpdUJ5VHpOYW1lKHR6aWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBqaW54aXVfaW5mb190ek5hbWUke3R6aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WWl4aWFuZ0luZm9EZXNjKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeWl4aWFuZ19pbmZvX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRZaXhpYW5nSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB5aXhpYW5nX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFlpeGlhbmdJbmZvU291cmNlKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeWl4aWFuZ19pbmZvX3NvdXJjZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldExpdWRhb0luZm9OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgbGl1ZGFvX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldExvbmdnb25nSmlhb2Z1TmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGxvbmdnb25nX2ppYW9mdV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RG9uZ3RpYW5QdmR0TmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRvbmd0aWFuX3B2ZHRfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEVxdWlwUGlmdWdldERlc2MoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBlcXVpcF9waWZ1X2dldERlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREb25ndGlhbkNhck5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkb25ndGlhbl9jYXJfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldERvbmd0aWFuWGxMdk5hbWUodHlwZTogbnVtYmVyIHwgc3RyaW5nLCBpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRvbmd0aWFuX3hsTHZfbmFtZV8ke3R5cGV9XyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0UHZlSmluZ3lpbmdOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgcHZlX2ppbmd5aW5nX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRQdndUeXBlTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHB2d190eXBlX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRQdndNb25zdGVyTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHB2d19tb25zdGVyX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRSZWRkb3RJbmZvTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHJlZGRvdF9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTaGVuZ3FpSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaGVuZ3FpX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNoZW5ncWlJbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNoZW5ncWlfaW5mb19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hlbmdxaUluZm9Ta2lsbERlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaGVuZ3FpX2luZm9fc2tpbGxEZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hlbmdxaUluZm9DaGlwTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNoZW5ncWlfaW5mb19jaGlwTmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNoZW5ncWlJbmZvQ2hpcERlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaGVuZ3FpX2luZm9fY2hpcERlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTaG9wQ29pbk5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaG9wX2NvaW5fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNob3BEaWFtb25kTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNob3BfZGlhbW9uZF9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hvcEtpbmQxMVRpdGxlKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2hvcF9raW5kMTFfdGl0bGVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTdWJzY3JpYmVJbmZvQ29udGVudChpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHN1YnNjcmliZV9pbmZvX2NvbnRlbnRfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaWFubHZJbmZvTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHhpYW5sdl9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRNb25DbHViQm9zc05hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBtb25fY2x1YkJvc3NfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEhlbHBJbmZvRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGhlbHBfaW5mb19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WGlhbmx2U2tpbGxfRGVzY0Rlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB4aWFubHZfc2tpbGxfZGVzY19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WGlhbmx2U2tpbGxOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeGlhbmx2X3NraWxsX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaWFudHVJbmZvTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0bGV0IGthaXFpQ2ZnID0gR2FtZWNmZy5rYWlxaUluZm8uZ2V0SXRlbShpZC50b1N0cmluZygpKTtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhrYWlxaUNmZy5uYW1lKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaWFudHVJbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0bGV0IGthaXFpQ2ZnID0gR2FtZWNmZy5rYWlxaUluZm8uZ2V0SXRlbShpZC50b1N0cmluZygpKTtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhrYWlxaUNmZy5kZXNjKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRaaGFvY2FpUGluemhpcndkVGl0bGUocGluemhpOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgemhhb2NhaV9waW56aGlfcndkVGl0bGVfJHtwaW56aGl9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0Q2x1Yk1pamlOYW1lKHR5cGU6IG51bWJlciB8IHN0cmluZywgaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBjbHViX21pamlfbmFtZV8ke3R5cGV9XyR7aWR9YCk7XG5cdH1cblxuXHQvLyDlrpfpl6jml5fluJzmj4/ov7Bcblx0c3RhdGljIGdldENsdWJGbGFnRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nLCAuLi5hcmdzKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGNsdWJfZmxhZ19kZXNjXyR7aWR9YCwgYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RmF6aGVuSmliYW5OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZmF6aGVuX2ppYmFuX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRCYW9zaGlJbmZvTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGJhb3NoaV9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRDaGVuZ2hhb0luZm9OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgY2hlbmdoYW9faW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0Q2hlbmdoYW9JbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGNoZW5naGFvX2luZm9fZGVzY18ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEVxdWlwUGlmdU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBlcXVpcF9waWZ1X25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRFcXVpcFBpZnVEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZXF1aXBfcGlmdV9kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0QmFvc2hpSXRlbU5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBiYW9zaGlfaXRlbV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0QmFvc2hpSXRlbURlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBiYW9zaGlfaXRlbV9kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SnVtcEluZm9OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhganVtcF9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTaG9wRnVzaGl6TmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNob3BfZnVzaGl6X25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRSZWRkb3RJbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHJlZGRvdF9pbmZvX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaUppdGFuTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyLCBzYXZlaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9qaXRhbl9uYW1lXyR7aWR9XyR7c2F2ZWlkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZ1c2hpSXRlbURlc2MoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9pdGVtX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRKaW5nZ3VhaUluZm9OYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgamluZ2d1YWlfaW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SmluZ2d1YWlJbmZvRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGppbmdndWFpX2luZm9fZGVzY18ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEppbmdndWFpUGluemhpTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGppbmdndWFpX3BpbnpoaV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TGlhbnRpSmluZ2x1b05hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBsaWFudGlfamluZ2x1b19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TGlhbnRpVGlwb0Rlc2MoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBsaWFudGlfdGlwb19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hvcEppbnRpYW9OYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2hvcF9qaW50aWFvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRNb25YaW9uZ3Nob3VOYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgbW9uX3hpb25nc2hvdV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WGlvbmdzaG91TUZEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeGlvbmdzaG91X01GX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaW9uZ3Nob3VOTE5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB4aW9uZ3Nob3VfTkxfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFhpb25nc2hvdU5MRGVzKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeGlvbmdzaG91X05MX2Rlc18ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldERpWmlQdUdvbmdEZXNjKGtleTogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYCR7a2V5fWApO1xuXHR9XG5cblx0Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PemBruWkqT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblx0c3RhdGljIGdldEl0ZW1Nb25leU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOmBk+WFt+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBpdGVtX21vbmV5X25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRJdGVtTW9uZXlEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDpgZPlhbfmj4/ov7Bcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgaXRlbV9tb25leV9kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WmhlbkZhSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB6aGVuZmFfaW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hvdUxpbmdOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2hvdWxpbmdfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNob3VsaW5nU2tpbGxEZXNjKGtleTogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYCR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNob3VsaW5nVHVKaWFuTmFtZShrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaG91bGluZ19qaWJhbl9uYW1lXyR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldERpemlCYXNlTmFtZShpZDogc3RyaW5nKSB7XG5cdFx0bGV0IGRpemlCYXNlID0gR2FtZWNmZy5odW9iYW5CYXNlLmdldEl0ZW0oaWQpO1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGRpemlCYXNlPy5uYW1lKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYW95b3VCYXNlRGVzYyhpZDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhb3lvdV9iYXNlX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYW9Zb3VTa2lsbFR5cGVOYW1lKGlkOiBzdHJpbmcsIC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZGFveW91X3NraWxsVHlwZV9za2lsbE5hbWVfJHtpZH1gLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRKaW5namllU3RlcFRpdGxlKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgamluZ2ppZV9zdGVwX3RpdGxlXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SmluZ2ppZVN0ZXBNaW5pVGl0bGUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdGxldCB0aXRsZSA9IEkxOG4uZ2V0STE4bkxhbmcoYGppbmdqaWVfc3RlcF90aXRsZV8ke2lkfWApO1xuXHRcdGxldCBzcGxpdFRpdGxlOiBzdHJpbmdbXSA9IHRpdGxlLnNwbGl0KFwiwrdcIik7XG5cdFx0cmV0dXJuIHNwbGl0VGl0bGVbc3BsaXRUaXRsZS5sZW5ndGggLSAxXTtcblx0fVxuXG5cdHN0YXRpYyBnZXREaXppSmluZ2ppZVN0ZXBUaXRsZShwaW56aGk6IHN0cmluZywgamluZ2ppZTogc3RyaW5nKSB7XG5cdFx0bGV0IGRpemlUdVBvQ2ZnID0gR2FtZWNmZy5odW9iYW5UdXBvLmdldEl0ZW0ocGluemhpLCBqaW5namllKTtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhkaXppVHVQb0NmZy5qaW5namllKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREaXppSmluZ2ppZVN0ZXBNaW5pVGl0bGUocGluemhpOiBzdHJpbmcsIGppbmdqaWU6IHN0cmluZykge1xuXHRcdGxldCBkaXppVHVQb0NmZyA9IEdhbWVjZmcuaHVvYmFuVHVwby5nZXRJdGVtKHBpbnpoaSwgamluZ2ppZSk7XG5cdFx0bGV0IHRpdGxlID0gSTE4bi5nZXRJMThuTGFuZyhkaXppVHVQb0NmZy5qaW5namllKTtcblx0XHRsZXQgc3BsaXRUaXRsZTogc3RyaW5nW10gPSB0aXRsZS5zcGxpdChcIsK3XCIpO1xuXHRcdHJldHVybiBzcGxpdFRpdGxlW3NwbGl0VGl0bGUubGVuZ3RoIC0gMV07XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGl6aUppbmdqaWVTdGVwRG91YmxlVGl0bGUocGluemhpOiBzdHJpbmcsIGppbmdqaWU6IHN0cmluZykge1xuXHRcdGxldCBkaXppVHVQb0NmZyA9IEdhbWVjZmcuaHVvYmFuVHVwby5nZXRJdGVtKHBpbnpoaSwgamluZ2ppZSk7XG5cdFx0bGV0IHRpdGxlID0gSTE4bi5nZXRJMThuTGFuZyhkaXppVHVQb0NmZy5qaW5namllKTtcblx0XHRsZXQgc3BsaXRUaXRsZTogc3RyaW5nW10gPSB0aXRsZS5zcGxpdChcIsK3XCIpO1xuXHRcdHJldHVybiBbc3BsaXRUaXRsZVswXSwgc3BsaXRUaXRsZVtzcGxpdFRpdGxlLmxlbmd0aCAtIDFdXTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOWPpOWtl+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaUJ1V2VpTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g5Y+k5a2X6YOo5L2N5ZCN5a2XXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhZGlndXppX2luZm9fYnV3ZWlfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaVR5cGVOYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDlj6TlrZfnsbvlnovlkI3lrZco54G16ISJKVxuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV90eXBlX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaVNodUZhTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g5pyv5rOV5ZCN5a2XXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNodWZhX25hbWVfZGVzJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaVNodUZhVHlwZU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOacr+azleexu+Wei+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV94ZmluZm9fdHlwZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldERhRGlHdVppU2ZpbmZvRGVzYyhpZDogc3RyaW5nKSB7XG5cdFx0Ly8g5pyv5rOV5oqA6IO95o+P6L+wXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoaWQpO1xuXHR9XG5cblx0c3RhdGljIGdldERhRGlHdVppWGZ0ak5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOWbvumJtOWQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV94ZnRqX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaU1pbmd3ZW5OYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDpk63mloflkI3lrZdcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZGFkaWd1emlfbWluZ3dlbl9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGFEaUd1WmlMaW5nbWFpRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nLCBjb3VudDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g54G16ISJ5o+P6L+wXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhZGlndXppX2xpbmdtYWlfZGVzY18ke2lkfV8ke2NvdW50fWApO1xuXHR9XG5cblx0c3RhdGljIGdldERhb1dlblR6TmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g6YGT57q55aWX6KOF5ZCN5a2XXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhb3dlbl90el9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYW9XZW5Cd05hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOmBk+e6uemDqOS9jeWQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYW93ZW5fc2xvdF9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGFvV2VuVHpEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDpgZPnurnlpZfoo4Xmj4/ov7Bcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZGFvd2VuX3NraWxsX2RlcyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0VXNlckVwTmFtZShrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdC8vIOWxnuaAp+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB1c2VyX2VwX25hbWVfJHtrZXl9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2tpbk5hbWUoa2V5OiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHQvLyDnmq7ogqTlkI3lrZdcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2tpbl9za2luX25hbWVfJHtrZXl9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGlaaVR1Smlhbk5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdC8vIOWbvumJtOWQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkaXppX3R1amlhbl9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RG91RmFOcGNOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIsIG5hbWU6IHN0cmluZykge1xuXHRcdGlmIChpZC50b1N0cmluZygpLmxlbmd0aCA8IDYpLy9OUEPor7vor63oqIDooahcblx0XHR7XG5cdFx0XHRsZXQgbnBjTmFtZSA9IEkxOG4uZ2V0STE4bkxhbmcoYGRvdWZhX25wY19uYW1lXyR7aWR9YCk7XG5cdFx0XHRyZXR1cm4gbnBjTmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RG91THVvTnBjTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyLCBuYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoaWQudG9TdHJpbmcoKS5sZW5ndGggPCA2KS8vTlBD6K+76K+t6KiA6KGoXG5cdFx0e1xuXHRcdFx0bGV0IG5wY0NmZyA9IEdhbWVjZmcuZG91THVvTnBjLmdldEl0ZW0oaWQudG9TdHJpbmcoKSk7XG5cdFx0XHRsZXQgbnBjTmFtZSA9IEkxOG4uZ2V0STE4bkxhbmcobnBjQ2ZnPy5uYW1lKTtcblx0XHRcdHJldHVybiBucGNOYW1lO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdHN0YXRpYyBnZXREb3VMdW9OcGNTZXJ2ZXIoaWQ6IHN0cmluZyB8IG51bWJlciwgbmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKGlkLnRvU3RyaW5nKCkubGVuZ3RoIDwgNikvL05QQ+ivu+ivreiogOihqFxuXHRcdHtcblx0XHRcdGxldCBucGNDZmcgPSBHYW1lY2ZnLmRvdUx1b05wYy5nZXRJdGVtKGlkLnRvU3RyaW5nKCkpO1xuXHRcdFx0bGV0IG5wY05hbWUgPSBJMThuLmdldEkxOG5MYW5nKG5wY0NmZz8uc2V2bmFtZSk7XG5cdFx0XHRyZXR1cm4gbnBjTmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WWFvVGlhbk5wY05hbWUoaWQ6IHN0cmluZyB8IG51bWJlciwgbmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKGlkLnRvU3RyaW5nKCkubGVuZ3RoIDwgNikvL05QQ+ivu+ivreiogOihqFxuXHRcdHtcblx0XHRcdGxldCBucGNOYW1lID0gSTE4bi5nZXRJMThuTGFuZyhuYW1lKTtcblx0XHRcdHJldHVybiBucGNOYW1lO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdHN0YXRpYyBnZXRKaW5namllU3RlcFRpdGxlQnlLZXkoa2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhrZXkpO1xuXHR9XG5cblx0c3RhdGljIGdldENuTnVtKGtleTogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0Ly8g5Lit5paH5pWw5a2X5LiA5Yiw5Y2BXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYG51bWJlcl8ke2tleX1gKTtcblx0fVxufVxuIl19