PageSourceSearch

https://www.conantlibrary.org/pages/index/227409/hours-holidays

html conantlibrary.org collected 2026-10-07 22:15:13 UTC 35,106 bytes, 446 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="en">
5<head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>
6	Hours, Holidays | Conant Public Library
7</title><link rel="stylesheet" href="/assets/css/all.min.css" crossorigin="anonymous" /><link rel="stylesheet" href="/assets/css/site.min.css" />
8      
8<script type="text/javascript" src="/assets/js/site.minac48.js"></script>
8
9      <link rel="stylesheet" href="/conantnh/site.css" />
10	  <!-- Google tag (gtag.js) -->
vendor: 66 bytes, lines 10-11
10
11	<script async src="https://www.googletagmanager.com/gtag/js?id=
11G-FVVK5VDG3C
vendor: 14 bytes, lines 11-12
11"></script>
12	
12<script>
13	  
vendor: 141 bytes, lines 13-17
13window.dataLayer = window.dataLayer || [];
14	  function gtag(){dataLayer.push(arguments);}
15	  gtag('js', new Date());
16
17	  gtag('config', '
17G-FVVK5VDG3C
vendor: 6 bytes, lines 17-18
17');
18	
18</script>
18
19
20      
20<script type="text/javascript">
21          function dosearch() {
22              debugger;
23              var search = $("#search").val();
24              var searchchoice = $('input[name=searchchoice]').val();
25              var submitto = searchchoice + escape(search);
26              window.location.href = submitto;
27              return false;
28          }
29      </script>
29
30
31    
31<script type="text/javascript">
32        function dosearch2() {
33            var sf = document.searchform2;
34            var submitto2 = sf.searchchoice2.value + escape(sf.search2.value);
35            window.location.href = submitto2;
36            return false;
37        }
38    </script>
38
39      <link rel="shortcut icon" href="/conantnh/favicon.ico" />
40    <style>.navbartoptwo p {
41    margin-bottom: 0;
42}
43
44.navbartoptwo {
45    padding:  0;
46}</style>
47     
48</head>
49
50<body class="container-fluid">
51    <form method="post" action="./hours-holidays" id="searchform">
52<div class="aspNetHidden">
53<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="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" />
54</div>
55
56<div class="aspNetHidden">
57
58	<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="4F000767" />
59</div>
60    
61    <div id="js-event-view-modal" class="modal" role="dialog" style="z-index:99999"></div>
62      <header role="banner">
63         
64         <a href="#maincontentjump" style="text-decoration:underline;color:#ffffff; display:none;">Skip to Content</a>         
65         <div class="navbartoptwo">
66            <div class="container">
67               <div class="row justify-content-between align-items-center"><div class="col"><p><br></p></div><div class="col"><p style="text-align: right;"><a href="https://www.facebook.com/Conant-Public-Library-521650288292126" name="Link to Library's Facebook account" target="_blank"><img src="/resources/images/gplfacebook (2).jpg"></a></p></div></div>
68            </div>
69         </div>
70          <!-- new section 1 -->
71         <div class="jumbotron jumbotron-fluid mb-0">
72             <div class="container">
73                <!--first row-->
74                <div class="row">
75                    <!--each of the divs in this first row are set to be hidden for extra small and small, visible from medium on up-->
76                    <div class="col-12 col-md-2 centerall">
77                        <a href="/"><img src="/conantnh/conantnewlogosmall2.png" class="logoimage" alt="Conant Public Library"></a>
78                    </div>
79                     <div class="col-12 col-md-8 centerall stackdiv">
80                        <div class="headerlibraryname" style="text-align:center;">Conant Public Library</div>
81                         <div class="headerlibraryaddress" style="text-align:center;">111 Main Street - Winchester, NH - 03470</div>
82                         <div class="headerlibraryaddress" style="text-align:center;">(603) 239-4331</div>
83                         </div>
84                    <div class="col-12 col-md-2 centerall">
85                      <a href="https://conant.biblionix.com/" target="_blank"><img src="/ConantNH/librarycatalogbutton.png"></a>
86                    </div>
87
88                </div>
89
90            </div>
91            
92        </div>
93        <div class="librarybackgroundpic">
94            <div class="row">
95                <div class="col-12 col-md-12">
96                    <img src="/conantnh/conantlibpic1.jpg">
97                </div>
98            </div>
99        </div>
100        
101         
102      <nav role="navigation" aria-label="site">
103         <div style="clear:both; padding-top:0px; z-index:1000000"
104            class="menus p7AMM amm-noscript amm-responsive amm-root-menucolorscheme’ amm-rootlinks-menucolorscheme’ amm-subs-menucolorscheme’ amm-sub-borders amm-centered"
105            id="p7AMM_1" data-amm="50,1,1000,5,-10,0,1,0,0,5,1,1,1,0,0" data-amm-label="More...">
106            <div id="p7AMMtb_1" class="amm-toolbar closed"><a title="Hide/Show Menu" href="#">&equiv;</a></div>
107            <ul class="closed" aria-label="Navigation Menu">
108               <li data-amm-priority="0">
109                  <a class="amm-trigger" href="/">Home</a>
110               </li>
111                <li data-amm-priority="1"><a Class="amm-trigger" href="/pages/index/227409/hours-holidays">About the Library</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227409/hours-holidays"> Hours, Holidays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227408/library-staff-and-trustees"> Library Staff and Trustees</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229932/meet-the-staff"> Meet the Staff</a></li></ul></li><li data-amm-priority="2"><a Class="amm-trigger" href="/pages/index/227666/get-a-library-card">How To?</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227666/get-a-library-card"> Get a Library Card</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227667/set-up-libby"> Set Up Libby</a></li></ul></li><li data-amm-priority="3"><a Class="amm-trigger" href="/pages/index/227668/adult-events">Calendar</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227668/adult-events"> Adult Events</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227669/kids-events"> Kids Events</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229929/library-event-photos"> Library Event Photos</a></li></ul></li><li data-amm-priority="4"><a Class="amm-trigger" href="/pages/index/227670/new-at-the-library">Books & More</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227670/new-at-the-library"> New at the Library</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227672/staff-recommendations"> Staff Recommendations</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229930/current-displays-"> Current Displays </a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/228131/past-displays"> Past Displays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229934/current-young-adult-
111displays"> Current Young Adult Displays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229935/past-young-adult-displays"> Past Young Adult Displays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229931/current-childrens-displays"> Current Children's Displays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229933/past-childrens-room-displays"> Past Children's Room Displays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229936/current-museum-displays"> Current Museum Displays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229937/past-museum-displays"> Past Museum Displays</a></li></ul></li><li data-amm-priority="5"><a Class="amm-trigger" href="/pages/index/227673/library-history">History</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227673/library-history"> Library History</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227674/museum-history"> Museum History</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227750/who-was-ezra-conant"> Who was Ezra Conant?</a></li></ul></li><li data-amm-priority="6"><a href="http://conant.biblionix.com/"  target="_blank" rel="noopener noreferrer" >Visit Our Catalog</a><ul><li data-amm-priority="0"><a href="http://conant.biblionix.com/"  target="_blank" rel="noopener noreferrer" >Visit Our Catalog</a></li></ul></li><li data-amm-priority="7"><a Class="amm-trigger" href="/pages/index/228362/board-meeting-minutes">Board of Trustees</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/228362/board-meeting-minutes"> Board Meeting Minutes</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/228363/current-board-of-trustees"> Current Board of Trustees</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/228364/board-documents"> Board Documents</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/228443/board-meeting-schedule"> Board Meeting Schedule</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229401/board-committees"> Board Committees</a></li></ul></li><li data-amm-priority="8"><a Class="amm-trigger" href="/pages/index/229402/library-policies">CPL Policies</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229402/library-policies"> Library Policies</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229710/personnel-policies"> Personnel Policies</a></li></ul></li><li data-amm-priority="9"><a Class="amm-trigger" href="/pages/index/229927/email">Contact Us</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229927/email"> Email</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229928/phone"> Phone</a></li></ul></li><li data-amm-priority="10"><a Class="amm-trigger" href="/pages/index/229938/available-passes">Museum Passes</a><ul><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229938/available-passes"> Available Passes</a></li></ul></li>               
112            </ul>
113         </div>
114      </nav>
115    </header>
116    <main>     
117        
118    <div class="body container mt-3">
119            <a name="maincontentjump"></a>
120            <br />
121
122            
123<div class="row">
124
125        <div id="maincontent_divLeftMenu" class="d-none d-md-block col-lg-3 col-md-3 col-sm-12 mt-4">
126            <nav role="navigation" aria-label="section">
127
128                <div class="p7AMM amm-noscript amm-vertical amm-responsive amm-root-leftmenu amm-rootlinks-leftmenu amm-subs-wine amm-sub-borders amm-centered" id="p7AMM_2" data-amm="360,0,900,5,-10,0,1,0,0,5,1,1,1,0,1">
129                    <div id="p7AMMtb_2" class="amm-toolbar closed"><a title="Hide/Show Menu" href="#">&equiv;</a></div>
130                    <ul class="closed" aria-label="Navigation Menu">
131                        <li data-amm-priority="0"><a class="amm-first" href="/pages/index/227409/hours-holidays"> Hours, Holidays</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/227408/library-staff-and-trustees"> Library Staff and Trustees</a></li><li data-amm-priority="0"><a class="amm-first" href="/pages/index/229932/meet-the-staff"> Meet the Staff</a></li>                            
132                    </ul>
133                </div>
134            </nav>
135        </div>
136    
137    <div class="col-lg-9 col-md-9 col-sm-12 mt-4">
138        <h1>Days and Hours Library is Open</h1><br><p><img src="/resources/images/ConantNewLogoSmall2.png" style="width: 136px; height: 137px; float: left;" class="note-float-left">&nbsp;</p>
139
140<p>Monday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10:00 am to 6:00 pm<br>
141Wednesday&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;10:00 am to 8:00 pm<br>
142Friday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10:00 am to 5:00 pm<br>
143Saturday&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10:00 am to 2:00 pm</p>
144<hr /><h1>Library Is Closed For the Following Holidays</h1><br><p>
145
146<!--StartFragment--><br>New Year's Day<br>Martin Luther King Jr. / Civil Rights Day<br>President's Day<br>Memorial Day<br>Independence Day<br>Labor Day<br>Columbus Day<br>Veteran's Day<br>day after Thanksgiving Day<br>Christmas Day<!--EndFragment-->
147
148<br></p><hr />      
149    </div>
150
151 </div>
152        </div>
153
154    </main>
155
156    <footer role="contentinfo">
157		<div class="footer">
158		   <div class="container">
159			  <div id="footer" style="clear:both;">
160				 <div class="row">
161					    
162					 <div class="col-lg-4 col-md-12 col-sm-12 text-center"><p><strong>Library Hours</strong></p>
163
164<p>Monday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;10:00 am to 6:00 pm<br>
165Wednesday&nbsp;&nbsp; &nbsp;10:00 am to 8:00 pm<br>
166Friday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;10:00 am to 5:00 pm<br>
167Saturday&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; 10:00 am to 2:00 pm</p>
168</div><div class="col-lg-4 col-md-12 col-sm-12 text-center"><p style="text-align: center;"><strong>Conant Public Library</strong><br>
169111 Main Street - Winchester, NH - 03470<br>
170(603) 239-4331</p>
171
172<p style="text-align: center;"><a href="https://goo.gl/maps/kwQxjKkZ68fHAuqB8" style="color:#fff;" target="_blank">Map and Directions</a></p>
173</div><div class="col-lg-4 col-md-12 col-sm-12 text-center"><p style="text-align:center"><a href="https://www.facebook.com/Conant-Public-Library-521650288292126" name="Link to Library's Facebook account" target="_blank"><img src="/resources/images/gplfacebook (2).jpg"></a></p>
174
175<p style="text-align: center;">Copyright Conant Public Library - 2023/2025</p>
176</div>
177				 </div>
178			  </div>
179		   </div>
180		</div>
181	</footer>  
182    
183	 
184    
184<script type="text/javascript">
185	
186	function ensureAccessibility() {
187  // Select all elements with aria-hidden="true"
188  const hiddenElements = document.querySelectorAll('[aria-hidden="true"]');
189
190  hiddenElements.forEach(element => {
191    if (element) {
192      // Remove tabindex if present
193      element.removeAttribute('tabindex');
194
195      // Find and disable focusable elements inside aria-hidden elements
196      const focusableElements = element.querySelectorAll(
197        'a, button, input, textarea, select, [tabindex]'
198      );
199
200      focusableElements.forEach(focusable => {
201        focusable.setAttribute('tabindex', '-1');
202        focusable.setAttribute('aria-hidden', 'true');
203      });
204    }
205  });
206}
207
208function ensureButtonsHaveLabels() {
209  // Select slick-carousel arrow buttons
210  const buttons = document.querySelectorAll('.slick-carousel-arrows');
211
212  buttons.forEach((button, index) => {
213    if (!button.textContent.trim()) {
214      // Add meaningful aria-labels for accessibility
215      button.setAttribute('aria-label', index === 0 ? 'Previous Slide' : 'Next Slide');
216    }
217  });
218}
219
220function ensureImagesHaveAlt() {
221  // Select all img elements
222  const images = document.querySelectorAll('img');
223
224  images.forEach(img => {
225    if (!img.hasAttribute('alt') || !img.getAttribute('alt').trim()) {
226      // Extract the file name from the src attribute (without the path)
227      const src = img.getAttribute('src') || '';
228      const fileName = src.substring(src.lastIndexOf('/') + 1) || 'image';
229
230      // Set the alt attribute to the file name (without the extension)
231      const altText = fileName.split('.').slice(0, -1).join('.') || 'image';
232      img.setAttribute('alt', altText);
233    }
234  });
235}
236
237function addNewTabAccessibility() {
238  document.querySelectorAll('a[target="_blank"]').forEach(link => {
239    // Check if the link is inside .MuiScopedCssBaseline-root.jss1
240    if (link.closest('.MuiScopedCssBaseline-root.jss1')) {
241      // Add aria-label if not already present
242      if (!link.hasAttribute('aria-label')) {
243        const linkText = link.textContent.trim() || 'this link';
244        link.setAttribute('aria-label', `Opens in a new tab: ${linkText}`);
245      }
246    } else {
247      // For other links, add sr-only span if not already present
248      if (!link.querySelector('.sr-only')) {
249        const srText = document.createElement('span');
250        srText.className = 'sr-only';
251        srText.textContent = '(opens in a new tab)';
252        link.appendChild(srText);
253      }
254    }
255  });
256}
257
258function ensureRemoveTabIndexNav(){
259  const navElement = document.querySelector('nav[role="navigation"][aria-label="site"]');
260 if (navElement) {
261   navElement.querySelectorAll('[tabindex]').forEach((element) => {
262     element.removeAttribute('tabindex');
263   });
264 }
265}
266// Run the functions when the DOM is fully loaded
267document.addEventListener('DOMContentLoaded', () => {
268  ensureAccessibility();
269  addNewTabAccessibility();
270  ensureButtonsHaveLabels();
271  ensureImagesHaveAlt();
272  
273  ensureRemoveTabIndexNav();
274});
275
276// Use MutationObserver to apply logic when elements are added/modified
277const observer = new MutationObserver(() => {
278  ensureAccessibility();
279  addNewTabAccessibility();
280  ensureButtonsHaveLabels();
281  ensureImagesHaveAlt();
282  
283  ensureRemoveTabIndexNav();
284});
285
286// Start observing the body for changes (dynamic content updates)
287observer.observe(document.body, { childList: true, subtree: true });
288
289	</script>
289
290    
290<script type="text/javascript">
291      function applyAccessibilityFeatures() {
292      // 1. Custom controls have ARIA roles
293      document.querySelectorAll('button, input[type="button"], input[type="submit"]').forEach(control => {
294         if (!control.hasAttribute('role')) {
295               control.setAttribute('role', 'button'); // Adding role based on tag type if it doesn't exist
296         }
297      });
298
299      // 2. Custom controls have associated labels (for buttons, inputs, etc.)
300      document.querySelectorAll('input, textarea, select').forEach(control => {
301         if (!control.hasAttribute('aria-label')) {
302               const label = control.getAttribute('placeholder') || control.name || 'Interactive element';
303               control.setAttribute('aria-label', label); // Add aria-label only if it's not present
304         }
305      });
306
307      // 3. User focus is not accidentally trapped (for modal-like dialogs)
308      document.addEventListener('keydown', (event) => {
309         if (event.key === 'Tab') {
310               let focusableElements = document.querySelectorAll('a, button, input, textarea, select, [tabindex]:not([tabindex="-1"])');
311               let firstElement = focusableElements[0];
312               let lastElement = focusableElements[focusableElements.length - 1];
313
314               if (event.shiftKey) { // Shift + Tab
315                  if (document.activeElement === firstElement) {
316                     lastElement.focus();
317                     event.preventDefault();
318                  }
319               } else { // Tab
320                  if (document.activeElement === lastElement) {
321                     firstElement.focus();
322                     event.preventDefault();
323                  }
324               }
325         }
326      });
327
328      // 4. Interactive controls are keyboard focusable
329      document.querySelectorAll('a, button, input, textarea, select').forEach(el => {
330         if (!el.hasAttribute('tabindex')) {
331               el.setAttribute('tabindex', '0'); // Make interactive elements focusable only if tabindex is not present
332         }
333      });
334
335      // 5. Interactive elements indicate their purpose and state
336      document.querySelectorAll('button, input[type="checkbox"], input[type="radio"]').forEach(el => {
337         if (!el.hasAttribute('aria-pressed')) {
338               el.setAttribute('aria-pressed', el.checked || el.classList.contains('active') ? 'true' : 'false');
339         }
340      });
341
342      // 6. The page has a logical tab order
343      const focusableElements = document.querySelectorAll('a, button, input, textarea, select');
344      focusableElements.forEach((el, index) => {
345         if (!el.hasAttribute('tabindex')) {
346               el.setAttribute('tabindex', index + 1); // Assign tabindex only if it's not present
347         }
348      });
349
350      // 7. The user's focus is directed to new content added to the page
351      const newContent = document.querySelector('[data-new-content="true"]');
352      if (newContent && !newContent.hasAttribute('aria-live')) {
353         newContent.focus(); // Direct focus to new content
354         newContent.setAttribute('aria-live', 'polite'); // Ensure it's announced only if aria-live isn't already present
355      }
356
357      // 8. Off-screen content is hidden from assistive technology
358      document.querySelectorAll('[hidden], [aria-hidden="true"]').forEach(el => {
359         if (!el.hasAttribute('aria-hidden')) {
360               el.setAttribute('aria-hidden', 'true'); // Hide off-screen content from assistive tech only if aria-hidden isn't already set
361         }
362      });
363
364      // 9. Use landmark elements to improve navigation
365      const navElement = document.querySelector('nav');
366      if (navElement && !navElement.hasAttribute('role')) {
367         navElement.setAttribute('role', 'navigation');
368      }
369
370      const headerElement = document.querySelector('header');
371      if (headerElement && !headerElement.hasAttribute('role')) {
372         headerElement.setAttribute('role', 'banner');
373      }
374
375      const mainElement = document.querySelector('main');
376      if (mainElement && !mainElement.hasAttribute('role')) {
377         mainElement.setAttribute('role', 'main');
378      }
379
380      const footerElement = document.querySelector('footer');
381      if (footerElement && !footerElement.hasAttribute('role')) {
382         footerElement.setAttribute('role', 'contentinfo');
383      }
384
385      // 10. Visual order on the page follows DOM order
386      const parent = document.querySelector('body'); // Assuming body is the main container
387      const elements = Array.from(parent.children).sort((a, b) => {
388         return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
389      });
390      elements.forEach(el => parent.appendChild(el)); // Reorder in DOM if necessary
391   }
392   document.addEventListener('DOMContentLoaded', applyAccessibilityFeatures);
393   
394   document.addEventListener("DOMContentLoaded", () => {
395  // Function to adjust font sizes for <ul> and <li> elements
396  const adjustFontSizeForListElements = () => {
397    const listElements = document.querySelectorAll("ul, li");
398
399    listElements.forEach((element) => {
400      const computedFontSize = window.getComputedStyle(element).fontSize;
401      const fontSizePx = parseFloat(computedFontSize);
402
403      // Adjust only if the font size is smaller than 11px
404      if (fontSizePx > 0 && fontSizePx < 11) {
405        element.style.fontSize = "11px";
406      }
407    });
408  };
409
410  // Function to add role="presentation" to specific <table> elements
411  const addPresentationRole = (table) => {
412    const hasBorderZero = table.getAttribute("border") === "0";
413    const noHeader = !table.querySelector("th");
414    if (hasBorderZero && noHeader) {
415      table.setAttribute("role", "presentation");
416    }
417  };
418
419  // Apply font size adjustments on page load
420  adjustFontSizeForListElements();
421
422  // Apply role="presentation" to existing tables on page load
423  document.querySelectorAll("table").forEach(addPresentationRole);
424
425  // Observer for dynamically added <ul>, <li>, and <table> elements
426  const dynamicContentObserver = new MutationObserver((mutations) => {
427    mutations.forEach((mutation) => {
428      mutation.addedNodes.forEach((node) => {
429        if (node.nodeName === "TABLE") {
430          addPresentationRole(node);
431        } else if (node.nodeName === "UL" || node.nodeName === "LI") {
432          adjustFontSizeForListElements();
433        }
434      });
435    });
436  });
437
438  // Observe for dynamically added content
439  dynamicContentObserver.observe(document.body, { childList: true, subtree: true });
440});
441
442
443    </script>
443
444    </form>    
445</body>
446</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.