<!DOCTYPE html>
<html lang="ru">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="keywords" content="Wolfram, Wathematica, SystemModeler, WolframPlayer, CDFPlayer, keygen, crack, hack">
        <title>Универсальный генератор паролей для всех продуктов Wolfram</title>
        <script>
            'use strict';

            var defaultActivationKey = '3893-9258-K6XJLE';

            var licenseType                              ;

            function genKeyValStr(mathID, activationKey=defaultActivationKey, maxLicenseProcessesSubprocesses="", licenseType="", licenseExpirationDate="", licenseClass="") {
                var keyValStr = "";
                if (typeof mathID !== "undefined" && mathID.length != 0)
                {
                    keyValStr = mathID;
                    if (typeof licenseExpirationDate           !== "undefined" && licenseExpirationDate          .length != 0) {keyValStr += "@" + licenseExpirationDate          };
                    if (typeof maxLicenseProcessesSubprocesses !== "undefined" && maxLicenseProcessesSubprocesses.length != 0) {keyValStr += ":" + maxLicenseProcessesSubprocesses};
                    if (typeof licenseClass                    !== "undefined" && licenseClass                   .length != 0) {keyValStr += "*" + licenseClass                   };
                    if (typeof licenseType                     !== "undefined" && licenseType                    .length != 0) {keyValStr += "$" + licenseType                    };
                    if (typeof activationKey                   !== "undefined" && activationKey                  .length != 0) {keyValStr += "&" + activationKey                  }
                    else                                                                                                       {keyValStr += "&" + defaultActivationKey           };

                };
                return keyValStr;
            };

            function keyValStr2licenseExpirationDate(keyValStr) {
                var licenseExpirationDate = "";
                var index1 = keyValStr.indexOf("@");
                var index2 = keyValStr.indexOf(":");
                var index3 = keyValStr.indexOf("*");
                var index4 = keyValStr.indexOf("$");
                var index5 = keyValStr.indexOf("&");
                if (index1 >= 0) {
                    if        (index2 >= 0) {
                        licenseExpirationDate = keyValStr.substring(index1 + 1, index2);
                    } else if (index3 >= 0) {
                        licenseExpirationDate = keyValStr.substring(index1 + 1, index3);
                    } else if (index4 >= 0) {
                        licenseExpirationDate = keyValStr.substring(index1 + 1, index4);
                    } else if (index5 >= 0) {
                        licenseExpirationDate = keyValStr.substring(index1 + 1, index5);
                    };
                };
                return licenseExpirationDate;
            };

            function keyValStr2maxLicenseProcessesSubprocesses(keyValStr) {
                var maxLicenseProcessesSubprocesses = "";
                var index2 = keyValStr.indexOf(":");
                var index3 = keyValStr.indexOf("*");
                var index4 = keyValStr.indexOf("$");
                var index5 = keyValStr.indexOf("&");
                if (index2 >= 0) {
                    if        (index3 >= 0) {
                        maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index3);
                    } else if (index4 >= 0) {
                        maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index4);
                    } else if (index5 >= 0) {
                        maxLicenseProcessesSubprocesses = keyValStr.substring(index2 + 1, index5);
                    };
                };
                return maxLicenseProcessesSubprocesses;
            };

            function keyValStr2licenseClass(keyValStr) {
                var licenseClass = "";
                var index3 = keyValStr.indexOf("*");
                var index4 = keyValStr.indexOf("$");
                var index5 = keyValStr.indexOf("&");
                if (index3 >= 0) {
                    if        (index4 >= 0) {
                        licenseClass = keyValStr.substring(index3 + 1, index4);
                    } else if (index5 >= 0) {
                        licenseClass = keyValStr.substring(index3 + 1, index5);
                    };
                };
                return licenseClass;
            };

            function keyValStr2licenseType(keyValStr) {
                var licenseType = "";
                var index4 = keyValStr.indexOf("$");
                var index5 = keyValStr.indexOf("&");
                if (index4 >= 0) {
                    if        (index5 >= 0) {
                        licenseType = keyValStr.substring(index4 + 1, index5);
                    };
                };
                return licenseType;
            };

            function testSalt(n, byte, c) {
                for (var bitIndex = 0; bitIndex <= 7; bitIndex += 1) {
                    var bit = (byte >> bitIndex) & 1;
                    if (bit + ((n - bit) & ~1) == n) {
                        n = (n - bit) >> 1;
                    } else {
                        n = ((c - bit) ^ n) >> 1;
                    };
                };

                return n;
            };

            function genPassword(keyValStr, salt) {
                var licenseExpirationDate           = keyValStr2licenseExpirationDate          (keyValStr);
                var maxLicenseProcessesSubprocesses = keyValStr2maxLicenseProcessesSubprocesses(keyValStr);
                var licenseClass                    = keyValStr2licenseClass                   (keyValStr);
                var licenseType                     = keyValStr2licenseType                    (keyValStr);

                salt = parseInt(salt);
                var uuid = keyValStr.split('').map(function(x){return x.charCodeAt()});
                var salt1 = salt;
                for (var byteIndex = uuid.length - 1; byteIndex >= 0; byteIndex -= 1) {
                    salt1 = testSalt(salt1, uuid[byteIndex], 0x105C3);
                };

/*
                var offset1 = 0;
                while (testSalt(testSalt(salt1, offset1 & 0xFF, 0x105C3), offset1 >> 8, 0x105C3) !== 0xA5B6) {
                    offset1 ++;
                    if (offset1 >= 0xFFFF) {
                        return '';
                    }
                }
*/
                salt1 = salt1 ^ 0xCEDF;

                salt1 = Math.trunc(((salt1 + 0x72FA) & 0xFFFF) * 99999 / 0xFFFF);
                var offset1 = '0000' + salt1;
                offset1 = offset1.substring(offset1.length - 5);
                var salt2 = parseInt(offset1.substring(0, 2) + offset1.substring(3, 5) + offset1.substring(2, 3));
                salt2 = Math.trunc((salt2 / 99999.0) * 0xFFFF, 10) + 1;
                salt2 = testSalt(testSalt(0, salt2 & 0xFF, 0x1064B), salt2 >> 8, 0x1064B);
                for (var i = uuid.length - 1; i >= 0; i -= 1) {
                    salt2 = testSalt(salt2, uuid[i], 0x1064B);
                };

/*
                var offset2 = 0;
                while(testSalt(testSalt(salt2, offset2 & 0xFF, 0x1064B),
                                offset2 >> 8, 0x1064B) !== 0xA5B6) {
                    offset2 += 1;
                    if (offset2 >= 0xFFFF) { return ''; }
                }
*/
                salt2 = salt2 ^ 0xEF22;

                salt2 = Math.trunc((salt2 & 0xFFFF) * 99999 / 0xFFFF);
                var offset2 = '0000' + salt2;
                offset2 = offset2.substring(offset2.length - 5);
                var password = [
                    offset2.charAt(3),
                    offset1.charAt(3),
                    offset1.charAt(1),
                    offset1.charAt(0),
                    '-',
                    offset2.charAt(4),
                    offset1.charAt(2),
                    offset2.charAt(0),
                    '-',
                    offset2.charAt(2),
                    offset1.charAt(4),
                    offset2.charAt(1)
                ].join('');
                if ((maxLicenseProcessesSubprocesses.length > 0) || (licenseType.length > 0) || (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + maxLicenseProcessesSubprocesses};
                if (                                                (licenseType.length > 0) || (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + licenseType                    };
                if (                                                                            (licenseExpirationDate.length > 0) || (licenseClass.length > 0)) {password += ":" + licenseExpirationDate          };
                if                                                                                                                    (licenseClass.length > 0)  {password += ":" + licenseClass                   };
                return password;
            };

            function printPass(documentTag, outputInnerHTML, passwordText) {
                var outputMathLMEl;
                var passwordMathLMEl;
                var passwordInnerCodeMathLMEl;

                outputMathLMEl = document.querySelector(documentTag);
                outputMathLMEl.innerHTML = outputInnerHTML;
                outputMathLMEl.append(document.createElement("br"));
                passwordMathLMEl = document.createElement("pre");
                passwordInnerCodeMathLMEl = document.createElement("code");
                passwordMathLMEl.append(passwordInnerCodeMathLMEl);
                passwordInnerCodeMathLMEl.innerText = passwordText;
                outputMathLMEl.append(passwordMathLMEl);
            };

            function checkboxLicenseTypeRead() {
                var LicenseTypeNumber;
                var result;
                LicenseTypeNumber = 0;

                if (document.getElementById("checkbox-license-type-bit-00").checked) {LicenseTypeNumber |= (1 <<  0)};
                if (document.getElementById("checkbox-license-type-bit-01").checked) {LicenseTypeNumber |= (1 <<  1)};
                if (document.getElementById("checkbox-license-type-bit-02").checked) {LicenseTypeNumber |= (1 <<  2)};
                if (document.getElementById("checkbox-license-type-bit-03").checked) {LicenseTypeNumber |= (1 <<  3)};
                if (document.getElementById("checkbox-license-type-bit-04").checked) {LicenseTypeNumber |= (1 <<  4)};
                if (document.getElementById("checkbox-license-type-bit-05").checked) {LicenseTypeNumber |= (1 <<  5)};
                if (document.getElementById("checkbox-license-type-bit-06").checked) {LicenseTypeNumber |= (1 <<  6)};
                if (document.getElementById("checkbox-license-type-bit-07").checked) {LicenseTypeNumber |= (1 <<  7)};
                if (document.getElementById("checkbox-license-type-bit-08").checked) {LicenseTypeNumber |= (1 <<  8)};
                if (document.getElementById("checkbox-license-type-bit-09").checked) {LicenseTypeNumber |= (1 <<  9)};
                if (document.getElementById("checkbox-license-type-bit-10").checked) {LicenseTypeNumber |= (1 << 10)};
                if (document.getElementById("checkbox-license-type-bit-11").checked) {LicenseTypeNumber |= (1 << 11)};
                if (document.getElementById("checkbox-license-type-bit-12").checked) {LicenseTypeNumber |= (1 << 12)};
                if (document.getElementById("checkbox-license-type-bit-13").checked) {LicenseTypeNumber |= (1 << 13)};
                if (document.getElementById("checkbox-license-type-bit-14").checked) {LicenseTypeNumber |= (1 << 14)};
                if (document.getElementById("checkbox-license-type-bit-15").checked) {LicenseTypeNumber |= (1 << 15)};
                if (document.getElementById("checkbox-license-type-bit-16").checked) {LicenseTypeNumber |= (1 << 16)};
                if (document.getElementById("checkbox-license-type-bit-17").checked) {LicenseTypeNumber |= (1 << 17)};
                if (document.getElementById("checkbox-license-type-bit-18").checked) {LicenseTypeNumber |= (1 << 18)};
                if (document.getElementById("checkbox-license-type-bit-19").checked) {LicenseTypeNumber |= (1 << 19)};
                if (document.getElementById("checkbox-license-type-bit-20").checked) {LicenseTypeNumber |= (1 << 20)};
                if (document.getElementById("checkbox-license-type-bit-21").checked) {LicenseTypeNumber |= (1 << 21)};
                if (document.getElementById("checkbox-license-type-bit-22").checked) {LicenseTypeNumber |= (1 << 22)};
                if (document.getElementById("checkbox-license-type-bit-23").checked) {LicenseTypeNumber |= (1 << 23)};
                if (document.getElementById("checkbox-license-type-bit-24").checked) {LicenseTypeNumber |= (1 << 24)};
                if (document.getElementById("checkbox-license-type-bit-25").checked) {LicenseTypeNumber |= (1 << 25)};
                if (document.getElementById("checkbox-license-type-bit-26").checked) {LicenseTypeNumber |= (1 << 26)};
                if (document.getElementById("checkbox-license-type-bit-27").checked) {LicenseTypeNumber |= (1 << 27)};
                if (document.getElementById("checkbox-license-type-bit-28").checked) {LicenseTypeNumber |= (1 << 28)};
                if (document.getElementById("checkbox-license-type-bit-29").checked) {LicenseTypeNumber |= (1 << 29)};
                if (document.getElementById("checkbox-license-type-bit-30").checked) {LicenseTypeNumber |= (1 << 30)};
                if (document.getElementById("checkbox-license-type-bit-31").checked) {LicenseTypeNumber |= (1 << 31)};

                LicenseTypeNumber = LicenseTypeNumber >>> 0;  // Чтобы преобразовать в 32-битное беззнаковое представление

                if (LicenseTypeNumber == 0) {result = "";}
                else                        {result = LicenseTypeNumber.toString(16).toUpperCase()};

                return result;
            };

            function inputMathidChange(value) {
                var mathID                = value;

                // Извлекаем первые два символа
                var firstTwo = mathID.slice(0, 2);
                
                // Регулярное выражение для проверки формата MachineID
                var regex = /^(\d{4})-(\d{5})-(\d{5})$/;

                // Проверка формата строки
                var match = mathID.match(regex);

                // Проверяем, что это число и не является NaN
                if (!isNaN(firstTwo) && firstTwo.length === 2) {
                    var machineType = parseInt(firstTwo, 10);
                    switch (machineType) {
                        case 31:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=31 - MacOSX-ARM64) ';
                            break;

                        case 33:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=33 - Windows-ARM64) ';
                            break;

                        case 51:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=51 - MacOSX-x86-64) ';
                            break;

                        case 58:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=58 - Windows-ARM) ';
                            break;

                        case 61:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=61 - Windows) ';
                            break;

                        case 62:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=62 - Windows-x86-64) ';
                            break;

                        case 65:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): (MachineType=65 - Linux) ';
                            break;

                        default:
                            document.getElementById("mathid-label").textContent = ' MachineID (MathID): ';
                            break;
                    };
                } else {
                    document.getElementById("mathid-label").textContent = ' MachineID (MathID): ';
                };

                if (match) {
                    // Преобразование отдельных частей строки в числа
                    var A = parseInt(match[1].substring(0, 2));   // Первое число (dd)
                    var B = parseInt(match[1].substring(2) + match[2] + match[3].substring(0, 3)); // Второе число (ddddddddd)
                    var C = parseInt(match[3].substring(3));   // Третье число (dd)

                    // Вычисление выражения (((B >> 2) & 0x3FFFFFFF) + 43 * A + 29 * (B & 3)) % 97
                    var calculatedC = ((B >>> 2) + 43 * A + 29 * (B & 3)) % 97;

                    if (mathID != "") {
                        if (match != null) {
                            if (B <= 4294967295  ) {
                                document.getElementById("mathid-label").textContent += ' (UniqueNumber='+B+')';

                                if (calculatedC == C) {
                                    document.getElementById("mathid-label").textContent += ' (checksum='+C+')';
                                } else {
                                    document.getElementById("mathid-label").textContent += ' (checksum='+C+', а ожидалось '+calculatedC+')';
                                };
                            } else {
                                document.getElementById("mathid-label").textContent += ' (UniqueNumber='+B+' превышает максимально возможное значение 4294967295)';
                            };
                        };
                    };
                };
            };

            function checkboxLicenseTypeClick() {
                var licenseType = checkboxLicenseTypeRead();
                document.getElementById("div-license-type").textContent = " Тип лицензии (License Type): " + licenseType;
            };

            function genPass(event) {
                event.preventDefault();

                var formEl = document.querySelector('#form');
                if(formEl.reportValidity && !formEl.reportValidity()) { return; }

                var weAreEverywhere                 = document.querySelector('#we-are-everywhere'                 ).checked;
                var mathID                          = document.querySelector('#mathid'                            ).value  ;
                var activationKey                   = document.querySelector('#activation-key'                    ).value  ;
                var maxLicenseProcessesSubprocesses = document.querySelector('#max-license-processes-subprocesses').value  ;
                //var licenseType                     = document.querySelector('#license-type'                      ).value  ;
                var licenseType                     = checkboxLicenseTypeRead();
                var licenseExpirationDate           = document.querySelector('#license-expiration-date'           ).value  ;
                var licenseClass                    = document.querySelector('#license-class'                     ).value  ;
                var keyValStr                       = document.querySelector('#key-val-str'                       ).value  ;
                var salt                            = document.querySelector('#salt'                              ).value  ;
                var password                        = ""                                                                   ;

                if ((keyValStr == "") && (mathID == "")) {
                    alert("Укажите Machine ID (Math ID) или строку для генерации пароля");
                } else if ((keyValStr == "") && !(mathID == "") &&  (weAreEverywhere == true) &&  (licenseClass == "")) {
                    alert("Снимите флажок \"We Are Everywhere!\" или укажите класс лицензии (License Class) или укажите строку для генерации пароля")
                } else if ((keyValStr == "") && !(mathID == "") && !(weAreEverywhere == true) && !(licenseClass == "")) {
                    alert("Установите флажок \"We Are Everywhere!\" или очистите поле класса лицензии (License Class) или укажите строку для генерации пароля")
                } else {
                    if (keyValStr == "") {
                        if (weAreEverywhere == true) {
                          keyValStr = 'We Are Everywhere!' + genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass);
                        } else {
                          keyValStr =                        genKeyValStr(mathID, activationKey, maxLicenseProcessesSubprocesses, licenseType, licenseExpirationDate, licenseClass);
                        };
                    };
                    password = genPassword(keyValStr, salt);

                    printPass(
                        '#output',
                        'Password для строки<br>\"' + keyValStr + '\":',
                        password
                    );
                };
            };

            // При загрузке страницы
            document.addEventListener("DOMContentLoaded", function() {
                licenseType          = checkboxLicenseTypeRead();
                document.getElementById("div-license-type").textContent = " Тип лицензии (License Type): " + licenseType;
            });
        </script>
        <style>
            /**
             * Forced light theme version
             */

            :root {
              --background-body: #fff;
              --background: #efefef;
              --background-alt: #f7f7f7;
              --selection: #9e9e9e;
              --text-main: #363636;
              --text-bright: #000;
              --text-muted: #70777f;
              --links: #0076d1;
              --focus: #0096bfab;
              --border: #dbdbdb;
              --code: #000;
              --animation-duration: 0.1s;
              --button-hover: #ddd;
              --scrollbar-thumb: rgb(213, 213, 213);
              --scrollbar-thumb-hover: rgb(196, 196, 196);
              --form-placeholder: #949494;
              --form-text: #000;
              --variable: #39a33c;
              --highlight: #ff0;
              --select-arrow: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' height='62.5' width='116.9' fill='%23161f27'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E");
            }

            html {
              scrollbar-color: rgb(213, 213, 213) #fff;
              scrollbar-color: var(--scrollbar-thumb) var(--background-body);
              scrollbar-width: thin;
            }

            body {
              font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', sans-serif;
              line-height: 1.4;
              max-width: 800px;
              margin: 20px auto;
              padding: 0 10px;
              word-wrap: break-word;
              color: #363636;
              color: var(--text-main);
              background: #fff;
              background: var(--background-body);
              text-rendering: optimizeLegibility;
            }

            button {
              transition:
                background-color 0.1s linear,
                border-color 0.1s linear,
                color 0.1s linear,
                box-shadow 0.1s linear,
                transform 0.1s ease;
              transition:
                background-color var(--animation-duration) linear,
                border-color var(--animation-duration) linear,
                color var(--animation-duration) linear,
                box-shadow var(--animation-duration) linear,
                transform var(--animation-duration) ease;
            }

            input {
              transition:
                background-color 0.1s linear,
                border-color 0.1s linear,
                color 0.1s linear,
                box-shadow 0.1s linear,
                transform 0.1s ease;
              transition:
                background-color var(--animation-duration) linear,
                border-color var(--animation-duration) linear,
                color var(--animation-duration) linear,
                box-shadow var(--animation-duration) linear,
                transform var(--animation-duration) ease;
            }

            textarea {
              transition:
                background-color 0.1s linear,
                border-color 0.1s linear,
                color 0.1s linear,
                box-shadow 0.1s linear,
                transform 0.1s ease;
              transition:
                background-color var(--animation-duration) linear,
                border-color var(--animation-duration) linear,
                color var(--animation-duration) linear,
                box-shadow var(--animation-duration) linear,
                transform var(--animation-duration) ease;
            }

            h1 {
              font-size: 2.2em;
              margin-top: 0;
            }

            h1,
            h2,
            h3,
            h4,
            h5,
            h6 {
              margin-bottom: 12px;
              margin-top: 24px;
            }

            h1 {
              color: #000;
              color: var(--text-bright);
            }

            h2 {
              color: #000;
              color: var(--text-bright);
            }

            h3 {
              color: #000;
              color: var(--text-bright);
            }

            h4 {
              color: #000;
              color: var(--text-bright);
            }

            h5 {
              color: #000;
              color: var(--text-bright);
            }

            h6 {
              color: #000;
              color: var(--text-bright);
            }

            strong {
              color: #000;
              color: var(--text-bright);
            }

            h1,
            h2,
            h3,
            h4,
            h5,
            h6,
            b,
            strong,
            th {
              font-weight: 600;
            }

            q::before {
              content: none;
            }

            q::after {
              content: none;
            }

            blockquote {
              border-left: 4px solid #0096bfab;
              border-left: 4px solid var(--focus);
              margin: 1.5em 0;
              padding: 0.5em 1em;
              font-style: italic;
            }

            q {
              border-left: 4px solid #0096bfab;
              border-left: 4px solid var(--focus);
              margin: 1.5em 0;
              padding: 0.5em 1em;
              font-style: italic;
            }

            blockquote > footer {
              font-style: normal;
              border: 0;
            }

            blockquote cite {
              font-style: normal;
            }

            address {
              font-style: normal;
            }

            a[href^='mailto\:']::before {
              content: '📧 ';
            }

            a[href^='tel\:']::before {
              content: '📞 ';
            }

            a[href^='sms\:']::before {
              content: '💬 ';
            }

            mark {
              background-color: #ff0;
              background-color: var(--highlight);
              border-radius: 2px;
              padding: 0 2px 0 2px;
              color: #000;
            }

            button,
            select,
            input[type='submit'],
            input[type='button'],
            input[type='checkbox'],
            input[type='range'],
            input[type='radio'] {
              cursor: pointer;
            }

            input:not([type='checkbox']):not([type='radio']),
            select {
              display: block;
            }

            input {
              color: #000;
              color: var(--form-text);
              background-color: #efefef;
              background-color: var(--background);
              font-family: inherit;
              font-size: inherit;
              margin-right: 6px;
              margin-bottom: 6px;
              padding: 10px;
              border: none;
              border-radius: 6px;
              outline: none;
            }

            button {
              color: #000;
              color: var(--form-text);
              background-color: #efefef;
              background-color: var(--background);
              font-family: inherit;
              font-size: inherit;
              margin-right: 6px;
              margin-bottom: 6px;
              padding: 10px;
              border: none;
              border-radius: 6px;
              outline: none;
            }

            textarea {
              color: #000;
              color: var(--form-text);
              background-color: #efefef;
              background-color: var(--background);
              font-family: inherit;
              font-size: inherit;
              margin-right: 6px;
              margin-bottom: 6px;
              padding: 10px;
              border: none;
              border-radius: 6px;
              outline: none;
            }

            select {
              color: #000;
              color: var(--form-text);
              background-color: #efefef;
              background-color: var(--background);
              font-family: inherit;
              font-size: inherit;
              margin-right: 6px;
              margin-bottom: 6px;
              padding: 10px;
              border: none;
              border-radius: 6px;
              outline: none;
            }

            input[type='checkbox'],
            input[type='radio'] {
              height: 1em;
              width: 1em;
            }

            input[type='radio'] {
              border-radius: 100%;
            }

            input {
              vertical-align: top;
            }

            label {
              vertical-align: middle;
              margin-bottom: 4px;
              display: inline-block;
            }

            input:not([type='checkbox']):not([type='radio']),
            input[type='range'],
            select,
            button,
            textarea {
              -webkit-appearance: none;
            }

            textarea {
              display: block;
              margin-right: 0;
              box-sizing: border-box;
              resize: vertical;
            }

            textarea:not([cols]) {
              width: 100%;
            }

            textarea:not([rows]) {
              min-height: 40px;
              height: 140px;
            }

            select {
              background: #efefef url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' height='62.5' width='116.9' fill='%23161f27'%3E %3Cpath d='M115.3,1.6 C113.7,0 111.1,0 109.5,1.6 L58.5,52.7 L7.4,1.6 C5.8,0 3.2,0 1.6,1.6 C0,3.2 0,5.8 1.6,7.4 L55.5,61.3 C56.3,62.1 57.3,62.5 58.4,62.5 C59.4,62.5 60.5,62.1 61.3,61.3 L115.2,7.4 C116.9,5.8 116.9,3.2 115.3,1.6Z'/%3E %3C/svg%3E") calc(100% - 12px) 50% / 12px no-repeat;
              background: var(--background) var(--select-arrow) calc(100% - 12px) 50% / 12px no-repeat;
              padding-right: 35px;
            }

            select::-ms-expand {
              display: none;
            }

            select[multiple] {
              padding-right: 10px;
              background-image: none;
              overflow-y: auto;
            }

            button,
            input[type='submit'],
            input[type='button'] {
              padding-right: 30px;
              padding-left: 30px;
            }

            button:hover {
              background: #ddd;
              background: var(--button-hover);
            }

            input[type='submit']:hover {
              background: #ddd;
              background: var(--button-hover);
            }

            input[type='button']:hover {
              background: #ddd;
              background: var(--button-hover);
            }

            input:focus {
              box-shadow: 0 0 0 2px #0096bfab;
              box-shadow: 0 0 0 2px var(--focus);
            }

            select:focus {
              box-shadow: 0 0 0 2px #0096bfab;
              box-shadow: 0 0 0 2px var(--focus);
            }

            button:focus {
              box-shadow: 0 0 0 2px #0096bfab;
              box-shadow: 0 0 0 2px var(--focus);
            }

            textarea:focus {
              box-shadow: 0 0 0 2px #0096bfab;
              box-shadow: 0 0 0 2px var(--focus);
            }

            input[type='checkbox']:active,
            input[type='radio']:active,
            input[type='submit']:active,
            input[type='button']:active,
            input[type='range']:active,
            button:active {
              transform: translateY(2px);
            }

            input:disabled,
            select:disabled,
            button:disabled,
            textarea:disabled {
              cursor: not-allowed;
              opacity: 0.5;
            }

            ::-moz-placeholder {
              color: #949494;
              color: var(--form-placeholder);
            }

            :-ms-input-placeholder {
              color: #949494;
              color: var(--form-placeholder);
            }

            ::-ms-input-placeholder {
              color: #949494;
              color: var(--form-placeholder);
            }

            ::placeholder {
              color: #949494;
              color: var(--form-placeholder);
            }

            fieldset {
              border: 1px #0096bfab solid;
              border: 1px var(--focus) solid;
              border-radius: 6px;
              margin: 0;
              margin-bottom: 12px;
              padding: 10px;
            }

            legend {
              font-size: 0.9em;
              font-weight: 600;
            }

            input[type='range'] {
              margin: 10px 0;
              padding: 10px 0;
              background: transparent;
            }

            input[type='range']:focus {
              outline: none;
            }

            input[type='range']::-webkit-slider-runnable-track {
              width: 100%;
              height: 9.5px;
              -webkit-transition: 0.2s;
              transition: 0.2s;
              background: #efefef;
              background: var(--background);
              border-radius: 3px;
            }

            input[type='range']::-webkit-slider-thumb {
              box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d;
              height: 20px;
              width: 20px;
              border-radius: 50%;
              background: #dbdbdb;
              background: var(--border);
              -webkit-appearance: none;
              margin-top: -7px;
            }

            input[type='range']:focus::-webkit-slider-runnable-track {
              background: #efefef;
              background: var(--background);
            }

            input[type='range']::-moz-range-track {
              width: 100%;
              height: 9.5px;
              -moz-transition: 0.2s;
              transition: 0.2s;
              background: #efefef;
              background: var(--background);
              border-radius: 3px;
            }

            input[type='range']::-moz-range-thumb {
              box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
              height: 20px;
              width: 20px;
              border-radius: 50%;
              background: #dbdbdb;
              background: var(--border);
            }

            input[type='range']::-ms-track {
              width: 100%;
              height: 9.5px;
              background: transparent;
              border-color: transparent;
              border-width: 16px 0;
              color: transparent;
            }

            input[type='range']::-ms-fill-lower {
              background: #efefef;
              background: var(--background);
              border: 0.2px solid #010101;
              border-radius: 3px;
              box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
            }

            input[type='range']::-ms-fill-upper {
              background: #efefef;
              background: var(--background);
              border: 0.2px solid #010101;
              border-radius: 3px;
              box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
            }

            input[type='range']::-ms-thumb {
              box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
              border: 1px solid #000;
              height: 20px;
              width: 20px;
              border-radius: 50%;
              background: #dbdbdb;
              background: var(--border);
            }

            input[type='range']:focus::-ms-fill-lower {
              background: #efefef;
              background: var(--background);
            }

            input[type='range']:focus::-ms-fill-upper {
              background: #efefef;
              background: var(--background);
            }

            a {
              text-decoration: none;
              color: #0076d1;
              color: var(--links);
            }

            a:hover {
              text-decoration: underline;
            }

            code {
              background: #efefef;
              background: var(--background);
              color: #000;
              color: var(--code);
              padding: 2.5px 5px;
              border-radius: 6px;
              font-size: 1em;
            }

            samp {
              background: #efefef;
              background: var(--background);
              color: #000;
              color: var(--code);
              padding: 2.5px 5px;
              border-radius: 6px;
              font-size: 1em;
            }

            time {
              background: #efefef;
              background: var(--background);
              color: #000;
              color: var(--code);
              padding: 2.5px 5px;
              border-radius: 6px;
              font-size: 1em;
            }

            pre > code {
              padding: 10px;
              display: block;
              overflow-x: auto;
            }

            var {
              color: #39a33c;
              color: var(--variable);
              font-style: normal;
              font-family: monospace;
            }

            kbd {
              background: #efefef;
              background: var(--background);
              border: 1px solid #dbdbdb;
              border: 1px solid var(--border);
              border-radius: 2px;
              color: #363636;
              color: var(--text-main);
              padding: 2px 4px 2px 4px;
            }

            img,
            video {
              max-width: 100%;
              height: auto;
            }

            hr {
              border: none;
              border-top: 1px solid #dbdbdb;
              border-top: 1px solid var(--border);
            }

            table {
              border-collapse: collapse;
              margin-bottom: 10px;
              width: 100%;
              table-layout: fixed;
            }

            table caption {
              text-align: left;
            }

            td,
            th {
              padding: 6px;
              text-align: left;
              vertical-align: top;
              word-wrap: break-word;
            }

            thead {
              border-bottom: 1px solid #dbdbdb;
              border-bottom: 1px solid var(--border);
            }

            tfoot {
              border-top: 1px solid #dbdbdb;
              border-top: 1px solid var(--border);
            }

            tbody tr:nth-child(even) {
              background-color: #f7f7f7;
              background-color: var(--background-alt);
            }

            ::-webkit-scrollbar {
              height: 10px;
              width: 10px;
            }

            ::-webkit-scrollbar-track {
              background: #efefef;
              background: var(--background);
              border-radius: 6px;
            }

            ::-webkit-scrollbar-thumb {
              background: rgb(213, 213, 213);
              background: var(--scrollbar-thumb);
              border-radius: 6px;
            }

            ::-webkit-scrollbar-thumb:hover {
              background: rgb(196, 196, 196);
              background: var(--scrollbar-thumb-hover);
            }

            ::-moz-selection {
              background-color: #9e9e9e;
              background-color: var(--selection);
              color: #000;
              color: var(--text-bright);
            }

            ::selection {
              background-color: #9e9e9e;
              background-color: var(--selection);
              color: #000;
              color: var(--text-bright);
            }

            details {
              display: flex;
              flex-direction: column;
              align-items: flex-start;
              background-color: #f7f7f7;
              background-color: var(--background-alt);
              padding: 10px 10px 0;
              margin: 1em 0;
              border-radius: 6px;
              overflow: hidden;
            }

            details[open] {
              padding: 10px;
            }

            details > :last-child {
              margin-bottom: 0;
            }

            details[open] summary {
              margin-bottom: 10px;
            }

            summary {
              display: list-item;
              background-color: #efefef;
              background-color: var(--background);
              padding: 10px;
              margin: -10px -10px 0;
              cursor: pointer;
              outline: none;
            }

            summary:hover,
            summary:focus {
              text-decoration: underline;
            }

            details > :not(summary) {
              margin-top: 0;
            }

            summary::-webkit-details-marker {
              color: #363636;
              color: var(--text-main);
            }

            footer {
              border-top: 1px solid #dbdbdb;
              border-top: 1px solid var(--border);
              padding-top: 10px;
              color: #70777f;
              color: var(--text-muted);
            }

            body > footer {
              margin-top: 40px;
            }

            @media print {
              body,
              pre,
              code,
              summary,
              details,
              button,
              input,
              textarea {
                background-color: #fff;
              }

              button,
              input,
              textarea {
                border: 1px solid #000;
              }

              body,
              h1,
              h2,
              h3,
              h4,
              h5,
              h6,
              pre,
              code,
              button,
              input,
              textarea,
              footer,
              summary,
              strong {
                color: #000;
              }

              summary::marker {
                color: #000;
              }

              summary::-webkit-details-marker {
                color: #000;
              }

              tbody tr:nth-child(even) {
                background-color: #f2f2f2;
              }

              a {
                color: #00f;
                text-decoration: underline;
              }
            }

            /*# sourceMappingURL=light.css.map */

            input[type="text"] {
                width: calc(100% - 20px);
            }
        </style>
    </head>
    <body>
        <h1>Универсальный генератор паролей для всех продуктов Wolfram</h1>
        <ol>
            <li>Установите приложение <b>Wolfram</b>
                (в версии 14.1 и выше оно заменяет 4 продукта: <b>Mathematica</b>, <b>Wolfram Finance Platform</b>, <b>Wolfram|One</b>, <b>Wolfram|Alpha Notebook Edition</b>)
                с <a href="https://www%2Ewolfram%2Ecom/mathematica/trial/" target="_blank">официального сайта</a><br>
                или установите <b>Wolfram Player</b> с <a href="https://www%2Ewolfram%2Ecom/player/" target="_blank">официального сайта</a><br>
                или установите <b>System Modeler</b> с <a href="https://www%2Ewolfram%2Ecom/system-modeler/trial/" target="_blank">официального сайта</a>.<br>
                См. также <a href="https://www%2Ewolfram%2Ecom/download-center/" target="_blank">Wolfram Download Center</a>.<br>
                <br>
            </li>
            <li>На экране активации продукта нажмите кнопку <b>Other ways to activate</b>, а затем <b>Manual Activation</b> или <b>Activate offline through activation key and requested password</b>.<br>
                <br>
            </li>
            <li>Ниже введите полученный <b>MachineID</b>, он же <b>MathID</b> (nnnn-nnnnn-nnnnn), любой <b>Activation Key</b> (nnnn-nnnn-xxxxxx) (достаточно просто оставить Activation Key по умолчанию), введите <b>хэш</b>,
                а также для <b>Wolfram Player</b> и для версии <b>14.1 и выше</b> продукта под названием <b>Wolfram</b> (который заменяет одновременно Mathematica, Wolfram Finance Platform, Wolfram|One и Wolfram|Alpha Notebook Edition)
                обязательно укажите <b>тип лицензии (License Type &mdash; см. ниже)</b>,
                для <b>MathLM</b> установите чекбокс (флажок) ниже и укажите <b>класс лицензии (License Class &mdash; см. ниже)</b>
                и, если нужно, укажите также другие данные.<br>
                <br>
                Список <b>хэшей</b>:<br>
                <br>
                0xD1CF  &mdash; для Mathematica                 14.1 и выше (19.1?), System Modeler 14.1 и выше (19.1?)<br>
                                                                                                                       <br>
                0x5417  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (19.0?), System Modeler 14.1 и выше (19.0?)<br>
                0xB013  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (18.3?), System Modeler 14.1 и выше (18.3?)<br>
                0xD54F  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (18.2?), System Modeler 14.1 и выше (18.2?)<br>
                0x66C0  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (18.1?), System Modeler 14.1 и выше (18.1?)<br>
                0x22DD  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (18.0?), System Modeler 14.1 и выше (18.0?)<br>
                0xCD2D  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (17.3?), System Modeler 14.1 и выше (17.3?)<br>
                0xB4D0  &mdash; для Mathematica    13.0 &ndash; 14.1 и выше (17.2?), System Modeler 14.1 и выше (17.2?)<br>
                                                                                                                       <br>
                0xE756  &mdash; для Mathematica    12.0 &ndash; 14.1 и выше (17.1?), System Modeler 14.1 и выше (17.1?)<br>
                0x8C68  &mdash; для Mathematica    12.0 &ndash; 14.1 и выше (17.0?), System Modeler 14.1 и выше (17.0?)<br>
                0x8250  &mdash; для Mathematica    12.0 &ndash; 14.1 и выше (16.3?), System Modeler 14.1 и выше (16.3?)<br>
                0xABEB  &mdash; для Mathematica    12.0 &ndash; 14.1 и выше (16.2?), System Modeler 14.1 и выше (16.2?)<br>
                                                                                                                       <br>
                0x8C72  &mdash; для System Modeler 13.0 &ndash; 14.1 и выше (16.1?), Mathematica    14.1 и выше (16.1?)<br>
                0x4209  &mdash; для System Modeler 13.0 &ndash; 14.1 и выше (16.0?), Mathematica    14.1 и выше (16.0?)<br>
                0x73EE  &mdash; для System Modeler 13.0 &ndash; 14.1 и выше (15.3?), Mathematica    14.1 и выше (15.3?)<br>
                0x64EC  &mdash; для System Modeler 13.0 &ndash; 14.1 и выше (15.2?), Mathematica    14.1 и выше (15.2?)<br>
                0x7C53  &mdash; для System Modeler 13.0 &ndash; 14.1 и выше (15.1?), Mathematica    14.1 и выше (15.1?)<br>
                                                                                                                       <br>
                0x5770  &mdash; для System Modeler  4.3 &ndash; 14.1 и выше (15.0?), Mathematica    14.1 и выше (15.0?)<br>
                0x7C91  &mdash; для System Modeler  4.3 &ndash; 14.1 и выше (14.3?), Mathematica    14.1 и выше (14.3?)<br>
                0xEEFE  &mdash; для System Modeler  4.3 &ndash; 14.1 и выше (14.2?), Mathematica    14.1 и выше (14.2?)<br>
                                                                                                                       <br>
                0x60F0  &mdash; для Mathematica    12.0 &ndash; 14.1                                                   <br>
                0x8E3C  &mdash; для Mathematica    12.0 &ndash; 14.0                                                   <br>
                                                                                                                       <br>
                0x44F1  &mdash; для Mathematica    10.2 &ndash; 13.3                                                   <br>
                0x29C2  &mdash; для Mathematica    10.2 &ndash; 13.2                                                   <br>
                0xEE71  &mdash; для Mathematica    10.2 &ndash; 13.1                                                   <br>
                0xDB75  &mdash; для Mathematica    10.2 &ndash; 13.0                                                   <br>
                0xD227  &mdash; для Mathematica    10.2 &ndash; 12.3                                                   <br>
                0x2FDB  &mdash; для Mathematica    10.2 &ndash; 12.2                                                   <br>
                                                                                                                       <br>
                0xA439  &mdash; для Mathematica    10.0 &ndash; 12.0                                                   <br>
                0xE4A8  &mdash; для Mathematica    10.0 &ndash; 12.1                                                   <br>
                0xA68B  &mdash; для Mathematica    10.0 &ndash; 12.0                                                   <br>
                0x29F8  &mdash; для Mathematica    10.0 &ndash; 11.3                                                   <br>
                0x6A91  &mdash; для Mathematica    10.0 &ndash; 11.2                                                   <br>
                0x42DD  &mdash; для Mathematica    10.0 &ndash; 11.1                                                   <br>
                0x25DB  &mdash; для Mathematica    10.0 &ndash; 11.0                                                   <br>
                0x14411 &mdash; для Mathematica    10.0 &ndash; 10.4 (этот хэш не работает)                            <br>
                0x5750  &mdash; для Mathematica    10.0 &ndash; 10.4                                                   <br>
                0x80B9  &mdash; для Mathematica    10.0 &ndash; 10.3                                                   <br>
                0x1764E &mdash; для Mathematica    10.0 &ndash; 10.2 (этот хэш не работает)                            <br>
                0xE3B7  &mdash; для Mathematica    10.0 &ndash; 10.2                                                   <br>
                0xC1AE  &mdash; для Mathematica    10.0 &ndash; 10.1                                                   <br>
                0xDA5E  &mdash; для Mathematica    10.0 &ndash; 10.0                                                   <br>
                                                                                                                       <br>
                0x1361  &mdash; для System Modeler  4.3 &ndash; 14.1                                                   <br>
                0x755E  &mdash; для System Modeler  4.3 &ndash; 14.0                                                   <br>
                0xA5CE  &mdash; для System Modeler  4.3 &ndash; 13.3                                                   <br>
                0xF536  &mdash; для System Modeler  4.3 &ndash; 13.2                                                   <br>
                0x1330  &mdash; для System Modeler  4.3 &ndash; 13.1                                                   <br>
                0xBF47  &mdash; для System Modeler  4.3 &ndash; 13.0                                                   <br>
                                                                                                                       <br>
                0x6188  &mdash; для System Modeler  4.0 &ndash; 12.3                                                   <br>
                0xAB0B  &mdash; для System Modeler  4.0 &ndash; 12.2                                                   <br>
                0xB4D3  &mdash; для System Modeler  4.0 &ndash; 12.1                                                   <br>
                0x47C5  &mdash; для System Modeler  4.0 &ndash; 12.0                                                   <br>
                0x81DD  &mdash; для System Modeler  4.0 &ndash;  5.1                                                   <br>
                0x8330  &mdash; для System Modeler  4.0 &ndash;  5.0                                                   <br>
                0x72C4  &mdash; для System Modeler  4.0 &ndash;  4.3                                                   <br>
                0x2F33  &mdash; для System Modeler  4.0 &ndash;  4.2                                                   <br>
                0x6897  &mdash; для System Modeler  4.0 &ndash;  4.1                                                   <br>
                0x15BF  &mdash; для System Modeler  4.0                                                                <br>
                                                                                                                       <br>
                0x72A4  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x29A5  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x140A  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x3FD1  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x452D  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x541A  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x3575  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x7F8C  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x6587  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                0x5B29  &mdash; для MathLM         10.0 &ndash; 14.1 и выше                                            <br>
                Таким образом, начиная с версии 14.1 у Mathematica и System Modeler общий список хэшей, кроме одного, а со следующей версии скорее всего вообще будут одинаковые списки хэшей.<br>
                Все хэши от Mathematica и System Modeler подходят также и для соответствующих версий MathLM.<br>
                Хэши от Mathematica используются также и для Wolfram Player, Wolfram Finance Platform, Wolfram|Alpha Notebook Edition, Wolfram|One, Wolfram Desktop, Wolfram Engine, WolframScript.<br>
                Списки хэшей приведены в порядке, обратном тому, который зашит в программы, поэтому более долговечные хэши приведены здесь в начале списков.<br>
                Причина, по которой вместо одного хэша имеется целый список хэшей и этот список меняется в каждой версии, в том, что предполагается, что официально выдаваемая лицензия будет пригодна для текущей версии,
                не будет работать на следующей (в следующей версии этот хэш исключается из списка), но пригодна также и для нескольких предыдущих версий.
                Для этого в EXE и DLL файлы приложений и были заранее зашиты хэши от будущих версий.
                Данный кейген позволяет использовать не только хэши от текущей версии, но и хэши от будущих версий, но которые пригодны и для текущей версии.<br>
                <br>
                Для справки, выдаваемый приложением <b>MachineID</b> (он же <b>MathID</b>) имеет формат:<br>
                aabb-bbbbb-bbbcc<br>
                где:<br>
                aa - цифры числа MachineType (в пределах вроде бы от 10 до 79), которое зависит от архитектуры:<br>
                58 - Windows-ARM,<br>
                33 - Windows-ARM64,<br>
                62 - Windows-x86-64 (AMD64 (K8), Intel 64),<br>
                61 - Windows (unknown),<br>
                65 - Linux,<br>
                31 - MacOSX-ARM64,<br>
                51 - MacOSX-x86-64.<br>
                bbbbbbbbbb - цифры числа UniqueNumber (32-битное число без знака, т. е. должно быть не больше 4294967295), которое привязано к разделу с операционной системой, для его вычисления:<br>
                 - в Linux используется /etc/machine-id (для systemd) либо /var/lib/dbus/machine-id, который генерируется случайным образом при загрузке операционной системы (если его нет),<br>
                 - в Mac OS X вроде бы используется MAC адрес,<br>
                 - в Windows до версии 14.0 включительно используется серийный номер тома Windows, печатается командой vol (vol %SystemDrive%), поменять можно утилитой volumeid от SysInternals,<br>
                а начиная с версии 14.1 в Windows в первую очередь используется переменная реестра<br>
                HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid<br>
                (см. командой reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid), 
                поэтому в версии 14.1 MachineID отличается от предыдущих версий.<br>
                cc - цифры числа checksum, которое вычисляется по формуле:<br>
                checksum = ((UniqueNumber >> 2) + 43 * MachineType + 29 * (UniqueNumber & 3)) % 97<br>
                Проверить MachineID в Mathematica (или WolframScript) можно, используя встроенный символ 
                <a href="https://reference%2Ewolfram%2Ecom/language/ref/$MachineID.html" target="_blank">$MachineID</a>. 
                Под Linux, чтобы узнать MachineID, также вроде бы можно запустить mathinfo.<br>
                Хранится MachineID в файле паролей, путь к которому можно узнать в Mathematica или WolframScript, используя встроенный символ 
                <a href="https://reference%2Ewolfram%2Ecom/language/ref/$PasswordFile.html" target="_blank">$PasswordFile</a>.<br>
                <br>
                Для генерации пароля для менеджера лицензий MathLM установите флажок <b>"We Are Everywhere!"</b> и укажите класс лицензии (<b>License Class</b>): CA или CX или CB или CC или CM 
                (для остальных приложений этот флажок не надо ставить и не нужно указывать класс лицензии).
                Платформы Windows, Mac OS X и некоторые Linux относятся к классу A. Платформы серверного класса относятся к классу B.
                Для одного и того же Activation Key можно задать по одной лицензии каждого класса.<br>
                Пароли классов A, X, B, C предназначены для процессов Mathematica (MathKernel, Mathematica, Sub MathKernel, Sub Mathematica).<br>
                Пароли класса A действительны для клиентов класса A.<br>
                Пароли класса X действительны для клиентов классов A, X.<br>
                Пароли класса B действительны для клиентов классов A, X, B.<br>
                Пароли класса C действительны для клиентов классов A, X, B, C.<br>
                Пароли класса M предназачены для процессов System Modeler (Modeling Center, Simulation Center, Session Manager).<br>
                Поэтому скорее всего для MathLM достаточно 2 лицензий: класса C (для клиентов процессов Mathematica) и класса M (для клиентов процессов System Modeler).<br>
                Вероятно, клиентом запрашивается сетевая лицензия определённого класса: M &mdash; от System Modeler, и A, X, B, C &mdash; от остальных продуктов
                и сервером лицензий MathLM выдаётся первая попавшаяся лицензия, которая подходит для запрашиваемого класса,
                поэтому не получится, чтобы от одного и того же сервера лицензий MathLM можно было получить лицензии,
                например, и для Mathematica и для Wolfram Player Pro,
                например, если запрашивается лицензия класса A, а первая попавшаяся лицензия &mdash; это лицензия класса C для Wolfram Player Pro (т. е. с типом лицензии 40),
                то вместо Mathematica мы получим в результате Wolfram Player Pro.<br>
                <br>
                Лимиты для количества процессов и субпроцессов Mathematica и System Modeler (<b>Max License Processes и Max License Subprocesses</b>)
                задаются в виде нескольких неотрицательных целых десятичных чисел, перечисленных через запятую без пробелов.
                Если оставить строку пустой, то количество процессов и субпроцессов будет неограничено.<br>
                Для Mathematica можно указать до 4 чисел: первое число &mdash; максимальное количество процессов (т. е. управляющих процессов) ядра (MathKernel),
                второе число &mdash; максимальное количество процессов Front End (Mathematica),
                если указать только одно число, то второе будет считаться равным первому,
                третье и четвёртое числа &mdash; максимальное число субпроцессов (т. е. вычислительных процессов) соответственно для ядра (MathKernel) и Front End (Mathematica).
                Если указать только 2 числа, то 3-е и 4-е будут считаться в 4 раза большими, чем соответственно 1-е и 2-е число.<br>
                Для System Modeler можно указать до 3 чисел: первое число &mdash; максимальное количество процессов Modeling Center,
                второе число &mdash; максимальное количество процессов Simulation Center,
                третье число &mdash; максимальное количество процессов Session Manager,
                если не указать второе число, то оно будет считаться равным первому,
                если не указать третье число, то оно будет считаться равным первому.<br>
                Числа 9999 и более означают бесконечность, т. е. неограниченное количество,
                т. е. 9999,9999,9999,9999 для Mathematica и 9999,9999,9999 для System Modeler дадут тот же эффект, что и пустая строка.<br>
                <br>

                Тип лицензии (<b>License Type</b>) &mdash; шестнадцатеричное число (без префикса 0x).<br>
                Для Mathematica и т. п. версий 14.0 и ниже если его не указать, то будет лицензия Professional,
                для приложения Wolfram версий 14.1 и выше нужно указать значение, включающее одну из масок: 100000 (Wolfram|Alpha Notebook Edition) или 200000 (Wolfram|One) или 400000 (Finance Platform) или 800000 (Mathematica) или 1000000 (Wolfram Programming Lab) или 20 (Player) или 40 (Player Pro).
                Значения имеют отдельные биты (двоичные разряды) числа, поэтому тип лицензии можно получить, сложив побитово (с помощью битовой операция ИЛИ) соответствующие шестнадцатеричные битовые маски:<br>
                &mdash; бит &ensp;0 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;1) &mdash; неизвестно что означает этот бит, но он установлен в бесплатных триальных лицензиях,<br>
                &mdash; бит &ensp;1 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;2) &mdash; редакция Product Trial, также нужно задать дату истечения срока действия лицензии (License Expiration Date) в формате ГГГГММДД,<br>
                &mdash; бит &ensp;2 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;4) &mdash; редакция Student Edition,<br>
                &mdash; бит &ensp;3 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;8) &mdash; редакция Site License,<br>
                &mdash; бит &ensp;4 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;10)      &mdash; Player, если установить этот бит, то Mathematica версии 13 и ниже будет как Wolfram Player, в версии 14.0 и выше этот бит вроде бы игнорируется,<br>
                &mdash; бит &ensp;5 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;20)      &mdash; продукт Wolfram Player, если установить этот бит, то лицензию можно использовать для Wolfram Player, а Mathematica и Wolfram версии 14.1 и выше с такой лицензией
                                                                                                тоже будут как Wolfram Player,<br>
                &mdash; бит &ensp;6 (маска &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;40)      &mdash; продукт Wolfram Player Pro, если установить этот бит, то лицензию можно использовать для Wolfram Player &mdash;
                                                                                                он превратится в Wolfram Player Pro, а Mathematica и Wolfram версии 14.1 и выше с такой лицензией будут как Wolfram Player Pro &mdash; можно вычислять, но не редактировать,<br>
                &mdash; бит 11      (маска &ensp;&ensp;&ensp;&ensp;&ensp;800)           &mdash; редакция Home Edition,<br>
                &mdash; бит 12      (маска &ensp;&ensp;&ensp;&ensp;1000)                &mdash; редакция Enterprise Edition, если установить этот бит, то Mathematica версии 13.3 и ниже с такой лицензией в окнах "About" и "Welcome Screen" пишет что она "Enterprise Edition",
                                                                                                но реально вроде бы этот бит больше ни на что не влияет, в версии 14 и выше этот бит вроде бы игнорируется,<br>
                &mdash; бит 13      (маска &ensp;&ensp;&ensp;&ensp;2000)                &mdash; фича EnterpriseSigning &mdash;
                                                                                                если установить этот бит, то Mathematica и Wolfram версии 14.1 и выше с такой лицензией при выборе пункта меню "Preview for Wolfram Player"
                                                                                                открывает Preview c "WOLFRAM Player Pro" и "Enterprise CDF Preview",
                                                                                                а также позволяет записывать CDF файлы в формате EnterpriseCDF &mdash; CDFDeploy с опцией "Target" -> "PlayerPro" по умолчанию,
                                                                                                для записи FreeCDF нужно будет явно указывать "Target" -> "CDFPlayer",<br>
                &mdash; бит 19      (маска &ensp;&ensp;&ensp;80000)                     &mdash; фича AltExpirationPolicy, неизвестно, что означает, лицензию с установленным этим битом (а также с установленным битом для фичи AutoRenewingSubscription)
                                                                                                выдают например для бесплатного Wolfram Engine &mdash; с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии,
                                                                                                эта лицезия у Wolfram Engine вроде бы автоматически обновляется,<br>
                &mdash; бит 20      (маска &ensp;&ensp;100000)                          &mdash; продукт Wolfram|Alpha Notebook Edition приложения Wolfram версии 14.1 и выше, в каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт,<br>
                &mdash; бит 21      (маска &ensp;&ensp;200000)                          &mdash; продукт Wolfram|One                    приложения Wolfram версии 14.1 и выше, в каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт,<br>
                &mdash; бит 22      (маска &ensp;&ensp;400000)                          &mdash; продукт Wolfram Finance Platform       приложения Wolfram версии 14.1 и выше, в каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт,<br>
                &mdash; бит 23      (маска &ensp;&ensp;800000)                          &mdash; продукт Mathematica                    приложения Wolfram версии 14.1 и выше, в каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт,<br>
                &mdash; бит 24      (маска &ensp;1000000)                               &mdash; продукт Wolfram Programming Lab        приложения Wolfram версии 14.1 и выше, но вообще-то Wolfram Programming Lab &mdash; это устаревший продукт,
                                                                                                все функции и возможности которого доступны в Wolfram|One, в каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт,<br>
                &mdash; бит 29      (маска 20000000)                                    &mdash; фича AutoRenewingSubscription, неизвестно, что означает, лицензию с установленным этим битом (а также с установленным битом для фичи AutoRenewingSubscription)
                                                                                                выдают например  для бесплатного Wolfram Engine &mdash; с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии,
                                                                                                эта лицезия у Wolfram Engine вроде бы автоматически обновляется,<br>
                &mdash; бит 31      (маска 80000000)                                    &mdash; неизвестно что означает этот бит, но если его установить, то приложение не принимает лицензию.<br>
                Просто поставьте внизу галочки, соответствующие выбранным битам.<br>
                Для System Modeler все биты License Type, кроме битов соответствующих битовым маскам 2 и 80000000 вроде бы ни на что не влияют.<br>
                Для Wolfram Player последних версий если не будет ни 20 ни 40, Player лицензию не примет, а также не примет, если будет 100000 или 80000000.<br>
                Таким образом,
                для лицензии для продукта Mathematica и лицензии для приложения MathLM для Mathematica (т. е. лицензий классов A, X, B, C) лучше всего будет тип лицензии 803001,
                для приложения Wolfram Player &mdash; 41,
                для приложения System Modeler &mdash; 1.<br>
                <br>

                Дата истечения срока действия лицензии (<b>License Expiration Date</b>) задаётся числом в формате ГГГГММДД. Если не указать, то лицензия будет неограниченной во времени.<br>
                <br>

                Вместо всех параметров (кроме хэша) можно указать <b>строку для генерации пароля</b> (если строка не пустая, все параметры кроме хэша игнорируются):<br>
                &mdash; для приложения MathLM в формате:<br>
                <pre>We Are Everywhere!MathID@LicenseExpirationDate:MaxLicenseProcessesSubprocesses*LicenseClass$LicenseType&ActivationKey</pre>
                &mdash; для приложений Mathematica (и ему подобных), Wolfram (версия 14.1 и выше), Wolfram Player и System Modeler в формате:<br>
                <pre>MathID@LicenseExpirationDate:MaxLicenseProcessesSubprocesses$LicenseType&ActivationKey</pre>
                Ненужные параметры вместе с соответствующим символом перед ними указывать не нужно.<br>

                Примеры для MathID=6101-23456-78991 и Activation Key=3893-9258-K6XJLE:<br>

                &mdash; для Mathematica Enterprise, тип лицензии 803001:<br>
                строка: 6101-23456-78991$803001&3893-9258-K6XJLE<br>
                С хэшем 0xD1CF (версии 14.1 и выше) пароль будет:<br>
                0788-939-970::803001<br>

                &mdash; для Wolfram Finance Platform Enterprise, тип лицензии 403001:<br>
                строка: 6101-23456-78991$403001&3893-9258-K6XJLE<br>
                С хэшем 0xD1CF (версии 14.1 и выше) пароль будет:<br>
                9978-733-555::403001<br>

                &mdash; для Wolfram|One Enterprise, тип лицензии 203001:<br>
                строка: 6101-23456-78991$203001&3893-9258-K6XJLE<br>
                С хэшем 0xD1CF (версии 14.1 и выше) пароль будет:<br>
                2978-545-057::203001<br>

                &mdash; для Wolfram|Alpha Notebook Edition Enterprise, тип лицензии 103001:<br>
                строка: 6101-23456-78991$103001&3893-9258-K6XJLE<br>
                С хэшем 0xD1CF (версии 14.1 и выше) пароль будет:<br>
                3378-481-769::103001<br>

                &mdash; для Wolfram Player Pro, тип лицензии 41:<br>
                строка: 6101-23456-78991$41&3893-9258-K6XJLE<br>
                С хэшем 0xD1CF (версии 14.1 и выше) пароль будет:<br>
                9870-938-927::41<br>

                &mdash; для System Modeler, тип лицензии 1:<br>
                строка: 6101-23456-78991$1&3893-9258-K6XJLE<br>
                С хэшем 0xD1CF (версии 14.1 и выше) пароль будет:<br>
                5808-931-237::1<br>

                &mdash; для MathLM для Mathematica Enterprise, тип лицензии 803001, класс лицензии C:<br>
                строка: We Are Everywhere!6101-23456-78991*CC$803001&3893-9258-K6XJLE<br>
                С хэшем 0x72A4 (версии 10.0 &ndash; 14.1 и выше) пароль будет:<br>
                4792-909-975::803001::CC<br>

                &mdash; для MathLM для System Modeler, тип лицензии 1, класс лицензии M:<br>
                строка: We Are Everywhere!6101-23456-78991*CM$1&3893-9258-K6XJLE<br>
                С хэшем 0x72A4 (версии 10.0 &ndash; 14.1 и выше) пароль будет:<br>
                4629-980-579::1::CM<br>
                <br>
            </li>
            <li>Нажмите <b>Сгенерировать пароль (password)</b>.<br>
                <br>
            </li>
                
            <li>В окне активации продукта введите ваш <b>Activation Key</b> и сгенерированный <b>Password</b> чтобы активировать продукт.<br>
                <br>
            </li>
                
            <li>Игнорируйте запрос <b>Register</b>.<br>
                <br>
            </li>
                
            <li>Для приложения под названием <b>Wolfram</b> версии <b>14.1 и выше</b> можно добавить разные регистрации (например, для
                Mathematica, Wolfram Finance Platform, Wolfram|One, Wolfram|Alpha Notebook Edition, 
                Wolfram Player Pro, Wolfram Player, Wolfram Programming Lab)
                через меню <b>Edit &gt; Preferences &gt; Product</b> и переключаться между ними через это же меню.<br>
                <br>
            </li>

            <b>Новые версии кейгена ищите <a href="https://forum%2Eru-board%2Ecom/topic.cgi?forum=35&topic=1174&start=0&limit=1&m=27#1" target="_blank">здесь</a>.</b>

        </ol>
        <form id="form">
            <fieldset>
                <legend> Генератор паролей </legend>

                <label for="we-are-everywhere"> "We Are Everywhere!": </label>
                <input type="checkbox" id="we-are-everywhere" title="Установите флажок, если лицензия для приложения MathLM, а также нужно указать класс лицензии (License Class). Для остальных приложений этот флажок снимите и очистите поле с классом лицензии (License Class)."><br>

                <label for="mathid" id="mathid-label"> MachineID (MathID): </label>
                <input type="text" id="mathid" pattern="\d{4}-\d{5}-\d{5}" title="В формате nnnn-nnnnn-nnnnn, где n - цифра." oninput="inputMathidChange(this.value)">

                <label for="activation-key"> Ключ активации (Activation Key): </label>
                <input type="text" id="activation-key" pattern="\d{4}-\d{4}-[0-9A-Z]{6}" value="3893-9258-K6XJLE" title="В формате nnnn-nnnn-xxxxxx, где n - цифра, а x - цифра или заглавная латинская буква.">

                <label for="max-license-processes-subprocesses"> Максимальное количество процессов и субпроцессов (Max License Processes и Max License Subprocesses): </label>
                <input type="text" id="max-license-processes-subprocesses" pattern="^(\s*|[0-9]\d{0,3}(,[0-9]\d{0,3}){0,3}\s*)$" title="От 1 до 4 чисел от 0 до 9999, разделённых запятыми или пустая строка.">

                <label for="license-type" style="display: none;"> Тип лицензии (License Type): </label>
                <input type="text" id="license-type" pattern="^(\s*|[1-9A-F][0-9A-F]{0,7}\s*)$" title="Шестнадцатеричное число от 1 до 8 цифр или пустая строка." style="display: none;">

                <div>
                    <div id="div-license-type"> Тип лицензии (License Type): </div>
                    <div id="div-checkbox-license-type-bit-00" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-00" title="Неизвестно что означает этот бит, но он установлен в бесплатных триальных лицензиях." checked onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-00"> бит  &ensp;0, маска        &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;1 &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-01" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-01" title="Установите флажок, если хотите редакцию Product Trial. Также нужно ниже задать дату истечения срока действия лицензии (License Expiration Date) в формате ГГГГММДД." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-01"> бит  &ensp;1, маска        &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;2 &mdash; редакция Product Trial </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-02" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-02" title="Установите флажок, если хотите редакцию Student Edition." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-ише-02"> бит  &ensp;2, маска        &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;4 &mdash; редакция Student Edition </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-03" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-03" title="Установите флажок, если хотите редакцию Site License." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-03"> бит  &ensp;3, маска        &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;8 &mdash; редакция Site License </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-04" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-04" title="Установите флажок, если хотите чтобы Mathematica версии 13 и ниже превратилась в Wolfram Player. В версии 14 и выше этот бит вроде бы игнорируется." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-04"> бит  &ensp;4, маска       &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;10       &mdash; Player </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-05" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-05" title="Установите флажок, если вам нужна лицензия для Wolfram Player. Лицензию можно использовать для приложения Wolfram Player, а Mathematica и Wolfram версии 14.1 и выше с такой лицензией тоже будут как Wolfram Player. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт." onclick="checkboxLicenseWolframTypeClick()">
                        <label for="checkbox-license-type-bit-05"> бит  &ensp;5, маска       &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;20       &mdash; продукт Wolfram Player </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-06" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-06" title='Установите флажок, если вам нужна лицензия для Wolfram Player Pro. Лицензию можно использовать для приложения Wolfram Player &mdash; он превратится в Wolfram Player Pro, а Mathematica и Wolfram версии 14.1 и выше с такой лицензией тоже будет как Wolfram Player Pro &mdash; можно вычислять, но не редактировать. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт.' onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-06"> бит  &ensp;6, маска       &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;40       &mdash; продукт Wolfram Player Pro </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-07" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-07" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-07"> бит  &ensp;7, маска       &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;80       &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-08" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-08" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-08"> бит  &ensp;8, маска &ensp;&ensp;&ensp;&ensp;&ensp;100                  &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-09" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-09" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-09"> бит  &ensp;9, маска &ensp;&ensp;&ensp;&ensp;&ensp;200                  &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-10" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-10" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-10"> бит 10,       маска &ensp;&ensp;&ensp;&ensp;&ensp;400                  &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-11" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-11" title="Установите флажок, если хотите редакцию Home Edition." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-11"> бит 11,       маска &ensp;&ensp;&ensp;&ensp;&ensp;800                  &mdash; редакция Home Edition </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-12" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-12" title='Установите флажок, если хотите редакцию Enterprise Edition. Mathematica версии 13.3 и ниже с такой лицензией в окнах "About" и "Welcome Screen" пишет что она "Enterprise Edition", но реально вроде бы этот бит больше ни на что не влияет. В версии 14 и выше этот бит вроде бы игнорируется.' checked onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-12"> бит 12,       маска &ensp;&ensp;&ensp;&ensp;1000                       &mdash; редакция Enterprise Edition </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-13" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-13" title='Фича EnterpriseSigning. Установите флажок, если хотите чтобы CDF файлы записывались в формате EnterpriseCDF &mdash; CDFDeploy с опцией "Target" -> "PlayerPro" по умолчанию, для записи FreeCDF нужно будет явно указывать "Target" -> "CDFPlayer". Mathematica и Wolfram версии 14.1 и выше с такой лицензией при выборе пункта меню "Preview for Wolfram Player" открывает Preview c "WOLFRAM Player Pro" и "Enterprise CDF Preview".' checked onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-13"> бит 13,       маска &ensp;&ensp;&ensp;&ensp;2000                       &mdash; фича EnterpriseSigning </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-14" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-14" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-14"> бит 14,       маска &ensp;&ensp;&ensp;&ensp;4000                       &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-15" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-15" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-15"> бит 15,       маска &ensp;&ensp;&ensp;&ensp;8000                       &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-16" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-16" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-16"> бит 16,       маска &ensp;&ensp;&ensp;10000                            &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-17" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-17" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-17"> бит 17,       маска &ensp;&ensp;&ensp;20000                            &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-18" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-18" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-18"> бит 18,       маска &ensp;&ensp;&ensp;40000                            &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-19" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-19" title='Фича AltExpirationPolicy. Неизвестно, что означает. Лицензию с установленным этим битом (а также с установленным битом для фичи AutoRenewingSubscription) выдают например для бесплатного Wolfram Engine &mdash; с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии, эта лицезия у Wolfram Engine вроде бы автоматически обновляется.' onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-19"> бит 19,       маска &ensp;&ensp;&ensp;80000                            &mdash; фича AltExpirationPolicy </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-20" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-20" title="Установите флажок, если вам нужна лицензия для продукта Wolfram|Alpha Notebook Edition приложения Wolfram версии 14.1 и выше. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-20"> бит 20,       маска &ensp;&ensp;100000                                 &mdash; продукт Wolfram|Alpha Notebook Edition  </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-21" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-21" title="Установите флажок, если вам нужна лицензия для продукта Wolfram|One приложения Wolfram версии 14.1 и выше. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-21"> бит 21,       маска &ensp;&ensp;200000                                 &mdash; продукт Wolfram|One </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-22" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-22" title="Установите флажок, если вам нужна лицензия для продукта Wolfram Finance Platform приложения Wolfram версии 14.1 и выше. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-22"> бит 22,       маска &ensp;&ensp;400000                                 &mdash; продукт Wolfram Finance Platform </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-23" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-23" title="Установите флажок, если вам нужна лицензия для продукта Mathematica приложения Wolfram версии 14.1 и выше. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт." checked onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-23"> бит 23,       маска &ensp;&ensp;800000                                 &mdash; продукт Mathematica </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-24" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-24" title='Установите флажок, если вам нужна лицензия для продукта Wolfram Programming Lab приложения Wolfram версии 14.1 и выше. Но вообще-то Wolfram Programming Lab &mdash; это устаревший продукт, все функции и возможности которого доступны в Wolfram|One. В каждой лицензии для приложения Wolfram (версия 14.1 и выше) должен быть указан один и только один продукт.' onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-24"> бит 24,       маска &ensp;1000000                                      &mdash; продукт Wolfram Programming Lab </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-25" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-25" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-25"> бит 25,       маска &ensp;2000000                                      &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-26" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-26" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-26"> бит 26,       маска &ensp;4000000                                      &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-27" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-27" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-27"> бит 27,       маска &ensp;8000000                                      &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-28" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-28" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-28"> бит 28,       маска 10000000                                           &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-29" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-29" title='Фича AutoRenewingSubscription. Неизвестно, что означает. Лицензию с установленным этим битом (а также с установленным битом для фичи AltExpirationPolicy) выдают например для бесплатного Wolfram Engine &mdash; с нулевым лимитом для Front End Mathematica, а также с заданной датой истечения срока действия лицензии, эта лицезия у Wolfram Engine вроде бы автоматически обновляется.' onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-29"> бит 29,       маска 20000000                                           &mdash; фича AutoRenewingSubscription </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-30" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-30" title="Неизвестно что означает этот бит." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-30"> бит 30,       маска 40000000                                           &mdash; неизвестно </label>
                    </div>
                    <br>
                    <div id="div-checkbox-license-type-bit-31" style="display: inline-flex;">
                        <input type="checkbox" id="checkbox-license-type-bit-31" title="Неизвестно что означает этот бит, но если его установить, то приложение не принимает лицензию." onclick="checkboxLicenseTypeClick()">
                        <label for="checkbox-license-type-bit-31"> бит 31,       маска 80000000                                           &mdash; неизвестно </label>
                    </div>
                </div>

                <br>

                <label for="license-expiration-date">Дата истечения срока действия лицензии (License Expiration Date): </label>
                <input type="text" id="license-expiration-date" pattern="^(\s*|[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\s*)$" title="Дата в формате ГГГГММДД или пустая строка.">

                <label for="license-class">Класс лицензии (License Class): </label>
                <input type="text" id="license-class" pattern="^(\s*|CA|CX|CB|CC|CM\s*)$" title='Укажите CA или CX или CB или CC или CM если вам нужна лицензия для приложения MathLM, а также нужно установить флажок "We Are Everywhere!". Для остальных приложений очистите поле с классом лицензии (License Class) и снимите этот флажок "We Are Everywhere!".'>

                <label for="key-val-str">Строка для генерации пароля: </label>
                <input type="text" id="key-val-str" title="Строка для генерации пароля. Если строка не пустая, все параметры кроме хэша игнорируются.">

                <label for="salt">Хэш: </label>
                <input type="text" id="salt" required pattern="^(\s*|0x[0-9a-fA-F]{1,4}|[0-9]{1,5}\s*)$" title="Число либо в десятичном формате (от 0 до 65535), либо в шестнадцатеричном формате (от 0x0000 до 0xFFFF).">

                <button id="button" onclick="genPass(event)">Сгенерировать пароль (password)</button>
            </fieldset>
        </form>
        <div id="output"></div>
    </body>
</html>
 

HTML Online Editor & Compiler

Write, Run & Share HTML code online using OneCompiler's HTML online Code editor for free. It's one of the robust, feature-rich online Code editor for HTML language, running on the latest version HTML5. Getting started with the OneCompiler's HTML compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as HTML. You can also specify the stylesheet information in styles.css tab and scripts information in scripts.js tab and start coding.

About HTML

HTML(Hyper Text Markup language) is the standard markup language for Web pages, was created by Berners-Lee in the year 1991. Almost every web page over internet might be using HTML.

Syntax help

Fundamentals

  • Any HTML document must start with document declaration <!DOCTYPE html>
  • HTML documents begin with <html> and ends with </html>
  • Headings are defined with <h1> to <h6> where <h1> is the highest important heading and <h6> is the least important sub-heading.
  • Paragrahs are defined in <p>..</p> tag.
  • Links are defined in <a> tag.

    Example:

    <a href="https://onecompiler.com/html">HTML online compiler</a>
    
  • Images are defined in <img> tag, where src attribute consists of image name.
  • Buttons are defined in <button>..</button> tag
  • Lists are defined in <ul> for unordered/bullet list and <ol> for ordered/number list, and the list items are defined in <li>.

HTML Elements and Attributes

  • HTML element is everything present from start tag to end tag.
  • The text present between start and end tag is called HTML element content.
  • Anything can be a tagname but it's preferred to put the meaningful title to the content present as tag name.
  • Do not forget the end tag.
  • Elements with no content are called empty elements.
  • Elements can have attributes which provides additional information about the element.
  • In the below example, href is an attribute and a is the tag name.

    Example:

    <a href="https://onecompiler.com/html">HTML online compiler</a>
    

CSS

CSS(cascading style sheets) describes how HTML elements will look on the web page like color, font-style, font-size, background color etc.

Example:

Below is a sample style sheet which displays heading in green and in Candara font with padding space of 25px.

body{
  padding: 25px;
}
.title {
	color: #228B22;
	font-family: Candara;
}

HTML Tables

  • HTML Tables are defined in <table> tag.
  • Table row should be defined in <tr> tag
  • Table header should be defined in <th> tag
  • Table data should be defined in <td> tag
  • Table caption should be defined in <caption> tag

HTML-Javascript

  • Javascript is used in HTML pages to make them more interactive.
  • <script> is the tag used to write scripts in HTML
  • You can either reference a external script or write script code in this tag.

Example

<script src="script.js"></script>