buildMapPreviewHtml = (world, map) => {
					var text = "";
					const containerStyles = {
						"font-size":"11px",
						"white-space":"nowrap",
					};
					const title = KC3Meta.term("BattleHistoryMinimapPreview").format(world, map);
					text += $("<div></div>").css({
						"width": "100%", "text-align": "center",
						"font-weight": "bold",
					}).text(title).prop("outerHTML");
					// Minimap images generated with tsunkit, eg: https://tsunkit.net/api/assets/images/maps/5-5?cleared=true&bigLetters=true&scale=0.25
					const mapId = [world, map].join("");
					const minimapImg = $("<img />")
						.attr("src", `/assets/img/client/minimaps/m${mapId}.png`)
						.attr("width", 300).attr("height", 180)
						.attr("alt", KC3Meta.term("MinimapImageFailure"));
					text += $("<div></div>").css("width", 300).css("height", 180)
						.append(minimapImg).prop("outerHTML");
					// Add LBAS range map if any, image generator: https://tsunkit.net/api/assets/images/maps/7-4?cleared=true&lbas=0&scale=0.25
					if(self.maps["m" + mapId].airBase > 0){
						const lbasMapImg = $("<img />")
							.attr("src", `/assets/img/client/minimaps/ab${mapId}.png`)
							.attr("width", 300).attr("height", 180)
							.attr("alt", KC3Meta.term("LbasRangeImageFailure"));
						text += $("<div></div>").css("width", 300).css("height", 180)
							.append(lbasMapImg).prop("outerHTML");
					}
					const elosBranches = KC3Meta.eLosNodeFactorBranches(mapId),
						elosBranchesKeys = Object.keys(elosBranches);
					if(elosBranchesKeys.length > 0){
						text += $("<div></div>").css("font-weight", "bold")
							.text(KC3Meta.term("BattleHistoryElosBranchesTitle")).prop("outerHTML");
						const elosInfo = $("<div></div>").css({
							"margin": "5px", "display":"grid",
							"grid-template-columns":"auto auto auto auto auto",
							"column-gap":"16px", "grid-column-gap":"16px",
						});
						elosBranchesKeys.forEach(nodeKey => {
							const nodeLine = $("<div></div>");
							const nodeInfo = elosBranches[nodeKey],
								nodeName = nodeInfo.node || nodeKey,
								lower = nodeInfo.lower || [],
								upper = nodeInfo.upper || [];
							nodeLine.append(`<div>\u25c9${nodeName}</div>`);
							nodeLine.append(`<div>\u00d7${nodeInfo.factor || "?"}</div>`);
							nodeLine.append(`<div>\u003c ${lower[0] || "??"} \u27a1 ${lower[1] || "?"}</div>`);
							nodeLine.append(`<div>\u2265 ${upper[0] || "??"} \u27a1 ${upper[1] || "?"}</div>`);
							nodeLine.append(`<div style="color:orangered;">${nodeInfo.note || ""}</div>`);
							elosInfo.append(nodeLine.html());
						});
						text += elosInfo.prop("outerHTML");
					}
					return $("<div></div>").css(containerStyles)
						.html(text).prop("outerHTML");
				}
Load missing world info from localStorage if any.