Locked konten dengan jawab soalan.

Adzril MediaOne

 ni penemuan idea terbaru. boleh locked content dengan reader perlu menjawab soalan. soalan pulak boleh buat banyak2 . kalau reader salah, dia takleh simply nak cuba jawab lagi sebab dia kena tunggu 30 minit untuk jawab balik soalan. tapi kalini soalan yang lain pulak.

ini codenya.

<!-- Start Content Lock -->

<style>
.content-lock {
    margin: 20px 0;
}
.question-section {
    background: #f5f5f5;
    padding: 20px;
    border-radius: 5px;
    margin-bottom: 20px;
}
.radio-option {
    display: block;
    margin: 10px 0;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 3px;
    cursor: pointer;
}
.radio-option:hover {
    background: #eee;
}
.submit-button {
    padding: 8px 15px;
    background: #2196F3;
    color: #fff;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    width: 100%;
    margin-top: 15px;
}
.submit-button:hover {
    background: #1976D2;
}
.locked-content {
    display: none;
}
.timeout-message {
    display: none;
    color: red;
    text-align: center;
    padding: 20px;
}
</style>

<div class="content-lock">
    <div id="question-section" class="question-section">
        <!-- Questions will be dynamically inserted here -->
    </div>
    
    <div id="timeout-message" class="timeout-message">
        <p>Wrong answer. Please wait 30 minutes before trying again.</p>
        <p>Time remaining: <span id="timer">30:00</span></p>
    </div>
    
    <div id="locked-content" class="locked-content">
<!-- End Content Lock Header -->

[Write your content here in WYSIWYG editor]

<!-- Start Content Lock Footer -->
    </div>
</div>

<script>
(function(){
    const questions = [
        {
            id: 1,
            question: "What is the capital of Malaysia?",
            options: [
                { value: "kl", text: "Kuala Lumpur" },
                { value: "jb", text: "Johor Bahru" },
                { value: "penang", text: "Penang" }
            ],
            correct: "kl"
        },
        {
            id: 2,
            question: "What year did Malaysia gain independence?",
            options: [
                { value: "1957", text: "1957" },
                { value: "1963", text: "1963" },
                { value: "1965", text: "1965" }
            ],
            correct: "1957"
        },
        {
            id: 3,
            question: "Which state is known as 'Land Below The Wind'?",
            options: [
                { value: "sabah", text: "Sabah" },
                { value: "sarawak", text: "Sarawak" },
                { value: "pahang", text: "Pahang" }
            ],
            correct: "sabah"
        }
    ];

    const postId = window.location.pathname;
    let timeoutEndTime = localStorage.getItem('timeoutEndTime_' + postId);
    let currentQuestionIndex = parseInt(localStorage.getItem('currentQuestionIndex_' + postId) || '0');
    let timerInterval;

    function displayQuestion(index) {
        const question = questions[index];
        const html = `
            <div id="question${question.id}">
                <h3>To access the content, please answer this question:</h3>
                <p>${question.question}</p>
                ${question.options.map(option => `
                    <label class="radio-option">
                        <input type="radio" name="q${question.id}" value="${option.value}"> ${option.text}
                    </label>
                `).join('')}
                <button onclick="checkAnswer()" class="submit-button">Submit Answer</button>
            </div>
        `;
        document.getElementById('question-section').innerHTML = html;
    }
    
    if (timeoutEndTime && new Date().getTime() < timeoutEndTime) {
        showTimeout();
        startTimer(Math.floor((timeoutEndTime - new Date().getTime()) / 1000));
    } else {
        displayQuestion(currentQuestionIndex);
    }
    
    window.checkAnswer = function() {
        const currentQuestion = questions[currentQuestionIndex];
        const selectedAnswer = document.querySelector(`input[name="q${currentQuestion.id}"]:checked`);
        if (!selectedAnswer) return;
        
        if (selectedAnswer.value === currentQuestion.correct) {
            document.getElementById('question-section').style.display = 'none';
            document.getElementById('locked-content').style.display = 'block';
        } else {
            const timeoutDuration = 30 * 60 * 1000;
            const endTime = new Date().getTime() + timeoutDuration;
            localStorage.setItem('timeoutEndTime_' + postId, endTime);
            
            currentQuestionIndex = (currentQuestionIndex + 1) % questions.length;
            localStorage.setItem('currentQuestionIndex_' + postId, currentQuestionIndex);
            
            showTimeout();
            startTimer(1800);
        }
    }
    
    function showTimeout() {
        document.getElementById('question-section').style.display = 'none';
        document.getElementById('timeout-message').style.display = 'block';
    }
    
    function startTimer(duration) {
        let timer = duration;
        updateTimerDisplay(timer);
        
        clearInterval(timerInterval);
        timerInterval = setInterval(() => {
            timer--;
            updateTimerDisplay(timer);
            
            if (timer <= 0) {
                clearInterval(timerInterval);
                localStorage.removeItem('timeoutEndTime_' + postId);
                location.reload();
            }
        }, 1000);
    }
    
    function updateTimerDisplay(seconds) {
        const minutes = Math.floor(seconds / 60);
        const remainingSeconds = seconds % 60;
        document.getElementById('timer').textContent = 
            `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;
    }
    
    const securityEvents = ['contextmenu', 'selectstart', 'copy'];
    securityEvents.forEach(event => document.addEventListener(event, e => e.preventDefault()));
    
    document.addEventListener('keydown', e => {
        const blocked = {
            ctrlU: e.ctrlKey && e.keyCode === 85,
            ctrlC: e.ctrlKey && e.keyCode === 67,
            ctrlA: e.ctrlKey && e.keyCode === 65,
            f12: e.keyCode === 123
        };
        if(Object.values(blocked).some(Boolean)) {
            e.preventDefault();
            return false;
        }
    });
})();
</script>
<!-- End Content Lock -->

Buat widget blogspot hanya appear di homepage

Adzril MediaOne

 Ada 2 cara untuk buat widget blogspot appear kat homepage sahaja.

1. Letak code ni secara manual kat widget yang kita nak appearkan kat homepage je.

<b:if cond='data:blog.url == data:blog.homepageUrl'>

  <!-- Widget code goes here -->

</b:if>


2. Buat main wrapper jadi appear kat homepage sahaja. so semua widget yang di add akan automatik appear kat homepage je.

<div id='main-wrapper'>

  <b:section id='homepage-widgets' showaddelement='yes'>

    <b:if cond='data:blog.url == data:blog.homepageUrl'>

      <!-- All widgets inside this section will only show on homepage -->

    </b:if>

  </b:section>

</div>

Siap image generator

Adzril MediaOne

Nak buat image generator ni sampai aku jam 4 pagi ye. Tak dapat jugak hasilnya. Lepas tu sambung balik esok paginya lepas sahur. Pun still tak menjadi. problem kat butang generate lah, butang capture tak buat kerja la, macam-macam lagi. So aku redha dan biarkan je la. Tunggu la nanti dapat ilham, menjadi la tu.

So lepas aku tidur tenghari tu, bangun-bangun jer terfikir nak modified Plate List Generator v1.0. Sebab keluarga plate list generator ni semua function. Cumanya kenapa aku pilih plate list generator v1.0 ni sebab function dia semua masih basic. dan semua fungsi asasnya beroperasi dengan baik.

Alhamdulillah. Menjadi. Dia camni tau, bila satu benda menjadi, nahhh terus aku buat beberapa version Image with Text Generator ni. Ada 4 versi.

  1. Versi asas dan flexible v1.0 (ikut size gambar)
  2. Versi fixed square v1.2 (800x 800 pixels)
  3. Versi boleh adjust size font v1.3
  4. Versi boleh adjust size gambar v2.0(Lanscape, Square dan Stories)

Yang paling lengkap sudah semestinya v2.0 yang boleh adjust size gambar yang terhasil.

Buat Generator list plate

Adzril MediaOne

 Teruja betul bila boleh buat list nombor plate guna css lepastu boleh screenshot hanya dengan klik button. Usually kalau customer mintak list nombor saya bagi je yang team runner provide (tulisan tangan). Nak edit guna photopea macam leceh and renyah pulak.

Akhirnya jumpa la teknik ni. Just masukkan Siri plate, then masukkan nombor yang available untuk siri tu, dan klik generate. Terus generated list plate tu tanpa perlu edit. Design guna css je. Then terus click Capture button.

Hasil list generator V2.0

contoh generated image. Ini sebenarnya screenshot, bukan sistem generate guna image tools. Kira mudah la keje sekarang. Plate list Number generator V2.0.

Kalau nak akses yang V1.0 pun ada, lebih simple. Plate list Generator v1.0.

Hasil list generator v1.0


Pasang passcode untuk blog

Adzril MediaOne

 Walaupun blogspot ada fungsi invite readers only, tapi kita boleh set letak passcode untuk sesiapa yang nak akses blog kita.

Ini scriptnya

<script type="text/javascript"> var passcode = "YOUR_PASSCODE_HERE"; var accessDuration = 60 * 60 * 1000; // 1 hour in milliseconds function passCheck() { var enteredPasscode = document.getElementById('pass').value; var errorMessage = document.getElementById('errorMessage'); if (enteredPasscode === passcode) { var expirationTime = new Date().getTime() + accessDuration; localStorage.setItem('passcode', enteredPasscode); localStorage.setItem('expirationTime', expirationTime); document.getElementById('passDiv').style.display = 'none'; document.getElementsByTagName('body')[0].style.overflow = 'auto'; errorMessage.textContent = ''; } else { errorMessage.textContent = 'Invalid passcode. Please try again.'; } return false; } window.onload = function() { var storedPasscode = localStorage.getItem('passcode'); var expirationTime = localStorage.getItem('expirationTime'); var currentTime = new Date().getTime(); if (storedPasscode !== passcode || currentTime > expirationTime) { localStorage.removeItem('passcode'); localStorage.removeItem('expirationTime'); document.getElementById('passDiv').style.display = 'flex'; document.getElementsByTagName('body')[0].style.overflow = 'hidden'; } }; </script> <div id='passDiv'> <form onsubmit='return passCheck()'> <div class='logo'> <img alt='Logo' src='https://blogger.googleusercontent.com/img/a/AVvXsEhoquAr0U2kpwFKS3Qg8dCdyzkhbhYv9TodUNazISe8jEwcqBmisDQUrJhhvMW54IOA1pdMmJq-LR5zSaBvntWfTj40DZEUf4SZhCOKLuLxonJPWF5LGKJK9HxZSksyryH_EJAss1MBT5BINRgrFZ4_IxInlx-wIduZFj85mLVF5WNpgpXYAowcKULS63s=w150'/> </div> <h2>Protected Content</h2> <p>Please enter the passcode to unlock the content.</p> <div class='input-group'> <input id='pass' name='pass' placeholder='Enter passcode' required='required' type='password'/> <button type='submit'>Unlock</button> </div> <p class='contact-text'>Contact Adzril for the passcode.</p> <p id='errorMessage'/> </form> </div> <style> #passDiv { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #f7f7f7; z-index: 9999; display: none; justify-content: center; align-items: center; } #passDiv form { background-color: #ffffff; padding: 40px; border-radius: 10px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); text-align: center; max-width: 400px; width: 100%; } .logo { margin-bottom: 30px; } .logo img { max-width: 150px; height: auto; } #passDiv h2 { font-size: 28px; margin-bottom: 20px; color: #333333; } #passDiv p { font-size: 18px; margin-bottom: 30px; color: #666666; } .input-group { display: flex; justify-content: center; align-items: center; margin-bottom: 30px; } .input-group input { padding: 12px; border: 1px solid #dddddd; border-radius: 6px; font-size: 18px; width: 100%; max-width: 300px; } .input-group button { padding: 12px 24px; background-color: #ff6b6b; color: #ffffff; border: none; border-radius: 6px; font-size: 18px; margin-left: 15px; cursor: pointer; transition: background-color 0.3s ease; } .input-group button:hover { background-color: #ff4f4f; } .contact-text { font-size: 16px; color: #999999; margin-bottom: 10px; } #errorMessage { color: #ff6b6b; font-size: 16px; margin-top: 15px; } </style>

Paparan lebih simple. Dengan passcode ini user tak boleh akses blog anda. Kalau dia ada passcodenya, dia boleh akses blog anda dalam 1 jam je. lepas tu akan lock balik. 


Letak code ini dalam tag body. Atau sebelum </body>

Ini untuk paparan passcode yang lebih minimalist.

 <script>

  // Define the passcode and access duration

  var passcode = "a";

  var accessDuration = 60 * 60 * 1000; // 1 hour in milliseconds


  // Function to handle passcode check

  function passCheck() {

    // Get the entered passcode and error message element

    var enteredPasscode = document.getElementById('pass').value;

    var errorMessage = document.getElementById('errorMessage');


    // Check if the entered passcode is correct

    if (enteredPasscode === passcode) {

      // Calculate the expiration time

      var expirationTime = new Date().getTime() + accessDuration;


      // Store the passcode and expiration time in local storage

      localStorage.setItem('passcode', enteredPasscode);

      localStorage.setItem('expirationTime', expirationTime);


      // Hide the passcode input div and set the body's overflow to auto

      document.getElementById('passDiv').style.display = 'none';

      document.getElementsByTagName('body')[0].style.overflow = 'auto';


      // Clear the error message

      errorMessage.textContent = '';

    } else {

      // Set the error message

      errorMessage.textContent = 'Invalid passcode. Please try again.';

    }


    // Prevent the form from submitting

    return false;

  }


  // Function to handle page load

  window.onload = function() {

    // Get the stored passcode and expiration time from local storage

    var storedPasscode = localStorage.getItem('passcode');

    var expirationTime = localStorage.getItem('expirationTime');

    var currentTime = new Date().getTime();


    // Check if the stored passcode is valid or if the expiration time has passed

    if (storedPasscode !== passcode || currentTime > expirationTime) {

      // Remove the stored passcode and expiration time from local storage

      localStorage.removeItem('passcode');

      localStorage.removeItem('expirationTime');


      // Display the passcode input div and set the body's overflow to hidden

      document.getElementById('passDiv').style.display = 'flex';

      document.getElementsByTagName('body')[0].style.overflow = 'hidden';

    }

  };

</script>


<div id='passDiv'>

  <form onsubmit='return passCheck()'>

    <div class='logo-container'>

      <img alt='Logo' src='path/to/your/logo.png'/>

    </div>

    <label for='pass'>Enter Passcode:</label>

    <input id='pass' name='pass' type='password'/>

    <input type='submit' value='Submit'/>

    <p>Please contact Adzril to get the passcode.</p>

    <p id='errorMessage' style='color: red;'/>

  </form>

</div>


<style>

  #passDiv {

    position: fixed;

    top: 0;

    left: 0;

    width: 100%;

    height: 100%;

    background-color: #fff;

    z-index: 9999;

    display: none;

    justify-content: center;

    align-items: center;

  }


  #passDiv form {

    background-color: #f1f1f1;

    padding: 20px;

    border-radius: 5px;

    text-align: center;

  }


  .logo-container {

    text-align: center;

    margin-bottom: 20px;

  }


  .logo-container img {

    width: 200px;

    height: 200px;

  }

</style>

Sharing code yang orang boleh copy code tu

Adzril MediaOne

 Berikut adalah cara untuk sharing code supaya orang boleh copy code tu dan paste kat blog atau website dia.

Biasanya untuk tools yang dibuat menggunakan code html dan javascript dan css.

<title>Aircond calculator</title>

    <style>

        /* Styles for copy button */

        .copy-button {

            cursor: pointer;

            background-color: #007bff;

            color: #fff;

            padding: 5px 10px;

            border: none;

            border-radius: 5px;

            margin-bottom: 10px;

        }


        /* Styles for code block */

        pre {

            position: relative;

        }


        code {

            display: block;

            padding: 5px;

            overflow-x: auto;

            background-color: #f8f8f8;

            border: 1px solid #ddd;

            border-radius: 5px;

            max-height: 150px;

            font-size: 12px;

        }


        .copy-button-container {

            position: absolute;

            top: 5px;

            right: 5px;

        }


        /* Styles for notification */

        .notification {

            margin-top: 10px;

            padding: 10px;

            border: 1px solid #ddd;

            border-radius: 5px;

            display: none;

            font-size: 14px;

        }


        .success {

            background-color: #4CAF50;

            color: #fff;

        }


        .error {

            background-color: #f44336;

            color: #fff;

        }

    </style>


<body>


    <div class="code-container">

        <button class="copy-button" onclick="copyCode()">Copy Code</button>

        <pre>

            <code id="html-code">

&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;

&lt;head&gt;

    &lt;meta charset="UTF-8"&gt;

    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;

    &lt;title&gt;AC Calculator&lt;/title&gt;

    &lt;style&gt;

        .calculator-section {

            position: relative; /* Make the container position relative */

            background-color: #fff;

            padding: 20px;

            border-radius: 10px;

            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

            max-width: 400px;

            width: 100%;

            margin: auto; /* Center the calculator on the page */

        }


        /* Logo styles */

        .logo {

            position: absolute; /* Position the logo absolutely within the container */

            bottom: 10px; /* Distance from the bottom */

            left: 10px; /* Distance from the left */

        }


        .calculator-heading {

            text-align: center;

            margin-bottom: 20px;

        }


        .calculator-form {

            display: flex;

            flex-direction: column;

        }


        .calculator-label {

            margin-bottom: 10px;

        }


        .calculator-input {

            padding: 10px;

            border: 1px solid #ccc;

            border-radius: 5px;

            margin-bottom: 10px;

            font-size: 16px;

        }


        .calculator-button {

            padding: 10px;

            background-color: #007bff;

            color: #fff;

            border: none;

            border-radius: 5px;

            cursor: pointer;

            font-size: 16px;

            margin-bottom: 10px;

            transition: background-color 0.3s;

        }


        .calculator-button:hover {

            background-color: #0056b3;

        }


        .calculator-button:last-child {

            margin-bottom: 0;

        }


        .calculator-result {

            margin-top: 20px;

            font-size: 18px;

            font-weight: bold;

            text-align: center;

        }


        .calculator-radio-container {

            display: flex;

            justify-content: center;

            margin-bottom: 10px;

        }


        .calculator-radio-button {

            flex: 1;

            margin: 0 5px;

        }

    &lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

    &lt;div class="calculator-section"&gt;

        &lt;h2 class="calculator-heading"&gt;Kira Horsepower (HP) Aircond&lt;/h2&gt;

        &lt;form class="calculator-form"&gt;

            &lt;label class="calculator-label" for="length"&gt;Panjang Bilik (feet/kaki):&lt;/label&gt;

            &lt;input class="calculator-input" type="number" id="length" name="length" required&gt;&lt;br&gt;

            &lt;label class="calculator-label" for="width"&gt;Lebar Bilik (feet/kaki):&lt;/label&gt;

            &lt;input class="calculator-input" type="number" id="width" name="width" required&gt;&lt;br&gt;

            &lt;label class="calculator-label"&gt;Adalah ruang bilik terkena sinaran matahari secara direct?&lt;/label&gt;

            &lt;div class="calculator-radio-container"&gt;

                &lt;button class="calculator-button calculator-radio-button" type="button" onclick="selectSunlight('yes')"&gt;YES&lt;/button&gt;

                &lt;button class="calculator-button calculator-radio-button" type="button" onclick="selectSunlight('no')"&gt;NO&lt;/button&gt;

            &lt;/div&gt;

        &lt;/form&gt;

        &lt;p class="calculator-result" id="result"&gt;&lt;/p&gt;

   &lt;a href="https://www.rengking.com"&gt;

            &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoUga4fVzQBbHTaOR9skMOWGhvsZnGOz4UhUVPkBJxVTjvnXC9J8ZXPxYXsXWfS1V1J2kF9FN_F9_40gMplt6bUJaWkS9om3HjGKgmse7u33QW6Ot_5FqmxW2FHj6bpxDPzTQv5v8YMmtct2kObb3Psx0La5Zqg74kK0bollSI0fZdgVoQbsGsn5TgkJzK/s94/logogamekecik.png" alt="Logo" class="logo"&gt;

        &lt;/a&gt;

    &lt;/div&gt;


    &lt;script&gt;

        let selectedSunlight = '';


        function selectSunlight(value) {

            selectedSunlight = value;

            document.querySelectorAll('.calculator-radio-button').forEach(button =&gt; {

                button.style.backgroundColor = '#007bff';

            });

            document.querySelectorAll('.calculator-radio-button').forEach(button =&gt; {

                if (button.textContent.toLowerCase() === value) {

                    button.style.backgroundColor = '#0056b3';

                }

            });

            calculate(); // Automatically calculate when sunlight option is selected

        }


        function calculate() {

            const length = parseFloat(document.getElementById('length').value);

            const width = parseFloat(document.getElementById('width').value);


            if (!length || !width || !selectedSunlight) {

                return; // Exit early if any field is empty

            }


            const result = length * width * 80; // Assuming 80 as a constant factor


            let horsePower;

            if (result &gt;= 10000 &amp;&amp; result &lt;= 11000) {

                horsePower = '1 horse power (hp)';

            } else if (result &gt; 11000 &amp;&amp; result &lt;= 15000) {

                horsePower = '1.5 horse power (hp)';

            } else if (result &gt; 15000 &amp;&amp; result &lt;= 20000) {

                horsePower = '2 horse power (hp)';

            } else if (result &gt; 20000 &amp;&amp; result &lt;= 26000) {

                horsePower = '2.5 horse power (hp)';

            } else {

                horsePower = 'Contact your nearest technician for consultation';

            }


            document.getElementById('result').innerText = `Estimated cooling capacity: &amp;{result.toFixed(2)} BTU\nRecommended AC size: &amp;{horsePower}`;

        }

    &lt;/script&gt;

&lt;/body&gt;

&lt;/html&gt;

            </code>

        </pre>


        <!-- Notification area -->

        <div class="notification" id="notification"></div>

    </div>


    <script>

        function copyCode() {

            const codeElement = document.getElementById('html-code');

            const codeText = codeElement.textContent;


            const textarea = document.createElement('textarea');

            textarea.value = codeText;

            document.body.appendChild(textarea);

            textarea.select();

            document.execCommand('copy');

            document.body.removeChild(textarea);


            showNotification('Code copied!', 'success');

        }


        function showNotification(message, type) {

            const notificationElement = document.getElementById('notification');

            notificationElement.textContent = message;

            notificationElement.classList.add(type);

            notificationElement.style.display = 'block';


            // Hide the notification after a few seconds (adjust the timeout as needed)

            setTimeout(() => {

                notificationElement.style.display = 'none';

                notificationElement.classList.remove(type);

            }, 3000);

        }

    </script>


</body>

yang merah tu la code yang nak dishare dan dicopy. Kalau yang nak dishare tu code html, kena pastikan tanda < ditukar ke &alt; dan > ke &gt; guna fungsi Ctrl+H kat microsoft word atau Google document.

Recipe Card Generator Basic

Adzril MediaOne
Recipe Form


Ingredients:




Generated HTML Code


  

Hidden some part of the article.

Adzril MediaOne
Sourdough Bread

Sourdough Bread

Sourdough is a traditional method of bread-making that predates modern commercial yeast. It involves using naturally occurring wild yeast and lactobacilli bacteria present in the flour and environment to ferment the dough. To create sourdough starter, a mixture of flour and water is left to ferment over several days, during which the wild yeast and bacteria cultures develop.

This starter is then used to leaven bread dough instead of commercial yeast. The fermentation process gives sourdough its characteristic tangy flavor and airy texture, while also making it easier to digest for some people due to the breakdown of gluten and phytic acid.

Enter passcode to read the full article, contact adzril to get the passcode

Incorrect passcode. Please try again.

[Hidden content revealed!]

In addition to its distinct taste and texture, sourdough offers potential health benefits. The fermentation process breaks down the starches and gluten in the dough, making it easier to digest and potentially reducing digestive discomfort for individuals sensitive to gluten. Moreover, sourdough bread typically has a lower glycemic index compared to bread made with commercial yeast, which may help stabilize blood sugar levels.

Its longer fermentation period also enhances the bioavailability of certain nutrients, such as vitamins and minerals, making them more easily absorbed by the body. Overall, sourdough bread not only delights the palate but also provides a nourishing and potentially gut-friendly option for bread lovers.

Accordion

Adzril MediaOne

jawpan kepada question 1

Answer 2...