mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-06 15:52:47 +00:00
2780 lines
156 KiB
HTML
Executable File
2780 lines
156 KiB
HTML
Executable File
<?php
|
||
|
||
// Included files
|
||
require_once __DIR__ . "/backend/common.php";
|
||
require_once __DIR__ . "/backend/language.php";
|
||
require_once __DIR__ . "/backend/resources.php";
|
||
|
||
|
||
// Constants
|
||
|
||
// Language
|
||
$language = getLanguage();
|
||
|
||
// Year
|
||
$year = getYear();
|
||
|
||
// Is crawler
|
||
$isCrawler = array_key_exists("HTTP_USER_AGENT", $_SERVER) === TRUE && is_string($_SERVER["HTTP_USER_AGENT"]) === TRUE && mb_stristr($_SERVER["HTTP_USER_AGENT"], "googlebot") !== FALSE;
|
||
|
||
|
||
// Main function
|
||
|
||
// Set content language header
|
||
header("Content-Language: " . $language);
|
||
|
||
?><!DOCTYPE html>
|
||
<html class="translatable" lang="<?= encodeString($language); ?>" dir="<?= encodeString(getConstant("Direction")); ?>">
|
||
|
||
<head>
|
||
|
||
<meta charset="UTF-8">
|
||
|
||
<?php
|
||
|
||
// Go through all available languages
|
||
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
|
||
|
||
// Display language alternative page
|
||
echo "<link rel=\"alternate\" hreflang=\"" . encodeString($languageIdentifier) . "\" href=\"http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/?" . urlencode("Language") . "=" . urlencode($languageIdentifier) . "\">";
|
||
|
||
// Check if available language has an extension locale code that's not the same as its language identifier
|
||
if(array_key_exists("Constants", $availableLanguage) === TRUE && array_key_exists("Extension Locale Code", $availableLanguage["Constants"]) === TRUE && $availableLanguage["Constants"]["Extension Locale Code"] !== $languageIdentifier) {
|
||
|
||
// Display language alternative page
|
||
echo "<link rel=\"alternate\" hreflang=\"" . encodeString($availableLanguage["Constants"]["Extension Locale Code"]) . "\" href=\"http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/?" . urlencode("Language") . "=" . urlencode($languageIdentifier) . "\">";
|
||
}
|
||
}
|
||
?>
|
||
|
||
<link rel="alternate" hreflang="x-default" href="<?= "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/"; ?>">
|
||
<link rel="canonical" href="<?= "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/" . (($language !== DEFAULT_LANGUAGE) ? "?" . urlencode("Language") . "=" . urlencode($language) : ""); ?>">
|
||
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||
|
||
<script>
|
||
|
||
// Use strict
|
||
"use strict";
|
||
|
||
|
||
// Constants
|
||
|
||
// Index not found
|
||
var INDEX_NOT_FOUND = -1;
|
||
|
||
// Scroll tolerance
|
||
var SCROLL_TOLERANCE = 2;
|
||
|
||
// Show loading delay milliseconds
|
||
var SHOW_LOADING_DELAY_MILLISECONDS = 100;
|
||
|
||
|
||
// Global variables
|
||
|
||
// Loading error occurred
|
||
var loadingErrorOccurred = false;
|
||
|
||
// Script error occurred
|
||
var scriptErrorOccurred = false;
|
||
|
||
// DOM content loaded
|
||
var domContentLoaded = false;
|
||
|
||
// Error shown
|
||
var errorShown = false;
|
||
|
||
// Use application error handler
|
||
var useApplicationErrorHandler = false;
|
||
|
||
|
||
// Supporting function implementation
|
||
|
||
// Array index
|
||
function arrayIndex(array, value) {
|
||
|
||
// Go through all values in the array
|
||
for(var i = 0; i < array["length"]; ++i)
|
||
|
||
// Check if array value matches the value
|
||
if(array[i] === value)
|
||
|
||
// Return index
|
||
return i;
|
||
|
||
// Return index not found
|
||
return INDEX_NOT_FOUND;
|
||
}
|
||
|
||
// Add event
|
||
function addEvent(element, event, callback) {
|
||
|
||
// Check if element add event listener is supported
|
||
if(typeof element.addEventListener !== "undefined")
|
||
|
||
// Add event listener to the element
|
||
element.addEventListener(event, callback);
|
||
|
||
// Otherwise check if element attach event is supported
|
||
else if(typeof element.attachEvent !== "undefined")
|
||
|
||
// Attach event to the element
|
||
element.attachEvent("on" + event, callback);
|
||
}
|
||
|
||
// Add class
|
||
function addClass(element, className) {
|
||
|
||
// Check if element has no classes
|
||
if(typeof element["className"] === "undefined" || element["className"] === null || element["className"]["length"] === 0)
|
||
|
||
// Set element's classes to class
|
||
element["className"] = className;
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Get all of the element's classes
|
||
var classes = element["className"].split(" ");
|
||
|
||
// Check if element doesn't already have the class
|
||
if(arrayIndex(classes, className) === INDEX_NOT_FOUND)
|
||
|
||
// Append class to element's classes
|
||
element["className"] += " " + className;
|
||
}
|
||
}
|
||
|
||
// Remove class
|
||
function removeClass(element, className) {
|
||
|
||
// Check if element has classes
|
||
if(typeof element["className"] !== "undefined" && element["className"] !== null && element["className"]["length"] !== 0) {
|
||
|
||
// Get all of the element's classes
|
||
var classes = element["className"].split(" ");
|
||
|
||
// Check if element has the class
|
||
var classIndex = arrayIndex(classes, className);
|
||
if(classIndex !== INDEX_NOT_FOUND) {
|
||
|
||
// Remove class from classes
|
||
classes.splice(classIndex, 1);
|
||
|
||
// Set element's classes to changed classes
|
||
element["className"] = classes.join(" ");
|
||
}
|
||
}
|
||
}
|
||
|
||
// Has class
|
||
function hasClass(element, className) {
|
||
|
||
// Check if element has classes
|
||
if(typeof element["className"] !== "undefined" && element["className"] !== null && element["className"]["length"] !== 0) {
|
||
|
||
// Get all of the element's classes
|
||
var classes = element["className"].split(" ");
|
||
|
||
// Check if element has the class
|
||
var classIndex = arrayIndex(classes, className);
|
||
if(classIndex !== INDEX_NOT_FOUND)
|
||
|
||
// Return true
|
||
return true;
|
||
}
|
||
|
||
// Return false
|
||
return false;
|
||
}
|
||
|
||
// Get element
|
||
function getElement(parent, tagName, className) {
|
||
|
||
// Get all elements with the tag name
|
||
var elements = parent.getElementsByTagName(tagName);
|
||
|
||
// Go through all elements with the tag name
|
||
for(var i = 0; i < elements["length"]; ++i)
|
||
|
||
// Check if element has the class
|
||
if(hasClass(elements[i], className) === true)
|
||
|
||
// Return element
|
||
return elements[i];
|
||
}
|
||
|
||
// Escape HTML
|
||
function escapeHtml(string) {
|
||
|
||
// Initialize result
|
||
var result = "";
|
||
|
||
// Go through all characters in the string
|
||
for(var i = 0; i < string["length"]; ++i) {
|
||
|
||
// Check if character is a less than
|
||
if(string.charAt(i) === "<")
|
||
|
||
// Append less than HTML entity to result
|
||
result += "<";
|
||
|
||
// Otherwise check if character is a greater than
|
||
else if(string.charAt(i) === ">")
|
||
|
||
// Append greater than HTML entity to result
|
||
result += ">";
|
||
|
||
// Otherwise check if character is an ampersand
|
||
else if(string.charAt(i) === "&")
|
||
|
||
// Append ampersand HTML entity to result
|
||
result += "&";
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Append character to result
|
||
result += string.charAt(i);
|
||
}
|
||
|
||
// Return result
|
||
return result;
|
||
}
|
||
|
||
// On resize
|
||
function onResize() {
|
||
|
||
// Get message display
|
||
var messageDisplay = getElement(document, "aside", "message");
|
||
|
||
// Get message display text
|
||
var messageDisplayText = messageDisplay.getElementsByTagName("p")[0];
|
||
|
||
// Check if message display is shown
|
||
if(hasClass(messageDisplay, "hide") === false || hasClass(messageDisplay, "noScriptShow") === true) {
|
||
|
||
// Check if message display text has scroll bars
|
||
if(messageDisplayText["scrollHeight"] > messageDisplayText["clientHeight"]) {
|
||
|
||
// Add message display text separator
|
||
addClass(messageDisplayText["parentNode"], "separate");
|
||
|
||
// Check if message display text's offset width is supported
|
||
if(typeof messageDisplayText["offsetWidth"] !== "undefined" && messageDisplayText["offsetWidth"] !== null) {
|
||
|
||
// Get scrollbar width
|
||
var scrollbarWidth = messageDisplayText["offsetWidth"] - messageDisplayText["clientWidth"] + "px";
|
||
|
||
// Set message display arrows margin to scrollbar width
|
||
getElement(messageDisplay, "span", "upArrow")["style"]["marginRight"] = scrollbarWidth;
|
||
getElement(messageDisplay, "span", "downArrow")["style"]["marginRight"] = scrollbarWidth;
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Set message display arrows margin to a safe value
|
||
addClass(getElement(messageDisplay, "span", "upArrow"), "safeMargin");
|
||
addClass(getElement(messageDisplay, "span", "downArrow"), "safeMargin");
|
||
}
|
||
|
||
}
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Remove message display text separator
|
||
removeClass(messageDisplayText["parentNode"], "separate");
|
||
}
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Remove message display text separator
|
||
removeClass(messageDisplayText["parentNode"], "separate");
|
||
|
||
// Scroll message display text to add or remove arrows
|
||
onScroll();
|
||
}
|
||
|
||
// On scroll
|
||
function onScroll() {
|
||
|
||
// Get message display text
|
||
var messageDisplayText = getElement(document, "aside", "message").getElementsByTagName("p")[0];
|
||
|
||
// Check if message display text's scroll top is supported
|
||
if(typeof messageDisplayText["scrollTop"] !== "undefined" && messageDisplayText["scrollTop"] !== null) {
|
||
|
||
// Check if scrolled to the top
|
||
if(messageDisplayText["scrollTop"] <= 0)
|
||
|
||
// Hide scroll up arrow
|
||
removeClass(messageDisplayText["parentNode"], "scrollUp");
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Show scroll up arrow
|
||
addClass(messageDisplayText["parentNode"], "scrollUp");
|
||
|
||
// Check if scrolled to the bottom
|
||
if(Math.abs(messageDisplayText["scrollHeight"] - messageDisplayText["clientHeight"] - messageDisplayText["scrollTop"]) <= SCROLL_TOLERANCE || messageDisplayText["scrollHeight"] - messageDisplayText["scrollTop"] <= messageDisplayText["clientHeight"]) {
|
||
|
||
// Hide scroll down arrow
|
||
removeClass(messageDisplayText["parentNode"], "scrollDown");
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Show scroll down arrow
|
||
addClass(messageDisplayText["parentNode"], "scrollDown");
|
||
}
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Hide scroll up arrow
|
||
removeClass(messageDisplayText["parentNode"], "scrollUp");
|
||
|
||
// Hide scroll down arrow
|
||
removeClass(messageDisplayText["parentNode"], "scrollDown");
|
||
}
|
||
}
|
||
|
||
// Is extension
|
||
function isExtension() {
|
||
|
||
// Return if extension
|
||
return typeof location !== "undefined" && location["protocol"]["length"] > "-extension:"["length"] && location["protocol"].substring(location["protocol"]["length"] - "-extension:"["length"]) === "-extension:";
|
||
}
|
||
|
||
// Is app
|
||
function isApp() {
|
||
|
||
// Return if app
|
||
return isExtension() === false && ((typeof navigator === "object" && navigator !== null && "standalone" in navigator === true && navigator["standalone"] === true) || (typeof matchMedia === "function" && matchMedia("(display-mode: standalone)")["matches"] === true));
|
||
}
|
||
|
||
// Show error
|
||
function showError() {
|
||
|
||
// Check if error hasn't been shown and not using the application error handler
|
||
if(errorShown === false && useApplicationErrorHandler === false) {
|
||
|
||
// Set error shown
|
||
errorShown = true;
|
||
|
||
// Get body
|
||
var body = getElement(document, "body", "loading");
|
||
|
||
// Hide loading
|
||
removeClass(body, "loading");
|
||
|
||
// Get message display
|
||
var messageDisplay = getElement(document, "aside", "message");
|
||
|
||
// Get message display text
|
||
var messageDisplayText = messageDisplay.getElementsByTagName("p")[0];
|
||
|
||
// Window resize event
|
||
addEvent(window, "resize", onResize);
|
||
|
||
// Message display text scroll event
|
||
addEvent(messageDisplayText, "scroll", onScroll);
|
||
|
||
// Resize window
|
||
onResize();
|
||
|
||
// Check if a loading error occurred
|
||
if(loadingErrorOccurred === true) {
|
||
|
||
<?php
|
||
|
||
// Check if crawler
|
||
if($isCrawler === TRUE) {
|
||
?>
|
||
|
||
// Set header message
|
||
var headerMessage = "<?= escapeString(getTranslation('MWC Wallet')); ?>";
|
||
|
||
// Set header text
|
||
var headerText = "<?= escapeString(getDefaultTranslation('MWC Wallet')); ?>";
|
||
|
||
// Set text message
|
||
var textMessage = "<?= escapeString(getTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>";
|
||
|
||
// Set text text
|
||
var textText = "<?= escapeString(getDefaultTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>";
|
||
|
||
<?php
|
||
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
?>
|
||
|
||
// Set header message
|
||
var headerMessage = "<?= escapeString(getTranslation('Loading Error')); ?>";
|
||
|
||
// Set header text
|
||
var headerText = "<?= escapeString(getDefaultTranslation('Loading Error')); ?>";
|
||
|
||
// Check if is an app
|
||
if(isApp() === true) {
|
||
|
||
// Set text message
|
||
var textMessage = "<?= escapeString(getTranslation('Failed to load resources. Restart this app to try again.')); ?>";
|
||
|
||
// Set text text
|
||
var textText = "<?= escapeString(getDefaultTranslation('Failed to load resources. Restart this app to try again.')); ?>";
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Set text message
|
||
var textMessage = "<?= escapeString(getTranslation('Failed to load resources. Refresh this site to try again.')); ?>";
|
||
|
||
// Set text text
|
||
var textText = "<?= escapeString(getDefaultTranslation('Failed to load resources. Refresh this site to try again.')); ?>";
|
||
}
|
||
|
||
<?php
|
||
|
||
}
|
||
?>
|
||
}
|
||
|
||
// Otherwise check if a script error occurred
|
||
else if(scriptErrorOccurred === true) {
|
||
|
||
// Set header message
|
||
var headerMessage = "<?= escapeString(getTranslation('Compatibility Error')); ?>";
|
||
|
||
// Set header text
|
||
var headerText = "<?= escapeString(getDefaultTranslation('Compatibility Error')); ?>";
|
||
|
||
// Set text message
|
||
var textMessage = "<?= escapeString(getTranslation('Your browser isn\'t compatible. Update your browser to continue.')); ?>";
|
||
|
||
// Set text text
|
||
var textText = "<?= escapeString(getDefaultTranslation('Your browser isn\'t compatible. Update your browser to continue.')); ?>";
|
||
}
|
||
|
||
// Get loading display
|
||
var loadingDisplay = getElement(document, "div", "loading");
|
||
|
||
// Get message display header
|
||
var messageDisplayHeader = messageDisplay.getElementsByTagName("h2")[0];
|
||
|
||
// Set message display header message
|
||
messageDisplayHeader["innerHTML"] = escapeHtml(headerMessage);
|
||
|
||
// Check if message display header dataset is supported
|
||
if(typeof messageDisplayHeader["dataset"] !== "undefined")
|
||
|
||
// Set message display header dataset text
|
||
messageDisplayHeader["dataset"]["text"] = headerText;
|
||
|
||
// Get message display text content
|
||
var messageDisplayTextContent = getElement(messageDisplayText, "span", "text").getElementsByTagName("span")[0];
|
||
|
||
// Set message display text content message
|
||
messageDisplayTextContent["innerHTML"] = escapeHtml(textMessage);
|
||
|
||
// Check if message display text content dataset is supported
|
||
if(typeof messageDisplayTextContent["dataset"] !== "undefined")
|
||
|
||
// Set message display text content dataset text
|
||
messageDisplayTextContent["dataset"]["text"] = textText;
|
||
|
||
// Set timeout
|
||
setTimeout(function() {
|
||
|
||
// Check if message display text's scroll top is supported
|
||
if(typeof messageDisplayText["scrollTop"] !== "undefined" && messageDisplayText["scrollTop"] !== null)
|
||
|
||
// Scroll to the top of message display text
|
||
messageDisplayText["scrollTop"] = 0;
|
||
|
||
// Show message display
|
||
removeClass(messageDisplay, "hide");
|
||
|
||
// Prevent message display arrows from fading
|
||
addClass(messageDisplay, "noArrowTransition");
|
||
|
||
// Resize window to add or remove text separator
|
||
onResize();
|
||
|
||
// Allow message display arrows to fade
|
||
removeClass(messageDisplay, "noArrowTransition");
|
||
|
||
// Hide loading display spinner
|
||
addClass(getElement(loadingDisplay, "div", "spinner"), "hide");
|
||
|
||
}, SHOW_LOADING_DELAY_MILLISECONDS);
|
||
|
||
// Check if history is supported and URL query string exists
|
||
if(typeof history === "object" && history !== null && typeof URL_QUERY_STRING !== "undefined") {
|
||
|
||
// Change displayed URL to include the query string
|
||
history.replaceState(NO_STATE, document["title"], ((location["protocol"] === "file:") ? location["protocol"] + "//" : "") + location["pathname"] + URL_QUERY_STRING);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Startup error occurred
|
||
function startupErrorOccurred() {
|
||
|
||
// Return if a loading or script error occurred
|
||
return loadingErrorOccurred === true || scriptErrorOccurred === true;
|
||
}
|
||
|
||
// Process loading error
|
||
function processLoadingError(element, failed) {
|
||
|
||
// Check if resource failed to load
|
||
if(failed === true || (typeof element["sheet"] !== "undefined" && element["sheet"] !== null && typeof element["sheet"]["cssRules"] !== "undefined" && element["sheet"]["cssRules"] !== null && element["sheet"]["cssRules"]["length"] === 0)) {
|
||
|
||
// Check if not using the application error handler
|
||
if(useApplicationErrorHandler === false) {
|
||
|
||
// Set loading error occurred
|
||
loadingErrorOccurred = true;
|
||
}
|
||
|
||
// Check if DOM content was already loaded
|
||
if(domContentLoaded === true)
|
||
|
||
// Show error
|
||
showError();
|
||
}
|
||
}
|
||
|
||
// Enable application error handler
|
||
function enableApplicationErrorHandler() {
|
||
|
||
// Set use application error handler
|
||
useApplicationErrorHandler = true;
|
||
}
|
||
|
||
// Using application error handler
|
||
function usingApplicationErrorHandler() {
|
||
|
||
// Return if using application error handler
|
||
return useApplicationErrorHandler === true;
|
||
}
|
||
|
||
|
||
// Main function
|
||
|
||
// Log message
|
||
console.log("%c%s", "color: red; font-size: 30px; text-transform: uppercase;", "<?= escapeString(getTranslation('If someone asked you to copy/paste something here you are being scammed!!!')); ?>");
|
||
|
||
// Make older browsers aware of newer tags
|
||
document.createElement("aside");
|
||
document.createElement("section");
|
||
|
||
// Window error event
|
||
addEvent(window, "error", function() {
|
||
|
||
// Check if not using the application error handler
|
||
if(useApplicationErrorHandler === false) {
|
||
|
||
// Set script error occurred
|
||
scriptErrorOccurred = true;
|
||
}
|
||
|
||
// Check if DOM content was already loaded
|
||
if(domContentLoaded === true)
|
||
|
||
// Show error
|
||
showError();
|
||
});
|
||
|
||
// Document ready state change event
|
||
addEvent(document, "readystatechange", function(event) {
|
||
|
||
// Check if document is complete
|
||
if(document["readyState"] === "complete") {
|
||
|
||
// Check if DOM content hasn't already loaded
|
||
if(domContentLoaded === false) {
|
||
|
||
// Set DOM content loaded
|
||
domContentLoaded = true;
|
||
|
||
// Check if a startup error occurred
|
||
if(startupErrorOccurred() === true)
|
||
|
||
// Show error
|
||
showError();
|
||
}
|
||
}
|
||
});
|
||
|
||
</script>
|
||
|
||
<link rel="preload" as="image" href="<?= encodeString(getResource("./images/logo_big.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
|
||
<link rel="preload" as="image" href="<?= encodeString(getResource("./images/logo_small.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/open_sans/open_sans-1.10.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/open_sans/open_sans_semibold-1.10.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/mwc/mwc.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/grin/grin.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/epic/epic.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/btc/btc.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="font" href="<?= encodeString(getResource("./fonts/eth/eth.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous">
|
||
<link rel="preload" as="image" href="<?= encodeString(getResource("./images/circle.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
|
||
<link rel="preload" as="image" href="<?= encodeString(getResource("./images/down_arrow.svg")); ?>" onerror="processLoadingError(this, true);" type="image/svg+xml">
|
||
|
||
<link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/normalize.css-8.0.1.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/normalize.css-8.0.1.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);">
|
||
<link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/open_sans/open_sans.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/open_sans/open_sans.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);">
|
||
<link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/font_awesome/font_awesome.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/font_awesome/font_awesome.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);">
|
||
|
||
<style>
|
||
|
||
.hide {
|
||
display: none;
|
||
}
|
||
|
||
* {
|
||
touch-action: none;
|
||
}
|
||
|
||
p, li, h2, h3 {
|
||
cursor: default;
|
||
}
|
||
|
||
::selection {
|
||
background: #D4B7F2;
|
||
}
|
||
|
||
.scrollable, .scrollable * {
|
||
touch-action: pan-y;
|
||
}
|
||
|
||
:focus {
|
||
outline: none !important;
|
||
}
|
||
|
||
::-ms-reveal, ::-ms-clear {
|
||
display: none !important;
|
||
}
|
||
|
||
::-webkit-caps-lock-indicator, ::-webkit-credentials-auto-fill-button {
|
||
display: none !important;
|
||
width: 0 !important;
|
||
margin: 0 !important;
|
||
}
|
||
|
||
::-moz-focus-inner {
|
||
border: 0 !important;
|
||
}
|
||
|
||
select:-moz-focusring {
|
||
color: transparent !important;
|
||
-moz-text-shadow: 0 0 0 white !important;
|
||
text-shadow: 0 0 0 white !important;
|
||
}
|
||
|
||
[draggable] {
|
||
-ms-user-select: none;
|
||
-mox-user-select: none;
|
||
-webkit-user-select: none;
|
||
-o-user-select: none;
|
||
user-select: none;
|
||
cursor: move;
|
||
}
|
||
|
||
@viewport {
|
||
zoom: 1.0;
|
||
width: device-width;
|
||
}
|
||
|
||
html {
|
||
margin: 0;
|
||
padding: 0;
|
||
height: 100%;
|
||
}
|
||
|
||
body {
|
||
white-space: normal;
|
||
white-space: break-spaces;
|
||
padding: 0;
|
||
width: 100%;
|
||
margin: auto;
|
||
font-family: "Open Sans", Arial, sans-serif;
|
||
height: 100%;
|
||
position: fixed;
|
||
-moz-user-select: none;
|
||
-webkit-user-select: none;
|
||
-o-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
-webkit-tap-highlight-color: transparent;
|
||
-webkit-touch-callout: none;
|
||
top: 0;
|
||
left: 0;
|
||
background: #7A00D9;
|
||
background: linear-gradient(to right, #9E00E7, #3600C9);
|
||
min-width: 250px;
|
||
min-height: 350px;
|
||
overflow: hidden;
|
||
font-size: 100%;
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
|
||
body.loading, body.loading * {
|
||
cursor: wait !important;
|
||
}
|
||
|
||
body > div {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
position: relative;
|
||
min-height: 0;
|
||
align-items: center;
|
||
}
|
||
|
||
body > div > div {
|
||
align-items: center;
|
||
height: 100%;
|
||
position: relative;
|
||
top: 0;
|
||
left: 0;
|
||
padding: 0;
|
||
margin: 0 auto;
|
||
flex-grow: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
justify-content: center;
|
||
min-height: 0;
|
||
}
|
||
|
||
main {
|
||
height: 100%;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
position: relative;
|
||
}
|
||
|
||
main > div {
|
||
height: 100%;
|
||
display: flex;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
width: calc(100% - 4em);
|
||
margin: auto;
|
||
max-height: 900px;
|
||
align-items: center;
|
||
position: relative;
|
||
}
|
||
|
||
main > div > div {
|
||
height: 100%;
|
||
display: flex;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
max-width: 30em;
|
||
margin: auto;
|
||
}
|
||
|
||
main > div > div > div.logo {
|
||
background-image: url("<?= encodeString(getResource("./images/logo_big.svg")); ?>");
|
||
background-size: 100%;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
flex-grow: 1;
|
||
visibility: visible;
|
||
opacity: 1;
|
||
transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
|
||
}
|
||
|
||
main > div > div > div.logo.hide {
|
||
display: block;
|
||
visibility: hidden;
|
||
opacity: 0;
|
||
}
|
||
|
||
@media only screen and (max-width: 500px) {
|
||
|
||
main > div > div > div.logo {
|
||
background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
|
||
background-size: 59%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 450px) {
|
||
|
||
main > div > div > div.logo {
|
||
background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
|
||
background-size: 50%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 800px) {
|
||
|
||
main > div > div > div.logo {
|
||
background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
|
||
background-size: 50%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (min-width: 451px) and (max-height: 800px) {
|
||
|
||
main > div > div > div.logo {
|
||
background-image: url("<?= encodeString(getResource("./images/logo_small.svg")); ?>");
|
||
background-size: 40%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 350px) {
|
||
|
||
main > div > div > div.logo {
|
||
background-size: 0%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 600px) {
|
||
|
||
main > div > div > div.logo {
|
||
background-size: 0%;
|
||
}
|
||
}
|
||
|
||
div.loading > div.spinner {
|
||
display: none;
|
||
display: flex;
|
||
flex-direction: column;
|
||
height: 50%;
|
||
visibility: visible;
|
||
opacity: 1;
|
||
transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
|
||
align-items: center;
|
||
}
|
||
|
||
div.loading > div.spinner.hide {
|
||
display: flex;
|
||
visibility: hidden;
|
||
opacity: 0;
|
||
}
|
||
|
||
@media only screen and (max-height: 800px) {
|
||
|
||
div.loading > div.spinner {
|
||
height: 60%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 450px) {
|
||
|
||
div.loading > div.spinner {
|
||
height: 60%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 750px) {
|
||
|
||
div.loading > div.spinner {
|
||
height: 68%;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 350px) {
|
||
|
||
div.loading > div.spinner {
|
||
height: 100%;
|
||
justify-content: center;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 600px) {
|
||
|
||
div.loading > div.spinner {
|
||
height: 100%;
|
||
justify-content: center;
|
||
}
|
||
}
|
||
|
||
@keyframes spin {
|
||
|
||
0% {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
100% {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
|
||
div.loading > div.spinner > div {
|
||
border: 0.7em solid white;
|
||
border-bottom: 0.7em solid #6D00D7;
|
||
border-bottom: 0.7em solid transparent;
|
||
border-right: 0.7em solid #6D00D7;
|
||
border-right: 0.7em solid transparent;
|
||
border-radius: 50%;
|
||
width: 4em;
|
||
height: 4em;
|
||
animation: spin 1.3s linear infinite;
|
||
margin-top: 7em;
|
||
}
|
||
|
||
@media only screen and (max-width: 350px) {
|
||
|
||
div.loading > div.spinner > div {
|
||
margin-top: 0;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 600px) {
|
||
|
||
div.loading > div.spinner > div {
|
||
margin-top: 0;
|
||
}
|
||
}
|
||
|
||
div.loading > div.spinner > p {
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
white-space: pre;
|
||
text-align: center;
|
||
overflow: hidden;
|
||
width: 100%;
|
||
margin: 0.6em 2em 0 2em;
|
||
color: white;
|
||
font-family: "Open Sans", Arial, sans-serif;
|
||
font-size: 19pt;
|
||
padding-bottom: 0.2em;
|
||
}
|
||
|
||
aside.message {
|
||
width: 100%;
|
||
height: 100%;
|
||
position: absolute;
|
||
z-index: 4;
|
||
top: 0;
|
||
left: 0;
|
||
display: table;
|
||
display: flex;
|
||
align-items: center;
|
||
background: rgba(0, 0, 0, 0.31);
|
||
visibility: visible;
|
||
opacity: 1;
|
||
transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
|
||
}
|
||
|
||
aside.message.hide {
|
||
display: flex;
|
||
visibility: hidden;
|
||
opacity: 0;
|
||
pointer-events: none;
|
||
}
|
||
|
||
aside.message.hide * {
|
||
pointer-events: none;
|
||
}
|
||
|
||
aside.message > div {
|
||
width: calc(100% - 4em);
|
||
margin: auto;
|
||
padding: 0 2em;
|
||
display: table-cell;
|
||
vertical-align: middle;
|
||
display: flex;
|
||
max-width: 55em;
|
||
height: 100%;
|
||
align-items: center;
|
||
visibility: visible;
|
||
opacity: 1;
|
||
transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
|
||
}
|
||
|
||
aside.message.noMessage > div {
|
||
visibility: hidden;
|
||
opacity: 0;
|
||
}
|
||
|
||
aside.message > div > div {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: space-around;
|
||
margin: auto;
|
||
background: white;
|
||
box-shadow: 0 0 10px 3px rgba(0, 0, 0, 0.2);
|
||
width: 100%;
|
||
max-height: 70%;
|
||
max-width: 51em;
|
||
overflow: hidden;
|
||
}
|
||
|
||
@media only screen and (max-width: 500px) {
|
||
|
||
aside.message > div > div {
|
||
max-height: calc(100% - 4em);
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 600px) {
|
||
|
||
aside.message > div > div {
|
||
max-height: calc(100% - 4em);
|
||
}
|
||
}
|
||
|
||
aside.message > div > div > h2 {
|
||
font-weight: normal;
|
||
color: #3600C9;
|
||
font-size: 20pt;
|
||
margin: 0 2em 0.7em 2em;
|
||
padding-top: 1em;
|
||
white-space: nowrap;
|
||
white-space: pre;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
max-width: calc(100% - 4em);
|
||
flex-shrink: 0;
|
||
line-height: 1.4em;
|
||
cursor: default;
|
||
text-align: center;
|
||
}
|
||
|
||
@media only screen and (max-width: 600px) {
|
||
|
||
aside.message > div > div > h2 {
|
||
font-size: 19pt;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 400px) {
|
||
|
||
aside.message > div > div > h2 {
|
||
font-size: 19pt;
|
||
}
|
||
}
|
||
|
||
aside.message > div > div > p {
|
||
overflow-y: auto;
|
||
overflow-x: hidden;
|
||
min-height: 5.5em;
|
||
color: #3600C9;
|
||
font-size: 16pt;
|
||
text-align: center;
|
||
margin: 0;
|
||
width: 100%;
|
||
padding: 0.3em 0;
|
||
cursor: default;
|
||
flex-grow: 1;
|
||
position: relative;
|
||
z-index: 5;
|
||
scrollbar-width: thin;
|
||
}
|
||
|
||
@media only screen and (max-width: 600px) {
|
||
|
||
aside.message > div > div > p {
|
||
font-size: 15pt;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 400px) {
|
||
|
||
aside.message > div > div > p {
|
||
min-height: 0.5em;
|
||
max-height: 5.5em;
|
||
font-size: 15pt;
|
||
height: 5.5em;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 500px) {
|
||
|
||
aside.message > div > div > p {
|
||
font-size: 14pt;
|
||
}
|
||
}
|
||
|
||
aside.message.noButtons > div > div > p {
|
||
min-height: 2em;
|
||
}
|
||
|
||
aside.message > div > div.separate > p {
|
||
border-top: 0.15em solid #3600C9;
|
||
border-bottom: 0.15em solid #3600C9;
|
||
}
|
||
|
||
aside.message > div > div > span.upArrow, aside.message > div > div > span.downArrow {
|
||
font-family: "Font Awesome";
|
||
font-weight: bold;
|
||
position: relative;
|
||
align-self: stretch;
|
||
color: #3600C9;
|
||
display: none;
|
||
visibility: hidden;
|
||
opacity: 0;
|
||
transition: opacity 0.14s ease-in-out, visibility 0.14s ease-in-out;
|
||
margin-right: 0;
|
||
}
|
||
|
||
aside.message > div > div > span.upArrow.safeMargin, aside.message > div > div > span.downArrow.safeMargin {
|
||
margin-right: 20px;
|
||
}
|
||
|
||
aside.message.noArrowTransition > div > div > span.upArrow, aside.message.noArrowTransition > div > div > span.downArrow {
|
||
transition: none;
|
||
}
|
||
|
||
aside.message > div > div.separate > span.upArrow, aside.message > div > div.separate > span.downArrow {
|
||
display: block;
|
||
}
|
||
|
||
@media only screen and (max-height: 350px) {
|
||
|
||
aside.message > div > div.separate > span.upArrow {
|
||
display: none;
|
||
}
|
||
|
||
aside.message.noButtons > div > div.separate > span.upArrow {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
aside.message > div > div.scrollUp > span.upArrow, aside.message > div > div.scrollDown > span.downArrow {
|
||
visibility: visible;
|
||
opacity: 1;
|
||
}
|
||
|
||
@keyframes moveDown {
|
||
|
||
0% {
|
||
margin-top: 0;
|
||
}
|
||
|
||
50% {
|
||
margin-top: 3px;
|
||
}
|
||
|
||
100% {
|
||
margin-top: 0;
|
||
}
|
||
}
|
||
|
||
aside.message > div > div > span.upArrow::before, aside.message > div > div > span.downArrow::before {
|
||
content: "\F0DE";
|
||
position: absolute;
|
||
right: 0.3em;
|
||
top: 0.2em;
|
||
font-size: 26pt;
|
||
animation: moveDown 0.7s linear infinite;
|
||
}
|
||
|
||
@keyframes moveUp {
|
||
|
||
0% {
|
||
margin-top: 0;
|
||
}
|
||
|
||
50% {
|
||
margin-top: -3px;
|
||
}
|
||
|
||
100% {
|
||
margin-top: 0;
|
||
}
|
||
}
|
||
|
||
aside.message > div > div > span.downArrow::before {
|
||
top: -0.2em;
|
||
transform: rotateZ(180deg) translateY(100%);
|
||
animation: moveUp 0.7s linear infinite;
|
||
}
|
||
|
||
@media only screen and (max-width: 600px) {
|
||
|
||
aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
|
||
font-size: 23pt;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 400px) {
|
||
|
||
aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
|
||
font-size: 23pt;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 500px) {
|
||
|
||
aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
|
||
font-size: 20pt;
|
||
padding-top: 1px;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-width: 350px) {
|
||
|
||
aside.message > div > div.separate > span.upArrow::before, aside.message > div > div.separate > span.downArrow::before {
|
||
right: 0.1em;
|
||
}
|
||
}
|
||
|
||
aside.message > div > div > p > span.text {
|
||
margin: 0 2em;
|
||
display: block;
|
||
line-height: 1.4em;
|
||
padding: 0;
|
||
word-break: break-word;
|
||
}
|
||
|
||
@media only screen and (max-width: 350px) {
|
||
|
||
aside.message > div > div > p > span.text {
|
||
margin: 0 1em;
|
||
}
|
||
}
|
||
|
||
aside.message > div > div > p > span.text span.lineBreak {
|
||
display: block;
|
||
height: 0.5em;
|
||
}
|
||
|
||
aside.message > div > div > div {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
margin: 0.6em 1em 0 1em;
|
||
flex-shrink: 0;
|
||
font-size: 16pt;
|
||
max-width: 100%;
|
||
}
|
||
|
||
aside.message.noButtons > div > div > div {
|
||
flex-wrap: nowrap;
|
||
height: 2em;
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
aside.message > div > div > div > button {
|
||
color: #3600C9;
|
||
margin: 0 1em 0.6em 1em;
|
||
background: white;
|
||
border: 0.15em solid #3600C9;
|
||
min-width: 7em;
|
||
line-height: 2.2em;
|
||
white-space: nowrap;
|
||
white-space: pre;
|
||
max-width: calc(100% - 4em);
|
||
flex-shrink: 0;
|
||
font-size: 16pt;
|
||
}
|
||
|
||
aside.message > div > div > div > button:disabled {
|
||
pointer-events: auto;
|
||
}
|
||
|
||
aside.message.hide > div > div > div > button {
|
||
pointer-events: none;
|
||
}
|
||
|
||
aside.message.noButtons > div > div > div > button {
|
||
display: block;
|
||
visibility: hidden;
|
||
margin: 0;
|
||
height: 2em;
|
||
padding: 0;
|
||
cursor: default;
|
||
}
|
||
|
||
@media only screen and (max-width: 500px) {
|
||
|
||
aside.message > div > div > div, aside.message > div > div > div > button {
|
||
font-size: 15pt;
|
||
}
|
||
}
|
||
|
||
@media only screen and (max-height: 400px) {
|
||
|
||
aside.message > div > div > div, aside.message > div > div > div > button {
|
||
font-size: 15pt;
|
||
}
|
||
}
|
||
</style>
|
||
|
||
<!--[if lt IE 8]>
|
||
<style>
|
||
|
||
div.loading {
|
||
display: none;
|
||
}
|
||
|
||
aside.message {
|
||
overflow: hidden;
|
||
}
|
||
|
||
aside.message > div > div {
|
||
margin-top: 10%;
|
||
}
|
||
|
||
aside.message.noScriptShow, aside.message.errorShow {
|
||
display: block;
|
||
}
|
||
|
||
button {
|
||
visibility: hidden;
|
||
}
|
||
</style>
|
||
<![endif]-->
|
||
|
||
<!--[if lte IE 8]>
|
||
<noscript>
|
||
<style>
|
||
|
||
body {
|
||
background: white;
|
||
}
|
||
|
||
body > div > div > div {
|
||
display: none;
|
||
}
|
||
|
||
div.maintenanceNotification, div.cookieAcceptance, div.installApp {
|
||
display: none;
|
||
}
|
||
|
||
body > div > div > div.message {
|
||
display: block;
|
||
margin: 1em;
|
||
}
|
||
|
||
body > div > div > div.message button {
|
||
display: none;
|
||
}
|
||
</style>
|
||
</noscript>
|
||
<![endif]-->
|
||
|
||
<noscript>
|
||
<style>
|
||
.noScriptHide {
|
||
display: none !important;
|
||
}
|
||
|
||
.noScriptShow {
|
||
display: flex !important;
|
||
visibility: visible !important;
|
||
opacity: 1 !important;
|
||
pointer-events: auto !important;
|
||
}
|
||
|
||
.noScriptShow * {
|
||
pointer-events: auto !important;
|
||
}
|
||
|
||
body.loading, body.loading * {
|
||
cursor: default !important;
|
||
}
|
||
</style>
|
||
</noscript>
|
||
|
||
<link class="translatable" rel="manifest" href="<?= encodeString(getResource("./site.webmanifest")); ?>" crossorigin="use-credentials">
|
||
<meta name="msapplication-config" content="<?= encodeString(getResource("./browserconfig.xml")); ?>">
|
||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||
<meta name="mobile-web-app-capable" content="yes">
|
||
<meta name="apple-touch-fullscreen" content="yes">
|
||
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
||
<meta name="msapplication-TileColor" content="<?= encodeString(BACKGROUND_COLOR); ?>">
|
||
<link rel="mask-icon" color="<?= encodeString(BACKGROUND_COLOR); ?>" href="<?= encodeString(getResource(MASK_IMAGE)); ?>">
|
||
<title class="translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>"><?= encodeString(getTranslation('MWC Wallet')); ?></title>
|
||
<meta class="translatable" name="apple-mobile-web-app-title" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" content="<?= encodeString(getTranslation('MWC Wallet')); ?>">
|
||
<meta class="translatable" name="application-name" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" content="<?= encodeString(getTranslation('MWC Wallet')); ?>">
|
||
<meta class="translatable" name="msapplication-tooltip" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" content="<?= encodeString(getTranslation('MWC Wallet')); ?>">
|
||
<meta name="msapplication-starturl" content="<?= "http" . ((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") ? "s" : "") . "://" . rawurlencode($_SERVER["SERVER_NAME"]) . "/"; ?>">
|
||
<meta class="translatable" name="description" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>" content="<?= encodeString(getTranslation('MWC Wallet is a self-custodial web wallet that allows you to manage your MimbleWimble Coin in your web browser.')); ?>">
|
||
<meta class="translatable" name="author" data-text="<?= encodeString(getDefaultTranslation('Nicolas Flamel')); ?>" content="<?= encodeString(getTranslation('Nicolas Flamel')); ?>">
|
||
<link rel="schema.dcterms" href="http://purl.org/dc/terms/">
|
||
<meta class="translatable" name="dcterms.rightsHolder" data-text="<?= encodeString(getDefaultTranslation('Nicolas Flamel')); ?>" content="<?= encodeString(getTranslation('Nicolas Flamel')); ?>">
|
||
|
||
<?php
|
||
|
||
// Check if copyright year is newer than the copyright year
|
||
if($year > COPYRIGHT_YEAR) {
|
||
|
||
// Display copyright information with the current year
|
||
echo "<meta class=\"translatable\" name=\"dcterms.dateCopyrighted\" data-text=\"" . encodeString(getDefaultTranslation('%1$s–%2$s')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR), sprintf("%.0F", $year)]) . "' content=\"" . encodeString(getTranslation('%1$s–%2$s', [getNumberTranslation(COPYRIGHT_YEAR), getNumberTranslation($year)])) . "\">";
|
||
echo "<meta class=\"translatable\" name=\"dcterms.rights\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s–%2$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR), sprintf("%.0F", $year)]) . "' content=\"" . encodeString(getTranslation('© %1$s–%2$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR), getNumberTranslation($year)])) . "\">";
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Display copyright information with the copyright year
|
||
echo "<meta class=\"translatable\" name=\"dcterms.dateCopyrighted\" data-text=\"" . encodeString("%1\$s") . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR)]) . "' content=\"" . encodeString(getTranslation("%1\$s", [getNumberTranslation(COPYRIGHT_YEAR)])) . "\">";
|
||
echo "<meta class=\"translatable\" name=\"dcterms.rights\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR)]) . "' content=\"" . encodeString(getTranslation('© %1$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR)])) . "\">";
|
||
}
|
||
|
||
// Display theme color
|
||
echo "<meta name=\"theme-color\" content=\"" . encodeString(THEME_COLOR) . "\">";
|
||
|
||
// Check if not crawler
|
||
if($isCrawler === FALSE) {
|
||
|
||
// Go through all touch icons
|
||
foreach(TOUCH_ICONS as $touchIcon) {
|
||
|
||
// Check if touch icon's parts aren't provided
|
||
if(count($touchIcon) !== count(TOUCH_ICON_PARTS))
|
||
|
||
// Display touch icon
|
||
echo "<link rel=\"apple-touch-icon\" href=\"" . encodeString(getResource($touchIcon[0])) . "\">";
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Display touch icon
|
||
echo "<link rel=\"apple-touch-icon\" sizes=\"" . encodeString($touchIcon[TOUCH_ICON_PARTS["X Dimension"]]) . "x" . encodeString($touchIcon[TOUCH_ICON_PARTS["Y Dimension"]]) . "\" href=\"" . encodeString(getResource($touchIcon[TOUCH_ICON_PARTS["File Path"]])) . "\">";
|
||
}
|
||
}
|
||
|
||
// Go through all favicons
|
||
foreach(FAVICONS as $favicon) {
|
||
|
||
// Check if favicon's parts aren't provided
|
||
if(count($favicon) !== count(FAVICON_PARTS))
|
||
|
||
// Display favicon
|
||
echo "<link rel=\"icon\" type=\"image/x-icon\" href=\"" . encodeString(getResource($favicon[0])) . "\">";
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Display favicon
|
||
echo "<link rel=\"icon\" type=\"image/png\" sizes=\"" . encodeString($favicon[FAVICON_PARTS["X Dimension"]]) . "x" . encodeString($favicon[FAVICON_PARTS["Y Dimension"]]) . "\" href=\"" . encodeString(getResource($favicon[FAVICON_PARTS["File Path"]])) . "\">";
|
||
}
|
||
|
||
// Go through all app icons
|
||
foreach(APP_ICONS as $appIcon) {
|
||
|
||
// Check if app icon's parts aren't provided
|
||
if(count($appIcon) !== count(APP_ICON_PARTS))
|
||
|
||
// Display app icon
|
||
echo "<link rel=\"icon\" type=\"image/svg+xml\" href=\"" . encodeString(getResource($appIcon[0])) . "\">";
|
||
|
||
// Otherwise check if app icon can be used as a favicon
|
||
else if($appIcon[APP_ICON_PARTS["Use As Favicon"]] === TRUE)
|
||
|
||
// Display app icon
|
||
echo "<link rel=\"icon\" type=\"image/png\" sizes=\"" . encodeString($appIcon[APP_ICON_PARTS["X Dimension"]]) . "x" . encodeString($appIcon[APP_ICON_PARTS["Y Dimension"]]) . "\" href=\"" . encodeString(getResource($appIcon[APP_ICON_PARTS["File Path"]])) . "\">";
|
||
}
|
||
|
||
// Go through all tile images
|
||
foreach(TILE_IMAGES as $tileImage)
|
||
|
||
// Display tile image
|
||
echo "<meta name=\"msapplication-" . encodeString(mb_strtolower($tileImage[TILE_IMAGE_PARTS["Ratio"]])) . encodeString($tileImage[TILE_IMAGE_PARTS["X Dimension"]]) . "x" . encodeString($tileImage[TILE_IMAGE_PARTS["Y Dimension"]]) . "logo\" content=\"" . encodeString(getResource($tileImage[TILE_IMAGE_PARTS["File Path"]])) . "\">";
|
||
?>
|
||
|
||
</head>
|
||
|
||
<body class="loading" spellcheck="false"><!--
|
||
--><div><!--
|
||
--><div><!--
|
||
--><section class="maintenanceNotification hide noFocus"><!--
|
||
--><div class="maintenanceNotification"><!--
|
||
--><span></span><!--
|
||
--><button><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('OK')); ?>"><?= encodeString(getTranslation('OK')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></section><!--
|
||
--><main><!--
|
||
--><div class="language normalTransitionSpeed hide"><!--
|
||
--><div><!--
|
||
--><select tabindex="-1"><!--
|
||
|
||
--><?php
|
||
|
||
// Go through all available languages
|
||
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
|
||
|
||
// Display language currency option
|
||
echo "<option value=\"" . encodeString($languageIdentifier) . "\"" . (($language === $languageIdentifier) ? " selected=\"selected\" disabled=\"disabled\"" : "") . ">" . encodeString($availableLanguage["Constants"]["Language"]) . "</option>";
|
||
}
|
||
?><!--
|
||
|
||
--></select><!--
|
||
--><button><!--
|
||
--><span class="icon"></span><!--
|
||
--><span><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Language')); ?>"><?= encodeString(getTranslation('Language')); ?></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--><div class="scrollable hide"><!--
|
||
|
||
--><?php
|
||
|
||
// Go through all available languages
|
||
foreach(getAvailableLanguages() as $languageIdentifier => $availableLanguage) {
|
||
|
||
// Display available language button
|
||
echo "<button data-language=\"" . encodeString($languageIdentifier) . "\"" . (($language === $languageIdentifier) ? " disabled=\"disabled\"" : "") . "><img src=\"" . encodeString(getResource($availableLanguage["Constants"]["Image"])) . "\"><span>" . encodeString($availableLanguage["Constants"]["Language"]) . "</span></button>";
|
||
}
|
||
?><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="locked"><!--
|
||
--><div class="logo hide notLoaded"><!--
|
||
--><canvas></canvas><!--
|
||
--></div><!--
|
||
--><div class="loading"><!--
|
||
--><div class="logo"></div><!--
|
||
--><div class="spinner"><!--
|
||
--><div class="noScriptHide"></div><!--
|
||
--><p class="noScriptHide translatable" data-text="<?= encodeString(getDefaultTranslation('Loading…')); ?>"><?= encodeString(getTranslation('Loading…')); ?></p><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="info hide"><!--
|
||
--></div><!--
|
||
--><div class="create hide"><!--
|
||
--><div class="logo"></div><!--
|
||
--><form class="hide"><!--
|
||
--><p class="verifySource translatable" data-text="<?= encodeString(getDefaultTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?>"><?= encodeString(getTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?></p><!--
|
||
--><input class="hide translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" type="hidden" name="Username" value="<?= encodeString(getTranslation('MWC Wallet')); ?>" autocomplete="off" autocapitalize="off" spellcheck="false"><!--
|
||
--><div><!--
|
||
--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
|
||
--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('Password')); ?>" type="password" name="Password" placeholder="<?= encodeString(getTranslation('Password')); ?>" autocomplete="new-password" autocapitalize="off" spellcheck="false"><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
|
||
--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirm Password')); ?>" type="password" name="Confirm Password" placeholder="<?= encodeString(getTranslation('Confirm Password')); ?>" autocomplete="new-password" autocapitalize="off" spellcheck="false"><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--><button type="submit"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Create')); ?>"><?= encodeString(getTranslation('Create')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></form><!--
|
||
--></div><!--
|
||
--><div class="unlock hide"><!--
|
||
--><div class="logo"></div><!--
|
||
--><form class="hide"><!--
|
||
--><p class="verifySource translatable" data-text="<?= encodeString(getDefaultTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?>"><?= encodeString(getTranslation('If you paid to access MWC Wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back')); ?></p><!--
|
||
--><input class="hide translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet')); ?>" type="hidden" name="Username" value="<?= encodeString(getTranslation('MWC Wallet')); ?>" autocomplete="off" autocapitalize="off" spellcheck="false"><!--
|
||
--><div><!--
|
||
--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
|
||
--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('Password')); ?>" type="password" name="Password" placeholder="<?= encodeString(getTranslation('Password')); ?>" autocomplete="current-password" autocapitalize="off" spellcheck="false"><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--><button type="submit"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Unlock')); ?>"><?= encodeString(getTranslation('Unlock')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--><div class="status"><!--
|
||
--><p class="node translatable" data-text="<?= encodeString(getDefaultTranslation('Node disconnected')); ?>" title="<?= encodeString(getTranslation('Node disconnected')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Node')); ?>"><?= encodeString(getTranslation('Node')); ?></span><!--
|
||
--></p><!--
|
||
--><p class="listener translatable" data-text="<?= encodeString(getDefaultTranslation('Listener disconnected')); ?>" title="<?= encodeString(getTranslation('Listener disconnected')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Listener')); ?>"><?= encodeString(getTranslation('Listener')); ?></span><!--
|
||
--></p><!--
|
||
--></div><!--
|
||
--></form><!--
|
||
--><div class="deleteAllWallets hide"><!--
|
||
--><button><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Delete All Wallets')); ?>"><?= encodeString(getTranslation('Delete All Wallets')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="unlocked hide"><!--
|
||
--><div class="hide"><!--
|
||
--><div class="menu"><!--
|
||
--><div><!--
|
||
--><button class="about translatable" data-text="<?= encodeString(getDefaultTranslation('About')); ?>" title="<?= encodeString(getTranslation('About')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('About')); ?>"><?= encodeString(getTranslation('About')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="account translatable" data-text="<?= encodeString(getDefaultTranslation('Account')); ?>" title="<?= encodeString(getTranslation('Account')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Account')); ?>"><?= encodeString(getTranslation('Account')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="settings translatable" data-text="<?= encodeString(getDefaultTranslation('Settings')); ?>" title="<?= encodeString(getTranslation('Settings')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Settings')); ?>"><?= encodeString(getTranslation('Settings')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="log translatable" data-text="<?= encodeString(getDefaultTranslation('Log')); ?>" title="<?= encodeString(getTranslation('Log')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Log')); ?>"><?= encodeString(getTranslation('Log')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="lock translatable" data-text="<?= encodeString(getDefaultTranslation('Lock')); ?>" title="<?= encodeString(getTranslation('Lock')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Lock')); ?>"><?= encodeString(getTranslation('Lock')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><div class="wallets"><!--
|
||
--><div class="hide"><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallets')); ?>"><?= encodeString(getTranslation('Wallets')); ?></h2><!--
|
||
--><div class="new"><!--
|
||
--><button class="create translatable" data-text="<?= encodeString(getDefaultTranslation('Create')); ?>" title="<?= encodeString(getTranslation('Create')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Create')); ?>"><?= encodeString(getTranslation('Create')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="recover translatable" data-text="<?= encodeString(getDefaultTranslation('Recover')); ?>" title="<?= encodeString(getTranslation('Recover')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Recover')); ?>"><?= encodeString(getTranslation('Recover')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="hardware translatable" data-text="<?= encodeString(getDefaultTranslation('Hardware')); ?>" title="<?= encodeString(getTranslation('Hardware')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Hardware')); ?>"><?= encodeString(getTranslation('Hardware')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="list scrollable"></div><!--
|
||
--><div class="order"><!--
|
||
--><button class="up translatable" data-text="<?= encodeString(getDefaultTranslation('Up')); ?>" title="<?= encodeString(getTranslation('Up')); ?>"></button><!--
|
||
--><button class="down translatable" data-text="<?= encodeString(getDefaultTranslation('Down')); ?>" title="<?= encodeString(getTranslation('Down')); ?>"></button><!--
|
||
--></div><!--
|
||
--><div class="loading hide"><!--
|
||
--><div class="overlay"><!--
|
||
--></div><!--
|
||
--><div class="spinner"><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><button class="expand"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallets')); ?>"><?= encodeString(getTranslation('Wallets')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="sections"><!--
|
||
--><div><!--
|
||
--><div class="wallet scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><h3 class="address translatable" data-text="<?= encodeString(getDefaultTranslation('Address')); ?>"><?= encodeString(getTranslation('Address')); ?></h3><!--
|
||
--><div class="address"><!--
|
||
--><img width="74" height="74"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Address:')); ?>"><?= encodeString(getTranslation('Address:')); ?></span><!--
|
||
--></p><!--
|
||
--><button class="changeAddressSuffix" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Change Address Suffix')); ?>"><?= encodeString(getTranslation('Change Address Suffix')); ?></span><!--
|
||
--></button><!--
|
||
--><div class="loading"><!--
|
||
--><div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Balance')); ?>"><?= encodeString(getTranslation('Balance')); ?></h3><!--
|
||
--><div class="balance"><!--
|
||
--><button class="sendPayment" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send Payment')); ?>"><?= encodeString(getTranslation('Send Payment')); ?></span><!--
|
||
--></button><!--
|
||
--><div class="syncStatus"><!--
|
||
--><svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><!--
|
||
--><circle class="background" cx="50" cy="50" r="50" pathLength="100"/><!--
|
||
--><circle class="foreground" cx="50" cy="50" r="50" pathLength="100"/><!--
|
||
--></svg><!--
|
||
--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('Syncing…')); ?>"><?= encodeString(getTranslation('Syncing…')); ?></p><!--
|
||
--><p class="translatable syncingFailed" data-text="<?= encodeString(getDefaultTranslation('Syncing failed')); ?>"><?= encodeString(getTranslation('Syncing failed')); ?></p><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
|
||
--><div class="merge"><!--
|
||
--><button class="getPassphrase" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Get Passphrase')); ?>"><?= encodeString(getTranslation('Get Passphrase')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><button class="getPaymentProofAddress" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Get Payment Proof Address')); ?>"><?= encodeString(getTranslation('Get Payment Proof Address')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge hide"><!--
|
||
--><button class="setPaymentProofAddressIndex" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Set Payment Proof Address Index')); ?>"><?= encodeString(getTranslation('Set Payment Proof Address Index')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><button class="resync" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Resync')); ?>"><?= encodeString(getTranslation('Resync')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><button class="rename" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Rename')); ?>"><?= encodeString(getTranslation('Rename')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge hide"><!--
|
||
--><button class="loginWithWallet" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Login With Wallet')); ?>"><?= encodeString(getTranslation('Login With Wallet')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><button class="receivePaymentAsFile" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Receive Payment As File')); ?>"><?= encodeString(getTranslation('Receive Payment As File')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><button class="delete" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Delete')); ?>"><?= encodeString(getTranslation('Delete')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Transactions')); ?>"><?= encodeString(getTranslation('Transactions')); ?></h3><!--
|
||
--><div class="transactions empty merge"><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><p class="translatable noTransactions" data-text="<?= encodeString(getDefaultTranslation('No transactions exist for this wallet.')); ?>"><?= encodeString(getTranslation('No transactions exist for this wallet.')); ?></p><!--
|
||
--></div><!--
|
||
--><div class="transactionsNavigation"><!--
|
||
--><button class="first translatable" data-text="<?= encodeString(getDefaultTranslation('First')); ?>" title="<?= encodeString(getTranslation('First')); ?>" data-private></button><!--
|
||
--><button class="previous translatable" data-text="<?= encodeString(getDefaultTranslation('Previous')); ?>" title="<?= encodeString(getTranslation('Previous')); ?>" data-private></button><!--
|
||
--><button class="next translatable" data-text="<?= encodeString(getDefaultTranslation('Next')); ?>" title="<?= encodeString(getTranslation('Next')); ?>" data-private></button><!--
|
||
--><button class="last translatable" data-text="<?= encodeString(getDefaultTranslation('Last')); ?>" title="<?= encodeString(getTranslation('Last')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="sendPayment scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send Payment')); ?>"><?= encodeString(getTranslation('Send Payment')); ?></h2><!--
|
||
--><button class="forward translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Payment Details')); ?>"><?= encodeString(getTranslation('Payment Details')); ?></h3><!--
|
||
--><div class="merge"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Recipient address')); ?>"><?= encodeString(getTranslation('Recipient address')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="url"><!--
|
||
--><input class="recipientAddress translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" inputmode="url"><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><button class="scan" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Scan QR Code')); ?>"><?= encodeString(getTranslation('Scan QR Code')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="fromWallet merge"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('From wallet')); ?>"><?= encodeString(getTranslation('From wallet')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="select"><!--
|
||
--><select class="fromWallet"><!--
|
||
--></select><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Amount')); ?>"><?= encodeString(getTranslation('Amount')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input class="amount" type="number" autocomplete="off" autocapitalize="off" spellcheck="false" inputmode="decimal"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><button class="all" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('All')); ?>"><?= encodeString(getTranslation('All')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><p><!--
|
||
--><span></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input class="value" type="number" min="0" autocomplete="off" autocapitalize="off" spellcheck="false" inputmode="decimal"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Base fee')); ?>"><?= encodeString(getTranslation('Base fee')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input class="baseFee" type="number" autocomplete="off" autocapitalize="off" spellcheck="false" inputmode="decimal"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><button class="defaultBaseFee" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Default Base Fee')); ?>"><?= encodeString(getTranslation('Default Base Fee')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Optional message')); ?>"><?= encodeString(getTranslation('Optional message')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="text"><!--
|
||
--><input class="message" type="text" autocomplete="on" autocapitalize="on" spellcheck="true"><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="sendAsFile"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send as file')); ?>"><?= encodeString(getTranslation('Send as file')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button class="sendAsFile"><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="send"><!--
|
||
--><button class="send" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Send')); ?>"><?= encodeString(getTranslation('Send')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="cancel"><!--
|
||
--><button class="cancel" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Cancel')); ?>"><?= encodeString(getTranslation('Cancel')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="account scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Account')); ?>"><?= encodeString(getTranslation('Account')); ?></h2><!--
|
||
--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Change Password')); ?>"><?= encodeString(getTranslation('Change Password')); ?></h3><!--
|
||
--><div><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Current password')); ?>"><?= encodeString(getTranslation('Current password')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="text"><!--
|
||
--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
|
||
--><input class="currentPassword" type="password" autocomplete="current-password" autocapitalize="off" spellcheck="false" data-private><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('New password')); ?>"><?= encodeString(getTranslation('New password')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="text"><!--
|
||
--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
|
||
--><input class="newPassword" type="password" autocomplete="new-password" autocapitalize="off" spellcheck="false" data-private><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirm new password')); ?>"><?= encodeString(getTranslation('Confirm new password')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="text"><!--
|
||
--><span class="show translatable" data-text="<?= encodeString(getDefaultTranslation('Show')); ?>" title="<?= encodeString(getTranslation('Show')); ?>"></span><!--
|
||
--><input class="confirmNewPassword" type="password" autocomplete="new-password" autocapitalize="off" spellcheck="false" data-private><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><button class="changePassword" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Change Password')); ?>"><?= encodeString(getTranslation('Change Password')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
|
||
--><div><!--
|
||
--><button class="deleteAllWallets" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Delete All Wallets')); ?>"><?= encodeString(getTranslation('Delete All Wallets')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="settings scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Settings')); ?>"><?= encodeString(getTranslation('Settings')); ?></h2><!--
|
||
--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallet Settings')); ?>"><?= encodeString(getTranslation('Wallet Settings')); ?></h3><!--
|
||
--><div class="translatable" data-text="<?= encodeString(getDefaultTranslation('Sets the wallet type to use')); ?>" title="<?= encodeString(getTranslation('Sets the wallet type to use')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Wallet type')); ?>"><?= encodeString(getTranslation('Wallet type')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="select"><!--
|
||
--><select data-private class="walletType"><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('MimbleWimble Coin')); ?>" value="0"><?= encodeString(getTranslation('MimbleWimble Coin')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Grin')); ?>" value="1"><?= encodeString(getTranslation('Grin')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Epic Cash')); ?>" value="2"><?= encodeString(getTranslation('Epic Cash')); ?></option><!--
|
||
--></select><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="translatable" data-text="<?= encodeString(getDefaultTranslation('Sets the network type to use')); ?>" title="<?= encodeString(getTranslation('Sets the network type to use')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Network type')); ?>"><?= encodeString(getTranslation('Network type')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="select"><!--
|
||
--><select data-private class="networkType"><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Mainnet')); ?>" value="0"><?= encodeString(getTranslation('Mainnet')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Floonet/testnet')); ?>" value="1"><?= encodeString(getTranslation('Floonet/testnet')); ?></option><!--
|
||
--></select><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Number Of Confirmations"); ?>" data-text="<?= encodeString(getDefaultTranslation('Sets the number of confirmations required for a new output to be spendable')); ?>" title="<?= encodeString(getTranslation('Sets the number of confirmations required for a new output to be spendable')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Number of confirmations required to spend an output')); ?>"><?= encodeString(getTranslation('Number of confirmations required to spend an output')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input type="number" min="1" max="<?= MINUTES_IN_AN_HOUR * HOURS_IN_A_DAY; ?>" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Interface Settings')); ?>"><?= encodeString(getTranslation('Interface Settings')); ?></h3><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Enable Node Connection Error Messages"); ?>" data-text="<?= encodeString(getDefaultTranslation('Displays a message when not able to connect to a node, when a connected node is incompatible, or when disconnected from a node')); ?>" title="<?= encodeString(getTranslation('Displays a message when not able to connect to a node, when a connected node is incompatible, or when disconnected from a node')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Show node connection error messages')); ?>"><?= encodeString(getTranslation('Show node connection error messages')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Enable Listener Connection Error Messages"); ?>" data-text="<?= encodeString(getDefaultTranslation('Displays a message when not able to connect to a listener or when disconnected from a listener')); ?>" title="<?= encodeString(getTranslation('Displays a message when not able to connect to a listener or when disconnected from a listener')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Show listener connection error messages')); ?>"><?= encodeString(getTranslation('Show listener connection error messages')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Enable Automatic Lock"); ?>" data-text="<?= encodeString(getDefaultTranslation('Automatically lock after a set duration of inactivity')); ?>" title="<?= encodeString(getTranslation('Automatically lock after a set duration of inactivity')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Automatically lock after a set duration of inactivity')); ?>"><?= encodeString(getTranslation('Automatically lock after a set duration of inactivity')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("No Interaction Lock Timeout Minutes"); ?>" data-dependencies='<?= escapeData([["Enable Automatic Lock", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the duration of inactivity required for the automatic lock to occur')); ?>" title="<?= encodeString(getTranslation('Sets the duration of inactivity required for the automatic lock to occur')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Minutes of inactivity required for automatic lock')); ?>"><?= encodeString(getTranslation('Minutes of inactivity required for automatic lock')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input type="number" min="1" max="<?= MINUTES_IN_AN_HOUR; ?>" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Enable Lock On Inactive"); ?>" data-text="<?= encodeString(getDefaultTranslation('Automatically lock when not focused')); ?>" title="<?= encodeString(getTranslation('Automatically lock when not focused')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Lock if not focused')); ?>"><?= encodeString(getTranslation('Lock if not focused')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Enable Price"); ?>" data-text="<?= encodeString(getDefaultTranslation('Displays prices for amounts')); ?>" title="<?= encodeString(getTranslation('Displays prices for amounts')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Display prices')); ?>"><?= encodeString(getTranslation('Display prices')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Currency Display"); ?>" data-dependencies='<?= escapeData([["Enable Price", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the currency of the displayed prices')); ?>" title="<?= encodeString(getTranslation('Sets the currency of the displayed prices')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Currency of the displayed prices')); ?>"><?= encodeString(getTranslation('Currency of the displayed prices')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="select"><!--
|
||
--><select data-private><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Language\'s currency')); ?>" value="Language's Currency"><?= encodeString(getTranslation('Language\'s currency')); ?></option><!--
|
||
|
||
--><?php
|
||
|
||
// Go through all language currencies
|
||
foreach(getLanguageCurrencies() as $languageCurrency) {
|
||
|
||
// Display language currency option
|
||
echo "<option value=\"" . encodeString($languageCurrency) . "\">" . encodeString($languageCurrency) . "</option>";
|
||
}
|
||
?><!--
|
||
|
||
--></select><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Update Price Interval Minutes"); ?>" data-dependencies='<?= escapeData([["Enable Price", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the duration of time between price updates')); ?>" title="<?= encodeString(getTranslation('Sets the duration of time between price updates')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Minutes between price updates')); ?>"><?= encodeString(getTranslation('Minutes between price updates')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input type="number" min="1" max="<?= MINUTES_IN_AN_HOUR * HOURS_IN_A_DAY; ?>" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Displayed Address Type"); ?>" data-dependencies='<?= escapeData([["Use Custom Listener", FALSE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address type to display for each wallet')); ?>" title="<?= encodeString(getTranslation('Sets the address type to display for each wallet')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Displayed address type')); ?>"><?= encodeString(getTranslation('Displayed address type')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="select"><!--
|
||
--><select data-private><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Match connection')); ?>" value="Match Connection"><?= encodeString(getTranslation('Match connection')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") || array_key_exists("HTTPS_SERVER_ADDRESS", $_SERVER) === TRUE) ? getDefaultTranslation('HTTPS') : getDefaultTranslation('HTTP')); ?>" value="HTTP"><?= encodeString(((array_key_exists("HTTPS", $_SERVER) === TRUE && $_SERVER["HTTPS"] === "on") || array_key_exists("HTTPS_SERVER_ADDRESS", $_SERVER) === TRUE) ? getTranslation('HTTPS') : getTranslation('HTTP')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Onion Service')); ?>" value="Tor"><?= encodeString(getTranslation('Onion Service')); ?></option><!--
|
||
--></select><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Displayed Amount Type"); ?>" data-text="<?= encodeString(getDefaultTranslation('Sets the amount type to display in the wallets list')); ?>" title="<?= encodeString(getTranslation('Sets the amount type to display in the wallets list')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Displayed amount type')); ?>"><?= encodeString(getTranslation('Displayed amount type')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="select"><!--
|
||
--><select data-private><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Spendable')); ?>" value="Spendable"><?= encodeString(getTranslation('Spendable')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirmed')); ?>" value="Confirmed"><?= encodeString(getTranslation('Confirmed')); ?></option><!--
|
||
--><option class="translatable" data-text="<?= encodeString(getDefaultTranslation('Confirmed and unconfirmed')); ?>" value="Confirmed And Unconfirmed"><?= encodeString(getTranslation('Confirmed and unconfirmed')); ?></option><!--
|
||
--></select><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Allow Changing Base Fee"); ?>" data-text="<?= encodeString(getDefaultTranslation('Allows changing a transaction\'s base fee when sending a payment')); ?>" title="<?= encodeString(getTranslation('Allows changing a transaction\'s base fee when sending a payment')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Allow changing base fee')); ?>"><?= encodeString(getTranslation('Allow changing base fee')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Maximum Number Of Messages"); ?>" data-text="<?= encodeString(getDefaultTranslation('Sets the maximum number of messages that the log can display. Earlier messages will be removed once this limit is reached')); ?>" title="<?= encodeString(getTranslation('Sets the maximum number of messages that the log can display. Earlier messages will be removed once this limit is reached')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Maximum number of messages that the log can display')); ?>"><?= encodeString(getTranslation('Maximum number of messages that the log can display')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="number"><!--
|
||
--><input type="number" min="10" max="1000" autocomplete="off" autocapitalize="off" spellcheck="false" data-private inputmode="numeric"><!--
|
||
--><span></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Node Settings')); ?>"><?= encodeString(getTranslation('Node Settings')); ?></h3><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Use Custom Node"); ?>" data-text="<?= encodeString(getDefaultTranslation('Uses a custom node instead of the default nodes')); ?>" title="<?= encodeString(getTranslation('Uses a custom node instead of the default nodes')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Use custom node')); ?>"><?= encodeString(getTranslation('Use custom node')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Custom Node Address"); ?>" data-dependencies='<?= escapeData([["Use Custom Node", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address for the custom node')); ?>" title="<?= encodeString(getTranslation('Sets the address for the custom node')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom node address')); ?>"><?= encodeString(getTranslation('Custom node address')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="url"><!--
|
||
--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" data-private inputmode="url"><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Custom Node Secret"); ?>" data-sensitive data-dependencies='<?= escapeData([["Use Custom Node", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the foreign API secret for the custom node. Leave this empty if the custom node doesn\'t require a foreign API secret')); ?>" title="<?= encodeString(getTranslation('Sets the foreign API secret for the custom node. Leave this empty if the custom node doesn\'t require a foreign API secret')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom node foreign API secret')); ?>"><?= encodeString(getTranslation('Custom node foreign API secret')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="text"><!--
|
||
--><input type="text" autocomplete="off" autocapitalize="off" spellcheck="false" data-private><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('API Settings')); ?>"><?= encodeString(getTranslation('API Settings')); ?></h3><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Enable Mining API"); ?>" data-text="<?= encodeString(getDefaultTranslation('Allows processing mining related API requests')); ?>" title="<?= encodeString(getTranslation('Allows processing mining related API requests')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Enable mining API')); ?>"><?= encodeString(getTranslation('Enable mining API')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Require Payment Proof"); ?>" data-text="<?= encodeString(getDefaultTranslation('Requires all new transactions to have a payment proof')); ?>" title="<?= encodeString(getTranslation('Requires all new transactions to have a payment proof')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Require payment proof')); ?>"><?= encodeString(getTranslation('Require payment proof')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Automatically Approve Receiving Payments"); ?>" data-text="<?= encodeString(getDefaultTranslation('Automatically approves all received payments without requiring manual approval')); ?>" title="<?= encodeString(getTranslation('Automatically approves all received payments without requiring manual approval')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Automatically approve receiving payments')); ?>"><?= encodeString(getTranslation('Automatically approve receiving payments')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Tor Proxy Settings')); ?>"><?= encodeString(getTranslation('Tor Proxy Settings')); ?></h3><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Use Custom Tor Proxy"); ?>" data-text="<?= encodeString(getDefaultTranslation('Uses a custom Tor proxy instead of the default Tor proxy')); ?>" title="<?= encodeString(getTranslation('Uses a custom Tor proxy instead of the default Tor proxy')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Use custom Tor proxy')); ?>"><?= encodeString(getTranslation('Use custom Tor proxy')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Custom Tor Proxy Address"); ?>" data-dependencies='<?= escapeData([["Use Custom Tor Proxy", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address for the custom Tor proxy')); ?>" title="<?= encodeString(getTranslation('Sets the address for the custom Tor proxy')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom Tor proxy address')); ?>"><?= encodeString(getTranslation('Custom Tor proxy address')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="url"><!--
|
||
--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" data-private inputmode="url"><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Listener Settings')); ?>"><?= encodeString(getTranslation('Listener Settings')); ?></h3><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Use Custom Listener"); ?>" data-text="<?= encodeString(getDefaultTranslation('Uses a custom listener instead of the default listener')); ?>" title="<?= encodeString(getTranslation('Uses a custom listener instead of the default listener')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Use custom listener')); ?>"><?= encodeString(getTranslation('Use custom listener')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="boolean"><!--
|
||
--><button data-private><!--
|
||
--><span></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="setting translatable" data-setting="<?= encodeString("Custom Listener Address"); ?>" data-dependencies='<?= escapeData([["Use Custom Listener", TRUE]]); ?>' data-text="<?= encodeString(getDefaultTranslation('Sets the address for the custom listener')); ?>" title="<?= encodeString(getTranslation('Sets the address for the custom listener')); ?>"><!--
|
||
--><p><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Custom listener address')); ?>"><?= encodeString(getTranslation('Custom listener address')); ?></span><!--
|
||
--></p><!--
|
||
--><span class="dots"></span><!--
|
||
--><div class="value" data-type="url"><!--
|
||
--><input class="translatable" data-text="<?= encodeString(getDefaultTranslation('URL')); ?>" type="text" placeholder="<?= encodeString(getTranslation('URL')); ?>" autocomplete="url" autocapitalize="off" spellcheck="false" data-private inputmode="url"><!--
|
||
--><span></span><!--
|
||
--><span class="capsLock hide"></span><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
|
||
--><div><!--
|
||
--><button class="resetSettings" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Reset Settings')); ?>"><?= encodeString(getTranslation('Reset Settings')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="about scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('About')); ?>"><?= encodeString(getTranslation('About')); ?></h2><!--
|
||
--><button class="forward hide translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Description')); ?>"><?= encodeString(getTranslation('Description')); ?></h3><!--
|
||
--><div class="description"><!--
|
||
--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('MWC Wallet is an open-source, self-custodial wallet that allows you to easily send and receive MimbleWimble Coin. Designed with ease of use and accessibility in mind, this wallet runs on everything from smartwatches to mainframes while providing an intuitive interface that makes using it a breeze.')); ?>"><?= encodeString(getTranslation('MWC Wallet is an open-source, self-custodial wallet that allows you to easily send and receive MimbleWimble Coin. Designed with ease of use and accessibility in mind, this wallet runs on everything from smartwatches to mainframes while providing an intuitive interface that makes using it a breeze.')); ?></p><!--
|
||
--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('This wallet is available free of charge and should not be sold in any format. If you paid to access this wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back.')); ?>"><?= encodeString(getTranslation('This wallet is available free of charge and should not be sold in any format. If you paid to access this wallet or received this wallet as part of a paid service then you\'ve been scammed and should demand your money back.')); ?></p><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Version Information')); ?>"><?= encodeString(getTranslation('Version Information')); ?></h3><!--
|
||
--><div class="versionInformation"><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Version Changes')); ?>"><?= encodeString(getTranslation('Version Changes')); ?></h3><!--
|
||
--><div><!--
|
||
--><ul><!--
|
||
|
||
--><?php
|
||
|
||
// Check if there's no version changes
|
||
if(count(VERSION_CHANGES) === 0) {
|
||
|
||
// Display no version change
|
||
echo "<li><span class=\"translatable\" data-text=\"" . encodeString(getDefaultTranslation('N/A')) . "\">" . encodeString(getTranslation('N/A')) . "</span></li>";
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Go through all version changes
|
||
foreach(VERSION_CHANGES as $versionChange) {
|
||
|
||
// Display version change
|
||
echo "<li><span class=\"translatable contextMenu\" data-text=\"" . encodeString(escapeText($versionChange)) . "\">" . encodeString(getTranslation(escapeText($versionChange))) . "</span></li>";
|
||
}
|
||
}
|
||
?><!--
|
||
|
||
--></ul><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Donate')); ?>"><?= encodeString(getTranslation('Donate')); ?></h3><!--
|
||
--><div class="donate"><!--
|
||
--><ul><!--
|
||
--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Bitcoin:')); ?>"><?= encodeString(getTranslation('Bitcoin:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">bc1qc98nt4huecnd0razjwwngwxa7hfpkng322hg6u</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
|
||
--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('MimbleWimble Coin:')); ?>"><?= encodeString(getTranslation('MimbleWimble Coin:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">https://mwcwallet.com/donate/mwc</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
|
||
--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Grin:')); ?>"><?= encodeString(getTranslation('Grin:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">grin1zmf68j2fne0fpdzglry9jtml5ykwauqncqmk0vmqtwzxcr2939jqmc83fz</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
|
||
--><li><span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Epic Cash:')); ?>"><?= encodeString(getTranslation('Epic Cash:')); ?></span><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('(?<=:) ')); ?>"><?= encodeString(getTranslation('(?<=:) ')); ?></span><span class="contextMenu">https://mwcwallet.com/donate/epic</span><span class="translatable copy" data-text="Copy" title="Copy"></span></span></li><!--
|
||
--></ul><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Copyright')); ?>"><?= encodeString(getTranslation('Copyright')); ?></h3><!--
|
||
--><div><!--
|
||
|
||
--><?php
|
||
|
||
// Check if copyright year is newer than the copyright year
|
||
if($year > COPYRIGHT_YEAR) {
|
||
|
||
// Display copyright information with the current year
|
||
echo "<p class=\"copyright translatable\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s–%2$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR), sprintf("%.0F", $year)]) . "'>" . encodeString(getTranslation('© %1$s–%2$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR), getNumberTranslation($year)])) . "</p>";
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Display copyright information with the copyright year
|
||
echo "<p class=\"copyright translatable\" data-text=\"" . encodeString(getDefaultTranslation('© %1$s Nicolas Flamel.')) . "\" data-arguments='" . escapeData([sprintf("%.0F", COPYRIGHT_YEAR)]) . "'>" . encodeString(getTranslation('© %1$s Nicolas Flamel.', [getNumberTranslation(COPYRIGHT_YEAR)])) . "</p>";
|
||
}
|
||
?><!--
|
||
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Disclaimer')); ?>"><?= encodeString(getTranslation('Disclaimer')); ?></h3><!--
|
||
--><div class="disclaimer"><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Translation Contributors')); ?>"><?= encodeString(getTranslation('Translation Contributors')); ?></h3><!--
|
||
--><div class="translationContributors"><!--
|
||
--><ul><!--
|
||
|
||
--><?php
|
||
|
||
// Check if there's no translation contributors
|
||
if(count(getTransactionContributors()) === 0) {
|
||
|
||
// Display no translation contributors
|
||
echo "<li><span class=\"translatable\" data-text=\"" . encodeString(getDefaultTranslation('N/A')) . "\">" . encodeString(getTranslation('N/A')) . "</span></li>";
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Go through all translation contributors
|
||
foreach(getTransactionContributors() as $link => $translationContributor) {
|
||
|
||
// Check if contributor doesn't have a link
|
||
if(is_int($link) === TRUE) {
|
||
|
||
// Display translation contributor
|
||
echo "<li><span class=\"contextMenu\">" . encodeString($translationContributor) . "</span></li>";
|
||
}
|
||
|
||
// Otherwise
|
||
else {
|
||
|
||
// Display translation contributor
|
||
echo "<li><a class=\"contextMenu\" href=\"" . encodeString($link) . "\" referrerpolicy=\"same-origin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">" . encodeString($translationContributor) . "</a></li>";
|
||
}
|
||
}
|
||
}
|
||
?><!--
|
||
|
||
--></ul><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Attributions')); ?>"><?= encodeString(getTranslation('Attributions')); ?></h3><!--
|
||
--><div class="attributions"><!--
|
||
--><ul><!--
|
||
|
||
--><?php
|
||
|
||
// Check if there's no attributions
|
||
if(count(ATTRIBUTIONS) === 0) {
|
||
|
||
// Display no attributions
|
||
echo "<li><span class=\"translatable\" data-text=\"" . encodeString(getDefaultTranslation('N/A')) . "\">" . encodeString(getTranslation('N/A')) . "</span></li>";
|
||
}
|
||
?><!--
|
||
|
||
--></ul><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="log scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Log')); ?>"><?= encodeString(getTranslation('Log')); ?></h2><!--
|
||
--><button class="forward translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><div class="messages"><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="transaction scrollable hide"><!--
|
||
--><div><!--
|
||
--><div class="navigation"><!--
|
||
--><button class="back hide translatable" data-text="<?= encodeString(getDefaultTranslation('Back')); ?>" title="<?= encodeString(getTranslation('Back')); ?>" data-private></button><!--
|
||
--><button class="forward translatable" data-text="<?= encodeString(getDefaultTranslation('Forward')); ?>" title="<?= encodeString(getTranslation('Forward')); ?>" data-private></button><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Information')); ?>"><?= encodeString(getTranslation('Information')); ?></h3><!--
|
||
--><div class="transactionInformation"><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Payment Proof')); ?>"><?= encodeString(getTranslation('Payment Proof')); ?></h3><!--
|
||
--><div class="paymentProof"><!--
|
||
--></div><!--
|
||
--><h3 class="translatable" data-text="<?= encodeString(getDefaultTranslation('Utilities')); ?>"><?= encodeString(getTranslation('Utilities')); ?></h3><!--
|
||
--><div class="merge"><!--
|
||
--><button class="rebroadcastTransaction" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Rebroadcast')); ?>"><?= encodeString(getTranslation('Rebroadcast')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div class="merge"><!--
|
||
--><button class="getTransactionFileResponse" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Get File Response')); ?>"><?= encodeString(getTranslation('Get File Response')); ?></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--><div><!--
|
||
--><button class="cancelTransaction" data-private><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Cancel')); ?>"><?= encodeString(getTranslation('Cancel')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--><div class="status"><!--
|
||
--><p class="node translatable" data-text="<?= encodeString(getDefaultTranslation('Node disconnected')); ?>" title="<?= encodeString(getTranslation('Node disconnected')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Node')); ?>"><?= encodeString(getTranslation('Node')); ?></span><!--
|
||
--></p><!--
|
||
--><p class="listener translatable" data-text="<?= encodeString(getDefaultTranslation('Listener disconnected')); ?>" title="<?= encodeString(getTranslation('Listener disconnected')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Listener')); ?>"><?= encodeString(getTranslation('Listener')); ?></span><!--
|
||
--></p><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></main><!--
|
||
--><aside class="message noButtons hide noScriptShow"><!--
|
||
--><div class="message"><!--
|
||
--><div><!--
|
||
--><h2 class="translatable" data-text="<?= encodeString(getDefaultTranslation('JavaScript Error')); ?>"><?= encodeString(getTranslation('JavaScript Error')); ?></h2><!--
|
||
--><span class="upArrow"></span><!--
|
||
--><p class="scrollable"><!--
|
||
--><span class="text"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Your browser doesn\'t support JavaScript. Update your browser and/or enable JavaScript to continue.')); ?>"><?= encodeString(getTranslation('Your browser doesn\'t support JavaScript. Update your browser and/or enable JavaScript to continue.')); ?></span><!--
|
||
--></span><!--
|
||
--></p><!--
|
||
--><span class="downArrow"></span><!--
|
||
--><div><!--
|
||
--><button><!--
|
||
--><span class="translatable"></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--><button><!--
|
||
--><span class="translatable"></span><!--
|
||
--><span class="dots"><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--><span></span><!--
|
||
--></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
--></aside><!--
|
||
--><section class="tetris hide"><!--
|
||
--><canvas><!--
|
||
--></canvas><!--
|
||
--></section><!--
|
||
--><section class="cookieAcceptance hide noFocus"><!--
|
||
--><div class="cookieAcceptance"><!--
|
||
--><span></span><!--
|
||
--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('This site uses cookies that are essential to its functionality. By using this site\'s services or clicking OK, you agree to this site\'s use of cookies.')); ?>"><?= encodeString(getTranslation('This site uses cookies that are essential to its functionality. By using this site\'s services or clicking OK, you agree to this site\'s use of cookies.')); ?></p><!--
|
||
--><button><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('OK')); ?>"><?= encodeString(getTranslation('OK')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></section><!--
|
||
--><section class="installApp hide noFocus"><!--
|
||
--><div class="installApp"><!--
|
||
--><img src="<?= encodeString(getResource("./images/app_icons/app_icon.svg")); ?>" integrity="<?= encodeString(getChecksum("./images/app_icons/app_icon.svg")); ?>"><!--
|
||
--><p class="translatable" data-text="<?= encodeString(getDefaultTranslation('Install the MWC Wallet app?')); ?>"><?= encodeString(getTranslation('Install the MWC Wallet app?')); ?></p><!--
|
||
--><button class="installNow"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Install Now')); ?>"><?= encodeString(getTranslation('Install Now')); ?></span><!--
|
||
--></button><!--
|
||
--><button class="remindMeLater translatable" data-text="<?= encodeString(getDefaultTranslation('Remind me later')); ?>" title="<?= encodeString(getTranslation('Remind me later')); ?>"><!--
|
||
--><span class="translatable" data-text="<?= encodeString(getDefaultTranslation('Remind me later')); ?>"><?= encodeString(getTranslation('Remind me later')); ?></span><!--
|
||
--></button><!--
|
||
--></div><!--
|
||
--></section><!--
|
||
--></div><!--
|
||
--></div><!--
|
||
|
||
--><link rel="prefetch" as="font" href="<?= encodeString(getResource("./fonts/font_awesome/font_awesome-5.15.4.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous"><!--
|
||
--><link rel="prefetch" as="font" href="<?= encodeString(getResource("./fonts/font_awesome/font_awesome_solid-5.15.4.woff2")); ?>" onerror="processLoadingError(this, true);" type="font/woff2" crossorigin="anonymous"><!--
|
||
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/common.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/common.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/mwc/mwc.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/mwc/mwc.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/grin/grin.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/grin/grin.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/epic/epic.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/epic/epic.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/btc/btc.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/btc/btc.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./fonts/eth/eth.css")); ?>" integrity="<?= encodeString(getChecksum("./fonts/eth/eth.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/tetris.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/tetris.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/logo.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/logo.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/application.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/application.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/unlocked.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/unlocked.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/sections.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/sections.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/settings_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/settings_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/about_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/about_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/transaction_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/transaction_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/account_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/account_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/wallet_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/wallet_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/send_payment_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/send_payment_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/log_section.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/log_section.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/message.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/message.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/install_app.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/install_app.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/cookie_acceptance.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/cookie_acceptance.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/maintenance_notification.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/maintenance_notification.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
--><link rel="stylesheet" type="text/css" href="<?= encodeString(getResource("./styles/language.css")); ?>" integrity="<?= encodeString(getChecksum("./styles/language.css")); ?>" onerror="processLoadingError(this, true);" onload="processLoadingError(this);"><!--
|
||
|
||
--><script>
|
||
|
||
// Use strict
|
||
"use strict";
|
||
|
||
|
||
// Constants
|
||
|
||
// HTTPS server address
|
||
var HTTPS_SERVER_ADDRESS = <?= (array_key_exists("HTTPS_SERVER_ADDRESS", $_SERVER) === TRUE) ? "\"" . escapeString($_SERVER["HTTPS_SERVER_ADDRESS"]) . "\"" : "\"http\" + ((location[\"protocol\"] === \"https:\") ? \"s\" : \"\") + \"://\" + location[\"hostname\"]"; ?>;
|
||
|
||
// Tor server address
|
||
var TOR_SERVER_ADDRESS = <?= (array_key_exists("TOR_SERVER_ADDRESS", $_SERVER) === TRUE) ? "\"" . escapeString($_SERVER["TOR_SERVER_ADDRESS"]) . "\"" : "\"http\" + ((location[\"protocol\"] === \"https:\") ? \"s\" : \"\") + \"://\" + location[\"hostname\"]"; ?>;
|
||
|
||
// Files
|
||
var FILES = <?= json_encode($files); ?>;
|
||
|
||
// Copyright year
|
||
var COPYRIGHT_YEAR = <?= COPYRIGHT_YEAR; ?>;
|
||
|
||
// Default language
|
||
var DEFAULT_LANGUAGE = "<?= escapeString(DEFAULT_LANGUAGE); ?>";
|
||
|
||
// Maintenance start time
|
||
var MAINTENANCE_START_TIME = "<?= escapeString(MAINTENANCE_START_TIME); ?>";
|
||
|
||
// Version number
|
||
var VERSION_NUMBER = "<?= escapeString(VERSION_NUMBER); ?>";
|
||
|
||
// Version release date
|
||
var VERSION_RELEASE_DATE = "<?= escapeString(VERSION_RELEASE_DATE); ?>";
|
||
|
||
// Version changes
|
||
var VERSION_CHANGES = [
|
||
|
||
<?php
|
||
|
||
// Go through all version changes
|
||
foreach(VERSION_CHANGES as $versionChange) {
|
||
|
||
// Display version change
|
||
echo "\"" . escapeString($versionChange) . "\",";
|
||
}
|
||
?>
|
||
|
||
];
|
||
|
||
// Attributions
|
||
var ATTRIBUTIONS = <?= json_encode(ATTRIBUTIONS); ?>;
|
||
|
||
// Access timestamp
|
||
var ACCESS_TIMESTAMP = Date.now();
|
||
|
||
// URL query string
|
||
var URL_QUERY_STRING = location["search"];
|
||
|
||
// No state
|
||
var NO_STATE = null;
|
||
|
||
// Language change event
|
||
var LANGUAGE_CHANGE_EVENT = "LanguageChangeEvent";
|
||
|
||
|
||
// Main function
|
||
|
||
// Check if history is supported
|
||
if(typeof history === "object" && history !== null) {
|
||
|
||
// Check if a startup error didn't occur
|
||
if(startupErrorOccurred() === false) {
|
||
|
||
// Change displayed URL to remove query string
|
||
history.replaceState(NO_STATE, document["title"], ((location["protocol"] === "file:") ? location["protocol"] + "//" : "") + location["pathname"]);
|
||
}
|
||
|
||
// Title language change event
|
||
addEvent(getElement(document, "title", "translatable"), LANGUAGE_CHANGE_EVENT, function() {
|
||
|
||
// Set timeout
|
||
setTimeout(function() {
|
||
|
||
// Check if a startup error didn't occur
|
||
if(startupErrorOccurred() === false) {
|
||
|
||
// Change displayed URL to remove query string
|
||
history.replaceState(NO_STATE, document["title"], ((location["protocol"] === "file:") ? location["protocol"] + "//" : "") + location["pathname"]);
|
||
}
|
||
}, 0);
|
||
});
|
||
}
|
||
|
||
|
||
// Supporting function implementation
|
||
|
||
// Add minified suffix
|
||
function addMinifiedSuffix(file) {
|
||
|
||
// Get file's suffix offset
|
||
var suffixOffset = file.lastIndexOf(".");
|
||
|
||
// Check if file contains no suffix
|
||
if(suffixOffset === INDEX_NOT_FOUND || suffixOffset < "./"["length"])
|
||
|
||
// Return file with minified suffix at the end
|
||
return file + ".min";
|
||
|
||
// Otherwise
|
||
else
|
||
|
||
// Return file with minified suffix insert before its suffix
|
||
return file.substring(0, suffixOffset) + ".min" + file.substring(suffixOffset);
|
||
}
|
||
|
||
// Get resource
|
||
function getResource(file) {
|
||
|
||
// Return resource with version
|
||
return ((file in FILES === true && FILES[file]["Minified"] === true) ? addMinifiedSuffix(file) : file) + ((file in FILES === true && FILES[file]["Version"] !== 0) ? "?" + FILES[file]["Version"] : "");
|
||
}
|
||
|
||
</script><!--
|
||
|
||
--><script src="<?= encodeString(getResource("./scripts/jQuery-3.6.4.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/jQuery-3.6.4.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/bignumber.js-9.1.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bignumber.js-9.1.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/common.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/common.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/consensus.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/consensus.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/languages.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/languages.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/language.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/language.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/extension.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/extension.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/JSONBigNumber-1.1.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/JSONBigNumber-1.1.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/glMatrix-3.4.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/glMatrix-3.4.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/BLAKE2b-0.0.2.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/BLAKE2b-0.0.2.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/Ed25519-0.0.22.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/Ed25519-0.0.22.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/X25519-0.0.23.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/X25519-0.0.23.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/js-sha3-0.8.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/js-sha3-0.8.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/js-sha256-0.10.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/js-sha256-0.10.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/ChaCha-2.1.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/ChaCha-2.1.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/secp256k1-zkp-0.0.29.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/secp256k1-zkp-0.0.29.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/SMAZ-0.0.31.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/SMAZ-0.0.31.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/hi-base32-0.5.1.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hi-base32-0.5.1.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/bech32-2.0.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bech32-2.0.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/base58.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/base58.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/base64.js-3.7.5.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/base64.js-3.7.5.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/crc32-1.2.0.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/crc32-1.2.0.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/bit_reader.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bit_reader.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/bit_writer.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/bit_writer.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/fatal_error.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/fatal_error.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/startup_images_creator.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/startup_images_creator.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/scroll.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/scroll.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/copyright.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/copyright.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/protocol_handler.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/protocol_handler.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/settings.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/settings.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/crypto.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/crypto.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/json_rpc.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/json_rpc.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/tor.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/tor.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/mqs.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/mqs.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/slatepack.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slatepack.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/uuid.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/uuid.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/hash.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hash.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/slate.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/slate_participant.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_participant.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/slate_input.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_input.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/slate_output.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_output.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/slate_kernel.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/slate_kernel.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/legacy_proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/legacy_proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/new_proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/new_proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/view_proof_builder.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/view_proof_builder.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/protocol_buffers.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/protocol_buffers.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/hardware_wallet_definitions.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet_definitions.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/hardware_wallet_usb_transport.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet_usb_transport.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/hardware_wallet_bluetooth_transport.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet_bluetooth_transport.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/hardware_wallet.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/hardware_wallet.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/api.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/api.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/instance.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/instance.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/service_worker_installer.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/service_worker_installer.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/wallet.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wallet.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/identifier.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/identifier.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/database_transaction.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/database_transaction.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/database.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/database.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/transaction.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/transaction.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/transactions.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/transactions.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/height.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/height.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/initial_heights_obtained.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/initial_heights_obtained.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/recent_heights.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/recent_heights.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/output.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/output.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/output_information.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/output_information.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/tor_proxy.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/tor_proxy.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/node.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/node.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/seed.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/seed.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/wallets.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wallets.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/listener.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/listener.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/interaction.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/interaction.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/install_app.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/install_app.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/focus.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/focus.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/caps_lock.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/caps_lock.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/message.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/message.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/prices.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/prices.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/log.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/log.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/clipboard.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/clipboard.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/sections.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/sections.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/settings_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/settings_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/about_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/about_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/transaction_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/transaction_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/account_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/account_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/wallet_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wallet_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/send_payment_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/send_payment_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/log_section.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/log_section.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/unlocked.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/unlocked.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/version.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/version.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/cookie_acceptance.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/cookie_acceptance.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/maintenance_notification.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/maintenance_notification.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/tetris.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/tetris.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/logo.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/logo.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/qrcode-generator-1.4.4.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/qrcode-generator-1.4.4.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/automatic_lock.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/automatic_lock.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/wake_lock.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/wake_lock.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/camera.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/camera.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/emoji.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/emoji.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
--><script src="<?= encodeString(getResource("./scripts/application.js")); ?>" integrity="<?= encodeString(getChecksum("./scripts/application.js")); ?>" type="application/javascript" charset="UTF-8" onerror="processLoadingError(this, true);" defer="true"></script><!--
|
||
|
||
--></body>
|
||
</html>
|