ÿþ<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CTET Paper 2 - 9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0  8 >  ( . G    ( 0 G  0 </title> <link href="img/logo1.jpg" rel="icon"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #4361ee; --primary-dark: #3f37c9; --secondary: #4895ef; --danger: #f72585; --success: #4cc9f0; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --border-radius: 12px; --box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e2e8f0 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: var(--dark); line-height: 1.6; } .container { width: 100%; max-width: 950px; background: white; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; transition: var(--transition); animation: fadeIn 0.5s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: white; padding: 30px 20px; text-align: center; position: relative; overflow: hidden; } .header::before { content: ''; position: absolute; top: -50px; right: -50px; width: 150px; height: 150px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; } .header h1 { font-size: 2rem; margin-bottom: 10px; font-weight: 700; position: relative; z-index: 1; } .header p { font-size: 1rem; opacity: 0.9; position: relative; z-index: 1; } .header-controls { position: absolute; top: 20px; right: 20px; display: flex; gap: 12px; z-index: 5; } .header-controls .home-icon { position: relative; top: 0; left: 0; color: white; font-size: 24px; cursor: pointer; transition: var(--transition); text-decoration: none; display: inline-block; } .header-controls .home-icon:hover { transform: scale(1.1); color: rgba(255, 255, 255, 0.8); } .content-area { padding: 30px; } .hidden { display: none !important; } .btn { display: inline-block; padding: 12px 28px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); border: none; text-align: center; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); margin: 10px 5px; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 8px 15px rgba(67, 97, 238, 0.3); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #3ab0d6; transform: translateY(-2px); box-shadow: 0 8px 15px rgba(76, 201, 240, 0.3); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: #d3166b; transform: translateY(-2px); box-shadow: 0 8px 15px rgba(247, 37, 133, 0.3); } .btn-level { background: var(--light); color: var(--dark); border: 2px solid var(--gray); font-size: 1.2rem; padding: 15px 30px; width: 200px; } .btn-level:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } .btn-level.selected { background: var(--primary); color: white; border-color: var(--primary); } .btn-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 20px 0; } .level-buttons { display: flex; justify-content: center; gap: 20px; margin: 30px 0; } .section-title { text-align: center; margin-bottom: 25px; color: var(--primary-dark); font-size: 1.5rem; position: relative; padding-bottom: 10px; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 3px; background: var(--secondary); border-radius: 3px; } .checkbox-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; margin: 25px 0; max-height: 500px; overflow-y: auto; padding: 10px; border: 1px solid #eee; border-radius: var(--border-radius); } .checkbox-item { display: flex; align-items: center; } .checkbox-item input { margin-right: 10px; width: 18px; height: 18px; cursor: pointer; } .checkbox-item label { cursor: pointer; font-size: 0.9rem; } .instructions { margin-bottom: 30px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .instructions ol { padding-left: 20px; margin-top: 10px; } .instructions li { margin-bottom: 8px; } .question-section { margin-bottom: 30px; } .section-heading { font-weight: 600; color: var(--primary-dark); margin-bottom: 15px; padding-bottom: 5px; border-bottom: 1px solid #eee; } .question { margin-bottom: 20px; page-break-inside: avoid; } .question-text { font-weight: 500; margin-bottom: 8px; } .option { margin-left: 20px; margin-bottom: 5px; } .action-buttons { display: flex; justify-content: center; flex-wrap: wrap; gap: 15px; margin-top: 40px; } .answer-sheet { margin-top: 40px; padding: 20px; background: #f8f9fa; border-radius: var(--border-radius); } .answer-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .answer-table th, .answer-table td { border: 1px solid #ddd; padding: 8px; text-align: center; } .answer-table th { background-color: var(--primary); color: white; } .answer-table tr:nth-child(even) { background-color: #f2f2f2; } @media (max-width: 768px) { .header h1 { font-size: 1.6rem; } .content-area { padding: 20px; } .checkbox-container { grid-template-columns: 1fr; } .btn { padding: 10px 20px; font-size: 0.9rem; } .btn-level { width: 150px; font-size: 1rem; padding: 12px 20px; } .level-buttons { flex-direction: column; align-items: center; } .header-controls { top: 12px; right: 12px; gap: 8px; } } @media (max-width: 480px) { .header { padding: 20px 15px; } .section-title { font-size: 1.3rem; } .action-buttons { flex-direction: column; align-items: center; } .btn { width: 100%; max-width: 250px; } } @media print { body { background: none; padding: 0; } .container { box-shadow: none; max-width: 100%; } .action-buttons { display: none; } .question { page-break-inside: avoid; } .header { -webkit-print-color-adjust: exact; print-color-adjust: exact; } .header-controls { display: none; } } .temp-pdf-container { font-family: Arial, sans-serif; line-height: 1.5; width: 794px; background-color: white; color: black; } .question { page-break-inside: avoid; break-inside: avoid; } .text-center { text-align: center; margin-bottom: 15px; } .flex-center { display: flex; justify-content: center; align-items: center; gap: 10px; flex-wrap: wrap; } </style> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4930137336556867" crossorigin="anonymous"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KMZ9RJ62EY"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KMZ9RJ62EY'); </script> </head> <body> <div class="container" id="startContainer"> <div class="header"> <div class="header-controls"> <a href="ctet-exam-paper2-assignment-generator.html" class="home-icon" ><i class="fas fa-home"></i></a> </div> <h1 id="mainTitle">CTET Paper 2</h1> <p id="mainSubtitle">9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0 (Hindi Language and Pedagogy)  8 >  ( . G    ( 0 G  0 </p> </div> <div class="content-area"> <div id="startScreen"> <h2 class="section-title" id="startTitle">9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0  8 >  ( . G    ( 0 G  0 </h2> <div class="btn-group"> <button class="btn btn-primary" id="startGeneratingBtn"> 8 >  ( . G   , ( >   </button> </div> </div> <div id="subjectSelection" class="hidden"> <h2 class="section-title" id="subjectTitle">5 ? 7 /  >  / (  0 G  </h2> <div class="btn-group"> <button class="btn btn-primary" id="selectPedagogyBtn">9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0 (Hindi Language & Pedagogy)</button> </div> </div> <div id="chapterSelection" class="hidden"> <h2 class="section-title" id="chapterTitle"> ' M / > / / 5 ? 7 /  A ( G  </h2> <div id="chapterCheckboxContainer" class="checkbox-container"></div> <div class="btn-group"> <button class="btn btn-danger" id="backToStartBtn">* M 0 > 0  - * 0 5 > * 8  >   </button> <button class="btn btn-success" id="generateAssignmentBtn"> 8 >  ( . G   , ( >   </button> </div> </div> <div id="levelSelection" class="hidden"> <h2 class="section-title" id="levelTitle"> ? ( >  8 M $ 0  A ( G  </h2> <p class="text-center" id="levelDesc"> * ( G  8 >  ( . G    G 2 ?  8 M $ 0  >  / (  0 G  :</p> <div class="level-buttons"> <button class="btn btn-level" id="level1Btn">8 M $ 0 1<br><small id="level1Sub">, G 8 ?  8 M $ 0 </small></button> <button class="btn btn-level" id="level2Btn">8 M $ 0 2<br><small id="level2Sub">. ' M / . 8 M $ 0 </small></button> <button class="btn btn-level" id="level3Btn">8 M $ 0 3<br><small id="level3Sub">* 0 @  M 7 > 8 M $ 0 </small></button> </div> <div class="btn-group"> <button class="btn btn-danger" id="backToChaptersBtn">5 ? 7 / K  * 0 5 > * 8  >   </button> <button class="btn btn-success" id="generateFinalBtn"> 8 >  ( . G    ( 0 G   0 G  </button> </div> </div> </div> </div> <div class="container hidden" id="generatedPaperContainer"></div> <script> const { jsPDF } = window.jspdf; // ===================================================== // HINDI LANGUAGE & PEDAGOGY QUESTION BANK (42 TOPICS) - CTET Paper 2 // ===================================================== const questionBank = {}; // Helper to add questions function addQuestions(topicKey, questions) { if (!questionBank[topicKey]) questionBank[topicKey] = { level1: [], level2: [], level3: [] }; // Distribute questions across levels (3 each) const levels = ['level1', 'level2', 'level3']; questions.forEach((q, idx) => { const levelKey = levels[idx % 3]; questionBank[topicKey][levelKey].push(q); }); } // ----- HINDI LANGUAGE TOPICS (1-31) ----- addQuestions(' * ? $  & M / >  6 ', [ { question: " * ? $  & M / >  6 . G   ? 8 * M 0  > 0  G * M 0 6 M ( * B  G  > $ G 9 H  ?", options: [" & M / >  6 * 0  ' > 0 ? $ ", "5 M / >  0 # * 0  ' > 0 ? $ ", " 5 ? $ > * 0  ' > 0 ? $ ", "2 G   * 0  ' > 0 ? $ "], answer: "A" }, { question: " * ? $  & M / >  6  K * " < ( G  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["8 .  5 ?  8 ? $  0 ( > ", "0  ( > ", "2 ?  ( > ", ", K 2 ( > "], answer: "A" }, { question: " * ? $  & M / >  6 . G   ? 8  L 6 2  > * 0 @  M 7 #  ? / >  > $ > 9 H ?", options: ["* ( 8 .  ", "2 G  ( ", "6 M 0 5 # ", "5 >  ( "], answer: "A" } ]); addQuestions(' * ? $ * & M / >  6 ', [ { question: " * ? $ * & M / >  6 . G   ? 8 * M 0  > 0  G * M 0 6 M ( * B  G  > $ G 9 H  ?", options: [" > 5 M / >  6 * 0  ' > 0 ? $ ", " & M / >  6 * 0  ' > 0 ? $ ", "5 M / >  0 # * 0  ' > 0 ? $ ", "2 G   * 0  ' > 0 ? $ "], answer: "A" }, { question: " * ? $ * & M / >  6 . G   ? 8  > . 9 $ M 5 9 K $ > 9 H ?", options: ["- > 5  M 0 9 # ", "$ % M / ", "8 B  ( > ", "   ! < G "], answer: "A" }, { question: " * ? $ * & M / >  6 . G   ? 8  L 6 2  > * 0 @  M 7 # 9 K $ > 9 H ?", options: [" > 5 M / -, K ' ", " & M / -, K ' ", "5 M / >  0 # -, K ' ", "2 G  ( -, K ' "], answer: "A" } ]); addQuestions('9 ? ( M & @ 5 0 M # . > 2 > (8 M 5 0 , 5 M /   ( )', [ { question: "9 ?  & @ 5 0 M # . > 2 > . G   ? $ ( G 8 M 5 0 9 H  ?", options: ["11", "10", "12", "13"], answer: "A" }, { question: "9 ?  & @ 5 0 M # . > 2 > . G   ? $ ( G 5 M /   ( 9 H  ?", options: ["33", "35", "36", "32"], answer: "A" }, { question: "' '  ? 8 * M 0  > 0  > 5 0 M # 9 H ?", options: ["5 M /   ( ", "8 M 5 0 ", ". > $ M 0 > ", "8  / A  M $ "], answer: "A" } ]); addQuestions('5 0 M # K   G . G 2 8 G . > $ M 0 ?  $ % >  . > $ M 0 ?  6 , M & K   @ * 9  > ( ', [ { question: ". > $ M 0 ?  6 , M &  > & > 9 0 #  L ( 8 > 9 H ?", options: [" . 2 ", " 2 ", " . 2 ", " . "], answer: "A" }, { question: " . > $ M 0 ?  6 , M &  > & > 9 0 #  L ( 8 > 9 H ?", options: [" C ", " 0 ", " 2 > ", ". ( "], answer: "A" }, { question: "' . 2 ' . G   ? $ ( @ . > $ M 0 >   9 H  ?", options: ["& K ", "  ", "$ @ ( ", " > 0 "], answer: "A" } ]); addQuestions('5 >  M / 0  ( > ', [ { question: "5 >  M / 0  ( > . G   ? 8  > ' M / > ( 0  >  > $ > 9 H ?", options: ["5 M / >  0 # ?  ( ? / . ", " 0 M % ", "2 / ", "$ A  "], answer: "A" }, { question: "8 0 2 5 >  M /  ? 8 G  9 $ G 9 H  ?", options: ["   M 0 ? / > 5 > 2 > ", "& K  M 0 ? / > 5 > 2 > ", "$ @ (  M 0 ? / > 5 > 2 > ", ", ? ( >  M 0 ? / >  > "], answer: "A" }, { question: "8  / A  M $ 5 >  M / . G   ? $ ( @  M 0 ? / >   9 K $ @ 9 H  ?", options: ["& K / >  ' ?  ", "  ", "$ @ ( ", " > 0 "], answer: "A" } ]); addQuestions('9 ? ( M & @  @ 8 - @ ' M 5 ( ? / K   G * > 0 8 M * 0 ?    $ 0  @  > (  > 0 @ ', [ { question: "9 ?  & @ . G   A 2  ? $ ( @ ' M 5 ( ? / >  9 H  ?", options: ["52", "48", "50", "54"], answer: "A" }, { question: "'6 '  0 '7 ' . G   M / >   $ 0 9 H ?", options: ["  M  > 0 # 8 M % > ( ", "2 G  ( ", " 0 M % ", " K  ( 9 @  "], answer: "A" }, { question: " 2 M * * M 0 > #  0 . 9 > * M 0 > # . G    $ 0  ? 8 * 0  ' > 0 ? $ 9 H ?", options: ["6 M 5 > 8 ", "8 M % > ( ", "* M 0 / > 8 ", " > 2 "], answer: "A" } ]); addQuestions('' M 5 ( ? / >  , 5 0 M # ,  ( A 8 M 5 > 0 ,  ( A ( > 8 ?   5   ( M & M 0 , ? ( M & A . G   ( M $ 0 ', [ { question: " ( A 8 M 5 > 0  >  ? 9 M (  M / > 9 H ?", options: [" ", " ", " ", "d "], answer: "A" }, { question: " ( M & M 0 , ? ( M & A  > * M 0 / K   ? 8  G 2 ?  9 K $ > 9 H ?", options: [" ( A ( > 8 ?  $ > ", " ( A 8 M 5 > 0 ", "5 ? 8 0 M  ", "5 ? 0 > . "], answer: "A" }, { question: " ( A 8 M 5 > 0  0  ( A ( > 8 ?  . G  . B 2   $ 0  M / > 9 H ?", options: ["  M  > 0 # ", "2 G  ( ", " 0 M % ", "8 M % > ( "], answer: "A" } ]); addQuestions('5 ? 0 > .  ? ( M 9 K   > * M 0 / K  ( 2 M * 5 ? 0 > . ,  0 M ' 5 ? 0 > . , * B 0 M # 5 ? 0 > . , * M 0 6 M ( 5 >   , 5 ? 8 M . / , K '  )', [ { question: "* B 0 M # 5 ? 0 > .  >  ? 9 M (  M / > 9 H ?", options: ["d ", ",", ";", "?"], answer: "A" }, { question: "* M 0 6 M ( 5 >    ? 9 M (  > * M 0 / K   ? 8 5 >  M / . G  9 K $ > 9 H ?", options: ["* M 0 6 M ( 5 >   ", "5 ? 8 M . / ", "5 ? ' > ( ", "( ? 7 G ' "], answer: "A" }, { question: " 2 M * 5 ? 0 > .  >  ? 9 M (  M / > 9 H ?", options: [",", ";", "d ", "?"], answer: "A" } ]); addQuestions('8 . > ( ' M 5 ( ? / K  5 > 2 G 6 , M & ', [ { question: "8 . > ( ' M 5 ( ? 5 > 2 G 6 , M &  M / >  9 2 > $ G 9 H  ?", options: ["8 . 6 M 0 A $ ", "5 ? 2 K . ", "* 0 M / > / ", "  > 0 M % @ "], answer: "A" }, { question: "( ? . M ( . G  8 G  L ( 8 . 6 M 0 A $ 6 , M & / A  M . 9 H ?", options: [" A 2 - B 2 ", "& ? ( -& @ ( ", "0 > . -0 > . ", ". ( -. ( "], answer: "A" }, { question: "8 . 6 M 0 A $ 6 , M & K  . G   ? 8  > ' M / > ( 0  ( >  > 9 ?  ?", options: [" 0 M % ", "5 0 M # ", ". > $ M 0 > ", "2 / "], answer: "A" } ]); addQuestions('5 ? 2 K . 6 , M & ', [ { question: "5 ? 2 K . 6 , M &  ? 8 G  9 $ G 9 H  ?", options: ["5 ? * 0 @ $  0 M % 5 > 2 G ", "8 . > (  0 M % 5 > 2 G ", "   H 8 G ", ". ? 2 $ G - A 2 $ G "], answer: "A" }, { question: "' . C $ '  > 5 ? 2 K .  M / > 9 H ?", options: ["5 ? 7 ", " 2 ", "& B ' ", " @ "], answer: "A" }, { question: "'8 A  '  > 5 ? 2 K . 9 H ?", options: ["& A   ", " (  & ", "6 >  $ ? ", "8  $ K 7 "], answer: "A" } ]); addQuestions('* 0 M / > / 5 >  @ 6 , M & ', [ { question: "* 0 M / > / 5 >  @ 6 , M &  ? 8 G  9 $ G 9 H  ?", options: ["8 . > (  0 M % 5 > 2 G ", "5 ? * 0 @ $  0 M % 5 > 2 G ", "   H 8 G ", ". ? 2 $ G - A 2 $ G "], answer: "A" }, { question: "'* > ( @ '  > * 0 M / > / 5 >  @  M / > 9 H ?", options: [" 2 ", "  M ( ? ", "5 > / A ", "* C % M 5 @ "], answer: "A" }, { question: "'8 B 0 M / '  > * 0 M / > / 5 >  @ 9 H ?", options: ["0 5 ? ", "  & M 0 ", "$ > 0 > ", " M 0 9 "], answer: "A" } ]); addQuestions('5 >  M / >  6 K   G 2 ?    6 , M & ', [ { question: " K  - @ ( . 0 G , 8 G  M / >  9 $ G 9 H  ?", options: [" . 0 ", ". 0 ", " @ 5 ? $ ", "6 > 6 M 5 $ "], answer: "A" }, { question: " K * " < > (  / > 9 K , 8 G  M / >  9 $ G 9 H  ?", options: [" * ? $ ", "* ? $ ", "2 ?  ? $ ", " 2 ?  ? $ "], answer: "A" }, { question: " K & ?  >  ( & G , 8 G  M / >  9 $ G 9 H  ?", options: [" & C 6 M / ", "& C 6 M / ", "8 M * 7 M  ", " 8 M * 7 M  "], answer: "A" } ]); addQuestions('8   M  >  5  8  G - G & ', [ { question: "8   M  >  ? 8 G  9 $ G 9 H  ?", options: ["( > . ", " M 0 ? / > ", " A # ", " 5 8 M % > "], answer: "A" }, { question: "5 M /  M $ ? 5 >   8   M  >  > & > 9 0 #  M / > 9 H ?", options: ["0 > . ", "* A 8 M $  ", "8 A  & 0 ", "& L ! < ( > "], answer: "A" }, { question: " > $ ? 5 >   8   M  >  > & > 9 0 #  M / > 9 H ?", options: ["( & @ ", "   > ", "/ . A ( > ", "8 0 8 M 5 $ @ "], answer: "A" } ]); addQuestions('8 0 M 5 ( > .  5  8  G - G & ', [ { question: "8 0 M 5 ( > .  ? 8 G  9 $ G 9 H  ?", options: ["8   M  >  G 8 M % > ( * 0 ", " M 0 ? / >  G 8 M % > ( * 0 ", "5 ? 6 G 7 #  G 8 M % > ( * 0 ", " M 0 ? / > -5 ? 6 G 7 #  G 8 M % > ( * 0 "], answer: "A" }, { question: "( ?  5 >   8 0 M 5 ( > .  > & > 9 0 #  M / > 9 H ?", options: [" * ", ". H  ", "$ B ", "5 9 "], answer: "A" }, { question: "( ? 6 M  / 5 >   8 0 M 5 ( > .  > & > 9 0 #  M / > 9 H ?", options: ["/ 9 ", " K  ", " A  ", "8 , "], answer: "A" } ]); addQuestions(' M 0 ? / >  5  8  G - G & ', [ { question: " M 0 ? / >  ? 8 G  9 $ G 9 H  ?", options: [" > 0 M / ", "( > . ", " A # ", " 5 8 M % > "], answer: "A" }, { question: "  0 M .   M 0 ? / >  > & > 9 0 #  M / > 9 H ?", options: ["8 K ( > ", " > ( > ", "* @ ( > ", "2 ?  ( > "], answer: "A" }, { question: "8  0 M .   M 0 ? / >  > & > 9 0 #  M / > 9 H ?", options: ["* " < ( > ", "0 K ( > ", "9  8 ( > ", " >  ( > "], answer: "A" } ]); addQuestions('5 ? 6 G 7 #  5  8  G - G & ', [ { question: "5 ? 6 G 7 #  ? 8 G  9 $ G 9 H  ?", options: [" A # , $ > ( G 5 > 2 > ", " > 0 M / , $ > ( G 5 > 2 > ", "( > . , $ > ( G 5 > 2 > ", " 5 8 M % > , $ > ( G 5 > 2 > "], answer: "A" }, { question: " A # 5 >   5 ? 6 G 7 #  > & > 9 0 #  M / > 9 H ?", options: ["8 A  & 0 ", " > 2 > ", "$ @ ( ", "/ 9 "], answer: "A" }, { question: "8   M / > 5 >   5 ? 6 G 7 #  > & > 9 0 #  M / > 9 H ?", options: ["* >   ", ", ! < > ", " K  > ", ". @ > "], answer: "A" } ]); addQuestions('5  ( ', [ { question: "5  (  ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: ["& K ", "$ @ ( ", " > 0 ", "  "], answer: "A" }, { question: "  5  (  > & > 9 0 #  M / > 9 H ?", options: ["2 ! <  > ", "2 ! <  G ", "2 ! <  K  ", "2 ! <  @ "], answer: "A" }, { question: ", 9 A 5  (  > & > 9 0 #  M / > 9 H ?", options: ["2 ! <  G ", "2 ! <  > ", "2 ! <  @ ", "2 ! <  ? / >  "], answer: "A" } ]); addQuestions('2 ?   ', [ { question: "2 ?    ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: ["& K ", "$ @ ( ", " > 0 ", "  "], answer: "A" }, { question: "* A 2 M 2 ?    > & > 9 0 #  M / > 9 H ?", options: ["2 ! <  > ", "2 ! <  @ ", ",  M  > ", ",  M  @ "], answer: "A" }, { question: "8 M $ M 0 @ 2 ?    > & > 9 0 #  M / > 9 H ?", options: ["2 ! <  @ ", "2 ! <  > ", ", > 2  ", ", > 2 ?  > "], answer: "A" } ]); addQuestions(' > 2 ', [ { question: " > 2  ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: ["$ @ ( ", "& K ", " > 0 ", "* >   "], answer: "A" }, { question: "- B $  > 2  > & > 9 0 #  M / > 9 H ?", options: [" / > ", " > $ > 9 H ", " >   > ", " > 0 9 > 9 H "], answer: "A" }, { question: "- 5 ? 7 M / $  > 2  > & > 9 0 #  M / > 9 H ?", options: [" >   > ", " / > ", " > $ > 9 H ", " > 0 9 > 9 H "], answer: "A" } ]); addQuestions(' > 0  ', [ { question: " > 0   ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: [" ", "8 > $ ", " 9 ", "( L "], answer: "A" }, { question: " 0 M $ >  > 0   >  ? 9 M (  M / > 9 H ?", options: ["( G ", " K ", "8 G ", " > "], answer: "A" }, { question: " 0 M .  > 0   >  ? 9 M (  M / > 9 H ?", options: [" K ", "( G ", "8 G ", " G 2 ?  "], answer: "A" } ]); addQuestions('* M 0 $ M / / ', [ { question: "* M 0 $ M / /  ? 8 G  9 $ G 9 H  ?", options: ["6 , M &  G   $ . G  ", "6 , M &  G  0  - . G  ", "6 , M &  G . ' M / . G  ", "6 , M &  G 8 > % "], answer: "A" }, { question: " C $ * M 0 $ M / /  > & > 9 0 #  M / > 9 H ?", options: [" 0 $ > ", "* " < >  ", "8 A  & 0 $ > ", "- 2 >  "], answer: "A" }, { question: "$ & M ' ? $ * M 0 $ M / /  > & > 9 0 #  M / > 9 H ?", options: ["- > 0 $ @ / ", "* " < >  ", " 0 $ > ", "9  8 @ "], answer: "A" } ]); addQuestions(' * 8 0 M  ', [ { question: " * 8 0 M   ? 8 G  9 $ G 9 H  ?", options: ["6 , M &  G  0  - . G  ", "6 , M &  G   $ . G  ", "6 , M &  G . ' M / . G  ", "6 , M &  G 8 > % "], answer: "A" }, { question: "' ' * 8 0 M   >  0 M %  M / > 9 H ?", options: ["( 9 @  ", ", 9 A $ ", "  M  > ", ", A 0 > "], answer: "A" }, { question: "'8 A ' * 8 0 M   >  0 M %  M / > 9 H ?", options: ["  M  > ", ", A 0 > ", ", 9 A $ ", "% K ! < > "], answer: "A" } ]); addQuestions('$ $ M 8 .  5  $ & M - 5 ', [ { question: "$ $ M 8 . 6 , M &  ? 8 G  9 $ G 9 H  ?", options: ["8  8 M  C $ 8 G 2 ?    ", "& G 6  ", "5 ? & G 6 @ ", " 0 , @ "], answer: "A" }, { question: "$ & M - 5 6 , M &  ? 8 G  9 $ G 9 H  ?", options: ["8  8 M  C $ 8 G , ( G ", "& G 6  ", "5 ? & G 6 @ ", " 0 , @ "], answer: "A" }, { question: "'  M ( ? '  ? 8 * M 0  > 0  > 6 , M & 9 H ?", options: ["$ $ M 8 . ", "$ & M - 5 ", "& G 6  ", "5 ? & G 6 @ "], answer: "A" } ]); addQuestions('5 0 M $ ( @ ', [ { question: "5 0 M $ ( @  > 8  ,  '  ? 8 8 G 9 H ?", options: ["6 A & M ' 2 G  ( ", "  M  > 0 # ", " 0 M % ", "5 M / >  0 # "], answer: "A" }, { question: "6 A & M ' 5 0 M $ ( @  L ( 8 @ 9 H ?", options: ["5 ? & M / > 2 / ", "5 ? ' > 2 / ", "5 ? & M / > 2 / ", "5 ? ' M / > 2 / "], answer: "A" }, { question: " 6 A & M ' 5 0 M $ ( @  L ( 8 @ 9 H ?", options: [" 6 @ 0 M 5 > & ", " 6 @ 0 M 5 > & ", " 6 @ 0 M 5 > & ", " 6 @ 0 M 5 > & "], answer: "A" } ]); addQuestions('2 K  K  M $ ? / >   5  . A 9 > 5 0 K   G  0 M % ', [ { question: "2 K  K  M $ ?  ? 8 G  9 $ G 9 H  ?", options: ["2 K  * M 0  2 ? $  % ( ", "5 M /  M $ ?  $  % ( ", "2 G   @ /  % ( ", "6 > 8 M $ M 0 @ /  % ( "], answer: "A" }, { question: "'    >   ' > ( > . ( H ( 8 A  '  >  0 M %  M / > 9 H ?", options: [" A # 9 @ ( ", " A # @ ", "  ' > ", ", A & M ' ? . > ( "], answer: "A" }, { question: "'9 > %  >  * ( > ' . A 9 > 5 0 G  >  0 M %  M / > 9 H ?", options: ["! 0 ( > ", " A 6 9 K ( > ", " A 8 M 8 > 9 K ( > ", "& A  @ 9 K ( > "], answer: "A" } ]); addQuestions('8  ' ? ', [ { question: "8  ' ?  ? $ ( G * M 0  > 0  @ 9 K $ @ 9 H ?", options: ["$ @ ( ", "& K ", " > 0 ", "* >   "], answer: "A" }, { question: "8 M 5 0 8  ' ?  > & > 9 0 #  M / > 9 H ?", options: ["0 5 @ ( M & M 0 ", "$ $ M * A 0 A 7 ", "& ?  M   ", "8 $ M 8   "], answer: "A" }, { question: "5 M /   ( 8  ' ?  > & > 9 0 #  M / > 9 H ?", options: ["8 $ M 8   ", "0 5 @ ( M & M 0 ", "$ $ M * A 0 A 7 ", "& ?  M   "], answer: "A" } ]); addQuestions('5 >  M / ', [ { question: "5 >  M /  ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: ["$ @ ( ", "& K ", " > 0 ", "* >   "], answer: "A" }, { question: " 0 M $ C 5 >  M /  > & > 9 0 #  M / > 9 H ?", options: ["0 > .  > $ > 9 H ", "0 > . 8 G  > / >  > $ > 9 H ", "0 > .  > / > ", "0 > .  > ( > "], answer: "A" }, { question: " 0 M . 5 >  M /  > & > 9 0 #  M / > 9 H ?", options: ["0 > . 8 G  > / >  > $ > 9 H ", "0 > .  > $ > 9 H ", "0 > .  > / > ", "0 > .  > ( > "], answer: "A" } ]); addQuestions('6 , M & 0 B * ', [ { question: "6 , M & 0 B *  ? 8 G  9 $ G 9 H  ?", options: ["6 , M &  G 0 B * >  $ 0 ", "6 , M &  >  0 M % ", "6 , M &  > 2 ?   ", "6 , M &  > 5  ( "], answer: "A" }, { question: "'0 > . ' 6 , M &  > 0 B *  M / > 9 H ?", options: ["0 > . , 0 > . L , 0 > . >  ", "0 > . , 0 > . , 0 > . ", "0 > . , 0 > .  , 0 > . G # ", "0 > . , 0 > . > / , 0 > . > $ M "], answer: "A" }, { question: "'+ 2 ' 6 , M &  > 0 B *  M / > 9 H ?", options: ["+ 2 . M , + 2 G , + 2 > ( ? ", "+ 2 , + 2 L , + 2 >  ", "+ 2 , + 2  , + 2 G # ", "+ 2 , + 2 > / , + 2 > $ M "], answer: "A" } ]); addQuestions('8 . > 8 ', [ { question: "8 . > 8  ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: [" 9 ", " > 0 ", "* >   ", "8 > $ "], answer: "A" }, { question: "$ $ M * A 0 A 7 8 . > 8  > & > 9 0 #  M / > 9 H ?", options: ["0 >  * A $ M 0 ", "$ M 0 ? - A 5 ( ", "( @ 2  . 2 ", "5 ? & M / > 2 / "], answer: "A" }, { question: "& M 5  & M 5 8 . > 8  > & > 9 0 #  M / > 9 H ?", options: ["0 > . -2  M 7 M . # ", "0 >  * A $ M 0 ", "$ M 0 ? - A 5 ( ", "( @ 2  . 2 "], answer: "A" } ]); addQuestions(' 2   > 0 ', [ { question: " 2   > 0  ? $ ( G * M 0  > 0  G 9 K $ G 9 H  ?", options: ["& K ", "$ @ ( ", " > 0 ", "* >   "], answer: "A" }, { question: " * . >  2   > 0  > & > 9 0 #  M / > 9 H ?", options: ["  & M 0 8 > . A  ", "  & M 0 . A  ", ". A    & M 0 ", "  & M 0  @  ? 0 # "], answer: "A" }, { question: "0 B *   2   > 0  > & > 9 0 #  M / > 9 H ?", options: ["  & M 0 . A  ", "  & M 0 8 > . A  ", ". A    & M 0 ", "  & M 0  @  ? 0 # "], answer: "A" } ]); addQuestions(' 5 ? / K   5  2 G   K   @ 0  ( >   ', [ { question: "$ A 2 8 @ & > 8  @ 0  ( >  L ( 8 @ 9 H ?", options: ["0 > .  0 ? $ . > ( 8 ", "8 B 0 8 >  0 ", "* & M . > 5 $ ", ". ' A 6 > 2 > "], answer: "A" }, { question: "8 B 0 & > 8  @ 0  ( >  L ( 8 @ 9 H ?", options: ["8 B 0 8 >  0 ", "0 > .  0 ? $ . > ( 8 ", "* & M . > 5 $ ", ". ' A 6 > 2 > "], answer: "A" }, { question: "* M 0 G .   &  @ 0  ( >  L ( 8 @ 9 H ?", options: [" K & > ( ", ". ' A 6 > 2 > ", "* & M . > 5 $ ", "8 B 0 8 >  0 "], answer: "A" } ]); // ----- PEDAGOGY TOPICS (32-42) ----- addQuestions(' ' ?  .  5   0 M  ( ', [ { question: " ' ?  .  0  0 M  ( . G   M / >   $ 0 9 H ?", options: [" ' ?  . 8  G $ ,  0 M  (   G $ ", " ' ?  .   G $ ,  0 M  ( 8  G $ ", "& K ( K  8 . > ( ", "& K ( K   2  ( 9 @  "], answer: "A" }, { question: "- > 7 >  0 M  (  > * M 0 >  C $ ?  $ 0 @  >  M / > 9 H ?", options: ["* 0 ? 5 G 6 ", "* > M / * A 8 M $  ", "5 M / >  0 # ", " - M / > 8 "], answer: "A" }, { question: " ' ?  . . G   ? 8  > . 9 $ M 5 9 H ?", options: [" ( A  0 # ", " ( A - 5 ", " ( A 6 > 8 ( ", " ( A . > ( "], answer: "A" } ]); addQuestions('- > 7 > 6 ?  M 7 #  G 8 ? & M ' >  $ ', [ { question: "- > 7 > 6 ?  M 7 #  > . A  M / 8 ? & M ' >  $  M / > 9 H ?", options: ["8  * M 0 G 7 # ", "5 M / >  0 # ", " - M / > 8 ", "0  ( > "], answer: "A" }, { question: ", > 2  G ( M & M 0 ? $ 6 ?  M 7 # . G   ? 8 * 0  K 0 & ? / >  > $ > 9 H ?", options: [", > 2   @ 0 A  ? ", "6 ?  M 7   @ 0 A  ? ", "* > M /  M 0 . ", "* 0 @  M 7 > "], answer: "A" }, { question: "- > 7 > 6 ?  M 7 # . G   ? 8 5 ? ' ?  K . 9 $ M 5 & ? / >  > $ > 9 H ?", options: ["* M 0 $ M /  M 7 5 ? ' ? ", " ( A 5 > & 5 ? ' ? ", "5 M / >  0 # 5 ? ' ? ", "* ( 5 ? ' ? "], answer: "A" } ]); addQuestions('- > 7 > &  M 7 $ >  > 5 ?  > 8 ', [ { question: "- > 7 > &  M 7 $ >  G  ? $ ( G  L 6 2 9 H  ?", options: [" > 0 ", "$ @ ( ", "& K ", "* >   "], answer: "A" }, { question: "6 M 0 5 #  L 6 2  > 5 ?  > 8  ? 8 8 G 9 K $ > 9 H ?", options: ["8 A ( ( G 8 G ", ", K 2 ( G 8 G ", "* " < ( G 8 G ", "2 ?  ( G 8 G "], answer: "A" }, { question: "2 G  (  L 6 2  > 5 ?  > 8  ? 8 8 G 9 K $ > 9 H ?", options: ["2 ?  ( G 8 G ", "* " < ( G 8 G ", "8 A ( ( G 8 G ", ", K 2 ( G 8 G "], answer: "A" } ]); addQuestions('- > 7 >  ' ?  . . G  5 M / >  0 #  @ - B . ?  > ', [ { question: "5 M / >  0 #  > . A  M /  > 0 M /  M / > 9 H ?", options: ["( ? / . K   >  M  > ( ", " - M / > 8 ", "* ( ", "2 G  ( "], answer: "A" }, { question: "5 M / >  0 # 6 ?  M 7 #  > & M & G 6 M /  M / > 9 H ?", options: ["6 A & M ' - > 7 > ", "* M 0 5 > 9 ", "6 , M & > 5 2 @ ", "  M  > 0 # "], answer: "A" }, { question: "5 M / >  0 #  ? 8 * M 0  > 0  >  M  > ( 9 H ?", options: ["( ? / . > $ M .  ", " ( A - 5 > $ M .  ", " ( A  0 # > $ M .  ", "8 M . 0 # > $ M .  "], answer: "A" } ]); addQuestions('- > 7 >   L 6 2 K   > 5 ?  > 8 ', [ { question: "- > 7 >   L 6 2  ? $ ( G 9 H  ?", options: [" > 0 ", "$ @ ( ", "& K ", "* >   "], answer: "A" }, { question: "8 , 8 G * 9 2 G  ? 8  L 6 2  > 5 ?  > 8 9 K $ > 9 H ?", options: ["6 M 0 5 # ", "5 >  ( ", "* ( ", "2 G  ( "], answer: "A" }, { question: "  $ ? .  L 6 2  L ( 8 > 9 H ?", options: ["2 G  ( ", "6 M 0 5 # ", "5 >  ( ", "* ( "], answer: "A" } ]); addQuestions('6 ?  M 7 # 8 9 > /  - 8 > .  M 0 @ ', [ { question: "6 ?  M 7 # 8 9 > /  8 > .  M 0 @  > & M & G 6 M /  M / > 9 H ?", options: ["6 ?  M 7 #  K * M 0 - > 5 @ , ( > ( > ", "0  ( > ", "* 0 @  M 7 > ", " - M / > 8 "], answer: "A" }, { question: "& C 6 M / 8 9 > /  8 > .  M 0 @  > & > 9 0 #  M / > 9 H ?", options: [" ? $ M 0 ", "* A 8 M $  ", " G * ", "0 G ! ? / K "], answer: "A" }, { question: "6 M 0 5 M / 8 9 > /  8 > .  M 0 @  > & > 9 0 #  M / > 9 H ?", options: ["0 G ! ? / K ", " ? $ M 0 ", ". I ! 2 ", ". > (  ? $ M 0 "], answer: "A" } ]); addQuestions('- > 7 > 6 ?  M 7 # . G  . B 2 M / >   ( ', [ { question: ". B 2 M / >   (  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["6 ?  M 7 > 0 M % @  @ * M 0  $ ? ", "6 ?  M 7   @ * M 0  $ ? ", "* > M /  M 0 . ", "5 ? & M / > 2 / "], answer: "A" }, { question: "0  ( > $ M .  . B 2 M / >   (  ,  ? / >  > $ > 9 H ?", options: ["6 ?  M 7 #  G & L 0 > ( ", "6 ?  M 7 #  G   $ ", "6 ?  M 7 #  G 6 A 0 B ", "* 0 @  M 7 >  G , > & "], answer: "A" }, { question: "/ K  > $ M .  . B 2 M / >   (  > & M & G 6 M /  M / > 9 H ?", options: [" M 0 G ! & G ( > ", "8 A ' > 0 ", "( ? & > ( ", "/ K  ( > "], answer: "A" } ]); addQuestions(',  M  K  . G  * " < ( G - 2 ?  ( G 8 . M , ( M ' @ 5 ?  > 0 ', [ { question: "! ? 8 M 2 G  M 8 ? / >  M / > 9 H ?", options: ["* " < ( G . G   ? ( >  ", "2 ?  ( G . G   ? ( >  ", ", K 2 ( G . G   ? ( >  ", "8 A ( ( G . G   ? ( >  "], answer: "A" }, { question: "! ? 8 M  M 0 > + ? / >  M / > 9 H ?", options: ["2 ?  ( G . G   ? ( >  ", "* " < ( G . G   ? ( >  ", ", K 2 ( G . G   ? ( >  ", "8 A ( ( G . G   ? ( >  "], answer: "A" }, { question: " ( 5 ?  > 0 K   >  > 0 #  M / > 9 K 8  $ > 9 H ?", options: [". 8 M $ ? 7 M  @ / ", "6 > 0 @ 0 ?  ", ". > ( 8 ?  ", "8 > . >  ?  "], answer: "A" } ]); addQuestions(' *  > 0 > $ M .  6 ?  M 7 # ', [ { question: " *  > 0 > $ M .  6 ?  M 7 #  > & M & G 6 M /  M / > 9 H ?", options: [" ? ( >  / K   K & B 0  0 ( > ", " - M / > 8  0 ( > ", "* 0 @  M 7 > 2 G ( > ", " M 0 G ! & G ( > "], answer: "A" }, { question: " *  > 0 > $ M .  6 ?  M 7 #  , & ? / >  > $ > 9 H ?", options: [" ? ( >  / K  * 0 ", "9 . G 6 > ", " - @ ( 9 @  ", "5 0 M 7  G   $ "], answer: "A" }, { question: " *  > 0 > $ M .  6 ?  M 7 # . G   ? 8 * 0 ' M / > ( & ? / >  > $ > 9 H ?", options: ["5 M /  M $ ?  $  5 6 M /  $ > ", "8 > . B 9 ?   5 6 M /  $ > ", "* > M /  M 0 . ", "* 0 @  M 7 > "], answer: "A" } ]); addQuestions('- > 7 > 6 ?  M 7 # . G  , 9 A - > 7 ?  $ > ', [ { question: ", 9 A - > 7 ?  $ >  >  0 M %  M / > 9 H ?", options: ["  - > 7 >    >  M  > ( ", "  - > 7 >  >  M  > ( ", "& K - > 7 >    >  M  > ( ", " K  - > 7 > ( 9 @  "], answer: "A" }, { question: ", 9 A - > 7 ?  $ >  > 2 > -  M / > 9 H ?", options: ["8   M  > ( > $ M .  5 ?  > 8 ", "8 @ . ? $ 5 ?  > 8 ", " 5 0 K ' ", "- M 0 . "], answer: "A" }, { question: ", 9 A - > 7 ?  5 0 M  . G  6 ?  M 7 #  H 8 > 9 K ( >  > 9 ?  ?", options: ["8 . > 5 G 6 @ ", " 2  ", " K 0 ", "8 0 2 "], answer: "A" } ]); addQuestions(' > 5 M / 6 ?  M 7 # ', [ { question: " > 5 M / 6 ?  M 7 #  > . A  M / & M & G 6 M /  M / > 9 H ?", options: ["0 8 > ( A - B $ ? ", "5 M / >  0 # ", "6 , M & > 5 2 @ ", " - M / > 8 "], answer: "A" }, { question: " > 5 M / 6 ?  M 7 # . G   ? 8  > . 9 $ M 5 9 H ?", options: ["- > 5 * B 0 M # * ( ", "0  ( > ", "5 ? 6 M 2 G 7 # ", " ( A 5 > & "], answer: "A" }, { question: " > 5 M / 6 ?  M 7 #  @  L ( 8 @ 5 ? ' ? * M 0 - > 5 @ 9 H ?", options: ["* M 0 - > 5 > $ M .  ", "5 M / >  0 # ?  ", " ( A 5 > & > $ M .  ", "5 ? 6 M 2 G 7 # > $ M .  "], answer: "A" } ]); // ----- TOPIC KEYS (42 topics) - Updated as per user request ----- const topicKeys = [ // Hindi Language (31 topics) " * ? $  & M / >  6 ", " * ? $ * & M / >  6 ", "9 ? ( M & @ 5 0 M # . > 2 > (8 M 5 0 , 5 M /   ( )", "5 0 M # K   G . G 2 8 G . > $ M 0 ?  $ % >  . > $ M 0 ?  6 , M & K   @ * 9  > ( ", "5 >  M / 0  ( > ", "9 ? ( M & @  @ 8 - @ ' M 5 ( ? / K   G * > 0 8 M * 0 ?    $ 0  @  > (  > 0 @ ", "' M 5 ( ? / >  , 5 0 M # ,  ( A 8 M 5 > 0 ,  ( A ( > 8 ?   5   ( M & M 0 , ? ( M & A . G   ( M $ 0 ", "5 ? 0 > .  ? ( M 9 K   > * M 0 / K  ( 2 M * 5 ? 0 > . ,  0 M ' 5 ? 0 > . , * B 0 M # 5 ? 0 > . , * M 0 6 M ( 5 >   , 5 ? 8 M . / , K '  )", "8 . > ( ' M 5 ( ? / K  5 > 2 G 6 , M & ", "5 ? 2 K . 6 , M & ", "* 0 M / > / 5 >  @ 6 , M & ", "5 >  M / >  6 K   G 2 ?    6 , M & ", "8   M  >  5  8  G - G & ", "8 0 M 5 ( > .  5  8  G - G & ", " M 0 ? / >  5  8  G - G & ", "5 ? 6 G 7 #  5  8  G - G & ", "5  ( ", "2 ?   ", " > 2 ", " > 0  ", "* M 0 $ M / / ", " * 8 0 M  ", "$ $ M 8 .  5  $ & M - 5 ", "5 0 M $ ( @ ", "2 K  K  M $ ? / >   5  . A 9 > 5 0 K   G  0 M % ", "8  ' ? ", "5 >  M / ", "6 , M & 0 B * ", "8 . > 8 ", " 2   > 0 ", " 5 ? / K   5  2 G   K   @ 0  ( >   ", // Pedagogy (11 topics) " ' ?  .  5   0 M  ( ", "- > 7 > 6 ?  M 7 #  G 8 ? & M ' >  $ ", "- > 7 > &  M 7 $ >  > 5 ?  > 8 ", "- > 7 >  ' ?  . . G  5 M / >  0 #  @ - B . ?  > ", "- > 7 >   L 6 2 K   > 5 ?  > 8 ", "6 ?  M 7 # 8 9 > /  - 8 > .  M 0 @ ", "- > 7 > 6 ?  M 7 # . G  . B 2 M / >   ( ", ",  M  K  . G  * " < ( G - 2 ?  ( G 8 . M , ( M ' @ 5 ?  > 0 ", " *  > 0 > $ M .  6 ?  M 7 # ", "- > 7 > 6 ?  M 7 # . G  , 9 A - > 7 ?  $ > ", " > 5 M / 6 ?  M 7 # " ]; // UI text (all in Hindi) const uiText = { hi: { mainTitle: "CTET Paper 2", mainSubtitle: "9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0 (Hindi Language and Pedagogy)  8 >  ( . G    ( 0 G  0 ", startTitle: "9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0  8 >  ( . G    ( 0 G  0 ", startBtn: " 8 >  ( . G   , ( >   ", subjectTitle: "5 ? 7 /  >  / (  0 G  ", selectSubject: "9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0 (Hindi Language & Pedagogy)", chapterTitle: " ' M / > / / 5 ? 7 /  A ( G  ", backStart: "* M 0 > 0  - * 0 5 > * 8  >   ", generateAssign: " 8 >  ( . G   , ( >   ", levelTitle: " ? ( >  8 M $ 0  A ( G  ", levelDesc: " * ( G  8 >  ( . G    G 2 ?  8 M $ 0  >  / (  0 G  :", level1: "8 M $ 0 1", level1Sub: ", G 8 ?  8 M $ 0 ", level2: "8 M $ 0 2", level2Sub: ". ' M / . 8 M $ 0 ", level3: "8 M $ 0 3", level3Sub: "* 0 @  M 7 > 8 M $ 0 ", backChapters: "5 ? 7 / K  * 0 5 > * 8  >   ", generateFinal: " 8 >  ( . G    ( 0 G   0 G  ", fullPaper: "* B 0 M # * > M /  M 0 . (8 - @ 42 5 ? 7 / )", noChapterAlert: " C * / >  . 8 G  .    ' M / > / /5 ? 7 /  A ( G  !", noLevelAlert: " C * / >  ? ( >  8 M $ 0  A ( G  !", fullPaperLabel: "* B 0 M # * > M /  M 0 . (8 - @ 42 5 ? 7 / )", instructions: "( ? 0 M & G 6 :", inst1: " 8  8 >  ( . G   . G  45 , 9 A 5 ?  2 M * @ / * M 0 6 M ( (MCQs) 9 H  d ", inst2: "* M 0 $ M / G  * M 0 6 M (  G  > 0 5 ?  2 M * 9 H  ,  G 5 2   8 9 @ 9 H d ", inst3: "  ? $ 5 ?  2 M *  >  / (  0 G  d ", inst4: "8 . / : 60 . ? (  ", mcqHeading: ", 9 A 5 ?  2 M * @ / * M 0 6 M ( (MCQs)", answerKey: " $ M $ 0  A   @ (Answer Key)", qNo: "* M 0 6 M ( 8  .", ans: " $ M $ 0 ", print: "* M 0 ?    0 G  ", download: "PDF ! > ( 2 K !  0 G  ", newAssign: "( / >  8 >  ( . G   ", subjectLabel: "9 ?  & @ - > 7 >  5  6 ?  M 7 > 6 > 8 M $ M 0 ", noQuestions: "* M 0 6 M ( * 2 , M ' ( 9 @  9 H  d  C * / >  ( M /  ' M / > /  A ( G  d " } }; // DOM refs let selectedChapters = []; let selectedLevel = null; const startContainer = document.getElementById('startContainer'); const startScreen = document.getElementById('startScreen'); const subjectSelection = document.getElementById('subjectSelection'); const chapterSelection = document.getElementById('chapterSelection'); const levelSelection = document.getElementById('levelSelection'); const generatedPaperContainer = document.getElementById('generatedPaperContainer'); function populateChapters() { const container = document.getElementById('chapterCheckboxContainer'); const t = uiText.hi; const fullPaperLabel = "* B 0 M # * > M /  M 0 . (8 - @ 42 5 ? 7 / )"; container.innerHTML = `<div class="checkbox-item"><input type="checkbox" id="fullPaper" value="full"><label for="fullPaper">${fullPaperLabel}</label></div>`; topicKeys.forEach((key, idx) => { container.innerHTML += `<div class="checkbox-item"><input type="checkbox" id="topic_${idx}" name="chapter" value="${key}"><label for="topic_${idx}">${idx+1}. ${key}</label></div>`; }); const fullPaperCheckbox = document.getElementById('fullPaper'); if(fullPaperCheckbox) { fullPaperCheckbox.addEventListener('change', function() { const allChapterCheckboxes = document.querySelectorAll('input[name="chapter"]'); allChapterCheckboxes.forEach(cb => cb.disabled = this.checked); }); } } function getRandomQuestions(chapters, level, count) { let allQuestions = []; chapters.forEach(ch => { if(questionBank[ch] && questionBank[ch][`level${level}`]) { allQuestions = allQuestions.concat(questionBank[ch][`level${level}`]); } }); if(allQuestions.length === 0) { return [{ question: "* M 0 6 M ( * 2 , M ' ( 9 @  9 H  d  C * / >  ( M /  ' M / > /  A ( G  d ", options: ["A", "B", "C", "D"], answer: "A" }]; } allQuestions = allQuestions.sort(() => Math.random() - 0.5); return allQuestions.slice(0, Math.min(count, allQuestions.length)); } function generatePaper(chapters, level) { const t = uiText.hi; const mcqs = getRandomQuestions(chapters, level, 45); let questionNumber = 1; let chapterDisplay = ''; if (chapters.length === topicKeys.length) { chapterDisplay = t.fullPaperLabel; } else { const displayNames = chapters.slice(0,3).map(k => k); chapterDisplay = displayNames.join(", ") + (chapters.length > 3 ? "..." : ""); } let paperContent = ` <div class="header"> <h2>CTET Paper 2 - ${t.subjectLabel}</h2> <h3>${chapterDisplay}</h3> <p>${level === 1 ? t.level1 : level === 2 ? t.level2 : t.level3} - ${level === 1 ? t.level1Sub : level === 2 ? t.level2Sub : t.level3Sub}</p> </div> <div class="content-area"> <div class="instructions"> <p><strong>${t.instructions}</strong></p> <ol> <li>${t.inst1}</li> <li>${t.inst2}</li> <li>${t.inst3}</li> <li>${t.inst4}</li> </ol> </div> <div class="question-section"> <div class="section-heading">${t.mcqHeading}</div>`; mcqs.forEach(mcq => { paperContent += ` <div class="question"> <div class="question-text">${questionNumber}. ${mcq.question}</div> <div class="option">A. ${mcq.options[0]}</div> <div class="option">B. ${mcq.options[1]}</div> <div class="option">C. ${mcq.options[2]}</div> <div class="option">D. ${mcq.options[3]}</div> </div>`; questionNumber++; }); paperContent += ` </div> <div class="answer-sheet"> <h3 class="section-title">${t.answerKey}</h3> <table class="answer-table"> <thead> <tr> <th>${t.qNo}</th><th>${t.ans}</th> <th>${t.qNo}</th><th>${t.ans}</th> <th>${t.qNo}</th><th>${t.ans}</th> </tr> </thead> <tbody>`; for(let i=0; i<mcqs.length; i+=3) { paperContent += `<tr>`; for(let j=0; j<3; j++) { if(i+j < mcqs.length) { paperContent += `<td>${i+j+1}</td><td>${mcqs[i+j].answer}</td>`; } else { paperContent += `<td></td><td></td>`; } } paperContent += `</tr>`; } paperContent += ` </tbody> </table> </div> <div class="action-buttons"> <button class="btn btn-primary" id="printBtn"><i class="fas fa-print"></i> ${t.print}</button> <button class="btn btn-success" id="downloadBtn"><i class="fas fa-download"></i> ${t.download}</button> <button class="btn btn-danger" id="newAssignmentBtn"><i class="fas fa-plus"></i> ${t.newAssign}</button> </div> </div>`; generatedPaperContainer.innerHTML = paperContent; generatedPaperContainer.classList.remove('hidden'); startContainer.classList.add('hidden'); document.getElementById('printBtn').addEventListener('click', function() { window.print(); }); document.getElementById('downloadBtn').addEventListener('click', downloadPDF); document.getElementById('newAssignmentBtn').addEventListener('click', function() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); startScreen.classList.remove('hidden'); subjectSelection.classList.add('hidden'); chapterSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); selectedLevel = null; level1Btn.classList.remove('selected'); level2Btn.classList.remove('selected'); level3Btn.classList.remove('selected'); }); } // Event Listeners document.getElementById('startGeneratingBtn').addEventListener('click', function() { startScreen.classList.add('hidden'); subjectSelection.classList.remove('hidden'); }); document.getElementById('selectPedagogyBtn').addEventListener('click', function() { subjectSelection.classList.add('hidden'); populateChapters(); chapterSelection.classList.remove('hidden'); }); document.getElementById('backToStartBtn').addEventListener('click', function() { generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); chapterSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); startScreen.classList.remove('hidden'); subjectSelection.classList.add('hidden'); }); document.getElementById('generateAssignmentBtn').addEventListener('click', function() { const fullPaper = document.getElementById('fullPaper'); if(fullPaper && fullPaper.checked) { selectedChapters = [...topicKeys]; } else { selectedChapters = Array.from(document.querySelectorAll('input[name="chapter"]:checked')).map(cb => cb.value); } if(selectedChapters.length === 0) { alert(uiText.hi.noChapterAlert); return; } chapterSelection.classList.add('hidden'); levelSelection.classList.remove('hidden'); }); document.getElementById('backToChaptersBtn').addEventListener('click', function() { levelSelection.classList.add('hidden'); chapterSelection.classList.remove('hidden'); }); function selectLevel(level) { level1Btn.classList.remove('selected'); level2Btn.classList.remove('selected'); level3Btn.classList.remove('selected'); document.getElementById(`level${level}Btn`).classList.add('selected'); selectedLevel = level; } document.getElementById('level1Btn').addEventListener('click', function() { selectLevel(1); }); document.getElementById('level2Btn').addEventListener('click', function() { selectLevel(2); }); document.getElementById('level3Btn').addEventListener('click', function() { selectLevel(3); }); document.getElementById('generateFinalBtn').addEventListener('click', function() { if(!selectedLevel) { alert(uiText.hi.noLevelAlert); return; } startContainer.classList.add('hidden'); levelSelection.classList.add('hidden'); generatePaper(selectedChapters, selectedLevel); }); // PDF Download async function downloadPDF() { const element = document.getElementById('generatedPaperContainer'); const tempDiv = document.createElement('div'); tempDiv.style.position = 'absolute'; tempDiv.style.left = '-9999px'; tempDiv.style.width = '794px'; tempDiv.style.backgroundColor = 'white'; tempDiv.style.padding = '20px'; tempDiv.innerHTML = element.innerHTML; document.body.appendChild(tempDiv); try { const pdf = new jsPDF('p', 'mm', 'a4'); const pageWidth = pdf.internal.pageSize.getWidth() - 25.4; const pageHeight = pdf.internal.pageSize.getHeight() - 25.4; let position = 12.7; let remainingHeight = tempDiv.scrollHeight; let pageNum = 1; while(remainingHeight > 0) { const canvas = await html2canvas(tempDiv, { scale: 2, windowHeight: pageHeight * 3.78, windowWidth: pageWidth * 3.78, y: position * 3.78, height: pageHeight * 3.78, useCORS: true, backgroundColor: '#ffffff', logging: false }); const imgData = canvas.toDataURL('image/jpeg', 0.95); if(pageNum > 1) pdf.addPage('a4', 'portrait'); pdf.addImage(imgData, 'JPEG', 12.7, 12.7, pageWidth, (canvas.height * pageWidth) / canvas.width); position += pageHeight; remainingHeight -= pageHeight * 3.78; pageNum++; } pdf.save('CTET_Paper2_Hindi_Assignment.pdf'); } catch(err) { console.error(err); alert('PDF generation error. Please try again.'); } finally { if(tempDiv && tempDiv.parentNode) document.body.removeChild(tempDiv); } } // Home icon: reset to start document.getElementById('homeIconBtn').addEventListener('click', function(e) { e.preventDefault(); generatedPaperContainer.classList.add('hidden'); startContainer.classList.remove('hidden'); startScreen.classList.remove('hidden'); subjectSelection.classList.add('hidden'); chapterSelection.classList.add('hidden'); levelSelection.classList.add('hidden'); selectedLevel = null; level1Btn.classList.remove('selected'); level2Btn.classList.remove('selected'); level3Btn.classList.remove('selected'); }); </script> </body> </html>