{"id":994,"date":"2024-04-25T11:33:28","date_gmt":"2024-04-25T10:33:28","guid":{"rendered":"https:\/\/itsiller-software.com\/?page_id=994"},"modified":"2024-06-08T20:15:17","modified_gmt":"2024-06-08T19:15:17","slug":"pages-18-to-19","status":"publish","type":"page","link":"https:\/\/itsiller-software.com\/index.php\/pages-18-to-19\/","title":{"rendered":"Pages: 18 to 19"},"content":{"rendered":"<div>Pages: 18 to 19 voice<\/div>\n<div>\n<style>\n        #sentence_container {\n            position: absolute;\n            top: calc(50% + 80pt);\n            left: 0;\n            right: 0;\n            margin: auto;\n            width: 100%;\n            text-align: center;\n        }<\/p>\n<p>        #sentence_container p {\n            font-family: 'Raleway', sans-serif;\n            font-size: 20pt;\n            opacity: 0;\n            transition: opacity 1s ease-in-out;\n            white-space: pre-wrap;\n            margin: 0;\n        }<\/p>\n<p>        .en {\n            color: #7886bc;\n        }<\/p>\n<p>        .ru {\n            color: #ff6d01;\n        }<\/p>\n<p>        #list_en,\n        #list_ru {\n            display: none;\n        }<\/p>\n<p>        #voce {\n            cursor: pointer;\n        }<\/p>\n<p>        .active {\n            color: red;\n        }\n    <\/style>\n<div class=\"uk-margin\">\n    <button id=\"Play\" class=\"uk-button uk-button-danger uk-margin-remove uk-button-small\" uk-icon=\"icon: play-circle\"><\/button><br \/>\n    <button id=\"ToggleLanguage\" class=\"uk-button uk-button-primary uk-button-small\" uk-icon=\"icon: world\"><\/button><br \/>\n    <button id=\"ToggleRandom\" class=\"uk-button uk-button-secondary uk-button-small\" uk-icon=\"icon: settings\"><\/button><\/p>\n<div id=\"SelectVerb\" class=\"uk-button-group\">\n<div class=\"uk-inline\">\n            <button class=\"uk-button uk-button-default uk-button-small\" type=\"button\"><br \/>\n                <span uk-icon=\"icon: triangle-down\"><\/span><br \/>\n            <\/button><\/p>\n<div uk-dropdown=\"mode: click; target: !.uk-button-group;\">\n<div class=\"uk-overflow-auto uk-height-small\">\n<ul class=\"uk-list\">\n<li><label><input class=\"uk-checkbox\" type=\"checkbox\" id=\"select-all\">&nbsp;select all<\/label><\/li>\n<li><label><input class=\"uk-checkbox\" type=\"checkbox\" value=\"say\">&nbsp;say<\/label><\/li>\n<li><label><input class=\"uk-checkbox\" type=\"checkbox\" value=\"do\">&nbsp;do<\/label><\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<p>            <select id=\"Select\" class=\"uk-select uk-form-width-xsmall uk-form-small\"><option value=\"3000\" selected>3 sec<\/option><option value=\"5000\">5 sec<\/option><option value=\"7000\">7 sec<\/option><\/select><br \/>\n            <button id=\"voce\" class=\"uk-button uk-margin-small-right\" uk-icon=\"microphone\"><\/button>\n        <\/div>\n<\/p><\/div>\n<div id=\"sentence_container\"><\/div>\n<div id=\"list_en\">\n<p class=\"en\">I didn&#8217;t say it.<span style=\"display:none;\">say<\/span><\/p>\n<p class=\"en\">Giuliano didn&#8217;t do it.<span style=\"display:none;\">do<\/span><\/p>\n<\/p><\/div>\n<div id=\"list_ru\">\n<p class=\"ru\">\u042f \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u044d\u0442\u043e.<\/p>\n<p class=\"ru\">\u0414\u0436\u0443\u043b\u0438\u0430\u043d\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e.<\/p>\n<\/p><\/div>\n<p>    <script>\n        \/\/ script-2-select<\/p>\n<p>        document.addEventListener('DOMContentLoaded', initializeCheckboxes);<\/p>\n<p>        function initializeCheckboxes() {\n            var selectAll = document.getElementById('select-all');\n            selectAll.checked = true;\n            updateCheckboxes(true);<\/p>\n<p>            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\"checkbox\"]');\n            checkboxes.forEach(function(checkbox) {\n                checkbox.addEventListener('change', handleCheckboxChange);\n            });\n        }<\/p>\n<p>        function updateCheckboxes(state) {\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\"checkbox\"]:not(#select-all)');\n            checkboxes.forEach(function(checkbox) {\n                checkbox.checked = state;\n            });\n            filterSentences();\n        }<\/p>\n<p>        function handleCheckboxChange() {\n            var selectAll = document.getElementById('select-all');\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\"checkbox\"]:not(#select-all)');<\/p>\n<p>            if (this.id === 'select-all') {\n                updateCheckboxes(this.checked);\n            } else {\n                var isAllChecked = Array.from(checkboxes).every(function(checkbox) {\n                    return checkbox.checked;\n                });\n                selectAll.checked = isAllChecked;\n                filterSentences();\n            }\n        }<\/p>\n<p>        function filterSentences() {\n            var selectedCategories = getSelectedCategories();\n            var enSentences = document.querySelectorAll('#list_en p');\n            var ruSentences = document.querySelectorAll('#list_ru p');<\/p>\n<p>            enSentences.forEach(function(sentence, index) {\n                var category = sentence.querySelector('span').textContent.trim();\n                if (selectedCategories.includes(category) || selectedCategories.length === 0) {\n                    sentence.style.display = 'block';\n                    ruSentences[index].style.display = 'block';\n                } else {\n                    sentence.style.display = 'none';\n                    ruSentences[index].style.display = 'none';\n                }\n            });\n        }<\/p>\n<p>        function getSelectedCategories() {\n            var selectedCategories = [];\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\"checkbox\"]:not(#select-all)');\n            checkboxes.forEach(function(checkbox) {\n                if (checkbox.checked) {\n                    selectedCategories.push(checkbox.value);\n                }\n            });\n            return selectedCategories;\n        }<\/p>\n<p>        \/\/ script-1 (\u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439)<\/p>\n<p>        var animationTimer;\n        var showEnglishFirst = true;\n        var isRandom = false;\n        var isSpeaking = false;\n        var currentAudio;<\/p>\n<p>        function getSentences() {\n            var enSentences = document.querySelectorAll('#list_en p');\n            var ruSentences = document.querySelectorAll('#list_ru p');\n            var sentencePairs = [];<\/p>\n<p>            for (var i = 0; i < enSentences.length; i++) {\n                if (enSentences[i].style.display !== 'none') {\n                    sentencePairs.push({\n                        en: enSentences[i],\n                        ru: ruSentences[i]\n                    });\n                }\n            }\n\n            if (isRandom) {\n                sentencePairs = shuffleArray(sentencePairs);\n            }\n\n            return sentencePairs;\n        }\n\n        function shuffleArray(array) {\n            for (var i = array.length - 1; i > 0; i--) {\n                var j = Math.floor(Math.random() * (i + 1));\n                [array[i], array[j]] = [array[j], array[i]];\n            }\n            return array;\n        }<\/p>\n<p>        document.getElementById('Play').addEventListener('click', function() {\n            var delay = parseInt(document.getElementById('Select').value);\n            var sentences = getSentences();\n            var container = document.getElementById('sentence_container');\n            var currentIndex = 0;<\/p>\n<p>            clearInterval(animationTimer);<\/p>\n<p>            function animateSentences() {\n                animationTimer = setInterval(function() {\n                    if (sentences.length === 0) {\n                        clearInterval(animationTimer);\n                        return;\n                    }<\/p>\n<p>                    var sentenceToDisplay;<\/p>\n<p>                    if (showEnglishFirst) {\n                        sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \/ 2)].en : sentences[Math.floor(currentIndex \/ 2)].ru;\n                    } else {\n                        sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \/ 2)].ru : sentences[Math.floor(currentIndex \/ 2)].en;\n                    }<\/p>\n<p>                    var sentenceClone = sentenceToDisplay.cloneNode(true);\n                    sentenceClone.style.opacity = 1;<\/p>\n<p>                    container.innerHTML = '';\n                    container.appendChild(sentenceClone);<\/p>\n<p>                    if (isSpeaking) {\n                        speak(sentenceClone.textContent.trim(), sentenceClone.classList.contains('en') ? 'en' : 'ru');\n                    }<\/p>\n<p>                    setTimeout(function() {\n                        sentenceClone.style.opacity = 0;\n                        currentIndex = (currentIndex + 1) % (sentences.length * 2);\n                    }, delay - 1000);\n                }, delay);\n            }<\/p>\n<p>            animateSentences();\n        });<\/p>\n<p>        document.getElementById('Select').addEventListener('change', function() {\n            clearInterval(animationTimer);\n        });<\/p>\n<p>        document.getElementById('ToggleLanguage').addEventListener('click', function() {\n            showEnglishFirst = !showEnglishFirst;\n            clearInterval(animationTimer);\n        });<\/p>\n<p>        document.getElementById('ToggleRandom').addEventListener('click', function() {\n            isRandom = !isRandom;\n            clearInterval(animationTimer);\n        });<\/p>\n<p>\t\t<\/script><\/div>\n<div><script>\nconst API_KEY = 'AIzaSyCYou31ppyCN-5QuOIOl4JegNWFHMeoAXk';\nlet isSpeaking = false;\nlet currentAudio;<\/p>\n<p>function speak(text, languageCode) {\n    if (currentAudio) {\n        currentAudio.pause();\n    }<\/p>\n<p>    const url = `https:\/\/texttospeech.googleapis.com\/v1\/text:synthesize?key=${API_KEY}`;\n    const voice = languageCode === 'en' ? 'en-GB-Wavenet-C' : 'ru-RU-Wavenet-C';<\/p>\n<p>    const requestBody = {\n        input: { text: text },\n        voice: { languageCode: languageCode, name: voice },\n        audioConfig: { audioEncoding: 'MP3' }\n    };<\/p>\n<p>    fetch(url, {\n        method: 'POST',\n        headers: {\n            'Content-Type': 'application\/json',\n        },\n        body: JSON.stringify(requestBody)\n    })\n    .then(response => response.json())\n    .then(data => {\n        const audioContent = data.audioContent;\n        currentAudio = new Audio('data:audio\/mp3;base64,' + audioContent);\n        currentAudio.play();\n    })\n    .catch(error => {\n        console.error('Error:', error);\n    });\n}<\/p>\n<p>document.getElementById('voce').addEventListener('click', function() {\n    isSpeaking = !isSpeaking;\n    this.classList.toggle('active'); \/\/ \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438<\/p>\n<p>    if (isSpeaking) {\n        const delay = parseInt(document.getElementById('Select').value);\n        const sentences = getSentences();\n        let currentIndex = 0;<\/p>\n<p>        if (sentences.length === 0) {\n            document.getElementById('sentence_container').innerHTML = '<\/p>\n<p>No matching sentences found.<\/p>\n<p>';\n            return;\n        }<\/p>\n<p>        function speakNextSentence() {\n            if (!isSpeaking) return;<\/p>\n<p>            const sentenceToSpeak = sentences[Math.floor(currentIndex \/ 2)].en.textContent;\n            const sentenceToShow = sentences[Math.floor(currentIndex \/ 2)].ru.cloneNode(true);\n            sentenceToShow.style.opacity = 1;\n            document.getElementById('sentence_container').innerHTML = ''; \/\/ \u041e\u0447\u0438\u0449\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<p>            if (currentIndex % 2 === 0) {\n                speakText(sentenceToSpeak, 'en-GB-Wavenet-C').then(() => {\n                    setTimeout(() => {\n                        currentIndex++;\n                        speakNextSentence();\n                    }, delay); \/\/ \u041f\u0430\u0443\u0437\u0430 \u043f\u043e\u0441\u043b\u0435 \u043e\u0437\u0432\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u043a\u0430\u0437\u043e\u043c \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430\n                }).catch(error => {\n                    console.error('Error during speech synthesis:', error);\n                    isSpeaking = false; \/\/ \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0437\u0432\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438\n                });\n            } else {\n                document.getElementById('sentence_container').appendChild(sentenceToShow); \/\/ \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0440\u0443\u0441\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\n                setTimeout(() => {\n                    sentenceToShow.style.opacity = 0;\n                    currentIndex = (currentIndex + 1) % (sentences.length * 2);\n                    speakNextSentence();\n                }, delay);\n            }\n        }<\/p>\n<p>        isSpeaking = true;\n        speakNextSentence();\n    } else {\n        if (currentAudio) {\n            currentAudio.pause(); \/\/ \u041f\u0440\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043e\u0437\u0432\u0443\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0443\u0434\u0438\u043e\n        }\n    }\n});<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430\nfunction speakText(textToSpeak, voice) {\n    return new Promise((resolve, reject) => {\n        const url = `https:\/\/texttospeech.googleapis.com\/v1\/text:synthesize?key=${API_KEY}`;\n        const requestBody = {\n            input: { text: textToSpeak },\n            voice: { languageCode: voice.split('-')[0], name: voice },\n            audioConfig: { audioEncoding: 'MP3' }\n        };<\/p>\n<p>        fetch(url, {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application\/json'\n            },\n            body: JSON.stringify(requestBody)\n        })\n        .then(response => response.json())\n        .then(data => {\n            if (data.audioContent) {\n                const audio = new Audio('data:audio\/mp3;base64,' + data.audioContent);\n                audio.onended = () => {\n                    resolve(); \/\/ \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u0440\u043e\u043c\u0438\u0441 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\n                };\n                audio.play().then(() => {\n                    console.log('Audio playback started for:', textToSpeak);\n                }).catch(error => {\n                    console.error('Error during audio playback:', error);\n                    reject(error); \/\/ \u041e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u043c\u0438\u0441 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438\n                });\n            } else {\n                console.error('No audio content received');\n                reject('No audio content received'); \/\/ \u041e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u043c\u0438\u0441 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0430\u0443\u0434\u0438\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430\n            }\n        })\n        .catch(error => {\n            console.error('Error:', error);\n            reject(error); \/\/ \u041e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u043c\u0438\u0441 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438\n        });\n    });\n}\n<\/script>\n<\/div>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"Pages: 18 to 19 voice\",\"margin\":\"default\"}}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"fragment\",\"props\":{\"margin\":\"default\",\"status\":\"disabled\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\\n\n\n<div class=\\\"uk-margin\\\"> \\n  <button id=\\\"Play\\\" class=\\\"uk-button uk-button-danger uk-margin-remove uk-button-small\\\" uk-icon=\\\"icon: play-circle\\\"><\\\/button>\\n  <button id=\\\"ToggleLanguage\\\" class=\\\"uk-button uk-button-primary uk-button-small\\\" uk-icon=\\\"icon: world\\\"><\\\/button>\\n  <button id=\\\"ToggleRandom\\\" class=\\\"uk-button uk-button-secondary uk-button-small\\\" uk-icon=\\\"icon: settings\\\"><\\\/button>\\n  \\n  \n\n<div id=\\\"SelectVerb\\\" class=\\\"uk-button-group\\\">\\n    \n\n<div class=\\\"uk-inline\\\">\\n      <button class=\\\"uk-button uk-button-default uk-button-small\\\" type=\\\"button\\\">\\n        <span uk-icon=\\\"icon: triangle-down\\\"><\\\/span>\\n      <\\\/button>\\n      \\n      \n\n<div uk-dropdown=\\\"mode: click; target: !.uk-button-group;\\\">\\n        \n\n<div class=\\\"uk-overflow-auto uk-height-small\\\">\\n          \n\n<ul class=\\\"uk-list\\\">\\n            \n\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" id=\\\"select-all\\\">&nbsp;select all<\\\/label><\\\/li>\\n            \n\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" value=\\\"say\\\">&nbsp;say<\\\/label><\\\/li>\\n            \n\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" value=\\\"do\\\">&nbsp;do<\\\/label><\\\/li>\\n          <\\\/ul>\\n        <\\\/div>\\n      <\\\/div>\\n\\n      <select id=\\\"Select\\\" class=\\\"uk-select uk-form-width-xsmall uk-form-small\\\">\\n<option value=\\\"2000\\\" selected>2 sec<\\\/option>\\n<option value=\\\"5000\\\">5 sec<\\\/option>\\n<option value=\\\"7000\\\">7 sec<\\\/option>\\n      <\\\/select>\\n      <button id=\\\"voce\\\" class=\\\"uk-button uk-margin-small-right\\\" uk-icon=\\\"microphone\\\"><\\\/button>\\n    <\\\/div>\\n  <\\\/div>\\n  \\n  \n\n<div id=\\\"sentence_container\\\"><\\\/div>\\n  \\n  \n\n<div id=\\\"list_en\\\"> \\n    \n\n<p class=\\\"en\\\">I didn't say it.<span style=\\\"display:none;\\\">say<\\\/span><\\\/p>\\n    \n\n<p class=\\\"en\\\">Giuliano didn't do it.<span style=\\\"display:none;\\\">do<\\\/span><\\\/p>\\n  <\\\/div>\\n\\n  \n\n<div id=\\\"list_ru\\\">\\n    \n\n<p class=\\\"ru\\\">\\u042f \\u043d\\u0435 \\u0433\\u043e\\u0432\\u043e\\u0440\\u0438\\u043b \\u044d\\u0442\\u043e.<\\\/p>\\n    \n\n<p class=\\\"ru\\\">\\u0414\\u0436\\u0443\\u043b\\u0438\\u0430\\u043d\\u043e \\u043d\\u0435 \\u0434\\u0435\\u043b\\u0430\\u043b \\u044d\\u0442\\u043e.<\\\/p>\\n  <\\\/div>\\n\\n  <script>\\n    \\\/\\\/ script-2-select\\n\\n    document.addEventListener('DOMContentLoaded', initializeCheckboxes);\\n\\n    function initializeCheckboxes() {\\n      var selectAll = document.getElementById('select-all');\\n      selectAll.checked = true;\\n      updateCheckboxes(true);\\n\\n      var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]');\\n      checkboxes.forEach(function(checkbox) {\\n        checkbox.addEventListener('change', handleCheckboxChange);\\n      });\\n    }\\n\\n    function updateCheckboxes(state) {\\n      var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n      checkboxes.forEach(function(checkbox) {\\n        checkbox.checked = state;\\n      });\\n      filterSentences();\\n    }\\n\\n    function handleCheckboxChange() {\\n      var selectAll = document.getElementById('select-all');\\n      var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n\\n      if (this.id === 'select-all') {\\n        updateCheckboxes(this.checked);\\n      } else {\\n        var isAllChecked = Array.from(checkboxes).every(function(checkbox) {\\n          return checkbox.checked;\\n        });\\n        selectAll.checked = isAllChecked;\\n        filterSentences();\\n      }\\n    }\\n\\n    function filterSentences() {\\n      var selectedCategories = getSelectedCategories();\\n      var enSentences = document.querySelectorAll('#list_en p');\\n      var ruSentences = document.querySelectorAll('#list_ru p');\\n\\n      enSentences.forEach(function(sentence, index) {\\n        var category = sentence.querySelector('span').textContent.trim();\\n        if (selectedCategories.includes(category) || selectedCategories.length === 0) {\\n          sentence.style.display = 'block';\\n          ruSentences[index].style.display = 'block';\\n        } else {\\n          sentence.style.display = 'none';\\n          ruSentences[index].style.display = 'none';\\n        }\\n      });\\n    }\\n\\n    function getSelectedCategories() {\\n      var selectedCategories = [];\\n      var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n      checkboxes.forEach(function(checkbox) {\\n        if (checkbox.checked) {\\n          selectedCategories.push(checkbox.value);\\n        }\\n      });\\n      return selectedCategories;\\n    }\\n\\n    \\\/\\\/ script-1 (\\u043f\\u0435\\u0440\\u0432\\u043e\\u043d\\u0430\\u0447\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439)\\n\\n    var animationTimer;\\n    var showEnglishFirst = true;\\n    var isRandom = false;\\n\\n    function getSentences() {\\n      var enSentences = document.querySelectorAll('#list_en p');\\n      var ruSentences = document.querySelectorAll('#list_ru p');\\n      var sentencePairs = [];\\n\\n      for (var i = 0; i < enSentences.length; i++) {\\n        if (enSentences[i].style.display !== 'none') {\\n          sentencePairs.push({\\n            en: enSentences[i],\\n            ru: ruSentences[i]\\n          });\\n        }\\n      }\\n\\n      if (isRandom) {\\n        sentencePairs = shuffleArray(sentencePairs);\\n      }\\n\\n      return sentencePairs;\\n    }\\n\\n    function shuffleArray(array) {\\n      for (var i = array.length - 1; i > 0; i--) {\\n        var j = Math.floor(Math.random() * (i + 1));\\n        [array[i], array[j]] = [array[j], array[i]];\\n      }\\n      return array;\\n    }\\n\\n    document.getElementById('Play').addEventListener('click', function() {\\n      var delay = parseInt(document.getElementById('Select').value);\\n      var sentences = getSentences();\\n      var container = document.getElementById('sentence_container');\\n      var currentIndex = 0;\\n\\n      clearInterval(animationTimer);\\n\\n      function animateSentences() {\\n        animationTimer = setInterval(function() {\\n          if (sentences.length === 0) {\\n            clearInterval(animationTimer);\\n            return;\\n          }\\n\\n          var sentenceToDisplay;\\n\\n          if (showEnglishFirst) {\\n            sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \\\/ 2)].en : sentences[Math.floor(currentIndex \\\/ 2)].ru;\\n          } else {\\n            sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \\\/ 2)].ru : sentences[Math.floor(currentIndex \\\/ 2)].en;\\n          }\\n\\n          var sentenceClone = sentenceToDisplay.cloneNode(true);\\n          sentenceClone.style.opacity = 1;\\n\\n          container.innerHTML = '';\\n          container.appendChild(sentenceClone);\\n\\n          setTimeout(function() {\\n            sentenceClone.style.opacity = 0;\\n            currentIndex = (currentIndex + 1) % (sentences.length * 2);\\n          }, delay - 1000);\\n        }, delay);\\n      }\\n\\n      animateSentences();\\n    });\\n\\n    document.getElementById('Select').addEventListener('change', function() {\\n      clearInterval(animationTimer);\\n    });\\n\\n    document.getElementById('ToggleLanguage').addEventListener('click', function() {\\n      showEnglishFirst = !showEnglishFirst;\\n      clearInterval(animationTimer);\\n    });\\n\\n    document.getElementById('ToggleRandom').addEventListener('click', function() {\\n      isRandom = !isRandom;\\n      clearInterval(animationTimer);\\n    });\\n\\n    \\\/\\\/ script-3-voce\\n\\n \\n\\n\\n  <\\\/script>\\n\\n  \n\n<style>\\n    #sentence_container {\\n      position: absolute;\\n      top: calc(50% + 80pt);\\n      left: 0;\\n      right: 0;\\n      margin: auto;\\n      width: 100%;\\n      text-align: center;\\n    }\\n\\n    #sentence_container p {\\n      font-family: 'Raleway', sans-serif;\\n      font-size: 20pt;\\n      opacity: 0;\\n      transition: opacity 1s ease-in-out;\\n      white-space: pre-wrap;\\n      margin: 0;\\n    }\\n\\n    .en {\\n      color: #7886bc;\\n    }\\n\\n    .ru {\\n      color: #ff6d01;\\n    }\\n\\n    #list_en,\\n    #list_ru {\\n      display: none;\\n    }\\n\\n    #voce {\\n      cursor: pointer;\\n    }\\n  <\\\/style>\\n\",\"margin\":\"default\"}}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<script>\\n    \\\/\\\/ script-3-voce\\n\\n    const API_KEY = 'AIzaSyCYou31ppyCN-5QuOIOl4JegNWFHMeoAXk';\\n\\n    \\\/\\\/ \\u0424\\u0443\\u043d\\u043a\\u0446\\u0438\\u044f \\u0434\\u043b\\u044f \\u043e\\u0437\\u0432\\u0443\\u0447\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430 \\u0441 \\u0438\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435\\u043c Google Text-to-Speech API\\n    function speak(text, languageCode) {\\n        const url = `https:\\\/\\\/texttospeech.googleapis.com\\\/v1\\\/text:synthesize?key=${API_KEY}`;\\n        const voice = languageCode === 'en' ? 'en-GB-Wavenet-C' : 'ru-RU-Wavenet-C';\\n        \\n        const requestBody = {\\n            input: { text: text },\\n            voice: { languageCode: languageCode, name: voice },\\n            audioConfig: { audioEncoding: 'MP3' }\\n        };\\n\\n        fetch(url, {\\n            method: 'POST',\\n            headers: {\\n                'Content-Type': 'application\\\/json',\\n            },\\n            body: JSON.stringify(requestBody)\\n        })\\n        .then(response => response.json())\\n        .then(data => {\\n            const audioContent = data.audioContent;\\n            const audio = new Audio('data:audio\\\/mp3;base64,' + audioContent);\\n            audio.play();\\n        })\\n        .catch(error => {\\n            console.error('Error:', error);\\n        });\\n    }\\n\\n    \\\/\\\/ \\u041e\\u0431\\u0440\\u0430\\u0431\\u043e\\u0442\\u0447\\u0438\\u043a \\u0441\\u043e\\u0431\\u044b\\u0442\\u0438\\u044f \\u0434\\u043b\\u044f \\u043a\\u043d\\u043e\\u043f\\u043a\\u0438 \\u043c\\u0438\\u043a\\u0440\\u043e\\u0444\\u043e\\u043d\\u0430\\n    document.getElementById('voce').addEventListener('click', function() {\\n        const container = document.getElementById('sentence_container');\\n        const sentence = container.querySelector('p');\\n        if (sentence) {\\n            const text = sentence.textContent.trim();\\n            const languageCode = sentence.classList.contains('en') ? 'en' : 'ru';\\n            speak(text, languageCode);\\n        }\\n    });\\n\\n<\\\/script>\\n\",\"margin\":\"default\"},\"name\":\"script-3-voce\"}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"<!-- \\nCode link\\n \\nhttps:\\\/\\\/docs.google.com\\\/spreadsheets\\\/d\\\/12QGs8TEzBnW99bRQJvM_SXcxXUjnLDKgd5583edqOAc\\\/edit#gid=2067784805\\n\\n\\n\\n-->&#8220;},&#8221;name&#8221;:&#8221;Code link&#8221;}]}]},{&#8220;type&#8221;:&#8221;row&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;text&#8221;,&#8221;props&#8221;:{&#8220;column_breakpoint&#8221;:&#8221;m&#8221;,&#8221;content&#8221;:&#8221;<\/p>\n<div>\\n    <a href=\\\"\\\" class=\\\"uk-icon-button uk-margin-small-right\\\" uk-icon=\\\"microphone\\\"><\\\/a>\\n   \\n<\\\/div>\\n\\n <span id=\\\"voce\\\" class=\\\"uk-icon-button uk-margin-small-right\\\" uk-icon=\\\"microphone\\\"><\\\/span>   \\n<\/p>\n<p>\\n<span uk-icon=\\\"microphone\\\"><\\\/span>\\n<\/p>\n<p>\\n    \\n<span class=\\\"uk-icon-button uk-margin-small-right\\\" uk-icon=\\\"microphone\\\"><\\\/span>\\n    \\n    \\n<\/p>\n<div class=\\\"uk-margin\\\"> \\n  <button id=\\\"Play\\\" class=\\\"uk-button uk-button-danger uk-margin-remove uk-button-small\\\" uk-icon=\\\"icon: play-circle\\\"><\\\/button>\\n  \\n  <button id=\\\"ToggleLanguage\\\" class=\\\"uk-button uk-button-primary uk-button-small\\\" uk-icon=\\\"icon: world\\\"><\\\/button>\\n  <button id=\\\"ToggleRandom\\\" class=\\\"uk-button uk-button-secondary uk-button-small\\\" uk-icon=\\\"icon: settings\\\"><\\\/button>\\n    \\n  <\/p>\n<div id=\\\"SelectVerb\\\" class=\\\"uk-button-group\\\">\\n    <\/p>\n<div class=\\\"uk-inline\\\">\\n      <button class=\\\"uk-button uk-button-default uk-button-small\\\" type=\\\"button\\\">\\n        <span uk-icon=\\\"icon: triangle-down\\\"><\\\/span>\\n      <\\\/button>\\n        \\n <!-- Add select -->       \\n       \\n        \\n<\/p>\n<div uk-dropdown=\\\"mode: click; target: !.uk-button-group;\\\">\n<div class=\\\"uk-overflow-auto uk-height-small\\\">\n<ul class=\\\"uk-list\\\">\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" id=\\\"select-all\\\">&nbsp;select all<\\\/label><\\\/li>\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" value=\\\"say\\\">&nbsp;say<\\\/label><\\\/li>\\n\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" value=\\\"do\\\">&nbsp;do<\\\/label><\\\/li>\\n\\n<\\\/ul><\\\/div><\\\/div>   \\n     \\n <!-- End select -->        \\n        \\n  \\n  <select id=\\\"Select\\\" class=\\\"uk-select uk-form-width-xsmall uk-form-small\\\">\\n<option value=\\\"2000\\\" selected>2 sec<\\\/option>\\n<option value=\\\"5000\\\">5 sec<\\\/option>\\n<option value=\\\"7000\\\">7 sec<\\\/option>\\n  <\\\/select>\\n        \\n<span id=\\\"voce\\\" class=\\\" uk-margin-small-right\\\" uk-icon=\\\"microphone\\\"><\\\/span>\\n     \\n        \\n<\\\/div>    &#8220;,&#8221;margin&#8221;:&#8221;default&#8221;,&#8221;status&#8221;:&#8221;disabled&#8221;}}]}]},{&#8220;type&#8221;:&#8221;row&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;text&#8221;,&#8221;props&#8221;:{&#8220;column_breakpoint&#8221;:&#8221;m&#8221;,&#8221;content&#8221;:&#8221;<script>\\n\\\/\\\/ script-2-select\\n\\ndocument.addEventListener('DOMContentLoaded', initializeCheckboxes);\\n\\n\\\/\\\/ \\u0418\\u043d\\u0438\\u0446\\u0438\\u0430\\u043b\\u0438\\u0437\\u0430\\u0446\\u0438\\u044f \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u043e\\u0432, \\u0432\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u0435 \\\"select all\\\" \\u043f\\u043e \\u0443\\u043c\\u043e\\u043b\\u0447\\u0430\\u043d\\u0438\\u044e\\nfunction initializeCheckboxes() {\\n  var selectAll = document.getElementById('select-all');\\n  selectAll.checked = true;\\n  updateCheckboxes(true); \\\/\\\/ \\u0412\\u043a\\u043b\\u044e\\u0447\\u0438\\u0442\\u044c \\u0432\\u0441\\u0435 \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u044b \\u043f\\u0440\\u0438 \\u0438\\u043d\\u0438\\u0446\\u0438\\u0430\\u043b\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438\\n\\n  var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]');\\n  checkboxes.forEach(function(checkbox) {\\n    checkbox.addEventListener('change', handleCheckboxChange);\\n  });\\n}\\n\\n\\\/\\\/ \\u041e\\u0431\\u043d\\u043e\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u0441\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u044f \\u0432\\u0441\\u0435\\u0445 \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u043e\\u0432\\nfunction updateCheckboxes(state) {\\n  var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n  checkboxes.forEach(function(checkbox) {\\n    checkbox.checked = state;\\n  });\\n  filterSentences(); \\\/\\\/ \\u041e\\u0431\\u043d\\u043e\\u0432\\u0438\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u0446\\u0438\\u044e \\u043f\\u0440\\u0438 \\u0438\\u0437\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0438 \\u0441\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u044f \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u043e\\u0432\\n}\\n\\n\\\/\\\/ \\u041e\\u0431\\u0440\\u0430\\u0431\\u043e\\u0442\\u0447\\u0438\\u043a \\u0438\\u0437\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0439 \\u0441\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u044f \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u043e\\u0432\\nfunction handleCheckboxChange() {\\n  var selectAll = document.getElementById('select-all');\\n  var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n\\n  if (this.id === 'select-all') {\\n    updateCheckboxes(this.checked);\\n  } else {\\n    var isAllChecked = Array.from(checkboxes).every(function(checkbox) {\\n      return checkbox.checked;\\n    });\\n    selectAll.checked = isAllChecked;\\n    filterSentences(); \\\/\\\/ \\u041e\\u0431\\u043d\\u043e\\u0432\\u0438\\u0442\\u044c \\u0444\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u0446\\u0438\\u044e \\u043f\\u0440\\u0438 \\u0438\\u0437\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0438 \\u0441\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u044f \\u043e\\u0442\\u0434\\u0435\\u043b\\u044c\\u043d\\u043e\\u0433\\u043e \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u0430\\n  }\\n}\\n\\n\\\/\\\/ \\u0424\\u0438\\u043b\\u044c\\u0442\\u0440\\u0430\\u0446\\u0438\\u044f \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439 \\u043d\\u0430 \\u043e\\u0441\\u043d\\u043e\\u0432\\u0435 \\u0441\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u044f \\u0447\\u0435\\u043a\\u0431\\u043e\\u043a\\u0441\\u043e\\u0432\\nfunction filterSentences() {\\n  var selectedCategories = getSelectedCategories();\\n  var enSentences = document.querySelectorAll('#list_en p');\\n  var ruSentences = document.querySelectorAll('#list_ru p');\\n\\n  enSentences.forEach(function(sentence, index) {\\n    var category = sentence.querySelector('span').textContent.trim();\\n    if (selectedCategories.includes(category) || selectedCategories.length === 0) {\\n      sentence.style.display = 'block';\\n      ruSentences[index].style.display = 'block';\\n    } else {\\n      sentence.style.display = 'none';\\n      ruSentences[index].style.display = 'none';\\n    }\\n  });\\n}\\n\\n\\\/\\\/ \\u041f\\u043e\\u043b\\u0443\\u0447\\u0435\\u043d\\u0438\\u0435 \\u0432\\u044b\\u0431\\u0440\\u0430\\u043d\\u043d\\u044b\\u0445 \\u043a\\u0430\\u0442\\u0435\\u0433\\u043e\\u0440\\u0438\\u0439\\nfunction getSelectedCategories() {\\n  var selectedCategories = [];\\n  var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n  checkboxes.forEach(function(checkbox) {\\n    if (checkbox.checked) {\\n      selectedCategories.push(checkbox.value);\\n    }\\n  });\\n  return selectedCategories;\\n}\\n\\n\\\/\\\/ script-1 (\\u043f\\u0435\\u0440\\u0432\\u043e\\u043d\\u0430\\u0447\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439)\\n\\nvar animationTimer; \\\/\\\/ \\u041f\\u0435\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u0430\\u044f \\u0434\\u043b\\u044f \\u0445\\u0440\\u0430\\u043d\\u0435\\u043d\\u0438\\u044f \\u0442\\u0430\\u0439\\u043c\\u0435\\u0440\\u0430 \\u0430\\u043d\\u0438\\u043c\\u0430\\u0446\\u0438\\u0438\\nvar showEnglishFirst = true; \\\/\\\/ \\u0424\\u043b\\u0430\\u0433 \\u0434\\u043b\\u044f \\u043e\\u043f\\u0440\\u0435\\u0434\\u0435\\u043b\\u0435\\u043d\\u0438\\u044f \\u043f\\u043e\\u0440\\u044f\\u0434\\u043a\\u0430 \\u043f\\u043e\\u043a\\u0430\\u0437\\u0430 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439\\nvar isRandom = false; \\\/\\\/ \\u0424\\u043b\\u0430\\u0433 \\u0434\\u043b\\u044f \\u043e\\u043f\\u0440\\u0435\\u0434\\u0435\\u043b\\u0435\\u043d\\u0438\\u044f \\u0440\\u0430\\u043d\\u0434\\u043e\\u043c\\u043d\\u043e\\u0433\\u043e \\u043f\\u043e\\u0440\\u044f\\u0434\\u043a\\u0430 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0439\\n\\nfunction getSentences() {\\n  var enSentences = document.querySelectorAll('#list_en p');\\n  var ruSentences = document.querySelectorAll('#list_ru p');\\n  var sentencePairs = [];\\n\\n  for (var i = 0; i < enSentences.length; i++) {\\n    if (enSentences[i].style.display !== 'none') {\\n      sentencePairs.push({\\n        en: enSentences[i],\\n        ru: ruSentences[i]\\n      });\\n    }\\n  }\\n\\n  if (isRandom) {\\n    sentencePairs = shuffleArray(sentencePairs);\\n  }\\n\\n  return sentencePairs;\\n}\\n\\nfunction shuffleArray(array) {\\n  for (var i = array.length - 1; i > 0; i--) {\\n    var j = Math.floor(Math.random() * (i + 1));\\n    [array[i], array[j]] = [array[j], array[i]];\\n  }\\n  return array;\\n}\\n\\ndocument.getElementById('Play').addEventListener('click', function() {\\n  var delay = parseInt(document.getElementById('Select').value);\\n  var sentences = getSentences();\\n  var container = document.getElementById('sentence_container');\\n  var currentIndex = 0;\\n\\n  \\\/\\\/ \\u041e\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0430 \\u043f\\u0440\\u0435\\u0434\\u044b\\u0434\\u0443\\u0449\\u0435\\u0439 \\u0430\\u043d\\u0438\\u043c\\u0430\\u0446\\u0438\\u0438\\n  clearInterval(animationTimer);\\n\\n  function animateSentences() {\\n    animationTimer = setInterval(function() {\\n      if (sentences.length === 0) {\\n        clearInterval(animationTimer);\\n        return;\\n      }\\n\\n      var sentenceToDisplay;\\n\\n      if (showEnglishFirst) {\\n        sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \\\/ 2)].en : sentences[Math.floor(currentIndex \\\/ 2)].ru;\\n      } else {\\n        sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \\\/ 2)].ru : sentences[Math.floor(currentIndex \\\/ 2)].en;\\n      }\\n\\n      \\\/\\\/ \\u0421\\u043e\\u0437\\u0434\\u0430\\u0435\\u043c \\u043a\\u043b\\u043e\\u043d \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f, \\u0447\\u0442\\u043e\\u0431\\u044b \\u043d\\u0435 \\u0438\\u0437\\u043c\\u0435\\u043d\\u044f\\u0442\\u044c \\u043e\\u0440\\u0438\\u0433\\u0438\\u043d\\u0430\\u043b\\u044c\\u043d\\u044b\\u0435 \\u044d\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442\\u044b\\n      var sentenceClone = sentenceToDisplay.cloneNode(true);\\n      sentenceClone.style.opacity = 1;\\n\\n      container.innerHTML = ''; \\\/\\\/ \\u041e\\u0447\\u0438\\u0449\\u0430\\u0435\\u043c \\u043a\\u043e\\u043d\\u0442\\u0435\\u0439\\u043d\\u0435\\u0440 \\u043f\\u0435\\u0440\\u0435\\u0434 \\u0434\\u043e\\u0431\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435\\u043c \\u043d\\u043e\\u0432\\u043e\\u0433\\u043e \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\\n      container.appendChild(sentenceClone); \\\/\\\/ \\u0414\\u043e\\u0431\\u0430\\u0432\\u043b\\u044f\\u0435\\u043c \\u043a\\u043b\\u043e\\u043d \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f \\u0432 \\u043a\\u043e\\u043d\\u0442\\u0435\\u0439\\u043d\\u0435\\u0440\\n\\n      setTimeout(function() {\\n        sentenceClone.style.opacity = 0; \\\/\\\/ \\u041f\\u0440\\u0438\\u043c\\u0435\\u043d\\u044f\\u0435\\u043c \\u0441\\u0442\\u0438\\u043b\\u0438 \\u0430\\u043d\\u0438\\u043c\\u0430\\u0446\\u0438\\u0438 \\u0434\\u043b\\u044f \\u0437\\u0430\\u0442\\u0443\\u0445\\u0430\\u043d\\u0438\\u044f\\n        currentIndex = (currentIndex + 1) % (sentences.length * 2);\\n      }, delay - 1000); \\\/\\\/ \\u0417\\u0430\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430 \\u043c\\u0435\\u0436\\u0434\\u0443 \\u0438\\u0441\\u0447\\u0435\\u0437\\u043d\\u043e\\u0432\\u0435\\u043d\\u0438\\u0435\\u043c \\u0438 \\u043f\\u043e\\u044f\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435\\u043c \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0433\\u043e \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\\n    }, delay);\\n  }\\n\\n  animateSentences();\\n});\\n\\ndocument.getElementById('Select').addEventListener('change', function() {\\n  \\\/\\\/ \\u041e\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0430 \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u0439 \\u0430\\u043d\\u0438\\u043c\\u0430\\u0446\\u0438\\u0438\\n  clearInterval(animationTimer);\\n});\\n\\ndocument.getElementById('ToggleLanguage').addEventListener('click', function() {\\n  showEnglishFirst = !showEnglishFirst;\\n  \\\/\\\/ \\u041e\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0430 \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u0439 \\u0430\\u043d\\u0438\\u043c\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043f\\u0435\\u0440\\u0435\\u0437\\u0430\\u043f\\u0443\\u0441\\u043a \\u0441 \\u043d\\u043e\\u0432\\u044b\\u043c \\u043f\\u043e\\u0440\\u044f\\u0434\\u043a\\u043e\\u043c\\n  clearInterval(animationTimer);\\n});\\n\\ndocument.getElementById('ToggleRandom').addEventListener('click', function() {\\n  isRandom = !isRandom;\\n  \\\/\\\/ \\u041e\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0430 \\u0442\\u0435\\u043a\\u0443\\u0449\\u0435\\u0439 \\u0430\\u043d\\u0438\\u043c\\u0430\\u0446\\u0438\\u0438 \\u0438 \\u043f\\u0435\\u0440\\u0435\\u0437\\u0430\\u043f\\u0443\\u0441\\u043a \\u0441 \\u043d\\u043e\\u0432\\u044b\\u043c \\u043f\\u043e\\u0440\\u044f\\u0434\\u043a\\u043e\\u043c\\n  clearInterval(animationTimer);\\n});\\n<\\\/script>\\n\",\"margin\":\"default\",\"status\":\"disabled\"},\"name\":\"2 \\u0440\\u0430\\u0431\\u043e\\u0447\\u0438\\u0445 \\u0441\\u043a\\u0440\\u0438\\u043f\\u0442\\u0430\"}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]}]}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"fragment\",\"props\":{\"margin\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<br \/>\n<style>\\n        #sentence_container {\\n            position: absolute;\\n            top: calc(50% + 80pt);\\n            left: 0;\\n            right: 0;\\n            margin: auto;\\n            width: 100%;\\n            text-align: center;\\n        }\\n\\n        #sentence_container p {\\n            font-family: 'Raleway', sans-serif;\\n            font-size: 20pt;\\n            opacity: 0;\\n            transition: opacity 1s ease-in-out;\\n            white-space: pre-wrap;\\n            margin: 0;\\n        }\\n\\n        .en {\\n            color: #7886bc;\\n        }\\n\\n        .ru {\\n            color: #ff6d01;\\n        }\\n\\n        #list_en,\\n        #list_ru {\\n            display: none;\\n        }\\n\\n        #voce {\\n            cursor: pointer;\\n        }\\n\\n        .active {\\n            color: red;\\n        }\\n    <\\\/style>\\n\\n\\n<\/p>\n<div class=\\\"uk-margin\\\">\\n    <button id=\\\"Play\\\" class=\\\"uk-button uk-button-danger uk-margin-remove uk-button-small\\\" uk-icon=\\\"icon: play-circle\\\"><\\\/button>\\n    <button id=\\\"ToggleLanguage\\\" class=\\\"uk-button uk-button-primary uk-button-small\\\" uk-icon=\\\"icon: world\\\"><\\\/button>\\n    <button id=\\\"ToggleRandom\\\" class=\\\"uk-button uk-button-secondary uk-button-small\\\" uk-icon=\\\"icon: settings\\\"><\\\/button>\\n\\n    <\/p>\n<div id=\\\"SelectVerb\\\" class=\\\"uk-button-group\\\">\\n        <\/p>\n<div class=\\\"uk-inline\\\">\\n            <button class=\\\"uk-button uk-button-default uk-button-small\\\" type=\\\"button\\\">\\n                <span uk-icon=\\\"icon: triangle-down\\\"><\\\/span>\\n            <\\\/button>\\n\\n            <\/p>\n<div uk-dropdown=\\\"mode: click; target: !.uk-button-group;\\\">\\n                <\/p>\n<div class=\\\"uk-overflow-auto uk-height-small\\\">\\n                    <\/p>\n<ul class=\\\"uk-list\\\">\\n                        <\/p>\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" id=\\\"select-all\\\">&nbsp;select all<\\\/label><\\\/li>\\n\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" value=\\\"say\\\">&nbsp;say<\\\/label><\\\/li>\\n\n<li><label><input class=\\\"uk-checkbox\\\" type=\\\"checkbox\\\" value=\\\"do\\\">&nbsp;do<\\\/label><\\\/li>\\n                    <\\\/ul>\\n                <\\\/div>\\n            <\\\/div>\\n\\n            <select id=\\\"Select\\\" class=\\\"uk-select uk-form-width-xsmall uk-form-small\\\">\\n<option value=\\\"3000\\\" selected>3 sec<\\\/option>\\n<option value=\\\"5000\\\">5 sec<\\\/option>\\n<option value=\\\"7000\\\">7 sec<\\\/option>\\n            <\\\/select>\\n            <button id=\\\"voce\\\" class=\\\"uk-button uk-margin-small-right\\\" uk-icon=\\\"microphone\\\"><\\\/button>\\n        <\\\/div>\\n    <\\\/div>\\n\\n\n<div id=\\\"sentence_container\\\"><\\\/div>\\n\\n    <\/p>\n<div id=\\\"list_en\\\">\\n        <\/p>\n<p class=\\\"en\\\">I didn't say it.<span style=\\\"display:none;\\\">say<\\\/span><\\\/p>\\n        <\/p>\n<p class=\\\"en\\\">Giuliano didn't do it.<span style=\\\"display:none;\\\">do<\\\/span><\\\/p>\\n    <\\\/div>\\n\\n    <\/p>\n<div id=\\\"list_ru\\\">\\n        <\/p>\n<p class=\\\"ru\\\">\\u042f \\u043d\\u0435 \\u0433\\u043e\\u0432\\u043e\\u0440\\u0438\\u043b \\u044d\\u0442\\u043e.<\\\/p>\\n        <\/p>\n<p class=\\\"ru\\\">\\u0414\\u0436\\u0443\\u043b\\u0438\\u0430\\u043d\\u043e \\u043d\\u0435 \\u0434\\u0435\\u043b\\u0430\\u043b \\u044d\\u0442\\u043e.<\\\/p>\\n    <\\\/div>\\n\\n    <script>\\n        \\\/\\\/ script-2-select\\n\\n        document.addEventListener('DOMContentLoaded', initializeCheckboxes);\\n\\n        function initializeCheckboxes() {\\n            var selectAll = document.getElementById('select-all');\\n            selectAll.checked = true;\\n            updateCheckboxes(true);\\n\\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]');\\n            checkboxes.forEach(function(checkbox) {\\n                checkbox.addEventListener('change', handleCheckboxChange);\\n            });\\n        }\\n\\n        function updateCheckboxes(state) {\\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n            checkboxes.forEach(function(checkbox) {\\n                checkbox.checked = state;\\n            });\\n            filterSentences();\\n        }\\n\\n        function handleCheckboxChange() {\\n            var selectAll = document.getElementById('select-all');\\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n\\n            if (this.id === 'select-all') {\\n                updateCheckboxes(this.checked);\\n            } else {\\n                var isAllChecked = Array.from(checkboxes).every(function(checkbox) {\\n                    return checkbox.checked;\\n                });\\n                selectAll.checked = isAllChecked;\\n                filterSentences();\\n            }\\n        }\\n\\n        function filterSentences() {\\n            var selectedCategories = getSelectedCategories();\\n            var enSentences = document.querySelectorAll('#list_en p');\\n            var ruSentences = document.querySelectorAll('#list_ru p');\\n\\n            enSentences.forEach(function(sentence, index) {\\n                var category = sentence.querySelector('span').textContent.trim();\\n                if (selectedCategories.includes(category) || selectedCategories.length === 0) {\\n                    sentence.style.display = 'block';\\n                    ruSentences[index].style.display = 'block';\\n                } else {\\n                    sentence.style.display = 'none';\\n                    ruSentences[index].style.display = 'none';\\n                }\\n            });\\n        }\\n\\n        function getSelectedCategories() {\\n            var selectedCategories = [];\\n            var checkboxes = document.querySelectorAll('#SelectVerb input[type=\\\"checkbox\\\"]:not(#select-all)');\\n            checkboxes.forEach(function(checkbox) {\\n                if (checkbox.checked) {\\n                    selectedCategories.push(checkbox.value);\\n                }\\n            });\\n            return selectedCategories;\\n        }\\n\\n        \\\/\\\/ script-1 (\\u043f\\u0435\\u0440\\u0432\\u043e\\u043d\\u0430\\u0447\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439)\\n\\n        var animationTimer;\\n        var showEnglishFirst = true;\\n        var isRandom = false;\\n        var isSpeaking = false;\\n        var currentAudio;\\n\\n        function getSentences() {\\n            var enSentences = document.querySelectorAll('#list_en p');\\n            var ruSentences = document.querySelectorAll('#list_ru p');\\n            var sentencePairs = [];\\n\\n            for (var i = 0; i < enSentences.length; i++) {\\n                if (enSentences[i].style.display !== 'none') {\\n                    sentencePairs.push({\\n                        en: enSentences[i],\\n                        ru: ruSentences[i]\\n                    });\\n                }\\n            }\\n\\n            if (isRandom) {\\n                sentencePairs = shuffleArray(sentencePairs);\\n            }\\n\\n            return sentencePairs;\\n        }\\n\\n        function shuffleArray(array) {\\n            for (var i = array.length - 1; i > 0; i--) {\\n                var j = Math.floor(Math.random() * (i + 1));\\n                [array[i], array[j]] = [array[j], array[i]];\\n            }\\n            return array;\\n        }\\n\\n        document.getElementById('Play').addEventListener('click', function() {\\n            var delay = parseInt(document.getElementById('Select').value);\\n            var sentences = getSentences();\\n            var container = document.getElementById('sentence_container');\\n            var currentIndex = 0;\\n\\n            clearInterval(animationTimer);\\n\\n            function animateSentences() {\\n                animationTimer = setInterval(function() {\\n                    if (sentences.length === 0) {\\n                        clearInterval(animationTimer);\\n                        return;\\n                    }\\n\\n                    var sentenceToDisplay;\\n\\n                    if (showEnglishFirst) {\\n                        sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \\\/ 2)].en : sentences[Math.floor(currentIndex \\\/ 2)].ru;\\n                    } else {\\n                        sentenceToDisplay = (currentIndex % 2 === 0) ? sentences[Math.floor(currentIndex \\\/ 2)].ru : sentences[Math.floor(currentIndex \\\/ 2)].en;\\n                    }\\n\\n                    var sentenceClone = sentenceToDisplay.cloneNode(true);\\n                    sentenceClone.style.opacity = 1;\\n\\n                    container.innerHTML = '';\\n                    container.appendChild(sentenceClone);\\n\\n                    if (isSpeaking) {\\n                        speak(sentenceClone.textContent.trim(), sentenceClone.classList.contains('en') ? 'en' : 'ru');\\n                    }\\n\\n                    setTimeout(function() {\\n                        sentenceClone.style.opacity = 0;\\n                        currentIndex = (currentIndex + 1) % (sentences.length * 2);\\n                    }, delay - 1000);\\n                }, delay);\\n            }\\n\\n            animateSentences();\\n        });\\n\\n        document.getElementById('Select').addEventListener('change', function() {\\n            clearInterval(animationTimer);\\n        });\\n\\n        document.getElementById('ToggleLanguage').addEventListener('click', function() {\\n            showEnglishFirst = !showEnglishFirst;\\n            clearInterval(animationTimer);\\n        });\\n\\n        document.getElementById('ToggleRandom').addEventListener('click', function() {\\n            isRandom = !isRandom;\\n            clearInterval(animationTimer);\\n        });\\n\\t\\t\\n\\t\\t<\\\/script>\",\"margin\":\"default\"}}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"<script>\\nconst API_KEY = 'AIzaSyCYou31ppyCN-5QuOIOl4JegNWFHMeoAXk';\\nlet isSpeaking = false;\\nlet currentAudio;\\n\\nfunction speak(text, languageCode) {\\n    if (currentAudio) {\\n        currentAudio.pause();\\n    }\\n\\n    const url = `https:\\\/\\\/texttospeech.googleapis.com\\\/v1\\\/text:synthesize?key=${API_KEY}`;\\n    const voice = languageCode === 'en' ? 'en-GB-Wavenet-C' : 'ru-RU-Wavenet-C';\\n\\n    const requestBody = {\\n        input: { text: text },\\n        voice: { languageCode: languageCode, name: voice },\\n        audioConfig: { audioEncoding: 'MP3' }\\n    };\\n\\n    fetch(url, {\\n        method: 'POST',\\n        headers: {\\n            'Content-Type': 'application\\\/json',\\n        },\\n        body: JSON.stringify(requestBody)\\n    })\\n    .then(response => response.json())\\n    .then(data => {\\n        const audioContent = data.audioContent;\\n        currentAudio = new Audio('data:audio\\\/mp3;base64,' + audioContent);\\n        currentAudio.play();\\n    })\\n    .catch(error => {\\n        console.error('Error:', error);\\n    });\\n}\\n\\ndocument.getElementById('voce').addEventListener('click', function() {\\n    isSpeaking = !isSpeaking;\\n    this.classList.toggle('active'); \\\/\\\/ \\u041f\\u0435\\u0440\\u0435\\u043a\\u043b\\u044e\\u0447\\u0430\\u0435\\u043c \\u043a\\u043b\\u0430\\u0441\\u0441 \\u0434\\u043b\\u044f \\u043f\\u043e\\u0434\\u0441\\u0432\\u0435\\u0442\\u043a\\u0438\\n\\n    if (isSpeaking) {\\n        const delay = parseInt(document.getElementById('Select').value);\\n        const sentences = getSentences();\\n        let currentIndex = 0;\\n\\n        if (sentences.length === 0) {\\n            document.getElementById('sentence_container').innerHTML = '<\/p>\n<p>No matching sentences found.<\\\/p>';\\n            return;\\n        }\\n\\n        function speakNextSentence() {\\n            if (!isSpeaking) return;\\n\\n            const sentenceToSpeak = sentences[Math.floor(currentIndex \\\/ 2)].en.textContent;\\n            const sentenceToShow = sentences[Math.floor(currentIndex \\\/ 2)].ru.cloneNode(true);\\n            sentenceToShow.style.opacity = 1;\\n            document.getElementById('sentence_container').innerHTML = ''; \\\/\\\/ \\u041e\\u0447\\u0438\\u0449\\u0430\\u0435\\u043c \\u043a\\u043e\\u043d\\u0442\\u0435\\u0439\\u043d\\u0435\\u0440 \\u043f\\u0435\\u0440\\u0435\\u0434 \\u0434\\u043e\\u0431\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435\\u043c \\u043d\\u043e\\u0432\\u043e\\u0433\\u043e \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u044f\\n\\n            if (currentIndex % 2 === 0) {\\n                speakText(sentenceToSpeak, 'en-GB-Wavenet-C').then(() => {\\n                    setTimeout(() => {\\n                        currentIndex++;\\n                        speakNextSentence();\\n                    }, delay); \\\/\\\/ \\u041f\\u0430\\u0443\\u0437\\u0430 \\u043f\\u043e\\u0441\\u043b\\u0435 \\u043e\\u0437\\u0432\\u0443\\u0447\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f \\u043f\\u0435\\u0440\\u0435\\u0434 \\u043f\\u043e\\u043a\\u0430\\u0437\\u043e\\u043c \\u0440\\u0443\\u0441\\u0441\\u043a\\u043e\\u0433\\u043e \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430\\n                }).catch(error => {\\n                    console.error('Error during speech synthesis:', error);\\n                    isSpeaking = false; \\\/\\\/ \\u041e\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0430 \\u043e\\u0437\\u0432\\u0443\\u0447\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f \\u0432 \\u0441\\u043b\\u0443\\u0447\\u0430\\u0435 \\u043e\\u0448\\u0438\\u0431\\u043a\\u0438\\n                });\\n            } else {\\n                document.getElementById('sentence_container').appendChild(sentenceToShow); \\\/\\\/ \\u041f\\u043e\\u043a\\u0430\\u0437\\u044b\\u0432\\u0430\\u0435\\u043c \\u0440\\u0443\\u0441\\u0441\\u043a\\u043e\\u0435 \\u043f\\u0440\\u0435\\u0434\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435\\n                setTimeout(() => {\\n                    sentenceToShow.style.opacity = 0;\\n                    currentIndex = (currentIndex + 1) % (sentences.length * 2);\\n                    speakNextSentence();\\n                }, delay);\\n            }\\n        }\\n\\n        isSpeaking = true;\\n        speakNextSentence();\\n    } else {\\n        if (currentAudio) {\\n            currentAudio.pause(); \\\/\\\/ \\u041f\\u0440\\u0438 \\u043e\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043a\\u0435 \\u043e\\u0437\\u0432\\u0443\\u0447\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f \\u0442\\u0430\\u043a\\u0436\\u0435 \\u043e\\u0441\\u0442\\u0430\\u043d\\u0430\\u0432\\u043b\\u0438\\u0432\\u0430\\u0435\\u043c \\u0430\\u0443\\u0434\\u0438\\u043e\\n        }\\n    }\\n});\\n\\n\\\/\\\/ \\u0424\\u0443\\u043d\\u043a\\u0446\\u0438\\u044f \\u0434\\u043b\\u044f \\u0432\\u043e\\u0441\\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043d\\u0438\\u044f \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430\\nfunction speakText(textToSpeak, voice) {\\n    return new Promise((resolve, reject) => {\\n        const url = `https:\\\/\\\/texttospeech.googleapis.com\\\/v1\\\/text:synthesize?key=${API_KEY}`;\\n        const requestBody = {\\n            input: { text: textToSpeak },\\n            voice: { languageCode: voice.split('-')[0], name: voice },\\n            audioConfig: { audioEncoding: 'MP3' }\\n        };\\n\\n        fetch(url, {\\n            method: 'POST',\\n            headers: {\\n                'Content-Type': 'application\\\/json'\\n            },\\n            body: JSON.stringify(requestBody)\\n        })\\n        .then(response => response.json())\\n        .then(data => {\\n            if (data.audioContent) {\\n                const audio = new Audio('data:audio\\\/mp3;base64,' + data.audioContent);\\n                audio.onended = () => {\\n                    resolve(); \\\/\\\/ \\u0420\\u0430\\u0437\\u0440\\u0435\\u0448\\u0430\\u0435\\u043c \\u043f\\u0440\\u043e\\u043c\\u0438\\u0441 \\u043f\\u043e\\u0441\\u043b\\u0435 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043d\\u0438\\u044f \\u0432\\u043e\\u0441\\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043d\\u0438\\u044f\\n                };\\n                audio.play().then(() => {\\n                    console.log('Audio playback started for:', textToSpeak);\\n                }).catch(error => {\\n                    console.error('Error during audio playback:', error);\\n                    reject(error); \\\/\\\/ \\u041e\\u0442\\u043a\\u043b\\u043e\\u043d\\u044f\\u0435\\u043c \\u043f\\u0440\\u043e\\u043c\\u0438\\u0441 \\u0432 \\u0441\\u043b\\u0443\\u0447\\u0430\\u0435 \\u043e\\u0448\\u0438\\u0431\\u043a\\u0438\\n                });\\n            } else {\\n                console.error('No audio content received');\\n                reject('No audio content received'); \\\/\\\/ \\u041e\\u0442\\u043a\\u043b\\u043e\\u043d\\u044f\\u0435\\u043c \\u043f\\u0440\\u043e\\u043c\\u0438\\u0441 \\u0435\\u0441\\u043b\\u0438 \\u043d\\u0435\\u0442 \\u0430\\u0443\\u0434\\u0438\\u043e \\u043a\\u043e\\u043d\\u0442\\u0435\\u043d\\u0442\\u0430\\n            }\\n        })\\n        .catch(error => {\\n            console.error('Error:', error);\\n            reject(error); \\\/\\\/ \\u041e\\u0442\\u043a\\u043b\\u043e\\u043d\\u044f\\u0435\\u043c \\u043f\\u0440\\u043e\\u043c\\u0438\\u0441 \\u0432 \\u0441\\u043b\\u0443\\u0447\\u0430\\u0435 \\u043e\\u0448\\u0438\\u0431\\u043a\\u0438\\n        });\\n    });\\n}\\n<\\\/script>\\n\",\"margin\":\"default\"},\"name\":\"\\u0441\\u043a\\u0440\\u0438\\u043f\\u0442 3 \\u0433\\u043e\\u043b\\u043e\\u0441\"}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]}]}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"}}]}]}],\"version\":\"4.3.8\"} --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pages: 18 to 19 voice &nbsp;select all &nbsp;say &nbsp;do 3 sec5 sec7 sec I didn&#8217;t say it.say Giuliano didn&#8217;t do it.do \u042f \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u044d\u0442\u043e. \u0414\u0436\u0443\u043b\u0438\u0430\u043d\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-994","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/pages\/994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/comments?post=994"}],"version-history":[{"count":87,"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/pages\/994\/revisions"}],"predecessor-version":[{"id":2545,"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/pages\/994\/revisions\/2545"}],"wp:attachment":[{"href":"https:\/\/itsiller-software.com\/index.php\/wp-json\/wp\/v2\/media?parent=994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}